{"version":3,"sources":["constants.js","actions/playlistAction.js","components/SignupModal/index.js","components/A/index.js","actions/playerAction.js","styles/svg-components/MVName.js","actions/searchAction.js","actions/subscriptionAction.js","styles/svg-components/Download.js","actions/adminAction.js","actions/authenticationAction.js","scroll-to-top.js","actions/favouriteAction.js","components/RecaptchaBranding/index.js","containers/CustomerPage/LicenseHistory/GenerateAutoClearCodeButton.js","actions/browseAction.js","styles/svg-components/Loader.js","actions/countryAction.js","actions/followingAction.js","actions/trackAction.js","actions/currencyAction.js","styles/svg-components/SpinnerTrackPlay.js","styles/svg-components/Twitter.js","styles/svg-components/PlayCircleSmTransparent.js","styles/svg-components/Pause.js","styles/svg-components/Heart.js","styles/svg-components/Facebook.js","containers/LicensePage/PayPerUse/LicenseLink.js","containers/LicensePage/PayPerUse/LicenseRowChevron.js","containers/LicensePage/PayPerUse/Summary.js","containers/LicensePage/PayPerUse/Type.js","styles/svg-components/AssetPaginationPrevSecondary.js","containers/LicensePage/PayPerUse/Scale.js","containers/LicensePage/PayPerUse/MobileCheckoutButton.js","containers/LicensePage/PayPerUse/Option.js","containers/LicensePage/PayPerUse/Options.js","containers/LicensePage/PayPerUse/Coverage.js","styles/svg-components/Infinite.js","containers/LicensePage/PayPerUse/LicensingMethod.js","styles/svg-components/FileText.js","containers/LicensePage/Subscription/SubscriptionUsageWarning.js","containers/LicensePage/Subscription/SubscriptionUsageReached.js","containers/LicensePage/Subscription/SubscriptionLicenseModal.js","containers/LicensePage/index.js","utils/drip.js","components/Header/ModalLogin.js","components/Header/ModalAccountSupplemental.js","actions/generalAction.js","actions/licenseAction.js","components/Header/Banner/index.module.css","styles/svg-components/SpinnerIcon.js","styles/svg-components/CrossSVG.js","styles/svg-components/Spinner.js","styles/svg-components/LogoSVG.js","utils/helpers.js","styles/svg-components/CrossLight.js","actions/footerPlayerAction.js","styles/svg-components/CartSVG.js","styles/svg-components/SearchSVG.js","styles/svg-components/UsersSVG.js","styles/svg-components/UsersLoggedInSVG.js","components/Header/LogoLink.js","styles/svg-components/SearchIcon.js","components/Header/SearchLink.js","components/Header/SuggestedItem.js","components/Header/SuggestedGroup.js","components/Header/SuggestedBar.js","components/Header/TrendingBar.js","components/CookieNotice/index.js","components/NewVersionPrompt/index.js","components/Header/A.js","components/Header/AdminBar.js","components/Header/ModalSignUp.js","components/Header/ModalDownloadPreview.js","components/Header/ModalLoginSuccess.js","components/Header/ModalPassword.js","components/PlaylistModal/index.js","components/Header/ModalPlaySignUp.js","components/RemoveStyleModal/index.js","components/Header/NotificationCounter.js","styles/svg-components/Notification.js","containers/CustomerPage/LicenseHistory/AutoClearModal.js","containers/CustomerPage/LicenseHistory/SeeMoreModal.js","components/Header/index.js","styles/js/header-search.js","components/Header/jquery/main.js","styles/js/sticky-header.js","styles/js/browse-filter.js","styles/svg-components/Instagram.js","components/Footer/index.js","styles/js/video-edit-slider.js","styles/js/playback-modes.js","styles/js/tooltip.js","components/ProgressBar/Wrapper.js","components/ProgressBar/Percent.js","components/ProgressBar/ProgressBar.js","components/ProgressBar/index.js","containers/NewFooterPlayer/Play.js","styles/svg-components/Prev.js","styles/svg-components/Next.js","containers/NewFooterPlayer/Skip.js","styles/svg-components/Repeat.js","styles/svg-components/Clock.js","styles/svg-components/Shuffle.js","styles/svg-components/AutoProgressPlayback.js","styles/svg-components/PlaybackActiveTrack.js","containers/NewFooterPlayer/Mode.js","containers/NewFooterPlayer/Controls.js","containers/NewFooterPlayer/Track.js","containers/NewFooterPlayer/Duration.js","containers/NewFooterPlayer/NameLink.js","containers/NewFooterPlayer/Profile.js","styles/svg-components/Plus.js","containers/NewFooterPlayer/Add.js","containers/NewFooterPlayer/Favourite.js","containers/NewFooterPlayer/Download.js","containers/NewFooterPlayer/Cart.js","containers/NewFooterPlayer/SubscriptionCart.js","containers/NewFooterPlayer/Volume.js","containers/NewFooterPlayer/index.js","containers/App/index.js","containers/LanguageProvider/selectors.js","containers/LanguageProvider/index.js","containers/App/constants.js","containers/App/reducer.js","reducers/activeTrackReducer.js","reducers/primaryTrackReducer.js","reducers/tracksReducer.js","reducers/tracksWaveReducer.js","reducers/allTracksReducer.js","reducers/trackIdsReducer.js","reducers/allTrackIdsReducer.js","reducers/playbackModeReducer.js","reducers/recentPlayHistoryReducer.js","reducers/firstFifteenStartReducer.js","reducers/cartReducer.js","reducers/currencyReducer.js","reducers/countryReducer.js","reducers/licenseReducer.js","reducers/energiesReducer.js","reducers/vocalsReducer.js","reducers/collectionsReducer.js","reducers/categoriesReducer.js","reducers/moodsReducer.js","reducers/stylesReducer.js","reducers/versionsReducer.js","reducers/versionsWaveReducer.js","reducers/versionIdsReducer.js","reducers/playlistReducer.js","reducers/playingReducer.js","reducers/newTracksReducer.js","reducers/newTrackVersionsReducer.js","reducers/filterReducer.js","reducers/appliedFiltersReducer.js","reducers/modalReducer.js","reducers/signupReducer.js","reducers/headerReducer.js","reducers/favoritesReducer.js","reducers/followingReducer.js","reducers/subscriptionReducer.js","reducers/playerReducer.js","reducers/footerPlayerReducer.js","containers/LanguageProvider/constants.js","containers/LanguageProvider/reducer.js","reducers/artistReducer.js","reducers/authenticationReducer.js","reducers/adminBarReducer.js","reducers.js","store.js","i18n.js","utils/asyncInjectors.js","routes.js","index.js","containers/App/selectors.js","components/ImgPlaceholder/index.js"],"names":["Config","BASE_API_URL","API","CDN_API","BASE_HOST","BASE_URL","COOKIE_DOMAIN","STRIPE_PUBLIC_KEY","RECAPTCHA_V2_KEY","GOOGLE_API_KEY","BYPASS_ORFIUM","PERIOD_ID","MONTHLY","YEARLY","DEPLOY_BRANCH_FE","DEPLOY_BRANCH_BE","END_REVISION","VERSION_CHECK_INTERVAL","DEBUG_SIGNUP","DOWNLOAD_URL","showPlaylistSuccess","track","playlistName","newPlaylist","type","hidePlaylistSuccess","animateInTooltip","animateOutTooltip","bulkAddPlaylist","playlistTracks","playlistTrackVersions","formData","FormData","authToken","sessionStorage","getItem","append","fetch","method","headers","body","then","res","json","SignupModal","props","state","recaptchaV2Token","recaptchaV3Token","recaptchaResponse","submit","bind","captchaOnChange","onKeyPress","value","this","setState","e","key","a","modalIntent","checkRecaptchaV3","recaptchaToken","makeRegisterAttempt","className","signup","error","name","placeholder","autoComplete","style","showRecaptchaV2","marginBottom","sitekey","onChange","id","localStorage","showLoader","onClick","height","React","Component","defaultProps","recaptcha","connect","get","dispatch","styled","Link","setPlaying","playing","addActiveTrackNew","newTrack","addActiveTrack","waveform","getState","activeTrack","activeTrackId","trackId","newTrackId","activeVersionId","versionId","newVersionId","isPlayAction","contextId","addNewEngagement","addPrimaryTrack","addTracksWave","tracks","addVersionsWave","versions","addPlaylist","version","addPlaylistTrack","addModal","downloadPreview","primaryTrack","current_context","drip","undefined","download_preview_mp3","window","location","track_url","downloadPreviewTrackPage","removePlaylist","newTracks","MVName","src","fetchSearchSuggested","query","reverseString","conditionallyGetCdnApi","catch","err","fetchSearchTrend","fetchSearchClickedTracks","energy","vocal","sort","duration","styleFilters","page","JsonStyleFilters","JSON","stringify","response","console","log","receiveTracks","trackIds","result_ids","slice","receiveAllTracksIds","fetchSearchClickedCollections","receiveCollections","fetchUpdateTrend","result","s","toString","split","reverse","join","collections","results_id","loadSubscriptionData","subscriptionData","isLoggedIn","Array","isArray","isActive","setItem","removeItem","isActiveOrSuspended","isSuspended","overduePayment","isPaused","hasExpiredNotice","$","addClass","removeClass","setHasExpiredNotice","fetchSubscriptionPlansAndAddons","apiUrl","fetchSubscriptionInvoice","uuid","fetchSubscriptionPermissions","Promise","resolve","reject","payload","dismissExpirationNotice","setYoutubeChannel","getAuthToken","channel","channelName","Download","loadAdminData","adminData","showRelevancy","toggleRelevancy","loadEditData","editData","clearEditData","genericErrorMsg","loadUserData","userData","reducerData","isCustomer","hasAccountCustomer","isArtist","hasAccountArtist","isAdmin","hasAccountAdmin","isEngaged","is_engaged","firstName","company","isPaymentTabDisplay","isSubscriptionTabDisplay","dripIdentify","email","engagementLabel","token","getCookie","fetchLogout","makeLoginAttempt","redirect","ajaxSetup","credentials","xhrFields","withCredentials","crossDomain","url","serialize","showModalLoader","clearModalErrorMsg","post","status","document","cookie","showModalErrorMsg","message","Math","random","val","redirectLocation","getLoginRedirect","auth_token","currency","symbol_left","setCookie","requestIntent","done","fail","msg","loginError","css","find","text","display","opacity","showLoginError","showLoginStageTwo","prop","show","setTimeout","focus","checkProvidedEmail","preventDefault","formPrefix","target","dataset","suppliedEmail","String","trim","userFirstName","encodeURIComponent","success","hide","prepend","remove","resetLoginModal","removeModal","modal","intent","setLoginStatus","setEnteredProfession","hasEnteredProfession","isEmbedded","showSignupModalLoader","showSignupError","code","dataLayer","push","event","usedEmbeddedSignup","makePasswordAttempt","submitSupplementalUserData","selectedNewsletters","selectedProfession","parseInt","checkedNewsletters","isNaN","ajax","data","profession","newsletter","newsletters","newslettersCount","length","requestId","showSigninSuccess","hideSigninSuccess","showNotificationSuccess","timerNotification","hideNotificationSuccess","action","grecaptcha","ready","execute","t","i","n","Date","setTime","getTime","o","toUTCString","charAt","substring","indexOf","spinner","modalBtn","checkEmail","updateEmail","checkAuthPassword","password","password_check","fetchAccountDetail","fetchCountries","updateCustomerAccount","autoRenew","getYoutubeChannel","channelID","searchYoutubeChannel","searchTerm","fetchOrderSummary","orderID","ScrollToTop","prevProps","pathname","includes","scrollContainer","getElementById","appContainer","scrollTo","scrollTop","children","withRouter","toggleFavouriteTrackVerion","trackVersionId","favouritesData","replace","map","Number","favouriteTrackContainer","hasClass","filter","fav","fetchPlaylist","playlistId","authKey","guid","lastEngagement","newEngagement","endPoint","removeTrack","deleteTrack","track_version","removeTrackStyle","styles","titleEdit","title","btoa","addExistingPlaylistTrack","addNewPlaylistTrack","encodedTitle","loadFavorites","favorites","addToFavorites","ID","contextID","removeFromFavorites","RecaptchaBranding","href","GenerateAutoClearCodeButton","copiedToClipboard","copyToClipboard","select","execCommand","onRemoveLicense","getGeneratedLicenseCode","license","licenseId","isLicenseModal","isSubscriptionLicense","onRemoveModal","autoclear","orfium_code","downloadedTrackInfo","licenseCode","licenseText","track_name","autoClearContent","isGenerateLicenseCodeHasError","licenseHistoryUrl","to","htmlFor","readOnly","width","xmlns","viewBox","fill","fillRule","d","stroke","strokeDasharray","_licenseId","removeLicense","fetchVocals","vocals","fetchEnergies","energies","setNotFiltered","setFiltered","unSetAppliedFilters","setAppliedFilters","locationQuery","Loader","loadCountry","country","loadFollowing","following","followArtist","artistId","unfollowArtist","fetchTrack","fetchPlaylistTracks","receiveTracksIds","fetchFavouriteTracks","setTracks","fetchTracks","limit","Error","results","current_engagement_group","group","moreTracksLoading","fetchAllTracks","excluded","merge","JsonExcluded","fetchSimilarTracks","Object","assign","receiveSimilarTracks","shouldFetchTopTracks","isFetchingMore","start","end","loadCurrency","Spinner","Twitter","AssetAddToPlaylist","Pause","Heart","Facebook","LicenseRowChevron","points","Summary","total","dripProductView","currentLicense","artist","currencyCode","coverages","numEdits","licenseDescription","description","entries","forEach","coverage","displayTotal","ceil","parseFloat","toFixed","toLocaleString","currencySymbol","CrossLight","getImgixUrl","avatar_image","image_aws_url","alt","scale","size","getCurrencySpecificScaleText","previewLicenseLink","checkoutButton","cartButton","hasSuppressedSubscription","forcePayPerUse","A","bottom","Type","notification","handleTypeSelect","mouseEnter","mouseLeave","handleContinue","promotionalAsset","filmAsset","vlogAsset","lifeAsset","nonProfitAsset","studentProjectAsset","onTypeSelect","currentTarget","colItemDataVal","closest","attr","licenses","each","item","licenseDescVal","currencyIsAmbiguous","index","getColourTheming","onMouseEnter","onMouseLeave","LicenseLink","currencyValue","AssetPaginationPrevSecondary","Scale","handleScaleSelect","licenseClose","showProjectScale","hideProjectScale","onScaleSelect","html","pageTitle","isVlogLicense","currencyCodeDisplay","onPrevious","scales","marginLeft","color","MobileCheckoutButton","Option","handleRadioSelect","option","click","onRadioSelect","full_display_name","multiplier","required","subTotal","Options","checked","handleCheckSelect","onCheckSelect","price","options","isChecked","ref","defaultValue","broadcast","Coverage","currencySubTotal","direct","option_name","coverageTotal","checkout","coverageParents","currentValue","checkoutButtonActive","changeValue","slideStop","handleAddToCart","handlePreviewLicense","displayCheckout","getAttribute","parentName","parentCoverage","currencyCoverageTotal","active","values","currencyTotal","extra","edit","base","currencyExtra","discount","cartItem","isValidating","scaleId","redirectToCheckout","path","basketCount","basketTrackIds","basketTrackIdsArray","router","open","disabled","working","editsText","editsDescription","change","step","max","min","ticks","ticks_labels","ticks_snap_bounds","LicensingMethod","suppressLicensePrompt","handleChange","handleLoginSwitch","onAddModal","flex","fontWeight","overrideLogin","handleMethodSelect","FileText","SubscriptionUsageWarning","licenseStatusD","licenseStatusM","SubscriptionUsageReached","SubscriptionLicenseModal","tab","edits","licenseModalStep","errorCode","errorMessage","downloadLink","overdueId","needsDownloadCode","licenseDelay","onRequestSubscriptionLicense","licenseStepDebug","downloadLicense","downloadFiles","handleAddModal","hasWarning","requestSubscriptionLicense","download","paymentId","subscriptionState","textDecoration","plan_type","goToPayPerUse","fontSize","textAlign","LicensePage","trackVersion","trackDuration","web","filmfestival","theatrical","monetized","hasAccount","isFreeTrial","loggedOutSubscriber","version_type","version_length","params","cart","parse","duration_multiplier","licenseTheme","loggedOutSubscription","handleDismissSubscription","handlePrevious","handleRemoveLicense","debugStepOne","fetchLicenses","fetchDMultiplier","scale_type","newStep","addedToCart","licenseStep","userAuth","isAmbiguous","onDismissSubscription","onAddToCart","addToCart","_dcq","userId","tag","user_id","tags","product_id","categories","productDetails","product_url","slug","image_url","ModalLogin","loginEmail","hasQuickLoginEmail","resetModalForm","_handleKeyPress","autoFocus","ModalAccountSupplemental","isSubscribed1","isSubscribed2","isSubscribed3","isSubscribed4","handleInputChange","subscribeToAllNewsletters","handleClick","showHeader","professionSelected","onSubmitSupplementalUserData","maxWidth","margin","reloadPage","fetchGeneralPage","setupSite","gc","generateGuid","guidPart","floor","getApplauseCount","setApplauseClick","setTwitter","getTwitterCount","fetchAllDMultipliers","addLicense","downloadTrackInfo","info","generateLicenseCodeStart","generateLicenseCodeError","generateLicenseCode","module","exports","SpinnerIcon","strokeWidth","strokeLinecap","cx","cy","r","CrossSVG","LogoSVG","sanitizeString","str","convertToMinutesAndSeconds","time","minutes","seconds","PLACEHOLDER_IMG_URL","playerActive","playerInActive","changeMode","mode","onTogglePlay","playActiveTrack","pausedActiveTrack","onChangeTrack","direction","addVersionPrimaryTrack","isAudioReady","audio","isReady","playerActiveTrack","addTrackWave","addCollectionTrackWave","flushCurrentTrackWave","flushNewTrackWave","addPageTrackWave","addTrackPageWave","addTrackPageVersionWave","addVersionTrackWave","addVersionNewTrackWave","flushTrackWave","setPlayerPosition","position","setTrackPosition","setVolume","volume","toggleMute","toggleVersion","isVisible","CartSVG","SearchSVG","UsersSVG","UsersLoggedInSVG","SuggestedItem","image","svg","dangerouslySetInnerHTML","__html","SearchLink","onResultClick","padding","secondElem","SuggestedGroup","checkArtist","suggested","suggestedResult","rows","parent","tile_image","tile_svg","thumbnail_image","SuggestedBar","keys","keyName","TrendingBar","trending","renderedResult","trend","collection","StyleTypeResult","styleSvg","TrackTypeResult","CollectionTypeResult","ArtistTypeResult","CookieNotice","onCookieNoticeClick","NewVersionPrompt","refreshPage","reload","NormalA","AdminBar","showBranch","stickyBranch","avoidCdn","dropdownOffset","getEditLink","onMouseIn","onMouseOut","toggleStickyBranch","getDropdownOffset","toggleCdn","branchHover","round","offsetWidth","editUrl","adminBar","musicRoot","collectionRoot","artistRoot","pageRoot","adminUrls","adminLink","DEPLOY_BRANCH","transform","resetNotifications","cursor","ModalSignUp","onTabChange","ModalDownloadPreview","downloadVersionPreview","downloadAllPreviews","full_preview_zip","firstButtonText","version_description","firstButton","ModalLoginSuccess","ModalPassword","PlaylistModal","playlist","playlists","playlistType","isLoading","loading","timer","onSubmitNew","onSubmitExisiting","closeModals","updatePlaylistType","playlists_data","clearTimeout","warning","existingId","selectedPlaylist","_","onRemovePlaylist","artistThumb","hasExisting","onSubmit","orderBy","ModalPlaySignUp","modalType","signupMsg","RemoveStyleModal","selectedStyles","handleParentClick","handleSubmit","closeModal","splice","subStyles","onRemoveTrackStyle","reloaded","parentStyleRows","subStyleRows","defaultChecked","AutoClearModal","artist_image","SeeMoreModal","license_document","_link","_label","license_download","license_again","Header","isCalling","notificationVersion","siteHasBanner","displayTrending","pages","isSearchLoading","userAuthKey","userDisplayName","userHasArtistAccount","userHasCustomerAccount","suggestedCounter","showNotificationTimer","notificationShown","siteVersion","fetchingVersion","showNewVersionPrompt","hasLeftHomepage","isHomepage","onSetLoginStatus","cookiestring","RegExp","exec","authTokenCookie","decodeURIComponent","useAuthKey","isSafari","test","navigator","userAgent","checkDarkTheme","checkDistractionFree","checkSiteVersion","onSearchChange","onSearchFocus","handleDismissExpirationNotice","handleResultClick","handleCookieNoticeClick","logoutSession","handleRemoveModal","onSearchChangeHandler","handleBrowserMenu","handleLogin","showNotification","handleNotificationIn","handleNotificationOut","handleCloseNotification","handleCloseNotificationTimer","delayedCallback","debounce","versionCheckInterval","$body","$mainSearch","$searchSuggestionItems","searchIcon","closeIcon","toggleSearch","add","on","stopPropagation","is","stickyHeader","HeaderSearch","search","trigger","querySelector","addEventListener","toggleClass","categoriesOption","categoryExtra","outerHeight","next","filterBtn","filterClose","filterResponsive","filterResponsiveContent","filterResponsiveItem","filterResponsiveLinks","filterResponsiveLinksSecondary","filterSidebarCategory","filterSidebarCategoryItem","filterSubCatCategoryItem","fadeIn","removeAttr","fadeOut","unbind","slideToggle","MainJavascript","userDismissedCookieNotice","onSetupSite","versionChecker","setInterval","rtCode","qs","ignoreQueryPrefix","rt","rt_code","nextProps","clearInterval","pathName","setDistractionFreeMode","distractionFreePages","setDarkTheme","darkThemePages","user","gtag","chatgpt","remaining","basket_data","count","favourites_data","isTrusted","trustedName","be_branch","is_authenticated","isEmpty","admin","userHasAdminAccount","enteredProfession","showBasketIcon","persist","keyword","clear","cookies","eqPos","substr","context","currentLink","attributes","onSetAppliedFilters","onSetNotFiltered","headerNotifications","notificationTimer","checkoutPath","pageYOffset","menuOptions","NewVersionPromptMsg","player","classname","LogoLink","animateIn","animateOut","signin","onSearchSubmit","searchInput","onFocus","onMakeRegisterAttempt","SearchResult","contextTypes","PropTypes","object","BrowseFilter","slider","orientation","range","slide","ui","stop","Instagram","Footer","artistCount","trackCount","handleSocialClick","platform","getFullYear","div","hidden","ProgressBar","handleProps","increment","percent","interval","timeout","autoIncrement","intervalTime","updateProgress","isHidden","Wrapper","Percent","withProgressBar","WrappedComponent","progress","loadedRoutes","unsubscribeHistory","listenBefore","newProps","newState","concat","Play","Prev","Next","Skip","activeTrackIndex","skipImage","buttonClass","Repeat","Clock","Shuffle","AutoProgressPlayback","PlaybackActiveTrack","Mode","onChangeMode","modes","activeMode","classnames","autoprogress","repeat","firstFifteen","current","Controls","onPosChange","audioOptions","scrollParent","waveColor","progressColor","normalize","mediaType","cursorColor","cursorWidth","interact","audioRate","hideScrollbar","backend","EVENTS","Track","firstFifteenStart","touchedWave","wavesurferEl","createRef","initWaveSurfer","secToPos","posToSec","seekTo","parentSeekTo","setActiveTrackPosition","handlePlayTrack","seekToInNewFile","newSource","prevActiveTrack","nextActiveTrack","newAudioFile","version_preview_uri","oldAudioFile","audioReady","wavesurfer","WaveSurfer","destroy","pause","activeTrackWave","versionIndex","findIndex","activeWavesurfer","isDestroyed","drawer","isPlaying","pos","un","trackPage","now","waveform_json","version_precise_length","container","audioPeaks","audioDuration","create","setPeaks","drawBuffer","loadAudio","registerPlayerEvents","audioFileOrElt","HTMLElement","loadMediaElement","Blob","File","loadBlob","versionID","getDuration","play","formattedPos","originalArgs","triggerTrackChange","handleAutoProgress","handleCurrentTrackOnly","mediaSession","setActionHandler","sec","autoCenter","seekAndCenter","Duration","displayPrimaryTrackInfo","NameLink","displayPrimaryTrackImage","Profile","Plus","Add","onAddPlaylist","Favourite","onClickFavourite","onFavoriteToggle","mainVersionId","favourite","onDownload","Cart","onAddLicense","SubscriptionCart","float","Volume","visible","showSlider","invisible","reversed","vertical","onVolumeChange","FooterPlayer","pastVolume","loadStarted","loadEventUuid","isTouched","trackPlayer","controlsContainer","hideSlider","onVolumeStop","userHasSubscription","onAudioReady","formatSeconds","currentVolume","hours","formatted","c","crypto","getRandomValues","Uint8Array","timeTaken","performance","eventUuid","wasCancelled","uuidv4","onDownloadPreview","onToggleFavourite","inActiveTrack","trackWaves","trackIndex","audioFile","currentTrackWave","engagementInfo","currentTrack","trackID","has","currentVersion","setPosition","actions","ownProps","currentContext","playerTrack","activeTrackID","nextTrackId","nextVersionId","nextTrackWave","lastTrackIndex","currentTrackIndex","nextTrackIndex","currentTrackVersionIndex","showVersion","lastTrackVersionIndex","nextTrackVersionIndex","getCurrentTime","prevTrackIndex","prevTrackVersionIndex","prevTrackWave","prevLastIndex","classList","useEffect","defaultTitle","Children","toArray","selectLanguage","LanguageProvider","locale","messages","only","PureComponent","mapStateToProps","createSelector","languageState","LOAD_REPOS","LOAD_REPOS_SUCCESS","LOAD_REPOS_ERROR","DEFAULT_LOCALE","initialState","fromJS","currentUser","repositories","appReducer","set","setIn","repos","username","isFetching","unshift","pagination","isDeleting","isRemoveLoading","tracksWave","allTracks","allTrackIds","playbackMode","recentPlayHistory","recent","INITIAL_STATE","plan","isMonthly","hasValidVatNumber","subscriptionId","period","iso_code_2","vat_rate","isDownload","viewCredit","moods","versionsWave","versionIds","newTrackVersions","appliedFilters","follow","permittedContent","permittedDistribution","hasLoaded","permitted_content","scope","playerReducer","browseType","shuffle","newTrackWaves","isMute","reduce","storePage","mainVersionWave","versionWaves","wave","CHANGE_LOCALE","languageProviderReducer","letters","artists","latestArtists","artistDetails","routeInitialState","locationBeforeTransitions","routeReducer","LOCATION_CHANGE","createReducer","asyncReducers","combineReducers","subscriptionCart","footerPlayer","artistsReducer","route","global","globalReducer","language","createLogger","sagaMiddleware","createSagaMiddleware","addLocaleData","enLocaleData","deLocaleData","formatTranslationMessages","defaultFormattedMessages","enTranslationMessages","formattedMessages","formattedMessage","translationMessages","en","de","deTranslationMessages","checkStore","store","shape","isFunction","subscribe","replaceReducer","runSaga","isObject","invariant","conformsTo","injectAsyncReducer","isValid","asyncReducer","isString","Reflect","injectAsyncSagas","sagas","errorLoading","loadModule","cb","componentModule","default","history","middlewares","routerMiddleware","enhancers","applyMiddleware","thunk","composeEnhancers","compose","createStore","run","configureStore","browserHistory","syncHistoryWithStore","selectLocationState","prevRoutingState","prevRoutingStateJS","routingState","equals","toJS","makeSelectLocationState","rootRoute","component","App","childRoutes","injectReducer","injectSagas","getAsyncInjectors","getComponent","nextState","onEnter","_nextState","exact","createRoutes","ErrorBoundary","bugsnag","use","createPlugin","render","ReactDOM","routes","Intl","all"],"mappings":"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","file":"static/js/main.chunk.js?hash=184fa1c4","sourcesContent":["const Config = { BASE_API_URL: 'https://api.musicvine.com/', API: 'https://api.musicvine.com/api/', CDN_API: 'https://api.musicvine.com/api/', BASE_HOST: 'musicvine.com', BASE_URL: 'https://musicvine.com/', COOKIE_DOMAIN: '.musicvine.com', STRIPE_PUBLIC_KEY: 'pk_live_515JjsPCPVdo7qO4lLNGBH3FisMEOdVQlO3R9J2AnP9b9htW2qVfUwtnLF3bae1K9UME4MzpIyA4uGWBCows63FAa00CNeYnvPK', RECAPTCHA_V2_KEY: '6LdGwcgUAAAAAAhWfCXpM_j-LFIjhj3vuHFJtdPT', GOOGLE_API_KEY: 'AIzaSyDG8ITcmpwT6g1bCSdzkGP8ODIcxTon4yo', BYPASS_ORFIUM: false, PERIOD_ID: { \tMONTHLY: 1, \tYEARLY: 2, }, DEPLOY_BRANCH_FE: 'feature/2592-upgrade-music-vine', DEPLOY_BRANCH_BE: 'feature/2592-upgrade-music-vine',END_REVISION: '%endrev%', VERSION_CHECK_INTERVAL: 30000, DEBUG_SIGNUP: false, DOWNLOAD_URL: 'https://api.musicvine.com', }; export default Config; export const API = Config.API; export const DOWNLOAD_URL = Config.DOWNLOAD_URL;\n","import fetch from 'isomorphic-fetch';\nimport {\n API,\n} from '../constants';\n\nexport function showPlaylistSuccess(track, playlistName, newPlaylist) {\n return { type: 'SHOW_PLAYLIST_SUCCESS', track, playlistName, newPlaylist };\n}\n\nexport function hidePlaylistSuccess() {\n return { type: 'HIDE_PLAYLIST_SUCCESS' };\n}\n\nexport function animateInTooltip() {\n return { type: 'ANIMATE_IN_PLAYLIST_SUCCESS' };\n}\n\nexport function animateOutTooltip() {\n return { type: 'ANIMATE_OUT_PLAYLIST_SUCCESS' };\n}\n\n\n\nexport function bulkAddPlaylist(playlistName, playlistTracks, playlistTrackVersions) {\n const formData = new FormData()\n const authToken = sessionStorage.getItem('auth_token');\n\n formData.append('title', playlistName)\n formData.append('tracks', playlistTracks)\n formData.append('versions', playlistTrackVersions)\n\n return fetch(`${API}chatgpt/playlist`,{\n method: 'POST',\n headers: {\n 'token': authToken\n },\n body:formData\n })\n .then(res => res.json())\n}","import React from 'react';\nimport Spinner from 'styles/svg-components/Spinner.js';\nimport Config from '../../constants';\nimport { connect } from 'react-redux';\nimport ReCAPTCHA from \"react-google-recaptcha\";\nimport RecaptchaBranding from '../RecaptchaBranding';\nimport { checkRecaptchaV3 } from '../../actions/authenticationAction';\n\nexport class SignupModal extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {\n recaptchaV2Token: \"\",\n recaptchaV3Token: \"\",\n recaptchaResponse: [],\n };\n\n this.submit = this.submit.bind(this);\n this.captchaOnChange = this.captchaOnChange.bind(this);\n this.onKeyPress = this.onKeyPress.bind(this);\n }\n\n captchaOnChange(value) {\n this.setState({recaptchaV2Token: value})\n }\n\n onKeyPress(e) {\n if (e.key === \"Enter\") {\n this.submit();\n }\n }\n\n async submit() {\n const { modalIntent } = this.props;\n const recaptchaToken = await checkRecaptchaV3('signup');\n\n this.setState({\n recaptchaV3Token: recaptchaToken\n });\n\n this.props.makeRegisterAttempt(modalIntent);\n }\n\n render() {\n return (\n
\n
\n { this.props.signup.error &&\n
{ this.props.signup.error }
\n }\n
\n \n
\n
\n \n
\n
\n
\n

Must be between 8 and 80 characters long, with at least one letter and one number.

\n

Password Requirements

\n
\n \n
\n { this.props.signup.showRecaptchaV2 &&\n
\n \n
\n }\n \n \n \n \n { !this.props.signup.showLoader &&\n \n }\n
\n { this.props.signup.showLoader &&\n
\n
\n \n
\n
\n }\n \n
\n );\n }\n}\n\nSignupModal.defaultProps = {\n recaptcha: false,\n};\n\n\n// Map redux actions to local props.\nconst mapDispatchToProps = (dispatch) => ({\n});\n\n// Map redux states to local props.\nconst mapStateToProps = (state) => ({\n signup: state.get('signup'),\n});\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(SignupModal);\n","import { Link } from 'react-router';\nimport styled from 'styled-components';\n\nexport default styled(Link)`\ncursor: pointer\n`;\n\n","import fetch from 'isomorphic-fetch';\nimport {\n API,\n} from '../constants';\nimport { drip } from 'utils/drip';\n\nimport { requestTracks, receiveTracks, receiveTracksIds, receiveAllTracks, receiveAllTracksIds } from './trackAction';\nimport { addNewEngagement } from 'actions/favouriteAction';\nimport { addModal } from 'actions/authenticationAction';\nexport function addTrack(track) {\n return { type: 'ADD_TRACK', track };\n}\n\nexport function toggleTrack(track) {\n return { type: 'TOGGLE_TRACK', track };\n}\n\n\nexport function addTrackId(id) {\n return { type: 'ADD_TRACK_ID', id };\n}\n\nexport function addAllTrack(track) {\n return { type: 'ADD_ALL_TRACK', track };\n}\n\nexport function changeMode(mode) {\n return { type: 'PLAYBACK_MODE', mode };\n}\n\nexport function changeTrack(direction) {\n return { type: 'CHANGE_MODE', direction };\n}\n\nexport function togglePlaying() {\n return { type: 'TOGGLE_PLAY' };\n}\n\nexport function setPlaying(playing) {\n return { type: 'SET_PLAYING', playing };\n}\n\nexport function addActiveTrackNew(newTrack) {\n return { type: 'ACTIVE_TRACK', newTrack };\n}\n\nexport function addActiveTrack(newTrack, waveform = false) {\n return (dispatch, getState) => {\n const playing = getState().get('playing');\n const activeTrack = getState().get('activeTrack');\n const activeTrackId = activeTrack.trackId;\n const newTrackId = newTrack.trackId;\n const activeVersionId = activeTrack.versionId;\n const newVersionId = newTrack.versionId;\n\n let isPlayAction = false;\n\n if (waveform) {\n dispatch(setPlaying(true));\n isPlayAction = true;\n } else if (activeVersionId !== newVersionId || (activeVersionId === newVersionId && !playing)) {\n dispatch(setPlaying(true));\n isPlayAction = true;\n } else if (activeVersionId && activeVersionId && activeVersionId === newVersionId && !playing) {\n dispatch(setPlaying(false));\n } else if (activeTrackId !== newTrackId || (activeTrackId === newTrackId && !playing)) {\n dispatch(setPlaying(true));\n isPlayAction = true;\n } else if (activeTrackId === newTrackId && playing) {\n dispatch(setPlaying(false));\n }\n\n if (isPlayAction && newTrack.contextId) {\n addNewEngagement('play', newTrackId, newTrack.contextId);\n }\n dispatch(addActiveTrackNew(newTrack));\n };\n}\n\nexport function addPrimaryTrack(track) {\n return { type: 'PRIMARY_TRACK', track };\n}\n\nexport function addAllTrackIds(tracks) {\n return { type: 'ADD_ALL_TRACK_IDS', tracks };\n}\n\nexport function addAllTracks(tracks) {\n return { type: 'ADD_ALL_TRACKS', tracks };\n}\n\nexport function addTrackIds(tracks) {\n return { type: 'ADD_TRACK_IDS', tracks };\n}\n\nexport function addTracks(tracks) {\n return { type: 'ADD_TRACKS', tracks };\n}\nexport function addTracksWave(tracks, trackId) {\n if (trackId != null) {\n return { type: 'ADD_SIMILAR_TRACKS_WAVE', tracks };\n }\n return { type: 'ADD_TRACKS_WAVE', tracks };\n}\nexport function addRecentPlayHistory(track) {\n return { type: 'ADD_RECENT_PLAY', track };\n}\n\nexport function addfirstFifteenStart(time) {\n return { type: 'FIRST_FIFTEEN', time };\n}\n\nexport function addVersionsWave(versions) {\n return { type: 'ADD_VERSIONS_WAVE', versions };\n}\n\nexport function addVersionIds(versions, mode) {\n if (mode == 'add') {\n return { type: 'ADD_VERSION_IDS', versions };\n }\n return { type: 'REMOVE_VERSIONS', versions };\n}\n\n// Asynch Tracks\nexport function addPlaylist(track, version) {\n return function (dispatch) {\n if (sessionStorage.getItem('auth_token')) {\n dispatch(addPlaylistTrack(track, version));\n } else {\n dispatch(addModal('playSignup', 'add_playlist'));\n }\n };\n}\n\nexport function downloadPreview(primaryTrack, version) {\n return function (dispatch) {\n if (sessionStorage.getItem('auth_token')) {\n addNewEngagement('preview', primaryTrack.id, primaryTrack.current_context.id);\n drip(\"Downloaded Track Preview\");\n if (version !== undefined && version.download_preview_mp3) {\n window.location = version.download_preview_mp3;\n } else if (primaryTrack.track_url.download_preview_mp3) {\n window.location = primaryTrack.track_url.download_preview_mp3;\n }\n } else {\n dispatch(addModal('playSignup', 'download_preview'));\n }\n };\n}\n\nexport function downloadPreviewTrackPage(primaryTrack, version) {\n return function (dispatch) {\n if (sessionStorage.getItem('auth_token')) {\n addNewEngagement('preview', primaryTrack.id, primaryTrack.current_context.id);\n drip(\"Downloaded Track Preview from Track Page Header\");\n dispatch(addModal('downloadPreview', {primaryTrack, version}));\n } else {\n dispatch(addModal('playSignup', 'download_preview'));\n }\n };\n}\n\nexport function addPlaylistTrack(track, version) {\n return { type: 'ADD_PLAYLIST', track, version };\n}\n\nexport function removePlaylist() {\n return { type: 'REMOVE_PLAYLIST' };\n}\n\n\nexport function displayLicense(license) {\n return { type: 'DISPLAY_LICENSE', license };\n}\n\nexport function setHandlers() {\n return { type: 'SET_HANDLERS' };\n}\n\nexport function newTracks() {\n return { type: 'NEW_TRACKS' };\n}\n\nexport function setHandlersVersions() {\n return { type: 'SET_HANDLERS_VERSIONS' };\n}\n\nexport function newTrackVersions() {\n return { type: 'NEW_TRACKS_VERSIONS' };\n}\n\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass MVName extends React.Component {\n render() {\n const MVName = `\n\n \n \n \n \n \n \n \n \n \n`;\n return (\n \n );\n }\n}\n\nexport default MVName;\n","import fetch from 'isomorphic-fetch';\nimport Config, {\n API,\n} from '../constants';\nimport {conditionallyGetCdnApi} from \"./generalAction\";\n\nexport function fetchSearchSuggested(query) {\n query = reverseString(query);\n return fetch(`${conditionallyGetCdnApi()}searches/${query}/suggested`, {\n method: 'GET',\n // mode: 'CORS',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchSearchTrend() {\n return fetch(`${conditionallyGetCdnApi()}searches/latest/trending`, {\n method: 'GET',\n // mode: 'CORS',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchSearchSynchClicked(query, energy, vocal) {\n query = reverseString(query);\n return fetch(`${conditionallyGetCdnApi()}searches/${query}/clickeds/${energy}/energies/${vocal}/vocal`, {\n method: 'GET',\n // mode: 'CORS',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\n\nexport function fetchSearchClicked(query, energy, vocal) {\n fetchTracks(query, energy, vocal);\n fetchCollections(query, energy, vocal);\n}\n\nexport function fetchSearchClickedTracks(query, energy, vocal, sort, duration, styleFilters, page) {\n query = reverseString(query);\n if (styleFilters == null) {\n styleFilters = {};\n }\n const JsonStyleFilters = JSON.stringify(styleFilters);\n return function (dispatch) {\n dispatch(requestTracks());\n return fetch(`${conditionallyGetCdnApi()}searches/${query}/clickeds/${energy}/energies/${vocal}/vocals/${sort}/sorts/${duration}/durations/${JsonStyleFilters}/stylefilters/${page}/tracks`, {\n method: 'GET',\n // mode: 'CORS',\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then((json) => {\n dispatch(receiveTracks(json), dispatch(receiveTracksIds(json.result_ids)), dispatch(receiveAllTracksIds(json.result_ids)));\n }\n );\n };\n}\n\nexport function fetchSearchClickedCollections(query, energy, vocal, sort, styleFilters) {\n query = reverseString(query);\n if (styleFilters == null) {\n styleFilters = {};\n }\n const JsonStyleFilters = JSON.stringify(styleFilters);\n return function (dispatch) {\n return fetch(`${conditionallyGetCdnApi()}searches/${query}/clickeds/${energy}/energies/${vocal}/vocals/${JsonStyleFilters}/stylefilters/collections`, {\n method: 'GET',\n // mode: 'CORS',\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then((json) => {\n dispatch(receiveCollections(json));\n }\n );\n };\n}\n\nexport function fetchUpdateTrend(type, result, query) {\n query = reverseString(query);\n return fetch(`${conditionallyGetCdnApi()}searches/${type}/types/${result}/results/${query}/queries/new`, {\n method: 'GET',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\nfunction reverseString(s){\n return s.toString().split(\"\").reverse().join(\"\");\n}\n\n\nfunction receiveSearchClicked(dispatch, searches) {\n let collectionSearches = [];\n const trackSearches = searches;\n\n if (searches.results.collections) {\n collectionSearches = searches.results.collections;\n }\n dispatch(receiveCollections(collectionSearches));\n if (trackSearches.results.tracks) {\n trackSearches.results = trackSearches.results.tracks;\n } else {\n trackSearches.results = [];\n }\n dispatch(receiveTracks(searches));\n}\n\n// function requestTracks() {\n// return { type: 'REQUEST_TRACKS' };\n// }\n\n// function receiveTracks(tracks) {\n// return { type: 'RECEIVE_TRACKS', tracks };\n// }\n\nfunction receiveCollections(collections) {\n return { type: 'RECEIVE_COLLECTIONS', collections };\n}\n\n\n// ACTIONS\nfunction requestTracks() {\n return { type: 'REQUEST_TRACKS' };\n}\n\nfunction receiveTracks(tracks) {\n delete tracks.results_id;\n return { type: 'RECEIVE_TRACKS', tracks };\n}\n\nfunction receiveTracksIds(tracks) {\n return { type: 'RECEIVE_TRACK_IDS', trackIds: tracks.slice(0, 9) };\n}\n\nfunction receiveAllTracksIds(tracks) {\n return { type: 'RECEIVE_ALL_TRACK_IDS', trackIds: tracks };\n}\n\nfunction receiveVersions(versions) {\n return { type: 'RECEIVE_VERSIONS', versions };\n}\n","import fetch from 'isomorphic-fetch';\nimport Config, {\n API,\n} from '../constants';\nimport { getAuthToken } from './authenticationAction';\nimport {conditionallyGetCdnApi} from \"./generalAction\";\n\nexport function loadSubscriptionData(subscriptionData, isLoggedIn) {\n // Save relevant subscription data to session storage\n if (subscriptionData && !Array.isArray(subscriptionData) && subscriptionData.isActive) {\n sessionStorage.setItem('subscriptionData', JSON.stringify(subscriptionData));\n sessionStorage.setItem('is_subscriber', 'true');\n sessionStorage.setItem('subscription_name', subscriptionData.name);\n } else {\n sessionStorage.removeItem('subscriptionData');\n if (isLoggedIn) {\n sessionStorage.removeItem('is_subscriber');\n sessionStorage.removeItem('subscription_name');\n }\n }\n\n // Add a shorthand for \"active or suspended\", as that check is used often\n subscriptionData.isActiveOrSuspended = subscriptionData.isActive || subscriptionData.isSuspended;\n\n if (subscriptionData.overduePayment || subscriptionData.isPaused || subscriptionData.hasExpiredNotice) {\n $(\"body\").addClass('has-heads-up');\n } else {\n $(\"body\").removeClass('has-heads-up');\n }\n\n return { type: 'LOAD_SUBSCRIPTION_DATA', subscriptionData };\n}\n\nexport function setHasExpiredNotice(hasExpiredNotice) {\n\n if (hasExpiredNotice) {\n $(\"body\").addClass('has-heads-up');\n } else {\n $(\"body\").removeClass('has-heads-up');\n }\n\n return { type: 'SET_HAS_EXPIRED_NOTICE', hasExpiredNotice };\n}\n\nexport function fetchSubscriptionPlans() {\n const apiUrl = `${API}subscription/plan`;\n\n return fetch(apiUrl, {\n method: 'GET',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchSubscriptionAddons() {\n const apiUrl = `${API}subscription/plan/addon`;\n\n return fetch(apiUrl, {\n method: 'GET',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchSubscriptionPlansAndAddons() {\n const apiUrl = `${conditionallyGetCdnApi()}subscription/plan/plan_addon`;\n\n\n return fetch(apiUrl, {\n method: 'GET',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchSubscriptionInvoice(uuid, authToken) {\n const apiUrl = `${API}subscription/completeIncompletePayment`;\n\n let formData = new FormData();\n formData.append('uuid', uuid );\n formData.append('token', authToken );\n\n return fetch(apiUrl, {\n method: 'POST',\n body: formData\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchSubscriptionPermissions(type = 1) {\n return (dispatch) => new Promise((resolve, reject) => {\n const apiUrl = `${conditionallyGetCdnApi()}subscription/get_permissions/plan_type_category/${type}`;\n fetch(apiUrl, {\n method: 'GET',\n })\n .then((res) => res.json())\n .then((response) => {\n dispatch({\n type: 'LOAD_SUBSCRIPTION_PERMISSION',\n payload: response,\n });\n resolve(response);\n })\n .catch((err) => reject(err));\n });\n}\n\nexport function dismissExpirationNotice(authToken) {\n const apiUrl = `${API}subscription/expiredNotificationDismissAction`;\n\n let formData = new FormData();\n formData.append('token', authToken );\n\n return fetch(apiUrl, {\n method: 'POST',\n body: formData\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function setYoutubeChannel(payload) {\n const apiUrl = `${API}customer/update-social-channel`;\n\n const formData = new FormData();\n formData.append('token', getAuthToken());\n formData.append('channel', payload.channel);\n formData.append('channelName', payload.channelName);\n formData.append('channelLocation', 1);\n formData.append('whitelist', true);\n\n return fetch(apiUrl, {\n method: 'POST',\n body: formData\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Download extends React.Component {\n render() {\n const Download = ``;\n return (\n \n );\n }\n}\n\nexport default Download;\n","import fetch from 'isomorphic-fetch';\nimport {\n API,\n} from '../constants';\n\nexport function loadAdminData(adminData) {\n const showRelevancy = sessionStorage.getItem(\"showDebugRData\") === \"1\";\n\n return { type: 'LOAD_ADMIN_DATA', adminData, showRelevancy };\n}\n\nexport function toggleRelevancy() {\n return { type: 'TOGGLE_RELEVANCY' };\n}\n\nexport function loadEditData(editData) {\n return { type: 'SET_EDIT_DATA', editData };\n}\n\nexport function clearEditData(editData) {\n return { type: 'CLEAR_EDIT_DATA' };\n}","import fetch from 'isomorphic-fetch';\nimport Config, { API } from '../constants';\nimport { dripIdentify } from 'utils/drip';\n\nconst genericErrorMsg = 'Sorry, something went wrong. Please try again later.';\n\nexport function loadUserData(userData) {\n const reducerData = {\n isCustomer: userData.hasAccountCustomer,\n isArtist: userData.hasAccountArtist,\n isAdmin: userData.hasAccountAdmin,\n isEngaged: userData.is_engaged,\n firstName: userData.firstName,\n company: userData.company,\n isPaymentTabDisplay: userData.isPaymentTabDisplay,\n isSubscriptionTabDisplay: userData.isSubscriptionTabDisplay,\n };\n\n if (userData.is_engaged) {\n dripIdentify(userData.id, userData.email, userData.engagementLabel);\n }\n\n return { type: 'LOAD_USER_DATA', userData: reducerData };\n}\n\nexport function getAuthToken() {\n let token = getCookie('auth_token');\n\n if (!token) {\n token = sessionStorage.getItem('auth_token');\n }\n\n return token;\n}\n\nexport function fetchLogout() {\n return fetch(`${Config.API}user/handle-symfony-logout`, {\n method: 'GET',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchAuthenticationState() {\n return fetch(`${Config.API}auth/authenticationStatus`, {\n method: 'GET',\n mode: 'no-cors',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\n/**\n * Multipart Auth Process\n *\n * 1) Check the credentials\n * 2) Submit form to login URL.\n */\nexport function makeLoginAttempt(redirect) {\n return new Promise((resolve) => {\n $.ajaxSetup({\n credentials: 'include',\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n },\n xhrFields: {\n withCredentials: true,\n },\n crossDomain: true,\n });\n const url = `${Config.API}user/check_credentials`;\n const body = $('.js-login-form').serialize();\n showModalLoader(true);\n clearModalErrorMsg();\n $.post(\n url,\n body,\n (json) => {\n if (json.status !== 'success') {\n document.cookie =\n 'logged_in_cookie=; expires=Thu, 01 Jan 1970 00:00:01 GMT;';\n sessionStorage.removeItem('loggedin_in');\n showModalErrorMsg(json.message);\n showModalLoader(false);\n return;\n }\n\n document.cookie = `logged_in_cookie=${Math.random()};path=/;domain=${\n Config.COOKIE_DOMAIN\n };false;false`;\n sessionStorage.setItem('loggedin_in', true);\n localStorage.setItem('quick_login', $('#_username').val());\n\n sessionStorage.setItem('auth_token', json.token);\n\n $.post(`${Config.API}user/login`, body, (json) => {\n const redirectLocation = getLoginRedirect(redirect);\n // resolve(redirectLocation);\n showModalLoader(false);\n\n\n\n sessionStorage.setItem('auth_token', json.auth_token);\n sessionStorage.setItem('currency_id', json.currency.id);\n sessionStorage.setItem('currency_symbol', json.currency.symbol_left);\n sessionStorage.setItem('currency_value', json.currency.value);\n sessionStorage.setItem('loggedin_in', true);\n\n setCookie('auth_token', json.auth_token, 180);\n localStorage.setItem('quick_login', json.email);\n\n if (redirect && redirect.requestIntent !== 'checkout-payment') {\n window.location = redirectLocation;\n }\n });\n },\n 'json'\n )\n .done(() => {\n // DR: Commenting this out as the page just hard refreshes after\n // showModalLoader(false);\n })\n .fail(() => {\n showLoginError(genericErrorMsg);\n\n showModalLoader(false);\n });\n });\n}\n\nexport function showLoginStageTwo() {\n $('#submit').prop('disabled', false);\n $('.modal-primary__form-stage-1').addClass('login-form-hide');\n $('.modal-primary__form-stage-2').show();\n window.setTimeout(() => {\n $('.modal-primary__form-stage-2').removeClass('login-form-hide');\n }, 10);\n window.setTimeout(() => {\n $('.js-password')[0].focus();\n }, 600);\n}\n\nexport function checkProvidedEmail(e) {\n e.preventDefault();\n const formPrefix = e.target.dataset.formPrefix\n ? e.target.dataset.formPrefix\n : '';\n\n const suppliedEmail = String($(`#${formPrefix}_username`).val()).trim();\n let userFirstName = '';\n\n const url = `${Config.API}login/validate-email?email=${encodeURIComponent(\n suppliedEmail\n )}`;\n\n clearModalErrorMsg();\n\n $.get(url, (result) => {\n if (!result.success) {\n showModalErrorMsg('No user was found with this email address.');\n } else if (result.success === 1) {\n showLoginStageTwo(suppliedEmail);\n } else if (result.success === 2) {\n userFirstName = result.message;\n\n $('#modal-login-title').text('Almost There!');\n\n if (userFirstName && userFirstName !== '') {\n $('#login_modal_has-firstname').text(` ${userFirstName}`);\n }\n\n $('.modal-primary__form-stage-1').addClass('login-form-hide');\n $('.password-prompt').hide();\n $('.modal-primary__form-mvnet-user').show();\n window.setTimeout(() => {\n $('.modal-primary__form-mvnet-user').removeClass('login-form-hide');\n }, 10);\n $('.modal-primary__forgot-password').css('visibility', 'hidden');\n // Show automatic password reset email\n }\n });\n\n // return { type: 'REMOVE_MODAL' };\n}\n\nexport function showModalErrorMsg(msg) {\n $('form.login, .signin-container').addClass('validation-error');\n $('.login').prepend(\n `
${msg}
`\n );\n}\n\nexport function clearModalErrorMsg() {\n $('form.login, .signin-container').removeClass('validation-error');\n $('.login-error').remove();\n}\n\nexport function resetLoginModal() {\n const loginModalOriginalTitle = 'Sign In';\n\n clearModalErrorMsg();\n $('#modal-login-title').text(loginModalOriginalTitle);\n $('.modal-primary__form-stage-1').removeClass('login-form-hide');\n $('.modal-primary__form-stage-2, .modal-primary__form-mvnet-user').addClass(\n 'login-form-hide'\n );\n $('#submit').prop('disabled', true);\n $('.password-prompt').show();\n $('.modal-primary__forgot-password').css('visibility', 'visible');\n}\n\nexport function removeModal() {\n return { type: 'REMOVE_MODAL' };\n}\n\nexport function addModal(modal, intent) {\n return { type: 'ADD_MODAL', modal, intent };\n}\n\nexport function setLoginStatus(status) {\n return { type: 'SET_LOGIN_STATUS', isLoggedIn: status };\n}\n\nexport function setEnteredProfession(status) {\n return { type: 'SET_HAS_ENTERED_PROFESSION', hasEnteredProfession: status };\n}\n\nexport function makeRegisterAttempt(isEmbedded, intent) {\n return function (dispatch) {\n $.ajaxSetup({\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n },\n xhrFields: {\n withCredentials: true,\n },\n });\n\n isEmbedded = !!isEmbedded;\n\n const url = `${Config.API}user/register`;\n\n dispatch(showSignupModalLoader(true));\n\n dispatch(showSignupError(false));\n\n $.post(\n url,\n $('.js-register-form').serialize(),\n (json) => {\n if (json.status == 'error') {\n dispatch(showSignupError(json.message));\n if (json.code === 10 || json.code === 11 || json.code === 12) {\n dispatch({ type: 'SHOW_RECAPTCHA_V2', showRecaptchaV2: true });\n }\n dispatch(showSignupModalLoader(false));\n } else {\n dispatch(showSignupModalLoader(false));\n\n sessionStorage.setItem('auth_token', json.auth_token);\n sessionStorage.setItem('currency_id', json.currency.id);\n sessionStorage.setItem('currency_symbol', json.currency.symbol_left);\n sessionStorage.setItem('currency_value', json.currency.value);\n sessionStorage.setItem('loggedin_in', true);\n\n setCookie('auth_token', json.auth_token, 180);\n localStorage.setItem('quick_login', json.email);\n\n try {\n window.dataLayer.push({\n event: 'registrationComplete',\n usedEmbeddedSignup: isEmbedded ? 1 : 0,\n });\n } catch (e) {}\n\n if (!isEmbedded) {\n dispatch(addModal('success', intent));\n } else {\n $('#signup-page-step-1').css('display', 'none');\n $('.register-succcess__stage-1').css('display', 'block');\n }\n }\n },\n 'json'\n )\n .done(() => {\n dispatch(showSignupModalLoader(false));\n })\n .fail(() => {\n showSignupError(genericErrorMsg);\n\n dispatch(showSignupModalLoader(false));\n });\n };\n}\n\nexport function makePasswordAttempt() {\n return function (dispatch) {\n $.ajaxSetup({\n headers: {\n 'X-Requested-With': 'XMLHttpRequest',\n },\n xhrFields: {},\n });\n const url = `${Config.API}user/password`;\n\n dispatch(showSignupModalLoader(true));\n\n $('.js-error-message').hide();\n $('.js-success-message').hide();\n\n /**\n * Using jquery post as fetch didn't work properly.\n */\n $.post(\n url,\n $('.js-password-form').serialize(),\n (json) => {\n if (json.status == 'error') {\n $('.js-error-message').find('span').text(json.message);\n $('.js-error-message').show();\n\n dispatch(showSignupModalLoader(false));\n\n return;\n }\n $('.js-spinner').hide();\n $('.js-success-message')\n .find('span')\n .text('Thank you, you will receive an email shortly.');\n $('.js-success-message').show();\n },\n 'json'\n )\n .done(() => {\n dispatch(showSignupModalLoader(false));\n })\n .fail(() => {\n dispatch(showSignupError(genericErrorMsg));\n\n dispatch(showSignupModalLoader(false));\n });\n };\n}\n\n/**\n * Submit supplemental user data after registration.\n */\nexport function submitSupplementalUserData() {\n return function (dispatch) {\n const selectedProfession = parseInt(\n $('.register-success__profession-dropdown').val()\n );\n let selectedNewsletters = '';\n const checkedNewsletters = [];\n\n dispatch(showSignupModalLoader(true));\n\n if ($('#newsletter-signup-1').prop('checked')) {\n checkedNewsletters.push(1);\n }\n\n if ($('#newsletter-signup-2').prop('checked')) {\n checkedNewsletters.push(2);\n }\n\n if ($('#newsletter-signup-3').prop('checked')) {\n checkedNewsletters.push(3);\n }\n\n if ($('#newsletter-signup-4').prop('checked')) {\n checkedNewsletters.push(4);\n }\n\n selectedNewsletters = checkedNewsletters.join();\n\n if (selectedProfession !== 0 || !isNaN(selectedProfession)) {\n $.ajax({\n type: 'POST',\n url: `${Config.API}user/register/step/2`,\n data: {\n profession: selectedProfession,\n newsletter: selectedNewsletters,\n token: sessionStorage.getItem('auth_token'),\n },\n })\n .done((response) => {\n $('.register-succcess__stage-1').hide();\n $('.register-succcess__stage-2').show();\n\n try {\n window.dataLayer.push({\n event: 'registrationProfessionConfirmation',\n selectedProfession,\n });\n window.dataLayer.push({\n event: 'registrationNewsletterSignup',\n newsletters: checkedNewsletters,\n newslettersCount: checkedNewsletters.length,\n });\n } catch (e) {}\n\n dispatch(showSignupModalLoader(false));\n })\n .fail(() => {\n dispatch(showSignupModalLoader(false));\n });\n } else {\n $('.register-succcess__stage-1').hide();\n $('.register-succcess__stage-2').show();\n dispatch(showSignupModalLoader(false));\n }\n };\n}\n\nexport function getLoginRedirect(redirect) {\n let redirectLocation = '';\n\n if (redirect) {\n switch (redirect.requestIntent) {\n case 'checkout-payment':\n redirectLocation = '/checkout/payment';\n break;\n case 'customer-account':\n redirectLocation = '/customer/account';\n break;\n case 'customer-following':\n redirectLocation = '/customer/following';\n break;\n case 'customer-playlists':\n redirectLocation = '/customer/playlists';\n break;\n case 'customer-license-history':\n redirectLocation = '/customer/license-history';\n break;\n case 'customer-license-history-pay-per-use':\n redirectLocation = '/customer/license-history/pay-per-use';\n break;\n case 'customer-license-history-subscription':\n case 'subscription-license':\n case 'download-subscription-track':\n redirectLocation = '/customer/license-history/subscription';\n break;\n case 'customer-payments':\n redirectLocation = '/customer/payments';\n break;\n case 'artist-account':\n redirectLocation = '/artist/account';\n break;\n case 'artist-submissions':\n redirectLocation = '/artist/account/submissions';\n break;\n case 'artist-submit-for-review':\n redirectLocation = '/artist/account/submissions/submit-for-review';\n break;\n case 'artist-submit-approved':\n redirectLocation = '/artist/account/submissions/submit-approved';\n break;\n case 'artist-submit-for-rereview':\n redirectLocation = '/artist/account/submissions/submit-for-rereview';\n break;\n case 'artist-portfolio':\n redirectLocation = '/artist/account/portfolio';\n break;\n case 'artist-statement':\n redirectLocation = '/artist/account/statement';\n break;\n case 'artist-subscription-usage-report':\n if (redirect.requestId) {\n redirectLocation = `/artist/account/statement/subscription-usage-report/${parseInt(\n redirect.requestId\n )}`;\n } else {\n redirectLocation = '/artist/account/statement';\n }\n break;\n case 'artist-earnings':\n redirectLocation = '/artist/account/artist-earnings';\n break;\n case 'view-invoice':\n case 'view-credit-note':\n case 'license-agreement':\n case 'order-confirmation':\n case 'order-summary':\n case 'download-track':\n if (redirect.requestId) {\n redirectLocation = `/customer/order-summary/${parseInt(\n redirect.requestId\n )}`;\n } else {\n redirectLocation = '/customer/license-history';\n }\n break;\n default:\n redirectLocation = '/browse/all';\n }\n }\n\n return redirectLocation;\n}\n\nexport function showSigninSuccess(firstName) {\n return { type: 'SHOW_SIGNIN_SUCCESS', firstName };\n}\n\nexport function hideSigninSuccess() {\n return { type: 'HIDE_SIGNIN_SUCCESS' };\n}\n\nexport function showNotificationSuccess(timerNotification) {\n return { type: 'SHOW_NOTIFICATION_SUCCESS', payload: timerNotification };\n}\n\nexport function hideNotificationSuccess() {\n return { type: 'HIDE_NOTIFICATION_SUCCESS' };\n}\nexport function animateInTooltip() {\n return { type: 'ANIMATE_IN_SIGNIN_SUCCESS' };\n}\n\nexport function animateOutTooltip() {\n return { type: 'ANIMATE_OUT_SIGNIN_SUCCESS' };\n}\n\nexport function checkRecaptchaV3(action) {\n return new Promise((resolve) => {\n grecaptcha.ready(async () => {\n const token = await grecaptcha.execute(\n '6LdPw8gUAAAAAASdX7Asfq1HM2SmGQ5zl7ecYbPg',\n { action }\n );\n resolve(token);\n });\n });\n}\n\nexport function setCookie(e, t, i) {\n const n = new Date();\n n.setTime(n.getTime() + 24 * i * 60 * 60 * 1e3);\n const o = `expires=${n.toUTCString()}`;\n document.cookie = `${e}=${t};${o};path=/;domain=${Config.COOKIE_DOMAIN}`;\n}\nexport function getCookie(e) {\n for (\n var t, i = `${e}=`, n = document.cookie.split(';'), o = 0;\n o < n.length;\n o++\n ) {\n for (t = n[o]; t.charAt(0) == ' ';) t = t.substring(1);\n if (t.indexOf(i) == 0) return t.substring(i.length, t.length);\n }\n return '';\n}\n\nfunction showSignupModalLoader(show) {\n return { type: 'SIGNUP_SHOW_LOADER', showLoader: show };\n}\n\nfunction showSignupError(msg) {\n return { type: 'SIGNUP_ERROR', error: msg };\n}\n\nfunction showModalLoader(show) {\n const spinner = $('.js-spinner');\n const modalBtn = $('.modal-primary__btn, .register-btn');\n\n if (show) {\n spinner.show();\n modalBtn.prop('disabled', true).css('opacity', '0');\n } else {\n spinner.hide();\n modalBtn.prop('disabled', false).css('opacity', '1');\n }\n}\n\nfunction showLoginError(msg) {\n const loginError = $('.login-error');\n\n if (msg === false) {\n loginError.css('opacity', '0');\n } else {\n loginError.find('span').text(msg);\n loginError.css({\n display: 'block',\n opacity: '1',\n });\n }\n}\n//\n// function getCookie(name) {\n// const value = `; ${document.cookie}`;\n// const parts = value.split(`; ${name}=`);\n// if (parts.length == 2) return parts.pop().split(';').shift();\n// }\n\nexport function checkEmail(email) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${API}api-check-email-exists?email=${email}&token=${authToken}`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function updateEmail(email) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${API}api-update-email`, {\n method: 'POST',\n body: JSON.stringify({\n email,\n token: authToken,\n }),\n headers: {\n 'Content-Type': 'application/json',\n token: authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function checkAuthPassword(password) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-customer/check-user-authentication-details`, {\n method: 'POST',\n body: JSON.stringify({\n password_check: password,\n token: authToken,\n }),\n headers: {\n 'Content-Type': 'application/json',\n token: authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchAccountDetail() {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-customer/account`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchCountries() {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${API}countries`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function updateCustomerAccount(data) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-customer/account`, {\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({\n token: authToken,\n ...data,\n }),\n headers: {\n 'Content-Type': 'application/json',\n token: authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function autoRenew(data) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-subscription/customer/autoRenew`, {\n method: 'POST',\n body: JSON.stringify({\n token: authToken,\n ...data,\n }),\n headers: {\n 'Content-Type': 'application/json',\n token: authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function getYoutubeChannel(channelID) {\n return () =>\n fetch(\n `https://www.googleapis.com/youtube/v3/channels?part=snippet&id=${channelID}&type=channel&key=${Config.GOOGLE_API_KEY}`,\n {\n method: 'GET',\n }\n )\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function searchYoutubeChannel(searchTerm) {\n return () =>\n fetch(\n `https://www.googleapis.com/youtube/v3/search?part=snippet&q=${searchTerm}&type=channel&key=${Config.GOOGLE_API_KEY}`,\n {\n method: 'GET',\n }\n )\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchOrderSummary(orderID) {\n const authToken = sessionStorage.getItem('auth_token');\n return () =>\n fetch(`${Config.BASE_API_URL}api-customer/order-summary/${orderID}`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n};\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\n\nclass ScrollToTop extends Component {\n\n componentDidUpdate(prevProps) {\n\n // Don't scroll to top when changing UUID on playlist generator.\n if(this.props.location.pathname.includes('/playlist-generator/')) {\n return;\n }\n\n if (this.props.location !== prevProps.location) {\n\n // Containers needs to scroll to top.\n let scrollContainer = document.getElementById(\"browse-artist-page\");\n let appContainer = document.getElementById(\"app\");\n\n // Scroll windows to top.\n window.scrollTo(0, 0);\n\n if (scrollContainer !== null) {\n scrollContainer.scrollTop = 0;\n }\n\n if (appContainer !== undefined) {\n appContainer.scrollTop = 0;\n }\n\n }\n }\n\n render() {\n return this.props.children\n }\n}\n\nexport default withRouter(ScrollToTop)","import $ from 'jquery';\nimport fetch from 'isomorphic-fetch';\nimport Config, { API } from '../constants';\nimport { drip } from 'utils/drip';\n// import { fetchPlaylistTracks } from './trackAction';\nimport { fetchFavouriteTracks } from './trackAction';\n\nimport { addModal } from 'actions/authenticationAction';\n\nexport function fetchEditFavourite(trackId, customerId) {\n return fetch(`${API}favourites/${trackId}/customers/${customerId}/edit`, {\n method: 'GET',\n credentials: 'include',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function toggleFavouriteTrackVerion(trackVersionId, contextId) {\n return (dispatch) => {\n // Get a handle of the auth_token from sessionStorage\n const authToken = sessionStorage.getItem('auth_token');\n\n // If we have an authToken, continue, otherwise show the login modal\n if (authToken) {\n let favouritesData = sessionStorage.getItem('favourites_data');\n favouritesData = favouritesData.replace('[', '');\n favouritesData = favouritesData.replace(']', '');\n favouritesData = favouritesData.split(',').map(Number);\n\n const favouriteTrackContainer = $(`.favourite-track-${trackVersionId}`);\n if (favouriteTrackContainer.hasClass('js-is-favourite-version')) {\n favouriteTrackContainer.removeClass('js-is-favourite-version');\n favouritesData = favouritesData.filter((fav) => fav !== trackVersionId);\n drip(\"Removed Track from Favorites\");\n } else {\n favouriteTrackContainer.addClass('js-is-favourite-version');\n favouritesData = [...favouritesData, trackVersionId];\n drip(\"Added Track to Favorites\");\n }\n\n // Update record in session storage.\n sessionStorage.setItem('favourites_data', JSON.stringify(favouritesData));\n\n\n return dispatch(() => {\n fetch(`${API}favourites/${trackVersionId}/tracks/${contextId}/version/context/toggle`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'X-Auth-Token': authToken || null,\n },\n })\n .then((res) => res.json())\n .catch((err) => err);\n });\n }\n\n return dispatch(addModal('playSignup', 'add_favourite'));\n };\n}\n\nexport function fetchPlaylist(playlistId) {\n const authKey = sessionStorage.getItem('auth_token');\n const guid = sessionStorage.getItem('customer_guid');\n\n return fetch(`${API}playlists/${playlistId}`, {\n method: 'GET',\n headers: {\n 'X-Auth-Token': authKey || null,\n 'X-GUID': guid || null,\n },\n }).then((res) => res.json()).catch((err) => err);\n}\n\nexport function addNewEngagement(type, trackId, contextId, versionId = false, browseType) {\n /*\n DR - Workaround to stop plays counting multiple times. Should also stop people spamming play/pause.\n */\n const lastEngagement = sessionStorage.getItem('last_enagement');\n const newEngagement = JSON.stringify({ type, trackId, contextId, versionId });\n\n sessionStorage.setItem('last_enagement', JSON.stringify({ type, trackId, contextId, versionId }));\n if (lastEngagement === newEngagement || contextId === -1) {\n return;\n }\n /*\n DR - End of workaround.\n */\n\n try {\n window.dataLayer.push({\n 'event': 'addNewEngagement',\n 'engagementType': type,\n 'engagementTrackId': trackId,\n 'engagementVersionId': versionId,\n 'engagementContextId': contextId\n });\n } catch(e) {}\n const endPoint = `${API}favourites/${type}/types/${trackId}/tracks/${contextId}/contexts/new`;\n\n return fetch(endPoint, {\n method: 'GET',\n credentials: 'include',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function removeTrack(playlistId, trackId, track) {\n return function (dispatch) {\n const authKey = sessionStorage.getItem('auth_token');\n // If there is no playlistId, presume it's a favourite track\n dispatch({\n type: 'DELETE_PLAYLIST_REQUEST',\n });\n if (playlistId) {\n return fetch(`${API}playlist/delete-playlist-track/${playlistId}/${trackId}`, {\n method: 'GET',\n headers: {\n 'X-Auth-Token': authKey || null,\n },\n credentials: 'include',\n }).then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error))\n .then(() => {\n dispatch(deleteTrack(trackId));\n }\n );\n }\n const contextId = track.current_context.id;\n const versionId = track.track_version[0].id;\n\n return fetch(`${API}favourites/${versionId}/tracks/${contextId}/version/context/toggle`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'X-Auth-Token': authKey || null,\n },\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then(() => {\n dispatch(deleteTrack(trackId));\n });\n };\n}\nexport const removeTrackStyle = (trackId, styles) => (dispatch) => new Promise((resolve) => {\n const authKey = sessionStorage.getItem('auth_token');\n dispatch({\n type: 'REMOVE_TRACK_FROM_STYLE_REQUEST',\n trackId,\n });\n return fetch(`${API}remove_style_from_track/${trackId}/[${styles}]`, {\n method: 'GET',\n headers: {\n 'X-Auth-Token': authKey || null,\n },\n credentials: 'include',\n })\n .then((res) => res.json())\n .then((res) => {\n if (res) {\n resolve(res);\n dispatch({\n type: 'REMOVE_TRACK_FROM_STYLE',\n trackId,\n });\n }\n })\n .catch((error) => console.log('An error occured.', error));\n});\nfunction deleteTrack(trackId) {\n return {\n type: 'DELETE_PLAYLIST_TRACK',\n trackId,\n };\n}\n\nexport function titleEdit(playlistId, title) {\n return function () {\n const authKey = sessionStorage.getItem('auth_token');\n return fetch(`${API}playlists/${playlistId}/titles/${btoa(title)}`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'X-Auth-Token': authKey || null,\n },\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n );\n };\n}\n\nexport function addExistingPlaylistTrack(trackId, versionId, playlistId, contextId) {\n const authKey = sessionStorage.getItem('auth_token');\n\n if (playlistId === 'Select A Playlist') {\n return;\n }\n\n console.log(\"addExistingPlaylistTrack\");\n\n drip(\"Added Track to Playlist\");\n return fetch(`${Config.BASE_API_URL}api/playlists/${trackId}/tracks/${versionId}/versions/${playlistId}/contexts/${contextId}`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'X-Auth-Token': authKey || null,\n },\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occurred.', error)\n );\n}\n\nexport function addNewPlaylistTrack(trackId, versionId, title, contextId) {\n const authKey = sessionStorage.getItem('auth_token');\n\n // We need to encode playlist titles as Symfony can't handle encoded forward slashes\n // https://github.com/laravel/framework/issues/22125\n const encodedTitle = encodeURIComponent(btoa(title));\n\n drip(\"Created New Playlist\");\n\n console.log(\"addNewPlaylistTrack\");\n\n return fetch(`${Config.BASE_API_URL}api/playlists/${trackId}/tracks/${versionId}/versions/${encodedTitle}/titles/${contextId}/context`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'X-Auth-Token': authKey || null,\n },\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n );\n}\n\n// New Favorites actions.\n// -----------------------------------------------------------------------------\nexport const loadFavorites = (favorites) => ({\n type: 'LOAD_FAVORITES',\n favorites,\n});\n\nexport const addToFavorites = (ID, contextID) => {\n // Update in server.\n const authToken = sessionStorage.getItem('auth_token');\n fetch(`${API}favourites/${ID}/tracks/${contextID}/version/context/toggle`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'X-Auth-Token': authToken || null,\n },\n });\n\n drip(\"Added Track to Favorites\");\n\n // Return to dispatch.\n return {\n type: 'ADD_TO_FAVORITES',\n ID,\n };\n};\n\nexport const removeFromFavorites = (ID, contextID) => {\n // Update in server.\n const authToken = sessionStorage.getItem('auth_token');\n fetch(`${API}favourites/${ID}/tracks/${contextID}/version/context/toggle`, {\n method: 'GET',\n credentials: 'include',\n headers: {\n 'X-Auth-Token': authToken || null,\n },\n });\n\n drip(\"Removed Track from Favorites\");\n\n // Return to dispatch.\n return {\n type: 'REMOVE_FROM_FAVORITES',\n ID,\n };\n};\n","import React from 'react';\n\nclass RecaptchaBranding extends React.Component {\n render() {\n return (\n \n This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.\n \n );\n }\n}\n\nexport default RecaptchaBranding;","import React, { Component, Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport CrossSVG from \"styles/svg-components/CrossSVG.js\";\nimport { connect } from 'react-redux';\nimport A from \"../../../components/A\";\nimport className from 'classnames';\nimport { removeLicense } from \"../../../actions/licenseAction\";\n\nclass GenerateAutoClearCodeButton extends Component {\n\n state = {\n copiedToClipboard: false,\n };\n\n componentWillUnmount() {\n this.props.onRemoveLicense();\n }\n\n copyToClipboard = () => {\n const el = document.getElementById('license-code');\n el.select();\n document.execCommand('copy');\n\n this.setState({\n copiedToClipboard: true\n })\n\n window.setTimeout(() => {\n this.setState({\n copiedToClipboard: false\n })\n }, 5000)\n }\n\n render() {\n const {\n getGeneratedLicenseCode,\n license,\n track,\n licenseId,\n isLicenseModal,\n isSubscriptionLicense,\n onRemoveModal,\n } = this.props;\n\n if (track.autoclear && track.autoclear.orfium_code) {\n license.downloadedTrackInfo.licenseCode = track.autoclear.orfium_code;\n }\n\n let licenseText = `“${ track.name || track.track_url.track_name }” licensed via Music Vine: `;\n\n if (license.downloadedTrackInfo.licenseCode) {\n licenseText += license.downloadedTrackInfo.licenseCode;\n }\n\n let autoClearContent = \"\";\n\n if (license.isGenerateLicenseCodeHasError) {\n let licenseHistoryUrl = '/customer/license-history/pay-per-use';\n\n if (isSubscriptionLicense) {\n licenseHistoryUrl = '/customer/license-history/subscription';\n }\n\n autoClearContent =

\n Sorry, something went wrong. Please wait a few minutes, and then check your License History page for your AutoClear code.\n

;\n } else if (!license.downloadedTrackInfo.licenseCode) {\n autoClearContent = \n } else if ( license.downloadedTrackInfo && license.downloadedTrackInfo.licenseCode ) {\n autoClearContent =\n
\n \n \n \n \n \n \n \n \n \n \n \n \n
\n Copied to clipboard!\n
\n
\n }\n\n return (\n
\n\n { autoClearContent }\n\n
\n );\n }\n}\n\nGenerateAutoClearCodeButton.propTypes = {\n onRemoveModal: PropTypes.func,\n getGeneratedLicenseCode: PropTypes.func,\n track: PropTypes.object,\n isSubscriptionLicense: PropTypes.bool,\n};\n\nGenerateAutoClearCodeButton.defaultProps = {\n onRemoveModal: () => { },\n getGeneratedLicenseCode: () => { },\n track: {},\n isLicenseModal: false,\n licenseId: \"\",\n isSubscriptionLicense: false,\n};\n\nconst mapStateToProps = (state) => ({\n license: state.get('license'),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onRemoveLicense: () => dispatch(removeLicense()),\n });\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(mapStateToProps, mapDispatchToProps)(GenerateAutoClearCodeButton);\n\n","import fetch from 'isomorphic-fetch';\nimport Config from '../constants';\nimport {conditionallyGetCdnApi} from \"./generalAction\";\n\nexport function fetchVocals() {\n return function (dispatch) {\n return fetch(`${conditionallyGetCdnApi()}vocals`, {\n method: 'GET',\n // mode: 'CORS',\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then((json) => {\n dispatch(receiveVocals(json));\n }\n );\n };\n}\n\nfunction receiveVocals(vocals) {\n return { type: 'ADD_VOCALS', vocals };\n}\n\nexport function fetchEnergies() {\n return function (dispatch) {\n return fetch(`${conditionallyGetCdnApi()}energies`, {\n method: 'GET',\n // mode: 'CORS',\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then((json) => {\n dispatch(receiveEnergies(json));\n }\n );\n };\n}\n\nfunction receiveEnergies(energies) {\n return { type: 'ADD_ENERGIES', energies };\n}\n\nexport function setNotFiltered() {\n return { type: 'NOT_FILTERED' };\n}\n\nexport function setFiltered() {\n return { type: 'FILTERED' };\n}\n\nexport function unSetAppliedFilters() {\n return { type: 'REMOVE_FILTERS_APPLIED' };\n}\n\nexport function setAppliedFilters(locationQuery) {\n return { type: 'ADD_FILTERS_APPLIED', locationQuery };\n}\n","import React from 'react';\nimport InlineSVG from 'svg-inline-react';\n\nclass Loader extends React.Component {\n render() {\n const assetLoader = `\n \n\n`;\n return (\n \n );\n }\n}\n\nexport default Loader;\n","// Set country action.\n// -----------------------------------------------------------------------------\nimport fetch from 'isomorphic-fetch';\nimport { API } from '../constants';\n\nexport const loadCountry = (country) => ({\n type: 'LOAD_COUNTRY_DATA',\n country,\n});","// New Favorites actions.\n// -----------------------------------------------------------------------------\nimport fetch from 'isomorphic-fetch';\nimport { API } from '../constants';\nimport { drip } from 'utils/drip';\n\nexport const loadFollowing = (following) => ({\n type: 'LOAD_FOLLOWING_DATA',\n following,\n});\n\nexport const followArtist = (artistId) => {\n // Update in server.\n const authToken = sessionStorage.getItem('auth_token');\n drip(\"Followed Artist\");\n fetch(`${API}artist/${artistId}/follow`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n });\n\n // Return to dispatch.\n return {\n type: 'FOLLOW_ARTIST',\n ID: artistId,\n };\n};\n\nexport const unfollowArtist = (artistId) => {\n // Update in server.\n const authToken = sessionStorage.getItem('auth_token');\n drip(\"Unfollowed Artist\");\n fetch(`${API}artist/${artistId}/unfollow`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authToken || null,\n },\n });\n\n // Return to dispatch.\n return {\n type: 'UNFOLLOW_ARTIST',\n ID: artistId,\n };\n};\n","import fetch from 'isomorphic-fetch';\nimport Config, {\n API,\n} from '../constants';\nimport {conditionallyGetCdnApi} from \"./generalAction\";\n\nexport function fetchTrackCount() {\n return fetch(`${API}tracks`, {\n method: 'GET',\n // mode: 'CORS',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchTrack(artistId, trackId) {\n\n let apiUrl = `${conditionallyGetCdnApi()}tracks/${artistId}/artists/${trackId}/track`;\n\n if (!trackId) {\n apiUrl = `${conditionallyGetCdnApi()}tracks/${artistId}`;\n }\n\n return fetch(apiUrl, {\n method: 'GET',\n // mode: 'CORS',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchPlaylistTracks(playlistId, page = 1) {\n return function (dispatch) {\n dispatch(requestTracks());\n return fetch(`${conditionallyGetCdnApi()}tracks/${playlistId}/playlists/${page}`, {\n method: 'GET',\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then((json) => {\n dispatch(\n receiveTracks(json),\n dispatch(receiveTracksIds(page, json.result_ids))\n );\n });\n };\n}\n\nexport function fetchFavouriteTracks(page = 1) {\n const authKey = sessionStorage.getItem('auth_token');\n return function (dispatch) {\n dispatch(requestTracks());\n return fetch(`${conditionallyGetCdnApi()}tracks/${page}/favourite`, {\n method: 'GET',\n headers: {\n 'X-Auth-Token': authKey || null,\n },\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then((json) => {\n dispatch(receiveTracks(json), dispatch(receiveTracksIds(page, json.result_ids)));\n }\n );\n };\n}\n\nexport function setTracks(json) {\n return function (dispatch) {\n dispatch(requestTracks());\n dispatch(receiveTracks(json))\n }\n}\n\nexport function fetchTracks(type, id, energy, vocal, sort, duration, styleFilters, page, limit = -1) {\n if (page > 1) {\n fetchAllTracks(type, id, energy, vocal, sort, duration, styleFilters, page, [], limit, true );\n return;\n }\n return function (dispatch) {\n dispatch(requestTracks());\n return fetch(`${conditionallyGetCdnApi()}tracks/${type}/types/${id}/ids/weighted`, {\n method: 'GET',\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then(\n (response) => {\n if (response.error) {\n throw new Error('Something failed');\n } else {\n return response;\n }\n }\n )\n .then(\n (json) => {\n for (var i = 0; i < json.results.length; i++) {\n json.results[i].current_engagement_group = json.result_ids[i].group;\n }\n\n dispatch(\n receiveTracks(json),\n dispatch(\n receiveTracksIds(1, json.result_ids)),\n dispatch(moreTracksLoading(true)),\n dispatch(receiveAllTracksIds(json.result_ids)),\n dispatch(fetchAllTracks(type, id, energy, vocal, sort, duration, styleFilters, page, json.result_ids, limit, true ))\n );\n }\n )\n .catch((e) => {\n console.log(e);\n $('.circle-loader').hide();\n $('.music-loading-message-title').text('Something went wrong. Please reload the page or try again later.');\n });\n };\n}\n\nexport function fetchAllTracks(type, id, energy, vocal, sort, duration, styleFilters, page, excluded = [], limit = -1, merge = false) {\n let JsonStyleFilters = [];\n if (styleFilters != null) {\n JsonStyleFilters = JSON.stringify(styleFilters);\n }\n let JsonExcluded = [];\n if (excluded != null) {\n for (var i = 0; i < excluded.length; i++) {\n JsonExcluded[i] = [];\n JsonExcluded[i][0] = parseInt(excluded[i].id);\n JsonExcluded[i][1] = parseInt(excluded[i].group);\n }\n JsonExcluded = JSON.stringify(JsonExcluded);\n }\n\n return function (dispatch) {\n if (!merge) {\n dispatch(requestTracks());\n }\n\n /* slowing down the second call for testing purposes */\n // return window.setTimeout( () => {\n /* slowing down the second call for testing purposes */\n return fetch(`${conditionallyGetCdnApi()}tracks/${type}/types/${id}/ids/${energy}/energies/${vocal}/vocals/${sort}/sorts/${duration}/durations/${JsonStyleFilters}/stylefilters/${limit}/limits/${JsonExcluded}/excludes/${page}`, {\n method: 'GET',\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then(\n (response) => {\n if (response.error) {\n throw new Error('Something failed');\n } else {\n return response;\n }\n }\n )\n .then(\n (json) => {\n dispatch(\n receiveTracks(json),\n dispatch(moreTracksLoading(false)),\n dispatch(receiveTracksIds(page, json.result_ids))\n );\n }\n )\n .catch((e) => {\n console.log(e);\n $('.circle-loader').hide();\n $('.music-loading-message-title').text('Something went wrong. Please reload the page or try again later.');\n });\n\n /* end of slowing down the second call for testing purposes */\n // }, 10000 );\n /* end of slowing down the second call for testing purposes */\n };\n}\n\nexport function fetchSimilarTracks(artistId, trackId) {\n return function (dispatch) {\n dispatch(requestTracks());\n\n if (!trackId) {\n trackId = artistId;\n artistId = 0;\n }\n\n return fetch(`${conditionallyGetCdnApi()}searches/${artistId}/artists/${trackId}/track/similar`, {\n method: 'GET',\n })\n .then(\n (response) => response.json(),\n (error) => console.log('An error occured.', error)\n )\n .then(\n (json) => {\n dispatch(receiveSimilarTracks(json), dispatch(receiveAllSimilarTracksIds(json.result_ids)), dispatch(receiveSimilarTracksIds(json.result_ids)));\n }\n );\n };\n}\n\nexport function shouldFetchTopTracks(energy, vocal, sort, duration, styleFilters, page) {\n let shouldFetchTopTracks = true;\n\n if (\n /* Don't return top tracks for anything other than the first page */\n page !== 1\n /* Or for any sorting other than Relevance */\n || sort !== \"Relevance\"\n /* Or with any filters applied */\n || energy !== 0 || vocal !== 0 || duration !== 0 || styleFilters.length > 0\n ) {\n shouldFetchTopTracks = false;\n }\n\n return shouldFetchTopTracks;\n}\n\n// ACTIONS\nexport function addPageTrack(track) {\n return { type: 'ADD_PAGE_TRACKS', track };\n}\n\nexport function addPageTracksId(trackId) {\n return { type: 'ADD_PAGE_TRACK_IDS', trackId };\n}\n\nexport function addAllPageTracksId(trackId) {\n return { type: 'ADD_ALL_PAGE_TRACK_IDS', trackId };\n}\n\nexport function addPageTrackWave(waveform) {\n return { type: 'ADD_PAGE_TRACKS_WAVE', waveform };\n}\n\n\nfunction receiveSimilarTracks(json) {\n const tracks = Object.assign({}, json);\n delete tracks.result_ids;\n return { type: 'RECEIVE_SIMILAR_TRACKS', tracks };\n}\n\nfunction receiveSimilarTracksIds(trackIds) {\n return { type: 'RECEIVE_SIMILAR_TRACK_IDS', trackIds };\n}\n\nfunction receiveAllSimilarTracksIds(tracks) {\n return { type: 'RECEIVE_ALL_SIMILAR_TRACK_IDS', trackIds: tracks };\n}\n\nfunction requestTracks() {\n return { type: 'REQUEST_TRACKS' };\n}\n\nfunction moreTracksLoading(isFetchingMore) {\n return { type: 'MORE_TRACKS_LOADING', isFetchingMore: isFetchingMore };\n}\n\nfunction receiveTracks(json) {\n const tracks = Object.assign({}, json);\n return { type: 'RECEIVE_TRACKS', tracks };\n}\n\nfunction receiveTracksIds(page, tracks) {\n const start = (page * 30) - 30;\n const end = start + 30;\n const trackIds = tracks.slice(start, end);\n return { type: 'RECEIVE_TRACK_IDS', trackIds };\n}\n\nfunction receiveAllTracksIds(tracks) {\n return { type: 'RECEIVE_ALL_TRACK_IDS', trackIds: tracks };\n}\n\nfunction receiveVersions(versions) {\n return { type: 'ADD_VERSIONS', versions };\n}\n\nexport function addVersions(versions) {\n return { type: 'ADD_VERSIONS', versions };\n}\n\n","// Set currency action.\n// -----------------------------------------------------------------------------\n\nexport const loadCurrency = (currency) => ({\n type: 'LOAD_CURRENCY_DATA',\n currency,\n});","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Spinner extends React.Component {\n render() {\n const assetSpinner = `\n \n \n`;\n return (\n \n );\n }\n}\n\nexport default Spinner;","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Twitter extends React.Component {\n render() {\n const assetTwitter = `\n \n `;\n\n return (\n \n );\n }\n}\n\nexport default Twitter;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass AssetAddToPlaylist extends React.Component {\n render() {\n const assetAddToPlaylist = `\n \n`;\n return (\n \n );\n }\n}\n\nexport default AssetAddToPlaylist;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Pause extends React.Component {\n render() {\n const Pause = `\n \n`;\n return (\n \n );\n }\n}\n\nexport default Pause;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Heart extends React.Component {\n render() {\n const Heart = ``;\n return (\n \n );\n }\n}\n\nexport default Heart;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Facebook extends React.Component {\n render() {\n const assetFacebook = `\n`;\n return (\n \n );\n }\n}\n\nexport default Facebook;\n","import { Link } from 'react-router';\nimport styled from 'styled-components';\n\nexport default styled(Link)`\n`;\n","import React from \"react\";\n\nclass LicenseRowChevron extends React.Component {\n render() {\n return (\n \n );\n }\n}\n\nexport default LicenseRowChevron;\n","import React from 'react';\nimport LicenseLink from './LicenseLink';\nimport A from '../../../components/A';\nimport CrossLight from 'styles/svg-components/CrossLight.js';\nimport { dripProductView } from 'utils/drip';\nimport {getImgixUrl} from \"../../../utils/helpers\";\n\nexport default class Summary extends React.Component {\n constructor(props) {\n super(props);\n }\n\n componentDidUpdate(prevProps) {\n // Typical usage (don't forget to compare props):\n if (this.props.total !== prevProps.total && this.props.total > 0) {\n dripProductView(\n `${this.props.track.id}-${this.props.currentLicense.name.replace(/ /g, '')}`,\n `${this.props.track.name} by ${this.props.track.artist.name}`,\n \"Pay-Per-Use\",\n this.props.total,\n this.props.currencyCode,\n this.props.track\n );\n }\n }\n\n render() {\n const coverages = [];\n let numEdits = null;\n let total = null;\n let licenseDescription = null;\n\n if (this.props.currentLicense) {\n licenseDescription = this.props.currentLicense.description;\n if (this.props.currencyCode == 'GBP') {\n licenseDescription = licenseDescription.replace('$500', '£350');\n } else if (this.props.currencyCode == 'EUR') {\n licenseDescription = licenseDescription.replace('$500', '€400');\n } else if (this.props.currencyCode == 'CAD' || this.props.currencyCode == 'AUD') {\n licenseDescription = licenseDescription.replace('$500', '$600');\n }\n }\n\n\n if (this.props.numEdits) {\n numEdits = (`${this.props.numEdits} Video Edit${ this.props.numEdits > 1 ? 's' : '' }`);\n if (this.props.currentLicense.id == '2') {\n numEdits = (`${this.props.numEdits} Episode${ this.props.numEdits > 1 ? 's' : '' }`);\n } else if (this.props.currentLicense.id == '3') {\n numEdits = (`${this.props.numEdits} Video${ this.props.numEdits > 1 ? 's' : '' } / Episode${ this.props.numEdits > 1 ? 's' : '' }`);\n } else if (this.props.currentLicense.id == '4') {\n numEdits = (`${this.props.numEdits} Production${ this.props.numEdits > 1 ? 's' : '' }`);\n } else if (this.props.currentLicense.id == '5') {\n numEdits = (`${this.props.numEdits} Edit${ this.props.numEdits > 1 ? 's' : '' }`);\n } else if (this.props.currentLicense.id == '6') {\n numEdits = (`${this.props.numEdits} Production${ this.props.numEdits > 1 ? 's' : '' }`);\n }\n }\n\n if (this.props.coverages) {\n Object.entries(this.props.coverages).forEach((coverage) => {\n coverages.push(`${coverage[0]}, `);\n });\n }\n\n if (typeof this.props.total !== 'undefined' && this.props.total > 0) {\n let displayTotal = Math.ceil(parseFloat(this.props.total)).toFixed(2).split('.');\n\n displayTotal[0] = parseInt(displayTotal[0]).toLocaleString('en-US');\n\n total = (
\n

Total: {this.props.currencySymbol}{displayTotal[0]}.{displayTotal[1]}{ this.props.currencySymbol == '$' && {this.props.currencyCode}}

\n
);\n }\n\n return (\n
\n
\n
\n \n
\n
\n
\n
\n
\n {this.props.track.artist &&\n {this.props.track.artist.name}\n }\n
\n
\n
\n

{this.props.track.name}

\n {this.props.track.artist &&\n {this.props.track.artist.name}\n }\n
\n
\n
\n
\n\n
\n \n \n
\n\n {this.props.currentLicense && licenseDescription &&\n
\n {this.props.currentLicense.name}\n {licenseDescription}\n
\n
\n }\n {this.props.scale &&\n
\n

{this.props.scale.size} Scale:

\n {this.props.getCurrencySpecificScaleText(this.props.scale)}\n
\n }\n {this.props.coverages &&\n
\n

Coverage:

\n {coverages}{numEdits}\n\n
\n }\n {this.props.previewLicenseLink &&\n this.props.previewLicenseLink\n }\n {this.props.coverages &&\n
\n }\n
\n {total}\n {this.props.checkoutButton &&\n this.props.checkoutButton\n }\n {this.props.cartButton &&\n this.props.cartButton\n }\n
\n {this.props.hasSuppressedSubscription && !this.props.forcePayPerUse &&\n Looking for subscriptions?\n }\n
\n );\n }\n}\n","import React from 'react';\nimport LicenseLink from './LicenseLink';\nimport LicenseRowChevron from './LicenseRowChevron';\nimport A from '../../../components/A';\nimport Summary from './Summary';\nimport CrossLight from 'styles/svg-components/CrossLight.js';\nimport Spinner from 'styles/svg-components/Spinner.js';\nimport { API } from '../../../constants';\n\nexport default class Type extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n notification: this.props.notification\n };\n\n this.handleTypeSelect = this.handleTypeSelect.bind(this);\n this.mouseEnter = this.mouseEnter.bind(this);\n this.mouseLeave = this.mouseLeave.bind(this);\n this.handleContinue = this.handleContinue.bind(this); \n\n this.promotionalAsset = 'https://cdn.musicvine.com/images/icons/license-type-01.svg';\n this.filmAsset = 'https://cdn.musicvine.com/images/icons/license-type-02.svg';\n this.vlogAsset = 'https://cdn.musicvine.com/images/icons/license-type-03.svg';\n this.lifeAsset = 'https://cdn.musicvine.com/images/icons/license-type-04.svg';\n this.nonProfitAsset = 'https://cdn.musicvine.com/images/icons/license-type-05.svg';\n this.studentProjectAsset = 'https://cdn.musicvine.com/images/icons/license-type-06.svg';\n }\n\n handleContinue() {\n this.setState({ notification: false });\n }\n\n handleTypeSelect(e) {\n this.props.onTypeSelect(e.currentTarget.id);\n }\n\n mouseEnter(e) {\n const activeDescription = $('.active-description');\n const colItem = $(e.target).closest('.license-select__col');\n const colItemDataVal = colItem.attr('data-license');\n const license = this.props.licenses[colItemDataVal];\n let licenseDescription = license.description;\n if (this.props.currencyCode == 'GBP') {\n licenseDescription = licenseDescription.replace('$500', '£350');\n } else if (this.props.currencyCode == 'EUR') {\n licenseDescription = licenseDescription.replace('$500', '€400');\n } else if (this.props.currencyCode == 'CAD' || this.props.currencyCode == 'AUD') {\n licenseDescription = licenseDescription.replace('$500', '$600');\n }\n\n $('.license-select__sub').text(license.name);\n $('.license__text').text(licenseDescription);\n\n $('.license__desc').each(function (i, item) {\n const licenseDescVal = $(this).attr('data-license');\n\n if (colItemDataVal === licenseDescVal) {\n $(this).addClass('active');\n }\n });\n }\n\n mouseLeave(e) {\n $('.license-select__sub').text('');\n $('.license__text').text('');\n }\n\n render() {\n let currencyCode = '';\n if (this.props.currencyIsAmbiguous) {\n currencyCode = ` ${this.props.currencyCode}`;\n }\n\n return (\n
\n
\n

Select License Type

\n
\n {this.state.notification &&\n
\n
\n

Heads Up!

\n

A license for '{this.props.track.name}' is already in your cart.

\n
\n \n \n
\n
\n
\n }\n\n {this.props.licenses && this.props.licenses.map((license, index) => (\n
\n
\n \n
\n
\n { index === 0 &&\n \"\"\n }\n { index === 1 &&\n \"\"\n }\n { index === 2 &&\n \"\"\n }\n { index === 3 &&\n \"\"\n }\n { index === 4 &&\n \"\"\n }\n { index === 5 &&\n \"\"\n }\n
\n
\n {license.name}\n
\n
\n
\n
\n \n
\n
\n\n
\n
\n
\n )) } \n\n { this.props.licenses.length >= 1 &&\n
\n

Don't see what you need? Request a Custom License

\n
\n }\n { this.props.licenses.length < 1 &&\n
\n }\n
\n
\n \n
\n );\n }\n}\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass AssetPaginationPrevSecondary extends React.Component {\n render() {\n const assetPaginationPrevSecondary = `\n`;\n return (\n \n );\n }\n}\n\nexport default AssetPaginationPrevSecondary;\n","import React from 'react';\nimport LicenseLink from './LicenseLink';\nimport LicenseRowChevron from './LicenseRowChevron';\nimport Summary from './Summary';\nimport A from '../../../components/A';\nimport AssetPaginationPrevSecondary from 'styles/svg-components/AssetPaginationPrevSecondary.js';\nimport CrossLight from 'styles/svg-components/CrossLight.js';\n\nexport default class Scale extends React.Component {\n constructor(props) {\n super(props);\n this.handleScaleSelect = this.handleScaleSelect.bind(this);\n this.licenseClose = this.licenseClose.bind(this);\n this.showProjectScale = this.showProjectScale.bind(this);\n this.hideProjectScale = this.hideProjectScale.bind(this);\n }\n\n handleScaleSelect(e) {\n this.props.onScaleSelect(e.currentTarget.id);\n }\n\n licenseClose() {\n $('.license-select').addClass('closed');\n }\n\n showProjectScale(e) {\n const scaleId = $(e.target).closest('a').attr('id');\n\n const theme = $('body').attr('id');\n }\n\n hideProjectScale() {\n $('.active-project-description').html('');\n }\n\n render() {\n let pageTitle = 'Confirm Project Scale';\n let isVlogLicense = this.props.currentLicense.id == '3';\n\n if ( isVlogLicense ) {\n pageTitle = 'Confirm Channel Scale';\n }\n\n let currencyCodeDisplay = '';\n if (this.props.currencyIsAmbiguous && !isVlogLicense) {\n currencyCodeDisplay = this.props.currencyCode;\n }\n\n return (\n
\n
\n\n
\n
\n \n
\n \n
\n
\n
\n\n

{pageTitle}

\n\n {/* For each LicenseScale display details and use handleScaleSelect function to deal with selection */}\n {this.props.currentLicense.scales && this.props.currentLicense.scales.map((scale, index) => (\n \n
\n
\n
\n
\n
\n { index === 0 &&\n S\n }\n { index === 1 &&\n L\n }\n { index === 2 &&\n XL\n }\n
\n
\n {scale.size}\n {this.props.getCurrencySpecificScaleText(scale)}{ currencyCodeDisplay != '' && {currencyCodeDisplay}}\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n )) }\n
\n { (this.props.currentLicense.id === 1 || this.props.currentLicense.id === 2 || this.props.currentLicense.id === 5 ) && \n
\n

Working on a larger production?

\n

We provide custom licenses tailored to the requirements of larger scale productions. Please use our custom license form to make an inquiry.

\n
\n }\n { isVlogLicense && \n
\n

Heads up! Channel verification required.

\n

This license requires verification of your YouTube channel / podcast web page. This info will be requested at checkout.

\n
\n }\n
\n \n
\n );\n }\n}\n","import React, { Fragment } from 'react';\nimport LicenseLink from './LicenseLink';\nimport A from '../../../components/A';\nimport CrossLight from 'styles/svg-components/CrossLight.js';\n\nexport default class MobileCheckoutButton extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n let total = null;\n\n if (typeof this.props.total !== 'undefined' && this.props.total > 0) {\n if (this.props.currencyIsAmbiguous) {\n total = (
\n

Total: {this.props.currencySymbol}{Math.ceil(parseFloat(this.props.total)).toFixed(2)} {this.props.currencyCode}

\n
);\n } else {\n total = (
\n

Total: {this.props.currencySymbol}{Math.ceil(parseFloat(this.props.total)).toFixed(2)}

\n
);\n }\n }\n\n return (\n
\n {total}\n {this.props.checkoutButton &&\n this.props.checkoutButton\n }\n {this.props.cartButton &&\n this.props.cartButton\n }\n
\n );\n }\n}\n","import React from 'react';\n\nexport default class Option extends React.Component {\n constructor(props) {\n super(props);\n this.handleRadioSelect = this.handleRadioSelect.bind(this);\n }\n\n componentDidMount() {\n if (this.props.index == 0) {\n $(`.option-radio-${this.props.option.id}`).click();\n }\n }\n\n handleRadioSelect(e) {\n this.props.onRadioSelect(e);\n }\n\n render() {\n const radioStyle = {\n display: 'block',\n };\n\n return (\n
\n
\n
\n \n \n
\n
\n );\n }\n}\n","import React from 'react';\nimport Option from './Option';\n\n\nexport default class Options extends React.Component {\n\n constructor(props) {\n super(props);\n\n this.state = { checked: false }\n\n this.handleCheckSelect = this.handleCheckSelect.bind(this);\n this.handleRadioSelect = this.handleRadioSelect.bind(this);\n }\n\n handleCheckSelect(e) {\n this.props.onCheckSelect(e.currentTarget);\n this.setState({\n checked: !this.state.checked\n })\n }\n\n handleRadioSelect(e) {\n this.props.onCheckSelect(e.currentTarget);\n }\n\n render() {\n const displayOptions = {\n display: 'none',\n };\n let price = null;\n const options = [];\n\n\n // For web option, displays only the single option for whether to include web coverage\n if (this.props.options.length == 1) {\n price = { this.props.currentLicense.id === 3 ? '+' : '' }{this.props.currencySymbol}{Math.ceil(parseFloat(this.props.subTotal * this.props.options[0].multiplier * this.props.currencyValue))}{ this.props.currencyIsAmbiguous && {this.props.currencyCode}};\n options.push();\n }\n\n // For all other options, displays multiple options but only if the parent option has been chosen\n this.props.options.forEach((option, index) => {\n if (this.props.options.length > 1 && this.props.isChecked) {\n options.push();\n }\n });\n\n return (\n
\n
\n
\n \n {/* Displays the options created at the top of the render method */}\n {options}\n
\n
\n
\n );\n }\n}\n","import React, { Fragment } from 'react';\nimport LicenseLink from './LicenseLink';\nimport Summary from './Summary';\nimport { withRouter } from 'react-router';\nimport MobileCheckoutButton from './MobileCheckoutButton';\nimport ReactBootstrapSlider from 'react-bootstrap-slider';\nimport Options from './Options';\nimport AssetPaginationPrevSecondary from 'styles/svg-components/AssetPaginationPrevSecondary.js';\nimport CrossLight from 'styles/svg-components/CrossLight.js';\nimport Config from '../../../constants';\nimport className from 'classnames';\n\nclass Coverage extends React.Component {\n constructor(props) {\n super(props);\n let subTotal = 0;\n let currencySubTotal = 0;\n if (this.props.direct || this.props.currentLicense.id == '3') {\n subTotal = this.props.subTotal;\n currencySubTotal = this.props.currencySubTotal;\n }\n\n const coverages = {};\n switch (this.props.currentLicense.id) {\n case 3:\n coverages[['Web & Podcast']] = { id: '16', multiplier: '0', option_name: 'Web & Podcast' };\n break;\n case 4:\n coverages[['Web & Personal']] = { id: '17', multiplier: '0', option_name: 'Web & Personal' };\n break;\n case 6:\n coverages[['Web & Course']] = { id: '18', multiplier: '0', option_name: 'Web & Course' };\n break;\n }\n\n this.state = {\n currencySubTotal,\n total: currencySubTotal,\n coverageTotal: currencySubTotal,\n checkout: this.props.checkout,\n numEdits: 1,\n coverages,\n coverageParents: {},\n currentValue: 1,\n checkoutButtonActive: '',\n };\n\n this.changeValue = this.changeValue.bind(this);\n this.slideStop = this.slideStop.bind(this);\n this.handleAddToCart = this.handleAddToCart.bind(this);\n this.handlePreviewLicense = this.handlePreviewLicense.bind(this);\n this.handleCheckSelect = this.handleCheckSelect.bind(this);\n this.displayCheckout = this.displayCheckout.bind(this);\n }\n\n handleCheckSelect(target) {\n const coverages = this.state.coverages;\n const coverageParents = this.state.coverageParents;\n const name = target.getAttribute('data-option-name');\n const id = target.getAttribute('data-id');\n const option_name = target.getAttribute('data-option-name');\n let multiplier = false;\n\n if (target.getAttribute('data-length') === '1') {\n multiplier = target.getAttribute('data-multiplier');\n } else if (target.getAttribute('data-length') === '-1') {\n multiplier = target.getAttribute('data-multiplier');\n }\n\n if (target.getAttribute('data-length') == 1 || target.getAttribute('data-length') == '-1') {\n if (target.getAttribute('data-parent-name')) {\n const parentName = target.getAttribute('data-parent-name');\n\n // If an option with a parent has been selected, make sure any previously selected children have been removed\n Object.entries(this.props.currentLicense.coverages).forEach((parentCoverage) => {\n if (parentCoverage[1].name == parentName) {\n Object.entries(parentCoverage[1].options).forEach((option) => {\n if (coverages[[option[1].full_display_name]] || coverages[[option[1].full_display_name]] == false) {\n delete coverages[[option[1].full_display_name]];\n }\n });\n }\n });\n }\n\n if (coverages[[name]] || coverages[[name]] == false) {\n delete coverages[[name]];\n this.props.drip('Removed License Coverage', option_name);\n } else {\n coverages[[name]] = { id, multiplier, option_name };\n this.props.drip('Selected License Coverage', option_name);\n }\n } else if (coverageParents[[name]] || coverageParents[[name]] == false) {\n delete coverageParents[[name]];\n\n // If an option with a parent has been selected, make sure any previously selected children have been removed\n const parentName = name;\n Object.entries(this.props.currentLicense.coverages).forEach((parentCoverage) => {\n if (parentCoverage[1].name == parentName) {\n Object.entries(parentCoverage[1].options).forEach((option) => {\n if (coverages[[option[1].full_display_name]] || coverages[[option[1].full_display_name]] == false) {\n delete coverages[[option[1].full_display_name]];\n this.props.drip('Removed License Coverage', option[1].full_display_name);\n }\n });\n }\n });\n } else {\n coverageParents[[name]] = true;\n }\n\n\n this.displayCheckout(coverages);\n }\n\n displayCheckout(coverages) {\n // Calculate total, coverageTotal and whether to display checkout button based upon what's been selected and license type\n let coverageTotal = Math.ceil(this.state.currencySubTotal);\n let currencyCoverageTotal = Math.ceil(this.state.currencySubTotal);\n let active = false;\n\n Object.values(coverages).forEach((coverage) => {\n coverageTotal += Math.ceil((coverage.multiplier * this.state.currencySubTotal));\n currencyCoverageTotal += Math.ceil((coverage.multiplier * this.props.subTotal) * this.props.currencyValue);\n active = true;\n });\n\n coverageTotal = currencyCoverageTotal;\n\n const numEdits = this.state.numEdits;\n let total = currencyCoverageTotal;\n let currencyTotal = currencyCoverageTotal;\n if (numEdits > 1) {\n let extra = total * this.props.currentLicense.edit.base;\n let currencyExtra = currencyTotal * this.props.currentLicense.edit.base;\n\n extra *= (numEdits - 1);\n currencyExtra *= (numEdits - 1);\n if (numEdits > 2) {\n extra *= (1 - (this.props.currentLicense.edit.discount * (numEdits - 2)));\n currencyExtra *= (1 - (this.props.currentLicense.edit.discount * (numEdits - 2)));\n }\n total += extra;\n currencyTotal += currencyExtra;\n }\n\n if (this.props.currentLicense.id == '3' || this.props.direct || active) {\n if (this.props.currentLicense.id == 4 || this.props.currentLicense.id == 6) {\n this.setState({ checkout: true, total, coverageTotal, coverages });\n } else {\n this.setState({ checkout: true, total, coverageTotal, coverages });\n }\n } else {\n this.setState({ checkout: false, total, coverageTotal, coverages });\n }\n }\n\n changeValue(e) {\n // Update total based upon number of edits chosen\n let total = Math.ceil(this.state.coverageTotal);\n const numEdits = e.target.value;\n if (numEdits > 1) {\n let extra = total * this.props.currentLicense.edit.base;\n\n extra *= (numEdits - 1);\n if (numEdits > 2) {\n extra *= (1 - (this.props.currentLicense.edit.discount * (numEdits - 2)));\n }\n total += extra;\n }\n\n if (this.props.currentLicense.id == 4 || this.props.currentLicense.id == 6) {\n this.setState({ total, numEdits, currentValue: numEdits });\n } else {\n this.setState({ total, numEdits, currentValue: numEdits });\n }\n }\n\n slideStop() {\n }\n\n /**\n * TODO: this.props.track.id isn't defined when the License select modal is opened from the player\n */\n handleAddToCart(e) {\n const cartItem = {};\n\n this.setState({\n isValidating: true,\n });\n\n\n cartItem[0] = {\n trackId: this.props.track.id,\n licenseId: this.props.currentLicense.id,\n scaleId: this.props.scale.id,\n numEdits: this.state.numEdits,\n coverages: this.state.coverages,\n total: this.props.total,\n };\n\n let redirectToCheckout = false;\n if (e.target.id == 'checkout') {\n redirectToCheckout = true;\n this.props.drip('License Modal', 'Clicked Checkout');\n } else {\n this.props.drip('License Modal', 'Clicked Add to Cart');\n }\n\n // api/checkout/basket/add-basket-track/16?license_id=6&license_scale_id=5&license_coverage_option_ids[]=3&license_coverage_option_ids[]=4&license_coverage_option_ids[]=1&num_edits=3\n let path = `${Config.API}checkout/basket/add-basket-track/${cartItem[0].trackId}?license_id=${cartItem[0].licenseId}&license_scale_id=${cartItem[0].scaleId}&num_edits=${cartItem[0].numEdits}`;\n for (const key in cartItem[0].coverages) {\n path = `${path}&license_coverage_option_ids[]=${cartItem[0].coverages[key].id}`;\n }\n const authKey = sessionStorage.getItem('auth_token');\n return fetch(path, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authKey,\n 'X-GUID': sessionStorage.getItem('customer_guid') || null,\n },\n credentials: 'same-origin',\n // mode: 'CORS',\n })\n .then((res) => {\n // Update the basket count\n let basketCount = parseInt(sessionStorage.getItem('basket_count'));\n sessionStorage.setItem('basket_count', basketCount += 1);\n $('.cart-total-number-text').text(sessionStorage.getItem('basket_count'));\n\n // Update the basket_track_ids\n const basketTrackIds = Object.assign([], this.props.basketTrackIdsArray);\n basketTrackIds.push(this.props.track.id);\n sessionStorage.setItem('basket_track_ids', JSON.stringify(basketTrackIds));\n\n if (redirectToCheckout) {\n // basket pick-up on the other side is now handled by cookies.\n // const redirectPath = `${Config.BASE_URL}checkout/basket`;\n\n // if (sessionStorage.getItem('customer_guid')) {\n // redirectPath = `http://musicvine.com/checkout/basket?guid=${sessionStorage.getItem('customer_guid')}`;\n // } else if (sessionStorage.getItem('auth_token')) {\n // redirectPath = `http://musicvine.com/checkout/basket?auth_token=${sessionStorage.getItem('auth_token')}`;\n // } else {\n // redirectPath = 'http://musicvine.com/checkout/basket';\n // }\n this.props.onRemoveLicense(true);\n return this.props.router.push('/checkout/cart');\n }\n this.setState({\n isValidating: false,\n });\n\n // Close the modal\n this.props.onRemoveLicense(true);\n\n\n return res.json();\n })\n .catch((err) => log(err));\n }\n\n /**\n * TODO: this.props.track.id isn't defined when the License select modal is opened from the player\n */\n handlePreviewLicense(e) {\n const cartItem = {};\n cartItem[0] = {\n trackId: this.props.track.id,\n licenseId: this.props.currentLicense.id,\n scaleId: this.props.scale.id,\n numEdits: this.state.numEdits,\n coverages: this.state.coverages,\n total: this.props.total,\n };\n\n this.props.drip('Downloaded Preview License');\n\n // api/checkout/basket/preview-license-agreement/16?license_id=6&license_scale_id=5&license_coverage_option_ids[]=3&license_coverage_option_ids[]=4&license_coverage_option_ids[]=1&num_edits=3\n let path = `${Config.API}checkout/basket/preview-license-agreement/${cartItem[0].trackId}?license_id=${cartItem[0].licenseId}&license_scale_id=${cartItem[0].scaleId}&num_edits=${cartItem[0].numEdits}`;\n for (const key in cartItem[0].coverages) {\n path = `${path}&license_coverage_option_ids[]=${cartItem[0].coverages[key].id}`;\n }\n return window.open(path);\n }\n\n render() {\n let previewLicenseLink = null;\n let checkoutButton = null;\n let cartButton = null;\n\n if (this.state.checkout) {\n previewLicenseLink = (Preview License);\n checkoutButton = (\n Checkout\n );\n cartButton = (\n Add to Cart\n );\n }\n\n const SliderStyle = {\n padding: '40px',\n };\n\n let editsText = 'No. Video Edits';\n let editsDescription = 'Cover multiple edits of the same production.';\n if (this.props.currentLicense.id == '2') {\n editsText = 'No. Episodes';\n editsDescription = 'Cover multiple episodes within a single series.';\n } else if (this.props.currentLicense.id == '3') {\n editsText = 'No. Videos / Episodes';\n editsDescription = 'Cover multiple episodes within a single channel/series.';\n } else if (this.props.currentLicense.id == '4') {\n editsText = 'No. Productions';\n editsDescription = 'Cover multiple productions.';\n } else if (this.props.currentLicense.id == '5') {\n editsText = 'No. Edits';\n } else if (this.props.currentLicense.id == '6') {\n editsText = 'No. Productions';\n editsDescription = 'Cover multiple productions.';\n }\n\n let pageTitle = 'Select Coverage';\n if (this.props.currentLicense.id == '3' || this.props.currentLicense.id == '4' || this.props.currentLicense.id == '6') {\n pageTitle = 'Coverage Add-Ons';\n } \n return (\n \n
\n
\n
\n
\n \n
\n \n
\n
\n
\n

{pageTitle}

\n
\n {/* For each LicenseCoverage display options and set methods to deal with selection */}\n {this.props.currentLicense.coverages && this.props.currentLicense.coverages.map((coverage, index) => (\n \n )) }\n
\n
\n {/* Row */}\n
\n
\n {editsText}\n
\n
\n
\n {editsDescription}\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n
\n \n
\n \n
\n );\n }\n}\n\nexport default withRouter(Coverage)","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Infinite extends React.Component {\n render() {\n const Infinite = `\n\n\n\n\n`;\n return (\n \n );\n }\n}\n\nexport default Infinite;\n","import React from 'react';\nimport { connect } from 'react-redux';\nimport LicenseLink from './LicenseLink';\nimport LicenseRowChevron from './LicenseRowChevron';\nimport A from '../../../components/A';\nimport Summary from './Summary';\nimport CrossLight from 'styles/svg-components/CrossLight.js';\nimport Spinner from 'styles/svg-components/Spinner.js';\nimport Infinite from 'styles/svg-components/Infinite.js';\nimport { API } from '../../../constants';\nimport {\n addModal,\n} from '../../../actions/authenticationAction';\n\nclass LicensingMethod extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n suppressLicensePrompt: false\n };\n\n this.handleChange = this.handleChange.bind(this);\n this.handleLoginSwitch = this.handleLoginSwitch.bind(this);\n }\n\n handleChange(event) {\n this.setState({suppressLicensePrompt: event.target.checked});\n }\n\n handleLoginSwitch(event) {\n event.preventDefault();\n \n this.props.onRemoveLicense();\n \n this.props.onAddModal('login');\n $('body').addClass('modal-overlay-active');\n }\n\n render() {\n let currencyCode = '';\n if (sessionStorage.getItem('currency_code') == 'USD' || sessionStorage.getItem('currency_code') == 'AUD' || sessionStorage.getItem('currency_code') == 'CAD') {\n currencyCode = ` ${sessionStorage.getItem('currency_code')}`;\n }\n\n return (\n
\n
\n

Select A Licensing Option

\n
\n
\n
\n
\n
\n
\n \n

Subscription

\n
\n
\n
\n
\n \n
\n
\n

Subscription

\n
\n
\n
\n

Love our music? Enjoy unlimited access to our acclaimed catalog with our Pro or Creator subscriptions. Our plans are straightforward and built to give you total peace of mind.

\n
\n
\n {this.props.onRemoveLicense(); this.props.drip(\"Clicked View Plans\"); }}>View Plans\n
\n { (!this.props.isLoggedIn || this.props.overrideLogin) &&\n

Already a subscriber? { this.handleLoginSwitch(e) }}>Sign in

\n }\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n

Pay-Per-Use

\n
\n
\n
\n
\n \n
\n
\n

Pay-Per-Use

\n
\n
\n
\n

Buy a license for this track only with our Pay-Per-Use licenses. Ideal if you have a less regular need for music. We offer an array of licenses to suit productions of all shapes and sizes.

\n
\n
\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n \n
\n );\n }\n}\n\n\n// Map redux actions to local props.\nconst mapDispatchToProps = (dispatch) => ({\n onAddModal: (modal) => {\n dispatch(addModal(modal));\n },\n});\n\n// Map redux states to local props.\nconst mapStateToProps = (state) => ({\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(LicensingMethod);\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass FileText extends React.Component {\n render() {\n const FileText = `\n\n\n\n\n\n\n\n`;\n return (\n \n );\n }\n}\n\nexport default FileText;\n","import React, {Fragment} from 'react';\nimport A from '../../../components/A';\n\nexport default class SubscriptionUsageWarning extends React.Component {\n constructor(props) {\n super(props);\n }\n\n\n render() {\n return (\n
\n

Heads up!

\n

You’ve licensed a lot of tracks {`${ this.props.licenseStatusD === 1 ? 'today' : 'this month' }`}. If you need a preview version to use in your videos, please use the “Download Preview” button.

\n

As per the Terms and Conditions of your subscription, you may only license tracks for active projects.

\n { ( this.props.licenseStatusM === 1 && this.props.licenseStatusD === 1) &&\n \n

Additionally, you are nearing the monthly limit of licenses generated through our site.

\n

While you will still be able to license tracks once this limit is reached, you will have to do so by contacting Music Vine directly, which may cause minor delays to your production.

\n
\n }\n
\n
\n );\n }\n}\n","import React, {Fragment} from 'react';\nimport A from '../../../components/A';\n\nexport default class SubscriptionUsageReached extends React.Component {\n constructor(props) {\n super(props);\n } \n\n render() {\n return (\n \n

Limit Reached

\n

You've hit your {`${ this.props.licenseStatusM === 2 ? 'monthly' : 'daily' }`} automatic license limit.

\n

While your subscription is unlimited, as per the Terms and Conditions of your subscription, you may only license tracks for active projects.

\n

Each license you create is used to ensure that we're fairly compensating our artists for each placement of their music, and misuse of this feature can result in our artists not being fairly compensated for their work.

\n

If you require more tracks urgently, you can request additional licenses by getting in touch.

\n
\n );\n }\n}\n","import React, {Fragment} from 'react';\nimport { connect } from 'react-redux';\nimport className from 'classnames';\nimport A from '../../../components/A';\nimport CrossLight from 'styles/svg-components/CrossLight.js';\nimport LogoSVG from 'styles/svg-components/LogoSVG.js';\nimport SignupModal from 'components/SignupModal';\nimport Config, { API } from '../../../constants';\nimport Download from 'styles/svg-components/Download.js';\nimport FileText from 'styles/svg-components/FileText.js';\nimport SubscriptionUsageWarning from './SubscriptionUsageWarning';\nimport SubscriptionUsageReached from './SubscriptionUsageReached';\nimport { addNewEngagement } from 'actions/favouriteAction';\n\nimport {\n addModal,\n getAuthToken,\n} from '../../../actions/authenticationAction';\nimport GenerateAutoClearCodeButton from '../../CustomerPage/LicenseHistory/GenerateAutoClearCodeButton';\n\nclass SubscriptionLicenseModal extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {\n tab: 'customer',\n edits: 1,\n licenseModalStep: 1,\n licenseId: false,\n error: false,\n errorCode: false,\n errorMessage: false,\n downloadLink: false,\n licenseStatusD: 0,\n licenseStatusM: 0,\n overdueId: false,\n needsDownloadCode: null\n };\n\n this.licenseDelay = 2500;\n\n this.onRequestSubscriptionLicense = this.onRequestSubscriptionLicense.bind(this);\n this.licenseStepDebug = this.licenseStepDebug.bind(this);\n this.downloadLicense = this.downloadLicense.bind(this);\n this.downloadFiles = this.downloadFiles.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.handleAddModal = this.handleAddModal.bind(this);\n this.hasWarning = this.hasWarning.bind(this);\n }\n\n componentDidMount() {\n this.props.drip(\"Started Subscription Licensing Process\");\n }\n\n handleAddModal(e) {\n e.preventDefault();\n\n this.props.onRemoveLicense();\n\n this.props.onAddModal('login');\n $('body').addClass('modal-overlay-active');\n }\n\n\n onRequestSubscriptionLicense() {\n this.setState({\n licenseModalStep: 2,\n error: false,\n errorCode: false,\n errorMessage: false,\n });\n\n this.props.requestSubscriptionLicense(this.props.track.id, this.state.edits, getAuthToken() )\n .then((data) => {\n console.log(data);\n let errorCode = false;\n let overdueId = false;\n let errorMessage = \"Sorry, something went wrong.\";\n\n if (data.success && data.licenseStatusD !== 2 && data.licenseStatusM !== 2) {\n window.setTimeout(function() {\n\n this.props.drip(\"Licensed Track with Subscription\");\n\n addNewEngagement(\"subscription\", this.props.track.id, this.props.track.current_context.id);\n\n this.setState({\n licenseModalStep: 3,\n licenseId: data.licenseId,\n downloadLink: data.download,\n licenseStatusD: data.licenseStatusD,\n licenseStatusM: data.licenseStatusM,\n needsDownloadCode: data.needsDownloadCode\n });\n }.bind(this), this.licenseDelay);\n } else if (data.licenseStatusD === 2 || data.licenseStatusM === 2) {\n this.setState({\n licenseModalStep: 4,\n licenseStatusD: data.licenseStatusD,\n licenseStatusM: data.licenseStatusM,\n });\n } else {\n if (data.error) {\n if (data.error.message === \"No user found\") {\n errorMessage = \"You have been signed out - please sign in again to continue.\";\n } else if ( data.error.code === 1 ) {\n errorCode = data.error.code;\n errorMessage = data.error.message;\n overdueId = data.error.paymentId;\n } else if ( data.error.code === 2 ) {\n errorCode = data.error.code;\n errorMessage = \"Access to your free account has expired. If this is a mistake please get in touch.\";\n }\n }\n\n this.setState({\n licenseModalStep: 1,\n error: true,\n errorCode,\n errorMessage,\n overdueId,\n });\n }\n })\n .catch((err) => err);\n }\n handleChange(event) {\n this.setState({edits: event.target.value});\n }\n licenseStepDebug(step) {\n this.setState({licenseModalStep: step});\n }\n\n downloadFiles() {\n if (this.state.downloadLink) {\n window.location = this.state.downloadLink;\n }\n }\n\n downloadLicense() {\n console.log(this.state.licenseId);\n if (this.state.licenseId) {\n window.open(`${API}subscription/getlicense/${this.state.licenseId}`);\n }\n }\n\n hasWarning() {\n return ( this.state.licenseStatusD === 1 || this.state.licenseStatusM === 1 );\n }\n\n render() {\n return (\n
\n
\n
\n
\n {this.props.track.artist &&\n {this.props.track.artist.name}\n }\n
\n
\n
\n

{this.props.track.name}

\n {this.props.track.artist &&\n {this.props.track.artist.name}\n }\n
\n
\n
\n
\n \n
\n
\n
\n
\n
\n { this.props.subscriptionData.isPaused &&\n \n

Your subscription has been paused.

\n

To resume your subscription early, please contact us.

\n

Alternatively, you can purchase a Pay-Per-Use license using the option below.

\n
\n }\n { !this.props.subscriptionData.isPaused &&\n \n

License via your plan

\n { this.props.subscriptionData.name &&\n

{this.props.subscriptionData.name}

\n }\n { !this.props.subscriptionData.name && this.props.subscriptionState === 2 &&\n

{sessionStorage.getItem('subscription_name')}

\n }\n { this.props.isLoggedIn && !this.props.overrideLogin && this.state.errorCode !== 1 &&\n \n View preview license\n

\n \n

\n { this.state.error &&\n

{this.state.errorMessage}

\n }\n \n
\n }\n
\n }\n { this.state.errorCode === 1 && this.state.overdueId &&\n
\n

Heads up!

\n

We recently attempted to charge you for your subscription, but the payment failed.

\n

Until this issue is resolved you will be unable to license music using your subscription.

\n Resolve Now\n
\n }\n { (!this.props.isLoggedIn || this.props.overrideLogin) &&\n \n }\n
\n
\n
\n
\n

License via your plan

\n

Preparing license...

\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n

Track Licensed

\n
\n
\n
\n
\n \n
\n
\n
\n
\n { this.state.licenseModalStep == 1 &&\n\n
\n
\n
\n \n
\n
\n
Pay-Per-Use Licensing
\n

Require additional clearance? Explore our Pay-Per-Use licenses.

\n Start Now\n
\n
\n
\n
\n \n
\n
\n
Request Custom License
\n

We offer custom licenses for projects requiring something tailored to fit.

\n Start Now\n
\n
\n
\n }\n { this.state.licenseModalStep == 3 &&\n\n
\n
\n { this.hasWarning() &&\n \n }\n\n {this.state.needsDownloadCode && (\n \n
\n \n
\n

For supported tracks, our AutoClear solution automatically releases copyright claims on YouTube. Learn more.

\n
\n )}\n\n\n
\n \n \n
\n
\n \n \n
\n
\n
\n }\n
\n
\n );\n }\n}\n\n\n// Map redux actions to local props.\nconst mapDispatchToProps = (dispatch) => ({\n onAddModal: (modal) => {\n dispatch(addModal(modal));\n },\n});\n\n// Map redux states to local props.\nconst mapStateToProps = (state) => ({\n license: state.get('license'),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(SubscriptionLicenseModal);\n","import React, {Fragment} from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { createStructuredSelector } from 'reselect';\nimport { fetchLicenses, fetchDMultiplier, addToCart, removeLicense, getCurrencySpecificScaleText, getColourTheming, requestSubscriptionLicense } from 'actions/licenseAction';\nimport $ from 'jquery';\n\nimport Type from './PayPerUse/Type';\nimport Scale from './PayPerUse/Scale';\nimport Coverage from './PayPerUse/Coverage';\nimport LicensingMethod from './PayPerUse/LicensingMethod';\n\nimport { drip } from 'utils/drip';\n\nimport SubscriptionLicenseModal from './Subscription/SubscriptionLicenseModal';\nimport {\n setCookie,\n getCookie,\n} from 'actions/authenticationAction';\n\nclass LicensePage extends React.Component {\n\n constructor(props) {\n super(props);\n let track = false;\n let trackVersion = false;\n let trackDuration = false;\n let currentLicense = false;\n let scale = false;\n let web = false;\n let broadcast = false;\n let filmfestival = false;\n let theatrical = false;\n let monetized = false;\n let numEdits = 1;\n let total = 0;\n let step = 1;\n let hasAccount = false;\n let isActive = this.props.subscriptionData.isActive;\n let isFreeTrial = this.props.subscriptionData.isFreeTrial;\n let hasSuppressedSubscription = false;\n let loggedOutSubscriber = sessionStorage.getItem('is_subscriber') === 'true';\n let loggedOutSubscription = 1;\n\n if ( localStorage.getItem('quick_login') && localStorage.getItem('quick_login') !== '' && localStorage.getItem('quick_login') !== 'undefined' ) {\n hasAccount = true;\n }\n\n if (getCookie('has_suppressed_subscription') === '1' || sessionStorage.getItem('has_suppressed_subscription') === '1') {\n hasSuppressedSubscription = true;\n }\n\n if (this.props.track) {\n // If from cart page use track data sent\n track = this.props.track;\n\n for (var i = 0; i < this.props.track.track_version.length; i++) {\n trackVersion = this.props.track.track_version[i];\n\n // Loop through versions until one is found marked as the Main Version\n if ( trackVersion.version_type.id === 1 ) {\n trackDuration = trackVersion.version_length;\n break;\n }\n }\n\n // If no main version was found for some reason, just use the first version's length.\n if ( !trackDuration ) {\n trackDuration = this.props.track.track_version[0].version_length;\n }\n\n } else if (this.props.params && this.props.cart[this.props.params.trackId]) {\n // If editing an existing cart item load data from cart using trackId in URL\n const cartItem = this.props.cart[this.props.params.trackId];\n track = cartItem.track;\n currentLicense = cartItem.license.currentLicense;\n scale = cartItem.license.scale;\n web = cartItem.license.web;\n broadcast = cartItem.license.broadcast;\n filmfestival = cartItem.license.filmfestival;\n theatrical = cartItem.license.theatrical;\n monetized = cartItem.license.monetized;\n numEdits = cartItem.license.numEdits;\n total = cartItem.license.total;\n } else {\n step = 0;\n }\n\n if ( hasSuppressedSubscription ) {\n step = 2;\n }\n\n const basketTrackIdsArray = JSON.parse(sessionStorage.getItem('basket_track_ids')) || [];\n\n let notification = false;\n if (basketTrackIdsArray.indexOf(track.id) != -1) {\n notification = true;\n }\n\n // Set default state\n this.state = {\n track,\n trackDuration,\n step,\n licenses: [],\n duration_multiplier: [],\n licenseTheme: 'default',\n currentLicense,\n scale,\n web,\n broadcast,\n filmfestival,\n theatrical,\n monetized,\n numEdits,\n checkout: false,\n direct: false,\n subTotal: 0,\n currencySubTotal: 0,\n total,\n notification,\n basketTrackIdsArray,\n hasAccount,\n hasSuppressedSubscription,\n isActive,\n isFreeTrial,\n loggedOutSubscriber,\n loggedOutSubscription,\n overrideLogin: false,\n forcePayPerUse: false,\n };\n\n this.handleTypeSelect = this.handleTypeSelect.bind(this);\n this.handleMethodSelect = this.handleMethodSelect.bind(this);\n this.handleDismissSubscription = this.handleDismissSubscription.bind(this);\n this.handleScaleSelect = this.handleScaleSelect.bind(this);\n this.handlePrevious = this.handlePrevious.bind(this);\n this.handleRemoveLicense = this.handleRemoveLicense.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this.debugStepOne = this.debugStepOne.bind(this);\n this.goToPayPerUse = this.goToPayPerUse.bind(this);\n }\n\n goToPayPerUse() {\n this.setState({ step: 2, forcePayPerUse: true });\n }\n\n handleChange(event) {\n const target = event.target;\n const value = target.type === 'checkbox' ? target.checked : target.value;\n const name = target.name;\n\n this.setState({\n [name]: value\n });\n }\n componentWillMount() {\n // Fetch all possible licenses\n fetchLicenses().then((data) => {\n this.setState({ licenses: data });\n }).catch((err) => err);\n\n // Fetch multiplier that is related to duration of the track\n fetchDMultiplier(this.state.trackDuration).then((data) => {\n this.setState({ duration_multiplier: data.multiplier });\n }).catch((err) => err);\n }\n\n componentDidUpdate() {\n\n if (this.props.track && this.props.track != this.state.track) {\n this.setState({\n track: this.props.track,\n trackDuration: this.props.track.track_url.version_length,\n currentLicense: false,\n scale: false,\n web: false,\n broadcast: false,\n filmfestival: false,\n theatrical: false,\n monetized: false,\n numEdits: 1,\n total: 0,\n step: 1,\n });\n }\n }\n\n handleMethodSelect(hasSuppressedSubscription) {\n drip(\"Clicked View Licenses\");\n if (hasSuppressedSubscription) {\n this.handleDismissSubscription();\n }\n this.setState( {'step': 2} );\n }\n\n handleDismissSubscription() {\n drip(`Selected \"Don't Ask Again\"`);\n sessionStorage.setItem('has_suppressed_subscription', 1);\n this.setState( {'hasSuppressedSubscription': true} );\n }\n\n // handles the selection of the LicenseType in \n handleTypeSelect(index) {\n let checkout = false;\n let direct = false;\n\n // Licenses can be either a direct or non-direct, the license types that are direct have the id 4 or 5. This checks to see if the chosen license is direct.\n const directLicenses = [4, 6];\n if (directLicenses.indexOf(this.state.licenses[index].id) !== -1) {\n checkout = true;\n direct = true;\n }\n\n // License 3 is not direct, but can be checked out with no coverage options\n if (this.state.licenses[index].id == '3') {\n checkout = true;\n }\n\n // not all licenses have scale as an option, if they do not skip to step 4, if they do go to step 3\n let step = 4;\n if (this.state.licenses[index].scale_type) {\n step = 3;\n }\n let subTotal = this.state.licenses[index].base * this.state.duration_multiplier;\n let currencySubTotal = Math.ceil(subTotal * this.props.currency.value);\n\n drip(\"Selected License Type\", this.state.licenses[index].name);\n\n this.setState({ currentLicense: this.state.licenses[index], step, checkout, direct, web: false, broadcast: false, subTotal: subTotal, currencySubTotal: currencySubTotal });\n }\n\n // handles the selection of the LicenseScale in \n handleScaleSelect(index) {\n // set the sub total and skip to step 3\n // const subTotal = (this.state.subTotal * this.state.currentLicense.scales[index].multiplier);\n const subTotal = (this.state.currentLicense.base * this.state.duration_multiplier) * this.state.currentLicense.scales[index].multiplier;\n const currencySubTotal = subTotal * this.props.currency.value;\n\n drip(\"Selected License Scale\", this.state.currentLicense.scales[index].size);\n\n this.setState({ scale: this.state.currentLicense.scales[index], step: 4, total: subTotal, subTotal, currencySubTotal: currencySubTotal });\n }\n\n // Go back a step depending on whether direct or not\n handlePrevious() {\n let newStep = this.state.step - 1;\n\n if (this.state.step === 4 && this.state.direct) {\n let newStep = 2;\n this.setState({ step: newStep, total: 0 });\n } else if (this.state.step === 3) {\n this.setState({ step: newStep, total: 0, scale: false });\n } else {\n this.setState({ step: newStep, total: 0, scale: false });\n }\n\n if (newStep === 2) {\n this.setState( { licenseTheme: 'default', currentLicense: false } );\n }\n }\n\n handleRemoveLicense(addedToCart) {\n // This has to be an explicit check for 'true' as this function gets passed a class by default\n if ( addedToCart !== true ) {\n drip(`Abandoned License at Step ${this.state.step}`);\n }\n $('.modal-overlay').removeClass('active');\n this.props.onRemoveLicense();\n }\n\n debugStepOne() {\n this.setState({ step: 1 });\n }\n\n render() {\n let licenseStep;\n let subscriptionState = 0;\n\n if (this.state.isActive || this.state.isFreeTrial) {\n subscriptionState = 1; // Logged in, active sub\n } else if (this.state.loggedOutSubscriber) {\n subscriptionState = 2; // Logged out, active sub\n }\n\n if (this.state.forcePayPerUse) {\n subscriptionState = 0;\n }\n\n if (subscriptionState !== 0) {\n licenseStep = ;\n } else {\n switch (this.state.step) {\n case 0:\n licenseStep =
No Track data found
;\n break;\n case 1:\n licenseStep = ;\n break;\n case 2:\n licenseStep = ;\n break;\n case 3:\n licenseStep = ;\n break;\n case 4:\n licenseStep = ;\n break;\n default:\n licenseStep = ;\n break;\n }\n\n }\n\n \n return \n {licenseStep}\n {/*\n
    \n
  • hasSuppressedSubscription:
  • \n
    \n
  • subscriptionState: {subscriptionState}
  • \n
  • isActive:
  • \n
  • isFreeTrial:
  • \n
  • loggedOutSubscriber:
  • \n
  • Override Login:
  • \n
    \n
  • subscription_name: {sessionStorage.getItem('subscription_name')}
  • \n
    \n
  • {JSON.stringify(this.props.subscriptionData)}
  • \n
    \n
  • \n
\n */}\n
;\n }\n}\n\nLicensePage.propTypes = {\n // makes route parameters available\n params: PropTypes.object,\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n onAddToCart: (cartItem) => {\n // add a cart item to the cart redux state\n dispatch(addToCart(cartItem));\n },\n onRemoveLicense: () => {\n // add a cart item to the cart redux state\n dispatch(removeLicense());\n },\n});\n\nconst mapStateToProps = (state) => ({\n // get the cart redux state\n cart: state.get('cart'),\n subscriptionData: state.get('subscriptionData'),\n userAuth: state.get('userAuth'),\n currency: state.get('currency'),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(mapStateToProps, mapDispatchToProps)(LicensePage);\n","// https://developer.drip.com/?javascript#getting-started\n\n\n// _dcq.push([\"methodName\", { key: \"value\", ... }]);\n\nexport function drip(event, description) {\n\tif (description) {\n\t\tevent = `${event}: ${description}`;\n\t}\n\n\t// console.log(\"Drip Event |\", event);\n\ttry {\n\t\t_dcq.push(\n\t\t [\n\t\t \"track\", event\n\t\t ]\n\t\t);\n\t} catch (e) {}\n}\n\nexport function dripIdentify(userId, email, tag) {\n\ttry {\n\t\t_dcq.push([\"identify\", {\n\t\t email: email,\n\t\t user_id: userId,\n\t\t tags: [tag]\n\t\t}]);\n\t} catch (e) {}\n}\n\n\nexport function dripProductView(product_id, name, categories, price, currency, track) {\n\tlet productDetails = {\n product_id,\n name,\n currency,\n };\n\n if (categories) {\n \tproductDetails.categories = categories;\n }\n\n if (price) {\n \tproductDetails.price = price;\n }\n\n if (track) {\n \tproductDetails.product_url = `https://musicvine.com/track/${track.artist.slug}/${track.slug}`;\n \tproductDetails.image_url = track.artist.avatar_image.image_aws_url;\n }\n\n\ttry {\n\t\t_dcq.push(\n\t\t [\n\t\t \"track\", \"Viewed a Product\",\n\t\t productDetails\n\t\t ]\n\t\t);\n\t} catch (e) {}\n}","import React from 'react';\nimport CrossSVG from 'styles/svg-components/CrossSVG.js';\nimport LogoSVG from 'styles/svg-components/LogoSVG.js';\nimport Spinner from 'styles/svg-components/Spinner.js';\nimport Config from '../../constants';\n\nexport default class ModalLogin extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n\n this.state = {\n loginEmail: '',\n hasQuickLoginEmail: localStorage.getItem('quick_login') && localStorage.getItem('quick_login') !== '' && localStorage.getItem('quick_login') !== 'undefined' ? true : false\n }\n\n this.resetModalForm = this.resetModalForm.bind(this);\n this.handleChange = this.handleChange.bind(this);\n this._handleKeyPress = this._handleKeyPress.bind(this);\n }\n\n componentDidMount() {\n\n if (this.state.hasQuickLoginEmail) {\n this.setState({\n loginEmail: localStorage.getItem('quick_login')\n });\n\n this.props.showLoginStageTwo(this.state.loginEmail);\n }\n\n }\n\n _handleKeyPress(e) {\n if (e.key === 'Enter') {\n this.props.makeLoginAttempt();\n }\n }\n\n handleChange(event) {\n this.setState({loginEmail: event.target.value});\n }\n\n resetModalForm(event) {\n event.preventDefault();\n \n this.setState({\n loginEmail: '',\n hasQuickLoginEmail: false\n });\n\n this.props.resetLoginModal();\n }\n\n render() {\n return (\n
\n \n
\n \n
\n
\n
\n
\n \n
\n

Sign In

\n
\n
\n
\n
\n
\n
Bad credentials.
\n \n \n
\n
\n
Bad credentials.
\n

{this.state.loginEmail} (Not you?)

\n \n \n
\n
\n \n
\n
\n
\n
\n

We've just sent you an email with a link to reset your password.

\n

This is something we're asking all users to do to ensure enhanced security.

\n

Already done this? Log in!

\n
\n {/* Hidden input for the customer_guid */}\n \n
\n \n
\n
\n );\n }\n}\n","import React, { Fragment } from 'react';\nimport CrossSVG from 'styles/svg-components/CrossSVG.js';\nimport LogoSVG from 'styles/svg-components/LogoSVG.js';\nimport Spinner from 'styles/svg-components/Spinner.js';\n\nexport default class ModalAccountSupplemental extends React.Component {\n // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {\n isSubscribed1: false,\n isSubscribed2: false,\n isSubscribed3: false,\n isSubscribed4: false,\n };\n\n this.handleInputChange = this.handleInputChange.bind(this);\n this.subscribeToAllNewsletters = this.subscribeToAllNewsletters.bind(this);\n this.handleClick = this.handleClick.bind(this);\n }\n handleInputChange(event) {\n const target = event.target;\n const value = target.type === 'checkbox' ? target.checked : target.value;\n const name = target.name;\n\n this.setState({\n [name]: value,\n });\n }\n\n /**\n * Checks all the newsletter signup checkboxes\n */\n subscribeToAllNewsletters() {\n this.setState({\n isSubscribed1: true,\n isSubscribed2: true,\n isSubscribed3: true,\n isSubscribed4: true,\n });\n }\n\n /**\n * Show second step of the supplemental data screen\n */\n professionSelected() {\n $('.register-succcess__stage-1').addClass('profession-selected');\n }\n handleClick() {\n window.location = '/checkout/payment';\n }\n render() {\n return (\n \n \n {this.props.showHeader && (\n
\n
\n \n
\n

\n Personalize your experience\n

\n
\n )}\n
\n
\n \n Which of these best describes you?\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n
\n

\n Get discounts, new music and industry insights straight to your\n inbox.\n

\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n

\n \n Subscribe to all and get a discount code for 20% off*\n \n
\n \n *Discount can be used with a single Pay Per Use license order\n only.\n \n

\n
\n
\n \n Done\n \n
\n
\n \n \n
\n
\n \n \n
\n
\n {this.props.showHeader && (\n
\n \n
\n )}\n

\n Welcome on board!\n

\n

\n Thanks for joining Music Vine! If you need anything, our friendly\n team is on hand to help.\n

\n

\n Now it's time to turn up the volume, sit back and enjoy the music\n :-)\n

\n {this.state.isSubscribed1 &&\n this.state.isSubscribed2 &&\n this.state.isSubscribed3 &&\n this.state.isSubscribed4 && (\n
\n
\n

Thanks also for subscribing to our newsletters!

\n

\n Your discount code is{' '}\n \n NEWSLTTRBONUS20\n \n . Use it at the checkout to get 20% off your order\n *.\n

\n

\n \n *One use per customer. Valid for Pay-Per-Use\n licenses only.\n \n

\n
\n )}\n
\n
\n {this.props.modalIntent !== 'checkout_payment' && (\n \n Continue Browsing\n \n )}\n {this.props.modalIntent === 'checkout_payment' && (\n \n Complete Your Purchase\n \n )}\n
\n
\n
\n );\n }\n}\n","import fetch from 'isomorphic-fetch';\nimport Config, {\n\tAPI,\n} from '../constants';\n\nexport function fetchGeneralPage(slug) {\n return fetch(`${ conditionallyGetCdnApi() }pages/${slug}`, {\n method: 'GET',\n }).then((res) => {\n if (res.status === 200) {\n return res.json();\n }\n }).catch((err) => err);\n}\n\nexport function fetchGeneralPages() {\n return fetch(`${API}page`, {\n method: 'GET',\n\t\t// mode: 'CORS',\n }).then((res) => res.json())\n\t\t.catch((err) => err);\n}\n\nexport function conditionallyGetCdnApi() {\n if (localStorage.getItem(\"avoid_cdn\") === \"1\") {\n return Config.API;\n } else {\n return Config.CDN_API;\n }\n}\n// alert('loaded');\n\nexport function gc(e) { for (var t, i = `${e}=`, n = document.cookie.split(';'), o = 0; o < n.length; o++) { for (t = n[o]; t.charAt(0) == ' ';)t = t.substring(1); if (t.indexOf(i) == 0) return t.substring(i.length, t.length); } return ''; }\n\nexport function setupSite() {\n const url = `${Config.API}setup_frontend`;\n const authKey = gc('auth_token');\n const guid = sessionStorage.getItem('customer_guid');\n return fetch(url, {\n method: 'GET',\n\t\t// mode: 'CORS',\n credentials: 'include',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authKey || null,\n 'X-GUID': guid || null,\n },\n })\n\t\t.then((res) => res.json())\n\t\t.catch((err) => err)\n}\n\nexport function makeAuthenticatedFetch(uri, method, callback) {\n const authKey = sessionStorage.getItem('auth_token');\n if (authKey)\t{\n fetch(url, {\n method: method || 'GET',\n headers: {\n 'Content-Type': 'application/json',\n 'X-Auth-Token': authKey,\n },\n credentials: 'same-origin',\n })\n\t\t\t.then((response) => {\n if (response.ok)\t\t\t\t{\n return response.json();\n }\n throw new Error('Something went wrong ...');\n})\n\t\t\t.then((data) => {\n if (data.status == 'success')\t\t\t\t{\n this.setState({\n followingArtist: true,\n });\n const body = $('body');\n $('.hero__unfollow').show();\n $('.hero__follow').hide();\n body.toggleClass('social-following');\n }\t\t\t\telse\t\t\t\t{\n this.setState({\n followingArtist: false,\n });\n }\n})\n\t\t\t.catch((error) => this.setState({\n followingArtist: false,\n}));\n }\n\n return false;\n}\n\n/*\n * Generate a randiom GUID\n * @returns {string}\n */\nexport function generateGuid() {\n function guidPart()\t{\n return Math.floor((1 + Math.random()) * 0x10000).toString(16).substring(1);\n }\n return `${guidPart() + guidPart()}-${guidPart()}-${guidPart()}-${guidPart()}-${guidPart()}${guidPart()}${guidPart()}`;\n}\n\nexport function getApplauseCount(slug) {\n return fetch(`${API}getApplauseCount/${slug}`, {\n method: 'GET',\n }).then((res) => {\n if (res.status === 200) {\n return res.json();\n }\n }).catch((err) => err);\n}\nexport function setApplauseClick(slug) {\n return fetch(`${API}setApplause/${slug}`, {\n method: 'GET',\n }).then((res) => {\n if (res.status === 200) {\n return res.json();\n }\n }).catch((err) => err);\n}\nexport function setTwitter(slug) {\n return fetch(`${API}setTwitter/${slug}`, {\n method: 'GET',\n }).then((res) => {\n if (res.status === 200) {\n return res.json();\n }\n }).catch((err) => err);\n}\nexport function getTwitterCount(slug) {\n return fetch(`${API}getTwitterCount/${slug}`, {\n method: 'GET',\n }).then((res) => {\n if (res.status === 200) {\n return res.json();\n }\n }).catch((err) => err);\n}\n","import fetch from 'isomorphic-fetch';\nimport Config, {\n API,\n} from '../constants';\nimport { getAuthToken } from './authenticationAction';\n\nexport function fetchLicenses() {\n return fetch(`${API}licenses/`, {\n method: 'GET',\n // mode: 'CORS',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\n// export function fetchDMultipliers() {\n// return fetch(`${API}licenses/duration/multiplier`, {\n// method: 'GET',\n// // mode: 'CORS',\n// }).then((res) => res.json())\n// .catch((err) => err);\n// }\n\nexport function fetchDMultiplier(duration) {\n return fetch(`${API}licenses/${duration}/duration/multiplier`, {\n method: 'GET',\n // mode: 'CORS',\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchAllDMultipliers() {\n // TODO: Get this to pull dynamtically\n return [\n [15, 0.69],\n [30, 0.73],\n [60, 0.8],\n [120, 0.88],\n [240, 1],\n [2147483647, 1.22]\n ];\n}\n\nexport function addToCart(cartItem) {\n //return { type: 'ADD_TO_CART', cartItem };\n}\n\nexport function addLicense(track) {\n return { type: 'ADD_LICENSE', track };\n}\n\nexport function removeLicense() {\n return { type: 'REMOVE_LICENSE' };\n}\n\nexport function downloadTrackInfo(info) {\n return { type: 'DOWNLOAD_TRACK_INFO', downloadedTrackInfo: info };\n}\n\nexport function generateLicenseCodeStart() {\n return { type: 'GENERATE_LICENSE_CODE' };\n}\n\nexport function generateLicenseCodeError(error) {\n return { type: 'GENERATE_LICENSE_CODE_ERROR', payload: error };\n}\n\nexport function getCurrencySpecificScaleText(scale) {\n const currencyCode = sessionStorage.getItem('currency_code');\n\n const VLOG_SMALL = 1;\n const VLOG_LARGE = 2;\n const VLOG_V_LARGE = 3;\n const PROMOTIONAL_STANDARD = 4;\n const PROMOTIONAL_LARGE = 5;\n const PROMOTIONAL_V_LARGE = 6;\n const FILM_DSP_SMALL = 7;\n const FILM_DSP_LARGE = 8;\n const FILM_DSP_V_LARGE = 9;\n const NPO_LARGE = 10;\n const NPO_V_LARGE = 11;\n\n if (scale.id == VLOG_SMALL || scale.id == VLOG_LARGE || scale.id == VLOG_V_LARGE) {\n return scale.description;\n }\n\n if (currencyCode == 'USD') {\n // Standard\n if (scale.id === PROMOTIONAL_STANDARD) { // Also covers NPO small\n return 'Project budget less than $15,000';\n }\n\n // Large\n if (scale.id === PROMOTIONAL_LARGE || scale.id === NPO_LARGE) {\n return 'Project budget between $15,000 and $50,000';\n }\n\n // Very Large\n if (scale.id === PROMOTIONAL_V_LARGE || scale.id === NPO_V_LARGE) {\n return 'Project budget between $50,000 and $100,000';\n }\n\n // Small\n if (scale.id === FILM_DSP_SMALL) {\n return 'Project budget less than $20,000';\n }\n\n // Large\n if (scale.id === FILM_DSP_LARGE) {\n return 'Project budget between $20,000 and $100,000';\n }\n\n // Very Large\n if (scale.id === FILM_DSP_V_LARGE) {\n return 'Project budget between $100,000 and $200,000';\n }\n } else if (currencyCode == 'GBP') {\n // Standard\n if (scale.id === PROMOTIONAL_STANDARD) { // Also covers NPO small\n return 'Project budget less than £10,000';\n }\n\n // Large\n if (scale.id === PROMOTIONAL_LARGE || scale.id === NPO_LARGE) {\n return 'Project budget between £10,000 and £35,000';\n }\n\n // Very Large\n if (scale.id === PROMOTIONAL_V_LARGE || scale.id === NPO_V_LARGE) {\n return 'Project budget between £35,000 and £80,000';\n }\n\n // Small\n if (scale.id === FILM_DSP_SMALL) {\n return 'Project budget less than £15,000';\n }\n\n // Large\n if (scale.id === FILM_DSP_LARGE) {\n return 'Project budget between £15,000 and £70,000';\n }\n\n // Very Large\n if (scale.id === FILM_DSP_V_LARGE) {\n return 'Project budget between £70,000 and £150,000';\n }\n } else if (currencyCode == 'EUR') {\n // Standard\n if (scale.id === PROMOTIONAL_STANDARD) { // Also covers NPO small\n return 'Project budget less than €12,000';\n }\n\n // Large\n if (scale.id === PROMOTIONAL_LARGE || scale.id === NPO_LARGE) {\n return 'Project budget between €12,000 and €40,000';\n }\n\n // Very Large\n if (scale.id === PROMOTIONAL_V_LARGE || scale.id === NPO_V_LARGE) {\n return 'Project budget between €40,000 and €90,000';\n }\n\n // Small\n if (scale.id === FILM_DSP_SMALL) { // Also covers NPO small\n return 'Project budget less than €15,000';\n }\n\n // Large\n if (scale.id === FILM_DSP_LARGE) {\n return 'Project budget between €15,000 and €80,000';\n }\n\n // Very Large\n if (scale.id === FILM_DSP_V_LARGE) {\n return 'Project budget between €80,000 and €180,000';\n }\n } else if (currencyCode == 'AUD' || currencyCode == 'CAD') {\n // Standard\n if (scale.id === PROMOTIONAL_STANDARD) {\n return 'Project budget less than $20,000';\n }\n\n // Large\n if (scale.id === PROMOTIONAL_LARGE || scale.id === NPO_LARGE) {\n return 'Project budget between $20,000 and $60,000';\n }\n\n // Very Large\n if (scale.id === PROMOTIONAL_V_LARGE || scale.id === NPO_V_LARGE) {\n if ( currencyCode == 'AUD' ) {\n return 'Project budget between $60,000 and $140,000';\n } else if ( currencyCode == 'CAD' ) {\n return 'Project budget between $60,000 and $130,000';\n }\n }\n\n // Small\n if (scale.id === FILM_DSP_SMALL) {\n return 'Project budget less than $25,000';\n }\n\n // Large\n if (scale.id === FILM_DSP_LARGE) {\n return 'Project budget between $25,000 and $125,000';\n }\n\n // Very Large\n if (scale.id === FILM_DSP_V_LARGE) {\n if ( currencyCode == 'AUD' ) {\n return 'Project budget between $125,000 and $280,000';\n } else if ( currencyCode == 'CAD' ) {\n return 'Project budget between $125,000 and $270,000';\n }\n }\n } else { // USD, pulls from database\n return scale.description;\n }\n}\n\nexport function getColourTheming( licenseId ) {\n\n switch (licenseId) {\n case 1:\n return 'blue';\n break;\n case 2:\n return 'green';\n break;\n case 3:\n return 'purple';\n break;\n case 4:\n return 'orange';\n break;\n case 5:\n return 'red';\n break;\n case 6:\n return 'grey';\n break;\n default:\n return 'default';\n break;\n }\n\n}\n\nexport function requestSubscriptionLicense(trackId, edits, token) {\n let formData = new FormData();\n\n formData.append('track',trackId);\n formData.append('edits',edits);\n formData.append('token',token);\n console.log(\"track: \", trackId);\n console.log(\"edits: \", edits);\n console.log(\"token: \", token);\n\n return fetch(`${API}subscription/generatelicense`, {\n method: 'POST',\n body: formData,\n }).then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function generateLicenseCode(licenseId, isSubscriptionLicense) {\n const authToken = getAuthToken();\n let formData = new FormData();\n\n isSubscriptionLicense = isSubscriptionLicense ? 1 : 0;\n\n formData.append('licenseId', licenseId);\n formData.append('isSubscriptionLicense', isSubscriptionLicense);\n formData.append('token', authToken);\n\n return fetch(`${Config.BASE_API_URL}subscription/generatelicensecode`, {\n method: 'POST',\n credentials: 'include',\n headers: {\n // 'Content-Type': 'application/json',\n token: authToken || null,\n // credentials: \"same-origin\"\n },\n body: formData,\n }).then((res) => res.json())\n .catch((err) => err);\n}\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"main\":\"Banner_main__1ahSp\"};","import React, { Component } from 'react';\nimport InlineSVG from 'svg-inline-react';\n\nclass SpinnerIcon extends Component {\n render() {\n return (\n
\n \n \n \n
\n );\n }\n}\n\nexport default SpinnerIcon;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass CrossSVG extends React.Component {\n render() {\n const crossSVG = `\n`;\n return (\n \n );\n }\n}\n\nexport default CrossSVG;\n","import React from 'react';\nimport InlineSVG from 'svg-inline-react';\n\nclass Spinner extends React.Component {\n render() {\n const assetSpinner = `\n \n`;\n return (\n \n );\n }\n}\n\nexport default Spinner;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass LogoSVG extends React.Component {\n render() {\n const logoSVG = ``;\n return (\n \n );\n }\n}\n\nexport default LogoSVG;\n","import { PLACEHOLDER_IMG_URL } from '../components/ImgPlaceholder';\n\nexport function sanitizeString(str) {\n str = str.replace(/[^a-z0-9áéíóúñü \\.,_-]/gim, '');\n return str.trim();\n}\n\n// Track length in minute:second.\nexport function convertToMinutesAndSeconds(time) {\n const minutes = Math.floor(time / 60);\n const seconds = time % 60;\n\n return `${minutes}:${(`0${seconds}`).slice(-2)}`;\n}\n\n\n\nexport function getImgixUrl(url, options) {\n\n if (typeof url === \"string\") {\n url = url.replace('s3.eu-west-2.amazonaws.com/', '');\n url = url.replace('cdn.musicvine.com', 'musicvine.imgix.net');\n url = url.replace('cdn.uppbeat.io', 'uppbeat.imgix.net');\n\n if (options && options !== \"\") {\n url = url.split('?')[0];\n\n if ( typeof options === \"string\" ) {\n url += options;\n } else if (typeof options === \"number\" ) {\n url += `?auto=format&w=${options}&h=${options}`;\n }\n }\n } else {\n url = PLACEHOLDER_IMG_URL;\n }\n\n return url;\n}\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass CrossLight extends React.Component {\n render() {\n const CrossLight = ``;\n return (\n \n );\n }\n}\n\nexport default CrossLight;\n","export const playerActive = () => (dispatch) => {\n dispatch({\n type: 'PLAYER_ACTIVE',\n });\n};\n\nexport const playerInActive = () => (dispatch) => {\n dispatch({\n type: 'PLAYER_IN_ACTIVE',\n });\n};\n\nexport const changeMode = (mode) => (dispatch) => {\n dispatch({\n type: 'CHANGE_MODE',\n mode,\n });\n};\n\nexport const onTogglePlay = (playing) => (dispatch) => {\n dispatch({\n type: 'TOGGLE_PLAY',\n playing,\n });\n};\nexport const playActiveTrack = () => (dispatch) => {\n dispatch({\n type: 'PLAY_ACTIVE_TRACK',\n playing: true,\n });\n};\nexport const pausedActiveTrack = () => (dispatch) => {\n dispatch({\n type: 'PAUSED_ACTIVE_TRACK',\n playing: false,\n });\n};\nexport const onChangeTrack = (track, direction) => (dispatch) => {\n dispatch({\n type: 'ON_CHANGE_TRACK',\n track,\n direction,\n });\n};\n\nexport const addActiveTrack = (track) => (dispatch) => {\n dispatch({\n type: 'ADD_ACTIVE_TRACK',\n track,\n });\n};\n\nexport const addPrimaryTrack = (track) => (dispatch) => {\n dispatch({\n type: 'ADD_PRIMARY_TRACK',\n track,\n });\n};\n\nexport const addVersionPrimaryTrack = (version) => (dispatch) => {\n dispatch({\n type: 'ADD_VERSION_PRIMARY_TRACK',\n version,\n });\n};\n\nexport const isAudioReady = (audio) => (dispatch) => {\n dispatch({\n type: 'IS_AUDIO_READY',\n isReady: audio,\n });\n};\n\nexport const playerActiveTrack = (track) => (dispatch) => {\n dispatch({\n type: 'PLAYER_ACTIVE_TRACK',\n track,\n });\n};\nexport const addTrackWave = (tracks, page) => (dispatch) => {\n dispatch({\n type: 'ADD_TRACK_WAVE',\n tracks,\n page,\n });\n};\nexport const addCollectionTrackWave = (tracks) => (dispatch) => {\n dispatch({\n type: 'ADD_COLLECTION_TRACK_WAVE',\n tracks,\n });\n};\nexport const flushCurrentTrackWave = (page) => (dispatch) => {\n dispatch({\n type: 'FLUSH_CURRENT_TRACK_WAVE',\n page,\n });\n};\nexport const flushNewTrackWave = () => (dispatch) => {\n dispatch({\n type: 'FLUSH_NEW_TRACK_WAVE',\n });\n};\nexport const addPageTrackWave = (tracks) => (dispatch) => {\n dispatch({\n type: 'ADD_PAGE_TRACK_WAVE',\n tracks,\n });\n};\nexport const addTrackPageWave = (track) => (dispatch) => {\n dispatch({\n type: 'ADD_TRACK_PAGE_WAVE',\n track,\n });\n};\nexport const addTrackPageVersionWave = (track) => (dispatch) => {\n dispatch({\n type: 'ADD_TRACK_PAGE_VERSION_WAVE',\n track,\n });\n};\nexport const addVersionTrackWave = (version) => (dispatch) => {\n dispatch({\n type: 'ADD_VERSION_TRACK_WAVE',\n version,\n });\n};\nexport const addVersionNewTrackWave = (version) => (dispatch) => {\n dispatch({\n type: 'ADD_VERSION_NEW_TRACK_WAVE',\n version,\n });\n};\nexport const flushTrackWave = () => (dispatch) => {\n dispatch({\n type: 'FLUSH_TRACK_WAVE',\n });\n};\nexport const setPlayerPosition = (position) => (dispatch) => {\n dispatch({\n type: 'SET_PLAYER_POSITION',\n position,\n });\n};\nexport const setTrackPosition = (track) => (dispatch) => {\n dispatch({\n type: 'SET_NEW_TRACK_POSTION',\n track,\n });\n};\nexport const setVolume = (volume) => (dispatch) => {\n dispatch({\n type: 'SET_PLAYER_VOLUME',\n volume,\n });\n};\nexport const toggleMute = () => (dispatch) => {\n dispatch({\n type: 'TOGGLE_MUTE',\n });\n};\n\nexport const toggleVersion = (trackId, isVisible) => (dispatch) => {\n dispatch({\n type: 'TOGGLE_VERSION',\n trackId,\n isVisible,\n });\n};\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass CartSVG extends React.Component {\n render() {\n const cartSVG = `\n \n \n \n \n \n \n \n`;\n return (\n \n );\n }\n}\n\nexport default CartSVG;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass SearchSVG extends React.Component {\n render() {\n const searchSVG = `\n \n \n \n `;\n return (\n \n );\n }\n}\n\nexport default SearchSVG;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass UsersSVG extends React.Component {\n render() {\n const usersSVG = `\n \n \n \n \n \n`;\n return (\n \n );\n }\n}\n\nexport default UsersSVG;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass UsersLoggedInSVG extends React.Component {\n render() {\n const UsersLoggedInSVG = ``;\n return (\n \n );\n }\n}\n\nexport default UsersLoggedInSVG;\n","import { Link } from 'react-router';\nimport styled from 'styled-components';\n\nexport default styled(Link)`\n`;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass SearchSVG extends React.Component {\n render() {\n const searchSVG = `\n \n`;\n return (\n \n );\n }\n}\n\nexport default SearchSVG;\n","import { Link } from 'react-router';\nimport styled from 'styled-components';\n\nexport default styled(Link)`\n`;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport SearchSVG from 'styles/svg-components/SearchIcon.js';\nimport SearchLink from './SearchLink';\n\n\nexport default class SuggestedItem extends React.Component { // eslint-disable-line react/prefer-stateless-function\n render() {\n let image = ;\n if (this.props.image != '') {\n if (this.props.svg) {\n image = ;\n } else {\n image = ;\n }\n }\n return (\n
  • \n \n
    \n
    \n \n {image}\n
    \n
    \n {this.props.name}\n {this.props.secondElem && {this.props.secondElem}}\n
    \n
    \n
    \n
  • \n );\n }\n}\n\nSuggestedItem.propTypes = {\n item: PropTypes.object,\n url: PropTypes.string,\n svg: PropTypes.bool,\n};\n","/*\n * HomePage\n *\n * This is the first thing users see of our App, at the '/' route\n */\n\nimport React, {Fragment} from 'react';\nimport PropTypes from 'prop-types';\n\nimport SuggestedItem from './SuggestedItem';\n\nexport default class SuggestedGroup extends React.Component {\n constructor(props) {\n super(props);\n this.checkArtist = this.checkArtist.bind(this);\n }\n checkArtist(suggested) {\n if (suggested.artist) {\n return suggested.artist.name;\n }\n return false;\n }\n\n render() {\n let item;\n if (parseInt(this.props.type, 10) === 1) {\n item = 'Styles';\n } else if (parseInt(this.props.type, 10) === 2) {\n item = 'Artists';\n } else if (parseInt(this.props.type, 10) === 3) {\n item = 'Tracks';\n } else {\n item = 'Collections';\n }\n\n // Transform to array if object, like for keyword `how`\n let suggestedResult = Array.isArray(this.props.suggested)\n ? this.props.suggested\n : Object.values(this.props.suggested);\n\n const rows = [];\n suggestedResult.forEach((suggested, index) => {\n let image = '';\n switch (item) {\n case 'Styles':\n console.log(suggested);\n if(suggested.parent){\n rows.push( this.props.onResultClick('style', suggested.id)} url={`browse/style/${suggested.slug}`} name={suggested.name} secondElem={` - ${suggested.parent.name}`} image={suggested.parent.tile_image} svg={suggested.parent.tile_svg} key={index} />);\n } else {\n rows.push( this.props.onResultClick('style', suggested.id)} url={`browse/style/${suggested.slug}`} name={suggested.name} secondElem={false} image={suggested.tile_image} svg={suggested.tile_svg} key={index} />);\n }\n break;\n case 'Artists':\n if (suggested.avatar_image) {\n image = suggested.avatar_image.image_aws_url;\n }\n rows.push( this.props.onResultClick('artist', suggested.id)} url={`browse/artist/${suggested.slug}`} name={suggested.name} secondElem={''} image={image} key={index} />);\n break;\n case 'Tracks':\n if (suggested.artist.avatar_image) {\n image = suggested.artist.avatar_image.image_aws_url;\n }\n rows.push( this.props.onResultClick('track', suggested.id)} url={`track/${suggested.artist.slug}/${suggested.slug}`} name={suggested.name} secondElem={` - ${suggested.artist.name}`} image={image} key={index} />);\n break;\n case 'Collections':\n if (suggested.thumbnail_image) {\n image = suggested.thumbnail_image.image_aws_url;\n }\n rows.push( this.props.onResultClick('collection', suggested.id)} url={`browse/collection/${suggested.slug}`} name={suggested.name} secondElem={''} image={image} key={index} />);\n break;\n }\n });\n\n return (\n
    \n {item}\n {rows}\n
    \n );\n }\n}\n\nSuggestedGroup.propTypes = {\n suggested: PropTypes.oneOfType([\n PropTypes.array,\n PropTypes.object\n ]),\n type: PropTypes.string,\n};\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport SuggestedGroup from './SuggestedGroup';\n\nexport default class SuggestedBar extends Component {\n render() {\n return (\n \n {this.props.suggested && Object.keys(this.props.suggested).map((keyName) => (\n \n ))\n }\n \n );\n }\n}\n\nSuggestedBar.propTypes = {\n suggested: PropTypes.object,\n};\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nimport SuggestedItem from './SuggestedItem';\nimport {fetchSearchTrend} from \"../../actions/searchAction\";\n\nclass TrendingBar extends Component {\n constructor(props) {\n super(props);\n\n this.state = {\n trending: [],\n };\n\n // Fetch trending searches.\n fetchSearchTrend()\n .then((data) => {\n let trending;\n if (data.error) {\n trending = [data.error];\n } else if ( typeof data !== 'object' ) {\n trending = [];\n } else {\n trending = data;\n }\n this.setState({ trending });\n })\n .catch((err) => err);\n }\n\n render() {\n\n let { onResultClick } = this.props;\n let { trending } = this.state;\n let renderedResult =
    \n
    \n
    \n
    \n
    ;\n\n if ( trending.length > 0 ) {\n\n renderedResult = trending.map((trend, index) => {\n\n // Determine the right result type & return pure component of that type.\n if (trend.track !== undefined) {\n return ;\n }\n if (trend.artist !== undefined) {\n return \n }\n if (trend.style !== undefined) {\n return \n }\n if (trend.collection !== undefined) {\n return \n }\n\n // Basic error handling\n if (trend.code) {\n return
    \n Sorry, trending searches aren't available right now. Please try again later.\n
    ;\n }\n });\n\n }\n\n return (\n
    { renderedResult }
    \n );\n }\n}\n\n// Define props types.\nTrendingBar.propTypes = {\n trending: PropTypes.array,\n};\n\n/*\n * Pure Components of Result Type, may be decoupled in seperate file\n */\n\n// Style type Result Pure Component.\nconst StyleTypeResult = (props) => {\n let { onResultClick, style } = props;\n\n // If has parent?\n let parent = style.parent !== undefined\n ? ` - ${style.parent.name}`\n : false;\n\n // Get the correct title image.\n let image = style.tile_image != \"\"\n ? style.tile_image\n : style.parent && style.parent.tile_image;\n\n let styleSvg = false;\n\n if (style.tile_svg && style.tile_svg !== \"\") {\n styleSvg = style.tile_svg;\n } else if (style?.parent?.tile_svg) {\n styleSvg = style?.parent?.tile_svg;\n }\n\n return (\n onResultClick('style', style.id)}\n />\n );\n};\n\n// Track type Result Pure Component.\nconst TrackTypeResult = (props) => {\n let { onResultClick, track } = props;\n\n // Image URL.\n let image = track.artist.avatar_image ? track.artist.avatar_image.image_aws_url : \"\";\n\n // Parent.\n let parent = ` - ${track.artist.name}`;\n\n return (\n onResultClick('track', track.id)}\n />\n );\n}\n\n// // Collection type Result Pure Component.\nconst CollectionTypeResult = (props) => {\n let { onResultClick, collection } = props;\n\n // Image URL.\n let image = collection.thumbnail_image ? collection.thumbnail_image.image_aws_url : \"\";\n\n // Parent.\n let parent = ' (Collection)';\n\n return (\n onResultClick('collection', collection.id)}\n url={`browse/collection/${ collection.slug ? collection.slug : collection.id }`}\n name={collection.name}\n secondElem={parent}\n image={image}\n />\n );\n}\n\n// Artist type Result Pure Component.\nconst ArtistTypeResult = (props) => {\n let { onResultClick, artist } = props;\n\n // Image URL.\n let image = artist.avatar_image ? artist.avatar_image.image_aws_url : \"\";\n\n // Parent.\n let parent = ' (Artist)';\n\n return (\n onResultClick('artist', artist.id)}\n url={`browse/artist/${artist.slug ? artist.slug : artist.id}`}\n name={artist.name}\n secondElem={parent}\n image={image}\n />\n );\n}\n\n// Export TrendingBar\nexport default TrendingBar;\n","import className from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\n\nclass CookieNotice extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n }\n render() {\n return (\n
    \n

    We use cookies to deliver our service. By using our website, you agree to our use of cookies.

    \n \n Learn More\n
    \n );\n }\n}\nCookieNotice.propTypes = {\n playerActive: PropTypes.bool,\n onCookieNoticeClick: PropTypes.func.isRequired,\n};\nCookieNotice.defaultProps = {\n playerActive: false,\n};\nexport default CookieNotice;\n","import className from 'classnames';\nimport PropTypes from 'prop-types';\nimport React from 'react';\n\n\nclass NewVersionPrompt extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n\n this.refreshPage = this.refreshPage.bind(this);\n }\n\n refreshPage() {\n try {\n dataLayer.push({'event': 'reload_clicked'});\n } catch(e){}\n \n window.setTimeout( function() {location.reload(true);}, 100 );\n }\n\n\n render() {\n return (\n
    \n

    A new version of Music Vine is available. Please refresh.

    \n \n
    \n );\n }\n}\nNewVersionPrompt.propTypes = {\n playerActive: PropTypes.bool,\n};\nNewVersionPrompt.defaultProps = {\n playerActive: false,\n};\nexport default NewVersionPrompt;\n","import styled from 'styled-components';\n\nimport NormalA from 'components/A';\n\nconst A = styled(NormalA)`\n padding: 2em 0;\n`;\n\nexport default A;\n","import React, { Fragment } from 'react';\nimport { connect } from 'react-redux';\nimport A from './A';\nimport Config from '../../constants';\n\nimport { setCookie } from '../../actions/authenticationAction';\nimport { toggleRelevancy } from '../../actions/adminAction';\n\nclass AdminBar extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {\n showBranch: false,\n stickyBranch: sessionStorage.getItem(\"stickyBranch\") === \"1\",\n avoidCdn: localStorage.getItem(\"avoid_cdn\") === \"1\",\n dropdownOffset: 0\n };\n\n this.getEditLink = this.getEditLink.bind(this);\n this.onMouseIn = this.onMouseIn.bind(this);\n this.onMouseOut = this.onMouseOut.bind(this);\n this.toggleStickyBranch = this.toggleStickyBranch.bind(this);\n this.getDropdownOffset = this.getDropdownOffset.bind(this);\n this.toggleCdn = this.toggleCdn.bind(this);\n }\n // Lifecycle method\n componentWillMount() {\n $('body').addClass('has-admin-bar');\n }\n\n componentWillUnmount() {\n $('body').removeClass();\n }\n\n toggleStickyBranch() {\n\n if (this.state.stickyBranch) {\n sessionStorage.setItem(\"stickyBranch\", \"0\");\n } else {\n sessionStorage.setItem(\"stickyBranch\", \"1\");\n }\n\n this.setState({\n stickyBranch: !this.state.stickyBranch,\n });\n\n }\n\n toggleCdn() {\n if (this.state.avoidCdn) {\n localStorage.setItem(\"avoid_cdn\", \"0\");\n } else {\n localStorage.setItem(\"avoid_cdn\", \"1\");\n }\n\n this.setState({\n avoidCdn: !this.state.avoidCdn,\n });\n }\n\n resetNotifications() {\n localStorage.removeItem('header_alert_dismissed');\n sessionStorage.removeItem('dismissed_cookie_notice');\n sessionStorage.removeItem('has_suppressed_subscription');\n setCookie('dismissed_cookie_notice', '1', 1/60/60/1e3);\n\n window.setTimeout(function() {\n location.reload();\n }, 100);\n }\n\n getDropdownOffset() {\n let branchHover = document.getElementById('branch-hover');\n let dropdownOffset = this.state.dropdownOffset;\n\n if (branchHover) {\n dropdownOffset = Math.round(branchHover.offsetWidth / 2);\n }\n\n return dropdownOffset;\n\n }\n\n onMouseIn() {\n let dropdownOffset = this.getDropdownOffset();\n\n this.setState({\n showBranch: true,\n dropdownOffset\n });\n }\n\n onMouseOut() {\n this.setState({\n showBranch: false\n });\n }\n\n getEditLink() {\n let editUrl = \"#\";\n\n if (this.props.adminBar.editData) {\n\n switch (this.props.adminBar.editData.type) {\n case 'track':\n editUrl = `${ this.props.adminBar.adminData.musicRoot }${this.props.adminBar.editData.id}`;\n break;\n case 'collection':\n editUrl = `${ this.props.adminBar.adminData.collectionRoot }${this.props.adminBar.editData.id}`;\n break;\n case 'artist':\n editUrl = `${ this.props.adminBar.adminData.artistRoot }${this.props.adminBar.editData.id}/edit`;\n break;\n case 'page':\n editUrl = `${ this.props.adminBar.adminData.pageRoot }${this.props.adminBar.editData.id}/edit`;\n break;\n }\n\n }\n\n return editUrl;\n }\n\n render() {\n return (\n
    \n
    \n \n
    \n
    \n { Config.DEPLOY_BRANCH &&\n
    \n \n \n \n
    FE Branch: {Config.DEPLOY_BRANCH_FE}
    BE Branch: {Config.DEPLOY_BRANCH_BE}
    \n
    \n }\n
    \n
    \n Reset Notifications\n |\n Skip CDN: \n |\n Show relevancy: \n
    \n
    \n );\n }\n}\n\n// Map redux actions to local props.\nconst mapDispatchToProps = (dispatch) => ({\n toggleRelevancy: () => {\n dispatch(toggleRelevancy());\n },\n});\n\n// Map redux states to local props.\nconst mapStateToProps = (state) => ({\n userAuth: state.get('userAuth'),\n adminBar: state.get('adminBar'),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(AdminBar);\n","import React from \"react\";\nimport A from \"./A\";\nimport CrossSVG from \"styles/svg-components/CrossSVG.js\";\nimport LogoSVG from \"styles/svg-components/LogoSVG.js\";\nimport SignupModal from \"components/SignupModal\";\nimport { API } from \"../../constants\";\n\nexport default class ModalSignUp extends React.Component {\n // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {\n tab: \"customer\",\n };\n\n this.onTabChange = this.onTabChange.bind(this);\n }\n\n onTabChange(event) {\n this.setState({ tab: event.target.id });\n }\n render() {\n return (\n
    \n \n \n
    \n
    \n
    \n \n
    \n

    Join Music Vine

    \n
    \n
    \n
    \n \n Customer\n \n \n Artist\n \n
    \n
    \n {this.state.tab == \"customer\" && (\n
    \n \n
    \n )}\n {/* {this.state.tab == 'artist' &&\n
    \n

    Become An Artist

    \n

    We are passionate about building a platform that celebrates expressive, imaginative music with exceptional production values.

    \n

    If, like us, you live for the craftsmanship of creative work and are excited by prospect of being part of a remarkable new resource with a focus on quality over quantity, then we'd love to hear from you!

    \n Apply\n
    \n } */}\n
    \n );\n }\n}\n","import React from 'react';\nimport A from './A';\nimport CrossLight from 'styles/svg-components/CrossLight.js';\nimport LogoSVG from 'styles/svg-components/LogoSVG.js';\nimport SignupModal from 'components/SignupModal';\nimport { API } from '../../constants';\nimport {getImgixUrl} from \"../../utils/helpers\";\n\nexport default class ModalDownloadPreview extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {\n tab: 'customer',\n };\n\n this.downloadVersionPreview = this.downloadVersionPreview.bind(this);\n this.downloadAllPreviews = this.downloadAllPreviews.bind(this);\n }\n\n downloadVersionPreview() {\n let primaryTrack = this.props.modalIntent.primaryTrack;\n let version = this.props.modalIntent.version;\n\n if (version !== null) {\n window.location = version.download_preview_mp3;\n } else if (primaryTrack.track_url.download_preview_mp3) {\n window.location = primaryTrack.track_url.download_preview_mp3;\n }\n\n this.props.onRemoveModal();\n }\n\n downloadAllPreviews() {\n let primaryTrack = this.props.modalIntent.primaryTrack;\n\n window.location = primaryTrack.full_preview_zip;\n\n this.props.onRemoveModal();\n }\n\n render() {\n const firstButtonText = Download {this.props.modalIntent.primaryTrack.track_version.length > 1 ? 'this version only ' : ''}{`(${ this.props.modalIntent.version ? this.props.modalIntent.version.version_description : 'Main Version' })`};\n const firstButton =
    ;\n\n return (\n
    \n
    \n
    \n
    \n {this.props.modalIntent.primaryTrack.artist &&\n {this.props.modalIntent.primaryTrack.artist.name}\n }\n
    \n
    \n
    \n

    {this.props.modalIntent.primaryTrack.name}

    \n {this.props.modalIntent.primaryTrack.artist &&\n {this.props.modalIntent.primaryTrack.artist.name}\n }\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n

    Download a preview

    \n
    \n { firstButton }\n { this.props.modalIntent.primaryTrack.full_preview_zip && this.props.modalIntent.primaryTrack.track_version.length > 1 &&\n
    \n }\n
    \n
    \n
    { firstButtonText }
    \n { this.props.modalIntent.primaryTrack.full_preview_zip && this.props.modalIntent.primaryTrack.track_version.length > 1 &&\n
    Download all {this.props.modalIntent.primaryTrack.track_version.length} versions
    \n }\n
    \n
    \n
    \n

    The watermarked previews may be used to trial this track in your production and to seek approval from project stakeholders.

    \n

    When you buy a license, unwatermarked mp3 and wav files will be made available for download from your license history page.

    \n
    \n
    \n );\n }\n}\n","import React from 'react';\nimport CrossSVG from 'styles/svg-components/CrossSVG.js';\nimport LogoSVG from 'styles/svg-components/LogoSVG.js';\nimport Spinner from 'styles/svg-components/Spinner.js';\nimport ModalAccountSupplemental from '../../components/Header/ModalAccountSupplemental';\n\nexport default class ModalLoginSuccess extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n }\n\n render() { \n return (\n
    \n \n
    \n \n
    \n
    \n \n
    \n );\n }\n}\n","import React from 'react';\nimport CrossSVG from 'styles/svg-components/CrossSVG.js';\nimport LogoSVG from 'styles/svg-components/LogoSVG.js';\nimport Spinner from 'styles/svg-components/Spinner.js';\n\nexport default class ModalPassword extends React.Component { // eslint-disable-line react/prefer-stateless-function\n render() {\n return (\n
    \n \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n

    Reset Your Password

    \n

    Lost your password? Please enter your e-mail address below. You will then receive a link to create a new password via e-mail.

    \n
    \n\n
    \n
    .
    \n
    .
    \n
    \n \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\n","import _ from 'lodash';\nimport React from 'react';\nimport { connect } from 'react-redux';\nimport AssetCross from 'styles/svg-components/CrossSVG.js';\nimport Loader from 'styles/svg-components/Loader';\nimport Spinner from 'styles/svg-components/Spinner';\nimport {getImgixUrl} from \"../../utils/helpers\";\nimport { PLACEHOLDER_IMG_URL } from 'components/ImgPlaceholder';\nimport $ from 'jquery';\nimport A from 'components/A';\nimport { addNewPlaylistTrack, addExistingPlaylistTrack } from 'actions/favouriteAction';\nimport { showPlaylistSuccess, hidePlaylistSuccess, animateInTooltip, animateOutTooltip } from 'actions/playlistAction';\nimport { setupSite } from '../../actions/generalAction';\n\nclass PlaylistModal extends React.Component {\n constructor(props) {\n super(props);\n let versionId = 0;\n\n if (this.props.playlist.version) {\n versionId = this.props.playlist.version.id;\n }\n const playlists = JSON.parse(sessionStorage.getItem('playlists_data'));\n let playlistType = 'new';\n if (playlists.length > 0) {\n playlistType = 'existing';\n }\n this.state = {\n versionId,\n playlists,\n playlistType,\n isLoading: false,\n loading: false,\n };\n\n // Animation timers\n [this || {}].timer = false;\n\n this.onSubmitNew = this.onSubmitNew.bind(this);\n this.onSubmitExisiting = this.onSubmitExisiting.bind(this);\n this.closeModals = this.closeModals.bind(this);\n this.updatePlaylistType = this.updatePlaylistType.bind(this);\n }\n\n componentDidMount() {\n $('body').addClass('modal-overlay-active');\n this.setState({ loading: true });\n setupSite().then((data) => {\n if (data.status === 'success') {\n sessionStorage.setItem('playlists_data', JSON.stringify(data.playlists_data));\n this.setState({ loading: false, playlists: data.playlists_data });\n }\n });\n }\n\n componentWillUnmount() {\n if (this.timer) {\n clearTimeout( this.timer );\n\n dispatch( animateOutTooltip() );\n setTimeout(() => {\n dispatch(hidePlaylistSuccess());\n }, 400);\n }\n }\n\n onSubmitNew(event) {\n event.preventDefault();\n if (event.target.title.value !== '') {\n this.setState({ isLoading: true });\n let playlistName = event.target.title.value;\n addNewPlaylistTrack(this.props.playlist.track.id, this.state.versionId, event.target.title.value, this.props.playlist.track.current_context.id).then((data) => {\n if (data) {\n sessionStorage.setItem('playlists_data', JSON.stringify(data));\n this.setState({\n playlists: data,\n isLoading: false,\n });\n this.closeModals();\n this.props.showPlaylistSuccess(this.props.playlist.track, playlistName, true);\n }\n }).catch((err) => err);\n } else {\n this.setState({\n warning: 'Enter a title',\n });\n }\n }\n\n onSubmitExisiting(event) {\n event.preventDefault();\n if (event.target.existingId.value !== 'Select A Playlist' && event.target.existingId.value.length > 0) {\n this.setState({ isLoading: true });\n\n // Find playlist name\n const selectedPlaylist = _.find(this.state.playlists, ['id', parseInt(event.target.existingId.value)]);\n let playlistName = '';\n if (selectedPlaylist) {\n playlistName = selectedPlaylist.name;\n }\n\n addExistingPlaylistTrack(this.props.playlist.track.id, this.state.versionId, event.target.existingId.value, this.props.playlist.track.current_context.id).then((data) => {\n if (data) {\n this.setState({\n isLoading: false,\n });\n this.closeModals();\n this.props.showPlaylistSuccess(this.props.playlist.track, playlistName, false);\n }\n }).catch((err) => err);\n }\n }\n\n updatePlaylistType(event) {\n const playlistType = event.currentTarget.getAttribute('data-playlist-type');\n this.setState({ playlistType });\n }\n\n closeModals() {\n this.props.onRemoveModal();\n this.props.onRemovePlaylist();\n }\n\n\n render() {\n let artistThumb = {\"\"};\n const artist = this.props.playlist.track.artist;\n if (artist && artist.avatar_image) {\n artistThumb = {artist.name};\n }\n\n let hasExisting = false;\n const playlistsData = JSON.parse( sessionStorage.getItem('playlists_data') );\n if (playlistsData.length > 0) {\n hasExisting = true;\n }\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n

    Add To Playlist

    \n Shortlist your favourite tracks then share playlists with your team and clients.\n
    \n
    \n
    \n
    \n {artistThumb}\n
    \n
    \n
    \n

    {this.props.playlist.track.name}

    \n {artist &&\n {artist.name}\n }\n
    \n
    \n
    \n
    \n {this.state.playlistType === 'new' &&\n
    \n
    \n Create A New Playlist\n {this.state.warning &&\n {this.state.warning}\n }\n \n
    \n {hasExisting !== false &&\n Or, choose an existing playlist\n }\n
    \n \n
    \n
    }\n {hasExisting && this.state.playlistType === 'existing' &&\n
    \n
    \n
    \n {this.state.loading && }\n {this.state.loading &&
    }\n \n
    \n \n \n
    \n
    }\n
    \n
    \n
    \n
    \n );\n }\n}\n// Map redux actions to local props.\nconst mapDispatchToProps = (dispatch) => ({\n showPlaylistSuccess: (track, playlistName, newPlaylist) => {\n [this || {}].timer = setTimeout(() => {\n dispatch(showPlaylistSuccess(track, playlistName, newPlaylist));\n [this || {}].timer = setTimeout(() => {\n dispatch( animateInTooltip() );\n [this || {}].timer = setTimeout(() => {\n dispatch( animateOutTooltip() );\n [this || {}].timer = setTimeout(() => {\n dispatch(hidePlaylistSuccess());\n }, 400);\n }, 4000);\n }, 10);\n }, 400);\n },\n});\n\nexport default connect(\n null,\n mapDispatchToProps\n)(PlaylistModal);\n","import React from 'react';\nimport $ from 'jquery';\nimport CrossSVG from 'styles/svg-components/CrossSVG.js';\nimport LogoSVG from 'styles/svg-components/LogoSVG.js';\nimport Spinner from 'styles/svg-components/Spinner.js';\nimport A from 'components/A';\nimport SignupModal from 'components/SignupModal';\n\nexport default class ModalPlaySignUp extends React.Component {\n // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n this.state = {};\n this.handleClick = this.handleClick.bind(this);\n }\n componentDidMount() {\n $('body').addClass('modal-overlay-active');\n }\n handleClick(event) {\n event.preventDefault();\n let modalType;\n if (typeof event === 'object') {\n modalType = event.target.id;\n } else if (typeof event === 'string') {\n modalType = event;\n } else {\n return;\n }\n if (this.props.modalIntent === 'checkout_payment') {\n this.props.handleAddModal(modalType, 'checkout-payment');\n return false;\n }\n this.props.handleAddModal(modalType);\n $('body').addClass('modal-overlay-active');\n }\n render() {\n let signupMsg = 'perform this action';\n\n if (this.props.modalIntent === 'add_playlist') {\n signupMsg = 'add music to playlists and save your favourite tracks';\n } else if (this.props.modalIntent === 'download_preview') {\n signupMsg = 'download preview tracks for use in your projects';\n } else if (this.props.modalIntent === 'follow_artist') {\n signupMsg = 'follow artists and see their latest tracks';\n } else if (this.props.modalIntent === 'add_favourite') {\n signupMsg = 'add tracks to your favorites';\n }\n\n return (\n
    \n \n \n
    \n
    \n
    \n \n
    \n

    \n Join Music Vine\n

    \n

    \n Create a free account or{' '}\n \n \n sign in\n \n \n \n \n sign in\n \n {' '}\n to {signupMsg}.\n

    \n
    \n\n
    \n \n
    \n\n
    \n \n Create Account\n \n
    \n
    \n );\n }\n}\n","import React, { Component } from 'react';\nimport { connect } from 'react-redux';\nimport AssetCross from 'styles/svg-components/CrossSVG.js';\nimport { removeTrackStyle } from '../../actions/favouriteAction';\nimport Spinner from 'styles/svg-components/Spinner';\nimport { PLACEHOLDER_IMG_URL } from 'components/ImgPlaceholder';\n\nclass RemoveStyleModal extends Component {\n constructor(props) {\n super(props);\n this.state = {\n disabled: false,\n selectedStyles: [],\n isLoading: false,\n };\n this.handleParentClick = this.handleParentClick.bind(this);\n this.onChange = this.onChange.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.closeModal = this.closeModal.bind(this);\n }\n onChange(event) {\n const { selectedStyles } = this.state;\n const value = event.target.value;\n if (event.target.checked) {\n selectedStyles.push(value);\n } else {\n selectedStyles.splice(selectedStyles.indexOf(value), 1);\n }\n this.setState({ selectedStyles });\n }\n handleParentClick(event) {\n const { page } = this.props.tracks;\n const { subStyles } = page;\n if (event.target.checked) {\n this.setState({ disabled: true, selectedStyles: subStyles.map((item) => item.id) });\n } else {\n this.setState({ disabled: false, selectedStyles: [] });\n }\n }\n handleSubmit() {\n const { track, onRemoveTrackStyle } = this.props;\n const { selectedStyles } = this.state;\n if (track && selectedStyles.length > 0) {\n this.setState({\n isLoading: true,\n });\n onRemoveTrackStyle(track.id, selectedStyles).then((data) => {\n this.setState({ isLoading: false });\n if (data) {\n this.closeModal();\n track.reloaded();\n }\n });\n }\n }\n closeModal() {\n this.props.onRemoveModal();\n }\n render() {\n const { tracks, track } = this.props;\n const { page } = tracks;\n const { subStyles } = page;\n const parentStyleRows = [];\n const subStyleRows = [];\n subStyles.map((item, index) => {\n const defaultChecked = (!this.state.disabled && this.state.selectedStyles.indexOf(String(item.id)) !== -1) || false;\n if (index === 0) {\n parentStyleRows.push();\n return false;\n }\n subStyleRows.push(\n );\n });\n let artistThumb = ;\n const artist = this.props.track.artist || {};\n if (artist && artist.avatar_image) {\n artistThumb = {artist.name};\n }\n\n return (\n
    \n
    \n
    \n \n
    \n
    \n

    Remove Styles

    \n
    \n
    \n {this.state.isLoading && }\n
    \n
    \n {artistThumb}\n
    \n
    \n
    \n

    {track.name || ''}

    \n {artist &&\n {artist.name || ''}}\n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n

    Parent Style

    \n
    \n {parentStyleRows}\n
    \n
    \n
    \n

    Sub-styles

    \n
    \n {subStyleRows}\n
    \n
    \n
    \n
    \n
    \n \n {this.state.isLoading &&
    }\n
    \n
    \n );\n }\n}\nconst mapStateToProps = (state) => ({\n tracks: state.get('tracks'),\n});\nconst mapDispatchToProps = (dispatch) => ({\n onRemoveTrackStyle: (trackId, styles) => dispatch(removeTrackStyle(trackId, styles)),\n});\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n )(RemoveStyleModal);\n","import React, { Component } from 'react';\nimport PropTypes from 'prop-types';\n\nclass NotificationCounter extends Component {\n constructor(props) {\n super(props);\n this.state = {\n counter: 10,\n };\n }\n\n componentDidMount() {\n this.timerInterval = setInterval(this.handleTimer, 1000);\n }\n\n componentWillUnmount() {\n clearInterval(this.timerInterval);\n }\n\n handleTimer = () => {\n const { counter } = this.state;\n const { onClose } = this.props;\n const newSeconds = counter - 1;\n this.setState({ counter: newSeconds });\n if (newSeconds <= 0) {\n clearInterval(this.timerInterval);\n onClose();\n }\n };\n render() {\n const { counter } = this.state;\n return (
    {counter}
    );\n }\n}\n\nNotificationCounter.propTypes = {\n onClose: PropTypes.func,\n};\n\nexport default NotificationCounter;\n","import React from 'react';\nimport InlineSVG from 'svg-inline-react';\n\nclass Notification extends React.Component {\n render() {\n const Notification = `\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\n`;\n return ;\n }\n}\n\nexport default Notification;\n","import React, { Component, Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport CrossSVG from \"styles/svg-components/CrossSVG.js\";\nimport { connect } from 'react-redux';\nimport A from \"../../../components/A\";\nimport className from 'classnames';\nimport GenerateAutoClearCodeButton from \"./GenerateAutoClearCodeButton\";\n\nclass AutoClearModal extends Component {\n\n render() {\n const {\n onRemoveModal,\n track,\n getGeneratedLicenseCode,\n } = this.props;\n\n return (\n
    \n \n \n
    \n\n
    \n {\"\"}\n

    \n {'AutoClear'}\n

    \n

    \n {'For supported tracks, our AutoClear solution automatically releases copyright claims on YouTube.'}\n Learn more\n

    \n

    \n You can either whitelist your channel, or include a unique AutoClear code in your video's description.\n

    \n
    \n\n
    \n\n
    \n\n
    \n
    \n \n
    \n
    \n \n {track.name || track.track_url.track_name}\n \n \n { track.artist.name }\n \n
    \n
    \n\n \n\n
    \n\n\n {/* {setChannelError && Something went wrong, please try again later.} */}\n\n
    \n\n
    \n );\n }\n}\n\nAutoClearModal.propTypes = {\n onRemoveModal: PropTypes.func,\n track: PropTypes.object,\n};\n\nAutoClearModal.defaultProps = {\n onRemoveModal: () => { },\n track: {},\n};\n\nconst mapDispatchToProps = (dispatch) => ({\n});\n\nconst mapStateToProps = (state) => ({\n userAuth: state.get('userAuth'),\n license: state.get('license'),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(AutoClearModal);\n\n","import React, { Component, Fragment } from \"react\";\nimport PropTypes from \"prop-types\";\nimport CrossSVG from \"styles/svg-components/CrossSVG.js\";\nimport { Link, withRouter } from \"react-router\";\n\nimport { DOWNLOAD_URL } from \"../../../constants\";\nimport $ from \"jquery\";\n\nclass SeeMoreModal extends Component {\n\n\n handleAddModal = (modalType = '', track = {}) => {\n this.props.onAddModal(modalType, track);\n $('body').addClass('modal-overlay-active');\n }\n\n render() {\n const {\n handleAddModal,\n onRemoveModal,\n track,\n router\n } = this.props;\n\n\n return (\n
    \n \n \n
    \n\n
    \n
    \n\n {track.license_document && (\n \n {track.license_document._label}\n {'Download license PDF'}\n \n )}\n\n {track.license_download && (\n \n {'Download music files'}\n \n )}\n\n {track.autoclear && (\n this.handleAddModal('autoClear', track)}\n >\n {track.autoclear._label}\n {'Generate AutoClear code'}\n \n )}\n\n {track.license_again &&\n {\n onRemoveModal();\n router.push(track.license_again._link)\n }}\n >\n {track.license_again._label}\n {'License again'}\n \n }\n
    \n
    \n\n
    \n );\n }\n}\n\nSeeMoreModal.propTypes = {\n onRemoveModal: PropTypes.func,\n track: PropTypes.object,\n};\n\nSeeMoreModal.defaultProps = {\n onRemoveModal: () => { },\n track: {},\n};\n\n\n\n// Wrap the component to inject dispatch and state into it\nexport default withRouter(SeeMoreModal);\n\n","import classname from \"classnames\";\nimport $ from \"jquery\";\nimport PropTypes from \"prop-types\";\nimport { connect } from \"react-redux\";\nimport React, { Component, Fragment } from \"react\";\nimport _ from \"lodash\";\nimport { Link, withRouter } from \"react-router\";\nimport { MainJavascript } from \"./jquery/main.js\";\nimport CartSVG from \"../../styles/svg-components/CartSVG.js\";\nimport LogoSVG from \"../../styles/svg-components/LogoSVG.js\";\nimport SearchSVG from \"../../styles/svg-components/SearchSVG.js\";\nimport UsersSVG from \"../../styles/svg-components/UsersSVG.js\";\nimport UsersLoggedInSVG from \"../../styles/svg-components/UsersLoggedInSVG.js\";\nimport MVName from \"../../styles/svg-components/MVName.js\";\nimport { HeaderSearch } from \"../../styles/js/header-search.js\";\nimport LogoLink from \"./LogoLink\";\nimport A from \"../../components/A\";\nimport SuggestedBar from \"./SuggestedBar\";\nimport TrendingBar from \"./TrendingBar\";\nimport { Banner } from \"./Banner/index.js\";\nimport CookieNotice from \"../../components/CookieNotice\";\nimport NewVersionPrompt from \"../../components/NewVersionPrompt\";\nimport Config from \"../../constants\";\nimport qs from \"qs\";\n\nimport { loadFollowing } from \"../../actions/followingAction\";\nimport { loadFavorites } from \"../../actions/favouriteAction\";\nimport {\n loadSubscriptionData,\n dismissExpirationNotice,\n setHasExpiredNotice,\n} from \"../../actions/subscriptionAction\";\nimport { loadCurrency } from \"../../actions/currencyAction\";\nimport { loadCountry } from \"../../actions/countryAction\";\nimport {\n fetchSearchSuggested,\n fetchSearchTrend,\n fetchUpdateTrend,\n} from \"../../actions/searchAction\";\nimport { generateGuid, setupSite } from \"../../actions/generalAction\";\nimport { removePlaylist } from \"../../actions/playerAction\";\nimport {\n downloadTrackInfo,\n generateLicenseCode,\n generateLicenseCodeError,\n generateLicenseCodeStart,\n} from \"../../actions/licenseAction\";\nimport { setNotFiltered, setAppliedFilters } from \"../../actions/browseAction\";\nimport { StickyHeader } from \"../../styles/js/sticky-header.js\";\nimport CrossLight from \"../../styles/svg-components/CrossLight.js\";\n\nimport {\n loadUserData,\n showSigninSuccess,\n hideSigninSuccess,\n showNotificationSuccess,\n hideNotificationSuccess,\n animateInTooltip,\n animateOutTooltip,\n setCookie,\n getCookie,\n getAuthToken,\n makeLoginAttempt,\n showLoginStageTwo,\n makeRegisterAttempt,\n submitSupplementalUserData,\n makePasswordAttempt,\n fetchLogout,\n removeModal,\n addModal,\n checkProvidedEmail,\n resetLoginModal,\n setLoginStatus,\n setEnteredProfession,\n} from \"../../actions/authenticationAction\";\nimport { loadAdminData } from \"../../actions/adminAction\";\n\nimport AdminBar from \"./AdminBar\";\nimport ModalSignUp from \"./ModalSignUp\";\nimport ModalDownloadPreview from \"./ModalDownloadPreview\";\nimport ModalLogin from \"./ModalLogin\";\nimport ModalLoginSuccess from \"./ModalLoginSuccess\";\nimport ModalPassword from \"./ModalPassword\";\nimport LicensePage from \"../../containers/LicensePage\";\nimport PlaylistModal from \"../../components/PlaylistModal\";\nimport ModalPlaySignUp from \"./ModalPlaySignUp\";\nimport RemoveStyleModal from \"../RemoveStyleModal\";\nimport NotificationCounter from \"./NotificationCounter\";\nimport SpinnerIcon from \"../../styles/svg-components/SpinnerIcon\";\nimport Notification from \"../../styles/svg-components/Notification\";\n\nimport { getImgixUrl, sanitizeString } from \"../../utils/helpers\";\nimport distractionFreePages from \"../../distraction-free.json\";\nimport darkThemePages from \"../../dark-theme-pages.json\";\nimport isEmpty from \"lodash/isEmpty\";\nimport AutoClearModal from \"../../containers/CustomerPage/LicenseHistory/AutoClearModal.js\";\nimport SeeMoreModal from \"../../containers/CustomerPage/LicenseHistory/SeeMoreModal.js\";\nclass Header extends Component {\n constructor(props) {\n super(props);\n\n this.notificationVersion = \"4\"; // Needs to be a string\n this.siteHasBanner = true;\n\n this.state = {\n query: false,\n suggested: {},\n displayTrending: false,\n pages: [],\n isSearchLoading: false,\n userAuthKey: \"\",\n userDisplayName: false,\n userHasArtistAccount: false,\n userHasCustomerAccount: false,\n suggestedCounter: 0,\n showNotificationTimer: false,\n notificationShown: false,\n siteVersion: \"\",\n fetchingVersion: false,\n showNewVersionPrompt: false,\n hasLeftHomepage: this.props.location.pathname !== \"/\",\n isHomepage: this.props.location.pathname === \"/\",\n };\n\n // If the auth_token isn't in the sessionStorage, check the cookies\n if (sessionStorage.getItem(\"auth_token\")) {\n if (document.cookie.indexOf(\"auth_token=\") === -1) {\n sessionStorage.removeItem(\"auth_token\");\n }\n }\n // If the auth_token is in the sessionStorage and there's no cookie, remove it\n if (!sessionStorage.getItem(\"auth_token\")) {\n if (!sessionStorage.getItem(\"customer_guid\")) {\n const guid = generateGuid();\n sessionStorage.setItem(\"customer_guid\", guid);\n setCookie(\"customer_guid\", guid, 180);\n }\n }\n\n if (\n !sessionStorage.getItem(\"auth_token\") ||\n sessionStorage.getItem(\"auth_token\") === \"undefined\"\n ) {\n if (document.cookie.indexOf(\"auth_token=\") !== -1) {\n const cookiestring = RegExp(\"auth_token[^;]+\").exec(document.cookie);\n // Return everything after the equal sign, or an empty string if the cookie name not found\n const authTokenCookie = decodeURIComponent(\n cookiestring ? cookiestring.toString().replace(/^[^=]+./, \"\") : \"\"\n );\n if (authTokenCookie !== \"undefined\") {\n sessionStorage.setItem(\"auth_token\", authTokenCookie);\n sessionStorage.setItem(\"loggedin_in\", true);\n this.props.onSetLoginStatus(true);\n this.state.useAuthKey = authTokenCookie;\n }\n }\n } else if (\n sessionStorage.getItem(\"auth_token\") &&\n sessionStorage.getItem(\"auth_token\") !== \"undefined\"\n ) {\n this.props.onSetLoginStatus(true);\n }\n\n // Safari gives us some... unique styling challenges. This helps to filter them out\n // https://stackoverflow.com/a/23522755/1482673\n this.isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n // Bind class methods scope.\n this.checkDarkTheme = this.checkDarkTheme.bind(this);\n this.checkDistractionFree = this.checkDistractionFree.bind(this);\n this.checkSiteVersion = this.checkSiteVersion.bind(this);\n this.onSearchChange = this.onSearchChange.bind(this);\n this.onSearchFocus = this.onSearchFocus.bind(this);\n this.handleDismissExpirationNotice =\n this.handleDismissExpirationNotice.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleResultClick = this.handleResultClick.bind(this);\n this.handleCookieNoticeClick = this.handleCookieNoticeClick.bind(this);\n this.logoutSession = this.logoutSession.bind(this);\n this.handleAddModal = this.handleAddModal.bind(this);\n this.handleRemoveModal = this.handleRemoveModal.bind(this);\n this.onSearchChangeHandler = this.onSearchChangeHandler.bind(this);\n this.handleBrowserMenu = this.handleBrowserMenu.bind(this);\n this.handleLogin = this.handleLogin.bind(this);\n this.showNotification = this.showNotification.bind(this);\n this.handleNotificationIn = this.handleNotificationIn.bind(this);\n this.handleNotificationOut = this.handleNotificationOut.bind(this);\n this.handleCloseNotification = this.handleCloseNotification.bind(this);\n this.handleCloseNotificationTimer =\n this.handleCloseNotificationTimer.bind(this);\n\n this.checkDistractionFree(this.props.location.pathname);\n this.checkDarkTheme(this.props.location.pathname);\n }\n\n // Lifecycle method.\n componentWillMount() {\n this.delayedCallback = _.debounce(this.onSearchChange, 200);\n }\n\n // Lifecycle method.\n componentDidMount() {\n let versionCheckInterval = Config.VERSION_CHECK_INTERVAL;\n\n if (!versionCheckInterval) {\n versionCheckInterval = 30000;\n }\n\n if (this.isSafari) {\n $(\"body\").addClass(\"is-safari\");\n }\n\n HeaderSearch();\n if (this.props.location.query.search) {\n $(\"#search\").trigger(\"click\");\n }\n\n MainJavascript();\n\n if (\n getCookie(\"dismissed_cookie_notice\") === \"1\" ||\n sessionStorage.getItem(\"dismissed_cookie_notice\") === \"1\"\n ) {\n this.setState({ userDismissedCookieNotice: true });\n } else {\n this.setState({ userDismissedCookieNotice: false });\n }\n\n if (this.showNotification(this.state.isHomepage)) {\n this.props.showNotificationSuccess(true);\n }\n // Setup Site\n this.onSetupSite();\n\n this.versionChecker = setInterval(\n () => this.checkSiteVersion(),\n versionCheckInterval\n );\n\n const rtCode = qs.parse(this.props.location.search, {\n ignoreQueryPrefix: true,\n }).rt;\n if (rtCode) {\n const authToken = sessionStorage.getItem(\"auth_token\");\n\n localStorage.setItem(\"rt_code\", rtCode);\n\n $.post(\n `${Config.API}referralSource/click`,\n {\n rt_code: rtCode,\n token: authToken,\n },\n function (data) {\n // console.log(data);\n }\n );\n }\n }\n componentWillReceiveProps(nextProps) {\n if (this.props.location.pathname !== nextProps.location.pathname) {\n /* Check Distraction Free mode */\n this.checkDistractionFree(nextProps.location.pathname);\n this.checkDarkTheme(nextProps.location.pathname);\n\n /* Flag when the user leaves the home page */\n if (nextProps.location.pathname !== \"/\") {\n this.setState({ hasLeftHomepage: true });\n }\n\n /* Check Distraction Free mode */\n let isHomepage = nextProps.location.pathname === \"/\";\n this.setState({\n isHomepage,\n });\n if (this.showNotification(isHomepage) && !this.state.notificationShown) {\n this.setState({ notificationShown: true });\n this.props.showNotificationSuccess(true);\n }\n }\n }\n\n getGeneratedLicenseCode = async (licenseId, isSubscriptionLicense) => {\n return generateLicenseCode(licenseId, isSubscriptionLicense)\n .then((response) => {\n if (Config.BYPASS_ORFIUM) {\n return this.props.downloadTrackInfo({\n success: true,\n licenseCode: \"TESTLICENSE101\",\n });\n } else {\n if (response.success) {\n console.log(\"success\", response);\n\n return this.props.downloadTrackInfo(response);\n } else if (!response.success) {\n if (response.isCalling) {\n this.getGeneratedLicenseCode(licenseId);\n } else {\n console.log(\"fail\", response);\n return this.props.generateLicenseCodeError(response);\n }\n }\n }\n })\n .catch((err) => err);\n };\n\n componentWillUnmount() {\n clearInterval(this.versionChecker);\n }\n\n checkSiteVersion() {\n if (!this.state.fetchingVersion) {\n this.setState({ fetchingVersion: true });\n\n $.ajax({\n type: \"GET\",\n url: `${Config.API}get_site_version`,\n })\n .done((response) => {\n if (\n response.siteVersion &&\n response.siteVersion !== this.state.siteVersion\n ) {\n try {\n dataLayer.push({ event: \"reload_prompt_shown\" });\n } catch (e) {}\n\n this.setState({\n siteVersion: response.siteVersion,\n showNewVersionPrompt: true,\n fetchingVersion: false,\n });\n } else {\n this.setState({ fetchingVersion: false });\n }\n })\n .fail(() => {\n this.setState({ fetchingVersion: false });\n });\n }\n }\n\n checkDistractionFree(pathName) {\n let setDistractionFreeMode = distractionFreePages.indexOf(pathName) !== -1;\n\n if (pathName !== \"/\") {\n for (var i = 0; i < distractionFreePages.length; i++) {\n if (pathName.includes(distractionFreePages[i])) {\n setDistractionFreeMode = true;\n }\n }\n }\n\n if (setDistractionFreeMode) {\n $(\"body\").addClass(\"distraction-free\");\n } else {\n $(\"body\").removeClass(\"distraction-free\");\n }\n }\n\n checkDarkTheme(pathName) {\n let setDarkTheme = darkThemePages.indexOf(pathName) !== -1;\n\n if (pathName !== \"/\") {\n for (var i = 0; i < darkThemePages.length; i++) {\n if (pathName.includes(darkThemePages[i])) {\n setDarkTheme = true;\n }\n }\n } else {\n setDarkTheme = true;\n }\n\n if (setDarkTheme) {\n $(\"body\").addClass(\"dark-theme\");\n } else {\n $(\"body\").removeClass(\"dark-theme\");\n }\n }\n\n showNotification() {\n // Currently no notifications to display.\n // return false;\n\n // Uncomment when new notification in place\n return (\n localStorage.getItem(\"header_alert_dismissed\") !==\n this.notificationVersion\n );\n }\n\n handleDismissExpirationNotice() {\n const authToken = getAuthToken();\n dismissExpirationNotice(authToken)\n .then((data) => {})\n .catch((err) => err);\n\n this.props.setHasExpiredNotice(false);\n }\n\n onSetupSite() {\n return new Promise((resolve, reject) =>\n setupSite()\n .then((data) => {\n if (data.status === \"success\") {\n if (data.user?.email) {\n // Enhanced Conversions\n gtag(\"set\", \"user_data\", {\n email: data.user.email,\n });\n }\n //sessionStorage.removeItem('customer_guid');\n sessionStorage.setItem(\"ai_credits\", data.chatgpt.remaining);\n\n sessionStorage.setItem(\"currency_id\", data.currency.id);\n sessionStorage.setItem(\n \"currency_symbol\",\n data.currency.symbol_left\n );\n sessionStorage.setItem(\"currency_value\", data.currency.value);\n sessionStorage.setItem(\"currency_code\", data.currency.code);\n\n if (data.basket_data.tracks) {\n sessionStorage.setItem(\"basket_count\", data.basket_data.count);\n sessionStorage.setItem(\n \"basket_track_ids\",\n JSON.stringify(data.basket_data.tracks)\n );\n } else {\n sessionStorage.setItem(\"basket_count\", 0);\n }\n\n sessionStorage.setItem(\n \"playlists_data\",\n JSON.stringify(data.playlists_data)\n );\n sessionStorage.setItem(\n \"favourites_data\",\n JSON.stringify(data.favourites_data)\n );\n\n // Save trusted user data to session storage\n if (data.user.isTrusted) {\n sessionStorage.setItem(\"is_trusted\", true);\n sessionStorage.setItem(\"trusted_name\", data.user.trustedName);\n } else {\n sessionStorage.removeItem(\"is_trusted\");\n sessionStorage.removeItem(\"trusted_name\");\n }\n\n if (data.siteVersion) {\n this.setState({ siteVersion: data.siteVersion });\n }\n\n if (data.be_branch) {\n sessionStorage.setItem(\n \"be_branch\",\n JSON.stringify(data.be_branch).replace(/\\\"/g, \"\")\n );\n }\n\n if (data.user.is_authenticated) {\n sessionStorage.setItem(\"auth_token\", data.user.auth_token);\n setCookie(\"auth_token\", data.user.auth_token, 180);\n sessionStorage.setItem(\n \"customer_account\",\n data.user.hasAccountCustomer\n );\n\n if (data.user.hasAccountArtist) {\n sessionStorage.setItem(\n \"artist_account\",\n data.user.hasAccountArtist\n );\n }\n\n if (data.user.hasAccountAdmin) {\n sessionStorage.setItem(\n \"admin_account\",\n data.user.hasAccountAdmin\n );\n }\n } else {\n sessionStorage.removeItem(\"auth_token\");\n setCookie(\"auth_token\", data.user.auth_token, 180);\n sessionStorage.removeItem(\"artist_account\");\n sessionStorage.removeItem(\"customer_account\");\n sessionStorage.removeItem(\"admin_account\");\n }\n\n // Add favorites ids to redux store.\n this.props.loadUserData({\n ...data.user,\n isPaymentTabDisplay: data.isPaymentTabDisplay,\n isSubscriptionTabDisplay: !isEmpty(data.subscriptionData),\n });\n if (data.user.hasAccountAdmin && data.admin) {\n this.props.loadAdminData(data.admin);\n }\n this.props.loadFavorites(data.favourites_data);\n this.props.loadFollowing(data.following);\n this.props.loadSubscriptionData(\n data.subscriptionData,\n data.user.is_authenticated\n );\n this.props.loadCurrency(data.currency);\n this.props.loadCountry(data.country);\n\n if (data.user.is_authenticated) {\n this.setState({\n userAuthKey: data.user.auth_token,\n userDisplayName: data.user.company\n ? data.user.company\n : data.user.firstName,\n userHasAdminAccount: data.user.hasAccountAdmin,\n userHasCustomerAccount: data.user.hasAccountCustomer,\n userHasArtistAccount: data.user.hasAccountArtist,\n });\n\n this.props.onSetLoginStatus(true);\n this.props.setEnteredProfession(data.enteredProfession);\n\n sessionStorage.setItem(\"auth_token\", data.user.auth_token);\n setCookie(\"auth_token\", data.user.auth_token, 180);\n\n sessionStorage.removeItem(\"customer_guid\");\n } else {\n this.props.onSetLoginStatus(false);\n sessionStorage.removeItem(\"user_is_authenticated\");\n }\n resolve(data);\n }\n })\n .catch((err) => {\n reject(err);\n return err;\n })\n );\n }\n\n showBasketIcon() {\n let showBasketIcon = true;\n let basketCount = parseInt(sessionStorage.getItem(\"basket_count\"));\n\n if (basketCount === 0) {\n showBasketIcon = false;\n }\n\n return showBasketIcon;\n }\n\n onSearchChangeHandler(event) {\n event.persist();\n this.delayedCallback(event);\n }\n\n // On Search keyword change handler.\n onSearchChange(event) {\n const keyword = sanitizeString(event.target.value);\n if (keyword.length < 1) {\n return this.setState({\n query: keyword,\n });\n }\n\n // Update keyword and search status.\n this.setState({\n query: keyword,\n isSearchLoading: true,\n });\n fetchSearchSuggested(keyword)\n .then((data) => {\n // Update search result.\n if (data.length === 0) {\n this.setState({ suggested: {}, displayTrending: true });\n } else {\n this.setState({ suggested: data, displayTrending: false });\n }\n\n // Update search status.\n this.setState({\n isSearchLoading: false,\n });\n })\n .catch((err) => {\n this.setState({\n suggested: {},\n isSearchLoading: false,\n });\n });\n }\n\n onSearchFocus(event) {\n if (event.target.value.length < 1) {\n this.setState({ displayTrending: true });\n }\n }\n\n handleRemoveModal() {\n this.props.onRemoveModal();\n $(\"body\").removeClass(\"modal-overlay-active\");\n }\n\n handleAddModal(event) {\n let modalType;\n if (typeof event === \"object\") {\n event.preventDefault();\n modalType = event.target.id;\n } else if (typeof event === \"string\") {\n modalType = event;\n } else {\n return;\n }\n\n this.props.onAddModal(modalType);\n $(\"body\").addClass(\"modal-overlay-active\");\n }\n\n // Reload Page.\n reloadPage() {\n window.location.reload(true);\n }\n\n /**\n * Logout\n * Clear the sessionStorage and set the loggedin state to false\n * @returns {boolean}\n */\n logoutSession() {\n fetchLogout()\n .then((data) => {\n if (data.status) {\n sessionStorage.clear();\n document.cookie = `MV_AUTH_TOKEN=; expires=Thu, 01 Jan 1970 00:00:01 GMT;domain=${Config.COOKIE_DOMAIN};path=/;`;\n document.cookie = `auth_token=; expires=Thu, 01 Jan 1970 00:00:01 GMT;domain=${Config.COOKIE_DOMAIN};path=/;`;\n document.cookie = `MUSICVINE_SESS=; expires=Thu, 01 Jan 1970 00:00:01 GMT;domain=${Config.COOKIE_DOMAIN};path=/;`;\n const cookies = document.cookie.split(\";\");\n for (let i = 0; i < cookies.length; i++) {\n const cookie = cookies[i];\n const eqPos = cookie.indexOf(\"=\");\n const name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie;\n document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:01 GMT;domain=${Config.COOKIE_DOMAIN};path=/;`;\n }\n this.props.onSetLoginStatus(false);\n this.reloadPage();\n }\n })\n .catch((err) => err);\n }\n\n // Handle search result click.\n handleResultClick(type, result) {\n let query = 0;\n if (this.state.query) {\n query = this.state.query;\n }\n this.setState({ query: false, suggested: {}, displayTrending: false });\n fetchUpdateTrend(type, result, query);\n\n /**\n * Close the search modal.\n * TODO: This is hacky but we need to get this out the door\n */\n if ($(\"body\").hasClass(\"search-on\")) {\n $(\"#search\").click();\n }\n\n document.getElementById(\"main-search__input\").value = \"\";\n }\n\n // Handle cookie notice click.\n handleCookieNoticeClick(type, result) {\n sessionStorage.setItem(\"dismissed_cookie_notice\", \"1\");\n setCookie(\"dismissed_cookie_notice\", \"1\", 180);\n this.setState({ userDismissedCookieNotice: true });\n }\n\n // On Search submit (deactivate)\n handleSubmit(event) {\n event.preventDefault();\n const keyword = sanitizeString($(\"#main-search__input\").val());\n\n if (keyword === \"\") {\n return false;\n }\n this.context.router.push(`/browse/search/${keyword}`);\n $(\"#main-search__input\").val(\"\");\n this.setState({ query: false, suggested: {}, displayTrending: false });\n\n if (\n $(\"body\").hasClass(\"search-on\") ||\n $(\"main-search\").hasClass(\"search-displayed\")\n ) {\n $(\"#search\").click();\n }\n }\n\n handleBrowserMenu(event) {\n let currentLink = event.target.attributes.href.value;\n\n if (!_.isEmpty(this.props.location.query)) {\n if (currentLink === this.props.location.pathname) {\n this.props.onSetAppliedFilters();\n this.props.onSetNotFiltered();\n }\n }\n\n $(\"body\").removeClass(\"menu-open\");\n }\n handleLogin() {\n makeLoginAttempt({ requestIntent: this.props.modal.intent }).then(\n (response) => {\n this.onSetupSite().then(() => {\n if (this.props.modal.intent === \"checkout-payment\") {\n this.props.router.push(response);\n }\n this.handleRemoveModal();\n this.props.showSigninSuccess(this.state.userDisplayName);\n });\n }\n );\n }\n handleNotificationIn() {\n if (\n this.props.headerNotifications.notification &&\n this.props.headerNotifications.notificationTimer\n )\n return false;\n this.setState({ notificationShown: true });\n this.props.showNotificationSuccess();\n return false;\n }\n handleNotificationOut() {\n if (\n this.props.headerNotifications.notification &&\n this.props.headerNotifications.notificationTimer\n )\n return false;\n this.props.hideNotificationSuccess();\n return false;\n }\n handleCloseNotification() {\n localStorage.setItem(\"header_alert_dismissed\", this.notificationVersion);\n setCookie(\"header_alert_dismissed\", this.notificationVersion, 180);\n this.props.hideNotificationSuccess();\n }\n handleCloseNotificationTimer() {\n this.props.hideNotificationSuccess();\n }\n render() {\n const badgeWidth = document.getElementById(\"cart-total-number\");\n const checkoutPath = \"/checkout/cart\";\n\n if (this.state.isHomepage) {\n StickyHeader();\n }\n\n let menuOptions = \"\";\n const userHasCustomerAccount =\n sessionStorage.getItem(\"customer_account\") === \"true\";\n const userHasArtistAccount =\n sessionStorage.getItem(\"artist_account\") === \"true\";\n\n if (!userHasArtistAccount) {\n if (this.props.userAuth.isLoggedIn) {\n menuOptions = (\n \n
  • \n My Favorites\n
  • \n
  • \n My Playlists\n
  • \n
  • \n Following\n
  • \n {this.props.userAuth.isSubscriptionTabDisplay && (\n
  • \n \n License History\n \n
  • \n )}\n {!this.props.userAuth.isSubscriptionTabDisplay && (\n
  • \n \n License History\n \n
  • \n )}\n
  • \n Account\n
  • \n
  • \n Sign Out\n
  • \n \n );\n }\n }\n\n if (userHasArtistAccount) {\n if (this.props.userAuth.isLoggedIn) {\n menuOptions = (\n \n
  • \n Earnings\n
  • \n
  • \n Statement\n
  • \n
  • \n Portfolio\n
  • \n
  • \n Account\n
  • \n
  • \n Sign Out\n
  • \n \n );\n }\n }\n\n if (!this.props.userAuth.isLoggedIn) {\n menuOptions = (\n \n
  • \n \n Sign In\n \n
  • \n \n );\n }\n\n if (\n this.props.userAuth.isLoggedIn &&\n userHasCustomerAccount &&\n userHasArtistAccount\n ) {\n menuOptions = (\n \n
  • \n Customer Account\n
  • \n
  • \n Artist Account\n
  • \n
  • \n Sign Out\n
  • \n \n );\n }\n\n let NewVersionPromptMsg = \"\";\n if (this.state.showNewVersionPrompt) {\n NewVersionPromptMsg = (\n \n );\n }\n\n return (\n
    \n {/* Start of header */}\n \n {Config.DEPLOY_BRANCH && !this.state.userHasAdminAccount && (\n
    \n FE Branch: {Config.DEPLOY_BRANCH}\n
    \n BE Branch: {sessionStorage.getItem(\"be_branch\")}\n
    \n )}\n
    \n
    \n {this.state.userHasAdminAccount && }\n
    \n {this.showBasketIcon() && (\n
    \n \n
    \n \n
    \n
    \n {sessionStorage.getItem(\"basket_count\") > 0 && (\n \n {sessionStorage.getItem(\"basket_count\")}\n \n )}\n
    \n \n
    \n )}\n
    \n
    \n \n \n \n \n \n {/* Desktop Menu */}\n \n \n
  • \n \n Blog\n \n
  • \n \n {/* End Desktop Menu */}\n {/* Mobile Menu */}\n
    \n Browse\n \n {/* Playlist Generator\n */}\n About\n \n Blog\n \n Account\n
      \n {this.props.userAuth.isLoggedIn && (\n \n
    • \n \n My Favorites\n \n
    • \n
    • \n My Playlists\n
    • \n {!userHasArtistAccount && (\n
    • \n My Account\n
    • \n )}\n\n {userHasArtistAccount && (\n \n
    • \n \n Artist Earnings\n \n
    • \n
    • \n \n Artist Account\n \n
    • \n
      \n )}\n\n
    • \n \n Sign Out\n \n
    • \n
      \n )}\n\n {!this.props.userAuth.isLoggedIn && (\n \n
    • \n \n Create Account\n \n
    • \n
    • \n \n Sign In\n \n
    • \n
      \n )}\n
    \n
    \n {/* End Mobile Menu */}\n
    \n
    \n\n
    \n \n \n \n
    \n\n
    \n
    \n
      \n \n
      \n \n
      \n \n \n \n {\n if (!this.props.userAuth.isLoggedIn) {\n this.handleAddModal(\"login\");\n }\n }}\n >\n
      \n {this.props.userAuth.isLoggedIn ? (\n \n ) : (\n \n )}\n
      \n \n\n {/* Login list */}\n {menuOptions}\n
      \n\n {this.showBasketIcon() && (\n
    • \n \n
      \n \n
      \n \n {sessionStorage.getItem(\"basket_count\") > 0 && (\n \n {sessionStorage.getItem(\"basket_count\")}\n \n )}\n
    \n \n \n )}\n {\n !this.props.userAuth.isLoggedIn &&\n this.props.location.pathname !==\n \"/create-account\" && (\n
    \n \n Create Account\n \n
    \n )\n //
  • Start Free Trial
  • \n }\n \n \n {this.props.headerNotifications.track && (\n \n
    \n \n
    \n
    \n
    \n

    \n \n {this.props.headerNotifications.track.name}\n \n

    \n

    \n Saved to{\" \"}\n {this.props.headerNotifications.newPlaylist\n ? \"new \"\n : \"\"}\n playlist:\n

    \n

    \n \n {this.props.headerNotifications.playlistName}\n \n

    \n
    \n
    \n
    \n )}\n\n {this.props.headerNotifications.signin && (\n \n

    \n Welcome back\n {this.props.headerNotifications.firstName &&\n this.props.headerNotifications.firstName !== \"\" &&\n `, ${this.props.headerNotifications.firstName}`}\n !\n

    \n
    \n )}\n\n
    \n
    \n \n
    \n \n \n \n
    \n (this.searchInput = ref)}\n type=\"search\"\n name=\"search\"\n autoComplete=\"off\"\n id=\"main-search__input\"\n className=\"search-field\"\n onFocus={this.onSearchFocus}\n onChange={this.onSearchChangeHandler}\n placeholder=\"Search styles, moods, artists and tracks\"\n />\n \n
    \n\n
    \n {/* Trending list */}\n
    \n
      \n {($(\"body\").hasClass(\"search-on\") ||\n $(\"main-search\").hasClass(\n \"search-displayed\"\n )) && (\n \n )}\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n {this.props.subscriptionData.overduePayment &&\n this.props.subscriptionData.overduePayment.id && (\n
    \n

    \n Heads up! Your latest subscription payment\n failed.{\" \"}\n \n Resolve now\n \n .\n

    \n
    \n )}\n {this.props.subscriptionData.hasExpiredNotice && (\n
    \n

    \n Heads up! Your subscription has expired.{\" \"}\n \n Dismiss\n \n .\n

    \n
    \n )}\n {this.props.subscriptionData.isPaused && (\n
    \n

    \n Your subscription has been paused. To resume your subscription\n early, please contact us.\n

    \n
    \n )}\n \n\n {NewVersionPromptMsg}\n\n {this.props.modal.type == \"login\" && (\n \n )}\n\n {this.props.modal.type == \"success\" && (\n \n )}\n\n {this.props.modal.type == \"password\" && (\n \n )}\n\n {this.props.modal.type == \"signup\" && (\n \n )}\n\n {this.props.modal.type === \"playSignup\" && (\n \n )}\n\n {this.props.modal.type === \"downloadPreview\" && (\n \n )}\n\n {this.props.license.active && (\n \n )}\n\n {this.props.playlist.active && (\n \n )}\n\n {this.props.modal.type === \"autoClear\" && (\n \n )}\n\n {this.props.modal.type === \"seeMoreLicenseOption\" && (\n \n )}\n\n {this.props.modal.type === \"removeStyle\" && (\n \n )}\n {/* Start of overlay */}\n
    \n
    \n {/* End of overlay */}\n
    \n );\n }\n}\n\n// Pure component for selecting right search result.\nconst SearchResult = ({\n keyword,\n isSearchLoading,\n suggested,\n handleResultClick,\n}) => {\n if (keyword === false || keyword.length < 1) {\n return (\n \n Trending searches\n \n \n );\n }\n\n // If not result found.\n if (_.size(suggested) === 0) {\n return false;\n }\n\n // Show search result.\n return (\n \n );\n};\n\nHeader.propTypes = {\n params: PropTypes.object,\n loadUserData: PropTypes.func,\n loadAdminData: PropTypes.func,\n loadFavorites: PropTypes.func,\n loadFollowing: PropTypes.func,\n loadSubscriptionData: PropTypes.func,\n loadCurrency: PropTypes.func,\n};\n\nHeader.contextTypes = {\n router: PropTypes.object,\n};\n\n// Map redux actions to local props.\nconst mapDispatchToProps = (dispatch) => ({\n onAddModal: (modal, intent) => {\n dispatch(addModal(modal, intent));\n },\n onSetLoginStatus: (status) => {\n dispatch(setLoginStatus(status));\n },\n setEnteredProfession: (status) => {\n dispatch(setEnteredProfession(status));\n },\n onRemoveModal: () => {\n dispatch(removeModal());\n },\n onRemovePlaylist: () => {\n dispatch(removePlaylist());\n },\n onMakeRegisterAttempt: (intent) => {\n dispatch(makeRegisterAttempt(false, intent));\n },\n onSubmitSupplementalUserData: () => {\n dispatch(submitSupplementalUserData());\n },\n loadUserData: (user) => {\n dispatch(loadUserData(user));\n },\n loadAdminData: (adminData) => {\n dispatch(loadAdminData(adminData));\n },\n loadFavorites: (favorites) => {\n dispatch(loadFavorites(favorites));\n },\n loadFollowing: (following) => {\n dispatch(loadFollowing(following));\n },\n loadSubscriptionData: (subscriptionData, isLoggedIn) => {\n dispatch(loadSubscriptionData(subscriptionData, isLoggedIn));\n },\n setHasExpiredNotice: (hasExpiredNotice) => {\n dispatch(setHasExpiredNotice(hasExpiredNotice));\n },\n loadCurrency: (currency) => {\n dispatch(loadCurrency(currency));\n },\n loadCountry: (country) => {\n dispatch(loadCountry(country));\n },\n onSetAppliedFilters: (locationQuery) => {\n dispatch(setAppliedFilters(locationQuery));\n },\n onSetNotFiltered: () => {\n dispatch(setNotFiltered());\n },\n showNotificationSuccess: (timer) => {\n if (timer) {\n [this || {}].timer = setTimeout(() => {\n dispatch(showNotificationSuccess(timer));\n [this || {}].timer = setTimeout(() => {\n dispatch(animateInTooltip());\n }, 10);\n }, 4000);\n } else {\n dispatch(showNotificationSuccess());\n dispatch(animateInTooltip());\n }\n },\n hideNotificationSuccess: () => {\n dispatch(animateOutTooltip());\n dispatch(hideNotificationSuccess());\n },\n showSigninSuccess: (firstName) => {\n [this || {}].timer = setTimeout(() => {\n dispatch(showSigninSuccess(firstName));\n [this || {}].timer = setTimeout(() => {\n dispatch(animateInTooltip());\n [this || {}].timer = setTimeout(() => {\n dispatch(animateOutTooltip());\n [this || {}].timer = setTimeout(() => {\n dispatch(hideSigninSuccess());\n }, 400);\n }, 4000);\n }, 10);\n }, 400);\n },\n downloadTrackInfo: (data) => dispatch(downloadTrackInfo(data)),\n generateLicenseCodeError: (data) => dispatch(generateLicenseCodeError(data)),\n generateLicenseCodeStart: () => dispatch(generateLicenseCodeStart()),\n});\n\n// Map redux states to local props.\nconst mapStateToProps = (state) => ({\n license: state.get(\"license\"),\n modal: state.get(\"modal\"),\n playlist: state.get(\"playlist\"),\n player: state.get(\"footerPlayer\"),\n subscriptionData: state.get(\"subscriptionData\"),\n headerNotifications: state.get(\"headerNotifications\"),\n userAuth: state.get(\"userAuth\"),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(Header));\n","export function HeaderSearch() {\n\n // Search functionality\n // ---------------------------------------------------------\n var $body = $('body');\n var $mainSearch = $('.main-search');\n var $searchSuggestionList = $('.main-search__suggestions');\n var $searchSuggestionItems = $searchSuggestionList.children('li');\n var searchIcon = $(' ');\n var closeIcon = $('');\n\n function toggleSearch() {\n if(! $body.hasClass('search-on')) {\n $body.addClass('search-on');\n $mainSearch.addClass('search-displayed');\n $('#search').html(closeIcon);\n $('#main-search__input').focus();\n } else {\n $body.removeClass('search-on');\n $mainSearch.removeClass('search-displayed');\n $mainSearch.add($searchSuggestionItems);\n $('#search').html(searchIcon);\n }\n }\n\n $(\"#search\").on('click', function(e){\n e.stopPropagation();\n toggleSearch();\n });\n\n // Close search click outside\n $(document).on(\"click\", function(event){\n if( $(\"body\").is(\".search-on\") ) {\n\n var stickyHeader = $(\".sticky-header\");\n if( !$(event.target).is(stickyHeader) && $(event.target).closest(stickyHeader).length === 0) {\n toggleSearch();\n }\n }\n });\n\n}\n","import fetch from 'isomorphic-fetch';\nimport { API } from '../../../constants';\n\nexport function MainJavascript() {\n // JS\n //\n // Javascript functionality\n\n // Globals\n // ---------------------------------------------------------\n\n const body = $('body');\n\n // Mobile menu\n // ---------------------------------------------------------\n const hamburger = document.querySelector('.hamburger-icon');\n\n // When clicked add class to the body\n hamburger.addEventListener('click', () => {\n body.toggleClass('menu-open');\n });\n\n // Categories dropdown\n // ---------------------------------------------------------\n const categoriesOption = $('.categories__option a');\n const categoryExtra = $('.categories__extra');\n const categoryOuterHeight = $('.categories__extra').outerHeight();\n\n const categoriesDropdown = function (e) {\n // Give body class\n body.toggleClass('categories-toggle');\n\n e.preventDefault();\n if (body.is('.categories-toggle')) {\n $('.categories__text-toggle').text('Show fewer');\n } else {\n $('.categories__text-toggle').text('Show more');\n }\n\n // Animate extra items\n categoryExtra.each((i, value) => {\n if (body.hasClass('categories-toggle')) {\n $(value).css('display', 'block');\n $(value).removeClass('animated fadeOutLeft');\n $(value).addClass('animated fadeInLeft');\n }\n if (!body.hasClass('categories-toggle')) {\n $(value).removeClass('animated fadeInLeft');\n $(value).addClass('animated fadeOutLeft');\n setTimeout(() => {\n $(value).hide();\n }, 1000);\n }\n });\n };\n\n categoriesOption.on('click', categoriesDropdown);\n\n // Category active\n // ---------------------------------------------------------\n const categoryLink = $('.categories__list li a');\n\n function activeState(e) {\n if ($(this).closest('.categories__list')) {\n e.preventDefault();\n const categoriesActive = $('.categories__list').find('li a');\n categoriesActive.removeClass('categories__active');\n $(this).addClass('categories__active');\n }\n }\n\n categoryLink.on('click', activeState);\n\n // Follow\n // ---------------------------------------------------------\n const follow = $('.hero__block').next('.hero__share-btn').find('button');\n\n follow.on('click', function () {\n $(this).find('.hero__unfollow').show();\n $(this).find('.hero__follow').hide();\n body.toggleClass('social-following');\n\n if (body.is('.social-following')) {\n $(this).find('.hero__follow').hide();\n $(this).find('.hero__unfollow').show();\n } else {\n $(this).find('.hero__unfollow').hide();\n $(this).find('.hero__follow').show();\n }\n });\n\n // Responsive filter\n const filterBtn = $('#filter-btn');\n const filterClose = $('#filter-close');\n const filterResponsive = $('.filter-responsive');\n const filterResponsiveContent = $('.filter-responsive__content');\n const filterResponsiveItem = $('.filter-responsive__item');\n const filterResponsiveLinks = $('.filter-responsive__links');\n const filterResponsiveLinksSecondary = $('.filter-responsive__links--secondary');\n const filterSidebarCategory = $('.filter-responsive__sidebar-category');\n const filterSidebarCategoryItem = $('.filter-responsive__sidebar-category-item');\n const filterSubCatCategoryItem = $('.filter-responsive__sidebar-sub-category');\n\n // Open filter\n filterBtn.on('click', () => {\n filterResponsive.fadeIn();\n $(body).toggleClass('filter-open');\n\n // Active Links\n filterResponsiveLinks.on('click', function () {\n filterResponsiveLinks.removeAttr('id', 'filter-link-active');\n $(this).attr('id', 'filter-link-active');\n });\n\n // Active links secondary\n filterResponsiveLinksSecondary.on('click', function () {\n filterResponsiveLinksSecondary.removeAttr('id', 'filter-link-active-secondary');\n $(this).attr('id', 'filter-link-active-secondary');\n });\n\n filterClose.on('click', () => {\n filterResponsive.fadeOut();\n filterSidebarCategory.hide();\n filterResponsiveContent.removeClass('remove-content');\n filterSubCatCategoryItem.hide();\n $('.filter-responsive__dropdown').hide();\n filterResponsiveLinks.removeClass('filter-active');\n filterResponsiveLinksSecondary.removeAttr('id', 'filter-link-active-secondary');\n filterResponsiveLinks.removeAttr('id', 'filter-link-active');\n });\n });\n\n // Open filter category\n filterResponsiveItem.on('click', function () {\n filterSidebarCategory.hide();\n $(this).find(filterSidebarCategory).show();\n filterResponsiveContent.addClass('remove-content');\n $(filterResponsiveLinks).removeClass('filter-active');\n $(this).find('.filter-responsive__links').addClass('filter-active');\n\n // Open sub category\n filterSidebarCategoryItem.on('click', function () {\n filterSubCatCategoryItem.hide();\n $(this).find(filterSubCatCategoryItem).show();\n\n const dropdownChild = $(filterSubCatCategoryItem).children('li');\n dropdownChild.unbind().click(function (e) {\n e.stopPropagation();\n $(this).children('.filter-responsive__dropdown').slideToggle();\n $(this).find('.filter-selection-btn').toggleClass('filter-dropdown-open');\n\n $(this).children('.filter-responsive__dropdown').unbind().on('click', (e) => {\n e.stopPropagation();\n });\n });\n });\n\n // Open secondary sub category\n const filterResponsiveDropdownSecondary = $('.filter-responsive__sidebar-category--secondary').children('li');\n filterResponsiveDropdownSecondary.unbind().on('click', function (e) {\n e.stopPropagation();\n $(this).find('.filter-responsive__dropdown--secondary').slideToggle();\n $(this).find('.filter-selection-btn').toggleClass('filter-dropdown-open');\n\n $(this).children('.filter-responsive__dropdown--secondary').unbind().on('click', (e) => {\n e.stopPropagation();\n });\n });\n });\n\n // Styles dropdown browse page\n const filterStylesDropdown = $('.filter__styles-dropdown');\n const filterStylesDropdownClose = $('#filter-styles-dropdown-close');\n}\n","export function StickyHeader() {\n $(\"body\").removeClass(\"menu-transition-active\");\n $('.logo-transition').removeClass('sticky-header-transition');\n const body = $(\"body\");\n // var stickyHeader = $('.sticky-header');\n\n body.addClass('sticky-header-active');\n\n const stickyLogo = function() {\n if (window.pageYOffset >= ( $(window).height() * 0.9 ) ) {\n $('.logo-transition').addClass('sticky-header-transition');\n $('.categories__logo').addClass('logo-transition');\n $(\".sticky-header, .header__inner-container\").addClass(\"active\");\n $(\"body\").addClass(\"menu-transition-active\");\n } else {\n $('.logo-transition').removeClass('sticky-header-transition');\n $('.categories__logo').removeClass('logo-transition');\n $(\".sticky-header, .header__inner-container\").removeClass(\"active\");\n $(\"body\").removeClass(\"menu-transition-active\");\n }\n };\n\n window.addEventListener(\"scroll\", stickyLogo);\n}\n","export function BrowseFilter() {\n\n var body = $(\"body\");\n\n // Responsive filter\n var filterBtn = $(\"#filter-btn\");\n var filterClose= $(\"#filter-close\");\n var filterResponsive = $(\".filter-responsive\");\n var filterResponsiveContent = $(\".filter-responsive__content\");\n var filterResponsiveItem = $(\".filter-responsive__item\");\n var filterResponsiveLinks = $(\".filter-responsive__links\");\n var filterResponsiveLinksSecondary = $(\".filter-responsive__links--secondary\");\n var filterSidebarCategory = $(\".filter-responsive__sidebar-category\");\n var filterSidebarCategoryItem = $(\".filter-responsive__sidebar-category-item\");\n var filterSubCatCategoryItem = $(\".filter-responsive__sidebar-sub-category\");\n\n // Open filter\n filterBtn.on(\"click\", function(){\n filterResponsive.fadeIn();\n $(body).toggleClass(\"filter-open\");\n\n // Active Links\n filterResponsiveLinks.on(\"click\", function(){\n filterResponsiveLinks.removeAttr('id', 'filter-link-active');\n $(this).attr('id', 'filter-link-active');\n });\n\n // Active links secondary\n filterResponsiveLinksSecondary.on(\"click\", function(){\n filterResponsiveLinksSecondary.removeAttr('id', 'filter-link-active-secondary');\n $(this).attr('id', 'filter-link-active-secondary');\n });\n\n filterClose.on(\"click\", function(){\n filterResponsive.fadeOut();\n filterSidebarCategory.hide();\n filterResponsiveContent.removeClass(\"remove-content\");\n filterSubCatCategoryItem.hide();\n $(\".filter-responsive__dropdown\").hide();\n filterResponsiveLinks.removeClass(\"filter-active\");\n filterResponsiveLinksSecondary.removeAttr('id', 'filter-link-active-secondary');\n filterResponsiveLinks.removeAttr('id', 'filter-link-active');\n });\n });\n\n // Open filter category\n filterResponsiveItem.on(\"click\", function(){\n filterSidebarCategory.hide();\n $(this).find(filterSidebarCategory).show();\n filterResponsiveContent.addClass(\"remove-content\");\n $(filterResponsiveLinks).removeClass(\"filter-active\");\n $(this).find(\".filter-responsive__links\").addClass(\"filter-active\");\n\n // Open sub category\n filterSidebarCategoryItem.on(\"click\", function(){\n filterSubCatCategoryItem.hide();\n $(this).find(filterSubCatCategoryItem).show();\n\n var dropdownChild = $(filterSubCatCategoryItem).children(\"li\");\n dropdownChild.unbind().click(function(e){\n e.stopPropagation();\n $(this).children(\".filter-responsive__dropdown\").slideToggle();\n $(this).find(\".filter-selection-btn\").toggleClass(\"filter-dropdown-open\");\n\n $(this).children(\".filter-responsive__dropdown\").unbind().on(\"click\", function(e) {\n e.stopPropagation();\n });\n });\n });\n\n // Open secondary sub category\n var filterResponsiveDropdownSecondary = $(\".filter-responsive__sidebar-category--secondary\").children(\"li\");\n filterResponsiveDropdownSecondary.unbind().on(\"click\", function(e){\n e.stopPropagation();\n $(this).find(\".filter-responsive__dropdown--secondary\").slideToggle();\n $(this).find(\".filter-selection-btn\").toggleClass(\"filter-dropdown-open\");\n\n $(this).children(\".filter-responsive__dropdown--secondary\").unbind().on(\"click\", function(e) {\n e.stopPropagation();\n });\n });\n });\n function volumeSlider() {\n body.addClass(\"volume-active\");\n $( \"#slider-vertical\" ).slider({\n orientation: \"vertical\",\n range: \"min\",\n min: 0,\n max: 100,\n value: 60,\n slide: function( event, ui ) {\n $( \"#amount\" ).val( ui.value );\n // Check if value is over 50%\n if(ui.value > 50) {\n body.removeClass(\"volume-low\");\n body.addClass(\"volume-high\");\n }\n else {\n body.removeClass(\"volume-high\");\n body.addClass(\"volume-low\");\n }\n if(ui.value <= 0) {\n body.addClass(\"volume-zero\");\n }\n if(ui.value > 0) {\n body.removeClass(\"volume-zero\");\n }\n },\n start: function(event, ui) {\n body.addClass(\"volume-active-start\");\n },\n stop: function(event, ui) {\n $(body).removeClass(\"volume-active\");\n body.removeClass(\"volume-active-start\");\n }\n });\n $( \"#amount\" ).val( $( \"#slider-vertical\" ).slider( \"value\" ) );\n };\n\n // Volume controls\n body.addClass(\"volume-low\");\n $(\".footer-player__volume-slider\").on(\"mouseenter\", function(){\n volumeSlider();\n });\n\n var sliderState = function() {\n if(body.is(\".volume-active-start\")) {\n body.addClass(\"volume-active\");\n } else {\n body.removeClass(\"volume-active\");\n }\n }\n\n $(\".footer-player__volume-slider\").on(\"mouseleave\", sliderState);\n\n // Active category\n $(\".filter__dropdown > li\").on(\"mouseenter\", function(){\n $(this).addClass(\"filter__dropdown-active\");\n });\n\n $(\".filter__dropdown--secondary li\").on(\"mouseenter\", function(){\n $(this).addClass(\"filter__dropdown-active\");\n });\n\n $(\".filter__dropdown > li\").on(\"mouseleave\", function(){\n $(this).removeClass(\"filter__dropdown-active\");\n });\n\n $(\".filter__dropdown--secondary li\").on(\"mouseleave\", function(){\n $(this).removeClass(\"filter__dropdown-active\");\n });\n\n}\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Instagram extends React.Component {\n render() {\n const assetInstagram = `\n`;\n return (\n \n );\n }\n}\n\nexport default Instagram;\n","import className from \"classnames\";\nimport React from \"react\";\nimport { connect } from \"react-redux\";\nimport A from \"components/A\";\nimport RecaptchaBranding from \"components/RecaptchaBranding\";\nimport MVName from \"styles/svg-components/MVName\";\nimport { VideoEditSlider } from \"styles/js/video-edit-slider\";\nimport { PlaybackModes } from \"styles/js/playback-modes\";\nimport { Tooltip } from \"styles/js/tooltip\";\nimport { BrowseFilter } from \"styles/js/browse-filter\";\nimport FacebookSVG from \"styles/svg-components/Facebook\";\nimport TwitterSVG from \"styles/svg-components/Twitter\";\nimport InstagramSVG from \"styles/svg-components/Instagram\";\nimport { drip } from \"utils/drip\";\n\nclass Footer extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n artistCount: false,\n trackCount: false,\n };\n\n this.handleSocialClick = this.handleSocialClick.bind(this);\n }\n componentDidMount() {\n VideoEditSlider();\n PlaybackModes();\n Tooltip();\n BrowseFilter();\n }\n\n handleSocialClick(platform) {\n drip(\"Social Channel Visited\", platform);\n }\n\n render() {\n const userHasArtistAccount =\n sessionStorage.getItem(\"artist_account\") === \"true\";\n\n return (\n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n \n \n

    \n Music for pro video and film.\n

    \n
    \n \n Copyright © {new Date().getFullYear()} Music Vine\n Limited\n \n
    \n
    \n
    \n
    \n
    \n {/*{this.state.trackCount && !isNaN(this.state.trackCount) &&

    {this.state.trackCount} exceptional tracks

    }*/}\n {/*{this.state.artistCount && !isNaN(this.state.artistCount) &&

    {this.state.artistCount} world-class artists

    }*/}\n
    \n
    \n
    \n
      \n {\n this.handleSocialClick(\"Twitter\");\n }}\n >\n \n
      \n \n
      \n \n \n {\n this.handleSocialClick(\"Facebook\");\n }}\n >\n \n
      \n \n
      \n \n \n {\n this.handleSocialClick(\"Instagram\");\n }}\n >\n \n
      \n \n
      \n \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n \n \n \n
    \n \n Copyright © {new Date().getFullYear()} Music Vine\n Limited\n \n \n \n \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n );\n }\n}\nconst mapStateToProps = (state) => ({\n ...state.get(\"footerPlayer\"),\n});\nexport default connect(mapStateToProps, null)(Footer);\n","export function VideoEditSlider() {\n $( function() {\n var valMap = [1,2,3,4,5,6,7,8,9,10];\n $(\"#video-edit-slider\").slider({\n max: valMap.length - 1, // Set \"max\" attribute to array length\n min: 0,\n values: [2],\n slide: function(event, ui) {\n // $(\".video-edit-slider__numbers\").html(ui.value + 1);\n // console.log(ui.value + 1);\n }\n });\n } );\n}\n","export function PlaybackModes() {\n $(\".footer-player__modes-col\").on(\"click\", function(){\n if( $(\".footer-player__modes-col\").is(\".active\") ) {\n $(\".footer-player__modes-col\").removeClass(\"active\");\n }\n $(this).addClass(\"active\");\n });\n}\n","export function Tooltip() {\n $(\".player-settings\").on(\"click\", function(){\n $(this).toggleClass(\"active\");\n });\n}\n","import styled from 'styled-components';\n\nexport default styled.div`\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n visibility: ${(props) => props.hidden ? 'hidden' : 'visible'};\n opacity: ${(props) => props.hidden ? '0' : '1'};\n transition: all 500ms ease-in-out;\n z-index: ${(props) => props.hidden ? '-10' : '9999'};\n`;\n","import styled from 'styled-components';\n\nexport default styled.div`\n height: 2px;\n background: #29D;\n transition: all 300ms ease;\n`;\n","/**\n *\n * ProgressBar\n *\n*/\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nimport Wrapper from './Wrapper';\nimport Percent from './Percent';\n\nclass ProgressBar extends React.Component {\n\n static defaultProps = {\n percent: -1,\n autoIncrement: true,\n intervalTime: 75,\n };\n\n constructor(props) {\n super(props);\n this.handleProps = this.handleProps.bind(this);\n this.increment = this.increment.bind(this);\n this.state = {\n percent: props.percent,\n };\n }\n\n componentDidMount() {\n this.handleProps(this.props);\n }\n\n componentWillReceiveProps(nextProps) {\n if (this.interval) {\n // stop progress when new props come in.\n clearInterval(this.interval);\n this.interval = undefined;\n }\n if (this.timeout) {\n // clear timeout when new props come in.\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n // start progress with updated props.\n this.handleProps(nextProps);\n }\n\n componentWillUnmount() {\n // cleaning up interval and timeout.\n if (this.interval) {\n clearInterval(this.interval);\n this.interval = undefined;\n }\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = undefined;\n }\n }\n\n increment() {\n /**\n * Increment the percent randomly.\n * Only used when autoIncrement is set to true.\n */\n let { percent } = this.state;\n percent += ((Math.random() + 1) - Math.random());\n percent = percent < 99 ? percent : 99;\n this.setState({\n percent,\n });\n }\n\n handleProps(props) {\n /**\n * Increment progress bar if auto increment is set to true\n * and progress percent is less than 99.\n */\n if (props.autoIncrement && props.percent >= 0 && props.percent < 99) {\n this.interval = setInterval(this.increment, props.intervalTime);\n }\n\n /**\n * Reset the progress bar when percent hits 100\n * For better visual effects, percent is set to 99.9\n * and then cleared in the callback after some time.\n */\n\n if (props.percent >= 100) {\n this.setState({\n percent: 99.9,\n }, () => {\n this.timeout = setTimeout(() => {\n this.setState({\n percent: -1,\n }, () => props.updateProgress(-1));\n }, 300);\n });\n } else {\n this.setState({\n percent: props.percent,\n });\n }\n }\n\n render() {\n const { percent } = this.state;\n\n // Hide progress bar if percent is less than 0.\n const isHidden = percent < 0 || percent >= 100;\n\n // Set `state.percent` as width.\n const style = { width: `${(percent <= 0 ? 0 : percent)}%` };\n\n return (\n \n );\n }\n}\n\nProgressBar.propTypes = {\n percent: PropTypes.number.isRequired,\n};\n\nexport default ProgressBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport ProgressBar from './ProgressBar';\n\nfunction withProgressBar(WrappedComponent) {\n class AppWithProgressBar extends React.Component {\n constructor(props) {\n super(props);\n this.state = {\n progress: -1,\n loadedRoutes: props.location && [props.location.pathname],\n };\n this.updateProgress = this.updateProgress.bind(this);\n }\n\n componentWillMount() {\n // Store a reference to the listener.\n /* istanbul ignore next */\n this.unsubscribeHistory = this.props.router && this.props.router.listenBefore((location) => {\n // Do not show progress bar for already loaded routes.\n if (this.state.loadedRoutes.indexOf(location.pathname) === -1) {\n this.updateProgress(0);\n }\n });\n }\n\n componentWillUpdate(newProps, newState) {\n const { loadedRoutes, progress } = this.state;\n const { pathname } = newProps.location;\n\n // Complete progress when route changes. But prevent state update while re-rendering.\n if (loadedRoutes.indexOf(pathname) === -1 && progress !== -1 && newState.progress < 100) {\n this.updateProgress(100);\n this.setState({\n loadedRoutes: loadedRoutes.concat([pathname]),\n });\n }\n }\n\n componentWillUnmount() {\n // Unset unsubscribeHistory since it won't be garbage-collected.\n this.unsubscribeHistory = undefined;\n }\n\n updateProgress(progress) {\n this.setState({ progress });\n }\n\n render() {\n return (\n
    \n \n \n
    \n );\n }\n }\n\n AppWithProgressBar.propTypes = {\n location: PropTypes.object,\n router: PropTypes.object,\n };\n\n return AppWithProgressBar;\n}\n\nexport default withProgressBar;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport AssetAddToPlaylist from 'styles/svg-components/PlayCircleSmTransparent';\nimport PauseSVG from 'styles/svg-components/Pause';\nimport Loader from '../../styles/svg-components/SpinnerTrackPlay';\n\nconst Play = ({ playing, onTogglePlay, isAudioReady }) => (\n \n );\n\nPlay.propTypes = {\n onTogglePlay: PropTypes.func.isRequired,\n playing: PropTypes.bool.isRequired,\n isAudioReady: PropTypes.bool.isRequired,\n};\n\nexport default Play;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Prev extends React.Component {\n render() {\n const Prev = ``;\n return (\n \n );\n }\n}\n\nexport default Prev;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Next extends React.Component {\n render() {\n const Next = ``;\n return (\n \n );\n }\n}\n\nexport default Next;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport PrevSVG from 'styles/svg-components/Prev.js';\nimport NextSVG from 'styles/svg-components/Next.js';\n\nconst Skip = ({ direction, activeTrackIndex, trackId, versionId, onChangeTrack }) => {\n let skipImage = ;\n let buttonClass = 'footer-player__btn skip-track';\n if (direction === 'forward') {\n skipImage = ;\n buttonClass += ' pl-2 pl-md-3';\n } else {\n buttonClass += ' d-none d-md-flex pr-3';\n }\n return (\n \n );\n};\n\nSkip.propTypes = {\n direction: PropTypes.string.isRequired,\n onChangeTrack: PropTypes.func.isRequired,\n activeTrackIndex: PropTypes.number,\n versionId: PropTypes.number,\n trackId: PropTypes.number,\n};\nSkip.defaultProps = {\n activeTrackIndex: 0,\n versionId: 0,\n trackId: 0,\n};\n\nexport default Skip;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Repeat extends React.Component {\n render() {\n const Repeat = ``;\n return (\n \n );\n }\n}\n\nexport default Repeat;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Clock extends React.Component {\n render() {\n const Clock = ``;\n return (\n \n );\n }\n}\n\nexport default Clock;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Shuffle extends React.Component {\n render() {\n const Shuffle = ``;\n return (\n \n );\n }\n}\n\nexport default Shuffle;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass AutoProgressPlayback extends React.Component {\n render() {\n const AutoProgressPlayback = ``;\n return (\n \n );\n }\n}\n\nexport default AutoProgressPlayback;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass PlaybackActiveTrack extends React.Component {\n render() {\n const PlaybackActiveTrack = ``;\n return (\n \n );\n }\n}\n\nexport default PlaybackActiveTrack;\n","import classnames from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport RepeatSVG from 'styles/svg-components/Repeat.js';\nimport ClockSVG from 'styles/svg-components/Clock.js';\nimport ShuffleSVG from 'styles/svg-components/Shuffle.js';\nimport AutoProgressSVG from 'styles/svg-components/AutoProgressPlayback.js';\nimport PlaybackActiveTrackSVG from 'styles/svg-components/PlaybackActiveTrack.js';\n\nconst Mode = ({ onChangeMode, modes, activeMode }) => (\n
    \n
    \n
    \n \n \n \n \n \n
    \n
    \n
    \n
    \n onChangeMode('autoprogress')}\n >\n
    \n \n
    \n Auto-Progress\n
    \n {/* onChangeMode('shuffle')}\n >\n
    \n \n
    \n Shuffle\n
    */}\n onChangeMode('repeat')}\n >\n
    \n \n
    \n Repeat\n
    \n onChangeMode('firstFifteen')}\n >\n
    \n \n
    \n First 15 Seconds Only\n
    \n onChangeMode('current')}\n >\n
    \n \n
    \n Current Track Only\n \n \n \n \n );\n\nMode.propTypes = {\n onChangeMode: PropTypes.func.isRequired,\n modes: PropTypes.object.isRequired,\n activeMode: PropTypes.string.isRequired,\n};\n\nexport default Mode;\n","import React, { Component, Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport Play from './Play';\nimport Skip from './Skip';\nimport Mode from './Mode';\nclass Controls extends Component {\n constructor(props) {\n super(props);\n this.state = {\n position: '0:00',\n };\n this.onPosChange = this.onPosChange.bind(this);\n }\n onPosChange(value) {\n this.setState({\n position: value,\n });\n }\n render() {\n const { onChangeTrack, onTogglePlay, activeTrackIndex, playing, onChangeMode, modes, activeMode, isAudioReady, primaryTrack } = this.props;\n const trackId = primaryTrack.trackId || 0;\n const versionId = primaryTrack.versionId || 0;\n return (\n \n
    \n \n \n \n \n
    \n
    {isAudioReady ? this.state.position : '0:00'}
    \n
    \n );\n }\n}\n\nControls.propTypes = {\n onChangeMode: PropTypes.func.isRequired,\n onTogglePlay: PropTypes.func.isRequired,\n onChangeTrack: PropTypes.func.isRequired,\n modes: PropTypes.object,\n activeMode: PropTypes.string,\n playing: PropTypes.bool,\n isAudioReady: PropTypes.bool,\n};\n\nControls.defaultProps = {\n modes: {},\n activeMode: '',\n playing: false,\n isAudioReady: false,\n};\n\nexport default Controls;\n","import _ from 'lodash';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport WaveSurfer from 'wavesurfer.js';\nimport assign from 'deep-assign';\n// import Wavesurfer from '../NewFooterPlayer/WaveSurfer';\n\nconst audioOptions = {\n scrollParent: false,\n height: 40,\n waveColor: '#2c2d2d',\n progressColor: '#01ece3',\n normalize: true,\n mediaType: 'audio',\n cursorColor: '#3a7676',\n cursorWidth: 0,\n interact: true,\n audioRate: 1,\n hideScrollbar: true,\n backend: 'MediaElement',\n};\nconst EVENTS = [\n 'audioprocess',\n 'error',\n 'finish',\n 'loading',\n 'mouseup',\n 'pause',\n 'play',\n 'ready',\n 'scroll',\n 'seek',\n 'zoom',\n];\n\nclass Track extends Component {\n constructor(props) {\n super(props);\n this.state = {\n isReady: false,\n firstFifteenStart: false,\n touchedWave: false,\n };\n this.wavesurferEl = React.createRef();\n this.initWaveSurfer = this.initWaveSurfer.bind(this);\n this.secToPos = this.secToPos.bind(this);\n this.posToSec = this.posToSec.bind(this);\n this.seekTo = this.seekTo.bind(this);\n this.parentSeekTo = this.parentSeekTo.bind(this);\n this.setActiveTrackPosition = this.setActiveTrackPosition.bind(this);\n this.handlePlayTrack = this.handlePlayTrack.bind(this);\n }\n componentDidMount() {\n this.initWaveSurfer();\n }\n componentWillReceiveProps(nextProps) {\n const { primaryTrack } = nextProps;\n if (_.isEmpty(primaryTrack)) return false;\n const { track_version, versionId } = primaryTrack;\n let newSource = false;\n let seekToInNewFile;\n const prevActiveTrack = !_.isEmpty(this.props.primaryTrack)\n ? _.find(this.props.primaryTrack.track_version, [\n 'id',\n this.props.primaryTrack.versionId,\n ])\n : {};\n const nextActiveTrack = _.find(track_version, ['id', versionId]);\n const newAudioFile = nextActiveTrack && nextActiveTrack.version_preview_uri;\n const oldAudioFile = prevActiveTrack && prevActiveTrack.version_preview_uri;\n if (_.isEmpty(prevActiveTrack) && !_.isEmpty(nextActiveTrack)) {\n this.setState({\n isReady: false,\n });\n this.props.audioReady(false, nextActiveTrack.id);\n if (this.wavesurfer instanceof WaveSurfer) {\n this.wavesurfer.destroy();\n }\n this.initWaveSurfer(nextActiveTrack);\n return false;\n } else if (\n oldAudioFile !== newAudioFile &&\n versionId !== this.props.primaryTrack.versionId\n ) {\n // update audioFile\n this.setState({\n isReady: false,\n });\n this.props.audioReady(false, this.props.primaryTrack.versionId);\n this.wavesurfer.pause();\n if (this.wavesurfer instanceof WaveSurfer) {\n this.wavesurfer.destroy();\n }\n if (\n this.props.activeTrackWave !== undefined &&\n !_.isEmpty(this.props.activeTrackWave)\n ) {\n const versionIndex = _.findIndex(\n this.props.activeTrackWave.track_version,\n ['id', this.props.primaryTrack.versionId]\n );\n const activeWavesurfer = this.props.activeTrackWave.track_version[\n versionIndex\n ].wavesurfer;\n if (activeWavesurfer !== undefined) {\n if (!activeWavesurfer.isDestroyed) {\n // activeWavesurfer.seekTo(0);\n activeWavesurfer.drawer.progress(0);\n }\n }\n }\n this.initWaveSurfer(nextActiveTrack);\n newSource = true;\n return false;\n }\n if (\n !newSource &&\n (this.props.playing !== nextProps.playing ||\n this.wavesurfer.isPlaying() !== nextProps.playing)\n ) {\n if (nextProps.playing) {\n // this.wavesurfer.play();\n } else {\n // this.wavesurfer.pause();\n this.setState({ firstFifteenStart: false });\n }\n }\n\n // update position\n if (\n nextProps.pos !== undefined &&\n this.state.isReady &&\n nextProps.pos !== this.props.pos\n // && nextProps.pos !== this.state.pos\n ) {\n if (newSource) {\n seekToInNewFile = this.wavesurfer.on('ready', () => {\n this.seekTo(nextProps.pos);\n if (seekToInNewFile) {\n seekToInNewFile.un();\n }\n });\n } else {\n this.wavesurfer.seekTo(nextProps.pos);\n }\n }\n\n // update volume\n if (this.props.volume !== nextProps.volume) {\n this.wavesurfer.setVolume(parseFloat(nextProps.volume));\n }\n if (nextProps.activeMode === 'firstFifteen' && nextProps.playing) {\n if (\n !this.state.firstFifteenStart &&\n this.state.isReady &&\n !this.state.touchedWave\n ) {\n this.setState({ firstFifteenStart: parseInt(Date.now() / 1000, 10) });\n } else if (nextProps.activeTrackWave) {\n if (nextProps.activeTrackWave.trackPage && !this.state.touchedWave) {\n this.setState({\n firstFifteenStart: false,\n touchedWave: true,\n });\n }\n }\n }\n return false;\n }\n componentWillUnmount() {\n // remove listeners\n EVENTS.forEach((e) => {\n if (this.wavesurfer) {\n this.wavesurfer.un(e);\n }\n });\n // destroy wavesurfer instance\n if (this.wavesurfer) {\n this.wavesurfer.destroy();\n }\n }\n setActiveTrackPosition(position) {\n if (\n this.props.activeTrackWave !== undefined &&\n !_.isEmpty(this.props.activeTrackWave)\n ) {\n const versionIndex = _.findIndex(\n this.props.activeTrackWave.track_version,\n ['id', this.props.primaryTrack.versionId]\n );\n const activeWavesurfer = this.props.activeTrackWave.track_version[\n versionIndex\n ].wavesurfer;\n this.parentSeekTo(activeWavesurfer, position);\n }\n }\n handlePlayTrack() {\n if (!this.props.playing) {\n this.props.onTogglePlay(this.props.playing);\n }\n }\n initWaveSurfer(activeTrack) {\n if (_.isEmpty(activeTrack)) return false;\n const {\n waveform_json,\n version_preview_uri,\n version_length,\n version_precise_length,\n } = activeTrack;\n const options = assign({}, audioOptions, {\n container: this.wavesurferEl.current,\n });\n const audioPeaks = JSON.parse(waveform_json);\n const audioDuration = version_precise_length || version_length;\n\n this.wavesurfer = WaveSurfer.create(options);\n this.wavesurfer.backend.setPeaks(JSON.parse(waveform_json), audioDuration);\n this.wavesurfer.drawBuffer();\n this.wavesurfer.setVolume(parseFloat(this.props.volume));\n this.loadAudio(version_preview_uri, audioPeaks, audioDuration);\n this.registerPlayerEvents();\n return false;\n }\n loadAudio(audioFileOrElt, audioPeaks, duration) {\n if (audioFileOrElt instanceof window.HTMLElement) {\n // media element\n this.wavesurfer.loadMediaElement(\n audioFileOrElt,\n audioPeaks,\n null,\n duration\n );\n } else if (typeof audioFileOrElt === 'string') {\n // bog-standard string is handled by load method and ajax call\n this.wavesurfer.loadMediaElement(\n audioFileOrElt,\n audioPeaks,\n null,\n duration\n );\n } else if (\n audioFileOrElt instanceof window.Blob ||\n audioFileOrElt instanceof window.File\n ) {\n // blob or file is loaded with loadBlob method\n this.wavesurfer.loadBlob(audioFileOrElt, audioPeaks);\n } else {\n throw new Error(`Wavesurfer._loadAudio expects prop audioFile\n to be either HTMLElement, string or file/blob`);\n }\n }\n registerPlayerEvents() {\n const { onTogglePlay } = this.props;\n if (!(this.wavesurfer instanceof WaveSurfer)) {\n return false;\n }\n this.wavesurfer.on('ready', () => {\n this.setState({\n isReady: true,\n pos: this.props.pos,\n });\n // set audio ready\n this.props.audioReady(true, this.props.activeTrack.versionID);\n\n // set audio duration\n const duration = this.wavesurfer.getDuration();\n this.props.getDuration({\n wavesurfer: this.wavesurfer,\n duration,\n });\n // set initial position\n if (this.props.pos) {\n this.seekTo(this.props.pos);\n }\n\n // set initial volume\n if (this.props.volume !== undefined) {\n this.wavesurfer.setVolume(parseFloat(this.props.volume));\n }\n\n // set initial playing state\n if (this.props.playing) {\n this.wavesurfer.play();\n }\n });\n this.wavesurfer.on('seek', (pos) => {\n if (this.state.isReady) {\n const formattedPos = this.posToSec(pos);\n this.setState({\n formattedPos,\n });\n this.props.onPosChange({\n wavesurfer: this.wavesurfer,\n originalArgs: [formattedPos],\n });\n if (\n this.props.activeTrackWave !== undefined &&\n !_.isEmpty(this.props.activeTrackWave)\n ) {\n const versionIndex = _.findIndex(\n this.props.activeTrackWave.track_version,\n ['id', this.props.primaryTrack.versionId]\n );\n const activeWavesurfer = this.props.activeTrackWave.track_version[\n versionIndex\n ].wavesurfer;\n this.parentSeekTo(activeWavesurfer, formattedPos);\n }\n if (!this.wavesurfer.isPlaying() && !this.props.playing) {\n this.wavesurfer.play();\n this.props.onTogglePlay(this.props.playing);\n }\n if (this.props.activeMode === 'firstFifteen') {\n if (this.state.firstFifteenStart) {\n this.setState({ firstFifteenStart: false, touchedWave: true });\n }\n }\n }\n });\n this.wavesurfer.on('audioprocess', (pos) => {\n if (this.state.isReady) {\n // this.setState({\n // pos,\n // });\n this.props.onPosChange({\n wavesurfer: this.wavesurfer,\n originalArgs: [pos],\n });\n this.setActiveTrackPosition(pos);\n if (this.props.activeMode === 'firstFifteen') {\n let triggerTrackChange = false;\n let target = false;\n if (this.state.firstFifteenStart) {\n const now = parseInt(Date.now() / 1000, 10);\n target = this.state.firstFifteenStart + 16;\n if (now >= target) {\n triggerTrackChange = true;\n this.setState({\n firstFifteenStart: false,\n touchedWave: false,\n });\n }\n }\n if (triggerTrackChange) {\n this.setActiveTrackPosition(0);\n this.props.handleAutoProgress();\n }\n }\n }\n });\n this.wavesurfer.on('finish', () => {\n const { activeMode, handleAutoProgress } = this.props;\n if (this.state.isReady) {\n if (activeMode === 'autoprogress') {\n this.setActiveTrackPosition(0);\n handleAutoProgress();\n } else if (activeMode === 'current') {\n this.seekTo(0);\n this.setActiveTrackPosition(0);\n this.props.handleCurrentTrackOnly();\n } else if (activeMode === 'firstFifteen') {\n this.setActiveTrackPosition(0);\n handleAutoProgress();\n this.setState({\n firstFifteenStart: false,\n touchedWave: false,\n });\n } else if (activeMode === 'repeat') {\n this.wavesurfer.stop();\n this.props.onTogglePlay(false);\n }\n }\n });\n if ('mediaSession' in navigator) {\n navigator.mediaSession.setActionHandler('play', () => {\n this.wavesurfer.play();\n onTogglePlay(false);\n });\n navigator.mediaSession.setActionHandler('pause', () => {\n this.wavesurfer.pause();\n onTogglePlay(true);\n });\n }\n return false;\n }\n\n secToPos(sec) {\n if (!(this.wavesurfer instanceof WaveSurfer)) {\n return 0;\n }\n return (1 / this.wavesurfer.getDuration()) * sec;\n }\n posToSec(pos) {\n if (!(this.wavesurfer instanceof WaveSurfer)) {\n return 0;\n }\n return pos * this.wavesurfer.getDuration();\n }\n seekTo(sec) {\n const pos = this.secToPos(sec);\n if (this.props.audioOptions.autoCenter) {\n this.wavesurfer.seekAndCenter(pos);\n } else {\n this.wavesurfer.seekTo(sec);\n }\n }\n parentSeekTo(wavesurfer, sec) {\n if (!(wavesurfer instanceof WaveSurfer)) {\n return false;\n }\n const pos = this.secToPos(sec);\n if (_.isNaN(pos)) return false;\n if (this.props.audioOptions.autoCenter) {\n wavesurfer.seekAndCenter(pos);\n } else {\n wavesurfer.drawer.progress(pos);\n }\n return false;\n }\n render() {\n return (\n
    \n
    \n
    \n {!this.state.isReady && (\n
    \n )}\n
    \n
    \n );\n }\n}\n\nTrack.propTypes = {\n playing: PropTypes.bool.isRequired,\n activeMode: PropTypes.string.isRequired,\n handleAutoProgress: PropTypes.func.isRequired,\n onTogglePlay: PropTypes.func.isRequired,\n onPosChange: PropTypes.func.isRequired,\n getDuration: PropTypes.func.isRequired,\n handleCurrentTrackOnly: PropTypes.func.isRequired,\n audioReady: PropTypes.func.isRequired,\n volume: PropTypes.string.isRequired,\n pos: PropTypes.number.isRequired,\n audioOptions: PropTypes.objectOf(PropTypes.any),\n};\n\nexport default Track;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst Duration = ({ duration }) => (\n
    {duration}
    \n);\n\nDuration.propTypes = {\n duration: PropTypes.string.isRequired,\n};\n\nexport default Duration;\n","import { Link } from 'react-router';\nimport styled from 'styled-components';\n\nexport default styled(Link)`\n`;\n","import React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { PLACEHOLDER_IMG_URL } from 'components/ImgPlaceholder';\nimport NameLink from './NameLink';\nimport {getImgixUrl} from \"../../utils/helpers\";\n\nconst Profile = ({ activeTrack }) => (\n \n
    \n {displayPrimaryTrackImage(activeTrack)}\n
    \n
    \n {/*
    */}\n {displayPrimaryTrackInfo(activeTrack)}\n
    \n \n);\n\nfunction displayPrimaryTrackInfo(activeTrack) {\n if (activeTrack.name) {\n return (\n \n \n
    {activeTrack.name}
    \n
    \n \n
    {activeTrack.artist.name}
    \n
    \n
    );\n }\n return null;\n}\n\nfunction displayPrimaryTrackImage(activeTrack) {\n if (activeTrack.artist && activeTrack.artist.avatar_image) {\n return (\n \n {activeTrack.artist.name}\n \n );\n }\n return (\"Artist);\n}\n\nProfile.propTypes = {\n activeTrack: PropTypes.object.isRequired,\n};\n\nexport default Profile;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Plus extends React.Component {\n render() {\n const Plus = ``;\n return (\n \n );\n }\n}\n\nexport default Plus;\n","import React from 'react';\nimport PropTypes from 'prop-types';\nimport PlusSVG from 'styles/svg-components/Plus.js';\n\nconst Add = ({ activeTrack, onAddPlaylist }) => (\n
    \n
    onAddPlaylist(activeTrack)}>\n \n
    \n Add To Playlist\n
    \n
    \n
    \n);\n\nAdd.propTypes = {\n onAddPlaylist: PropTypes.func.isRequired,\n activeTrack: PropTypes.object.isRequired,\n};\n\nexport default Add;\n","import _ from 'lodash';\nimport PropTypes from 'prop-types';\nimport React, { Component } from 'react';\n\nimport A from '../../components/A';\nimport Heart from '../../styles/svg-components/Heart';\n\nclass Favourite extends Component {\n constructor(props) {\n super(props);\n // Bind class method's scope.\n this.onClickFavourite = this.onClickFavourite.bind(this);\n }\n\n // onAddFavourite\n onClickFavourite() {\n const { activeTrack, onFavoriteToggle, onAddModal } = this.props;\n const authToken = sessionStorage.getItem('auth_token');\n if (!_.isEmpty(authToken) && !_.isEmpty(activeTrack)) {\n const contextId = activeTrack.current_context.id;\n return onFavoriteToggle(activeTrack.versionId, contextId);\n }\n return onAddModal();\n }\n\n render() {\n const { activeTrack } = this.props;\n const mainVersionId = !_.isEmpty(activeTrack) ? activeTrack.versionId : '';\n let favourite = '';\n const favouritesData = sessionStorage.getItem('favourites_data');\n if (mainVersionId && favouritesData && favouritesData.includes(String(mainVersionId))) {\n favourite = 'js-is-favourite-version';\n }\n\n return (\n \n );\n }\n}\n\n// Props validation.\nFavourite.propTypes = {\n activeTrack: PropTypes.object,\n onAddModal: PropTypes.func,\n onFavoriteToggle: PropTypes.func,\n};\n\nexport default Favourite;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport DownloadSVG from '../../styles/svg-components/Download';\n\nconst Download = ({ activeTrack, onDownload }) => (\n
    \n
    onDownload(activeTrack)}>\n \n
    \n Download Preview\n
    \n
    \n
    \n);\n\n// Props validation.\nDownload.propTypes = {\n onDownload: PropTypes.func.isRequired,\n activeTrack: PropTypes.object.isRequired,\n};\n\nexport default Download;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nimport CartSVG from '../../styles/svg-components/CartSVG';\n\nconst Cart = ({ activeTrack, onAddLicense }) => (\n
    \n
    onAddLicense(activeTrack)}>\n \n
    \n Buy License\n
    \n
    \n
    \n);\n\n// Props validation.\nCart.propTypes = {\n onAddLicense: PropTypes.func.isRequired,\n activeTrack: PropTypes.object.isRequired,\n};\n\nexport default Cart;","import React from 'react';\nimport PropTypes from 'prop-types';\nimport NameLink from './NameLink';\n\nconst SubscriptionCart = ({ activeTrack, onAddLicense }) => (\n
    \n onAddLicense(activeTrack)} >\n
    \n

    License

    \n
    \n
    \n
    \n);\n\n// Props validation.\nSubscriptionCart.propTypes = {\n onAddLicense: PropTypes.func.isRequired,\n activeTrack: PropTypes.object.isRequired,\n};\n\nexport default SubscriptionCart;","import className from 'classnames';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport ReactBootstrapSlider from 'react-bootstrap-slider';\nimport Slider from 'rc-slider';\nimport 'rc-slider/assets/index.css';\nconst style = { float: 'left', height: 125, marginBottom: 13 };\nconst Volume = (props) => (\n \n \n
    \n \n
    \n
    );\n\nVolume.propTypes = {\n onVolumeChange: PropTypes.func.isRequired,\n showSlider: PropTypes.bool.isRequired,\n};\n\nexport default Volume;\n","import _ from 'lodash';\nimport className from 'classnames';\nimport React, { Component } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport Controls from './Controls';\nimport Track from './Track';\nimport Duration from './Duration';\nimport Profile from './Profile';\nimport Add from './Add';\nimport Favourite from './Favourite';\nimport Download from './Download';\nimport Cart from './Cart';\nimport SubscriptionCart from './SubscriptionCart';\nimport Volume from './Volume';\nimport * as a from '../../actions/footerPlayerAction';\nimport { toggleFavouriteTrackVerion, addNewEngagement } from 'actions/favouriteAction';\nimport { addLicense } from 'actions/licenseAction';\nimport { addPlaylist, downloadPreview } from 'actions/playerAction';\nimport { addModal } from 'actions/authenticationAction';\nimport Config, { API } from '../../constants';\nimport { getAuthToken } from '../../actions/authenticationAction';\n\nconst audioOptions = {\n scrollParent: false,\n height: 40,\n waveColor: '#2c2d2d',\n progressColor: '#01ece3',\n normalize: true,\n mediaType: 'audio',\n cursorColor: '#3a7676',\n cursorWidth: 0,\n interact: true,\n audioRate: 1,\n playlistType: '',\n hideScrollbar: true,\n};\n\nclass FooterPlayer extends Component {\n constructor(props) {\n super(props);\n const pastVolume = localStorage.getItem('pastVolume');\n this.state = {\n showSlider: false,\n loadStarted: 0,\n loadEventUuid: '',\n isTouched: !pastVolume,\n };\n this.trackPlayer = React.createRef();\n this.controlsContainer = React.createRef();\n this.showSlider = this.showSlider.bind(this);\n this.hideSlider = this.hideSlider.bind(this);\n this.onVolumeChange = this.onVolumeChange.bind(this);\n this.onVolumeStop = this.onVolumeStop.bind(this);\n this.toggleMute = this.toggleMute.bind(this);\n this.onPosChange = this.onPosChange.bind(this);\n this.getDuration = this.getDuration.bind(this);\n this.userHasSubscription = this.userHasSubscription.bind(this);\n this.onAudioReady = this.onAudioReady.bind(this);\n }\n\n userHasSubscription() {\n return (this.props.subscriptionData.isActive || this.props.subscriptionData.isFreeTrial);\n }\n onVolumeChange(value) {\n const volume = value;\n this.props.setVolume(volume);\n localStorage.setItem('volume', volume);\n if (volume === 0) {\n localStorage.setItem('pastVolume', 1);\n }\n if (!this.state.isTouched) {\n this.setState({\n isTouched: true,\n });\n }\n if (!this.state.showSlider) {\n this.setState({\n showSlider: true,\n });\n }\n }\n onVolumeStop() {\n this.setState({\n showSlider: false,\n });\n }\n onPosChange(event) {\n this.controlsContainer.current.onPosChange(\n this.formatSeconds(event.originalArgs[0])\n );\n }\n getDuration(values) {\n const { primaryTrack, playerActiveTrack } = this.props;\n playerActiveTrack({\n wavesurfer: values.wavesurfer,\n duration: values.duration,\n trackId: primaryTrack.trackId,\n });\n }\n showSlider() {\n this.setState({\n showSlider: true,\n });\n }\n\n hideSlider() {\n this.setState({\n showSlider: false,\n });\n }\n toggleMute() {\n const { volume } = this.props;\n if (this.state.isTouched) {\n localStorage.setItem('pastVolume', volume);\n localStorage.setItem('volume', 0);\n this.setState({ isTouched: false });\n } else if (!this.state.isTouched && volume !== '1') {\n let currentVolume = localStorage.getItem('pastVolume') || 1;\n currentVolume = (currentVolume === null || currentVolume === '0') ? 1 : currentVolume;\n localStorage.removeItem('pastVolume');\n localStorage.setItem('volume', currentVolume);\n this.setState({\n isTouched: true,\n });\n } else {\n localStorage.setItem('pastVolume', volume);\n localStorage.setItem('volume', 0);\n this.setState({ isTouched: false });\n }\n this.props.toggleMute();\n }\n\n formatSeconds(seconds) {\n if (isNaN(seconds)) return '0:00';\n const hours = parseInt(seconds / 3600) % 24;\n const minutes = parseInt(seconds / 60) % 60;\n let formatted = '';\n if (hours > 0) {\n formatted += `${parseInt(hours)}:`;\n }\n formatted += `${parseInt(minutes)}:${(`0${parseInt(seconds % 60)}`).slice(-2)}`;\n return formatted;\n }\n\n //https://stackoverflow.com/a/2117523/1482673\n uuidv4() {\n return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>\n (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\n );\n }\n\n onAudioReady(isReady, versionId) {\n let headers = {};\n\n if ( getAuthToken() ) {\n headers['x-auth-token'] = getAuthToken();\n }\n\n if (!isReady) {\n const loadEventUuid = this.uuidv4();\n // If the previous load event is still active, send a cancelled event\n if (this.state.loadStarted !== 0 && this.state.loadEventUuid !== '') {\n $.ajax({\n type: \"POST\",\n headers: headers,\n url: `${Config.BASE_API_URL}logging/track_load/end`,\n data: {\n versionId,\n eventUuid: this.state.loadEventUuid,\n wasCancelled: true\n },\n success: function( data ) {\n // Nothing to do\n }\n });\n }\n\n // Log the play event\n $.ajax({\n type: \"POST\",\n headers: headers,\n url: `${Config.BASE_API_URL}logging/track_load/start`,\n data: {\n versionId,\n eventUuid: loadEventUuid\n },\n success: function( data ) {\n // Nothing to do\n }\n });\n\n this.setState({\n loadStarted: window.performance.now(),\n loadEventUuid\n });\n } else {\n const timeTaken = Math.round(window.performance.now() - this.state.loadStarted);\n\n $.ajax({\n type: \"POST\",\n headers: headers,\n url: `${Config.BASE_API_URL}logging/track_load/end`,\n data: {\n versionId,\n eventUuid: this.state.loadEventUuid,\n timeTaken,\n wasCancelled: false\n },\n success: function( data ) {\n // Nothing to do\n }\n });\n\n this.setState({\n loadStarted: 0,\n loadEventUuid: ''\n });\n }\n\n this.props.audioReady(isReady);\n }\n\n render() {\n const {\n onTogglePlay,\n onChangeMode,\n modes,\n activeMode,\n playing,\n playerActive,\n isAudioReady,\n onChangeTrack,\n onAddPlaylist,\n onDownloadPreview,\n onAddLicense,\n onAddModal,\n activeTrack,\n onToggleFavourite,\n inActiveTrack,\n primaryTrack,\n trackWaves,\n position,\n volume,\n handleAutoProgress,\n handleCurrentTrackOnly,\n } = this.props;\n const { track_url, wavesurfer, trackIndex, trackId, versionId } = primaryTrack;\n const audioFile = track_url && track_url.version_preview_uri;\n const audioPeaks = track_url && track_url.waveform_json;\n const activeTrackWave = _.find(trackWaves, ['trackId', trackId]);\n const versionIndex = !_.isEmpty(primaryTrack) && _.findIndex(primaryTrack.track_version, ['id', versionId]) || 0;\n const duration = (!_.isEmpty(primaryTrack) && primaryTrack.track_version[versionIndex].version_length) || 0;\n return (\n
    \n
    \n
    \n
    \n \n \n \n
    \n
    \n
    \n
    \n = 0.51,\n })}\n />\n \n \n
    \n
    \n
    \n \n
    \n \n \n \n \n { this.userHasSubscription() &&\n \n }\n { !this.userHasSubscription() &&\n \n }\n
    \n
    \n
    \n
    \n );\n }\n}\n\nFooterPlayer.propTypes = {\n onTogglePlay: PropTypes.func.isRequired,\n onChangeMode: PropTypes.func.isRequired,\n onChangeTrack: PropTypes.func.isRequired,\n onAddPlaylist: PropTypes.func.isRequired,\n onDownload: PropTypes.func.isRequired,\n onAddLicense: PropTypes.func.isRequired,\n onAddModal: PropTypes.func.isRequired,\n onToggleFavourite: PropTypes.func.isRequired,\n playing: PropTypes.bool,\n modes: PropTypes.object,\n activeMode: PropTypes.string,\n handleAutoProgress: PropTypes.func.isRequired,\n handleCurrentTrackOnly: PropTypes.func.isRequired,\n setVolume: PropTypes.func.isRequired,\n};\n\nFooterPlayer.defaultProps = {\n modes: {},\n activeMode: '',\n playing: false,\n};\n\n// Map redux actions to props.\nconst mapStateToProps = (state) => ({\n ...state.get('footerPlayer'),\n subscriptionData: state.get('subscriptionData'),\n});\n\n// Map redux store to props.\nconst mapDispatchToProps = (dispatch) => ({\n audioReady: (isReady) => {\n dispatch(a.isAudioReady(isReady));\n },\n onChangeMode: (mode) => dispatch(a.changeMode(mode)),\n onTogglePlay: (playing, trackId, versionId, contextId) => {\n dispatch(a.onTogglePlay(playing));\n if (playing) {\n dispatch({\n type: 'PLAYER_SET_PAUSE',\n });\n } else if (!playing) {\n dispatch({\n type: 'PLAYER_SET_PLAY',\n engagementInfo: { trackId, contextId, versionId },\n });\n }\n },\n onChangeTrack: (track, direction, trackId, versionId) => {\n dispatch(a.onChangeTrack(track, direction));\n dispatch({\n type: 'PLAYER_CURRENT_TRACK',\n currentTrack: {\n trackID: trackId,\n versionID: versionId,\n },\n });\n },\n onDownload: (primaryTrack) => {\n const { trackId, current_context, track_url, versionId } = primaryTrack;\n addNewEngagement('preview', trackId, current_context.id);\n if (_.has(primaryTrack, 'track_version')) {\n const currentTrack = _.find(primaryTrack.track_version, ['id', versionId]);\n if (track_url.download_preview_mp3) {\n window.location = currentTrack.download_preview_mp3;\n }\n }\n },\n onDownloadPreview: (primaryTrack) => {\n const { trackId, current_context, track_url, versionId } = primaryTrack;\n if (_.has(primaryTrack, 'track_version')) {\n const currentVersion = _.find(primaryTrack.track_version, ['id', versionId]);\n dispatch(downloadPreview(primaryTrack, currentVersion));\n }\n },\n onAddLicense: (track) => {\n dispatch(addLicense(track));\n $('.modal-overlay').addClass('active');\n },\n onAddModal: () => {\n dispatch(addModal('playSignup', 'add_favourite'));\n },\n onAddPlaylist: (track) => {\n dispatch(addPlaylist(track, track.versionId));\n },\n onToggleFavourite: (track, version) => {\n dispatch(toggleFavouriteTrackVerion(track, version));\n },\n playerActiveTrack: (track) => {\n dispatch(a.playerActiveTrack(track));\n },\n setVolume: (volume) => {\n dispatch(a.setVolume(volume));\n },\n toggleMute: () => {\n dispatch(a.toggleMute());\n },\n setPosition: (pos) => dispatch(a.setPlayerPosition(pos)),\n inActiveTrack: () => {\n dispatch(a.playerInActive());\n dispatch({\n type: 'PLAYER_SET_PAUSE',\n });\n dispatch({\n type: 'PLAYER_DESTROY',\n });\n },\n});\nconst mergeProps = (state, actions, ownProps) => ({\n ...state,\n ...actions,\n ...ownProps,\n onTogglePlay: (playing) => {\n const { versionID, currentContext, trackID } = state.activeTrack;\n const { wavesurfer } = state.playerTrack;\n actions.onTogglePlay(playing, trackID, versionID, currentContext);\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isDestroyed) {\n if (playing) {\n wavesurfer.pause();\n } else {\n wavesurfer.play();\n }\n }\n }\n },\n onChangeTrack: (activeTrackID, trackId, versionId, direction) => {\n const { activeTrack } = state;\n let nextTrackId = trackId;\n let nextVersionId = versionId;\n let nextTrackWave = state.primaryTrack;\n const lastTrackIndex = (state.trackWaves.length - 1);\n if (lastTrackIndex < 1) return false;\n if (direction === 'forward') {\n const currentTrackIndex = _.findIndex(state.trackWaves, ['id', trackId]);\n if (currentTrackIndex !== -1) {\n const currentTrackWave = state.trackWaves[currentTrackIndex];\n const nextTrackIndex = (currentTrackIndex === lastTrackIndex) ? 0 : (currentTrackIndex + 1);\n const currentTrackVersionIndex = _.findIndex(state.trackWaves[currentTrackIndex].track_version, ['id', versionId]);\n if (_.has(currentTrackWave, 'showVersion')) {\n if (currentTrackWave.showVersion) {\n if (currentTrackVersionIndex !== -1) {\n const lastTrackVersionIndex = (_.size(state.trackWaves[currentTrackIndex].track_version) - 1);\n const nextTrackVersionIndex = (currentTrackVersionIndex === lastTrackVersionIndex) ? nextTrackIndex : (currentTrackVersionIndex + 1);\n if (_.has(state.trackWaves[currentTrackIndex], 'track_version') && currentTrackVersionIndex !== lastTrackVersionIndex) {\n if (state.trackWaves[nextTrackVersionIndex] !== undefined) {\n nextTrackWave = Object.assign({}, state.trackWaves[currentTrackIndex], {\n versionId: state.trackWaves[currentTrackIndex].track_version[nextTrackVersionIndex].id,\n versionIndex: nextTrackVersionIndex,\n trackIndex: nextTrackIndex,\n });\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = state.trackWaves[currentTrackIndex].track_version[nextTrackVersionIndex].id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, nextTrackWave.current_context.id);\n } else {\n addNewEngagement('play', nextTrackId, nextTrackWave.current_context.id, nextVersionId);\n }\n }\n } else if (currentTrackVersionIndex === lastTrackVersionIndex) {\n if (state.trackWaves[nextTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[nextTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n }\n }\n } else if (!currentTrackWave.showVersion) {\n if (state.trackWaves[nextTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[nextTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n }\n } else if (currentTrackVersionIndex !== -1 && currentTrackVersionIndex === 0) {\n if (state.trackWaves[nextTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[nextTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n } else {\n nextTrackWave = state.trackWaves[nextTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n }\n } else if (direction === 'backward') {\n const currentTrackIndex = _.findIndex(state.trackWaves, ['id', trackId]);\n if (currentTrackIndex !== -1) {\n const currentTrackWave = state.trackWaves[currentTrackIndex];\n const { wavesurfer } = state.playerTrack;\n if (wavesurfer) {\n const currentTrackWaveTime = (!wavesurfer.isDestroyed && wavesurfer.getCurrentTime()) || 0;\n if (currentTrackWaveTime >= 3) {\n wavesurfer.stop();\n wavesurfer.play();\n return false;\n }\n }\n\n const prevTrackIndex = (currentTrackIndex === 0) ? 0 : (currentTrackIndex - 1);\n const currentTrackVersionIndex = _.findIndex(state.trackWaves[currentTrackIndex].track_version, ['id', versionId]);\n if (_.has(currentTrackWave, 'showVersion')) {\n if (currentTrackWave.showVersion) {\n if (currentTrackIndex === 0 && currentTrackVersionIndex === 0) {\n wavesurfer.stop();\n wavesurfer.play();\n return false;\n }\n const prevTrackVersionIndex = currentTrackVersionIndex - 1;\n if (_.has(state.trackWaves[currentTrackIndex], 'track_version') && prevTrackVersionIndex !== -1) {\n if (state.trackWaves[prevTrackVersionIndex] !== undefined) {\n nextTrackWave = Object.assign({}, state.trackWaves[currentTrackIndex], {\n versionId: state.trackWaves[currentTrackIndex].track_version[prevTrackVersionIndex].id,\n versionIndex: prevTrackVersionIndex,\n trackIndex: prevTrackIndex,\n });\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = state.trackWaves[currentTrackIndex].track_version[prevTrackVersionIndex].id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, nextTrackWave.current_context.id);\n } else {\n addNewEngagement('play', nextTrackId, nextTrackWave.current_context.id, nextVersionId);\n }\n }\n } else {\n const prevTrackWave = state.trackWaves[prevTrackIndex];\n if (currentTrackIndex === 0) {\n wavesurfer.stop();\n wavesurfer.play();\n return false;\n }\n if (prevTrackWave !== undefined) {\n if (_.has(prevTrackWave, 'showVersion')) {\n if (prevTrackWave.showVersion) {\n if (_.has(prevTrackWave, 'track_version')) {\n const prevLastIndex = (_.size(prevTrackWave.track_version) - 1);\n if (prevTrackWave.track_version[prevLastIndex] !== undefined) {\n nextTrackWave = Object.assign({}, prevTrackWave, {\n versionId: prevTrackWave.track_version[prevLastIndex].id,\n versionIndex: prevLastIndex,\n trackIndex: prevTrackIndex,\n });\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = prevTrackWave.track_version[prevLastIndex].id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, prevTrackWave.current_context.id);\n } else {\n addNewEngagement('play', nextTrackId, prevTrackWave.current_context.id, nextVersionId);\n }\n }\n }\n } else if (state.trackWaves[prevTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[prevTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n } else {\n nextTrackWave = state.trackWaves[prevTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n }\n }\n } else if (!currentTrackWave.showVersion) {\n const prevTrackWave = state.trackWaves[prevTrackIndex];\n if (currentTrackIndex === 0) {\n wavesurfer.stop();\n wavesurfer.play();\n return false;\n }\n if (prevTrackWave !== undefined) {\n if (_.has(prevTrackWave, 'showVersion')) {\n if (prevTrackWave.showVersion) {\n if (_.has(prevTrackWave, 'track_version')) {\n const prevLastIndex = (_.size(prevTrackWave.track_version) - 1);\n if (prevTrackWave.track_version[prevLastIndex] !== undefined) {\n nextTrackWave = Object.assign({}, prevTrackWave, {\n versionId: prevTrackWave.track_version[prevLastIndex].id,\n versionIndex: prevLastIndex,\n trackIndex: prevTrackIndex,\n });\n nextTrackId = prevTrackWave.trackId;\n nextVersionId = prevTrackWave.track_version[prevLastIndex].id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, prevTrackWave.current_context.id);\n } else {\n addNewEngagement('play', nextTrackId, prevTrackWave.current_context.id, nextVersionId);\n }\n }\n }\n } else if (state.trackWaves[prevTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[prevTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n } else {\n nextTrackWave = state.trackWaves[prevTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n }\n }\n } else if (state.trackWaves[prevTrackIndex] !== undefined) {\n if (currentTrackIndex === 0) {\n wavesurfer.stop();\n wavesurfer.play();\n return false;\n }\n const prevTrackWave = state.trackWaves[prevTrackIndex];\n if (prevTrackWave !== undefined) {\n if (_.has(prevTrackWave, 'showVersion')) {\n if (prevTrackWave.showVersion) {\n if (_.has(prevTrackWave, 'track_version')) {\n const prevLastIndex = (_.size(prevTrackWave.track_version) - 1);\n if (prevTrackWave.track_version[prevLastIndex] !== undefined) {\n nextTrackWave = Object.assign({}, prevTrackWave, {\n versionId: prevTrackWave.track_version[prevLastIndex].id,\n versionIndex: prevLastIndex,\n trackIndex: prevTrackIndex,\n });\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = prevTrackWave.track_version[prevLastIndex].id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, nextTrackWave.current_context.id);\n } else {\n addNewEngagement('play', nextTrackId, nextTrackWave.current_context.id, nextVersionId);\n }\n }\n }\n } else if (state.trackWaves[prevTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[prevTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n } else {\n nextTrackWave = state.trackWaves[prevTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n }\n }\n } else {\n nextTrackWave = state.trackWaves[0];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n }\n actions.onChangeTrack(nextTrackWave, direction, nextTrackId, nextVersionId);\n },\n handleAutoProgress: () => {\n const { activeTrack } = state;\n if (!_.isEmpty(activeTrack)) {\n let nextTrackId = activeTrack.trackID;\n let nextVersionId = activeTrack.versionID;\n let nextTrackWave = state.primaryTrack;\n const lastTrackIndex = (state.trackWaves.length - 1);\n const currentTrackIndex = _.findIndex(state.trackWaves, ['id', activeTrack.trackID]);\n if (currentTrackIndex !== -1) {\n const currentTrackWave = state.trackWaves[currentTrackIndex];\n const nextTrackIndex = (currentTrackIndex === lastTrackIndex) ? 0 : (currentTrackIndex + 1);\n const currentTrackVersionIndex = _.findIndex(state.trackWaves[currentTrackIndex].track_version, ['id', activeTrack.versionID]);\n if (_.has(currentTrackWave, 'showVersion')) {\n if (currentTrackWave.showVersion) {\n if (currentTrackVersionIndex !== -1) {\n const lastTrackVersionIndex = (_.size(state.trackWaves[currentTrackIndex].track_version) - 1);\n const nextTrackVersionIndex = (currentTrackVersionIndex === lastTrackVersionIndex) ? nextTrackIndex : (currentTrackVersionIndex + 1);\n if (_.has(state.trackWaves[currentTrackIndex], 'track_version') && currentTrackVersionIndex !== lastTrackVersionIndex) {\n if (state.trackWaves[nextTrackVersionIndex] !== undefined) {\n nextTrackWave = Object.assign({}, state.trackWaves[currentTrackIndex], {\n versionId: state.trackWaves[currentTrackIndex].track_version[nextTrackVersionIndex].id,\n versionIndex: nextTrackVersionIndex,\n trackIndex: nextTrackIndex,\n });\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = state.trackWaves[currentTrackIndex].track_version[nextTrackVersionIndex].id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, activeTrack.currentContext);\n } else {\n addNewEngagement('play', nextTrackId, nextTrackWave.current_context.id, nextVersionId);\n }\n }\n } else if (currentTrackVersionIndex === lastTrackVersionIndex) {\n if (state.trackWaves[nextTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[nextTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, nextTrackWave.current_context.id, nextVersionId);\n }\n }\n }\n }\n } else if (!currentTrackWave.showVersion) {\n if (state.trackWaves[nextTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[nextTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n }\n } else if (currentTrackVersionIndex !== -1 && currentTrackVersionIndex === 0) {\n if (state.trackWaves[nextTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[nextTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n } else if (state.trackWaves[nextTrackIndex] !== undefined) {\n nextTrackWave = state.trackWaves[nextTrackIndex];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n } else if (!_.isEmpty(state.trackWaves)) {\n nextTrackWave = state.trackWaves[0];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n actions.onChangeTrack(nextTrackWave, 'forward', nextTrackId, nextVersionId);\n }\n },\n handleCurrentTrackOnly: () => {\n const { activeTrack } = state;\n let nextTrackId = activeTrack.trackID;\n let nextVersionId = activeTrack.versionID;\n let nextTrackWave = state.primaryTrack;\n if (!_.isEmpty(activeTrack)) {\n const currentTrackIndex = _.findIndex(state.trackWaves, ['id', activeTrack.trackID]);\n if (currentTrackIndex !== -1) {\n const currentTrackWave = state.trackWaves[currentTrackIndex];\n const currentTrackVersionIndex = _.findIndex(state.trackWaves[currentTrackIndex].track_version, ['id', activeTrack.versionID]);\n if (_.has(currentTrackWave, 'showVersion')) {\n if (currentTrackWave.showVersion) {\n if (currentTrackVersionIndex !== -1) {\n const lastTrackVersionIndex = (_.size(state.trackWaves[currentTrackIndex].track_version) - 1);\n const nextTrackVersionIndex = currentTrackVersionIndex + 1;\n if (_.has(state.trackWaves[currentTrackIndex], 'track_version') && currentTrackVersionIndex !== lastTrackVersionIndex) {\n if (state.trackWaves[nextTrackVersionIndex] !== undefined) {\n nextTrackWave = Object.assign({}, state.trackWaves[currentTrackIndex], {\n versionId: state.trackWaves[currentTrackIndex].track_version[nextTrackVersionIndex].id,\n versionIndex: nextTrackVersionIndex,\n trackIndex: currentTrackIndex,\n });\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = state.trackWaves[currentTrackIndex].track_version[nextTrackVersionIndex].id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, nextTrackWave.current_context.id);\n } else {\n addNewEngagement('play', nextTrackId, nextTrackWave.current_context.id, nextVersionId);\n }\n }\n } else if (_.has(state.trackWaves[currentTrackIndex], 'track_version') && currentTrackVersionIndex === lastTrackVersionIndex) {\n actions.setPosition(0);\n actions.onTogglePlay(true);\n return false;\n }\n } else if (currentTrackVersionIndex === -1) {\n actions.setPosition(0);\n actions.onTogglePlay(true);\n return false;\n }\n actions.onChangeTrack(nextTrackWave, 'forward', nextTrackId, nextVersionId);\n } else if (!currentTrackWave.showVersion) {\n actions.setPosition(0);\n actions.onTogglePlay(true);\n return false;\n }\n } else if (!_.has(currentTrackWave, 'showVersion')) {\n actions.setPosition(0);\n actions.onTogglePlay(true);\n return false;\n }\n } else {\n nextTrackWave = state.trackWaves[0];\n nextTrackId = nextTrackWave.trackId;\n nextVersionId = nextTrackWave.versionId;\n const currentContext = nextTrackWave.current_context.id;\n if (!activeTrack.playing) {\n actions.onTogglePlay(false, nextTrackId, nextVersionId, currentContext);\n } else {\n addNewEngagement('play', nextTrackId, currentContext, nextVersionId);\n }\n }\n }\n return false;\n },\n});\nexport default connect(mapStateToProps, mapDispatchToProps, mergeProps)(FooterPlayer);\n","/**\n *\n * App\n *\n * This component is the skeleton around the actual pages, and should only\n * contain code that should be seen on all pages. (e.g. navigation bar)\n */\n\nimport React, { useEffect } from 'react';\nimport Helmet from 'react-helmet';\nimport PropTypes from 'prop-types';\nimport styled from 'styled-components';\n\nimport Header from 'components/Header';\nimport Footer from 'components/Footer';\nimport ScrollToTop from '../../scroll-to-top';\nimport withProgressBar from 'components/ProgressBar';\nimport FooterPlayer from '../NewFooterPlayer';\n\nexport function App(props) {\n if (window.location.pathname === '/') {\n document.body.classList.add('homepage');\n } else {\n document.body.classList.remove('homepage');\n }\n\n if (window.location.pathname === '/styles') {\n document.body.classList.add('styles');\n } else {\n document.body.classList.remove('styles');\n }\n\n if (props.location.pathname === '/' ||\n props.location.pathname.includes('/browse') ||\n props.location.pathname.includes('/playlist') ||\n props.location.pathname.includes('/track')) {\n document.body.classList.remove('footer-styles');\n } else {\n document.body.classList.add('footer-styles');\n }\n\n if (props.location.pathname === '/contact') {\n document.body.classList.add('contact-page');\n } else {\n document.body.classList.remove('contact-page');\n }\n\n if (props.location.pathname === '/licenses') {\n document.body.classList.add('hero-blog__no-header-padding');\n } else {\n document.body.classList.remove('hero-blog__no-header-padding');\n }\n\n useEffect(() => {\n if (props.location.pathname === '/favourites') {\n props.router.push('/favorites')\n }\n }, [])\n\n return (\n \n
    \n {/*titleTemplate=\"%s • Music Vine\"*/}\n \n
    \n {React.Children.toArray(props.children)}\n
    \n {/* Disable Footer Player */}\n \n
    \n
    \n );\n}\n\nApp.propTypes = {\n children: PropTypes.node,\n};\n\nexport default withProgressBar(App);\n","import { createSelector } from 'reselect';\n\n/**\n * Direct selector to the languageToggle state domain\n */\nconst selectLanguage = (state) => state.get('language');\n\n/**\n * Select the language locale\n */\n\nconst makeSelectLocale = () => createSelector(\n selectLanguage,\n (languageState) => languageState.get('locale')\n);\n\nexport {\n selectLanguage,\n makeSelectLocale,\n};\n","/*\n *\n * LanguageProvider\n *\n * this component connects the redux state language locale to the\n * IntlProvider component and i18n messages (loaded from `app/translations`)\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { createSelector } from 'reselect';\nimport { IntlProvider } from 'react-intl';\n\nimport { makeSelectLocale } from './selectors';\n\nexport class LanguageProvider extends React.PureComponent { // eslint-disable-line react/prefer-stateless-function\n render() {\n return (\n \n {React.Children.only(this.props.children)}\n \n );\n }\n}\n\n// LanguageProvider.propTypes = {\n// locale: PropTypes.string,\n// messages: PropTypes.object,\n// children: PropTypes.element.isRequired,\n// };\n\nconst mapStateToProps = createSelector(\n makeSelectLocale(),\n (locale) => ({ locale })\n);\n\nexport default connect(mapStateToProps)(LanguageProvider);\n","/*\n * AppConstants\n * Each action has a corresponding type, which the reducer knows and picks up on.\n * To avoid weird typos between the reducer and the actions, we save them as\n * constants here. We prefix them with 'yourproject/YourComponent' so we avoid\n * reducers accidentally picking up actions they shouldn't.\n *\n * Follow this format:\n * export const YOUR_ACTION_CONSTANT = 'yourproject/YourContainer/YOUR_ACTION_CONSTANT';\n */\n\nexport const LOAD_REPOS = 'boilerplate/App/LOAD_REPOS';\nexport const LOAD_REPOS_SUCCESS = 'boilerplate/App/LOAD_REPOS_SUCCESS';\nexport const LOAD_REPOS_ERROR = 'boilerplate/App/LOAD_REPOS_ERROR';\nexport const DEFAULT_LOCALE = 'en';\n","/*\n * AppReducer\n *\n * The reducer takes care of our data. Using actions, we can change our\n * application state.\n * To add a new action, add it to the switch statement in the reducer function\n *\n * Example:\n * case YOUR_ACTION_CONSTANT:\n * return state.set('yourStateVariable', true);\n */\n\nimport { fromJS } from 'immutable';\n\nimport {\n LOAD_REPOS_SUCCESS,\n LOAD_REPOS,\n LOAD_REPOS_ERROR,\n} from './constants';\n\n// The initial state of the App\nconst initialState = fromJS({\n loading: false,\n error: false,\n currentUser: false,\n userData: {\n repositories: false,\n },\n});\n\nfunction appReducer(state = initialState, action) {\n switch (action.type) {\n case LOAD_REPOS:\n return state\n .set('loading', true)\n .set('error', false)\n .setIn(['userData', 'repositories'], false);\n case LOAD_REPOS_SUCCESS:\n return state\n .setIn(['userData', 'repositories'], action.repos)\n .set('loading', false)\n .set('currentUser', action.username);\n case LOAD_REPOS_ERROR:\n return state\n .set('error', action.error)\n .set('loading', false);\n default:\n return state;\n }\n}\n\nexport default appReducer;\n","const activeTrack = (state = { trackIndex: false, trackId: false }, action) => {\n switch (action.type) {\n case 'ACTIVE_TRACK':\n return action.newTrack;\n default:\n return state;\n }\n};\n\nexport default activeTrack;\n","const primaryTrack = (state = false, action) => {\n switch (action.type) {\n case 'PRIMARY_TRACK':\n return action.track;\n // return {\n // id: action.track.id,\n // name: action.track.name,\n // json: action.track.json,\n // file: action.track.file,\n // image: action.track.image,\n // wavesurfer: action.track.wavesurfer,\n // disableFirstFifteen: false,\n // readyEvent: false,\n // waveformReadyEvent: false,\n // playEvent: false,\n // pauseEvent: false,\n // audioprocessEvent: false,\n // finishEvent: false,\n // };\n default:\n return state;\n }\n};\n\nexport default primaryTrack;\n","import _ from 'lodash';\n\nconst tracks = (state = [], action) => {\n const results = [];\n switch (action.type) {\n case 'MORE_TRACKS_LOADING':\n return Object.assign({}, state, {\n isFetchingMore: action.isFetchingMore,\n });\n case 'REQUEST_TRACKS':\n return Object.assign({}, state, {\n isFetching: true,\n page: { results: false },\n });\n case 'RECEIVE_TRACKS':\n // console.log('RECEIVE_TRACKS', action.tracks);\n return Object.assign({}, state, {\n isFetching: false,\n page: action.tracks,\n });\n case 'ADD_TRACKS':\n return action.tracks;\n case 'RECEIVE_SIMILAR_TRACKS':\n if (state.page.results[0] && Array.isArray(action.tracks.results)) {\n action.tracks.results.unshift(state.page.results[0]);\n }\n\n return Object.assign({}, state, {\n isFetching: false,\n page: action.tracks,\n });\n case 'ADD_PAGE_TRACKS':\n results.push(action.track);\n return Object.assign({}, state, {\n isFetching: true,\n page: {\n pagination: false,\n results,\n },\n });\n case 'DELETE_PLAYLIST_REQUEST':\n return {\n ...state,\n isDeleting: true,\n };\n case 'DELETE_PLAYLIST_TRACK':\n return {\n ...state,\n isDeleting: false,\n page: {\n ...state.page,\n results: _.filter(state.page.results, (track) => track.id !== action.trackId),\n },\n };\n case 'REMOVE_TRACK_FROM_STYLE_REQUEST':\n return {\n ...state,\n isRemoveLoading: {\n isDeleting: true,\n trackId: action.trackId,\n },\n };\n case 'REMOVE_TRACK_FROM_STYLE':\n return {\n ...state,\n isRemoveLoading: {\n isDeleting: false,\n trackId: action.trackId,\n },\n page: {\n ...state.page,\n results: _.filter(state.page.results, (track) => track.id !== action.trackId),\n },\n };\n default:\n return state;\n }\n};\n\nexport default tracks;\n\n","const tracksWave = (state = {}, action) => {\n let newState = {};\n const waveform = {};\n switch (action.type) {\n case 'ADD_TRACKS_WAVE':\n return action.tracks;\n case 'ADD_SIMILAR_TRACKS_WAVE':\n newState = Object.assign({}, state);\n newState = Object.assign(newState, action.tracks);\n return newState;\n case 'ADD_PAGE_TRACKS_WAVE':\n waveform[action.waveform.id] = action.waveform;\n newState = Object.assign({}, waveform);\n return newState;\n default:\n return state;\n }\n};\n\nexport default tracksWave;\n\n","const allTracks = (state = [], action) => {\n switch (action.type) {\n case 'ADD_ALL_TRACKS':\n return action.tracks;\n case 'RECEIVE_ALL_TRACKS':\n return action.tracks;\n default:\n return state;\n }\n};\n\nexport default allTracks;\n","const trackIds = (state = [], action) => {\n let newState = [];\n switch (action.type) {\n case 'ADD_TRACK_IDS':\n return action.tracks;\n case 'RECEIVE_TRACK_IDS':\n return action.trackIds;\n case 'RECEIVE_SIMILAR_TRACK_IDS':\n newState = state.concat(action.trackIds);\n return newState;\n case 'ADD_PAGE_TRACK_IDS':\n newState.push(action.trackId);\n return newState;\n default:\n return state;\n }\n};\n\nexport default trackIds;\n","const allTrackIds = (state = [], action) => {\n let newState = [];\n switch (action.type) {\n case 'ADD_ALL_TRACK_IDS':\n return action.tracks;\n case 'RECEIVE_ALL_TRACK_IDS':\n return action.trackIds;\n case 'MERGE_ALL_TRACK_IDS':\n return action.trackIds;\n case 'RECEIVE_ALL_SIMILAR_TRACK_IDS':\n newState = state.concat(action.trackIds);\n return newState;\n case 'ADD_ALL_PAGE_TRACK_IDS':\n newState.push(action.trackId);\n return newState;\n default:\n return state;\n }\n};\n\nexport default allTrackIds;\n","const playbackMode = (state = 'auto-progress', action) => {\n switch (action.type) {\n case 'PLAYBACK_MODE':\n return action.mode\n default:\n return state;\n }\n};\n\nexport default playbackMode;\n","const recentPlayHistory = (state = [], action) => {\n switch (action.type) {\n case 'ADD_RECENT_PLAY':\n const recent = state;\n if (recent.indexOf(action.track) !== -1) {\n recent.splice(recent.indexOf(action.track), 1);\n }\n recent.unshift(action.track);\n return recent;\n default:\n return state;\n }\n};\n\nexport default recentPlayHistory;\n","const firstFifteenStart = (state = '', action) => {\n switch (action.type) {\n case 'FIRST_FIFTEEN':\n return action.time\n default:\n return state;\n }\n};\n\nexport default firstFifteenStart;\n","const INITIAL_STATE = {\n plan: parseInt( sessionStorage.getItem('basket_subscription_id') ),\n isMonthly: (sessionStorage.getItem('selected_billing_mode') === 'monthly'),\n hasValidVatNumber: false,\n discount: false\n};\n\nexport default (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'ADD_SUBSCRIPTION_TO_CART':\n return Object.assign({}, state, {plan: action.subscriptionId});\n case 'EMPTY_SUBSCRIPTION_CART':\n return Object.assign({}, state, {plan: false});\n case 'SET_SUB_ANNUAL_OR_MONTHLY':\n let isMonthly = (action.period === 'monthly');\n return Object.assign({}, state, {isMonthly});\n case 'SET_CART_HAS_VALID_VAT_NUMBER':\n return Object.assign({}, state, {hasValidVatNumber: action.hasValidVatNumber});\n case 'SET_SUBSCRIPTION_DISCOUNT':\n return Object.assign({}, state, {discount: action.discount});\n default:\n return state;\n }\n};","const INITIAL_STATE = {\n id: 1,\n symbol_left: '$',\n value: 1,\n code: 'USD',\n isAmbiguous: true,\n};\n\nexport default (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'LOAD_CURRENCY_DATA':\n sessionStorage.setItem('currency_id', action.currency.id);\n sessionStorage.setItem('currency_symbol', action.currency.symbol_left);\n sessionStorage.setItem('currency_value', action.currency.value);\n sessionStorage.setItem('currency_code', action.currency.code);\n action.currency.isAmbiguous = (action.currency.symbol_left === '$');\n return Object.assign({}, state, action.currency);\n default:\n return state;\n }\n};\n","const country = (state = {id: -1, iso_code_2: '', vat_rate: 0}, action) => {\n switch (action.type) {\n case 'LOAD_COUNTRY_DATA':\n return action.country;\n default:\n return state;\n }\n};\nexport default country;\n","const license = (state = {\n active: false,\n isDownload: false,\n isCalling: false,\n downloadedTrackInfo: {},\n isGenerateLicenseCodeHasError: false,\n viewCredit: false\n }, action) => {\n\n switch (action.type) {\n case 'DISPLAY_LICENSE':\n return action.license;\n\n case 'ADD_LICENSE':\n return {\n ...state,\n active: !action.isDownload,\n track: action.track,\n isDownload: action.isDownload,\n viewCredit: action.viewCredit,\n isCalling: true,\n downloadedTrackInfo: {\n ...state.downloadedTrackInfo,\n download: false\n },\n };\n\n case 'REMOVE_LICENSE':\n return {\n ...state,\n active: false,\n isDownload: false,\n viewCredit: false,\n isCalling: false,\n isGenerateLicenseCodeHasError: false,\n downloadedTrackInfo: {\n ...state.downloadedTrackInfo,\n download: false,\n licenseCode: \"\"\n },\n };\n\n case 'DOWNLOAD_TRACK_INFO':\n return {\n ...state,\n isCalling: false,\n isGenerateLicenseCodeHasError: false,\n downloadedTrackInfo: {\n ...state.downloadedTrackInfo,\n ...action.downloadedTrackInfo\n }\n }\n\n case 'GENERATE_LICENSE_CODE':\n return {\n ...state,\n isGenerateLicenseCodeHasError: false,\n downloadedTrackInfo: {\n ...state.downloadedTrackInfo,\n licenseCode: \"\"\n }\n }\n\n case 'GENERATE_LICENSE_CODE_ERROR':\n return {\n ...state,\n isGenerateLicenseCodeHasError: true,\n }\n\n default:\n return state;\n }\n};\n\nexport default license;\n","const energies = (state = [], action) => {\n switch (action.type) {\n case 'REQUEST_ENERGIES':\n return Object.assign({}, state, {\n isFetching: true,\n page: { results: false },\n });\n case 'RECEIVE_ENERGIES':\n return Object.assign({}, state, {\n isFetching: false,\n page: action.energies,\n });\n case 'ADD_ENERGIES':\n return action.energies;\n default:\n return state;\n }\n};\n\nexport default energies;\n\n","const vocals = (state = [], action) => {\n switch (action.type) {\n case 'REQUEST_VOCALS':\n return Object.assign({}, state, {\n isFetching: true,\n page: { results: false },\n });\n case 'RECEIVE_VOCALS':\n return Object.assign({}, state, {\n isFetching: false,\n page: action.vocals,\n });\n case 'ADD_VOCALS':\n return action.vocals;\n default:\n return state;\n }\n};\n\nexport default vocals;\n\n","const collections = (state = [], action) => {\n switch (action.type) {\n case 'REQUEST_COLLECTIONS':\n return Object.assign({}, state, {\n isFetching: true,\n page: { results: false },\n });\n case 'RECEIVE_COLLECTIONS':\n return Object.assign({}, state, {\n isFetching: false,\n page: action.collections,\n });\n case 'ADD_COLLECTIONS':\n return action.collections;\n default:\n return state;\n }\n};\n\nexport default collections;\n\n","const categories = (state = [], action) => {\n switch (action.type) {\n case 'REQUEST_CATEGORIES':\n return Object.assign({}, state, {\n isFetching: true,\n page: { results: false },\n });\n case 'RECEIVE_CATEGORIES':\n return Object.assign({}, state, {\n isFetching: false,\n page: action.categories,\n });\n case 'ADD_CATEGORIES':\n return action.categories;\n default:\n return state;\n }\n};\n\nexport default categories;\n\n","const moods = (state = [], action) => {\n switch (action.type) {\n case 'REQUEST_MOODS':\n return Object.assign({}, state, {\n isFetching: true,\n page: { results: false },\n });\n case 'RECEIVE_MOODS':\n return Object.assign({}, state, {\n isFetching: false,\n page: action.moods,\n });\n case 'ADD_MOODS':\n return action.moods;\n default:\n return state;\n }\n};\n\nexport default moods;\n\n","const styles = (state = {}, action) => {\n switch (action.type) {\n case 'REQUEST_STYLES':\n return Object.assign({}, state, {\n isFetching: true,\n page: { results: false },\n });\n case 'RECEIVE_STYLES':\n return Object.assign({}, state, {\n isFetching: false,\n page: action.styles,\n });\n case 'ADD_STYLES':\n return action.styles;\n default:\n return state;\n }\n};\n\nexport default styles;\n\n","const versions = (state = {}, action) => {\n let newState = {};\n switch (action.type) {\n case 'RECEIVE_VERSIONS':\n return action.versions;\n case 'ADD_VERSIONS':\n newState = Object.assign({}, state);\n newState = Object.assign(newState, action.versions);\n return newState;\n default:\n return state;\n }\n};\n\nexport default versions;\n\n","const versionsWave = (state = {}, action) => {\n switch (action.type) {\n case 'ADD_VERSIONS_WAVE':\n const newState = Object.assign({}, state);\n return Object.assign({}, state, action.versions);\n // return action.versions;\n default:\n return state;\n }\n};\n\nexport default versionsWave;\n\n","const versionIds = (state = [], action) => {\n const newState = state;\n switch (action.type) {\n case 'ADD_VERSION_IDS':\n action.versions.forEach((version) => {\n newState.push(version.id);\n });\n return newState;\n case 'REMOVE_VERSION_IDS':\n action.versions.forEach((version) => {\n delete newState[version.id];\n });\n return newState;\n case 'RECEIVE_VERSION_IDS':\n return action.versionIds;\n default:\n return state;\n }\n};\n\nexport default versionIds;\n","const playlist = (state = { active: false }, action) => {\n let playlist = {};\n let versionId = {};\n switch (action.type) {\n case 'DISPLAY_PLAYLIST':\n return action.playlist;\n case 'ADD_PLAYLIST':\n if (typeof action.version === 'number') {\n versionId.id = action.version;\n } else {\n versionId = action.version;\n }\n playlist = {\n active: true,\n track: action.track,\n version: versionId,\n };\n return playlist;\n case 'REMOVE_PLAYLIST':\n playlist = {\n active: false,\n };\n return playlist;\n default:\n return state;\n }\n};\n\nexport default playlist;\n","const playing = (state = false, action) => {\n switch (action.type) {\n case 'TOGGLE_PLAY':\n return !state;\n case 'SET_PLAYING':\n return action.playing;\n default:\n return state;\n }\n};\n\nexport default playing;\n","const newTracks = (state = false, action) => {\n switch (action.type) {\n case 'NEW_TRACKS':\n return true;\n case 'SET_HANDLERS':\n return false;\n default:\n return state;\n }\n};\n\nexport default newTracks;\n","const newTrackVersions = (state = false, action) => {\n switch (action.type) {\n case 'NEW_TRACKS_VERSIONS':\n return true;\n case 'SET_HANDLERS_VERSIONS':\n return false;\n default:\n return state;\n }\n};\n\nexport default newTrackVersions;\n","const filter = (state = false, action) => {\n switch (action.type) {\n case 'NOT_FILTERED':\n return true;\n case 'FILTERED':\n return false;\n // case LOCATION_CHANGE:\n // return true;\n default:\n return state;\n }\n};\n\nexport default filter;\n","const appliedFilters = (state = {}, action) => {\n switch (action.type) {\n case 'REMOVE_FILTERS_APPLIED':\n return {};\n case 'ADD_FILTERS_APPLIED':\n return Object.assign({}, action.locationQuery);\n default:\n return state;\n }\n};\n\nexport default appliedFilters;\n","const modal = (state = false, action) => {\n switch (action.type) {\n case 'REMOVE_MODAL':\n return false;\n case 'ADD_MODAL':\n return { type: action.modal, intent: action.intent };\n default:\n return state;\n }\n};\n\nexport default modal;\n","const INITIAL_STATE = {\n error: false,\n showLoader: false,\n showRecaptchaV2: false,\n};\n\nconst modal = (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'SIGNUP_ERROR':\n return Object.assign({}, state, {error: action.error});\n case 'SIGNUP_SHOW_LOADER':\n return Object.assign({}, state, {showLoader: action.showLoader});\n case 'SHOW_RECAPTCHA_V2':\n return Object.assign({}, state, {showRecaptchaV2: action.showRecaptchaV2});\n default:\n return state;\n }\n};\n\nexport default modal;\n","const headerNotifications = (state = { track: false, notification: false, notificationTimer: false, signin: false, playlistName: '', firstName: '', newPlaylist: false, animateIn: false, animateOut: false }, action) => {\n switch (action.type) {\n case 'SHOW_PLAYLIST_SUCCESS':\n return Object.assign({}, state, {\n signin: false,\n track: action.track,\n playlistName: action.playlistName,\n newPlaylist: action.newPlaylist,\n animateIn: false,\n animateOut: false\n });\n case 'HIDE_PLAYLIST_SUCCESS':\n return Object.assign({}, state, {\n track: false,\n playlistName: '',\n newPlaylist: false,\n animateIn: false,\n animateOut: false\n });\n case 'ANIMATE_IN_PLAYLIST_SUCCESS':\n return Object.assign({}, state, {\n animateIn: true\n });\n case 'ANIMATE_OUT_PLAYLIST_SUCCESS':\n return Object.assign({}, state, {\n animateOut: true\n });\n\n\n\n\n case 'SHOW_SIGNIN_SUCCESS':\n return Object.assign({}, state, {\n signin: true,\n track: false,\n notification: false,\n firstName: action.firstName,\n animateIn: false,\n animateOut: false\n });\n case 'HIDE_SIGNIN_SUCCESS':\n return Object.assign({}, state, {\n signin: false,\n track: false,\n firstName: '',\n animateIn: false,\n animateOut: false\n });\n case 'SHOW_NOTIFICATION_SUCCESS':\n return Object.assign({}, state, {\n signin: false,\n track: false,\n firstName: '',\n notification: true,\n notificationTimer: action.payload || false,\n animateIn: false,\n animateOut: false\n }); \n case 'HIDE_NOTIFICATION_SUCCESS':\n return Object.assign({}, state, {\n signin: false,\n track: false,\n notification: false,\n notificationTimer: false,\n firstName: '',\n animateIn: false,\n animateOut: false\n }); \n case 'ANIMATE_IN_SIGNIN_SUCCESS':\n return Object.assign({}, state, {\n animateIn: true\n });\n case 'ANIMATE_OUT_SIGNIN_SUCCESS':\n return Object.assign({}, state, {\n animateOut: true\n });\n default:\n return state;\n }\n};\n\nexport default headerNotifications;","export default (state = [], action) => {\n switch (action.type) {\n case 'LOAD_FAVORITES':\n return [...action.favorites];\n case 'ADD_TO_FAVORITES':\n return [...state, action.ID];\n case 'REMOVE_FROM_FAVORITES':\n return state.filter((fav) => fav !== action.ID);\n default:\n return state;\n }\n};\n","export default (state = [], action) => {\n switch (action.type) {\n case 'LOAD_FOLLOWING_DATA':\n return [...action.following];\n case 'FOLLOW_ARTIST':\n return [...state, action.ID];\n case 'UNFOLLOW_ARTIST':\n return state.filter((follow) => follow !== action.ID);\n default:\n return state;\n }\n};\n","const INITIAL_STATE = {\n isActive: false,\n isFreeTrial: false,\n period: false,\n permittedContent: [],\n permittedDistribution: [],\n hasLoaded: false,\n overduePayment: null,\n hasExpiredNotice: false,\n};\n\nexport default (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'LOAD_SUBSCRIPTION_DATA':\n action.subscriptionData.hasLoaded = true;\n return Object.assign({}, state, action.subscriptionData);\n case 'SET_HAS_EXPIRED_NOTICE':\n return Object.assign({}, state, { hasExpiredNotice: action.hasExpiredNotice });\n case 'LOAD_SUBSCRIPTION_PERMISSION':\n return {\n ...state,\n permittedContent: action.payload.permitted_content,\n permittedDistribution: action.payload.permittedDistribution,\n };\n default: return state;\n }\n};\n","import { addNewEngagement } from 'actions/favouriteAction';\n\nconst initialState = {\n isPlaying: false,\n currentTrack: {},\n scope: '@NONE',\n mode: '@SINGLE',\n};\n\nconst playerReducer = (state = initialState, action) => {\n switch (action.type) {\n case 'PLAYER_SET_PLAYING':\n if (action.engagementInfo) {\n addNewEngagement('play', action.engagementInfo.trackId, action.engagementInfo.contextId, action.engagementInfo.versionId, action.engagementInfo.browseType);\n }\n return Object.assign({}, state, {\n isPlaying: true,\n });\n case 'PLAYER_SET_PAUSE':\n return Object.assign({}, state, {\n isPlaying: false,\n });\n case 'PLAYER_SET_PLAY':\n return Object.assign({}, state, {\n isPlaying: true,\n });\n case 'PLAYER_CURRENT_TRACK':\n return Object.assign({}, state, {\n currentTrack: action.currentTrack,\n });\n case 'PLAYER_DESTROY':\n return {\n ...state,\n isPlaying: false,\n currentTrack: {},\n };\n default:\n return state;\n }\n};\n\nexport default playerReducer;\n","import _ from 'lodash';\nimport indexOf from 'lodash/indexOf';\nimport reduce from 'lodash/reduce';\nconst INITIAL_STATE = {\n modes: {\n autoprogress: true,\n shuffle: false,\n repeat: false,\n firstFifteen: false,\n current: false,\n },\n activeMode: 'autoprogress',\n playing: false,\n tracks: [],\n activeTrack: {},\n playerActive: false,\n primaryTrack: {},\n isAudioReady: false,\n playerTrack: {\n duration: 0,\n },\n trackWaves: [],\n newTrackWaves: [],\n position: 0,\n volume: localStorage.getItem('volume') || '1',\n isMute: false,\n};\n\n/**\n* @param {Object} state - Default application state\n* @param {Object} action - Action from action creator\n* @returns {Object} New state\n*/\nexport default (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'CHANGE_MODE':\n const modes = reduce(state.modes, (mode, value, key) => {\n if (action.mode === key) {\n mode[action.mode] = true;\n } else {\n mode[key] = false;\n }\n return mode;\n }, {});\n return {\n ...state,\n modes,\n activeMode: Object.keys(modes)[indexOf(Object.values(modes), true)],\n };\n case 'TOGGLE_PLAY':\n return {\n ...state,\n playing: !action.playing,\n activeTrack: {\n ...state.activeTrack,\n playing: !action.playing,\n },\n };\n case 'PLAY_ACTIVE_TRACK':\n return {\n ...state,\n playing: true,\n activeTrack: {\n ...state.activeTrack,\n playing: true,\n },\n };\n case 'PAUSED_ACTIVE_TRACK':\n return {\n ...state,\n playing: false,\n activeTrack: {\n ...state.activeTrack,\n playing: false,\n },\n };\n case 'ON_CHANGE_TRACK':\n return {\n ...state,\n primaryTrack: action.track,\n activeTrack: {\n ...state.activeTrack,\n trackID: action.track.trackId,\n versionID: action.track.versionId,\n isAudioReady: false,\n currentContext: action.track.current_context.id,\n },\n position: 0,\n };\n case 'PLAYER_ACTIVE':\n return {\n ...state,\n playerActive: true,\n };\n case 'PLAYER_IN_ACTIVE':\n return {\n ...state,\n primaryTrack: {},\n playerActive: false,\n activeTrack: {},\n playing: false,\n position: 0,\n isAudioReady: false,\n playerTrack: {\n duration: 0,\n },\n };\n case 'ADD_ACTIVE_TRACK':\n return {\n ...state,\n activeTrack: {\n ...action.track,\n playing: state.playing,\n },\n };\n case 'ADD_PRIMARY_TRACK':\n return {\n ...state,\n primaryTrack: action.track,\n };\n case 'ADD_VERSION_PRIMARY_TRACK':\n return {\n ...state,\n primaryTrack: {\n ...state.primaryTrack,\n ...action.version.track,\n ...action.version,\n },\n };\n case 'PLAYER_ACTIVE_TRACK':\n return {\n ...state,\n playerTrack: action.track,\n };\n case 'IS_AUDIO_READY':\n return {\n ...state,\n isAudioReady: action.isReady,\n activeTrack: {\n ...state.activeTrack,\n isAudioReady: action.isReady,\n playing: state.playing,\n },\n };\n case 'ADD_COLLECTION_TRACK_WAVE':\n return {\n ...state,\n storePage: action.page || 1,\n trackWaves: action.tracks,\n };\n case 'ADD_TRACK_WAVE':\n return {\n ...state,\n storePage: action.page || 1,\n trackWaves: state.trackWaves.length === 1 ? [\n ...state.trackWaves,\n ...action.tracks,\n ] : action.tracks,\n };\n case 'ADD_PAGE_TRACK_WAVE':\n return {\n ...state,\n newTrackWaves: action.tracks,\n };\n case 'FLUSH_CURRENT_TRACK_WAVE':\n return {\n ...state,\n storePage: action.page || 1,\n trackWaves: state.newTrackWaves,\n newTrackWaves: [],\n };\n case 'FLUSH_NEW_TRACK_WAVE':\n return {\n ...state,\n newTrackWaves: [],\n };\n case 'ADD_TRACK_PAGE_VERSION_WAVE':\n return {\n ...state,\n trackWaves: _.map(state.trackWaves, (track) => {\n if (track.id === action.track.trackId) {\n return {\n ...track,\n track_version: _.map(track.track_version, (version) => {\n if (version.id === action.track.versionId) {\n return {\n ...version,\n wavesurfer: action.track.wavesurfer,\n };\n }\n return {\n ...version,\n };\n }),\n };\n }\n return {\n ...track,\n };\n }),\n };\n case 'ADD_TRACK_PAGE_WAVE':\n return {\n ...state,\n trackWaves: state.trackWaves.concat({\n ...action.track,\n trackIndex: state.trackWaves.length,\n }),\n };\n case 'ADD_VERSION_TRACK_WAVE':\n return {\n ...state,\n trackWaves: _.map(state.trackWaves, (track) => {\n if (track.id === action.version.trackId) {\n const mainVersionWave = _.find(track.track_version, 'wavesurfer');\n return {\n ...track,\n track_version: [\n mainVersionWave,\n ...action.version.versionWaves,\n ],\n };\n }\n return {\n ...track,\n };\n }),\n };\n case 'ADD_VERSION_NEW_TRACK_WAVE':\n return {\n ...state,\n newTrackWaves: _.map(state.newTrackWaves, (track) => {\n if (track.id === action.version.trackId) {\n const mainVersionWave = _.find(track.track_version, 'wavesurfer');\n return {\n ...track,\n track_version: [\n mainVersionWave,\n ...action.version.versionWaves,\n ],\n };\n }\n return {\n ...track,\n };\n }),\n };\n case 'SET_PLAYER_POSITION':\n return {\n ...state,\n position: action.position,\n activeTrack: {\n ...state.activeTrack,\n position: action.position,\n playing: state.playing,\n },\n };\n case 'FLUSH_TRACK_WAVE':\n return {\n ...state,\n trackWaves: [],\n };\n case 'SET_PLAYER_VOLUME':\n return {\n ...state,\n volume: action.volume,\n };\n case 'SET_NEW_TRACK_POSTION':\n return {\n ...state,\n position: action.track.position,\n activeTrack: {\n ...action.track.activeTrack,\n isAudioReady: state.isAudioReady,\n position: action.track.position,\n playing: true,\n },\n primaryTrack: action.track.primaryTrack,\n };\n case 'TOGGLE_MUTE':\n return {\n ...state,\n isMute: !state.isMute,\n volume: localStorage.getItem('volume'),\n };\n case 'TOGGLE_VERSION':\n return {\n ...state,\n trackWaves: _.map(state.trackWaves, (wave) => {\n if (wave.id === action.trackId) {\n return {\n ...wave,\n showVersion: action.isVisible,\n };\n }\n return {\n ...wave,\n };\n }),\n };\n default: return state;\n }\n};\n","/*\n *\n * LanguageProvider constants\n *\n */\n\nexport const CHANGE_LOCALE = 'app/LanguageToggle/CHANGE_LOCALE';\n","/*\n *\n * LanguageProvider reducer\n *\n */\n\nimport { fromJS } from 'immutable';\n\nimport {\n CHANGE_LOCALE,\n} from './constants';\nimport {\n DEFAULT_LOCALE,\n} from '../App/constants';\n\nconst initialState = fromJS({\n locale: DEFAULT_LOCALE,\n});\n\nfunction languageProviderReducer(state = initialState, action) {\n switch (action.type) {\n case CHANGE_LOCALE:\n return state\n .set('locale', action.locale);\n default:\n return state;\n }\n}\n\nexport default languageProviderReducer;\n","\n\nconst INITIAL_STATE = {\n isLoading: false,\n categories: [],\n letters: {},\n artists: [],\n latestArtists: [],\n artistDetails: {},\n pagination: {},\n};\n\n/**\n* @param {Object} state - Default application state\n* @param {Object} action - Action from action creator\n* @returns {Object} New state\n*/\n\nexport default (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'FETCH_CATEGORIES_REQUEST':\n return {\n ...state,\n };\n case 'FETCH_CATEGORIES_SUCCESS':\n return {\n ...state,\n categories: action.payload,\n };\n case 'FETCH_CATEGORIES_FAILURE':\n return {\n ...state,\n categories: [],\n };\n case 'FETCH_LETTERS_REQUEST':\n return {\n ...state,\n };\n case 'FETCH_LETTERS_SUCCESS':\n return {\n ...state,\n letters: action.payload,\n };\n case 'FETCH_LETTERS_FAILURE':\n return {\n ...state,\n letters: [],\n };\n case 'FETCH_CATEGORY_ARTISTS_REQUEST':\n return {\n ...state,\n pagination: {},\n isLoading: true,\n };\n case 'FETCH_CATEGORY_ARTISTS_SUCCESS':\n return {\n ...state,\n isLoading: false,\n artists: action.payload.results,\n pagination: action.payload.pagination,\n };\n case 'FETCH_CATEGORY_ARTISTS_FAILURE':\n return {\n ...state,\n isLoading: false,\n pagination: {},\n artists: [],\n };\n case 'FETCH_LATEST_ARTISTS_REQUEST':\n return {\n ...state,\n };\n case 'FETCH_LATEST_ARTISTS_SUCCESS':\n return {\n ...state,\n latestArtists: action.payload,\n };\n case 'FETCH_LATEST_ARTISTS_FAILURE':\n return {\n ...state,\n latestArtists: [],\n };\n case 'ADD_ARTIST_DETAILS':\n return {\n ...state,\n artistDetails: action.payload,\n };\n default: return state;\n }\n};\n","const INITIAL_STATE = {\n isLoggedIn: null,\n hasEnteredProfession: false,\n isAdmin: false,\n isCustomer: false,\n isArtist: false,\n};\n\nconst userAuth = (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'SET_LOGIN_STATUS':\n return Object.assign({}, state, {isLoggedIn: action.isLoggedIn});\n case 'SET_HAS_ENTERED_PROFESSION':\n return Object.assign({}, state, {hasEnteredProfession: action.hasEnteredProfession});\n case 'LOAD_USER_DATA':\n return Object.assign({}, state, action.userData);\n default:\n return state;\n }\n};\n\nexport default userAuth;\n","const INITIAL_STATE = {\n adminData: false,\n editData: false,\n showRelevancy: false,\n};\n\nconst adminBar = (state = INITIAL_STATE, action) => {\n switch (action.type) {\n case 'SET_EDIT_DATA':\n return Object.assign({}, state, {editData: action.editData});\n case 'CLEAR_EDIT_DATA':\n return Object.assign({}, state, {editData: false});\n case 'LOAD_ADMIN_DATA':\n return Object.assign({}, state, {adminData: action.adminData, showRelevancy: action.showRelevancy});\n case 'TOGGLE_RELEVANCY':\n let showRelevancy;\n if (state.showRelevancy) {\n showRelevancy = false;\n sessionStorage.setItem(\"showDebugRData\", \"0\");\n } else {\n showRelevancy = true;\n sessionStorage.setItem(\"showDebugRData\", \"1\");\n }\n return Object.assign({}, state, { showRelevancy });\n default:\n return state;\n }\n};\n\nexport default adminBar;\n","/**\n * Combine all reducers in this file and export the combined reducers.\n * If we were to do this in store.js, reducers wouldn't be hot reloadable.\n */\n\nimport { fromJS } from 'immutable';\nimport { combineReducers } from 'redux-immutable';\nimport { LOCATION_CHANGE } from 'react-router-redux';\n\nimport globalReducer from 'containers/App/reducer';\nimport activeTrack from 'reducers/activeTrackReducer';\nimport primaryTrack from 'reducers/primaryTrackReducer';\nimport tracks from 'reducers/tracksReducer';\nimport tracksWave from 'reducers/tracksWaveReducer';\nimport allTracks from 'reducers/allTracksReducer';\nimport trackIds from 'reducers/trackIdsReducer';\nimport allTrackIds from 'reducers/allTrackIdsReducer';\nimport playbackMode from 'reducers/playbackModeReducer';\nimport recentPlayHistory from 'reducers/recentPlayHistoryReducer';\nimport firstFifteenStart from 'reducers/firstFifteenStartReducer';\nimport subscriptionCart from 'reducers/cartReducer';\nimport currency from 'reducers/currencyReducer';\nimport country from 'reducers/countryReducer';\nimport license from 'reducers/licenseReducer';\nimport energies from 'reducers/energiesReducer';\nimport vocals from 'reducers/vocalsReducer';\nimport collections from 'reducers/collectionsReducer';\nimport categories from 'reducers/categoriesReducer';\nimport moods from 'reducers/moodsReducer';\nimport styles from 'reducers/stylesReducer';\nimport versions from 'reducers/versionsReducer';\nimport versionsWave from 'reducers/versionsWaveReducer';\nimport versionIds from 'reducers/versionIdsReducer';\nimport playlist from 'reducers/playlistReducer';\nimport playing from 'reducers/playingReducer';\nimport newTracks from 'reducers/newTracksReducer';\nimport newTrackVersions from 'reducers/newTrackVersionsReducer';\nimport filter from 'reducers/filterReducer';\nimport appliedFilters from 'reducers/appliedFiltersReducer';\nimport modal from 'reducers/modalReducer';\nimport signup from 'reducers/signupReducer';\nimport headerNotifications from 'reducers/headerReducer';\nimport favorites from 'reducers/favoritesReducer';\nimport following from 'reducers/followingReducer';\nimport subscriptionData from 'reducers/subscriptionReducer';\nimport player from 'reducers/playerReducer';\nimport footerPlayer from './reducers/footerPlayerReducer';\nimport languageProviderReducer from 'containers/LanguageProvider/reducer';\nimport artistsReducer from 'reducers/artistReducer';\nimport userAuth from 'reducers/authenticationReducer';\nimport adminBar from 'reducers/adminBarReducer';\n/*\n * routeReducer\n *\n * The reducer merges route location changes into our immutable state.\n * The change is necessitated by moving to react-router-redux@4\n *\n */\n\n// Initial routing state\nconst routeInitialState = fromJS({\n locationBeforeTransitions: null,\n});\n\n/**\n * Merge route into the global application state\n */\nfunction routeReducer(state = routeInitialState, action) {\n switch (action.type) {\n /* istanbul ignore next */\n case LOCATION_CHANGE:\n return state.merge({\n locationBeforeTransitions: action.payload,\n });\n default:\n return state;\n }\n}\n\n/**\n * Creates the main reducer with the asynchronously loaded ones\n */\nexport default function createReducer(asyncReducers) {\n return combineReducers({\n tracks,\n tracksWave,\n trackIds,\n allTracks,\n allTrackIds,\n primaryTrack,\n activeTrack,\n playbackMode,\n recentPlayHistory,\n firstFifteenStart,\n subscriptionCart,\n currency,\n country,\n license,\n energies,\n vocals,\n collections,\n categories,\n moods,\n styles,\n versions,\n versionsWave,\n versionIds,\n playlist,\n playing,\n newTracks,\n newTrackVersions,\n filter,\n modal,\n userAuth,\n adminBar,\n signup,\n headerNotifications,\n appliedFilters,\n favorites,\n following,\n subscriptionData,\n player,\n footerPlayer,\n artists: artistsReducer,\n route: routeReducer,\n global: globalReducer,\n language: languageProviderReducer,\n ...asyncReducers,\n });\n}\n","/**\n * Create the store with asynchronously loaded reducers\n */\n\nimport thunk from 'redux-thunk';\nimport { fromJS } from 'immutable';\nimport { createLogger } from 'redux-logger';\nimport createSagaMiddleware from 'redux-saga';\nimport { routerMiddleware } from 'react-router-redux';\nimport { createStore, applyMiddleware, compose } from 'redux';\n\nimport createReducer from './reducers';\n\nconst loggerMiddleware = createLogger();\nconst sagaMiddleware = createSagaMiddleware();\n\nexport default function configureStore(initialState = {}, history) {\n // Create the store with two middlewares\n // 1. sagaMiddleware: Makes redux-sagas work\n // 2. routerMiddleware: Syncs the location/URL path to the state\n const middlewares = [\n sagaMiddleware,\n //loggerMiddleware,\n routerMiddleware(history),\n ];\n\n const enhancers = [\n applyMiddleware(...middlewares, thunk),\n ];\n\n // If Redux DevTools Extension is installed use it, otherwise use Redux compose\n /* eslint-disable no-underscore-dangle */\n const composeEnhancers =\n process.env.NODE_ENV !== 'production' &&\n typeof window === 'object' &&\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ ?\n window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ : compose;\n /* eslint-enable */\n\n const store = createStore(\n createReducer(),\n fromJS(initialState),\n composeEnhancers(...enhancers)\n );\n\n // Extensions\n store.runSaga = sagaMiddleware.run;\n store.asyncReducers = {}; // Async reducer registry\n\n // Make reducers hot reloadable, see http://mxs.is/googmo\n /* istanbul ignore next */\n if (module.hot) {\n module.hot.accept('./reducers', () => {\n import('./reducers').then((reducerModule) => {\n const createReducers = reducerModule.default;\n const nextReducers = createReducers(store.asyncReducers);\n\n store.replaceReducer(nextReducers);\n });\n });\n }\n\n return store;\n}\n","/**\n * i18n.js\n *\n * This will setup the i18n language files and locale data for your app.\n *\n */\nimport { addLocaleData } from 'react-intl';\nimport enLocaleData from 'react-intl/locale-data/en';\nimport deLocaleData from 'react-intl/locale-data/de';\n\nimport { DEFAULT_LOCALE } from './/containers/App/constants';\n\nimport enTranslationMessages from './translations/en.json';\nimport deTranslationMessages from './translations/de.json';\n\naddLocaleData(enLocaleData);\naddLocaleData(deLocaleData);\n\nexport const appLocales = [\n 'en',\n 'de',\n];\n\nexport const formatTranslationMessages = (locale, messages) => {\n const defaultFormattedMessages = locale !== DEFAULT_LOCALE\n ? formatTranslationMessages(DEFAULT_LOCALE, enTranslationMessages)\n : {};\n return Object.keys(messages).reduce((formattedMessages, key) => {\n const formattedMessage = !messages[key] && locale !== DEFAULT_LOCALE\n ? defaultFormattedMessages[key]\n : messages[key];\n return Object.assign(formattedMessages, { [key]: formattedMessage });\n }, {});\n};\n\nexport const translationMessages = {\n en: formatTranslationMessages('en', enTranslationMessages),\n de: formatTranslationMessages('de', deTranslationMessages),\n};\n","import conformsTo from 'lodash/conformsTo';\nimport isEmpty from 'lodash/isEmpty';\nimport isFunction from 'lodash/isFunction';\nimport isObject from 'lodash/isObject';\nimport isString from 'lodash/isString';\nimport invariant from 'invariant';\nimport warning from 'warning';\n\nimport createReducer from '../reducers';\n\n/**\n * Validate the shape of redux store\n */\nexport function checkStore(store) {\n const shape = {\n dispatch: isFunction,\n subscribe: isFunction,\n getState: isFunction,\n replaceReducer: isFunction,\n runSaga: isFunction,\n asyncReducers: isObject,\n };\n invariant(\n conformsTo(store, shape),\n '(app/utils...) asyncInjectors: Expected a valid redux store'\n );\n}\n\n/**\n * Inject an asynchronously loaded reducer\n */\nexport function injectAsyncReducer(store, isValid) {\n return function injectReducer(name, asyncReducer) {\n if (!isValid) checkStore(store);\n\n invariant(\n isString(name) && !isEmpty(name) && isFunction(asyncReducer),\n '(app/utils...) injectAsyncReducer: Expected `asyncReducer` to be a reducer function'\n );\n\n if (Reflect.has(store.asyncReducers, name)) return;\n\n store.asyncReducers[name] = asyncReducer; // eslint-disable-line no-param-reassign\n store.replaceReducer(createReducer(store.asyncReducers));\n };\n}\n\n/**\n * Inject an asynchronously loaded saga\n */\nexport function injectAsyncSagas(store, isValid) {\n return function injectSagas(sagas) {\n if (!isValid) checkStore(store);\n\n invariant(\n Array.isArray(sagas),\n '(app/utils...) injectAsyncSagas: Expected `sagas` to be an array of generator functions'\n );\n\n warning(\n !isEmpty(sagas),\n '(app/utils...) injectAsyncSagas: Received an empty `sagas` array'\n );\n\n sagas.map(store.runSaga);\n };\n}\n\n/**\n * Helper for creating injectors\n */\nexport function getAsyncInjectors(store) {\n checkStore(store);\n\n return {\n injectReducer: injectAsyncReducer(store, true),\n injectSagas: injectAsyncSagas(store, true),\n };\n}\n","// These are the pages you can go to.\n// They are all wrapped in the App component, which should contain the navbar etc\n// See http://blog.mxstbr.com/2016/01/react-apps-with-pages for more information\n// about the code splitting business\nimport { getAsyncInjectors } from \"./utils/asyncInjectors\";\n\n// Route failing error handler.\nconst errorLoading = (err, route) => {\n console.error(\"Dynamic page loading failed\", err);\n console.log(route);\n};\n\n// Load module dynamically.\nconst loadModule = (cb) => (componentModule) => {\n cb(null, componentModule.default);\n};\n\nexport default function createRoutes(store) {\n // create reusable async injectors using getAsyncInjectors factory\n const { injectReducer, injectSagas } = getAsyncInjectors(store);\n\n return [\n {\n path: \"/\",\n name: \"home\",\n getComponent(nextState, cb) {\n import(\"./containers/HomePage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/playlist-generator\",\n name: \"playlist_generator\",\n getComponent(nextState, cb) {\n import(\"./containers/PlaylistGenerator\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/playlist-generator/:uuid\",\n name: \"playlist_generator_uuid\",\n getComponent(nextState, cb) {\n import(\"./containers/PlaylistGenerator\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/license/:trackId\",\n name: \"license\",\n getComponent(nextState, cb) {\n import(\"./containers/LicensePage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/cart\",\n name: \"cart\",\n getComponent(nextState, cb) {\n import(\"./containers/CartPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/checkout/cart\",\n name: \"basket\",\n getComponent(nextState, cb) {\n import(\"./containers/CheckoutPage/Basket\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/checkout/payment\",\n name: \"payment\",\n getComponent(nextState, cb) {\n import(\"./containers/CheckoutPage/Payment\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/checkout/order-pending/:orderID\",\n name: \"orderPending\",\n getComponent(nextState, cb) {\n import(\"./containers/CheckoutPage/Pending\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/checkout/order-confirmation/:orderID\",\n name: \"orderConfirmation\",\n getComponent(nextState, cb) {\n import(\"./containers/CheckoutPage/Download\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/track/:artistId\",\n name: \"track\",\n getComponent(nextState, cb) {\n import(\"./containers/TrackPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/track/:artistId/:trackId\",\n name: \"track\",\n getComponent(nextState, cb) {\n import(\"./containers/TrackPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/playlist/:playlistId\",\n name: \"playlist\",\n getComponent(nextState, cb) {\n import(\"./containers/PlaylistPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/favorites\",\n name: \"favorites\",\n getComponent(nextState, cb) {\n import(\"./containers/FavouritesPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artists\",\n name: \"artists\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistsPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/about\",\n name: \"about\",\n getComponent(nextState, cb) {\n import(\"./containers/AboutPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers\",\n name: \"careers\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/front-end-developer\",\n name: \"careers-front-end-developer\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/front-end-developer\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/lead-front-end-developer\",\n name: \"careers-lead-front-end-developer\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/lead-front-end-developer\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/a&r-coordinator\",\n name: \"a&r-coordinator\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/ar-coordinator\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/office-hr-manager\",\n name: \"office-hr-manager\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/office-hr-manager\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/senior-ui-ux-designer\",\n name: \"senior-ui-ux-designer\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/senior-ui-ux-designer\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/marketing-manager\",\n name: \"careers-marketing-manager\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/marketing-manager\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/social-media-manager\",\n name: \"careers-social-media-manager\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/social-media-manager\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/creator-support-specialist\",\n name: \"careers-creator-support-specialist\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/creator-support-specialist\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/marketing-coordinator\",\n name: \"careers-marketing-coordinator\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/marketing-coordinator\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/motion-graphics-library-lead\",\n name: \"careers-motion-graphics-library-lead\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/motion-graphics-library-lead\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/careers/graphic-designer\",\n name: \"graphic-designer\",\n getComponent(nextState, cb) {\n import(\"./containers/Careers/graphic-designer\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/contact/:formName\",\n name: \"contact\",\n getComponent(nextState, cb) {\n import(\"./containers/ContactPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/contact\",\n name: \"contact\",\n getComponent(nextState, cb) {\n import(\"./containers/ContactPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist-application\",\n name: \"artistApplications\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistApplicationPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist-application-update-samples/:requestId/:requestHash\",\n name: \"artistApplicationsUpdateSamples\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistApplicationUpdateSamples\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/submit-music/review/TEST\",\n name: \"artistMusicSubmissionTEST\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistMusicSubmission\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/signin/:requestIntent/:requestId/:requestHash\",\n name: \"signin\",\n getComponent(nextState, cb) {\n import(\"./containers/SignInPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/signin/:requestIntent/:requestId\",\n name: \"signin\",\n getComponent(nextState, cb) {\n import(\"./containers/SignInPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/signin/:requestIntent\",\n name: \"signin\",\n getComponent(nextState, cb) {\n import(\"./containers/SignInPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/signin\",\n name: \"signin\",\n getComponent(nextState, cb) {\n import(\"./containers/SignInPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/create-account\",\n name: \"create-account\",\n getComponent(nextState, cb) {\n import(\"./containers/CreateAccountPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/pricing/pay-per-use/:pricingTable\",\n name: \"pricing_ppl\",\n getComponent(nextState, cb) {\n import(\"./containers/PricingPpuPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/pricing/pay-per-use\",\n name: \"pricing_ppl\",\n getComponent(nextState, cb) {\n import(\"./containers/PricingPpuPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/pricing/subscription/pro\",\n name: \"pricing_sub_pro\",\n getComponent(nextState, cb) {\n import(\"./containers/SubscriptionProPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/pricing/subscription/creator\",\n name: \"pricing_sub_creator\",\n getComponent(nextState, cb) {\n import(\"./containers/SubscriptionCreatorPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/pricing/subscription/checkout\",\n name: \"subscription_checkout\",\n getComponent(nextState, cb) {\n import(\"./containers/SubscriptionCheckoutPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/pricing/subscription\",\n name: \"subscription\",\n getComponent(nextState, cb) {\n import(\"./containers/SubscriptionPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/pricing\",\n name: \"pricing\",\n getComponent(nextState, cb) {\n import(\"./containers/PricingPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n onEnter(_nextState, replace, next) {\n replace(\"/pricing/subscription/pro\");\n next();\n },\n },\n {\n path: \"/payments/:paymentId\",\n name: \"payments\",\n getComponent(nextState, cb) {\n import(\"./containers/PaymentIssuePage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/payments\",\n name: \"payments\",\n getComponent(nextState, cb) {\n import(\"./containers/PaymentIssuePage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/styles\",\n name: \"styleslist\",\n getComponent(nextState, cb) {\n import(\"./containers/StylesListPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/browse/artist/:artistId\",\n name: \"browseartistpage\",\n getComponent(nextState, cb) {\n import(\"./containers/BrowseArtistPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/browse/collection/:collectionId\",\n name: \"browsecollectionpage\",\n getComponent(nextState, cb) {\n import(\"./containers/BrowseCollectionPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/collections\",\n name: \"collections\",\n getComponent(nextState, cb) {\n import(\"./containers/CollectionsPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/browse/style/:styleId\",\n name: \"browse\",\n getComponent(nextState, cb) {\n import(\"./containers/BrowseStylePage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/browse/all\",\n name: \"browse_all\",\n getComponent(nextState, cb) {\n import(\"./containers/BrowseAllPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/browse/latest\",\n name: \"browse_latest\",\n getComponent(nextState, cb) {\n import(\"./containers/BrowseLatestPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/browse/search/:query\",\n name: \"browse_search\",\n getComponent(nextState, cb) {\n import(\"./containers/BrowseSearchPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/browse/search\",\n name: \"browse_search\",\n getComponent(nextState, cb) {\n // When no query is supplied, redirect people to Browse All.\n // This shouldn't happen anyway.\n import(\"./containers/BrowseAllPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/customer/license-history\",\n name: \"subscription\",\n getComponent(nextState, cb) {\n import(\"./containers/CustomerPage/LicenseHistory\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/customer/license-history/subscription\",\n name: \"subscription\",\n getComponent(nextState, cb) {\n import(\"./containers/CustomerPage/LicenseHistory/Subscription\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/customer/license-history/pay-per-use\",\n name: \"pay-per-use\",\n getComponent(nextState, cb) {\n import(\"./containers/CustomerPage/LicenseHistory/PayPerUse\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/customer/order-summary/:orderID\",\n name: \"orderSummary\",\n getComponent(nextState, cb) {\n import(\"./containers/CustomerPage/OrderSummary\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/customer/payments\",\n name: \"customer-payments\",\n getComponent(nextState, cb) {\n import(\"./containers/CustomerPage/Payments\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/customer/following\",\n name: \"customer-following\",\n getComponent(nextState, cb) {\n import(\"./containers/CustomerPage/Following\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/customer/playlists\",\n name: \"playlists\",\n getComponent(nextState, cb) {\n import(\"./containers/CustomerPage/Playlists\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/customer/account\",\n name: \"customer-account\",\n getComponent(nextState, cb) {\n import(\"./containers/CustomerPage/Account\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account\",\n name: \"artist-account\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/Account\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/portfolio\",\n name: \"portfolio\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/Portfolio\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/statement/subscription-usage-report/:id\",\n name: \"artist-subscription\",\n exact: true,\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/Subscription\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/statement\",\n name: \"statement\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/Statement\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/artist-earnings\",\n name: \"artist-earnings\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/Earnings\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/submissions\",\n name: \"submissions\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/Submissions\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/required-styles\",\n name: \"required-music\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/RequiredMusic\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/required-sfx\",\n name: \"required-sfx\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/RequiredSFX\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/submissions/submit-for-review\",\n name: \"submissions\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/SubmitReview\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/submissions/submit-for-rereview\",\n name: \"submissions\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/SubmitMusic\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/artist/account/submissions/submit-approved-music-artist-account\",\n name: \"submissions\",\n getComponent(nextState, cb) {\n import(\"./containers/ArtistPage/SubmitApproved\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/user/reset-password\",\n name: \"reset-password\",\n getComponent(nextState, cb) {\n import(\"./containers/ResetPasswordPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/user/password-confirm-reset/:hash\",\n name: \"password-confirm-reset\",\n getComponent(nextState, cb) {\n import(\"./containers/ConfirmResetPasswordPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/:parent/:slug\",\n name: \"page\",\n getComponent(nextState, cb) {\n import(\"./containers/GeneralPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/:slug\",\n name: \"page\",\n getComponent(nextState, cb) {\n import(\"./containers/GeneralPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/*\",\n name: \"notfound\",\n getComponent(nextState, cb) {\n import(\"./containers/NotFoundPage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n {\n path: \"/features\",\n name: \"features\",\n getComponent(nextState, cb) {\n import(\"./containers/FeaturePage\")\n .then(loadModule(cb))\n .catch((err) => errorLoading(err, nextState));\n },\n },\n ];\n}\n","/**\n * app.js\n *\n * This is the entry file for the application, only setup and boilerplate\n * code.\n */\n\n// Needed for redux-saga es6 generator support\nimport 'babel-polyfill';\n\n// Import all the third party stuff\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport bugsnag from 'bugsnag-js';\nimport { Provider } from 'react-redux';\nimport createPlugin from 'bugsnag-react'\nimport { applyRouterMiddleware, Router, browserHistory } from 'react-router';\nimport { syncHistoryWithStore } from 'react-router-redux';\nimport FontFaceObserver from 'fontfaceobserver';\n\nimport 'sanitize.css/sanitize.css';\nimport styles from './styles/sass/main.scss';\n\n// Import root app\nimport App from 'containers/App';\nimport ScrollToTop from './scroll-to-top';\n\n// Import selector for `syncHistoryWithStore`\nimport { makeSelectLocationState } from 'containers/App/selectors';\n\n// Import Language Provider\nimport LanguageProvider from 'containers/LanguageProvider';\n\n// // Some files required to fix an issue with an old service worker\n// import '!file-loader?name=[name].[ext]!./remove-sw.js';\n// import '!file-loader?name=[name].[ext]!./sw.js';\n//\n// // Load the favicon and the .htaccess file\n// /* eslint-disable import/no-webpack-loader-syntax */\n// import '!file-loader?name=[name].[ext]!../public/favicon.ico';\n// import '!file-loader?name=[name].[ext]!../public/robots.txt';\n// import '!file-loader?name=[name].[ext]!../public/sitemap.xml';\n// import '!file-loader?name=[name].[ext]!./wufoo.css';\n// import 'file-loader?name=[name].[ext]!../public/.htaccess'; // eslint-disable-line import/extensions\n/* eslint-enable import/no-webpack-loader-syntax */\n\nimport configureStore from './store';\n\n// Import i18n messages\nimport { translationMessages } from './i18n';\n\n// Import routes\nimport createRoutes from './routes';\n\n// Observe loading of Open Sans (to remove open sans, remove the tag in\n// the index.html file and this observer)\n// const openSansObserver = new FontFaceObserver('Open Sans', {});\n\n// When Open Sans is loaded, add a font-family using Open Sans to the body\n// openSansObserver.load().then(() => {\n// document.body.classList.add('fontLoaded');\n// }, () => {\n// document.body.classList.remove('fontLoaded');\n// });\n\n// Create redux store with history\n// this uses the singleton browserHistory provided by react-router\n// Optionally, this could be changed to leverage a created history\n// e.g. `const browserHistory = useRouterHistory(createBrowserHistory)();`\nconst initialState = {};\nconst store = configureStore(initialState, browserHistory);\n\n// Sync history and store, as the react-router-redux reducer\n// is under the non-default key (\"routing\"), selectLocationState\n// must be provided for resolving how to retrieve the \"route\" in the state\nconst history = syncHistoryWithStore(browserHistory, store, {\n selectLocationState: makeSelectLocationState(),\n});\n\n// Set up the router, wrapping all Routes in the App component\nconst rootRoute = {\n component: App,\n childRoutes: createRoutes(store),\n};\n\n// Bugsnag API token.\nconst bugsnagClient = bugsnag('0d96426d7e851d3d608bdb514c848938');\n\n// wrap entire app tree in the ErrorBoundary\nconst ErrorBoundary = bugsnagClient.use(\n createPlugin(React)\n);\n\nconst render = (messages) => {\n ReactDOM.render(\n \n
    \n \n \n \n \n \n \n \n
    \n
    ,\n document.getElementById('app')\n );\n};\n\n// Hot reloadable translation json files\nif (module.hot) {\n // modules.hot.accept does not accept dynamic dependencies,\n // have to be constants at compile-time\n module.hot.accept('./i18n', () => {\n render(translationMessages);\n });\n}\n\n// Chunked polyfill for browsers without Intl support\nif (!window.Intl) {\n (new Promise((resolve) => {\n resolve(import('intl'));\n }))\n .then(() => Promise.all([\n import('intl/locale-data/jsonp/en.js'),\n import('intl/locale-data/jsonp/de.js'),\n ]))\n .then(() => render(translationMessages))\n .catch((err) => {\n throw err;\n });\n} else {\n render(translationMessages);\n}\n\n// Install ServiceWorker and AppCache in the end since\n// it's not most important operation and if main code fails,\n// we do not want it installed\n/*if (process.env.NODE_ENV === 'production') {\n require('offline-plugin/runtime').install();\n}*/\n","/**\n * The global state selectors\n */\n\nimport { createSelector } from 'reselect';\n\nconst selectGlobal = (state) => state.get('global');\n\nconst makeSelectCurrentUser = () => createSelector(\n selectGlobal,\n (globalState) => globalState.get('currentUser')\n);\n\nconst makeSelectLoading = () => createSelector(\n selectGlobal,\n (globalState) => globalState.get('loading')\n);\n\nconst makeSelectError = () => createSelector(\n selectGlobal,\n (globalState) => globalState.get('error')\n);\n\nconst makeSelectRepos = () => createSelector(\n selectGlobal,\n (globalState) => globalState.getIn(['userData', 'repositories'])\n);\n\nconst makeSelectLocationState = () => {\n let prevRoutingState;\n let prevRoutingStateJS;\n\n return (state) => {\n const routingState = state.get('route'); // or state.route\n\n if (!routingState.equals(prevRoutingState)) {\n prevRoutingState = routingState;\n prevRoutingStateJS = routingState.toJS();\n }\n\n return prevRoutingStateJS;\n };\n};\n\nexport {\n selectGlobal,\n makeSelectCurrentUser,\n makeSelectLoading,\n makeSelectError,\n makeSelectRepos,\n makeSelectLocationState,\n};\n","/**\n *\n * Placeholder image URL\n *\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nexport const PLACEHOLDER_IMG_URL = \"https://cdn.musicvine.com/images/mv-track-placeholder.png\";"],"sourceRoot":""}