{"version":3,"sources":["config/local.mjs","config/development.mjs","config/demo.mjs","config/production.mjs","config/atomy.mjs","config/kbDevelopment.mjs","config/kbStage.mjs","config/kbProduction.mjs","config/kpopFactoryProduction.mjs","config/config.mjs","Error.js","SharedVideoDetail.js","EmbedPlayer.js","SharingSns.js","App.js","serviceWorker.js","index.js"],"names":["development","host","api","domain","playerEndpoint","deployDestination","profile","demo","production","atomy","cdnEndpoint","kbDevelopment","kbStage","kbProduction","kpopFactoryProduction","getConfig","stage","local","_getConfig","process","trim","Error","props","state","message","environment","loadash","isEmpty","error","this","t","i18n","id","className","src","alt","Fragment","Component","withTranslation","SharedVideoDetail","componentDidMount","a","setInitialState","latestPlaybackTime","playerThemeSetting","configuration","showsControlBar","controlBar","progressControl","playToggle","fullscreenToggle","pictureInPictureToggle","cloudplexSettingsButton","menu","title","defaultOptions","closeButton","items","bigControlPanelOptions","replay","gesture","sectionCrossButton","controls","hotkey","custom","left","right","space","k","player","window","CloudPlexPlayer","crossOrigin","theme","muted","autoplay","allowsContinuesPlaying","getLatestPlaybackTime","console","log","on","localStorage","setItem","currentTime","reset","ready","paused","BigControlPanelPlugin","bigControlPanel","controlPannel","playButton","volume","captions","forEach","c","captionTrack","label","kind","language","url","isPreferred","mode","addTextTrack","playUrl","type","mimeType","thumbnail","thumbnailUrl","meta","videoId","descriptionDetail","name","content","description","subTitle","subtitle","poster","status","setState","deparam","search","length","indexOf","slice","params","split","result","p","param","current","moment","utc","startAt","lodash","createdAt","startPlaybackTime","diff","getUrlFromUrls","urls","Array","isArray","getConfiguration","debug","configurationId","Axios","get","response","data","includes","startDiff","undefined","endDiff","endAt","format","getVideoAsync","projectId","children","headers","video","playVideoMediaFormat","downloadUrl","sources","source","toLowerCase","origins","origin","originalUrls","reduce","acc","elements","concat","primaryPoster","jobId","job","duration","categories","attributions","tags","people","metadatas","metadataSchemas","project","convertPublishingPeriodToString","toLocalTime","date","formatDuration","milliseconds","timeFormat","download","filename","downloading","Downloader","timeout","autoStart","event","Math","floor","loaded","total","render","allowsFullscreen","allowsDownloading","style","width","height","data-tooltip","disabled","onClick","e","map","v","join","i","key","value","accessUrl","fields","f","videoUrl","downloadUrlForDisplay","fullscreen","location","connect","EmbedPlayer","prev","link","getVideo","videoSource","mediaFormat","JSON","stringify","pending","match","SharingSns","fbAsyncInit","FB","init","appId","cookie","xfbml","version","d","s","js","fjs","getElementsByTagName","getElementById","createElement","parentNode","insertBefore","document","Kakao","onClickSyndication","onClickShanringFacebook","ui","display","method","href","onFbPopup","onFbPopupResponse","testAPI","getLoginStatus","statusChangeCallback","bind","App","path","exact","component","Boolean","hostname","middleware","composeWithDevTools","applyMiddleware","thunk","store","createStore","ReactDOM","StrictMode","basename","navigator","serviceWorker","then","registration","unregister","catch"],"mappings":"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","file":"static/js/main.6ca70b1d.chunk.js","sourcesContent":["const development = {\r\n host: {\r\n api: \"https://sx7bqjcob9.execute-api.ap-northeast-2.amazonaws.com/dev\"\r\n // api: \"https://1iendvrgl5.execute-api.ap-northeast-2.amazonaws.com/sm\" //sm\r\n // api: \"https://q6m7cv6mk8.execute-api.ap-northeast-2.amazonaws.com/blossomme\" // blossomme\r\n }\r\n};\r\n\r\nexport default development;","const development = {\r\n domain :'https://console.media.megazone.com',\r\n host: { \r\n api :\"https://sx7bqjcob9.execute-api.ap-northeast-2.amazonaws.com/dev\"\r\n // api:\"https://mq2zyc5ewh.execute-api.ap-southeast-1.amazonaws.com/atomy-sg\"\r\n },\r\n playerEndpoint: \"http://mzc-cm-dev-players.s3-website.ap-northeast-2.amazonaws.com/\",\r\n deployDestination: \"s3://mzc-cm-dev-shared-videos\",\r\n profile: \"development\"\r\n};\r\n\r\nexport default development;\r\n","const demo = {\r\n host: {\r\n api: \"https://f62hq43ybi.execute-api.ap-northeast-2.amazonaws.com/demo\"\r\n },\r\n playerEndpoint: \"http://mzc-cm-demo-players.s3-website.ap-northeast-2.amazonaws.com/\",\r\n deployDestination: \"s3://mzc-cm-demo-shared-videos\",\r\n profile: \"mzc-media-demo\"\r\n};\r\n\r\nexport default demo;","const production = {\r\n host: {\r\n api: \"https://api.cloudplex.megazone.io\" \r\n }\r\n};\r\n\r\nexport default production;","const atomy = {\r\n host: { \r\n api :\"https://mq2zyc5ewh.execute-api.ap-southeast-1.amazonaws.com/atomy-sg\"\r\n },\r\n cdnEndpoint: \"https://d2j9cuvjyuu4c0.cloudfront.net/\",\r\n playerEndpoint: \"https://d2moldzjnrveq2.cloudfront.net/\",\r\n deployDestination: \"s3://mzc-cm-atomy-sg-shared-videos\",\r\n \r\n profile: \"mzc-media-atomy-prod\"\r\n};\r\n\r\nexport default atomy;\r\n","const kbDevelopment = {\r\n host: { \r\n api :\"https://gc9l7k0v9h.execute-api.ap-northeast-2.amazonaws.com/kb-dev\"\r\n },\r\n playerEndpoint: \"http://kb-cpm-dev-players.s3-website.ap-northeast-2.amazonaws.com/\",\r\n deployDestination: \"s3://kb-cpm-dev-shared-videos\",\r\n profile: \"mzc-media-kb-dev\"\r\n};\r\n\r\nexport default kbDevelopment;\r\n","const kbStage = {\r\n host: { \r\n api :\"https://9vuvwj1tc3.execute-api.ap-northeast-2.amazonaws.com/kb-stg\"\r\n },\r\n playerEndpoint: \"http://kb-cpm-stg-players.s3-website.ap-northeast-2.amazonaws.com/\",\r\n deployDestination: \"s3://kb-cpm-stg-shared-videos\",\r\n profile: \"mzc-media-kb-stg\"\r\n};\r\n\r\nexport default kbStage;\r\n","const kbProduction = {\r\n host: { \r\n api :\"https://bqx42rg2ig.execute-api.ap-northeast-2.amazonaws.com/kb-prod\"\r\n },\r\n playerEndpoint: \"http://kb-cpm-prd-players.s3-website.ap-northeast-2.amazonaws.com/\",\r\n deployDestination: \"s3://kb-cpm-prd-shared-videos\",\r\n profile: \"mzc-media-kb-prd\"\r\n};\r\n\r\nexport default kbProduction;\r\n","const kpopFactoryProduction = {\r\n host: { \r\n api :\"https://b6y0tmpp0c.execute-api.ap-northeast-2.amazonaws.com/kp-factory\"\r\n },\r\n //cdnEndpoint: \"https://zvod.kbstar.com/shared/\",\r\n playerEndpoint: \"http://mzc-cm-kp-factory-players.s3-website.ap-northeast-2.amazonaws.com/\",\r\n deployDestination: \"s3://mzc-cm-kp-factory-shared-videos\",\r\n profile: \"kpop-factory\"\r\n};\r\n\r\nexport default kpopFactoryProduction;\r\n","import local from './local.mjs';\r\nimport development from \"./development.mjs\";\r\nimport demo from \"./demo.mjs\";\r\nimport production from \"./production.mjs\";\r\nimport atomy from \"./atomy.mjs\";\r\nimport kbDevelopment from \"./kbDevelopment.mjs\";\r\nimport kbStage from \"./kbStage.mjs\";\r\nimport kbProduction from \"./kbProduction.mjs\";\r\nimport kpopFactoryProduction from \"./kpopFactoryProduction.mjs\";\r\n\r\nfunction getEnvironment() {\r\n const environment = process.env.REACT_APP_NOT_SECRET_CODE;\r\n if(!environment)\r\n return environment;\r\n return environment.trim();\r\n}\r\n\r\nfunction _getConfig(stage) {\r\n switch(stage) {\r\n case \"production\" :\r\n return production;\r\n case \"demo\" :\r\n return demo;\r\n case \"development\" :\r\n return development;\r\n case \"atomy\" :\r\n return atomy;\r\n case \"kb_development\" :\r\n return kbDevelopment;\r\n case \"kb_stage\" :\r\n return kbStage;\r\n case \"kb_production\" :\r\n return kbProduction;\r\n case \"kpop_factory_production\":\r\n return kpopFactoryProduction;\r\n\r\n }\r\n\r\n return local;\r\n};\r\n\r\nfunction getConfig(stage) {\r\n const targetStage = stage ? stage : getEnvironment();\r\n return _getConfig(targetStage);\r\n};\r\n\r\nexport default getConfig;","import React, {Component} from 'react';\r\nimport { withTranslation } from 'react-i18next';\r\nimport loadash from 'lodash';\r\n// import {bindActionCreators} from \"redux\";\r\n// import {connect} from 'react-redux';\r\n// import * as globalActions from '../../modules/global';\r\n\r\nclass Error extends Component {\r\n constructor (props) {\r\n super (props);\r\n this.state ={\r\n message:'The video may not have a video ID or the video may be inactive.'\r\n };\r\n\r\n this.state.environment = process.env.REACT_APP_NOT_SECRET_CODE;\r\n\r\n if(!loadash.isEmpty(props.error.message))\r\n this.state.message = props.error.message; \r\n }\r\n\r\n componentWillUnmount() {\r\n // const {\r\n // GlobalActions\r\n // } = this.props;\r\n\r\n // GlobalActions.resetErrorStatus();\r\n }\r\n\r\n render() {\r\n const { t, i18n } = this.props;\r\n\r\n return(\r\n
\r\n
\r\n {this.state.environment === 'atomy' ? \r\n
\r\n \"\"/\r\n
\r\n :\r\n \r\n
\r\n \"\"/\r\n
\r\n
\r\n The video cannot be verified.\r\n

{this.state.message}
Please check and try again.

\r\n
\r\n
\r\n }\r\n
\r\n
\r\n )\r\n }\r\n}\r\n\r\n// const mapStateToProps = (state) => {\r\n// return {\r\n// global: state.global\r\n// }\r\n// };\r\n\r\n// const mapDispatchToProps = (dispatch) => {\r\n// return {\r\n// GlobalActions: bindActionCreators(globalActions, dispatch)\r\n// };\r\n// };\r\n\r\n// Error = connect(mapStateToProps, mapDispatchToProps)(Error);\r\nexport default withTranslation()(Error);","import React, {Component} from 'react';\r\nimport Axios from 'axios';\r\nimport connect from \"react-redux/es/connect/connect\";\r\nimport moment from \"moment\";\r\nimport getConfig from \"./config/config\";\r\nimport Error from \"./Error\";\r\nimport Downloader from 'js-file-downloader'\r\nimport lodash from 'lodash';\r\n\r\nconst LATEST_PLAYBACK_TIME_KEY = 'cpm_player_latest_playback_time';\r\n\r\nclass SharedVideoDetail extends Component {\r\n constructor (props) {\r\n super (props);\r\n\r\n this.state = {\r\n name:\"\",\r\n playVideoMediaFormat:\"\",\r\n thumbnailUrl:\"\",\r\n description:\"\",\r\n videoUrl:\"\",\r\n downloadUrl: \"\",\r\n downloadUrlForDisplay: \"\",\r\n playUrl:\"\",\r\n jobId:\"\",\r\n fullscreen: false\r\n };\r\n\r\n this.state.videoId = this.props.location && this.props.location.search && this.deparam(this.props.location.search).v;\r\n this.state.configurationId = this.props.location && this.props.location.search && this.deparam(this.props.location.search).c;\r\n }\r\n\r\n componentDidMount = async () => {\r\n try {\r\n await this.setInitialState();\r\n\r\n let latestPlaybackTime = 0;\r\n let playerThemeSetting = {};\r\n \r\n //타임 라인 보일지 여부\r\n if (this.state.configuration.showsControlBar) {\r\n playerThemeSetting = {\r\n controlBar : {\r\n progressControl: {},\r\n }\r\n };\r\n } else {\r\n playerThemeSetting = {\r\n controlBar : {\r\n playToggle: false,\r\n fullscreenToggle: false,\r\n pictureInPictureToggle: false,\r\n progressControl: false,\r\n cloudplexSettingsButton: {\r\n menu: { title: \"Settings\" },\r\n defaultOptions: [],\r\n closeButton: true,\r\n items: [\r\n \"subsCapsButton\",\r\n //\"playbackRateMenuButton\",\r\n \"qualityLevelButton\",\r\n \"audioTrackButton\",\r\n \"cloudplexChapterButton\",\r\n \"cloudplexDescription\",\r\n ],\r\n }\r\n },\r\n bigControlPanelOptions: {\r\n replay: false,\r\n gesture: false,\r\n sectionCrossButton: false,\r\n controls:false\r\n },\r\n hotkey: {\r\n custom: {\r\n left: null,\r\n right: null,\r\n space: null,\r\n k: null\r\n }\r\n }\r\n };\r\n };\r\n\r\n var player = window.player = window.CloudPlexPlayer('cloudplex-media-player',\r\n {\r\n ...playerThemeSetting,\r\n crossOrigin: 'anonymous',\r\n theme: 'default',\r\n muted: true,\r\n autoplay: true \r\n });\r\n\r\n //이어서 재생할지 여부\r\n if (this.state.configuration.allowsContinuesPlaying) {\r\n latestPlaybackTime = this.getLatestPlaybackTime();\r\n console.log(\"like live latestPlaybackTime: \", latestPlaybackTime);\r\n // if (process.env.REACT_APP_NOT_SECRET_CODE === 'atomy'){\r\n // //생방송 처럼 보이기 (애터미 한정)\r\n // latestPlaybackTime = this.getLatestPlaybackTime();\r\n // console.log(\"like live latestPlaybackTime: \", latestPlaybackTime); \r\n // }\r\n // else {\r\n // //이어보기\r\n // latestPlaybackTime = localStorage.getItem(`${LATEST_PLAYBACK_TIME_KEY}_${this.state.configuration.id}`);\r\n // console.log(\"latestPlaybackTime: \", latestPlaybackTime);\r\n // }\r\n }\r\n\r\n player.on(\"timeupdate\", () => {\r\n localStorage.setItem(`${LATEST_PLAYBACK_TIME_KEY}_${this.state.configuration.id}`, player.currentTime());\r\n });\r\n\r\n player.on(\"ended\", () => {\r\n player.reset();\r\n });\r\n\r\n player.ready(()=>{\r\n player.player.controlBar.playToggle.on(\"click\", () => {\r\n console.log(\"---- play controlBar.playToggle ---- player.paused(): \", player.paused());\r\n if (!player.paused() && this.state.configuration.allowsContinuesPlaying)\r\n player.currentTime(this.getLatestPlaybackTime());\r\n });\r\n \r\n player.player.BigControlPanelPlugin().bigControlPanel.controlPannel.playButton.on(\"click\", () => {\r\n console.log(\"---- play bigControlPanelPlugin---- player.paused(): \", player.paused());\r\n if (!player.paused() && this.state.configuration.allowsContinuesPlaying)\r\n player.currentTime(this.getLatestPlaybackTime());\r\n });\r\n });\r\n\r\n\r\n player.on('loadedmetadata', () => {\r\n player.currentTime(latestPlaybackTime);\r\n player.volume(0.5);\r\n\r\n console.log(\"this.state.captions: \", this.state.captions);\r\n \r\n this.state.captions && this.state.captions.forEach(c => {\r\n let captionTrack = {\r\n id: c.label,\r\n kind: \"subtitles\",\r\n label: c.label,\r\n language: c.language,\r\n src: c.url\r\n };\r\n \r\n console.log(\"captionTrack: \", captionTrack);\r\n \r\n if(c.isPreferred && c.isPreferred === true)\r\n captionTrack.mode = 'showing';\r\n \r\n player.addTextTrack(captionTrack, true);\r\n });\r\n });\r\n\r\n player.src([{\r\n src: this.state.playUrl,\r\n type: this.state.mimeType,\r\n thumbnail: this.state.thumbnailUrl,\r\n meta: {\r\n \"video-id\": this.state.videoId\r\n },\r\n descriptionDetail: {\r\n title: this.state.name,\r\n content: this.state.description,\r\n },\r\n title: this.state.name,\r\n subTitle: this.state.subtitle,\r\n description: this.state.description,\r\n poster: this.state.thumbnailUrl,\r\n }]);\r\n \r\n } catch (e) {\r\n const error = {\r\n status : e.status,\r\n message : e\r\n }\r\n\r\n console.log(\"error : \", e);\r\n\r\n this.setState({\r\n error\r\n });\r\n }\r\n }\r\n\r\n deparam = (search) => {\r\n if(!search || search.trim().length === 0) {\r\n return null;\r\n }\r\n\r\n if(search.indexOf('?') === 0) {\r\n search = search.slice(1);\r\n }\r\n\r\n const params = search.split('&');\r\n if(params.length === 0) {\r\n return null;\r\n }\r\n\r\n const result = {};\r\n params.forEach(p => {\r\n const param = p.split('=');\r\n\r\n result[param[0]] = param[1];\r\n });\r\n\r\n return result;\r\n };\r\n\r\n getLatestPlaybackTime = () => {\r\n const current = moment.utc();\r\n const startAt = !lodash.isEmpty(this.state.configuration.startAt) ? moment.utc(this.state.configuration.startAt) : moment.utc(this.state.configuration.createdAt);\r\n const startPlaybackTime = moment(current).diff(startAt) / 1000;\r\n console.log(\"startPlaybackTime: \", startPlaybackTime);\r\n return startPlaybackTime;\r\n }\r\n\r\n getUrlFromUrls = (urls) => {\r\n return Array.isArray(urls) ? urls.length > 0 && urls[0] : urls;\r\n }\r\n\r\n getConfiguration = async () => {\r\n try {\r\n console.debug(\"getConfiguration configurationId: \", this.state.configurationId);\r\n \r\n if (lodash.isEmpty(this.state.configurationId))\r\n throw \"not found video configuration id.\"\r\n\r\n const response = await Axios.get(`${getConfig().host.api}/videos/${this.state.videoId}/shared/configurations/${this.state.configurationId}?children=full`, {});\r\n\r\n if (lodash.isEmpty(response.data))\r\n throw \"not found video configuration.\";\r\n\r\n const configuration = response.data;\r\n\r\n const allowStatus = ['PUBLISHING', 'PUBLISHED'];\r\n if (!allowStatus.includes(configuration.status))\r\n throw \"not published video.\"\r\n\r\n const current = moment.utc();\r\n const startDiff = lodash.isEmpty(configuration.startAt) ? undefined : moment(current).diff(moment.utc(configuration.startAt));\r\n const endDiff = lodash.isEmpty(configuration.endAt) ? undefined : moment(current).diff(moment.utc(configuration.endAt));\r\n\r\n console.log(\"current: \", current.format('YYYY-MM-DD HH:mm:ss')); \r\n console.log(\"startDiff: \", startDiff);\r\n console.log(\"endDiff: \", endDiff);\r\n\r\n if (startDiff !== undefined && endDiff !== undefined) {\r\n if ((startDiff < 0 && endDiff < 0)\r\n || (startDiff > 0 && endDiff > 0)) {\r\n throw \"It is not a video release period.\"\r\n }\r\n } else if (startDiff === undefined && endDiff !== undefined) {\r\n if (endDiff > 0)\r\n throw \"It is not a video release period.\"\r\n } else if (startDiff !== undefined && endDiff === undefined) {\r\n if (startDiff < 0)\r\n throw \"It is not a video release period.\"\r\n }\r\n return response.data;\r\n\r\n } catch (e) {\r\n console.debug(\"getConfiguration error :\", e);\r\n throw e;\r\n }\r\n }\r\n\r\n getVideoAsync = async (projectId) => {\r\n try {\r\n if (this.state.videoId === undefined) {\r\n throw \"not found video id.\"\r\n }\r\n\r\n const response = await Axios.get(`${getConfig().host.api}/videos/${this.state.videoId}/shared/`, {\r\n params:{\r\n children: \"metadataschemas,posters,captions,sources\"\r\n },\r\n headers:{\r\n \"projectId\":projectId\r\n }\r\n });\r\n\r\n console.log(\"getVideo response: \", response);\r\n\r\n if (!response.data)\r\n return null;\r\n\r\n const video = response.data;\r\n\r\n let playUrl = '';\r\n let playVideoMediaFormat = '';\r\n let downloadUrl = '';\r\n\r\n if(video && video.sources && video.sources.length > 0) {\r\n video.sources.forEach(source => {\r\n // 비디오 소스에 mp4 가 있는지 확인\r\n if (source.type === 'MP4') {\r\n downloadUrl = source.urls && this.getUrlFromUrls(source.urls);\r\n } else {\r\n // MP4가 아닌 것 중에 첫번째거 넣기\r\n if (!playUrl) {\r\n playUrl = source.urls && this.getUrlFromUrls(source.urls);\r\n // playUrl = source.accessUrls && this.getUrlFromUrls(source.accessUrls);\r\n // playUrl = source.originalUrls && this.getUrlFromUrls(source.originalUrls);\r\n playVideoMediaFormat = source.type && source.type.toLowerCase();\r\n }\r\n }\r\n });\r\n }\r\n\r\n // downloadUrl 이 비어 있다면 비디오 소스에 MP4 파일이 없는 것이므로 오리진에서 찾아 봄\r\n if (downloadUrl === '') {\r\n if (video.origins && video.origins.length > 0) {\r\n video.origins.forEach(origin => {\r\n if (origin.type === 'MP4') {\r\n downloadUrl = origin.originalUrls && this.getUrlFromUrls(origin.originalUrls);\r\n }\r\n });\r\n }\r\n }\r\n\r\n let captions = [];\r\n if (video.captions && video.captions.length > 0) {\r\n captions = video.captions.reduce((acc, c) => {\r\n if (c.elements) {\r\n return acc.concat(c.elements);\r\n }\r\n },\r\n []);\r\n }\r\n\r\n return {\r\n id : video.id,\r\n name : video.name,\r\n description : video.description === null || video.description === 'undefined' ? \"\" : video.description,\r\n playVideoMediaFormat,\r\n playUrl,\r\n downloadUrl,\r\n thumbnailUrl : video.primaryPoster && video.primaryPoster.url,\r\n jobId : video.job && video.job.id,\r\n duration : video.duration,\r\n categories: video.categories,\r\n captions,\r\n attributions: video.attributions,\r\n tags: video.tags,\r\n people: video.people,\r\n metadatas: video.metadataSchemas\r\n };\r\n } catch(e) {\r\n console.debug(\"error-feel :\", e);\r\n throw e;\r\n }\r\n }\r\n\r\n setInitialState = async () => {\r\n try {\r\n const configuration = await this.getConfiguration();\r\n\r\n console.log(\"setInitialState configuration: \", configuration);\r\n\r\n const video = await this.getVideoAsync(configuration.project.id);\r\n\r\n console.debug(\"video: \", video);\r\n\r\n let mimeType = '';\r\n switch((video.playVideoMediaFormat || '')) {\r\n case 'hls':\r\n mimeType = 'application/x-mpegURL';\r\n break;\r\n case 'dash':\r\n mimeType = 'application/dash+xml';\r\n break;\r\n case 'mp4':\r\n mimeType = 'video/mp4';\r\n break;\r\n case 'ts':\r\n mimeType = 'video/MP2T';\r\n break;\r\n case 'mp3':\r\n mimeType = 'audio/mp3';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n this.setState( {\r\n ...video,\r\n mimeType,\r\n configuration: {\r\n ...configuration\r\n },\r\n subtitle: this.convertPublishingPeriodToString(configuration.startAt, configuration.endAt)\r\n })\r\n } catch(e) {\r\n throw e;\r\n }\r\n }\r\n\r\n convertPublishingPeriodToString = (startAt, endAt) => {\r\n if (lodash.isEmpty(startAt) && lodash.isEmpty(endAt))\r\n return '모든 기간 시청 가능';\r\n else if (startAt !== undefined && endAt !== undefined)\r\n return `시청 기간: ${this.toLocalTime(startAt)} ~ ${this.toLocalTime(endAt)}`;\r\n }\r\n\r\n toLocalTime = (date) => {\r\n return moment.utc(date).local().format('YYYY-MM-DD HH:mm:ss');\r\n }\r\n\r\n formatDuration = (milliseconds, timeFormat) => {\r\n if(!milliseconds) {\r\n return '00:00:00';\r\n }\r\n\r\n if (!timeFormat) {\r\n timeFormat = 'HH:mm:ss';\r\n }\r\n return moment.utc(milliseconds).format(timeFormat);\r\n };\r\n\r\n download = async (url) => {\r\n console.debug(\"this.state.name: \", this.state.name);\r\n const filename = this.state.name + \".mp4\";\r\n const downloading = new Downloader({\r\n url,\r\n filename,\r\n timeout: 60 * 60 * 1000 ,\r\n autoStart: true,\r\n process: (event) => {\r\n console.debug(\"download percent : \", Math.floor(event.loaded / event.total * 100) );\r\n }\r\n });\r\n\r\n await downloading;\r\n }\r\n\r\n render = () => {\r\n return (\r\n \r\n\r\n
\r\n {this.state.error ?\r\n \r\n :\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {this.state.configuration && !this.state.configuration.allowsFullscreen &&\r\n
\r\n
\r\n
\r\n \r\n

{this.state && this.state.name}

\r\n
\r\n
\r\n {this.state.configuration\r\n && this.state.configuration.allowsDownloading &&\r\n \r\n }\r\n
\r\n
\r\n\r\n
\r\n
\r\n
    \r\n
  • \r\n Duration\r\n
    \r\n {this.formatDuration(this.state && this.state.duration)}\r\n
    \r\n
  • \r\n
  • \r\n Description\r\n
    \r\n {this.state && this.state.description ?\r\n {this.state.description}\r\n :\r\n {\"None\"} }\r\n
    \r\n
  • \r\n
  • \r\n Categories\r\n
    \r\n {this.state.categories && this.state.categories.length > 0 ?\r\n this.state.categories.map(v => v.name).join(\", \")\r\n :\r\n {\"None\"}\r\n }\r\n
    \r\n
  • \r\n
  • \r\n Attributions\r\n
    \r\n {this.state.attributions && this.state.attributions.length > 0 ?\r\n
    \r\n
      \r\n {this.state.attributions.map((a, i) =>\r\n
    • \r\n {a.key} : {a.value}\r\n
    • \r\n )}\r\n
    \r\n
    \r\n :\r\n {'None'}\r\n }\r\n
    \r\n
  • \r\n
  • \r\n Tags\r\n
    \r\n \r\n {this.state.tags && this.state.tags.length > 0 ?\r\n
    \r\n {this.state.tags.map((t, i) =>\r\n \r\n {/* ToDO AI에서 추출된 경우는 class ai 추가 */}\r\n {t.value}\r\n \r\n )}\r\n
    \r\n :\r\n None\r\n }\r\n
    \r\n\r\n
    \r\n
  • \r\n
\r\n
\r\n
    \r\n
  • \r\n People\r\n
    \r\n {this.state.people && this.state.people.length > 0 ?\r\n (\r\n \r\n {this.state.people.map((p, i) =>\r\n
    \r\n
    \r\n \r\n \r\n \r\n {p.name}\r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n :\r\n (None)\r\n }\r\n
    \r\n
  • \r\n
\r\n
\r\n
    \r\n {this.state.metadatas && this.state.metadatas.length > 0 && this.state.metadatas.map((v, i) =>\r\n v.fields && v.fields.map((f, k) =>\r\n
  • \r\n {f.id !== '' ?\r\n \r\n {f.name}\r\n
    \r\n {f.value ? {f.value} : {\"None\"} }\r\n
    \r\n
    \r\n :\r\n \r\n {\r\n f.value === ''\r\n ? \"None\"\r\n : f.value\r\n }\r\n \r\n }\r\n
  • \r\n )\r\n )}\r\n
\r\n
\r\n
\r\n
\r\n }\r\n
\r\n }\r\n
\r\n\r\n
\r\n )\r\n }\r\n}\r\n\r\nlet mapStateToProps = (state) => {\r\n return {\r\n state\r\n };\r\n};\r\n\r\nSharedVideoDetail = connect(mapStateToProps)(SharedVideoDetail);\r\nexport default SharedVideoDetail;","import React, {Component} from 'react';\r\nimport Axios from 'axios';\r\nimport connect from \"react-redux/es/connect/connect\";\r\nimport moment from \"moment\";\r\n\r\n\r\nclass EmbedPlayer extends Component {\r\n constructor (props) {\r\n super (props);\r\n\r\n console.log('props : ', props);\r\n\r\n this.state = {\r\n name:\"\",\r\n mediaFormat:\"\",\r\n thumbnailUrl:\"\",\r\n description:\"\",\r\n videoUrl:\"\",\r\n jobId:\"\"\r\n };\r\n\r\n // this.state.videoId = this.props.match.params.videoId;\r\n this.state.videoId = this.props.match && this.props.match.params && this.props.match.params.id;\r\n\r\n // this.state.videoId= '944912477nG89L';\r\n\r\n // console.log(\"SharedVideoDetail\");\r\n // this.setInitialState();\r\n console.log(\"SharedVideoDetail videoId : \", this.state.videoId);\r\n }\r\n\r\n componentDidMount = async () =>{\r\n console.log(\"SharedVideoDetail componentDidMount \", this.state);\r\n await this.setInitialState();\r\n\r\n // var _function = ('cloudplex-media-player').replace(/^[A-Z]/, function(m) {\r\n // m.toLowerCase();\r\n // });\r\n \r\n var player = window.player = window.CloudPlexPlayer('cloudplex-media-player',\r\n {\r\n\t\t\ttheme: 'default',\t\t\t\t\t\t\r\n\t\t\tmuted: true,\r\n\t\t\tautoplay: true,\t\t\t\t\t\t\t\t\t\t\r\n\t\t});\r\n \r\n \r\n console.log(\"_function: \", player);\r\n\r\n player.src([{\r\n src: this.state.videoUrl,\r\n type: this.state.mimeType,\r\n thumbnail: this.state.thumbnailUrl,\r\n meta: {\r\n \"video-id\": this.state.videoId\r\n },\r\n descriptionDetail: {\r\n title: this.state.name,\r\n content: this.state.description,\r\n },\r\n title: this.state.name,\r\n subTitle: \"\",\r\n description: this.state.description, \r\n poster: this.state.thumbnailUrl,\r\n prev: {\r\n link: \"\"\r\n }\r\n }]);\r\n \r\n // var player = window.player = window[_function]('cloudplex-media-player',\r\n // window.playerOptions);\r\n \r\n\r\n console.log(\"window: \", window);\r\n }\r\n\r\n deparam = (search) => {\r\n if(!search || search.trim().length === 0) {\r\n return null;\r\n }\r\n \r\n if(search.indexOf('?') === 0) {\r\n search = search.slice(1);\r\n }\r\n \r\n const params = search.split('&');\r\n if(params.length === 0) {\r\n return null;\r\n }\r\n \r\n const result = {};\r\n params.forEach(p => {\r\n const param = p.split('=');\r\n \r\n result[param[0]] = param[1];\r\n }); \r\n \r\n return result;\r\n };\r\n\r\n\r\n getVideo = async () => {\r\n try {\r\n console.log(\"getVideo\");\r\n\r\n if (this.state.videoId && this.state.videoId.length === 0) {\r\n return null;\r\n }\r\n\r\n const apiEndPoint = 'https://9kf3tg0nsd.execute-api.ap-northeast-2.amazonaws.com/dev';\r\n\r\n console.log(\"getVideo 1 \");\r\n const response = await Axios.get(`${apiEndPoint}/videos/${this.state.videoId}/social/shared/`, { \r\n });\r\n\r\n console.log(\"getVideo 2\");\r\n const video = response.data;\r\n const videoSource = video.sources && video.sources.length > 0 && video.sources[0];\r\n\r\n return {\r\n id : video.id,\r\n name : video.name,\r\n mediaFormat : videoSource && videoSource.type && videoSource.type.toLowerCase(),\r\n description : video.description === null || video.description === 'undefined' ? \"empty\" : video.description ,\r\n videoUrl : videoSource && videoSource.urls && videoSource.urls.length > 0 && videoSource.urls[0],\r\n thumbnailUrl : video.primaryPoster && video.primaryPoster.url,\r\n jobId : video.job && video.job.id,\r\n duration : video.duration \r\n };\r\n } catch(e) {\r\n throw e;\r\n }\r\n }\r\n \r\n setInitialState = async () => {\r\n try {\r\n const video = await this.getVideo();\r\n\r\n console.log(\"setInitialState() : \", JSON.stringify(video));\r\n\r\n let mimeType = '';\r\n switch((video.mediaFormat || '').toLowerCase()) {\r\n case 'hls':\r\n mimeType = 'application/x-mpegURL';\r\n break;\r\n case 'dash':\r\n mimeType = 'application/dash+xml';\r\n break;\r\n case 'mp4':\r\n mimeType = 'video/mp4';\r\n break;\r\n case 'ts':\r\n mimeType = 'video/MP2T';\r\n break;\r\n case 'mp3':\r\n mimeType = 'audio/mp3';\r\n break;\r\n default:\r\n break;\r\n } \r\n\r\n this.setState( {\r\n name : video.name,\r\n mediaFormat : video.mediaFormat,\r\n mimeType,\r\n description : video.description,\r\n videoUrl : video.videoUrl,\r\n thumbnailUrl : video.thumbnailUrl,\r\n jobId : video.jobId,\r\n duration : video.duration\r\n });\r\n\r\n console.log(\"setInitialState() : \", JSON.stringify(this.state));\r\n\r\n } catch(e) {\r\n this.setState({\r\n pending : false,\r\n error : true\r\n });\r\n }\r\n }\r\n\r\n formatDuration = (milliseconds, timeFormat) => {\r\n console.log(\"formatDuration milliseconds: \", milliseconds)\r\n if(!milliseconds) {\r\n return '00:00:00';\r\n }\r\n \r\n if (!timeFormat) {\r\n timeFormat = 'HH:mm:ss';\r\n }\r\n\r\n const result = moment.utc(milliseconds).format(timeFormat);\r\n \r\n console.log(\"formatDuration result : \", result)\r\n\r\n return moment.utc(milliseconds).format(timeFormat);\r\n };\r\n\r\n render = () => {\r\n return (\r\n
\r\n
\r\n\t\t\t \r\n\t\t
\r\n
\r\n )\r\n }\r\n}\r\n\r\nlet mapStateToProps = (state) => {\r\n return {\r\n state \r\n };\r\n};\r\n\r\nEmbedPlayer = connect(mapStateToProps)(EmbedPlayer);\r\nexport default EmbedPlayer;","import React, {Component} from 'react';\r\nimport Axios from 'axios';\r\nimport connect from \"react-redux/es/connect/connect\";\r\n\r\nimport moment from \"moment\";\r\n\r\nclass SharingSns extends Component {\r\n constructor (props) {\r\n super (props);\r\n\r\n }\r\n\r\n componentDidMount = async () =>{\r\n window.fbAsyncInit = function() {\r\n window.FB.init({\r\n appId : 194126472010148,\r\n cookie : true, // enable cookies to allow the server to access\r\n // the session\r\n xfbml : true, // parse social plugins on this page\r\n version : 'v7.0' // use version 2.1\r\n });\r\n };\r\n\r\n (function(d, s, id) {\r\n var js, fjs = d.getElementsByTagName(s)[0];\r\n if (d.getElementById(id)) return;\r\n js = d.createElement(s); js.id = id;\r\n js.src = \"//connect.facebook.net/en_US/sdk.js\";\r\n fjs.parentNode.insertBefore(js, fjs);\r\n }(document, 'script', 'facebook-jssdk'));\r\n\r\n\r\n window.Kakao.init('beede8b70b410c0bf58bad30725ac389');\r\n\r\n }\r\n\r\n statusChangeCallback(response) {\r\n console.log('statusChangeCallback');\r\n console.log(response);\r\n if (response.status === 'connected') {\r\n console.log(\"connected\");\r\n this.testAPI();\r\n } else if (response.status === 'not_authorized') {\r\n console.log(\"Please log into this app.\");\r\n } else {\r\n console.log(\"Please log into this facebook.\");\r\n }\r\n }\r\n\r\n onClickSyndication = async () => {\r\n console.log(\"onClickSyndication\");\r\n }\r\n\r\n checkLoginState() {\r\n window.FB.getLoginStatus(function(response) {\r\n this.statusChangeCallback(response);\r\n }.bind(this));\r\n }\r\n\r\n onClickShanringFacebook = async () => {\r\n // console.log(\"onClickShanringFacebook\");\r\n // this.checkLoginState();\r\n // window.FB.login(this.checkLoginState());\r\n\r\n window.FB.ui({\r\n display: 'popup',\r\n method: 'share',\r\n href: 'https://developers.facebook.com/docs/',\r\n }, this.onFbPopup);\r\n\r\n // const popupUrl =`https://www.facebook.com/dialog/share?\r\n // app_id=145634995501895\r\n // &display=popup\r\n // &href=https%3A%2F%2Fyoutu.be%2FlqCr773EeBM\r\n // &redirect_uri=https%3A%2F%2Fdevelopers.facebook.com%2Ftools%2Fexplorer`;\r\n\r\n\r\n // window.open(popupUrl, `image-asset-preview-popup`, `width=700,height=680`);\r\n }\r\n\r\n onFbPopupResponse = (response) => {\r\n console.log(\"onFbPopupResponse \", response);\r\n }\r\n\r\n\r\n render = () => {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
{\"Publish\"}
\r\n {/* */}\r\n
\r\n\r\n
\r\n
\r\n
    \r\n
  • \r\n
    \r\n \r\n
    \r\n
  • \r\n
  • \r\n
    \r\n \r\n
    \r\n
  • \r\n
  • \r\n
    \r\n \r\n
    \r\n
  • \r\n
  • \r\n
    \r\n \r\n
    \r\n
  • \r\n
  • \r\n
    \r\n \r\n
    \r\n
  • \r\n
\r\n
\r\n\r\n {/* {this.state.result &&\r\n
\r\n
{t(`common::label::${\"URL\"}`)} :
\r\n this.result = ref}>\r\n {this.state.result}\r\n \r\n \r\n
\r\n } */}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n};\r\n\r\nlet mapStateToProps = (state) => {\r\n return {\r\n state \r\n };\r\n};\r\n\r\nSharingSns = connect(mapStateToProps)(SharingSns);\r\nexport default SharingSns;","import React from 'react';\r\nimport SharedVideoDetail from './SharedVideoDetail';\r\nimport EmbedPlayer from './EmbedPlayer';\r\nimport SharingSns from './SharingSns';\r\n\r\nimport { Route, Switch } from 'react-router-dom';\r\n\r\nfunction App() {\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default App;\r\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nimport { Provider } from 'react-redux';\nimport {createStore, applyMiddleware} from 'redux';\nimport {composeWithDevTools} from 'redux-devtools-extension';\nimport thunk from 'redux-thunk';\nimport { BrowserRouter } from 'react-router-dom';\n\nconst middleware = composeWithDevTools(applyMiddleware(thunk))\n\nconst store = createStore( \n middleware\n);\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}