{"version":3,"file":"promo.js","sources":["../src/message/message.js","../src/animation/animationfame.js","../src/animation/animation.js","../src/util/trim.js","../src/util/removespace.js","../src/util/getwheeldirection.js","../src/util/ispreventtime.js","../src/cookie/setcookie.js","../src/cookie/cookie.js","../src/cookie/getcookie.js","../src/cookie/delcookie.js","../src/detect/ismobile.js","../src/detect/nowbrowser.js","../src/detect/vendorprefix.js","../src/detect/environment.js","../src/detect/gamename.js","../src/detect/detect.js","../src/lazyload/loadjs.js","../src/lazyload/loadcss.js","../src/layer/layer.js","../src/player/youtubeplayer.js","../src/player/videoplayer.js","../src/player/player.js","../src/preloader/preloader.js","../src/scenebox/scenebox.js","../src/cnb/cnb.js","../src/trace/trace.js","../src/share/facebook.js","../src/share/twitter.js","../src/share/kakaostory.js","../src/share/kakaotalk.js","../src/share/googleplus.js","../src/share/line.js","../src/share/share.js","../src/promo.js","../src/comment/comment.js"],"sourcesContent":["$(document).on('click.promo.alert', '[data-alert]', function(e){\n e.preventDefault();\n let alertMessage = $(this).attr('data-alert').replace(/\\\\n/, '\\n');\n alert(alertMessage);\n});","class AnimationFrame {\n constructor(animate, fps = 60){\n this.requestID = 0;\n this.fps = fps;\n this.animate = animate;\n }\n\n start(){\n let now;\n let delta;\n let then = Date.now();\n let interval = 1000 / this.fps;\n let loop;\n\n if(this.fps < 60) {\n loop = () =>{\n this.requestID = requestAnimationFrame(loop);\n now = Date.now();\n delta = now - then;\n if(delta > interval) {\n then = now - (delta % interval);\n this.animate();\n }\n };\n } else {\n loop = () =>{\n this.requestID = requestAnimationFrame(loop);\n this.animate();\n };\n }\n\n this.requestID = requestAnimationFrame(loop);\n }\n\n stop(){\n cancelAnimationFrame(this.requestID);\n }\n}\n\nexport default AnimationFrame;","import animationframe from './animationfame';\n\nwindow.requestAnimationFrame = window.requestAnimationFrame\n || window.mozRequestAnimationFrame\n || window.webkitRequestAnimationFrame\n || window.msRequestAnimationFrame\n || function(f){\n return setTimeout(f, 1000 / 60)\n };\n\nwindow.cancelAnimationFrame = window.cancelAnimationFrame\n || window.mozCancelAnimationFrame\n || function(requestID){\n clearTimeout(requestID)\n };\n\nexport default {\n animationframe\n}","/**\n * 문자 앞 뒤 공백 제거\n * @param str\n * @returns {string|XML}\n */\nconst trim = (str) =>{\n if(String.prototype.trim) {\n return str.trim();\n }\n\n return str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n};\n\nexport default trim;","/**\n * 공백 제거\n * @param str\n * @returns {*|void|string|XML}\n */\n\nconst removeSpace = (str) =>{\n return str.replace(/\\s/gi, '');\n};\n\nexport default removeSpace;","/**\n * 마우스휠 이벤트 방향 감지\n *\n * @param e - mouse wheel event(mousewheel DOMMouseScroll)\n * @returns {number} - Return direction(up: -1 , down: 1)\n * @example\n *\n * $(window).on('mousewheel DOMMouseScroll', function(e){\n * getWheelDirection(e)\n * });\n *\n */\n\nconst getWheelDirection = (e) =>{\n if(e.type === \"DOMMouseScroll\") return e.originalEvent.detail > 0 ? 1 : -1;\n if(e.originalEvent.wheelDeltaY) return e.originalEvent.wheelDeltaY > 0 ? -1 : 1;\n return e.originalEvent.wheelDelta > 0 ? -1 : 1;\n};\n\nexport default getWheelDirection;","/**\n * 일정시간 동안 false를 반환\n *\n * @param diffTime - 기준시간\n * @param to - true를 얻기 위한 기준시간 부터 경과 시간(1/1000 s)\n * @returns {boolean}\n */\nconst isPreventTime = (diffTime, to = 1500) =>{\n return (new Date().getTime() - diffTime) < to;\n};\n\nexport default isPreventTime;","/**\n * 브라우저 쿠키 설정\n * @param key\n * @param value\n * @param expires ( Number:1~365, String: '2017/12/23 23:59:59', Object:{'day': 1, 'hour': 23, 'min': 59, 'sec': 59} )\n */\nconst setCookie = (key, value, expires = 1) =>{\n let now = new Date();\n\n switch(typeof expires) {\n case 'number':\n now.setDate(now.getDate() + expires);\n break;\n\n case 'string':\n let end = new Date(expires) - now;\n now.setDate(now.getDate() + Math.floor(( end / (1000 * 60 * 60 * 24))));\n now.setHours(now.getHours() + Math.floor(( end % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)));\n now.setMinutes(now.getMinutes() + Math.floor(( end % (1000 * 60 * 60)) / (1000 * 60)));\n now.setSeconds(now.getSeconds() + Math.floor(( end % (1000 * 60)) / 1000));\n break;\n\n case 'object':\n now.setDate(now.getDate() + expires.day);\n now.setHours(now.getHours() + expires.hour);\n now.setMinutes(now.getMinutes() + expires.min);\n now.setSeconds(now.getSeconds() + expires.sec);\n break;\n }\n\n document.cookie = key + '=' + value + ';path=/;' + 'domain=' + document.domain.substring(document.domain.indexOf(\".plaync\") + 1) + ';expires=' + now.toUTCString();\n};\n\nexport default setCookie;","import util from '../util/util';\nimport getcookie from './getcookie';\nimport setcookie from './setcookie';\nimport delcookie from './delcookie';\n\n$(document).on('click.promo.cookie', '[data-cookie]', function(e){\n e.preventDefault();\n\n setcookie(\n util.trim($(this).attr('data-cookie').split(',')[0]),\n util.trim($(this).attr('data-cookie').split(',')[1]),\n !!$(this).attr('data-cookie').split(',')[2] ? Number(util.trim($(this).attr('data-cookie').split(',')[2])) : 1\n );\n\n if($(this).attr('data-redirect')) {\n document.location.href = $(this).attr('data-redirect');\n }\n});\n\nexport default {\n getcookie,\n setcookie,\n delcookie\n};","/**\n * 브라우저 쿠키 추출\n * @param key\n * @returns {*}\n */\nconst getCookie = (key) =>{\n if(!document.cookie) {\n return;\n }\n\n let cookies = document.cookie.replace(/\\s+/gi, '').split(\";\");\n\n for(let i = 0, compare, length = cookies.length; i < length; i++) {\n compare = cookies[i].split(\"=\");\n if(key === compare[0]) {\n return compare [1];\n }\n }\n};\n\nexport default getCookie;","import setcookie from './setcookie';\n\n/**\n * 브라우저 쿠키 삭제\n * @param key\n */\nconst delCookie = (key) =>{\n if(!document.cookie) {\n return;\n }\n\n setcookie(key, null, -1);\n};\n\nexport default delCookie;","/**\n * 모바일 브라우저 인지 체크\n * @param agent\n * @returns {boolean}\n */\nconst isMobile = (agent = navigator.userAgent.toLowerCase()) =>{\n return /(android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini)/i.test(agent);\n};\n\nexport default isMobile;","/**\n * 현재 브라우저 종류 체크\n * @param agent(navigator.userAgent)\n * @returns {*}\n */\nconst nowBrowser = (agent = navigator.userAgent.toLowerCase()) =>{\n let trident = agent.match(/trident\\/(\\d.\\d)/i);\n\n if(trident !== null) {\n if(trident[1] === \"7.0\") return \"IE\" + 11;\n if(trident[1] === \"6.0\") return \"IE\" + 10;\n if(trident[1] === \"5.0\") return \"IE\" + 9;\n if(trident[1] === \"4.0\") return \"IE\" + 8;\n }\n\n if(navigator.appName === 'Microsoft Internet Explorer') return \"IE\" + 7;\n\n if(agent.indexOf(\"edge\") !== -1) return 'Edge';\n if(agent.indexOf(\"chrome\") !== -1) return 'Chrome';\n if(agent.indexOf(\"opera\") !== -1) return 'Opera';\n if(agent.indexOf(\"firefox\") !== -1) return 'Firefox';\n if(agent.indexOf(\"safari\") !== -1) return 'Safari';\n};\n\nexport default nowBrowser;","import nowbrowser from './nowbrowser';\n\n/**\n * vendor prefix 설정\n * @param now\n * @returns {*}\n */\nconst vendorPrefix = (now = nowbrowser()) =>{\n let prefix = {\n IE11: '-ms-',\n IE10: '-ms-',\n IE9: '-ms-',\n Chrome: '-webkit-',\n Opera: '-o-',\n Firefox: '-moz-',\n Safari: '-webkit-',\n };\n\n return prefix[now];\n};\n\nexport default vendorPrefix;","/**\n * get environment\n * @param href\n * @returns {*}\n */\nconst environment = (href = location.href) =>{\n let here;\n\n if(/rc\\./i.test(href) || /rc-/i.test(href)) {\n here = 'rc';\n }\n else if(/local|localhost|opdev|ui-static|file:/i.test(href)) {\n here = 'local';\n }\n else {\n here = 'live';\n }\n\n return here;\n};\n\nexport default environment;","/**\n * get game name\n * @param url\n * @returns {*}\n */\nconst getGameName = (url = location.href) =>{\n let gameName = '';\n\n if(/aion\\.plaync\\.com/.test(url)) {\n gameName = {\n 'en': 'aion',\n 'ko': '아이온'\n };\n }\n\n if(/lineage\\.plaync\\.com/.test(url)) {\n gameName = {\n 'en': 'lineage',\n 'ko': '리니지'\n };\n }\n\n if(/lineage2\\.plaync\\.com/.test(url)) {\n gameName = {\n 'en': 'lineage2',\n 'ko': '리니지2'\n };\n }\n\n if(/lineage2\\.plaync\\.com\\/classic/.test(url) || /lineage2\\.plaync\\.com\\/promo\\/lineage2classic/.test(url)) {\n gameName = {\n 'en': 'lineage2classic',\n 'ko': '리니지2클래식'\n };\n }\n\n if(/bns\\.plaync\\.com/.test(url)) {\n gameName = {\n 'en': 'bns',\n 'ko': '블소'\n };\n }\n\n return gameName;\n};\n\nexport default getGameName;","import ismobile from './ismobile';\nimport nowbrowser from './nowbrowser';\nimport vendorprefix from './vendorprefix';\nimport environment from './environment';\nimport gamename from './gamename';\n\nexport default {\n ismobile,\n nowbrowser,\n vendorprefix,\n environment,\n gamename,\n info: {\n ismobile: ismobile(),\n nowbrowser: nowbrowser(),\n vendorprefix: vendorprefix(),\n environment: environment(),\n game: gamename()\n }\n};","const loadJs = (src, callback) =>{\n let script = document.createElement('script');\n\n script.setAttribute('src', src);\n\n if(script.readyState) {\n script.onreadystatechange = function(){\n if(script.readyState === \"loaded\" || script.readyState === \"complete\") {\n script.onreadystatechange = null;\n callback && callback();\n }\n }\n } else {\n script.onload = function(){\n callback && callback();\n };\n }\n\n document.getElementsByTagName('head')[0].appendChild(script);\n\n return false;\n};\n\nexport default loadJs;","const loadCss = (src, callback) =>{\n let css = document.createElement('link');\n\n css.setAttribute('rel', 'stylesheet');\n css.setAttribute('href', src);\n\n\n if(css.readyState) {\n css.onreadystatechange = function(){\n if(css.readyState === \"loaded\" || css.readyState === \"complete\") {\n css.onreadystatechange = null;\n callback && callback();\n }\n }\n } else {\n css.onload = function(){\n callback && callback();\n };\n }\n\n document.getElementsByTagName('head')[0].appendChild(css);\n};\n\nexport default loadCss;","import lazyload from '../lazyload/lazyload';\n\nlazyload.js('https://wstatic-cdn.plaync.com/common/js/uikit/modal/ModalPopup.min.js');\n\nlet openedLayer;\nlet body = $('body');\n\n$(document).on('click.promo.layer', '[data-layer=\"middle\"]', function(e){\n e.preventDefault();\n let targetName = this.hash || $(e.target).data('href');\n\n if(!body.data(`layerData${targetName}`)) {\n let data = new nc.ui.Modal({\n isBackdropClickClose: true,\n isEsc: true,\n backdropCss: {'opacity': $(e.target).data('opacity') || '0.8'},\n content: $(this.hash || $(e.target).data('href'))\n });\n body.data(`layerData${targetName}`, data);\n }\n openedLayer = body.data(`layerData${targetName}`);\n body.data(`layerData${targetName}`).show();\n});\n\n$(document).on('click.promo.layer', '[data-layer=\"top\"]', function(e){\n e.preventDefault();\n\n let targetName = this.hash || $(e.target).data('href');\n\n if(!body.data(`layerData${targetName}`)) {\n let data = new nc.ui.Modal({\n isBackdropClickClose: true,\n isEsc: true,\n backdropCss: {'opacity': $(e.target).data('opacity') || '0.8'},\n content: $(this.hash || $(e.target).data('href')),\n top: 'auto',\n isMove: true\n });\n body.data(`layerData${targetName}`, data);\n }\n openedLayer = body.data(`layerData${targetName}`);\n body.data(`layerData${targetName}`).show();\n});\n\n$(document).on('click.promo.layer', '[data-layer=\"close\"]', function(e){\n e.preventDefault();\n\n openedLayer.hide();\n});\n\nlet open = (selector, position = 'middle') =>{\n let targetName = selector;\n\n if(!body.data(`layerData${targetName}`)) {\n let data = new nc.ui.Modal({\n isBackdropClickClose: true,\n isEsc: true,\n top: `${position === 'middle' ? 0 : 'auto'}`,\n isMove: `${position !== 'middle'}`,\n backdropCss: {'opacity': $(targetName).data('opacity') || '0.8'},\n content: $(targetName)\n });\n body.data(`layerData${targetName}`, data);\n }\n openedLayer = body.data(`layerData${targetName}`);\n body.data(`layerData${targetName}`).show();\n};\n\nlet close = () =>{\n openedLayer.hide();\n};\n\nexport default {\n open,\n close\n};","class YoutubePlayer {\n constructor(_option){\n if(!_option && typeof(_option) !== 'object') {\n throw new TypeError(\"Player module need object type option\");\n }\n\n if(_option && !document.querySelector(_option.selector)) {\n throw new TypeError(`no ${_option.selector} DOM Element`);\n }\n\n this.context = $(_option.selector);\n\n this.player = null;\n\n this.config = $.extend({\n fps: 60,\n videoId: '',\n playerId: '',\n mute: false,\n autoPlay: false,\n loop: false,\n controls: false,\n coverClick: false\n }, _option);\n\n this.config.playerId = `${_option.selector.replace(/^#/, '')}__${this.config.videoId}`;\n\n this.state = {\n isPlay: false,\n isControlShow: true,\n animationFrame: 0,\n timer: null,\n isReady: false,\n isTouchInit: false\n };\n\n this.template = {\n player: `
`,\n controls: `