{"version":3,"sources":["webpack:///./src/services/Tutorials/GetTutorialList.js","webpack:///./src/services/Contents/GetContentsList.js","webpack:///./src/services/Revenue/GetRevenueWidget.js","webpack:///./src/services/Contents/GetContentsClaimStatusList.js","webpack:///./src/services/Contents/GetContentsClaimStatusOverview.js","webpack:///./src/views/VVVNew/VVVDashboardNew.vue","webpack:///./src/views/VVVNew/VVVDashboardNew.vue?1697","webpack:///./src/helpers/youtubeScraper.js","webpack:///./src/assets/user-default.png","webpack:///./src/assets/VVV/vvv-loader.png","webpack:///./src/views/VVVNew/VVVDashboardNew.vue?85a0"],"names":["GetVideoTutorialList","async","pageNumber","data","HttpClient","get","params","Promise","resolve","err","reject","GetContentsList","searchString","userId","claimStatus","sortColumn","rowsPerPage","assetLabel","sortOrder","undefined","GetRevenueWidgets","url","currentDashboard","isVVV","endpointUrl","GetContentsClaimStatusList","GetContentsClaimStatusOverview","loading","ref","issueList","id","name","icon","color","badgeColor","message","response","userDetailStore","useUserDetailStore","userDetail","isUser","isAdmin","isSuperAdmin","storeToRefs","isAdminOrSuperAdmin","computed","value","tableHeaders","commonHeaders","userSpecificHeader","slice","length","router","useRouter","toClaimsList","push","toTutorials","isLoading","contentsList","contentsListPagination","totalRevenue","revenueLastMonth","latestTutorial","isWidgetLoading","claimStatusOverview","onMounted","useTitle","loadBreakdown","fetchContentsList","getTotalRevenue","getRevenueLastMonth","getClaimStatusOverview","getVideoTutorialList","contentRes","pagination","error","console","getCount","item","find","counter","formatNumberWithCommas","count","number","toString","replace","activeClaimsCount","activeClaim","isDeleted","pendingClaims","claim","status","approvalRatePercentage","getYoutubeVideoIframe","videoLink","videoId","extractVideoId","expose","googleSheetAlert","useStorage","revenueAlert","useEventListener","window","__exports__","apiKey","isYouTubeUrl","youtubePattern","test","urlObj","URL","hostname","toLowerCase","pathname","substring","searchParams","videoIdPattern","match","fetchVideoDetails","videoUrl","axios","videoDetails","items","title","snippet","channelTitle","channelId","thumbnailUrl","thumbnails","high","thumbnailWidth","width","duration","convertYTVideoDuration","contentDetails","viewCount","formatCount","statistics","fetchChannelDetails","channelDetails","thumbnail","default","subscriberCount","toFixed","hours","minutes","seconds","hoursMatch","minutesMatch","secondsMatch","parseInt","pad","num","padStart","formattedDuration","fetchChannelIdFromUrl","youtubeChannelUrl","channel","fetchChannelDetailsDirectly","channelData","channelName","channelUsername","customUrl","fetchChannelDetailsBatch","channelIds","join","map","module","exports"],"mappings":"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","file":"js/chunk-2f86898a.8b41b632.js","sourcesContent":["import { HttpClient } from \"../HttpClient\";\r\n\r\nexport const GetVideoTutorialList = async (pageNumber = 1) => {\r\n try {\r\n const { data } = await HttpClient.get(`api/Tutorials/List`, {\r\n params: { pageNumber },\r\n });\r\n return await Promise.resolve(data);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n};\r\n","import { HttpClient } from \"../HttpClient\";\r\n/**\r\n * * Get Contents\r\n */\r\nexport const GetContentsList = async ({\r\n searchString,\r\n userId,\r\n claimStatus,\r\n sortColumn = \"id\",\r\n pageNumber = 1,\r\n rowsPerPage,\r\n assetLabel,\r\n}) => {\r\n try {\r\n const { data } = await HttpClient.get(\"api/contents/list\", {\r\n params: {\r\n ...(userId && { userId }),\r\n pageNumber,\r\n rowsPerPage,\r\n assetLabel,\r\n sortOrder: \"desc\",\r\n ...(claimStatus !== undefined ? { claimStatus } : {}),\r\n ...(searchString && { searchString }),\r\n ...(sortColumn && { sortColumn }),\r\n },\r\n });\r\n return data;\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n};\r\n","import { HttpClient } from \"../HttpClient\";\r\nimport { isVVV } from \"@/helpers/siteIdentifier\";\r\n/**\r\n * * Get Revenue Widgets\r\n */\r\nexport const GetRevenueWidgets = async (url, userId) => {\r\n try {\r\n const currentDashboard = isVVV() ? 3 : 2;\r\n const endpointUrl = userId\r\n ? `api/revenues/${url}?userId=${userId}¤tDashboard=${currentDashboard}&isImpersonation=true`\r\n : `api/revenues/${url}?currentDashboard=${currentDashboard}`;\r\n const { data } = await HttpClient.get(endpointUrl);\r\n return await Promise.resolve(data);\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n};\r\n","import { HttpClient } from \"../HttpClient\";\r\n/**\r\n * * Get Contents Claim Status List\r\n */\r\nexport const GetContentsClaimStatusList = async () => {\r\n try {\r\n const { data } = await HttpClient.get(\"api/contents/ClaimStatusList\");\r\n return data;\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n};\r\n","import { HttpClient } from \"../HttpClient\";\r\n/**\r\n * * Get Contents Claim Status Overview\r\n */\r\nexport const GetContentsClaimStatusOverview = async () => {\r\n try {\r\n const { data } = await HttpClient.get(\"api/contents/ClaimStatusOverview\");\r\n return data;\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n};\r\n","\r\n\r\n\r\n\r\n\r\n","import script from \"./VVVDashboardNew.vue?vue&type=script&setup=true&lang=js\"\nexport * from \"./VVVDashboardNew.vue?vue&type=script&setup=true&lang=js\"\n\nimport \"./VVVDashboardNew.vue?vue&type=style&index=0&id=738d0e0f&scoped=true&lang=css\"\n\nimport exportComponent from \"D:\\\\a\\\\1\\\\s\\\\CSD.SPA\\\\ClientApp\\\\node_modules\\\\vue-loader-v16\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['__scopeId',\"data-v-738d0e0f\"]])\n\nexport default __exports__","import axios from \"axios\";\r\n\r\nconst apiKey = \"AIzaSyAHfRRvUqf-L2nT4nFFRVc1OyneC4D3-nE\"; // To be moved to environment variable\r\n\r\nexport const isYouTubeUrl = (url) => {\r\n const youtubePattern = /^(https?:\\/\\/)?(www\\.)?(youtube\\.com|youtu\\.be)\\/.+$/;\r\n return youtubePattern.test(url);\r\n};\r\n\r\nexport const extractVideoId = (url) => {\r\n try {\r\n const urlObj = new URL(url);\r\n const hostname = urlObj.hostname.toLowerCase();\r\n\r\n if (hostname === \"youtu.be\") {\r\n return urlObj.pathname.substring(1);\r\n }\r\n\r\n if (hostname === \"youtube.com\" || hostname === \"www.youtube.com\") {\r\n const videoId = urlObj.searchParams.get(\"v\");\r\n if (videoId) return videoId;\r\n }\r\n } catch (error) {\r\n const videoIdPattern =\r\n // eslint-disable-next-line no-useless-escape\r\n /(?:https?:\\/\\/)?(?:www\\.)?(?:youtube\\.com\\/(?:[^\\/\\n\\s]+\\/\\S+\\/|(?:v|e(?:mbed)?)\\/|\\S*?[?&]v=)|youtu\\.be\\/)([a-zA-Z0-9_-]{11})/;\r\n const match = url.match(videoIdPattern);\r\n return match ? match[1] : null;\r\n }\r\n\r\n // Return null if no method succeeds\r\n return null;\r\n};\r\n\r\nexport const fetchVideoDetails = async (videoUrl) => {\r\n if (!isYouTubeUrl(videoUrl)) {\r\n console.error(\"Invalid YouTube URL\");\r\n return;\r\n }\r\n const videoId = extractVideoId(videoUrl);\r\n if (!videoId) {\r\n console.error(\"Invalid YouTube URL\");\r\n return false;\r\n }\r\n const url = `https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics&id=${videoId}&key=${apiKey}`;\r\n\r\n try {\r\n const response = await axios.get(url);\r\n const videoDetails = response.data.items[0];\r\n\r\n const title = videoDetails.snippet.title;\r\n const channelTitle = videoDetails.snippet.channelTitle;\r\n const channelId = videoDetails.snippet.channelId;\r\n const thumbnailUrl = videoDetails.snippet.thumbnails.high.url;\r\n const thumbnailWidth = videoDetails.snippet.thumbnails.high.width;\r\n const duration = convertYTVideoDuration(\r\n videoDetails.contentDetails.duration\r\n );\r\n const viewCount = formatCount(videoDetails.statistics.viewCount);\r\n\r\n return await Promise.resolve({\r\n videoId,\r\n title,\r\n channelTitle,\r\n channelId,\r\n thumbnailUrl,\r\n thumbnailWidth,\r\n duration,\r\n viewCount,\r\n });\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n};\r\n\r\nexport const fetchChannelDetails = async (channelId) => {\r\n const url = `https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=${channelId}&key=${apiKey}`;\r\n\r\n try {\r\n const response = await axios.get(url);\r\n const channelDetails = response.data.items[0];\r\n const id = channelDetails.id;\r\n const title = channelDetails.snippet.title;\r\n const thumbnail = channelDetails.snippet.thumbnails.default.url;\r\n const subscriberCount = formatCount(\r\n channelDetails.statistics.subscriberCount\r\n );\r\n\r\n return await Promise.resolve({\r\n id,\r\n title,\r\n thumbnail,\r\n subscriberCount,\r\n });\r\n } catch (err) {\r\n return Promise.reject(err);\r\n }\r\n};\r\n\r\nconst formatCount = (subscriberCount) => {\r\n if (subscriberCount >= 1000000) {\r\n return (subscriberCount / 1000000).toFixed(1) + \"M\";\r\n } else if (subscriberCount >= 1000) {\r\n return (subscriberCount / 1000).toFixed(1) + \"K\";\r\n } else {\r\n return subscriberCount.toString();\r\n }\r\n};\r\n\r\nconst convertYTVideoDuration = (duration) => {\r\n let hours = 0,\r\n minutes = 0,\r\n seconds = 0;\r\n\r\n const hoursMatch = duration.match(/(\\d+)H/);\r\n const minutesMatch = duration.match(/(\\d+)M/);\r\n const secondsMatch = duration.match(/(\\d+)S/);\r\n\r\n if (hoursMatch) hours = parseInt(hoursMatch[1]);\r\n if (minutesMatch) minutes = parseInt(minutesMatch[1]);\r\n if (secondsMatch) seconds = parseInt(secondsMatch[1]);\r\n\r\n const pad = (num) => num.toString().padStart(2, \"0\");\r\n\r\n let formattedDuration;\r\n if (hours > 0) {\r\n formattedDuration = `${pad(hours)}:${pad(minutes)}:${pad(seconds)}`;\r\n } else if (minutes > 0) {\r\n formattedDuration = `${pad(minutes)}:${pad(seconds)}`;\r\n } else {\r\n formattedDuration = `${seconds}`;\r\n }\r\n\r\n return formattedDuration;\r\n};\r\n\r\nexport const fetchChannelIdFromUrl = async (youtubeChannelUrl) => {\r\n const url = `https://www.googleapis.com/youtube/v3/search?part=snippet&q=${youtubeChannelUrl}&type=channel&key=${apiKey}`;\r\n\r\n try {\r\n const response = await axios.get(url);\r\n const channel = response.data.items[0];\r\n\r\n if (channel) {\r\n return channel.id.channelId;\r\n } else {\r\n console.error(\"Channel not found for the provided username.\");\r\n return null;\r\n }\r\n } catch (error) {\r\n console.error(\"Error fetching channel ID:\", error);\r\n return [];\r\n }\r\n};\r\n\r\nexport const fetchChannelDetailsDirectly = async (youtubeChannelUrl) => {\r\n const channelId = await fetchChannelIdFromUrl(youtubeChannelUrl);\r\n\r\n if (!channelId) {\r\n console.error(\"Channel ID could not be found.\");\r\n return null;\r\n }\r\n\r\n const url = `https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=${channelId}&key=${apiKey}`;\r\n\r\n try {\r\n const response = await axios.get(url);\r\n const channelData = response.data.items[0];\r\n\r\n const channelDetails = {\r\n channelId: channelData.id,\r\n channelName: channelData.snippet.title,\r\n thumbnail: channelData.snippet.thumbnails.default.url,\r\n subscriberCount: formatCount(channelData.statistics.subscriberCount),\r\n channelUsername: channelData.snippet.customUrl,\r\n };\r\n\r\n return channelDetails;\r\n } catch (error) {\r\n console.error(\"Error fetching channel details:\", error);\r\n throw error;\r\n }\r\n};\r\n\r\nexport const fetchChannelDetailsBatch = async (channelIds) => {\r\n const url = `https://www.googleapis.com/youtube/v3/channels?part=snippet,statistics&id=${channelIds.join(\r\n \",\"\r\n )}&key=${apiKey}`;\r\n\r\n try {\r\n const response = await axios.get(url);\r\n if (!response.data.items || response.data.items.length === 0) {\r\n return [];\r\n }\r\n return response.data.items.map((channel) => ({\r\n channelId: channel.id,\r\n channelName: channel.snippet.title,\r\n thumbnail: channel.snippet.thumbnails.default.url,\r\n subscriberCount: formatCount(channel.statistics.subscriberCount),\r\n channelUsername: channel.snippet.customUrl,\r\n }));\r\n } catch (error) {\r\n console.error(\"Error in batch fetching channel details:\", error);\r\n return [];\r\n }\r\n};\r\n","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIAAAAyCAYAAAAeP4ixAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoV2luZG93cykiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6QjcyN0JEM0Y1MTRGMTFFNTg4ODhDQjM0RDhDRDk0RDkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6QjcyN0JENDA1MTRGMTFFNTg4ODhDQjM0RDhDRDk0RDkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpCNzI3QkQzRDUxNEYxMUU1ODg4OENCMzREOENEOTREOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpCNzI3QkQzRTUxNEYxMUU1ODg4OENCMzREOENEOTREOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Ps6CkAwAAAUfSURBVHja3Jp5bFVFFManRKFsFRBFSCXsSYms0QRBeYkmLBot+xIQAkGkQEkUJCFpQGkIAYGoZVP+IKQQooFAWUsISwEF/EdWIWIIYUkqCIUWKYRi/Y79Gq639747M/feopzklyZ982bOd2fmzJlzX8qsnFz1f7YvcnP++VtHPSX2TIR9NQF9SVfQGrwIGvLzP8F1cBmcAodBEbj9XxBSDwwDY0EfcBQcBCvAr+B3cJdtG4EWoBPoDKaCfPAj/24CD2pbSH2QBT4GZ8E6MASUJ/nOLXIOFICF7GcQGA8WgWVgVUA/nmazRwaC01xC74MBYKPN4PzORvbxHniTfQ+Mc0ZS+cT6g2mgMOL9+jMYTFGyNPeAT8D9KGekBTdnc9AjBhFOK+QYMtYPHDsSIe3AEbAdjACltRBNSzlWAcduG3ZppYN9XFJ5hnsvgw9BlmQx175pqJ3P7+zn/rlqI6QB2AbWGooYy4iU7vp/BfgOzGRY1rWveUaJL2+Ae6ZL60vwG5+Krs3mmZDu89DGcN03s5iZC+Ar0z3yDngbfGgwWEvwmUa79hRsapPBW/RNS0gqp1NC7B2DgUbygNOxcRZC7tCnPPoYKCSLG9M0xPYynL02lqH5FH1MKqQeN+PnFoO0NWxvI0TRt1nuWXELGcbc6YRl/mViDS2FiG9nwNBkQj5guLWxFMP2f4U4MNfSV08hEqt78zS1sWLD9jdCCCmgr028hCR4Nyi37Pwnw6z3dAgh5fQ14SVETs1DITrfZNB2e5hLFK2IaUsNIRncRGHS8J0a7SqYwoS1M/S5hpCOvJ6GsSngWkCbuZZR0W2SsnTwEvJSyA2omJ1KGnHS4zNZSp9GNBvVwaK5V/abBsoiGEBm9VXwLvOixtzY68GVCO8sZSxoRFoOqkPnZfO9Br5liCxwPaiVTMOPg71RlYLcQkr59G4afL8R79UfgVauBFKiyjGWg9qzuPC8a6ntArkMFKbW2FFq+pcQOdBeMBCSQUf8cqaEM8771MSk2JAJ5oDFhkLE1z+8NvsFFs90rAFDbZuIluUi3ixNrCMvfjWEnAevaHYywSLbDbIFhnU28fWclxAp9/TV7GR4DJUTqRV3NWifoM81hBQxEUvV6KRnTGWg3prtxMfXnSmVU8htJmKDAjppyoihYpoVHctkRCzxu4/kc/0ns1YqPmtpsEfzk12sNnMTdY/wJmhiOstafOvizrbdQqRgvATMCzmYrelcfyXpXKpcxW2vcLeK0WOAT0d1YxRSGfC5vAnoxlQnsBwkSrNVVWn/OY/PJeTtiEFEacDpXp2rzVAerxr8DiBJPQ4w+XPbQ0aNLJWkqGxgj1RVTbib81zwsDU8Inb6pQd+NoMpS45PBWQ1T3dJ1Zfzxlah6fx1zmo2+xgFLiVpn0Nfputkv267x4xV3k9IuTLP59q6m4g9C17mJS3Ncd48ZB83eScpMZgxETtJJanE69xHqm98e3kQBlXmxeGLJAqTCDWePlwNyjyDTJzqw33xPZ903JbGsTI5duCD0c02i9lhCS9B/WIU0Y9j3OKYWoU/k7T5Pm+C2QyDWwIyAFPrzj5XclNPUZpvdE2FOENzF4ZKCYWFjDo2qUt9freQfR1m37vD3NlNTEqWy3hoSgV/IvhGVf2EQ2L9L+rxTzjKHHds5084EkzFpRCxTj2hn3A4CwgbSFM6J+taXpO1o+PVJZu7FHaRQuUcGm0YimMT4jRxaCupdUuprKxUT4P9LcAA5gMa3Nc5o/wAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"img/vvv-loader.6f59db4a.png\";","export * from \"-!../../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../../node_modules/vue-loader-v16/dist/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../../node_modules/vue-loader-v16/dist/index.js??ref--1-1!./VVVDashboardNew.vue?vue&type=style&index=0&id=738d0e0f&scoped=true&lang=css\""],"sourceRoot":""}