{"version":3,"sources":["../node_modules/react-share/es/EmailShareButton.js","containers/BrowseArtistPage/ArtistInfo.js","containers/BrowseArtistPage/Breadcrumb.js","containers/BrowseArtistPage/index.js","actions/artistAction.js","actions/pageMetaAction.js","styles/svg-components/Twitter.js","styles/svg-components/Facebook.js","styles/svg-components/Email.js"],"names":["EmailShareButton","createShareButton","url","_ref","subject","body","objectToGetParams","props","PropTypes","string","openWindow","onClick","link","window","location","href","ArtistInfo","share","bind","onClickFollow","this","setState","artist","followingArtist","sessionStorage","getItem","showSignUpModal","following","includes","id","unfollowArtist","followArtist","$","find","toggleClass","windowLocation","shareUrl","description","full_description","isFollowing","artistBanner","className","name","FacebookShareButton","quote","state","Facebook","TwitterShareButton","title","Twitter","Email","alt","src","type","style","header_image","image_aws_url","heroStyle","avatar_image","getImgixUrl","React","Component","backgroundImage","backgroundPosition","backgroundSize","connect","get","dispatch","ID","addModal","Breadcrumb","A","to","slug","text","length","BrowseArtistPage","componentId","requestManager","generateComponentId","loadData","onSetAppliedFilters","query","onClaimTracksOwnership","fetchArtist","params","artistId","then","data","onLoadEditData","router","push","catch","err","console","log","addEventListener","onSetNotFiltered","nextProps","onFetchArtistTracks","flushTrackWave","onClearEditData","onCancelRequestsByComponent","onUnregisterComponent","onReleaseTracksOwnership","error","info","energy","vocal","sort","duration","styleFilters","page","onClearTracksState","pageMetaTitle","getPageTitle","meta_title","pageMetaDesc","getPageDesc","meta_description","hero","breadcrumb","Object","keys","content","rel","getCanonicalUrl","Browse","hideCollection","contextTypes","object","mapStateToProps","createStructuredSelector","fetchAllTracks","locationQuery","setAppliedFilters","setNotFiltered","editData","loadEditData","clearEditData","cancelRequestsByComponent","unregisterComponent","ownerType","claimTracksOwnership","releaseTracksOwnership","clearTracksState","fetch","conditionallyGetCdnApi","method","res","json","fetchCategories","Promise","resolve","reject","response","payload","fetchCategoryArtists","categoryId","letter","fetchLatestArtists","fetchLetters","fetchArtistStatementList","authToken","API","JSON","stringify","token","headers","artist_details","artistEarningsArray","fetchPortfolioList","fetchEarnigsList","fetchArtistAccount","fetchArtistSubmissions","fetchSubscriptionUsageReport","statementID","updateArtistAccount","updatePaypalEmail","paypalEmail","paypal_email","requestPayment","getLatestStatement","getPaymentDetails","artistEarningReportId","fallback","start","middle","undefined","desc","metaDesc","subtitle","path","origin","clean","split","charAt","replace","getTrackPageTitle","trackName","artistName","pageTitle","getGeneralPageTitle","is404","getTrackPageDesc","styles","getTags","moods","track","allTags","max","checkPrev","tags","newTag","tag","subtag"],"mappings":"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","file":"static/js/39.chunk.js?hash=de795d0a","sourcesContent":["import PropTypes from 'prop-types';\n\nimport objectToGetParams from './utils/objectToGetParams';\nimport createShareButton from './utils/createShareButton';\n\nfunction emailLink(url, _ref) {\n var subject = _ref.subject,\n body = _ref.body;\n\n return 'mailto:' + objectToGetParams({ subject: subject, body: body || url });\n}\n\nvar EmailShareButton = createShareButton('email', emailLink, function (props) {\n return {\n subject: props.subject,\n body: props.body\n };\n}, {\n subject: PropTypes.string,\n body: PropTypes.string\n}, {\n openWindow: false,\n onClick: function onClick(link) {\n window.location.href = link;\n }\n});\n\nexport default EmailShareButton;","import $ from 'jquery';\nimport React, { Fragment } from 'react';\nimport {\n FacebookShareButton,\n TwitterShareButton,\n EmailShareButton,\n} from 'react-share';\nimport PropTypes from 'prop-types';\nimport { connect } from 'react-redux';\nimport EllipsisText from 'react-ellipsis-text';\n\nimport Facebook from '../../styles/svg-components/Facebook';\nimport Twitter from '../../styles/svg-components/Twitter';\nimport Email from '../../styles/svg-components/Email';\n\nimport { addModal } from '../../actions/authenticationAction';\nimport { followArtist, unfollowArtist } from '../../actions/followingAction';\nimport {getImgixUrl} from \"../../utils/helpers\";\n\nclass ArtistInfo extends React.Component {\n constructor(props) {\n super(props);\n\n this.share = this.share.bind(this);\n this.onClickFollow = this.onClickFollow.bind(this);\n }\n\n componentWillMount() {\n this.setState({\n artist: this.props.artist,\n followingArtist: false,\n });\n }\n\n onClickFollow() {\n // If not logged-in.\n const authToken = sessionStorage.getItem('auth_token');\n if (!authToken) {\n return this.props.showSignUpModal();\n }\n\n const { following, artist } = this.props;\n const isFollowing = following.includes(artist.id);\n\n if (isFollowing) {\n return this.props.unfollowArtist(artist.id);\n }\n\n return this.props.followArtist(artist.id);\n }\n\n share() {\n $('.hero__icons').find('.hero__icons--block').toggleClass('active');\n }\n\n render() {\n const windowLocation = window.location.href;\n const shareUrl = `${windowLocation}`;\n let description = null;\n if (this.props.artist.full_description) {\n description = this.props.artist.full_description;\n }\n\n const { following, artist } = this.props;\n const isFollowing = following.includes(artist.id);\n\n const artistBanner = \n
\n
Artist
\n

{this.props.artist.name}

\n
\n
\n
\n
\n \n
\n \n
\n
\n \n
\n \n
\n
\n \n
\n \n
\n
\n
\n \n
\n \"Share\n
\n
\n
\n
\n \n { isFollowing\n ? Following\n : Follow\n }\n \n
\n Bookmark this artist and see their latest releases on your \"Following\" page.\n
\n
\n
\n
;\n\n return (\n
\n
\n\n\n
\n
\n { description &&\n artistBanner\n }\n\n
\n {this.props.artist.avatar_image.image_aws_url &&\n
\n {this.props.artist.name}\n
\n }\n
\n
\n { description &&\n

{description}

\n }\n { !description &&\n artistBanner\n }\n
\n
\n
\n
\n
\n );\n }\n}\n\nfunction heroStyle(artist) {\n if (artist.header_image) {\n return {\n backgroundImage: `url(${ getImgixUrl(artist.header_image.image_aws_url, \"?auto=compress\")})`,\n backgroundPosition: 'center',\n backgroundSize: 'cover'\n };\n }\n return null;\n}\n\n// Map redux state to local props.\nconst mapStateToProps = (state) => ({\n following: state.get('following'),\n});\n\n// Map redux dispatch to local props.\nconst mapDispatchToProps = (dispatch) => ({\n followArtist: (ID) => {\n dispatch(followArtist(ID));\n },\n\n unfollowArtist: (ID) => {\n dispatch(unfollowArtist(ID));\n },\n\n showSignUpModal: () => {\n dispatch(addModal('playSignup', 'follow_artist'));\n },\n});\n\n// Props validation.\nArtistInfo.propTypes = {\n artist: PropTypes.object,\n following: PropTypes.array,\n followArtist: PropTypes.func,\n unfollowArtist: PropTypes.func,\n showSignUpModal: PropTypes.func,\n};\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(\n mapStateToProps,\n mapDispatchToProps\n)(ArtistInfo);\n","import React from 'react';\nimport A from 'components/A';\nimport EllipsisText from 'react-ellipsis-text'\n\nconst Breadcrumb = ({ artist }) => (\n \n Artists\n \n \n);\n\nexport default Breadcrumb;\n","import React, { Component } from \"react\";\nimport { connect } from \"react-redux\";\nimport Helmet from \"react-helmet\";\nimport { createStructuredSelector } from \"reselect\";\nimport PropTypes from \"prop-types\";\n\nimport ArtistInfo from \"./ArtistInfo\";\nimport Breadcrumb from \"./Breadcrumb\";\nimport Browse from \"containers/Browse\";\nimport {\n fetchAllTracks,\n cancelRequestsByComponent,\n clearTracksState,\n unregisterComponent,\n claimTracksOwnership,\n releaseTracksOwnership,\n} from \"actions/trackAction\";\nimport requestManager from \"../../utils/requestManager\";\nimport { fetchArtist } from \"actions/artistAction\";\nimport { flushTrackWave } from \"actions/footerPlayerAction\";\nimport { setAppliedFilters, setNotFiltered } from \"actions/browseAction\";\nimport { loadEditData, clearEditData } from \"../../actions/adminAction\";\nimport { getPageTitle, getPageDesc, getCanonicalUrl } from \"../../actions/pageMetaAction\";\nimport ScrollToTop from \"../../scroll-to-top\";\n\nclass BrowseArtistPage extends Component {\n constructor(props) {\n super(props);\n this.componentId = requestManager.generateComponentId();\n\n // Local state.\n this.state = {\n artist: {},\n };\n\n // Bind class methods.\n this.loadData = this.loadData.bind(this);\n }\n\n // Lifecycle method\n componentWillMount() {\n this.props.onSetAppliedFilters(this.props.location.query);\n this.props.onClaimTracksOwnership(this.componentId, \"artist-page\");\n }\n\n // Lifecycle method\n componentDidMount() {\n fetchArtist(this.props.params.artistId)\n .then((data) => {\n if (data) {\n this.setState({ artist: data });\n\n this.props.onLoadEditData({\n type: \"artist\",\n id: data.id,\n name: data.name,\n });\n\n if (this.props.params.artistId != data.slug && data.slug) {\n // Change url\n this.props.router.push(\"/browse/artist/\" + data.slug);\n }\n } else {\n window.location.href = \"/artists\";\n }\n })\n .catch((err) => {\n console.log(err);\n });\n window.addEventListener(\n \"popstate\",\n () => {\n this.props.onSetAppliedFilters(this.props.location.query);\n this.props.onSetNotFiltered();\n },\n false\n );\n }\n\n // Lifecycle method\n componentWillReceiveProps(nextProps) {\n if (this.props.params.artistId !== nextProps.params.artistId) {\n fetchArtist(nextProps.params.artistId)\n .then((data) => {\n this.setState({ artist: data });\n })\n .catch((err) => {\n console.log(err);\n });\n this.props.onSetAppliedFilters(nextProps.location.query);\n this.props.onSetNotFiltered();\n this.props.onFetchArtistTracks(\n nextProps.params.artistId,\n 0,\n 0,\n \"Relevance\",\n 0,\n [],\n 1,\n this.componentId\n );\n }\n }\n\n componentWillUnmount() {\n this.props.flushTrackWave();\n this.props.onClearEditData();\n this.props.onCancelRequestsByComponent(this.componentId);\n this.props.onUnregisterComponent(this.componentId);\n this.props.onReleaseTracksOwnership(this.componentId);\n }\n // Lifecycle method\n componentDidCatch(error, info) {\n console.log(error, info);\n }\n loadData(energy, vocal, sort, duration, styleFilters, page) {\n const { artistId } = this.props.params;\n // Cancel any in-flight requests from this component before starting new ones\n this.props.onCancelRequestsByComponent(this.componentId);\n // Clear tracks state to show loading indicator\n this.props.onClearTracksState();\n this.props.onFetchArtistTracks(\n artistId,\n energy,\n vocal,\n sort,\n duration,\n styleFilters,\n page,\n this.componentId\n );\n }\n render() {\n // Extract artist, artistId from local state.\n const { artist } = this.state;\n const { artistId } = this.props.params;\n\n // Helmet component params.\n const pageMetaTitle = getPageTitle(\n artist.meta_title,\n artist.name,\n \"artist\"\n );\n const pageMetaDesc = getPageDesc(\n artist.meta_description,\n { name: artist.name },\n \"artist\"\n );\n\n // Browse component params.\n const hero = artist.header_image ? : null;\n const breadcrumb =\n Object.keys(artist).length != 0 ? : null;\n\n const url = `/browse/artist/${artist.slug ? artist.slug : artist.id}`;\n\n return (\n
\n \n {pageMetaTitle}\n \n \n \n\n {artist.name ?

{artist.name}

: null}\n\n \n \n \n
\n );\n }\n}\n\n// Context Validation.\nBrowseArtistPage.contextTypes = {\n router: PropTypes.object,\n};\n\n// Props Validation.\nBrowseArtistPage.propTypes = {\n params: PropTypes.object,\n};\n\n// Map redux state to local props.\nconst mapStateToProps = createStructuredSelector({});\n\n// Map redux dispatch to local props.\nconst mapDispatchToProps = (dispatch) => ({\n onFetchArtistTracks: (\n artistId,\n energy,\n vocal,\n sort,\n duration,\n styleFilters,\n page,\n componentId\n ) => {\n dispatch(\n fetchAllTracks(\n \"artist\",\n artistId,\n energy,\n vocal,\n sort,\n duration,\n styleFilters,\n page,\n [],\n -1,\n false,\n componentId\n )\n );\n },\n flushTrackWave: () => dispatch(flushTrackWave()),\n onSetAppliedFilters: (locationQuery) => {\n dispatch(setAppliedFilters(locationQuery));\n },\n onSetNotFiltered: () => {\n dispatch(setNotFiltered());\n },\n onLoadEditData: (editData) => {\n dispatch(loadEditData(editData));\n },\n onClearEditData: () => {\n dispatch(clearEditData());\n },\n onCancelRequestsByComponent: (componentId) => {\n dispatch(cancelRequestsByComponent(componentId));\n },\n onUnregisterComponent: (componentId) => {\n dispatch(unregisterComponent(componentId));\n },\n onClaimTracksOwnership: (componentId, ownerType) => {\n dispatch(claimTracksOwnership(componentId, ownerType));\n },\n onReleaseTracksOwnership: (componentId) => {\n dispatch(releaseTracksOwnership(componentId));\n },\n onClearTracksState: () => {\n dispatch(clearTracksState());\n },\n});\n\n// Wrap the component to inject dispatch and state into it\nexport default connect(mapStateToProps, mapDispatchToProps)(BrowseArtistPage);\n","import fetch from \"isomorphic-fetch\";\nimport Config, { API } from \"../constants\";\nimport { conditionallyGetCdnApi } from \"./generalAction\";\n\nexport function fetchArtistAvatars(artists) {\n let apiUrl = `${API}artist/getavatars?artists=`;\n\n apiUrl += JSON.stringify(artists);\n\n return fetch(apiUrl, {\n method: \"POST\",\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchArtist(artistId) {\n return fetch(`${conditionallyGetCdnApi()}artists/${artistId}`, {\n method: \"GET\",\n // mode: 'CORS',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchCategories() {\n return (dispatch) =>\n new Promise((resolve, reject) => {\n fetch(`${conditionallyGetCdnApi()}artist/categories`, {\n method: \"GET\",\n })\n .then((res) => res.json())\n .then((response) => {\n dispatch({\n type: \"FETCH_CATEGORIES_SUCCESS\",\n payload: response,\n });\n resolve(response);\n })\n .catch((err) => {\n reject(err);\n dispatch({\n type: \"FETCH_CATEGORIES_FAILURE\",\n payload: err,\n });\n });\n });\n}\n\nexport function fetchCategoryArtists(categoryId, letter, page) {\n if (letter === \"#\") {\n letter = \"$\";\n }\n return (dispatch) => {\n dispatch({\n type: \"FETCH_CATEGORY_ARTISTS_REQUEST\",\n });\n return new Promise((resolve, reject) =>\n fetch(\n `${conditionallyGetCdnApi()}artists/${categoryId}/categories/${letter}/letters/${page}`,\n {\n method: \"GET\",\n }\n )\n .then((res) => res.json())\n .then((response) => {\n resolve(response);\n dispatch({\n type: \"FETCH_CATEGORY_ARTISTS_SUCCESS\",\n payload: response,\n });\n })\n .catch((err) => {\n reject(err);\n dispatch({\n type: \"FETCH_CATEGORY_ARTISTS_FAILURE\",\n payload: err,\n });\n })\n );\n };\n}\n\nexport function fetchLatestArtists(categoryId, letter, page) {\n return (dispatch) =>\n new Promise((resolve, reject) => {\n fetch(\n `${conditionallyGetCdnApi()}artists/${categoryId}/latests/${letter}/letters/${page}`,\n {\n method: \"GET\",\n }\n )\n .then((res) => res.json())\n .then((res) => {\n resolve(res);\n dispatch({\n type: \"FETCH_LATEST_ARTISTS_SUCCESS\",\n payload: res,\n });\n })\n .catch((err) => {\n reject(err);\n dispatch({\n type: \"FETCH_LATEST_ARTISTS_FAILURE\",\n payload: err,\n });\n });\n });\n}\n\nexport function fetchArtistCount() {\n return fetch(`${conditionallyGetCdnApi()}artists`, {\n method: \"GET\",\n // mode: 'CORS',\n })\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function fetchLetters() {\n return (dispatch) =>\n new Promise((resolve, reject) => {\n fetch(`${conditionallyGetCdnApi()}artist/letters`, {\n method: \"GET\",\n })\n .then((res) => res.json())\n .then((response) => {\n resolve(response);\n dispatch({\n type: \"FETCH_LETTERS_SUCCESS\",\n payload: response,\n });\n })\n .catch((err) => {\n reject(err);\n dispatch({\n type: \"FETCH_LETTERS_FAILURE\",\n payload: err,\n });\n });\n });\n}\n\nexport function fetchArtistStatementList(data) {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return (dispatch) =>\n fetch(`${API}api-artist/account/statement`, {\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 .then((response) => {\n dispatch({\n type: \"ADD_ARTIST_DETAILS\",\n payload: response.artist_details,\n });\n if (response.artistEarningsArray) {\n dispatch({\n type: \"ADD_ARTIST_EARNINGS_ARRAY\",\n payload: response.artistEarningsArray,\n });\n }\n return response;\n })\n .catch((err) => err);\n}\n\nexport function fetchPortfolioList(data) {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return (dispatch) =>\n fetch(`${API}api-artist/account/portfolio`, {\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 .then((response) => {\n dispatch({\n type: \"ADD_ARTIST_DETAILS\",\n payload: response.artist_details,\n });\n return response;\n })\n .catch((err) => err);\n}\n\nexport function fetchEarnigsList() {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return (dispatch) =>\n fetch(`${API}api-artist/account/artist-earnings`, {\n method: \"POST\",\n body: JSON.stringify({\n token: authToken,\n }),\n headers: {\n \"Content-Type\": \"application/json\",\n token: authToken || null,\n },\n })\n .then((res) => res.json())\n .then((response) => {\n dispatch({\n type: \"ADD_ARTIST_DETAILS\",\n payload: response.artist_details,\n });\n return response;\n })\n .catch((err) => err);\n}\n\nexport function fetchArtistAccount() {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return (dispatch) =>\n fetch(`${API}api-artist/account`, {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Auth-Token\": authToken || null,\n },\n })\n .then((res) => res.json())\n .then((response) => {\n dispatch({\n type: \"ADD_ARTIST_DETAILS\",\n payload: response.artist_details,\n });\n return response;\n })\n .catch((err) => err);\n}\n\nexport function fetchArtistSubmissions() {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return (dispatch) =>\n fetch(`${API}api-artist/account/submissions`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n token: authToken || null,\n },\n body: JSON.stringify({\n token: authToken,\n }),\n })\n .then((res) => res.json())\n .then((response) => {\n dispatch({\n type: \"ADD_ARTIST_DETAILS\",\n payload: response.artist_details,\n });\n return response;\n })\n .catch((err) => err);\n}\n\nexport function fetchSubscriptionUsageReport(statementID) {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return () =>\n fetch(\n `${API}api-artist/account/statement/subscription-usage-report/${statementID}`,\n {\n method: \"GET\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-Auth-Token\": authToken || null,\n },\n }\n )\n .then((res) => res.json())\n .catch((err) => err);\n}\n\nexport function updateArtistAccount(data) {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return () =>\n fetch(`${API}api-artist/account`, {\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 updatePaypalEmail(paypalEmail) {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return () =>\n fetch(`${API}api-update-paypal-email`, {\n method: \"POST\",\n body: JSON.stringify({\n token: authToken,\n paypal_email: paypalEmail,\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 requestPayment() {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return () =>\n fetch(`${API}api-artist/request-payment`, {\n method: \"PUT\",\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 getLatestStatement() {\n const authToken = sessionStorage.getItem(\"auth_token\");\n return () =>\n fetch(`${API}api-artist/account/statement`, {\n method: \"POST\",\n body: JSON.stringify({\n token: authToken,\n page: 1, // Get first page to get latest entries\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 getPaymentDetails(artistEarningReportId = null) {\n const authToken = sessionStorage.getItem(\"auth_token\");\n const url = artistEarningReportId\n ? `${API}api-artist/request-payment?artistEarningReportId=${artistEarningReportId}`\n : `${API}api-artist/request-payment`;\n\n return () =>\n fetch(url, {\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","export function getPageTitle(title, fallback, type) {\n let separator = \"•\";\n let start = fallback;\n let middle = \"\";\n let end = \"Music Vine\";\n\n if (title && title !== \"\") {\n return title;\n }\n\n if (fallback === undefined || fallback === \"\") {\n return \"\";\n }\n\n switch (type) {\n case 'artist':\n middle = 'Production Music Licensing';\n break;\n case 'collection':\n middle = 'Music For Video';\n break;\n case 'style':\n case 'track':\n middle = 'Music Licensing';\n break;\n case 'general':\n middle = 'Music Licensing';\n break;\n default:\n middle = 'Music Licensing For Video And Film';\n }\n\n return `${start} ${separator} ${middle} ${separator} ${end}`;\n}\n\nexport function getPageDesc(desc, fallback, type) {\n let metaDesc = \"\";\n\n if (desc && desc !== \"\") {\n return desc;\n }\n\n if (fallback === undefined || fallback === \"\") {\n return \"\";\n }\n\n switch (type) {\n case 'collection':\n if (fallback && fallback.desc && fallback.name) {\n metaDesc = `${fallback.desc} Explore '${fallback.name}' on Music Vine.`;\n } else if (fallback && fallback.name) {\n metaDesc = `Browse and license tracks from the ${fallback.name} collection — production music for film, TV and video from Music Vine.`;\n }\n break;\n case 'style':\n if (fallback && fallback.name) {\n metaDesc = `Browse and license ${fallback.name} music for film, TV and video productions — production music from Music Vine's world-class catalog.`;\n }\n break;\n case 'artist':\n if (fallback && fallback.name) {\n metaDesc = `License music from ${fallback.name} on Music Vine — production music for film, TV and video from world-class artists and composers.`;\n }\n break;\n case 'track':\n if (fallback && fallback.name) {\n metaDesc = `License ${fallback.name} on Music Vine — production music for film, TV and video.`;\n }\n break;\n case 'general':\n if (fallback.subtitle) {\n metaDesc = `${fallback.name}. ${fallback.subtitle}`;\n } else {\n metaDesc = fallback.name;\n }\n break;\n default:\n metaDesc = '';\n }\n\n return metaDesc;\n}\n\n// Canonical URLs always point at the production origin (never staging/preview),\n// and drop any query string / hash so faceted variants fold to the base path.\nexport function getCanonicalUrl(path) {\n const origin = \"https://musicvine.com\";\n if (!path || path === \"\") {\n return `${origin}/`;\n }\n let clean = path.split(\"?\")[0].split(\"#\")[0];\n if (clean.charAt(0) !== \"/\") {\n clean = `/${clean}`;\n }\n if (clean.length > 1) {\n clean = clean.replace(/\\/+$/, \"\");\n }\n return `${origin}${clean}`;\n}\n\nexport function getTrackPageTitle(trackName, artistName) {\n let pageTitle = \"\";\n if (trackName && artistName) {\n pageTitle = `${trackName} by ${artistName} • Music Licensing • Music Vine`;\n }\n return pageTitle;\n}\n\nexport function getGeneralPageTitle(start, middle, fallback, is404) {\n let pageTitle = \"\";\n\n if (is404) {\n return \"Page not found • Music Vine\";\n }\n\n if (start) {\n pageTitle = start;\n }\n if (middle) {\n pageTitle += ` • ${middle}`\n }\n if (pageTitle === \"\") {\n if (fallback && fallback !== \"\") {\n pageTitle = `${fallback} • Music Licensing`;\n } else {\n return \"\";\n }\n }\n\n pageTitle += \" • Music Vine\";\n\n return pageTitle;\n}\n\nexport function getTrackPageDesc(data) {\n let metaDesc = \"\";\n\n let styles = getTags(data.styles, 2);\n let moods = getTags(data.moods, 2, styles);\n\n // Listen to this [Mood 1] and [Mood 2] track from [Artist] that's perfect for [Style 1] and [Style 2] productions. License [Track Name] now.\n \n metaDesc = `Listen to this ${moods[0]} and ${moods[1]} track from ${data.artist} that's perfect for ${styles[0]} and ${styles[1]} productions. License ${data.track} now.`;\n\n // If any tag/field came back undefined, fall back to a simpler description\n // rather than shipping an empty meta description.\n if (metaDesc.includes(\"undefined\")) {\n if (data.track && data.artist) {\n metaDesc = `License '${data.track}' by ${data.artist} on Music Vine — production music for film, TV and video.`;\n } else {\n metaDesc = \"\";\n }\n }\n\n return metaDesc;\n}\n\nfunction getTags(allTags, max, checkPrev){\n let tags = [];\n let newTag = false;\n\n for (var tag in allTags) {\n for (var subtag in allTags[tag]) {\n newTag = allTags[tag][subtag][0];\n\n if (checkPrev) {\n if (!checkPrev.includes(newTag)) {\n tags.push(newTag);\n }\n } else {\n tags.push(newTag);\n }\n\n if (tags.length >= max) {\n break;\n }\n }\n\n if (tags.length >= max) {\n break;\n }\n }\n\n return tags;\n}","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 Facebook extends React.Component {\n render() {\n const assetFacebook = `\n`;\n return (\n \n );\n }\n}\n\nexport default Facebook;\n","import React from \"react\";\nimport InlineSVG from 'svg-inline-react';\n\nclass Email extends React.Component {\n render() {\n const assetEmail = ``;\n return (\n \n );\n }\n}\n\nexport default Email;\n"],"sourceRoot":""}