{"version":3,"sources":["../node_modules/react-ellipsis-text/lib/components/EllipsisText.js","../node_modules/react-ellipsis-text/node_modules/prop-types/index.js","../node_modules/react-ellipsis-text/node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/react-ellipsis-text/node_modules/prop-types/lib/ReactPropTypesSecret.js","components/Img/index.js","actions/collectionAction.js","styles/svg-components/AssetPaginationPrev.js","styles/svg-components/AssetPaginationNext.js","components/Pagination/PageLink.js","components/Pagination/index.js","../node_modules/react-ellipsis-text/index.js","styles/svg-components/CrossRedSVG.js","styles/svg-components/AssetCart.js","components/TrackPlayer/NameLink.js","components/TrackPlayer/Edit.js","components/TrackPlayer/Styles.js","components/TrackPlayer/PreviewAndLicense.js","components/TrackPlayer/Preview.js","components/TrackPlayer/License.js","components/TrackPlayer/SubscriptionLicense.js","styles/svg-components/PlayIconSmall.js","styles/svg-components/PauseIconSmall.js","components/TrackPlayer/Version.js","components/TrackPlayer/Versions.js","components/TrackPlayer/VersionCount.js","components/TrackPlayer/Track.js","components/TrackPlayer/Tracks.js","components/TrackPlayer/index.js","styles/svg-components/AssetAddToPlaylist.js","components/NormalisedScore/index.js"],"names":["Object","defineProperty","exports","value","_react","_interopRequireDefault","require","_propTypes","obj","__esModule","_typeof","Symbol","iterator","constructor","prototype","_extends","assign","target","i","arguments","length","source","key","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","_defineProperties","props","descriptor","enumerable","configurable","writable","_possibleConstructorReturn","self","ReferenceError","_assertThisInitialized","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_setPrototypeOf","p","EllipsisText","_React$Component","_this","instance","Constructor","TypeError","_classCallCheck","state","protoProps","staticProps","subClass","superClass","create","_inherits","displayText","_this$props","text","tail","tailClassName","others","createElement","slice","title","style","cursor","className","Component","propTypes","string","isRequired","number","defaultProps","_default","module","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","location","propFullName","secret","err","Error","name","getShim","ReactPropTypes","array","bool","func","object","symbol","any","arrayOf","element","elementType","instanceOf","node","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","Img","src","alt","fetchHomeCollection","fetch","conditionallyGetCdnApi","method","then","res","json","catch","fetchCollectionTrack","collectionName","headers","response","error","console","log","fetchCollection","collectionId","fetchCategories","fetchCategoryCollections","categoryId","page","fetchLatestCollections","fetchAllCollections","energy","vocal","sort","styleFilters","fetchCollections","fetchStyleCollections","id","type","JsonStyleFilters","JSON","stringify","dispatch","collections","AssetPaginationPrev","React","AssetPaginationNext","styled","Link","Pagination","handlePageSelect","bind","event","onPageSelect","firstPage","pagination","lastPage","currentPage","middlePages","previousPage","pages","getPaginationClasses","active","push","PageLink","onClick","forEach","middlePage","index","nextPage","contextTypes","router","withRouter","CrossRedSVG","AssetCart","Edit","onRemoveTrack","NameLink","Styles","styles","to","slug","PreviewAndLicense","onAddLicense","onDownloadPreview","userHasAdminAccount","isStyleDeleting","trackId","grid__item_flex","Download","isDeleting","Preview","hasSubscription","License","SubscriptionLicense","PlayIconSmall","xmlns","viewBox","width","height","fill","d","transform","PauseIconSmall","x","y","rx","Version","handleTrackPlayPause","userHasSubscription","waveSurfer","versionWave","_","isEmpty","nextProps","handleWaveFormSeek","destroy","subscriptionData","isActive","isFreeTrial","versionId","versionIndex","position","track","parentIndex","setCurrentTrack","trackID","versionID","addActiveTrack","currentContext","current_context","addVersionPrimaryTrack","trackIndex","player","version","currentTrack","on","pos","isActiveTrack","playerTrack","newTrackWaves","tracksWaves","flushTrackWave","browseType","findIndex","isAudioReady","wavesurfer","isDestroyed","pause","setTrackPosition","activeTrack","primaryTrack","playing","addNewEngagement","setPlaying","playActiveTrack","setPlayerPosition","isPlaying","play","playerActive","contextId","setPause","pausedActiveTrack","favourite","isCurrentTrack","button","PlayCircleSmTransparent","buttonSm","Pause","SpinnerTrackPlay","onAddPlaylist","AssetAddToPlaylist","onToggleFavouriteTrackVerion","Heart","version_description","convertToMinutesAndSeconds","version_length","connect","get","engagementInfo","Versions","versionWaves","componentRender","versions","storePage","map","WaveSurfer","container","backend","mediaType","normalize","waveColor","progressColor","cursorColor","cursorWidth","hideScrollbar","mainTrackUrl","version_preview_uri","mainTrackSet","audioPeaks","waveform_json","parse","setPeaks","drawBuffer","parseInt","addVersionNewTrackWave","addVersionTrackWave","size","$","empty","isVisible","favouritesData","sessionStorage","getItem","renderedVersions","includes","String","currentTrackWave","find","track_version","VersionCount","onDisplayVersions","version_count","Track","showVersions","mainVersionId","handleToggleVersions","toggleVersion","addPrimaryTrack","track_url","setState","tracks","pageStyleName","firstUniqueStyle","secondUniqueStyle","track_to_style","avatarImage","PLACEHOLDER_IMG_URL","artist","avatar_image","getImgixUrl","image_aws_url","onResultClick","onAddTrackPlaylist","isEditing","isFavourite","onRemoveTrackStyle","checkImage","A","autoclear","href","is_explicit_lyrics","NormalisedScore","trackEngagement","current_engagement","engagementGroup","current_engagement_group","getTopStyles","hasLoaded","isLoading","checkVersions","Tracks","isFetching","setTimeout","trackVIds","trackWaves","results","values","document","querySelector","interact","audioDuration","precise_duration","duration","showVersion","has","addPageTrackWave","flushNewTrackWave","addTrackWave","prevProps","countResults","Array","isArray","prevLength","currentLength","isExpansion","not","combinedWaves","noTrackError","defaultSort","url","trackVersion","versionKey","version_type","favorites","addToFavorites","playlistId","removeFromFavorites","onToggleFavourite","isSimilarTracks","onSortToggle","hideSort","isFetchingMore","minHeight","pageCount","TrackPlayer","handleAddModal","onAddModal","reloaded","addClass","onAddNewEngagement","footerPlayer","trackIds","tracksWave","onAddTracksWave","onTrackPlay","versionsWave","destroyPreviousPlayer","Boolean","browseStyleId","isRemoveLoading","Spinner","modal","intent","addModal","onRemoveModal","removeModal","addTracksWave","newTracks","addVersionsWave","is","siblings","css","removeClass","drip","addLicense","downloadPreview","addPlaylist","toggleFavouriteTrackVerion","removeTrack","styleId","removeTrackStyle","contextID","flushCurrentTrackWave","trackeEngagementP","trackeEngagementE","trackeEngagementR","trackeEngagementN","currentContextId","adminBar","showRelevancy","plays","positive","normalised","groupText","Math","round","toggleRelevancy"],"mappings":"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","file":"static/js/0.chunk.js?hash=f8899b0d","sourcesContent":["\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nvar styles = {\n allText: {\n MozUserSelect: 'text',\n WebkitUserSelect: 'text',\n msUserSelect: 'text',\n userSelect: 'text'\n }\n};\n\nvar EllipsisText =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(EllipsisText, _React$Component);\n\n function EllipsisText(props) {\n var _this;\n\n _classCallCheck(this, EllipsisText);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(EllipsisText).call(this, props));\n _this.state = {};\n return _this;\n }\n\n _createClass(EllipsisText, [{\n key: \"render\",\n value: function render() {\n var _this$props = this.props,\n text = _this$props.text,\n length = _this$props.length,\n tail = _this$props.tail,\n tailClassName = _this$props.tailClassName,\n others = _objectWithoutProperties(_this$props, [\"text\", \"length\", \"tail\", \"tailClassName\"]);\n\n if (text.length <= this.props.length || this.props.length < 0) {\n return _react[\"default\"].createElement(\"span\", others, this.props.text);\n } else {\n var tailStyle = {\n cursor: 'auto'\n };\n var displayText;\n\n if (length - tail.length <= 0) {\n displayText = '';\n } else {\n displayText = text.slice(0, length - tail.length);\n }\n\n return _react[\"default\"].createElement(\"span\", _extends({\n title: this.props.text\n }, others), displayText, _react[\"default\"].createElement(\"span\", {\n style: tailStyle,\n className: tailClassName\n }, tail));\n }\n }\n }]);\n\n return EllipsisText;\n}(_react[\"default\"].Component);\n\nEllipsisText.propTypes = {\n text: _propTypes[\"default\"].string.isRequired,\n length: _propTypes[\"default\"].number.isRequired,\n tail: _propTypes[\"default\"].string,\n tailClassName: _propTypes[\"default\"].string\n};\nEllipsisText.defaultProps = {\n tail: '...',\n tailClassName: 'more'\n};\nvar _default = EllipsisText;\nexports[\"default\"] = _default;","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","/**\n *\n * Img.react.js\n *\n * Renders an image, enforcing the usage of the alt=\"\" tag\n */\n\nimport React from 'react';\nimport PropTypes from 'prop-types';\n\nfunction Img(props) {\n return (\n {props.alt}\n );\n}\n\n// We require the use of src and alt, only enforced by react in dev mode\nImg.propTypes = {\n src: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.object,\n ]).isRequired,\n alt: PropTypes.string.isRequired,\n className: PropTypes.string,\n};\n\nexport default Img;\n","import fetch from \"isomorphic-fetch\";\nimport Config, { API } from \"../constants\";\nimport {conditionallyGetCdnApi} from \"./generalAction\";\n\nexport function fetchHomeCollection() {\n return fetch(`${conditionallyGetCdnApi()}homepage/collections`, {\n method: \"GET\",\n // mode: 'CORS',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchCollectionTrack(collectionName) {\n return fetch(\n `${conditionallyGetCdnApi()}tracks/collection/types/${collectionName}/ids/0/energies/0/vocals/As%20Curated/sorts/0/durations/[/stylefilters/-1/limits/[]/excludes/1`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n }\n )\n .then(\n (response) => response.json(),\n (error) => console.log(\"An error occured.\", error)\n )\n .then((json) => json);\n}\n\nexport function fetchCollection(collectionId) {\n return fetch(`${conditionallyGetCdnApi()}collections/${collectionId}`, {\n method: \"GET\",\n // mode: 'CORS',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchCategories() {\n return fetch(`${conditionallyGetCdnApi()}collection/categories`, {\n method: \"GET\",\n // mode: 'CORS',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchCategoryCollections(categoryId, page) {\n return fetch(`${conditionallyGetCdnApi()}collections/${categoryId}/categories/${page}`, {\n method: \"GET\",\n // mode: 'CORS',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchLatestCollections(categoryId, page) {\n return fetch(`${conditionallyGetCdnApi()}collections/${categoryId}/latests/${page}`, {\n method: \"GET\",\n // mode: 'CORS',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchAllCollections(energy, vocal, sort, styleFilters, page) {\n return fetchCollections(\"all\", 0, energy, vocal, sort, styleFilters, page);\n}\n\nexport function fetchArtistCollections(\n id,\n energy,\n vocal,\n sort,\n styleFilters,\n page\n) {\n return fetchCollections(\n \"artist\",\n id,\n energy,\n vocal,\n sort,\n styleFilters,\n page\n );\n}\n\nexport function fetchStyleCollections(\n id,\n energy,\n vocal,\n sort,\n styleFilters,\n page\n) {\n return fetchCollections(\"style\", id, energy, vocal, sort, styleFilters, page);\n}\n\nfunction fetchCollections(type, id, energy, vocal, sort, styleFilters, page) {\n if (styleFilters == null) {\n styleFilters = {};\n }\n const JsonStyleFilters = JSON.stringify(styleFilters);\n return function (dispatch) {\n dispatch(requestCollections());\n return fetch(\n `${conditionallyGetCdnApi()}collections/${type}/types/${id}/ids/${energy}/energies/${vocal}/vocals/${vocal}/sorts/${JsonStyleFilters}/stylefilters/${page}`,\n {\n method: \"GET\",\n // mode: 'CORS',\n }\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// ACTIONS\nfunction requestCollections() {\n return { type: \"REQUEST_COLLECTIONS\" };\n}\n\nfunction receiveCollections(collections) {\n return { type: \"RECEIVE_COLLECTIONS\", collections };\n}\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass AssetPaginationPrev extends React.Component {\n render() {\n const assetPaginationPrev = `\n\n`;\n return (\n \n );\n }\n}\n\nexport default AssetPaginationPrev;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass AssetPaginationNext extends React.Component {\n render() {\n const assetPaginationNext = `\n`;\n return (\n \n );\n }\n}\n\nexport default AssetPaginationNext;\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';\n\nimport AssetPaginationPrev from 'styles/svg-components/AssetPaginationPrev.js';\nimport AssetPaginationNext from 'styles/svg-components/AssetPaginationNext.js';\nimport PageLink from './PageLink';\n\n\nimport { withRouter } from 'react-router';\nimport { createStructuredSelector } from 'reselect';\nimport { fetchCollection } from 'actions/collectionAction';\nimport { fetchCollectionTracks } from 'actions/trackAction';\n\n\nclass Pagination extends React.Component {\n constructor(props) {\n super(props);\n this.handlePageSelect = this.handlePageSelect.bind(this);\n }\n\n handlePageSelect(event) {\n this.props.onPageSelect(event);\n }\n\n render() {\n const firstPage = this.props.pagination.firstPage;\n const lastPage = this.props.pagination.lastPage;\n const currentPage = this.props.pagination.currentPage;\n const middlePages = this.props.pagination.middlePages;\n const previousPage = this.props.pagination.previousPage;\n const handlePageSelect = this.handlePageSelect;\n const pages = [];\n\n function getPaginationClasses(active) {\n return `site-pagination__number site-pagination__number--${active ? 'active' : 'inactive'}`;\n }\n\n // Show leftmost number\n if (firstPage) {\n pages.push({firstPage});\n }\n\n // Show ellipsis if there's a gap between the leftmost number and the first middle number\n if (currentPage !== firstPage && currentPage - 1 !== firstPage && middlePages[0] - 1 !== firstPage) {\n pages.push(...);\n }\n\n // Show middle numbers\n if (middlePages) {\n middlePages.forEach((middlePage, index) => {\n pages.push({middlePage});\n });\n }\n\n // Show ellipsis if there's a gap between the last middle number and the right most number \n if (currentPage !== lastPage && currentPage + 1 !== lastPage && middlePages[ middlePages.length - 1 ] + 1 !== lastPage) {\n pages.push(...);\n }\n\n // Show rightmost number\n if (lastPage > firstPage) {\n pages.push({lastPage});\n }\n\n return (\n
\n
\n
\n {/* Next page */}\n {previousPage &&\n \n
\n
\n \n
\n
\n
\n }\n {pages}\n {/* Next page */}\n {this.props.pagination.nextPage &&\n \n
\n
\n \n
\n
\n
\n }\n
\n
\n
\n );\n }\n}\n\nPagination.contextTypes = {\n router: PropTypes.object,\n};\n\nexport default withRouter(Pagination);\n","module.exports = require('./lib/components/EllipsisText');\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass CrossRedSVG extends React.Component {\n render() {\n const crossRedSVG = `\n\n`;\n return (\n \n );\n }\n}\n\nexport default CrossRedSVG;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass AssetCart extends React.Component {\n render() {\n const assetCart = `\n`;\n return (\n \n );\n }\n}\n\nexport default AssetCart;\n","import { Link } from 'react-router';\nimport styled from 'styled-components';\n\nexport default styled(Link)`\ncursor: pointer\n`;\n","import React from 'react';\nimport CrossRedSVG from 'styles/svg-components/CrossRedSVG.js';\nimport NameLink from './NameLink';\n\nconst Edit = ({ onRemoveTrack }) => (\n \n
\n \n
\n
\n\n);\n\nexport default Edit;\n","import React from 'react';\nimport NameLink from './NameLink';\n\nconst Styles = ({ styles }) => (\n \n \n {styles[0] &&\n {styles[0].name}, \n }\n {styles[1] &&\n {styles[1].name}\n }\n \n \n);\n\nexport default Styles;\n","import React, { Fragment } from 'react';\nimport className from 'classnames';\nimport PropTypes from 'prop-types';\nimport Download from 'styles/svg-components/Download.js';\nimport AssetCart from 'styles/svg-components/AssetCart.js';\nimport NameLink from './NameLink';\nimport CrossRedSVG from 'styles/svg-components/CrossRedSVG.js';\nimport Loader from 'styles/svg-components/SpinnerTrackPlay';\n\nconst PreviewAndLicense = ({ onAddLicense, onDownloadPreview, onRemoveTrack, userHasAdminAccount, isStyleDeleting, trackId }) => (\n
\n \n
\n
\n \n
\n Download Preview\n
\n
\n
\n
\n \n
\n
\n \n
\n Buy License\n
\n
\n
\n
\n {userHasAdminAccount && \n {/* (((!isStyleDeleting.isDeleting && isStyleDeleting.trackId !== trackId) || (isStyleDeleting.isDeleting && isStyleDeleting.trackId !== trackId)) &&*/\n \n
\n
\n \n
\n Remove From Style\n
\n
\n
\n
\n }\n {/* (isStyleDeleting.isDeleting && isStyleDeleting.trackId === trackId) &&
\n \n
*/}\n
}\n\n
\n);\nPreviewAndLicense.propTypes = {\n onAddLicense: PropTypes.func,\n onDownloadPreview: PropTypes.func,\n onRemoveTrack: PropTypes.func,\n userHasAdminAccount: PropTypes.bool,\n isStyleDeleting: PropTypes.objectOf(PropTypes.any),\n trackId: PropTypes.number,\n};\nPreviewAndLicense.defaultProps = {\n onRemoveTrack: () => {},\n onAddLicense: () => {},\n onDownloadPreview: () => {},\n userHasAdminAccount: false,\n isStyleDeleting: {\n isDeleting: false,\n trackId: null,\n },\n trackId: null,\n};\nexport default PreviewAndLicense;\n","import React, { Fragment } from 'react';\nimport className from 'classnames';\nimport PropTypes from 'prop-types';\nimport Download from 'styles/svg-components/Download.js';\nimport AssetCart from 'styles/svg-components/AssetCart.js';\nimport NameLink from './NameLink';\nimport CrossRedSVG from 'styles/svg-components/CrossRedSVG.js';\nimport Loader from 'styles/svg-components/SpinnerTrackPlay';\n\nconst Preview = ({ hasSubscription, onDownloadPreview }) => (\n \n
\n
\n \n
\n Download Preview\n
\n
\n
\n
\n);\nPreview.propTypes = {\n onDownloadPreview: PropTypes.func,\n};\nexport default Preview;\n","import React from 'react';\nimport AssetCart from 'styles/svg-components/AssetCart.js';\nimport NameLink from './NameLink';\n\nconst License = ({ onAddLicense }) => (\n \n
\n
\n \n
\n
\n
\n);\n\nexport default License;\n","import React from 'react';\nimport NameLink from './NameLink';\n\nconst SubscriptionLicense = ({ onAddLicense }) => (\n \n
\n

License

\n
\n
\n);\n\nexport default SubscriptionLicense;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass PlayIconSmall extends React.Component {\n render() {\n return (\n \n );\n }\n}\n\nexport default PlayIconSmall;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass PauseIconSmall extends React.Component {\n render() {\n return (\n \n );\n }\n}\n\nexport default PauseIconSmall;\n","import _ from 'lodash';\nimport React from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport NameLink from './NameLink';\nimport Pause from '../../styles/svg-components/Pause';\nimport PlayIconSmall from '../../styles/svg-components/PlayIconSmall';\nimport PauseIconSmall from '../../styles/svg-components/PauseIconSmall';\nimport Heart from '../../styles/svg-components/Heart.js';\nimport Download from 'styles/svg-components/Download.js';\nimport SpinnerTrackPlay from '../../styles/svg-components/SpinnerTrackPlay';\nimport AssetAddToPlaylist from '../../styles/svg-components/AssetAddToPlaylist.js';\nimport PlayCircleSmTransparent from '../../styles/svg-components/PlayCircleSmTransparent';\nimport {\n playerActive,\n addActiveTrack,\n playActiveTrack,\n addVersionPrimaryTrack,\n pausedActiveTrack,\n setPlayerPosition,\n setTrackPosition,\n} from '../../actions/footerPlayerAction';\nimport { convertToMinutesAndSeconds } from 'utils/helpers';\nimport { addNewEngagement } from 'actions/favouriteAction';\n\nclass Version extends React.Component {\n constructor(props) {\n super(props);\n\n // Bind class method's scope.\n this.handleTrackPlayPause = this.handleTrackPlayPause.bind(this);\n this.userHasSubscription = this.userHasSubscription.bind(this);\n // Class property.\n this.waveSurfer = null;\n }\n\n // Lifecycle method.\n componentDidMount() {\n const { versionWave } = this.props;\n if (_.isEmpty(versionWave)) return false;\n this.waveSurfer = versionWave;\n return false;\n }\n componentWillReceiveProps(nextProps) {\n const { versionWave } = nextProps;\n if (this.props.versionWave !== versionWave) {\n this.waveSurfer = versionWave;\n this.handleWaveFormSeek();\n return false;\n }\n return false;\n }\n // Lifecycle method, component destroy.\n componentWillUnmount() {\n this.waveSurfer && this.waveSurfer.destroy();\n }\n\n userHasSubscription(){\n return ( this.props.subscriptionData.isActive || this.props.subscriptionData.isFreeTrial );\n }\n setActiveTrackPosition(versionId, versionIndex, position) {\n const { track, parentIndex } = this.props;\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: versionId,\n });\n this.props.addActiveTrack({\n trackID: track.id,\n versionID: versionId,\n currentContext: track.current_context.id,\n position,\n });\n this.props.addVersionPrimaryTrack({\n ...track,\n trackId: track.id,\n versionId,\n trackIndex: parentIndex,\n versionIndex: (versionIndex + 1),\n });\n }\n isActiveTrack() {\n const { player, track, version } = this.props;\n return (player.currentTrack.trackID === track.id) && (player.currentTrack.versionID === version.id);\n }\n handleWaveFormSeek() {\n if (!this.waveSurfer) {\n return;\n }\n this.waveSurfer.on('seek', (pos) => {\n const { isActiveTrack, track, version, index, playerTrack, newTrackWaves, tracksWaves, currentPage, flushTrackWave, browseType } = this.props;\n if (!_.isEmpty(newTrackWaves)) {\n if (_.findIndex(tracksWaves, ['id', track.id]) === -1) {\n flushTrackWave(currentPage || 1);\n }\n }\n if (isActiveTrack.isAudioReady && !_.isEmpty(isActiveTrack)) {\n if (isActiveTrack.isAudioReady && isActiveTrack.trackID === track.id && isActiveTrack.versionID !== version.id) {\n const { wavesurfer } = playerTrack;\n if (!wavesurfer.isDestroyed) {\n wavesurfer.pause();\n }\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: version.id,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: version.id,\n trackIndex: index,\n versionIndex: (index + 1),\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: version.id,\n });\n if (!isActiveTrack.playing) {\n this.props.setPlaying(track.id, track.current_context.id, version.id, browseType);\n this.props.playActiveTrack();\n } else {\n addNewEngagement('play', track.id, track.current_context.id, version.id, browseType);\n }\n } else if (isActiveTrack.isAudioReady && isActiveTrack.trackID === track.id && isActiveTrack.versionID === version.id) {\n this.props.setPlayerPosition(pos);\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isPlaying() && !isActiveTrack.playing) {\n wavesurfer.play();\n this.props.setPlaying(track.id, track.current_context.id, version.id, browseType);\n this.props.playActiveTrack();\n }\n }\n } else if (isActiveTrack.isAudioReady && isActiveTrack.trackID !== track.id && isActiveTrack.versionID !== version.id) {\n const { wavesurfer } = playerTrack;\n if (!wavesurfer.isDestroyed) {\n wavesurfer.pause();\n }\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: version.id,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: version.id,\n trackIndex: index,\n versionIndex: (index + 1),\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: version.id,\n });\n if (!isActiveTrack.playing) {\n this.props.setPlaying(track.id, track.current_context.id, version.id, browseType);\n this.props.playActiveTrack();\n } else {\n addNewEngagement('play', track.id, track.current_context.id, version.id, browseType);\n }\n }\n } else if (_.isEmpty(isActiveTrack) && !isActiveTrack.isAudioReady) {\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: version.id,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: version.id,\n trackIndex: index,\n versionIndex: (index + 1),\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: version.id,\n });\n this.props.setPlaying(track.id, track.current_context.id, version.id, browseType);\n this.props.playActiveTrack();\n this.props.playerActive();\n } else if (!isActiveTrack.isAudioReady && !_.isEmpty(isActiveTrack) && !isActiveTrack.playing) {\n if (!isActiveTrack.playing && isActiveTrack.trackID !== track.id && isActiveTrack.versionID !== version.id) {\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: version.id,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: version.id,\n trackIndex: index,\n versionIndex: (index + 1),\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: version.id,\n });\n this.props.setPlaying(track.id, track.current_context.id, version.id, browseType);\n this.props.playActiveTrack();\n } else if (!isActiveTrack.playing && isActiveTrack.trackID === track.id && isActiveTrack.versionID === version.id) {\n this.props.setPlayerPosition(pos);\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isPlaying() && !isActiveTrack.playing) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.play();\n }\n this.props.setPlaying(track.id, track.current_context.id, version.id, browseType);\n this.props.playActiveTrack();\n }\n }\n } else if (!isActiveTrack.playing && isActiveTrack.trackID === track.id && isActiveTrack.versionID !== version.id) {\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: version.id,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: version.id,\n trackIndex: index,\n versionIndex: (index + 1),\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: version.id,\n });\n this.props.setPlaying(track.id, track.current_context.id, version.id, browseType);\n this.props.playActiveTrack();\n }\n } else if (!isActiveTrack.isAudioReady && !_.isEmpty(isActiveTrack) && isActiveTrack.playing) {\n if (isActiveTrack.trackID === track.id && isActiveTrack.versionID === version.id) {\n this.props.setPlayerPosition(pos);\n } else if (isActiveTrack.trackID === track.id && isActiveTrack.versionID !== version.id) {\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n wavesurfer.pause();\n }\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: version.id,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: version.id,\n trackIndex: index,\n versionIndex: (index + 1),\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: version.id,\n });\n addNewEngagement('play', track.id, track.current_context.id, version.id, browseType);\n } else if (isActiveTrack.trackID !== track.id && isActiveTrack.versionID !== version.id) {\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n wavesurfer.pause();\n }\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: version.id,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: version.id,\n trackIndex: index,\n versionIndex: (index + 1),\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: version.id,\n });\n addNewEngagement('play', track.id, track.current_context.id, version.id, browseType);\n }\n } else {\n if (isActiveTrack.trackID === track.id && isActiveTrack.versionID === version.id) return false;\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n wavesurfer.pause();\n }\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: version.id,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: version.id,\n trackIndex: index,\n versionIndex: (index + 1),\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: version.id,\n });\n addNewEngagement('play', track.id, track.current_context.id, version.id, browseType);\n }\n return false;\n });\n }\n // Play/Pause track.\n handleTrackPlayPause(trackId, trackIndex, versionId, contextId, index) {\n // If wavesurfer object not found.\n // Also show a warning.\n const { player, track } = this.props;\n if (this.waveSurfer === null) {\n return false;\n }\n // Set status to playing.\n if (player.currentTrack.trackID === trackId && versionId === player.currentTrack.versionID) {\n const { playerTrack } = this.props;\n const { wavesurfer } = playerTrack;\n if (!player.isPlaying) {\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.play();\n }\n }\n this.props.setPlaying(trackId, contextId, versionId, this.props.browseType);\n this.props.playActiveTrack();\n } else {\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.pause();\n }\n }\n this.props.setPause();\n this.props.pausedActiveTrack();\n }\n return false;\n }\n // Dispatch events.\n this.props.setCurrentTrack({\n trackID: trackId,\n versionID: versionId,\n });\n this.props.addActiveTrack({\n trackID: trackId,\n versionID: versionId,\n currentContext: contextId,\n });\n this.props.addVersionPrimaryTrack({\n ...track,\n trackId,\n versionId,\n trackIndex,\n versionIndex: (index + 1),\n });\n this.props.setPlayerPosition(0);\n this.props.playActiveTrack();\n this.props.setPlaying(trackId, contextId, versionId, this.props.browseType);\n this.props.playerActive();\n if (!_.isEmpty(this.props.newTrackWaves)) {\n if (_.findIndex(this.props.tracksWaves, ['id', track.id]) === -1) {\n this.props.flushTrackWave(this.props.currentPage);\n }\n }\n return false;\n }\n\n render() {\n const { favourite, version, player, index, track, parentIndex, isActiveTrack } = this.props;\n // const isActiveTrack = this.isActiveTrack();\n const isCurrentTrack = (isActiveTrack.trackID === track.id && isActiveTrack.versionID === version.id);\n // Play Button.\n let button = ;\n let buttonSm = ;\n if (isCurrentTrack && isActiveTrack.playing) {\n if (isActiveTrack.isAudioReady) {\n button = ;\n buttonSm = ;\n } else {\n button = ;\n buttonSm = \n
\n
\n
\n
\n
;\n }\n }\n return (\n
\n
\n
\n this.handleTrackPlayPause(track.id, parentIndex, version.id, track.current_context.id, index)}>\n
\n {button}\n
\n
\n
\n
\n
\n this.handleTrackPlayPause(track.id, parentIndex, version.id, track.current_context.id, index)}>\n
\n {buttonSm}\n
\n
\n
\n
\n
\n \n \n \n \n \n \n
\n
\n
\n
\n
\n
\n
{version.version_description || 'Alternative Version'}
\n
\n
\n
\n
\n
\n
\n
\n
\n {convertToMinutesAndSeconds(version.version_length)}\n
\n
\n
\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// Map redux state to local props.\nconst mapStateToProps = (state) => ({\n player: state.get('player'),\n subscriptionData: state.get('subscriptionData'),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n setPlaying: (trackId, contextId, versionId, browseType) => {\n dispatch({ type: 'PLAYER_SET_PLAYING', engagementInfo: { trackId, contextId, versionId, browseType } });\n },\n setPause: () => dispatch({\n type: 'PLAYER_SET_PAUSE',\n }),\n setCurrentTrack: (track) => dispatch({\n type: 'PLAYER_CURRENT_TRACK',\n currentTrack: track,\n }),\n playerActive: () => dispatch(playerActive()),\n addActiveTrack: (track) => dispatch(addActiveTrack(track)),\n addVersionPrimaryTrack: (version) => dispatch(addVersionPrimaryTrack(version)),\n playActiveTrack: () => dispatch(playActiveTrack()),\n pausedActiveTrack: () => dispatch(pausedActiveTrack()),\n setPlayerPosition: (pos) => dispatch(setPlayerPosition(pos)),\n setTrackPosition: (track) => dispatch(setTrackPosition(track)),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(Version);\n","import _ from 'lodash';\nimport React, { Component } from 'react';\nimport WaveSurfer from 'wavesurfer.js';\nimport Version from './Version';\n\nclass Versions extends Component {\n constructor(props) {\n super(props);\n this.state = {\n versionWaves: [],\n };\n this.componentRender = false;\n }\n\n componentDidMount() {\n const {\n versions,\n track,\n previousPage,\n currentPage,\n storePage,\n } = this.props;\n versions.map((version) => {\n const wavesurfer = WaveSurfer.create({\n container: `#waveform-version-${track.id}-${version.id}`,\n backend: 'MediaElement',\n mediaType: 'audio',\n normalize: true,\n waveColor: '#2f3031',\n progressColor: '#32efe6',\n cursorColor: '#3a7676',\n cursorWidth: 0,\n height: 40,\n hideScrollbar: true,\n });\n wavesurfer.mainTrackUrl = version && version.version_preview_uri;\n wavesurfer.mainTrackSet = false;\n const audioPeaks =\n (version.waveform_json && JSON.parse(version.waveform_json)) || [];\n wavesurfer.backend.setPeaks(audioPeaks);\n wavesurfer.drawBuffer();\n this.state.versionWaves.push({\n ...version,\n wavesurfer,\n });\n });\n if (parseInt(previousPage) !== currentPage && storePage !== currentPage) {\n this.props.addVersionNewTrackWave({\n versionWaves: this.state.versionWaves,\n trackId: track.id,\n });\n } else {\n this.props.addVersionTrackWave({\n versionWaves: this.state.versionWaves,\n trackId: track.id,\n });\n }\n return true;\n }\n\n componentWillReceiveProps(nextProps) {\n const { versions, track, previousPage, currentPage, storePage } = nextProps;\n if (!this.componentRender && _.size(this.props.tracksWaves) !== _.size(nextProps.tracksWaves)) {\n const versionWaves = [];\n this.componentRender = true;\n versions.map((version) => {\n $(`#waveform-version-${track.id}-${version.id}`).empty();\n const wavesurfer = WaveSurfer.create({\n container: `#waveform-version-${track.id}-${version.id}`,\n backend: 'MediaElement',\n mediaType: 'audio',\n normalize: true,\n waveColor: '#2f3031',\n progressColor: '#32efe6',\n cursorColor: '#3a7676',\n cursorWidth: 0,\n height: 40,\n hideScrollbar: true,\n });\n wavesurfer.mainTrackUrl = version && version.version_preview_uri;\n wavesurfer.mainTrackSet = false;\n const audioPeaks =\n (version.waveform_json && JSON.parse(version.waveform_json)) || [];\n wavesurfer.backend.setPeaks(audioPeaks);\n wavesurfer.drawBuffer();\n versionWaves.push({\n ...version,\n wavesurfer,\n });\n });\n if (parseInt(previousPage) !== currentPage && storePage !== currentPage) {\n this.props.addVersionNewTrackWave({\n versionWaves,\n trackId: track.id,\n });\n } else {\n this.props.addVersionTrackWave({\n versionWaves,\n trackId: track.id,\n });\n }\n }\n }\n render() {\n const {\n isVisible,\n track,\n versions,\n onToggleFavouriteTrackVerion,\n onDownloadPreview,\n onAddPlaylist,\n parentIndex,\n isAudioReady,\n isActiveTrack,\n } = this.props;\n const favouritesData = sessionStorage.getItem('favourites_data');\n let versionWave = null;\n const renderedVersions = versions.map((version, index) => {\n const favourite =\n favouritesData && favouritesData.includes(String(version.id))\n ? 'js-is-favourite-version'\n : '';\n if (\n parseInt(this.props.previousPage) !== this.props.currentPage &&\n this.props.storePage !== this.props.currentPage\n ) {\n const currentTrackWave = _.find(this.props.newTrackWaves, [\n 'id',\n track.id,\n ]);\n if (!_.isEmpty(currentTrackWave)) {\n const versionIndex = _.findIndex(currentTrackWave.track_version, [\n 'id',\n version.id,\n ]);\n const wavesurfer =\n currentTrackWave.track_version[versionIndex].wavesurfer;\n if (!_.isEmpty(wavesurfer)) {\n versionWave = wavesurfer;\n }\n }\n } else {\n const currentTrackWave = _.find(this.props.tracksWaves, [\n 'id',\n track.id,\n ]);\n if (!_.isEmpty(currentTrackWave)) {\n const versionIndex = _.findIndex(currentTrackWave.track_version, [\n 'id',\n version.id,\n ]);\n const wavesurfer =\n currentTrackWave.track_version[versionIndex].wavesurfer;\n if (!_.isEmpty(wavesurfer)) {\n versionWave = wavesurfer;\n }\n }\n }\n return (\n onAddPlaylist(track, version.id)}\n isAudioReady={isAudioReady}\n isActiveTrack={isActiveTrack}\n onToggleFavouriteTrackVerion={() =>\n onToggleFavouriteTrackVerion(version.id, track.current_context.id)\n }\n onDownloadPreview={() => onDownloadPreview(track, version)}\n versionWave={versionWave}\n playerTrack={this.props.playerTrack}\n newTrackWaves={this.props.newTrackWaves}\n flushTrackWave={this.props.flushTrackWave}\n currentPage={this.props.currentPage}\n previousPage={this.props.previousPage}\n storePage={this.props.storePage}\n browseType={this.props.browseType}\n />\n );\n });\n return (\n
\n \n {renderedVersions}\n
\n
\n );\n }\n}\n\nexport default Versions;\n","import React from 'react';\nimport PropTypes from 'prop-types';\n\nconst VersionCount = ({ track, onDisplayVersions }) => (\n \n {track.version_count > 0 &&\n
onDisplayVersions(track.id)} className=\"browse__version\">+{track.version_count}
\n }\n
\n);\n\n// props validation.\nVersionCount.propTypes = {\n track: PropTypes.object,\n onDisplayVersions: PropTypes.func,\n mainVersionId: PropTypes.number,\n};\n\nexport default VersionCount;\n","import _ from 'lodash';\nimport React, { Fragment } from 'react';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport { PLACEHOLDER_IMG_URL } from 'components/ImgPlaceholder';\nimport EllipsisText from 'react-ellipsis-text';\nimport NormalisedScore from 'components/NormalisedScore';\nimport A from '../../components/A';\nimport Img from '../../components/Img';\nimport Heart from '../../styles/svg-components/Heart';\nimport CrossRedSVG from 'styles/svg-components/CrossRedSVG.js';\nimport AssetAddToPlaylist from '../../styles/svg-components/AssetAddToPlaylist';\n\nimport Edit from './Edit';\nimport Styles from './Styles';\nimport PreviewAndLicense from './PreviewAndLicense';\nimport Preview from './Preview';\nimport License from './License';\nimport SubscriptionLicense from './SubscriptionLicense';\nimport Versions from './Versions';\nimport NameLink from './NameLink';\nimport VersionCount from './VersionCount';\nimport Pause from '../../styles/svg-components/Pause';\nimport SpinnerTrackPlay from '../../styles/svg-components/SpinnerTrackPlay';\nimport PlayIconSmall from '../../styles/svg-components/PlayIconSmall';\nimport PauseIconSmall from '../../styles/svg-components/PauseIconSmall';\nimport PlayCircleSmTransparent from '../../styles/svg-components/PlayCircleSmTransparent';\nimport { addNewEngagement } from 'actions/favouriteAction';\nimport { convertToMinutesAndSeconds, getImgixUrl } from '../../utils/helpers';\nimport {\n playerActive,\n addActiveTrack,\n playActiveTrack,\n addPrimaryTrack,\n pausedActiveTrack,\n setPlayerPosition,\n setTrackPosition,\n toggleVersion,\n} from '../../actions/footerPlayerAction';\n\nclass Track extends React.Component {\n constructor(props) {\n super(props);\n const showVersions = !_.isEmpty(props.isActiveTrack) ? (props.isActiveTrack.trackID === props.track.id && props.isActiveTrack.versionID !== props.mainVersionId) : false;\n this.state = {\n showVersions,\n isAudioReady: false,\n };\n this.handleToggleVersions = this.handleToggleVersions.bind(this);\n this.handleWaveFormSeek = this.handleWaveFormSeek.bind(this);\n this.userHasSubscription = this.userHasSubscription.bind(this);\n // Class property.\n this.waveSurfer = null;\n if (!_.isEmpty(props.isActiveTrack)) {\n if (props.isActiveTrack.trackID === props.track.id && props.isActiveTrack.versionID !== props.mainVersionId) {\n props.toggleVersion(props.track.id, true);\n }\n }\n }\n\n // Lifecycle method, will only fire once after first render.\n componentDidMount() {\n const { track, mainVersionId, wavesurfer, browseType } = this.props;\n if (_.isEmpty(wavesurfer)) return false;\n this.waveSurfer = wavesurfer;\n if (!_.isEmpty(this.props.isActiveTrack)) {\n if (_.isEmpty(this.props.player.currentTrack)) {\n if (track.id === this.props.isActiveTrack.trackID && mainVersionId === this.props.isActiveTrack.versionID) {\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: mainVersionId,\n });\n this.props.setPlaying(track.id, track.current_context.id, mainVersionId, browseType);\n }\n }\n }\n return false;\n }\n componentWillReceiveProps(nextProps) {\n if (nextProps.wavesurfer !== this.props.wavesurfer) {\n this.waveSurfer = nextProps.wavesurfer;\n this.handleWaveFormSeek();\n return false;\n }\n return false;\n }\n // Lifecycle method, component destroy.\n componentWillUnmount() {\n this.waveSurfer && this.waveSurfer.destroy();\n }\n\n userHasSubscription(){\n return ( this.props.subscriptionData.isActive || this.props.subscriptionData.isFreeTrial );\n }\n\n // Check if current track is playing.\n isActiveTrack() {\n const { player, track, mainVersionId } = this.props;\n return (player.currentTrack.trackID === track.id) && (player.currentTrack.versionID === mainVersionId);\n }\n handleWaveFormSeek() {\n const { track, index } = this.props;\n if (!this.waveSurfer) {\n return;\n }\n this.waveSurfer.on('seek', (pos) => {\n const { isActiveTrack, mainVersionId, playerTrack, newTrackWaves, tracksWaves, flushTrackWave, currentPage, browseType } = this.props;\n if (!_.isEmpty(newTrackWaves)) {\n if (_.findIndex(tracksWaves, ['id', track.id]) === -1) {\n flushTrackWave(currentPage || 1);\n }\n }\n if (isActiveTrack.isAudioReady && !_.isEmpty(isActiveTrack)) {\n if ((isActiveTrack.isAudioReady && isActiveTrack.trackID !== track.id && isActiveTrack.versionID !== mainVersionId)) {\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.play();\n }\n }\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: mainVersionId,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: mainVersionId,\n trackIndex: index,\n versionIndex: 0,\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: mainVersionId,\n });\n if (!isActiveTrack.playing) {\n this.props.setPlaying(track.id, track.current_context.id, mainVersionId, browseType);\n this.props.playActiveTrack();\n } else {\n addNewEngagement('play', track.id, track.current_context.id, mainVersionId, browseType);\n }\n } else if (isActiveTrack.isAudioReady && isActiveTrack.trackID === track.id) {\n this.props.setPlayerPosition(pos);\n if (_.isEmpty(this.props.player.currentTrack)) {\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: mainVersionId,\n });\n this.props.setPlaying(track.id, track.current_context.id, mainVersionId, browseType);\n } else if (isActiveTrack.trackID === track.id && isActiveTrack.versionID !== mainVersionId) {\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: mainVersionId,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: mainVersionId,\n trackIndex: index,\n versionIndex: 0,\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: mainVersionId,\n });\n } else if (isActiveTrack.trackID === track.id && isActiveTrack.versionID === mainVersionId) {\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isPlaying() && !isActiveTrack.playing) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.play();\n }\n this.props.setPlaying(track.id, track.current_context.id, mainVersionId, browseType);\n this.props.playActiveTrack();\n }\n }\n }\n }\n } else if (_.isEmpty(isActiveTrack) && !this.props.isAudioReady) {\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: mainVersionId,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: mainVersionId,\n trackIndex: index,\n versionIndex: 0,\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: mainVersionId,\n });\n this.props.setPlaying(track.id, track.current_context.id, mainVersionId, browseType);\n this.props.playActiveTrack();\n this.props.playerActive();\n } else if (!isActiveTrack.isAudioReady && !_.isEmpty(isActiveTrack) && !isActiveTrack.playing) {\n if ((!isActiveTrack.playing && isActiveTrack.trackID !== track.id && isActiveTrack.versionID !== mainVersionId)) {\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: mainVersionId,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: mainVersionId,\n trackIndex: index,\n versionIndex: 0,\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: mainVersionId,\n });\n this.props.setPlaying(track.id, track.current_context.id, mainVersionId, browseType);\n this.props.playActiveTrack();\n } else if (!isActiveTrack.playing && isActiveTrack.trackID === track.id && isActiveTrack.versionID === mainVersionId) {\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isPlaying() && !isActiveTrack.playing) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.play();\n }\n this.props.setPlaying(track.id, track.current_context.id, mainVersionId, browseType);\n this.props.playActiveTrack();\n }\n }\n this.props.setPlayerPosition(pos);\n }\n } else if (!isActiveTrack.isAudioReady && !_.isEmpty(isActiveTrack) && isActiveTrack.playing) {\n if (isActiveTrack.trackID === track.id && isActiveTrack.versionID === mainVersionId) {\n this.props.setPlayerPosition(pos);\n } else if (isActiveTrack.trackID === track.id && isActiveTrack.versionID !== mainVersionId) {\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.pause();\n }\n }\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: mainVersionId,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: mainVersionId,\n trackIndex: index,\n versionIndex: 0,\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: mainVersionId,\n });\n } else if (isActiveTrack.trackID !== track.id && isActiveTrack.versionID !== mainVersionId) {\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.pause();\n }\n }\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: mainVersionId,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: mainVersionId,\n trackIndex: index,\n versionIndex: 0,\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: mainVersionId,\n });\n addNewEngagement('play', track.id, track.current_context.id, mainVersionId, browseType);\n }\n } else {\n if (isActiveTrack.trackID === track.id && isActiveTrack.versionID === mainVersionId) return false;\n const { wavesurfer } = playerTrack;\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.pause();\n }\n }\n this.props.setTrackPosition({\n position: pos,\n activeTrack: {\n trackID: track.id,\n versionID: mainVersionId,\n currentContext: track.current_context.id,\n isAudioReady: false,\n position: pos,\n },\n primaryTrack: {\n ...track,\n trackId: track.id,\n versionId: mainVersionId,\n trackIndex: index,\n versionIndex: 0,\n wavesurfer: this.waveSurfer,\n },\n });\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: mainVersionId,\n });\n addNewEngagement('play', track.id, track.current_context.id, mainVersionId, browseType);\n }\n return false;\n });\n }\n // Play/Pause track.\n handleTrackPlayPause(track, index) {\n // Set status to playing.\n if (this.props.player.currentTrack.trackID === track.id && this.props.player.currentTrack.versionID === this.props.mainVersionId) {\n const { playerTrack } = this.props;\n const { wavesurfer } = playerTrack;\n if (!this.props.player.isPlaying) {\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.play();\n }\n }\n this.props.setPlaying(track.id, track.current_context.id, this.props.mainVersionId, this.props.browseType);\n this.props.playActiveTrack();\n } else {\n if (!_.isEmpty(wavesurfer)) {\n if (!wavesurfer.isDestroyed) {\n wavesurfer.pause();\n }\n }\n this.props.setPause();\n this.props.pausedActiveTrack();\n }\n return false;\n }\n // Dispatch events.\n this.props.setCurrentTrack({\n trackID: track.id,\n versionID: this.props.mainVersionId,\n });\n // add track to footer player\n this.props.addActiveTrack({\n trackID: track.id,\n versionID: this.props.mainVersionId,\n currentContext: track.current_context.id,\n isAudioReady: false,\n });\n this.props.addPrimaryTrack({\n ...track,\n trackId: track.id,\n versionId: this.props.mainVersionId,\n trackIndex: index,\n versionIndex: _.findIndex(track.track_version, ['id', track.track_url.id]),\n wavesurfer: this.waveSurfer,\n });\n this.props.setPlayerPosition(0);\n this.props.playActiveTrack();\n this.props.setPlaying(track.id, track.current_context.id, this.props.mainVersionId, this.props.browseType);\n this.props.playerActive();\n if (!_.isEmpty(this.props.newTrackWaves)) {\n if (_.findIndex(this.props.tracksWaves, ['id', track.id]) === -1) {\n this.props.flushTrackWave(this.props.currentPage);\n }\n }\n return false;\n }\n\n // Toggle track versions.\n handleToggleVersions(trackId) {\n this.setState({ showVersions: !this.state.showVersions }, () => {\n this.props.toggleVersion(trackId, this.state.showVersions);\n });\n }\n posToSec(pos, length) {\n return pos * length;\n }\n\n getTopStyles(tracks) {\n let topStyles = [];\n let pageStyleName = $('.hero__title.hero__title--secondary').text(); // TODO: Get this from React vars\n // let firstUniqueStyle = tracks.track_to_style[0].style;\n let firstUniqueStyle = false;\n let secondUniqueStyle = false;\n\n\n // Get first unique style\n for (var i = 0; i < tracks.track_to_style.length; i++) {\n if (tracks.track_to_style[i].style.name !== pageStyleName) {\n firstUniqueStyle = tracks.track_to_style[i].style;\n\n break;\n }\n }\n // Get second unique style\n for (var i = 0; i < tracks.track_to_style.length; i++) {\n if (tracks.track_to_style[i].style.name !== firstUniqueStyle.name && tracks.track_to_style[i].style.name !== pageStyleName) {\n secondUniqueStyle = tracks.track_to_style[i].style;\n\n break;\n }\n }\n\n return [firstUniqueStyle, secondUniqueStyle];\n }\n\n // Check if version available for this track.\n checkVersions(versions, trackId) {\n if (!_.isEmpty(versions)) {\n return versions;\n }\n return null;\n }\n\n // Track image.\n checkImage(track) {\n let avatarImage = PLACEHOLDER_IMG_URL;\n if (track.artist &&track.artist.avatar_image) {\n avatarImage = getImgixUrl(track.artist.avatar_image.image_aws_url, 100);\n }\n return avatarImage;\n }\n\n render() {\n const {\n isAudioReady,\n player,\n onResultClick,\n track,\n versions,\n onAddLicense,\n index,\n onAddTrackPlaylist,\n isEditing,\n onRemoveTrack,\n mainVersionId,\n isFavourite,\n isActiveTrack,\n userHasAdminAccount,\n onToggleFavouriteTrackVerion,\n onRemoveTrackStyle,\n } = this.props;\n const { showVersions } = this.state;\n const isCurrentTrack = (isActiveTrack.trackID === track.id && isActiveTrack.versionID === mainVersionId);\n // const isActiveTrack = this.isActiveTrack();\n // Play Button.\n let button = ;\n let buttonSm = ;\n if (isCurrentTrack && isActiveTrack.playing) {\n if (isActiveTrack.isAudioReady) {\n button = ;\n buttonSm = ;\n } else {\n button = ;\n buttonSm = \n
\n
\n
\n
\n
;\n }\n }\n // button = ;\n return (\n
onResultClick('track', track.id)}>\n
\n
\n
\n
\n
\n
\n this.handleTrackPlayPause(track, index)}>\n {track.name}\n
\n
\n {button}\n
\n
\n
\n
\n
\n
\n this.handleTrackPlayPause(track, index)}>\n
\n {buttonSm}\n
\n
\n
\n \n
\n
\n
\n
\n {track.autoclear &&\n \n \n {\"\"}\n \n\n {/* tooltip */}\n

\n {'AutoClear available'}\n ?\n

\n
\n }\n {track.is_explicit_lyrics &&\n \n E\n Explicit Lyrics\n \n }\n
\n
\n \n
\n {track.autoclear &&\n \n \n {\"\"}\n \n \n }\n {track.is_explicit_lyrics &&\n \n E\n Explicit Lyrics\n \n }\n {track.name}\n
\n
\n \n \n {track.artist.name}\n \n \n \n
\n
\n
\n
\n {/* (!isAudioReady && player.isPlaying && !isActiveTrack) &&
*/}\n
\n
\n {track.track_url &&\n {convertToMinutesAndSeconds(track.track_url.version_length)}\n }\n
\n
\n
\n
\n {!isEditing && }\n
\n
\n {!isEditing && }\n
\n
\n {!isEditing && this.props.onDownloadPreview(track)}\n />}\n
\n { !this.userHasSubscription() &&\n
\n {! isEditing && this.props.subscriptionData.hasLoaded && this.props.onAddLicense(track)} />}\n
\n }\n { this.userHasSubscription() &&\n
\n {! isEditing && this.props.subscriptionData.hasLoaded && this.props.onAddLicense(track)} />}\n
\n }\n {isEditing &&
}\n {userHasAdminAccount && \n \n
\n
\n \n
\n Remove From Style\n
\n
\n
\n
\n
\n }\n
\n {(!isEditing && !this.props.isLoading) && this.checkVersions(versions, track.id) &&\n \n }\n
\n
\n );\n }\n}\n\n// Props validation.\nTrack.propTypes = {\n track: PropTypes.object,\n mainVersionId: PropTypes.number,\n onResultClick: PropTypes.func,\n onAddLicense: PropTypes.func,\n onDownloadPreview: PropTypes.func,\n onAddTrackPlaylist: PropTypes.func,\n onToggleFavouriteTrackVerion: PropTypes.func,\n};\n\n// Map redux state to local props.\nconst mapStateToProps = (state) => ({\n player: state.get('player'),\n subscriptionData: state.get('subscriptionData'),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n // setPlaying: () => dispatch({\n // type: 'PLAYER_SET_PLAYING'\n // }),\n playerActive: () => dispatch(playerActive()),\n addActiveTrack: (track) => dispatch(addActiveTrack(track)),\n addPrimaryTrack: (track) => dispatch(addPrimaryTrack(track)),\n // addTrackWave: (track) => dispatch(addTrackWave(track)),\n setPlaying: (trackId, contextId, versionId, browseType) => {\n dispatch({ type: 'PLAYER_SET_PLAYING', engagementInfo: { trackId, contextId, versionId, browseType } });\n },\n setPause: () => dispatch({\n type: 'PLAYER_SET_PAUSE',\n }),\n setCurrentTrack: (track) => dispatch({\n type: 'PLAYER_CURRENT_TRACK',\n currentTrack: track,\n }),\n playActiveTrack: () => dispatch(playActiveTrack()),\n pausedActiveTrack: () => dispatch(pausedActiveTrack()),\n setPlayerPosition: (pos) => dispatch(setPlayerPosition(pos)),\n setTrackPosition: (track) => dispatch(setTrackPosition(track)),\n toggleVersion: (trackId, isVisible) => dispatch(toggleVersion(trackId, isVisible)),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(Track);\n","import _ from \"lodash\";\nimport React from \"react\";\nimport WaveSurfer from \"wavesurfer.js\";\nimport Track from \"./Track\";\nimport Pagination from \"../../components/Pagination\";\n\n// Control whether to show Similar Music section, added for now whilst we have issues - SB\nconst SHOW_SIMILAR = true;\n\nexport default class Tracks extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n isLoading: true,\n primaryTrack: {},\n };\n }\n componentDidMount() {\n // this.props.destroyPreviousPlayer();\n if (!this.props.tracks || !this.props.tracks.page) {\n return;\n }\n\n if (!this.props.tracks.page.isFetching) {\n // Defer waveform generation to ensure DOM is ready\n setTimeout(() => {\n const trackVIds = {};\n const trackWaves = [];\n\n if (!this.props.tracks.page.results) {\n return;\n }\n\n /*\n For each track, create a wavesurfer element for the waveform\n */\n Object.values(this.props.tracks.page.results).forEach(\n (track, index) => {\n if (!track || !track.track_version) {\n return;\n }\n\n let showVersions = false;\n const { id, version_preview_uri, waveform_json } =\n track.track_url || {};\n\n if (!id) {\n return;\n }\n\n trackVIds[track.id] = id;\n const versionId = id;\n const versionIndex = _.findIndex(track.track_version, [\n \"id\",\n versionId,\n ]);\n\n // Skip if we couldn't find a valid version index\n if (versionIndex === -1) {\n return;\n }\n\n // Check if the container exists in the DOM\n const container = document.querySelector(`#waveform-${track.id}`);\n if (!container) {\n return;\n }\n\n const wavesurfer = WaveSurfer.create({\n container: `#waveform-${track.id}`,\n backend: \"MediaElement\",\n mediaType: \"audio\",\n normalize: true,\n waveColor: \"#2c2d2d\",\n // waveColor: '#f00',\n progressColor: \"#01ece3\",\n cursorColor: \"#3a7676\",\n cursorWidth: 0,\n interact: true,\n height: 40,\n hideScrollbar: true,\n });\n wavesurfer.mainTrackUrl = version_preview_uri;\n wavesurfer.mainTrackSet = false;\n\n track.current_engagement_group = 1;\n\n const audioPeaks =\n (waveform_json && JSON.parse(waveform_json)) || [];\n const audioDuration = track.precise_duration\n ? track.precise_duration\n : track.duration;\n\n wavesurfer.backend.setPeaks(audioPeaks || null, audioDuration);\n wavesurfer.drawBuffer();\n\n if (!_.isEmpty(this.props.isActiveTrack)) {\n if (\n this.props.isActiveTrack.trackID === track.id &&\n this.props.isActiveTrack.versionID !== versionId\n ) {\n showVersions = true;\n }\n }\n trackWaves.push({\n ...track,\n trackId: track.id,\n versionId,\n versionIndex,\n trackIndex: index,\n showVersion: showVersions,\n track_version: _.map(track.track_version, (version, key) => {\n if (key === versionIndex) {\n return {\n ...version,\n wavesurfer,\n };\n }\n return {\n ...version,\n };\n }),\n wavesurfer,\n });\n }\n );\n\n // this.props.onFetchVersions(trackVIds);\n\n if (_.has(this.props.tracks.page, \"pagination\")) {\n if (\n parseInt(this.props.previousPage) !==\n this.props.tracks.page.pagination.currentPage &&\n this.props.storePage !==\n this.props.tracks.page.pagination.currentPage\n ) {\n this.props.addPageTrackWave(trackWaves);\n } else {\n this.props.flushNewTrackWave();\n this.props.addTrackWave(\n trackWaves,\n this.props.tracks.page.pagination.currentPage\n );\n }\n } else {\n this.props.flushNewTrackWave();\n this.props.addTrackWave(trackWaves, 1);\n }\n this.setState({ isLoading: false });\n }, 0); // End of setTimeout\n } else {\n }\n }\n componentDidUpdate(prevProps) {\n // Only check if current props are valid - previous props might be empty during state transitions\n if (\n !this.props.tracks ||\n !this.props.tracks.page ||\n !this.props.tracks.page.results\n ) {\n return;\n }\n\n // Count tracks from `results`, NOT `result_ids`. Similar-tracks state has\n // `result_ids` deleted in its action creator (receiveSimilarTracks*)\n const countResults = (props) => {\n const results =\n props && props.tracks && props.tracks.page && props.tracks.page.results;\n if (!results) return 0;\n return Array.isArray(results) ? results.length : Object.keys(results).length;\n };\n\n // Check if we need to regenerate waveforms\n const prevLength = countResults(prevProps);\n const currentLength = countResults(this.props);\n\n if (currentLength !== prevLength) {\n // Check if this is just an expansion of existing tracks (fetchAllTracks after fetchTracks)\n // If we already have waveforms and this is adding more tracks from the same dataset, skip\n const isExpansion =\n prevLength > 0 &&\n currentLength > prevLength &&\n this.props.tracksWaves &&\n this.props.tracksWaves.length > 0;\n\n const trackVIds = {};\n const trackWaves = [];\n\n // For expansions, only process new tracks without waveforms\n // For new loads, clear existing waveforms and regenerate all\n if (!isExpansion) {\n /* Clear previous waveforms */\n $(\"[id^=waveform-]\").not(\"[id^=waveform-version-]\").empty();\n }\n\n Object.values(this.props.tracks.page.results).forEach((track, index) => {\n if (!track || !track.track_version) {\n return;\n }\n\n let showVersions = false;\n const { id, version_preview_uri, waveform_json } =\n track.track_url || {};\n\n if (!id) {\n return;\n }\n\n // During expansion, skip tracks that already have waveforms\n if (isExpansion) {\n const existingWaveform = _.find(this.props.tracksWaves, [\n \"id\",\n track.id,\n ]);\n if (existingWaveform) {\n return;\n }\n }\n\n trackVIds[track.id] = id;\n const versionId = id;\n const versionIndex = _.findIndex(track.track_version, [\n \"id\",\n versionId,\n ]);\n\n // Skip if we couldn't find a valid version index\n if (versionIndex === -1) {\n return;\n }\n\n // Check if the container exists in the DOM\n const container = document.querySelector(`#waveform-${track.id}`);\n if (!container) {\n return;\n }\n\n const wavesurfer = WaveSurfer.create({\n container: `#waveform-${track.id}`,\n backend: \"MediaElement\",\n mediaType: \"audio\",\n normalize: true,\n waveColor: \"#2c2d2d\",\n // waveColor: '#f00',\n progressColor: \"#01ece3\",\n cursorColor: \"#3a7676\",\n cursorWidth: 0,\n interact: true,\n height: 40,\n hideScrollbar: true,\n });\n wavesurfer.mainTrackUrl = version_preview_uri;\n wavesurfer.mainTrackSet = false;\n\n const audioPeaks = (waveform_json && JSON.parse(waveform_json)) || [];\n const audioDuration = track.precise_duration\n ? track.precise_duration\n : track.duration;\n\n wavesurfer.backend.setPeaks(audioPeaks || null, audioDuration);\n wavesurfer.drawBuffer();\n\n if (!_.isEmpty(this.props.isActiveTrack)) {\n if (\n this.props.isActiveTrack.trackID === track.id &&\n this.props.isActiveTrack.versionID !== versionId\n ) {\n showVersions = true;\n }\n }\n trackWaves.push({\n ...track,\n trackId: track.id,\n versionId,\n versionIndex,\n trackIndex: index,\n showVersion: showVersions,\n track_version: _.map(track.track_version, (version, key) => {\n if (key === versionIndex) {\n return {\n ...version,\n wavesurfer,\n };\n }\n return {\n ...version,\n };\n }),\n wavesurfer,\n });\n });\n\n // Only add new waveforms if we generated any\n if (trackWaves.length > 0) {\n if (isExpansion) {\n // For expansions, append the new waveforms to existing ones\n const combinedWaves = [...this.props.tracksWaves, ...trackWaves];\n this.props.flushNewTrackWave();\n this.props.addTrackWave(combinedWaves, 1);\n } else if (_.has(this.props.tracks.page, \"pagination\")) {\n if (\n parseInt(this.props.previousPage) !==\n this.props.tracks.page.pagination.currentPage &&\n this.props.storePage !==\n this.props.tracks.page.pagination.currentPage\n ) {\n this.props.addPageTrackWave(trackWaves);\n } else {\n this.props.flushNewTrackWave();\n this.props.addTrackWave(\n trackWaves,\n this.props.tracks.page.pagination.currentPage\n );\n }\n } else {\n this.props.flushNewTrackWave();\n this.props.addTrackWave(trackWaves, 1);\n }\n }\n }\n }\n\n componentWillUnmount() {\n // const { flushTrackWave } = this.props;\n // if (parseInt(this.props.previousPage) === this.props.tracks.page.pagination.currentPage && this.props.storePage === this.props.tracks.page.pagination.currentPage) {\n // flushTrackWave();\n // }\n }\n render() {\n const favouritesData = JSON.parse(\n sessionStorage.getItem(\"favourites_data\")\n );\n let noTrackError = \"Sorry, no tracks were found matching those filters.\";\n let defaultSort = \"Relevance\";\n\n // Add early validation to ensure we have valid data before rendering\n if (\n !this.props.tracks ||\n !this.props.tracks.page ||\n !this.props.tracks.page.results\n ) {\n return (\n
\n
\n
\n

Loading tracks...

\n
\n
\n
\n );\n }\n\n if (this.props.defaultSort) {\n defaultSort = this.props.defaultSort;\n }\n\n if (this.props.url === \"/favorites\") {\n noTrackError =\n \"You haven't added any favourite tracks yet. Start exploring!\";\n } else if (this.props.url.indexOf(\"/track/\") !== -1) {\n noTrackError =\n \"Sorry, there was an issue retrieving similar music for this track.\";\n } else if (this.props.url.indexOf(\"/playlist/\") !== -1) {\n noTrackError = \"There are no tracks in this playlist.\";\n }\n\n const tracks =\n !this.props.tracks.page.isFetching &&\n _.map(this.props.tracks.page.results, (track, index) => {\n // Skip processing if the track data is invalid\n if (!track) {\n return null;\n }\n\n let mainVersionId = null;\n let wavesurfer = null;\n const versions = [];\n\n if (track && track.track_version && track.track_url) {\n track.track_version.forEach((trackVersion, versionKey) => {\n if (\n trackVersion.version_type &&\n track.track_url.id === trackVersion.id\n ) {\n mainVersionId = trackVersion.id;\n if (_.has(this.props.tracks.page, \"pagination\")) {\n if (\n parseInt(this.props.previousPage) !==\n this.props.tracks.page.pagination.currentPage &&\n this.props.storePage !==\n this.props.tracks.page.pagination.currentPage\n ) {\n const currentTrackWave = _.find(this.props.newTrackWaves, [\n \"id\",\n track.id,\n ]);\n if (!_.isEmpty(currentTrackWave)) {\n const versionIndex = _.findIndex(\n currentTrackWave.track_version,\n [\"id\", track.track_url.id]\n );\n if (versionIndex !== -1) {\n wavesurfer =\n currentTrackWave.track_version[versionIndex].wavesurfer;\n }\n }\n } else {\n const currentTrackWave = _.find(this.props.tracksWaves, [\n \"id\",\n track.id,\n ]);\n\n if (!_.isEmpty(currentTrackWave)) {\n const versionIndex = _.findIndex(\n currentTrackWave.track_version,\n [\"id\", track.track_url.id]\n );\n if (versionIndex !== -1) {\n wavesurfer =\n currentTrackWave.track_version[versionIndex].wavesurfer;\n }\n }\n }\n } else {\n const currentTrackWave = _.find(this.props.tracksWaves, [\n \"id\",\n track.id,\n ]);\n if (!_.isEmpty(currentTrackWave)) {\n const versionIndex = _.findIndex(\n currentTrackWave.track_version,\n [\"id\", track.track_url.id]\n );\n if (versionIndex !== -1) {\n wavesurfer =\n currentTrackWave.track_version[versionIndex].wavesurfer;\n }\n }\n }\n } else {\n versions.push(trackVersion);\n }\n });\n }\n\n // if current track is favorite.\n const favourite =\n mainVersionId &&\n favouritesData &&\n favouritesData.includes(mainVersionId)\n ? \"js-is-favourite-version\"\n : \"\";\n\n return (\n \n this.props.onRemoveTrack(this.props.playlistId, track.id, track)\n }\n removeFromFavorites={this.props.removeFromFavorites}\n onAddLicense={this.props.onAddLicense}\n onDownloadPreview={this.props.onDownloadPreview}\n onAddTrackPlaylist={this.props.onAddPlaylist}\n onResultClick={this.props.onResultClick}\n onToggleFavouriteTrackVerion={this.props.onToggleFavourite}\n isActiveTrack={this.props.isActiveTrack}\n isAudioReady={this.props.isAudioReady}\n primaryTrack={this.props.primaryTrack}\n wavesurfer={wavesurfer}\n tracksWaves={this.props.tracksWaves}\n newTrackWaves={this.props.newTrackWaves}\n playerTrack={this.props.playerTrack}\n flushTrackWave={this.props.flushTrackWave}\n currentPage={\n (_.has(this.props.tracks.page, \"pagination\") &&\n this.props.tracks.page.pagination.currentPage) ||\n 1\n }\n previousPage={this.props.previousPage}\n storePage={this.props.storePage}\n addVersionTrackWave={this.props.addVersionTrackWave}\n addVersionNewTrackWave={this.props.addVersionNewTrackWave}\n browseType={this.props.browseType}\n userHasAdminAccount={this.props.userHasAdminAccount}\n onRemoveTrackStyle={() => this.props.onRemoveTrackStyle(track)}\n isStyleDeleting={this.props.isStyleDeleting}\n />\n );\n });\n\n // If we're on a track page, this is where we'll show the similar music section\n const isSimilarTracks = this.props.url.includes(\"track\");\n\n // If the similar music section is disabled, return null\n if (!SHOW_SIMILAR && isSimilarTracks) {\n return null;\n }\n\n return (\n
\n
\n {isSimilarTracks && (\n

Similar Music

\n )}\n
\n
\n
\n
\n
Tracks
\n
\n {this.props.sort &&\n this.props.onSortToggle &&\n !this.props.hideSort && (\n
\n

\n \n {defaultSort}\n {\" \"}\n |{\" \"}\n \n Latest Releases\n {\" \"}\n |{\" \"}\n \n Undiscovered\n \n

\n
\n )}\n
\n
\n
\n
\n {!tracks || tracks.length <= 0 ? (\n

{noTrackError}

\n ) : (\n tracks\n )}\n
\n {this.props.tracks.isFetchingMore && (\n \n
\n {/*

Loading More

*/}\n
\n
\n
\n
\n
\n
\n
\n )}\n {this.props.tracks.page.pagination &&\n this.props.tracks.page.pagination.pageCount > 1 && (\n \n )}\n
\n
\n );\n }\n}\n","import React from 'react';\nimport { connect } from 'react-redux';\n\n// Actions.\nimport {\n addTracksWave,\n addActiveTrack,\n addVersionsWave,\n addPlaylist,\n downloadPreview,\n newTracks,\n addPrimaryTrack,\n} from '../../actions/playerAction';\nimport { addLicense } from '../../actions/licenseAction';\nimport {\n addTrackWave,\n addPageTrackWave,\n flushCurrentTrackWave,\n flushNewTrackWave,\n addVersionTrackWave,\n addVersionNewTrackWave,\n} from '../../actions/footerPlayerAction';\nimport {\n removeModal,\n addModal,\n} from '../../actions/authenticationAction';\nimport {\n addNewEngagement,\n removeTrack,\n removeTrackStyle,\n toggleFavouriteTrackVerion,\n addToFavorites,\n removeFromFavorites,\n} from '../../actions/favouriteAction';\n\nimport { drip } from 'utils/drip';\nimport Tracks from './Tracks';\nimport Spinner from '../../styles/svg-components/Spinner';\n\nclass TrackPlayer extends React.Component {\n constructor(props) {\n super(props);\n this.state = {};\n this.handleAddModal = this.handleAddModal.bind(this);\n }\n handleAddModal(track) {\n const { onAddModal, reloaded } = this.props;\n onAddModal('removeStyle', { ...track, reloaded });\n $('body').addClass('modal-overlay-active');\n }\n render() {\n let tracks = null;\n const userHasAdminAccount = String(sessionStorage.getItem('admin_account') || false) === 'true';\n let onResultClick = () => (undefined);\n if (this.props.onResultClick) {\n onResultClick = this.props.onResultClick;\n }\n if (this.props.tracks.isFetching) {\n tracks = (\n
\n
\n

Loading Music

\n
\n
\n
\n
\n
\n
\n
\n );\n } else {\n tracks = ();\n }\n return (\n
\n {this.props.tracks.isDeleting && }\n {tracks}\n
\n );\n }\n}\n\nconst mapStateToProps = (state) => ({\n tracks: state.get('tracks'),\n trackIds: state.get('trackIds'),\n versions: state.get('versions'),\n activeTrack: state.get('activeTrack'),\n primaryTrack: state.get('primaryTrack'),\n playing: state.get('playing'),\n favorites: state.get('favorites'),\n footerPlayer: state.get('footerPlayer'),\n});\n\nconst mapDispatchToProps = (dispatch) => ({\n onAddModal: (modal, intent) => {\n dispatch(addModal(modal, intent));\n },\n onRemoveModal: () => {\n dispatch(removeModal());\n },\n onAddTracksWave: (tracks, trackId) => {\n dispatch(addTracksWave(tracks, trackId));\n dispatch(newTracks());\n },\n onTrackPlay: (trackIndex, trackId, contextId, version, primaryTrack) => {\n dispatch(addActiveTrack({ trackIndex, trackId, contextId, version }));\n dispatch(addPrimaryTrack(primaryTrack));\n },\n onDisplayVersions: (track, versionsWave) => {\n if (!versionsWave[track]) {\n return;\n }\n versionsWave[track].active = !versionsWave[track].active;\n dispatch(addVersionsWave(versionsWave));\n if ($('.browse-player-versions').is(':visible') && $('.browse-player__track-main.activeTrack').siblings('.browse-content-wrapper-inner').find('.browse-player-versions').css('opacity') == 1) {\n $('.browse-player__track-main.activeTrack').addClass('versions-active');\n } else {\n $('.browse-player__track-main.activeTrack').removeClass('versions-active');\n }\n },\n onAddLicense: (track) => {\n drip(\"Opened License Modal\");\n dispatch(addLicense(track));\n $('.modal-overlay').addClass('active');\n },\n onDownloadPreview: (primaryTrack, version) => {\n dispatch(downloadPreview(primaryTrack, version));\n },\n onAddPlaylist: (track, version) => {\n dispatch(addPlaylist(track, version));\n },\n onToggleFavourite: (track, version) => {\n dispatch(toggleFavouriteTrackVerion(track, version));\n },\n onAddNewEngagement: (type, trackId, contextId) => {\n addNewEngagement(type, trackId, contextId);\n },\n onRemoveTrack: (playlistId, trackId, contextId) => {\n dispatch(removeTrack(playlistId, trackId, contextId));\n },\n onRemoveTrackStyle: (trackId, styleId) => {\n dispatch(removeTrackStyle(trackId, styleId));\n },\n addToFavorites: (id, contextID) => {\n dispatch(addToFavorites(id, contextID));\n },\n\n removeFromFavorites: (id, contextID) => {\n dispatch(removeFromFavorites(id, contextID));\n },\n\n destroyPreviousPlayer: () => dispatch({\n type: 'PLAYER_DESTROY',\n }),\n addTrackWave: (tracks, page) => dispatch(addTrackWave(tracks, page)),\n addPageTrackWave: (tracks) => dispatch(addPageTrackWave(tracks)),\n flushTrackWave: (tracks) => dispatch(flushCurrentTrackWave(tracks)),\n flushNewTrackWave: () => dispatch(flushNewTrackWave()),\n addVersionTrackWave: (version) => dispatch(addVersionTrackWave(version)),\n addVersionNewTrackWave: (version) => dispatch(addVersionNewTrackWave(version)),\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(mapStateToProps, mapDispatchToProps)(TrackPlayer);\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass AssetAddToPlaylist extends React.Component {\n render() {\n const assetAddToPlaylist = `\n `;\n return (\n \n );\n }\n}\n\nexport default AssetAddToPlaylist;\n","import React, {Fragment} from 'react';\nimport { connect } from 'react-redux';\n\nexport class NormalisedScore extends React.Component { // eslint-disable-line react/prefer-stateless-function\n constructor(props) {\n super(props);\n }\n\n render() {\n const {\n trackEngagement,\n } = this.props;\n\n let trackeEngagementP = 0;\n let trackeEngagementE = 0;\n let trackeEngagementR = 0;\n let trackeEngagementN = 0;\n let currentContextId = 0;\n\n if (this.props.trackEngagement && this.props.adminBar.showRelevancy) {\n trackeEngagementP = this.props.trackEngagement.plays || 0;\n trackeEngagementE = this.props.trackEngagement.positive || 0;\n trackeEngagementR = trackeEngagementE / trackeEngagementP || 0;\n trackeEngagementN = this.props.trackEngagement.normalised || 0;\n currentContextId = this.props.currentContext || 0;\n }\n\n let groupText = \"\";\n\n switch(this.props.engagementGroup) {\n case 1:\n groupText = '5+ E';\n break;\n case 2:\n groupText = 'Any E';\n break;\n case 3:\n groupText = '15+ E';\n break;\n case 4:\n groupText = '<10 P';\n break;\n case 5:\n groupText = 'All';\n break;\n default:\n groupText = 'N/A';\n }\n\n return (\n \t\n { (this.props.trackEngagement && this.props.adminBar.showRelevancy) &&\n
\n
\n §\n
\n {`Context ID: ${currentContextId}`}
{`Track ID: ${this.props.track.id}`}
\n
\n
\n
\n S{ this.props.engagementGroup }\n
\n Set { this.props.engagementGroup }
{groupText}
\n
\n
\n
\n P: { trackeEngagementP }\n E: { trackeEngagementE }\n R: { Math.round(trackeEngagementR * 100) / 100}\n N: { Math.round(trackeEngagementN * 100) / 100}\n
\n
\n }\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 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)(NormalisedScore);\n"],"sourceRoot":""}