{"version":3,"sources":["assets/images/launcher.svg","styles/mediaQueries.ts","styles/globalStyle.tsx","components/Engine/EngineStyles.ts","assets/images/banner-close.svg","lib/hook/index.ts","assets/images/icon-logo.svg","components/Launcher/Popup.tsx","lib/helpers/baseUrlChecker.tsx","lib/api/index.ts","components/Launcher/Banner.tsx","assets/images/header-close.svg","components/Launcher/index.tsx","lib/helpers/isDev.tsx","lib/helpers/useIsPage.tsx","components/Layouts/ChatLayout/index.tsx","assets/images/logo-by-cloudturing.svg","assets/images/icon-cloudturing.svg","assets/images/logo-kakao.svg","assets/images/logo-naver.svg","assets/images/notification-arrow.svg","assets/images/icon-logo-cloudturing.svg","components/Entry/Options/OptionsStyles.ts","assets/images/notification-more.svg","assets/images/notification-more-hover.svg","components/Entry/Options/NotificationList.tsx","components/Entry/Options/index.tsx","lib/helpers/removeScriptTag.tsx","components/Entry/index.tsx","assets/images/banner-default.png","components/Chat/ChatStyles.ts","lib/helpers/getUserCookie.tsx","lib/helpers/useEngineCookie.tsx","components/Chat/Conversation/Messages/Items/common/helpers.ts","assets/images/icon-close.svg","assets/images/icon-setting.svg","assets/images/icon-send.svg","assets/images/icon-file.svg","assets/images/bot-profile.svg","components/Chat/Conversation/ConversationStyle.ts","components/Chat/Conversation/Messages/Items/common/Timestamp.tsx","components/Chat/Conversation/Messages/ResponseUser/index.tsx","assets/images/system-bg-line.svg","components/Layouts/BotLayout/index.tsx","components/Chat/Conversation/Messages/Items/ItemText.tsx","components/Chat/Conversation/Messages/Items/ItemImage.tsx","components/Chat/Conversation/Messages/Items/common/CardBtn.tsx","components/Chat/Conversation/Messages/Items/common/CardCarouselBtn.tsx","components/Chat/Conversation/Messages/Items/common/CardType.tsx","components/Chat/Conversation/Messages/Items/ItemTextCard.tsx","components/Chat/Conversation/Messages/Items/ItemBasicCard.tsx","components/Chat/Conversation/Messages/Items/ItemMenu.tsx","components/Chat/Conversation/Messages/Items/ItemPlayer.tsx","assets/images/icon-quickarrow.svg","components/Chat/Conversation/Messages/Items/ItemSystem.tsx","assets/images/system-profile.png","components/Chat/Conversation/Messages/ResponseBot/index.tsx","components/Chat/Conversation/Messages/index.tsx","assets/images/input-check.svg","components/Chat/Conversation/Messages/Items/ItemQuickReply.tsx","components/Chat/Conversation/Messages/Items/ItemLoading.tsx","assets/images/input-select-fold.svg","assets/images/input-check-disabled.svg","assets/images/input-radio.svg","assets/images/input-radio-disabled.svg","components/Chat/Conversation/Messages/Items/common/ConfirmButtons.tsx","components/Chat/Conversation/Messages/Items/ItemCheckboxRadio.tsx","components/Chat/Conversation/Messages/Items/ItemQuestion.tsx","assets/images/input-select-unfold.svg","assets/images/ico_clock.svg","components/Common/Select/index.tsx","assets/images/star.svg","assets/images/ico-calender-default.svg","components/Chat/Conversation/Messages/Items/ItemCalendar/Calendar.tsx","components/Chat/Conversation/Messages/Items/ItemCalendar/index.tsx","components/Common/RatingButtons/SvgButton.tsx","assets/images/star_full.svg","assets/images/smile_1.svg","assets/images/smile_2.svg","assets/images/smile_3.svg","assets/images/smile_4.svg","assets/images/smile_5.svg","components/Common/RatingButtons/index.tsx","components/Chat/Conversation/Messages/Items/ItemRating/index.tsx","components/Chat/Conversation/index.tsx","components/Chat/index.tsx","assets/images/logo-by-cloudturing.png","components/Engine/index.tsx","App.tsx","lib/reducer/engine.tsx","lib/reducer/index.tsx","lib/store/index.tsx","index.tsx"],"names":["_circle","_path","_path2","_path3","_path4","size","device","mobileS","mobileM","mobileL","tablet","laptop","laptopL","desktop","desktopL","GlobalStyle","createGlobalStyle","EngineStyles","styled","div","isEnglish","css","launcher","introBox","logo","url","textColor","backgroundColor","closeColor","link","chatbubble","position","top","bottom","left","right","color","homeStyle","home","button","hover","borderColor","isPage","design","iconColor","brandNameColor","background","value","type","system","senderActionColor","user","isBold","textInput","placeholder","items","text","card","titleColor","isTitleBold","descriptionColor","buttonTextColor","buttonLineColor","carousel","default","menu","quickReply","calendar","confirmButton","cancelButton","disableTextColor","selectBox","icon","selected","rating","score","smileColor","starColor","question","answer","genericMenu","_excluded","_extends","Object","assign","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","keys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgLauncher","_ref","svgRef","title","titleId","props","width","height","viewBox","fill","xmlns","ref","id","cx","cy","r","d","ForwardRef","useAppSelector","useSelector","SvgBannerClose","stroke","strokeMiterlimit","strokeLinecap","strokeLinejoin","Popup","useState","popup","setPopup","isPopup","state","engine","PopupWrap","style","onClick","onClickPopup","className","e","stopPropagation","SvgIconLogo","process","baseUrl","wsUrl","api","axios","create","baseURL","withCredentials","postImageUpload","formData","dispatch","a","post","headers","res","data","payload","image","fileKeyValue","mimetype","console","log","interceptors","request","use","config","localcookie","document","cookie","split","map","trim","filter","common","Banner","isOpen","setIsOpen","onClickBannerClose","window","sessionStorage","setItem","checkDfId","dyc","chatbotUid","get","isCloudturingPage","checkIntroBoxLink","location","hostname","BannerStyle","src","alt","description","tabIndex","onKeyDown","enabled","href","rel","LauncherWrap","EngineLauncher","memo","useDispatch","pageChatbot","onClickLauncherIcon","useCallback","open","statusBanner","getItem","SvgHeaderClose","strokeWidth","useIsPage","setIsPage","useEffect","qs","search","URLSearchParams","_rect","_defs","ChatLayoutStyle","ChatLayout","children","SvgLogoByCloudturing","xmlnsXlink","patternContentUnits","xlinkHref","transform","SvgIconCloudturing","rx","SvgLogoKakao","SvgLogoNaver","SvgNotificationArrow","OptionsStyle","isOpened","fadeNotification","keyframes","fadeIn","NotificationListStyle","ListWrap","ul","More","MoreHover","NotificationList","boards","board","Options","channels","channel","resetToLauncher","useRef","index","setIndex","opened","setOpened","current","intervalId","setInterval","clearTimeout","titleDisplay","onClickTuring","handleNotification","prevState","onClickChannel","kakao","naver","tabEnter","el","channelType","homeUrl","homeMessage","host","removeScriptTag","getElementById","remove","scriptTags","scripts","scriptsToRemove","push","parentNode","removeChild","EngineEntry","chatbotId","mobileWidth","innerWidth","response","fetchChannel","onClickEntryClose","destWindow","EntryStyle","banner","ChatStyles","chrome","getUserCookie","useEngineCookie","cookieStatus","setCookieStatus","getCookie","newCookie","userOsChecker","detectOS","test","navigator","userAgent","userButtonTypeChecker","obj","pc","macos","windows","mobile","ios","android","wsSendDataFormatter","info","messageText","eventId","label","btnIsLinkType","btn","web","isTypeMatch","app","customTimeout","setTimeout","setRedirectMobile","SvgIconLogoCloudturing","SvgIconClose","SvgIconSetting","_rect2","SvgIconSend","x","y","SvgIconFile","ConversationStyle","TimeStampStyle","HeaderDate","Timestamp","isTime","isDate","HH","Date","getHours","MM","getMinutes","newTs","ampm","time","showDate","today","todayMM","getMonth","slice","todayDD","getDate","todayDate","yesterdayDate","prevMM","setMonth","prevLastDayTimestamp","setDate","prevLastDay","mm","dd","myDate","ResponseUser","event","RenderText","RenderImage","img","ResponseUserStyle","item","timestamp","messageId","SvgBotProfile","_rect3","_rect4","_rect5","_rect6","_rect7","_rect8","_rect9","_rect10","_rect11","_rect12","_rect13","_rect14","_rect15","_rect16","_rect17","_rect18","_rect19","_rect20","_rect21","_rect22","_rect23","BotLayout","BotLayoutStyle","TextStyle","ItemText","showText","noBotLayout","ItemImageStyle","ImageAreaStyle","ItemImage","images","Array","isArray","imageUrl","isOlive","callUrl","encodeURI","toLowerCase","OliveLounge","openExternalURL","JSON","stringify","toString","webkit","messageHandlers","postMessage","CardBtnStyle","CardBtn","onClickBtn","send","phoneNumber","CardCarouselBtn","active","handleActive","isThumbnail","entries","k","v","thumbnail","CardCarouselBtnStyle","CardType","thumbnailLink","isMenu","isSquare","isTextCard","isCarousel","setActive","CardAreaContentWrap","imgLink","redirectMobile","hasThumbnailLink","getUrl","isButtonType","whichLink","CardContent","buttons","ItemTextCard","content","ItemBasicCard","basicCard","ItemMenu","ItemMenuButtonsStyle","count","ItemPlayerStyle","ItemPlayer","video","isCurrent","controls","playing","autoPlay","volume","SvgSystemBgLine","ItemSystem","ItemSystemStyle","ResponseBot","bot","getLogo","messageby","senderIcon","message","EngineMessages","messages","useSticky","sticky","scrollToBottom","useScrollToBottom","displayMessage","useMemo","messagesList","date","getTime","firstDateInMessage","userFirstDate","userFirstDateMM","userFirstDateDD","reduce","accu","curr","getElementDate","elDate","sender","Math","random","substr","SvgIconQuickarrow","QuickReply","firstReply","secondReply","isQuickReply","isFirstChecked","setIsFirstChecked","activeIndex","setActiveIndex","selectedFirstName","setSelectedFirstName","resetReply","handleReply","name","quickReplies","QuickReplyStyle","SecondReplyHeader","LoadingStyle","Loading","SvgInputCheck","ConfirmButtons","ConfirmButtonStyle","Btn","confirmBtn","CheckBox","disabled","CheckBoxLabelStyle","Radio","RadioLabelStyle","ItemCheckboxRadio","box","radioName","floor","ItemCheckboxRadioStyle","isCheckBox","inputCheckDisabled","inputRadio","inputRadioDisabled","ItemQuestion","inputVal","setInputVal","isSendIcon","sendIcon","ItemQuestionStyle","prefix","suffix","valid","onChange","SvgInputSelectFold","SvgInputSelectUnfold","Select","values","placeholderColor","isInvalid","rest","seleteEl","useClickAway","onHandleActive","prev","is","SelectWrap","SvgIcoClock","_mask","CalendarWrapStyle","Arrow","myCustomLocale","months","weekDays","short","isWeekend","weekStartingIndex","getToday","gregorainTodayObject","toNativeDate","year","month","day","getMonthLength","transformDigit","digit","nextMonth","previousMonth","openMonthSelector","openYearSelector","closeMonthSelector","closeYearSelector","defaultPlaceholder","from","to","digitSeparator","yearLetterSkip","isRtl","hour","minute","CustomDatePicker","selectedDay","setSelectedDay","currentTime","setCurrentTime","currentMinute","setCurrentMinute","minimumDate","maximumDate","newHour","startHour","endHour","addZeroToTime","newMinute","minuteInterval","Number","interval","j","addZeroToMin","renderFooterView","locale","colorPrimary","renderFooter","ItemCalendarStyle","ItemCalendar","SvgButton","order","hoverValue","activeValue","half","starState","setStarState","SvgButtonWrap","data-order","SvgStar","mask","SvgStarFull","fillRule","clipRule","SvgSmile1","SvgSmile2","_line","SvgSmile3","x1","y1","x2","y2","SvgSmile4","SvgSmile5","RatingButton","scoreColor","defaultValue","setHoverValue","setActiveValue","onMouseOverSvgBtn","dataset","parseInt","onClickSvgBtn","onMouseLeaveSvgBtn","handleSvgType","onMouseOver","onMouseLeave","SvgButtonComponentWrap","ItemRating","ItemRatingStyle","Conversation","showReply","mobileHeight","use100vh","mobileInnerHeight","innerHeight","checkDemoPage","messagesEndRef","isIE","timeout","scrollIntoView","checkboxradio","Delay","multiQuickReplies","delay","status","min","overflowY","followButtonClassName","checkInterval","scrollViewClassName","EngineChat","isCookie","localCookie","inputEl","inputAreaEl","closeBtnEl","logoEl","userText","setUserText","isReconnect","generic","setGeneric","settingModal","setSettingModal","imgUploadStatus","setImgUpload","isFirstFocus","setIsFirstFocus","delayWSConnection","connect","disconnect","clearInterval","fetchHistory","focus","onClickSendUserText","onClickCloseChat","onClickGenericIcon","onClickGenericItem","onClickSettingModal","onClickSettingDeleteMessage","delete","deleteChat","onClickModalImageError","brandLogo","brandName","preventDefault","blur","onKeyPress","hasImageUpload","htmlFor","hidden","FormData","file","files","fileExt","pop","append","objWS","sendUpload","Engine","isLoaded","fetchHome","delayLauncher","actionMessageClick","urls","path","pathname","sendIntent","put","actionMessagePopup","myWindow","actionClick","actionPopup","activeChild","App","enableES5","initialState","WS_PREFIX","REDUX_WEBSOCKET_CLOSED","WEBSOCKET_BROKEN","WEBSOCKET_OPEN","WEBSOCKET_CLOSED","REDUX_WEBSOCKET_MESSAGE","WEBSOCKET_MESSAGE","REDUX_WEBSOCKET_CONNECT","WEBSOCKET_CONNECT","REDUX_WEBSOCKET_ERROR","WEBSOCKET_DISCONNECT","WEBSOCKET_SEND","WEBSOCKET_ERROR","engineReducer","action","produce","draft","parse","finalMsg","msgId","modify","newItem","newObj","wasClean","rootReducer","combineReducers","reduxWebsocketMiddleware","reduxWebsocket","middleware","thunk","store","createStore","composeWithDevTools","applyMiddleware","WebFont","load","google","families","Routing","ReactDOM","render"],"mappings":"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","file":"static/js/main.92a54c11.chunk.js","sourcesContent":["var _circle, _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLauncher(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 60,\n height: 60,\n viewBox: \"0 0 60 60\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 30,\n cy: 30,\n r: 30,\n fill: \"#E8490A\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M35.9738 19.8682H35.3317C35.2329 19.8682 35.1506 19.9521 35.1506 20.0529V25.1925C35.1506 25.2932 35.2329 25.3772 35.3317 25.3772H35.9738C36.0725 25.3772 36.1549 25.2932 36.1549 25.1925V20.0529C36.1549 19.9521 36.0725 19.8682 35.9738 19.8682Z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30.5082 11C19.7252 11 11 18.7093 11 28.3669C11 33.3889 13.9139 44.9276 29.3558 49.832C30.9033 50.3191 30.5741 49.6137 30.2778 49.1266C28.9772 46.8592 29.3558 43.9535 30.8704 43.9535C40.7645 43.9535 50 36.5801 50 27.4935C50 18.407 41.2748 11 30.5082 11ZM30.5082 31.1718C17.9472 31.1718 16.6302 30.2649 16.6302 24.9742C16.6302 20.5065 23.4951 15.2829 30.5082 15.2829C37.5213 15.2829 44.3862 20.5065 44.3862 24.9742C44.3698 30.2481 43.0528 31.1718 30.5082 31.1718Z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M25.6685 19.8682H25.0264C24.9276 19.8682 24.8453 19.9521 24.8453 20.0529V25.1925C24.8453 25.2932 24.9276 25.3772 25.0264 25.3772H25.6685C25.7672 25.3772 25.8496 25.2932 25.8496 25.1925V20.0529C25.8496 19.9521 25.7672 19.8682 25.6685 19.8682Z\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.5046 26.5029C33.3565 26.4525 33.2083 26.4693 33.0601 26.5365C32.912 26.6037 32.8132 26.7045 32.7638 26.8556C32.6156 27.2923 32.3193 27.645 31.9077 27.9138C31.4962 28.1825 31.0188 28.3169 30.5084 28.3169C29.9981 28.3169 29.5207 28.1825 29.1091 27.9138C28.6975 27.645 28.4177 27.2923 28.253 26.8556C28.2036 26.7213 28.1049 26.6037 27.9567 26.5365C27.8085 26.4693 27.6604 26.4525 27.5122 26.5029C27.3476 26.5533 27.2324 26.6373 27.1665 26.7549C27.1006 26.8892 27.0842 27.0236 27.1336 27.158C27.3641 27.813 27.7921 28.3505 28.4012 28.7536C29.0103 29.1567 29.7182 29.3582 30.5084 29.3582C31.2822 29.3582 31.9901 29.1567 32.6156 28.7536C33.2412 28.3505 33.6692 27.813 33.8833 27.158C33.9326 27.0236 33.9162 26.8892 33.8503 26.7549C33.768 26.6373 33.6528 26.5533 33.5046 26.5029Z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLauncher);\nexport default __webpack_public_path__ + \"static/media/launcher.b76460b6.svg\";\nexport { ForwardRef as ReactComponent };","const size = {\n\tmobileS: '320px',\n\tmobileM: '375px',\n\tmobileL: '480px',\n\ttablet: '768px',\n\tlaptop: '1024px',\n\tlaptopL: '1600px',\n\tdesktop: '2560px',\n};\n\nexport const device = {\n\tmobileS: `(max-width: ${size.mobileS})`,\n\tmobileM: `(max-width: ${size.mobileM})`,\n\tmobileL: `(max-width: ${size.mobileL})`,\n\ttablet: `(max-width: ${size.tablet})`,\n\tlaptop: `(max-width: ${size.laptop})`,\n\tlaptopL: `(max-width: ${size.laptopL})`,\n\tdesktop: `(max-width: ${size.desktop})`,\n\tdesktopL: `(max-width: ${size.desktop})`,\n};\n","import { createGlobalStyle } from 'styled-components';\nimport { device } from 'styles/mediaQueries';\n\nconst GlobalStyle = createGlobalStyle`\n /* html {\n\t\tfont-family: sans-serif; \n\t\tline-height: 1.15; \n\t\t-ms-text-size-adjust: 100%; \n\t\t-webkit-text-size-adjust: 100%; \n\t} */\n\n/* Sections\n\t ========================================================================== */\n\n/**\n * Remove the margin in all browsers (opinionated).\n */\n.dychat-20210908 {\n\tfont-family: 'Noto Sans KR', 'Helvetica Neue', Helvetica, Arial, sans-serif;\n\tfont-size: 14px;\n\t\n\t* {\n\t\tposition :static;\n\n\t\toverflow: visible;\n\t}\n\n\t/**\n\t* Add the correct display in IE 9-.\n\t*/\n\n\tarticle,\n\taside,\n\tfooter,\n\theader,\n\tnav,\n\tsection {\n\t\tdisplay: block;\n\t}\n\n\n\tfigcaption,\n\tfigure,\n\tmain {\n\t\t/* 1 */\n\t\tdisplay: block;\n\t}\n\n\t/**\n\t* Add the correct margin in IE 8.\n\t*/\n\n\tfigure {\n\t\tmargin: 1em 40px;\n\t}\n\n\t/**\n\t* 1. Add the correct box sizing in Firefox.\n\t* 2. Show the overflow in Edge and IE.\n\t*/\n\n\thr {\n\t\tbox-sizing: content-box; /* 1 */\n\t\theight: 0; /* 1 */\n\t\toverflow: visible; /* 2 */\n\t}\n\n\n\tpre {\n\t\tfont-family: monospace, monospace; /* 1 */\n\t\tfont-size: 1em; /* 2 */\n\t}\n\n\t/* Text-level semantics\n\t\t========================================================================== */\n\n\t/**\n\t* 1. Remove the gray background on active links in IE 10.\n\t* 2. Remove gaps in links underline in iOS 8+ and Safari 8+.\n\t*/\n\n\ta {\n\t\tbackground-color: transparent; /* 1 */\n\t\t-webkit-text-decoration-skip: objects; /* 2 */\n\t}\n\n\t/**\n\t* Remove the outline on focused links when they are also active or hovered\n\t* in all browsers (opinionated).\n\t*/\n\n\ta:active,\n\ta:hover {\n\t\toutline-width: 0;\n\t}\n\n\t/**\n\t* 1. Remove the bottom border in Firefox 39-.\n\t* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n\t*/\n\n\tabbr[title] {\n\t\tborder-bottom: none; /* 1 */\n\t\ttext-decoration: underline; /* 2 */\n\t\ttext-decoration: underline dotted; /* 2 */\n\t}\n\n\n\n\tb,\n\tstrong {\n\t\tfont-weight: inherit;\n\t}\n\n\t/**\n\t* Add the correct font weight in Chrome, Edge, and Safari.\n\t*/\n\n\tb,\n\tstrong {\n\t\tfont-weight: bolder;\n\t}\n\n\n\n\tcode,\n\tkbd,\n\tsamp {\n\t\tfont-family: monospace, monospace; /* 1 */\n\t\tfont-size: 1em; /* 2 */\n\t}\n\n\t/**\n\t* Add the correct font style in Android 4.3-.\n\t*/\n\n\tdfn {\n\t\tfont-style: italic;\n\t}\n\n\t/**\n\t* Add the correct background and color in IE 9-.\n\t*/\n\n\tmark {\n\t\tbackground-color: #ff0;\n\t\tcolor: #000;\n\t}\n\n\t/**\n\t* Add the correct font size in all browsers.\n\t*/\n\n\tsmall {\n\t\tfont-size: 80%;\n\t}\n\n\t/**\n\t* Prevent sub and sup elements from affecting the line height in\n\t* all browsers.\n\t*/\n\n\tsub,\n\tsup {\n\t\tfont-size: 75%;\n\t\tline-height: 0;\n\t\tposition: relative;\n\t\tvertical-align: baseline;\n\t}\n\n\tsub {\n\t\tbottom: -0.25em;\n\t}\n\n\tsup {\n\t\ttop: -0.5em;\n\t}\n\n\t/* Embedded content\n\t\t========================================================================== */\n\n\t/**\n\t* Add the correct display in IE 9-.\n\t*/\n\n\taudio,\n\tvideo {\n\t\tdisplay: inline-block;\n\t}\n\n\t/**\n\t* Add the correct display in iOS 4-7.\n\t*/\n\n\taudio:not([controls]) {\n\t\tdisplay: none;\n\t\theight: 0;\n\t}\n\n\t/**\n\t* Remove the border on images inside links in IE 10-.\n\t*/\n\n\timg {\n\t\tborder-style: none;\n\t\tdisplay: block;\n\t}\n\n\t/**\n\t* Hide the overflow in IE.\n\t*/\n\n\tsvg:not(:root) {\n\t\toverflow: hidden;\n\t}\n\n\t/* Forms\n\t\t========================================================================== */\n\n\t/**\n\t* 1. Change the font styles in all browsers (opinionated).\n\t* 2. Remove the margin in Firefox and Safari.\n\t*/\n\n\tbutton,\n\tinput,\n\toptgroup,\n\tselect,\n\ttextarea {\n\t\tfont-family: sans-serif; /* 1 */\n\t\tfont-size: 100%; /* 1 */\n\t\tline-height: 1.15; /* 1 */\n\t\tmargin: 0; /* 2 */\n\t}\n\n\t/**\n\t* Show the overflow in IE.\n\t* 1. Show the overflow in Edge.\n\t*/\n\n\tbutton,\n\tinput {\n\t\t/* 1 */\n\t\toverflow: visible;\n\t}\n\n\t/**\n\t* Remove the inheritance of text transform in Edge, Firefox, and IE.\n\t* 1. Remove the inheritance of text transform in Firefox.\n\t*/\n\n\tbutton,\n\tselect {\n\t\t/* 1 */\n\t\ttext-transform: none;\n\t}\n\n\t/**\n\t* 1. Prevent a WebKit bug where (2) destroys native audio and video\n\t* controls in Android 4.\n\t* 2. Correct the inability to style clickable types in iOS and Safari.\n\t*/\n\n\tbutton,\n\thtml [type=\"button\"], /* 1 */\n\t[type=\"reset\"],\n\t[type=\"submit\"] {\n\t\t-webkit-appearance: button; /* 2 */\n\t}\n\n\t/**\n\t* Remove the inner border and padding in Firefox.\n\t*/\n\n\tbutton::-moz-focus-inner,\n\t[type='button']::-moz-focus-inner,\n\t[type='reset']::-moz-focus-inner,\n\t[type='submit']::-moz-focus-inner {\n\t\tborder-style: none;\n\t\tpadding: 0;\n\t}\n\n\t/**\n\t* Restore the focus styles unset by the previous rule.\n\t*/\n\n\tbutton:-moz-focusring,\n\t[type='button']:-moz-focusring,\n\t[type='reset']:-moz-focusring,\n\t[type='submit']:-moz-focusring {\n\t\toutline: 1px dotted ButtonText;\n\t}\n\n\t/**\n\t* Change the border, margin, and padding in all browsers (opinionated).\n\t*/\n\n\tfieldset {\n\t\tborder: 1px solid #c0c0c0;\n\t\tmargin: 0 2px;\n\t\tpadding: 0.35em 0.625em 0.75em;\n\t}\n\n\t/**\n\t* 1. Correct the text wrapping in Edge and IE.\n\t* 2. Correct the color inheritance from fieldset elements in IE.\n\t* 3. Remove the padding so developers are not caught out when they zero out\n\t* fieldset elements in all browsers.\n\t*/\n\n\tlegend {\n\t\tbox-sizing: border-box; /* 1 */\n\t\tcolor: inherit; /* 2 */\n\t\tdisplay: table; /* 1 */\n\t\tmax-width: 100%; /* 1 */\n\t\tpadding: 0; /* 3 */\n\t\twhite-space: normal; /* 1 */\n\t}\n\n\t/**\n\t* 1. Add the correct display in IE 9-.\n\t* 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.\n\t*/\n\n\tprogress {\n\t\tdisplay: inline-block; /* 1 */\n\t\tvertical-align: baseline; /* 2 */\n\t}\n\n\t/**\n\t* Remove the default vertical scrollbar in IE.\n\t*/\n\n\ttextarea {\n\t\toverflow: auto;\n\t}\n\n\t/**\n\t* 1. Add the correct box sizing in IE 10-.\n\t* 2. Remove the padding in IE 10-.\n\t*/\n\n\t[type='checkbox'],\n\t[type='radio'] {\n\t\tbox-sizing: border-box; /* 1 */\n\t\tpadding: 0; /* 2 */\n\t}\n\n\t/**\n\t* Correct the cursor style of increment and decrement buttons in Chrome.\n\t*/\n\n\t[type='number']::-webkit-inner-spin-button,\n\t[type='number']::-webkit-outer-spin-button {\n\t\theight: auto;\n\t}\n\n\t/**\n\t* 1. Correct the odd appearance in Chrome and Safari.\n\t* 2. Correct the outline style in Safari.\n\t*/\n\n\t[type='search'] {\n\t\t-webkit-appearance: textfield; /* 1 */\n\t\toutline-offset: -2px; /* 2 */\n\t}\n\n\t/**\n\t* Remove the inner padding and cancel buttons in Chrome and Safari on OS X.\n\t*/\n\n\t[type='search']::-webkit-search-cancel-button,\n\t[type='search']::-webkit-search-decoration {\n\t\t-webkit-appearance: none;\n\t}\n\n\t/**\n\t* 1. Correct the inability to style clickable types in iOS and Safari.\n\t* 2. Change font properties to inherit in Safari.\n\t*/\n\n\t::-webkit-file-upload-button {\n\t\t-webkit-appearance: button; /* 1 */\n\t\tfont: inherit; /* 2 */\n\t}\n\n\t/* Interactive\n\t\t========================================================================== */\n\n\t/*\n\t* Add the correct display in IE 9-.\n\t* 1. Add the correct display in Edge, IE, and Firefox.\n\t*/\n\n\tdetails, /* 1 */\n\tmenu {\n\t\tdisplay: block;\n\t}\n\n\t/*\n\t* Add the correct display in all browsers.\n\t*/\n\n\tsummary {\n\t\tdisplay: list-item;\n\t}\n\n\t/* Scripting\n\t\t========================================================================== */\n\n\t/**\n\t* Add the correct display in IE 9-.\n\t*/\n\n\tcanvas {\n\t\tdisplay: inline-block;\n\t}\n\n\t/**\n\t* Add the correct display in IE.\n\t*/\n\n\ttemplate {\n\t\tdisplay: none;\n\t}\n\n\t/* Hidden\n\t\t========================================================================== */\n\n\t/**\n\t* Add the correct display in IE 10-.\n\t*/\n\n\t[hidden] {\n\t\tdisplay: none;\n\t}\n\n\t/*! custom reset */\n\n\t/**\n\t* Since : 2016.08.11\n\t* Author : Lee Song-hyeon\n\t* Contact : songhyeonlee@dreamyoung.com\n\t* Updated : 2016.08.11\n\t*/\n\n\t*,\n\t*:before,\n\t*:after {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t\tborder: 0;\n\t\tbox-sizing: border-box;\n\t}\n\n\tol,\n\tul,\n\tdl {\n\t\tlist-style: none;\n\t\tborder-spacing: 0;\n\t}\n\n\timg,\n\tvideo {\n\t\tborder: 0;\n\t\tvertical-align: top;\n\t}\n\n\tfieldset {\n\t\tmin-width: 0;\n\t\tborder: 0;\n\t}\n\n\t@-moz-document url-prefix() {\n\t\tfieldset {\n\t\t\tdisplay: table-cell;\n\t\t} /* firefox overflow bug */\n\t}\n\n\ttable {\n\t\tborder-collapse: collapse;\n\t\tborder: 0;\n\t}\n\n\tbutton,\n\tinput,\n\tselect,\n\ttextarea {\n\t\tfont: inherit;\n\t}\n\n\tbutton {\n\t\tcursor: pointer;\n\t\tborder: 0;\n\t\tbackground: transparent;\n\t\toutline-width: 0;\n\t}\n\n\tinput,\n\tselect {\n\t\tvertical-align: middle;\n\t\toutline-width: 0;\n\t}\n\n\tlabel {\n\t\tcursor: pointer;\n\t\t-ms-user-select: none;\n\t\t-moz-user-select: none;\n\t\t-webkit-user-select: none;\n\t\tuser-select: none;\n\t}\n\n\ta {\n\t\tcursor: pointer;\n\t\tcolor: inherit;\n\t\ttext-decoration: none;\n\t}\n\n\ti,\n\tem,\n\taddress {\n\t\tfont-style: normal;\n\t\tfont-weight: normal;\n\t}\n\n\thtml {\n\t\theight: 100%;\n\t}\n\n\n\t.not-scroll {\n\t\toverflow: hidden;\n\t}\n\n\th1,\n\th2,\n\th3,\n\th4,\n\th5,\n\th6 {\n\t\tword-break: keep-all;\n\t\tfont-weight: normal;\n\t}\n\n\tp {\n\t\tword-break: keep-all;\n\t\tword-wrap: break-word;\n\t}\n\n\ttextarea {\n\t\toutline: none;\n\t\tresize: none;\n\t\tborder: 1px solid #000;\n\t\tword-break: keep-all;\n\t}\n\n\t/* float 해제 */\n\t.clear:after {\n\t\tcontent: '';\n\t\tdisplay: block;\n\t\tclear: both;\n\t}\n\n\t/* 긴 글 생략 */\n\t.ellipsis {\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttext-overflow: ellipsis;\n\t}\n\n\t/* 팝업 백그라운드 */\n\t.over-win {\n\t\tvisibility: hidden;\n\t\tz-index: 400;\n\t\tposition: fixed;\n\t\ttop: 0;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\tleft: 0;\n\t\tbackground: rgba(0, 0, 0, 0.7);\n\t}\n\n\t.over-win.open {\n\t\tvisibility: visible;\n\t}\n\n\t/* word break */\n\t.word-break-all {\n\t\tword-break: break-all;\n\t}\n\n\t// screen-reader\n\t.dyc-blind {\n\t\tposition: absolute;\n\t\twidth: 1px;\n\t\theight: 1px;\n\t\tmargin: -1px;\n\t\toverflow: hidden;\n\t\tclip: rect(1px, 1px, 1px, 1px);\n\t\tclip-path: inset(50%);\n\t}\n\n\t@media screen and (-webkit-min-device-pixel-ratio: 0) {\n\t\tselect:focus,\n\t\ttextarea:focus,\n\t\tinput:focus {\n\t\t\tfont-size: 14px;\n\t\t}\n\t}\n\n\t@media screen and (-webkit-min-device-pixel-ratio: 0) {\n\t\t\t.dychat-20210908 select:focus,\n\t\t\t.dychat-20210908 textarea:focus,\n\t\t\t.dychat-20210908 input:focus {\n\t\t\t\t\tfont-size: 14px;\n\t\t\t}\n\t}\n\n\t@media ${device.mobileL} {\n\t\t\t.dychat-20210908 select:focus,\n\t\t\t.dychat-20210908 textarea:focus,\n\t\t\t.dychat-20210908 input:focus {\n\t\t\t\t\tfont-size: 16px;\n\t\t\t}\n\t}\n}\n\n`;\nexport default GlobalStyle;\n","import styled, { css } from 'styled-components';\n\n// responsive\nimport { device } from 'styles/mediaQueries';\n\nconst EngineStyles = styled.div`\n\tdiv,\n\tp {\n\t\t${({ isEnglish }) => {\n\t\t\treturn (\n\t\t\t\tisEnglish &&\n\t\t\t\tcss`\n\t\t\t\t\tword-break: keep-all;\n\t\t\t\t\tword-wrap: break-word;\n\t\t\t\t`\n\t\t\t);\n\t\t}}\n\t}\n\t/****** 런처 ******/\n\t/* 안내 문구 ( 상단 ) */\n\t.launcher-introbox-link-logo {\n\t\t${({ launcher }) => {\n\t\t\treturn launcher && launcher.introBox && launcher.introBox.logo\n\t\t\t\t? `background-image: url(${launcher.introBox.logo.url})`\n\t\t\t\t: `display: flex;\n align-items: center;\n justify-content: center;\n background-color: #fff;`;\n\t\t}};\n\t}\n\t.launcher-introbox-textcolor {\n\t\t/* 텍스트 색상 */\n\t\tcolor: ${({ launcher }) => {\n\t\t\treturn launcher && launcher.introBox && launcher.introBox.textColor;\n\t\t}};\n\t}\n\t.launcher-introbox-backgroundcolor {\n\t\t/* 배경 색상 */\n\t\tbackground-color: ${({ launcher }) => {\n\t\t\treturn launcher && launcher.introBox && launcher.introBox.backgroundColor;\n\t\t}};\n\t}\n\n\t.launcher-introbox-closeColor {\n\t\t/* 닫기 버튼 */\n\t\tsvg {\n\t\t\tpath {\n\t\t\t\tstroke: ${({ launcher }) => {\n\t\t\t\t\treturn launcher && launcher.introBox && launcher.introBox.closeColor;\n\t\t\t\t}};\n\t\t\t}\n\t\t}\n\t}\n\n\t/* 안내 문구 ( 하단 ) */\n\t.launcher-introbox-link {\n\t\t/* 텍스트 색상 */\n\t\tcolor: ${({ launcher }) => {\n\t\t\treturn launcher && launcher.introBox && launcher.introBox.link.textColor;\n\t\t}};\n\t\t/* 배경 색상 */\n\t\tbackground-color: ${({ launcher }) => {\n\t\t\treturn launcher && launcher.introBox\n\t\t\t\t? launcher.introBox.link.backgroundColor\n\t\t\t\t: '#e8490a';\n\t\t}};\n\t}\n\n\t/* 런처 버튼 */\n\t.launcher-chatbubble-position {\n\t\t/* 버튼 위치 */\n\t\ttop: ${({ launcher }) => {\n\t\t\tif (launcher && launcher.chatbubble && launcher.chatbubble.position.top) {\n\t\t\t\treturn launcher.chatbubble.position.top + 'px';\n\t\t\t}\n\n\t\t\treturn 'auto';\n\t\t}};\n\n\t\tbottom: ${({ launcher }) => {\n\t\t\tif (\n\t\t\t\tlauncher &&\n\t\t\t\tlauncher.chatbubble &&\n\t\t\t\tlauncher.chatbubble.position.bottom\n\t\t\t) {\n\t\t\t\treturn launcher.chatbubble.position.bottom + 'px';\n\t\t\t}\n\t\t\treturn 'auto';\n\t\t}};\n\n\t\tleft: ${({ launcher }) => {\n\t\t\tif (\n\t\t\t\tlauncher &&\n\t\t\t\tlauncher.chatbubble &&\n\t\t\t\tlauncher.chatbubble.position.left\n\t\t\t) {\n\t\t\t\treturn launcher.chatbubble.position.left + 'px';\n\t\t\t}\n\n\t\t\treturn 'auto';\n\t\t}};\n\n\t\tright: ${({ launcher }) => {\n\t\t\tif (\n\t\t\t\tlauncher &&\n\t\t\t\tlauncher.chatbubble &&\n\t\t\t\tlauncher.chatbubble.position.right\n\t\t\t) {\n\t\t\t\treturn launcher.chatbubble.position.right + 'px';\n\t\t\t}\n\t\t\treturn 'auto';\n\t\t}};\n\n\t\t/* position이 top이면 배너, 버튼 위치 변경 */\n\t\tdisplay: ${({ launcher }) => {\n\t\t\treturn launcher && launcher.chatbubble && launcher.chatbubble.position.top\n\t\t\t\t? 'flex'\n\t\t\t\t: 'block';\n\t\t}};\n\n\t\tflex-direction: ${({ launcher }) => {\n\t\t\treturn launcher && launcher.chatbubble && launcher.chatbubble.position.top\n\t\t\t\t? 'column'\n\t\t\t\t: 'row';\n\t\t}};\n\t}\n\n\t/* 모바일에서 위치 조정 */\n\t@media ${device.laptop} {\n\t\ttop: ${({ launcher }) => {\n\t\t\tif (launcher && launcher.chatbubble && launcher.chatbubble.position.top) {\n\t\t\t\treturn launcher.chatbubble.position.top / 2 + 'px';\n\t\t\t}\n\t\t}};\n\n\t\tbottom: ${({ launcher }) => {\n\t\t\tif (\n\t\t\t\tlauncher &&\n\t\t\t\tlauncher.chatbubble &&\n\t\t\t\tlauncher.chatbubble.position.bottom\n\t\t\t) {\n\t\t\t\treturn launcher.chatbubble.position.bottom / 2 + 'px';\n\t\t\t}\n\t\t}};\n\n\t\tleft: ${({ launcher }) => {\n\t\t\tif (launcher && launcher.chatbubble && launcher.chatbubble.position.left)\n\t\t\t\treturn launcher.chatbubble.position.left / 2 + 'px';\n\t\t}};\n\n\t\tright: ${({ launcher }) => {\n\t\t\tif (launcher && launcher.chatbubble && launcher.chatbubble.position.right)\n\t\t\t\treturn launcher.chatbubble.position.right / 2 + 'px';\n\t\t}};\n\t}\n\n\t.launcher-introbox-banner {\n\t\torder: ${({ launcher }) => {\n\t\t\treturn launcher && launcher.chatbubble && launcher.chatbubble.position.top\n\t\t\t\t? '2'\n\t\t\t\t: '';\n\t\t}};\n\t}\n\n\t.launcher-chatbubble {\n\t\torder: ${({ launcher }) => {\n\t\t\treturn launcher && launcher.chatbubble && launcher.chatbubble.position.top\n\t\t\t\t? '1'\n\t\t\t\t: '';\n\t\t}};\n\n\t\tsvg {\n\t\t\t/* 버튼 크기 */\n\t\t\twidth: ${({ launcher }) => {\n\t\t\t\treturn launcher && launcher.chatbubble\n\t\t\t\t\t? launcher.chatbubble.size\n\t\t\t\t\t: '50';\n\t\t\t}}px;\n\t\t\theight: ${({ launcher }) => {\n\t\t\t\treturn launcher && launcher.chatbubble\n\t\t\t\t\t? launcher.chatbubble.size\n\t\t\t\t\t: '50';\n\t\t\t}}px;\n\n\t\t\t/* 캐릭터 색상 */\n\t\t\tpath {\n\t\t\t\tfill: ${({ launcher }) => {\n\t\t\t\t\treturn launcher && launcher.chatbubble\n\t\t\t\t\t\t? launcher.chatbubble.color\n\t\t\t\t\t\t: '#fff';\n\t\t\t\t\t// ? 이전 >>> return launcher && launcher.chatbubble.color;\n\t\t\t\t}};\n\t\t\t}\n\t\t}\n\n\t\t/* 버튼 색상 */\n\t\tcircle {\n\t\t\tfill: ${({ launcher }) => {\n\t\t\t\treturn (\n\t\t\t\t\tlauncher && launcher.chatbubble && launcher.chatbubble.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\n\t\t${({ launcher }) => {\n\t\t\t// 오른쪽이면\n\t\t\tif (\n\t\t\t\tlauncher &&\n\t\t\t\tlauncher.chatbubble &&\n\t\t\t\tlauncher.chatbubble.position.right\n\t\t\t) {\n\t\t\t\treturn `text-align: right`;\n\t\t\t} else {\n\t\t\t\t// 왼쪽이면\n\t\t\t\treturn `text-align: left`;\n\t\t\t}\n\t\t}}\n\t}\n\n\t/* 진입화면 - 닫기 버튼 색상 */\n\t.home-closecolor {\n\t\tsvg {\n\t\t\tpath {\n\t\t\t\tstroke: ${({ homeStyle }) => {\n\t\t\t\t\treturn homeStyle && homeStyle.home && homeStyle.home.closeColor;\n\t\t\t\t}};\n\t\t\t}\n\t\t}\n\t}\n\n\t/* 진입화면 - 버튼 테두리 색상 (마우스 오버) */\n\t.home-button-hover {\n\t\t&:hover {\n\t\t\tborder-color: ${({ homeStyle }) => {\n\t\t\t\treturn homeStyle && homeStyle.home\n\t\t\t\t\t? homeStyle.home.button.hover.borderColor\n\t\t\t\t\t: '#e8490a';\n\t\t\t}};\n\t\t}\n\t}\n\t/* 진입화면 - 포지션 */\n\t.entry-position {\n\t\tposition: fixed;\n\t\tz-index: 999999;\n\n\t\t/* 버튼 위치 */\n\t\ttop: ${({ launcher }) => {\n\t\t\tif (launcher && launcher.chatbubble && launcher.chatbubble.position.top) {\n\t\t\t\treturn launcher.chatbubble.position.top + 'px';\n\t\t\t}\n\n\t\t\treturn 'auto';\n\t\t}};\n\n\t\tbottom: ${({ launcher }) => {\n\t\t\tif (\n\t\t\t\tlauncher &&\n\t\t\t\tlauncher.chatbubble &&\n\t\t\t\tlauncher.chatbubble.position.bottom\n\t\t\t) {\n\t\t\t\treturn launcher.chatbubble.position.bottom + 'px';\n\t\t\t}\n\t\t\treturn 'auto';\n\t\t}};\n\n\t\tleft: ${({ launcher }) => {\n\t\t\tif (\n\t\t\t\tlauncher &&\n\t\t\t\tlauncher.chatbubble &&\n\t\t\t\tlauncher.chatbubble.position.left\n\t\t\t) {\n\t\t\t\treturn launcher.chatbubble.position.left + 'px';\n\t\t\t}\n\n\t\t\treturn 'auto';\n\t\t}};\n\n\t\tright: ${({ launcher }) => {\n\t\t\tif (\n\t\t\t\tlauncher &&\n\t\t\t\tlauncher.chatbubble &&\n\t\t\t\tlauncher.chatbubble.position.right\n\t\t\t) {\n\t\t\t\treturn launcher.chatbubble.position.right + 'px';\n\t\t\t}\n\t\t\treturn 'auto';\n\t\t}};\n\n\t\t${({ isPage }) => {\n\t\t\t// 팝업 윈도우 ( isPage ) 스타일 및 반응형\n\t\t\tif (isPage) {\n\t\t\t\treturn css`\n\t\t\t\t\ttop: 50%;\n\t\t\t\t\tleft: 50%;\n\t\t\t\t\tbottom: auto;\n\t\t\t\t\tright: auto;\n\t\t\t\t\ttransform: translate(-50%, -50%);\n\n\t\t\t\t\t/* 채팅창 page 반응형 추가 */\n\t\t\t\t\t@media ${device.mobileL} {\n\t\t\t\t\t\ttop: 0;\n\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\tright: 0;\n\t\t\t\t\t\tbottom: 0;\n\n\t\t\t\t\t\ttransform: translate(0, 0);\n\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t\tborder-radius: 0;\n\n\t\t\t\t\t\theight: -webkit-fill-available;\n\t\t\t\t\t\theight: fill-available;\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t} else {\n\t\t\t\t// 일반 웹챗봇 반응형\n\t\t\t\treturn css`\n\t\t\t\t\t@media ${device.mobileL} {\n\t\t\t\t\t\ttop: 0;\n\t\t\t\t\t\tleft: 0;\n\t\t\t\t\t\tright: 0;\n\t\t\t\t\t\tbottom: 0;\n\n\t\t\t\t\t\ttransform: translate(0, 0);\n\n\t\t\t\t\t\twidth: 100%;\n\t\t\t\t\t\theight: 100%;\n\t\t\t\t\t\tborder-radius: 0;\n\n\t\t\t\t\t\theight: -webkit-fill-available;\n\t\t\t\t\t\theight: fill-available;\n\t\t\t\t\t}\n\t\t\t\t`;\n\t\t\t}\n\t\t}}\n\t}\n\n\t/****** 상단 ******/\n\t/* 아이콘 색상 */\n\t.chat-header-icon-close-color {\n\t\tsvg {\n\t\t\tpath {\n\t\t\t\tstroke: ${({ homeStyle }) =>\n\t\t\t\t\thomeStyle && homeStyle.design && homeStyle.design.top.iconColor};\n\t\t\t}\n\t\t}\n\t}\n\t.chat-header-icon-setting-color {\n\t\tsvg {\n\t\t\tpath {\n\t\t\t\tfill: ${({ homeStyle }) =>\n\t\t\t\t\thomeStyle && homeStyle.design && homeStyle.design.top.iconColor};\n\t\t\t}\n\t\t}\n\t}\n\n\t/* 텍스트 색상 */\n\t.chat-header-brand-name-color {\n\t\tcolor: ${({ homeStyle }) =>\n\t\t\thomeStyle && homeStyle.design && homeStyle.design.top.brandNameColor};\n\t}\n\n\t/* 헤더 배경 색상 */\n\t.chat-header-background-color {\n\t\tbackground-color: ${({ homeStyle }) =>\n\t\t\thomeStyle && homeStyle.design && homeStyle.design.top.backgroundColor};\n\t}\n\n\t/****** 하단 ******/\n\t/* 배경 */\n\t.bottom-background-type {\n\t\tbackground-attachment: scroll;\n\t\tbackground-repeat: no-repeat;\n\t\tbackground-size: cover;\n\t\tbackground-position: center;\n\n\t\t${({ homeStyle }) => {\n\t\t\t// 일반 컬러일때\n\t\t\tif (homeStyle && homeStyle.design && homeStyle.design.bottom) {\n\t\t\t\t// 배경 없음시 디폴트 '#ffffff'\n\t\t\t\tif (homeStyle.design.bottom.background.value === null) {\n\t\t\t\t\treturn `background-color : #ffffff`;\n\t\t\t\t}\n\t\t\t\t// 이미지 배경일때\n\t\t\t\tif (homeStyle.design.bottom.background.type === 'IMAGE') {\n\t\t\t\t\treturn `background-image: url(${homeStyle.design.bottom.background.value.url})}`;\n\t\t\t\t}\n\n\t\t\t\treturn `background-color : ${homeStyle.design.bottom.background.value}`;\n\t\t\t}\n\t\t}}\n\t}\n\n\t/* 시스템 메시지 */\n\t.bottom-system-textcolor {\n\t\t/* 날짜 시간 텍스트 색상 */\n\t\tcolor: ${({ homeStyle }) =>\n\t\t\thomeStyle &&\n\t\t\thomeStyle.design &&\n\t\t\thomeStyle.design.bottom.system.textColor};\n\t}\n\t.bottom-system-sender-action-color {\n\t\t/* 보내기버튼 색상 */\n\t\t.spinner > div {\n\t\t\tbackground-color: ${({ homeStyle }) =>\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.bottom.system.senderActionColor};\n\t\t}\n\t}\n\t/* 사용자 텍스트 */\n\t.bottom-user-textcolor {\n\t\tp {\n\t\t\t/* 텍스트 색상 */\n\t\t\tcolor: ${({ homeStyle }) =>\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.bottom.user.textColor};\n\t\t\t/* 텍스트 볼드 */\n\t\t\tfont-weight: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.bottom.user.isBold &&\n\t\t\t\t\t700\n\t\t\t\t);\n\t\t\t}};\n\t\t\t/* 배경 색상 */\n\t\t\tbackground-color: ${({ homeStyle }) =>\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.bottom.user.backgroundColor};\n\t\t}\n\t}\n\n\t/* 텍스트 입력 상자 */\n\t.bottom-textinput-textcolor {\n\t\t/* 텍스트 색상 */\n\t\tcolor: ${({ homeStyle }) =>\n\t\t\thomeStyle &&\n\t\t\thomeStyle.design &&\n\t\t\thomeStyle.design.bottom.textInput.textColor};\n\n\t\t/* 텍스트 색상 (안내메시지) */\n\t\t&::-webkit-input-placeholder {\n\t\t\t/* Chrome/Opera/Safari */\n\t\t\tcolor: ${({ homeStyle }) =>\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.bottom.textInput.placeholder.color};\n\t\t}\n\t\t&::-moz-placeholder {\n\t\t\t/* Firefox 19+ */\n\t\t\tcolor: ${({ homeStyle }) =>\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.bottom.textInput.placeholder.color};\n\t\t}\n\t\t&:-ms-input-placeholder {\n\t\t\t/* IE 10+ */\n\t\t\tcolor: ${({ homeStyle }) =>\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.bottom.textInput.placeholder.color};\n\t\t}\n\t\t&:-moz-placeholder {\n\t\t\t/* Firefox 18- */\n\t\t\tcolor: ${({ homeStyle }) =>\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.bottom.textInput.placeholder.color};\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\tfont-size: 16px;\n\n\t\t\t&:focus {\n\t\t\t\tfont-size: 16px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.chat-bottom-textinput-backgroundcolor {\n\t\t/* 배경 색상 */\n\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\treturn homeStyle && homeStyle.design\n\t\t\t\t? homeStyle.design.bottom.textInput.backgroundColor\n\t\t\t\t: '#ecf0f3';\n\t\t}};\n\t}\n\n\t/****** 답변 아이템 ******/\n\t/* 텍스트 */\n\t.item-text {\n\t\t/* 텍스트 색상 */\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle && homeStyle.design && homeStyle.design.items.text.textColor\n\t\t\t);\n\t\t}};\n\n\t\t/* 배경 색상 */\n\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.text.backgroundColor\n\t\t\t);\n\t\t}};\n\n\t\t/* 텍스트 볼드 */\n\t\tfont-weight: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.text.isBold &&\n\t\t\t\t700\n\t\t\t);\n\t\t}};\n\t}\n\n\t/* 카드 */\n\t.items-card-titlecolor {\n\t\t/* 텍스트 색상 ( 제목 ) */\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle && homeStyle.design && homeStyle.design.items.card.titleColor\n\t\t\t);\n\t\t}};\n\t\t/* 텍스트 볼드 ( 제목 ) */\n\t\tfont-weight: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.card.isTitleBold &&\n\t\t\t\t500\n\t\t\t);\n\t\t}};\n\t}\n\t.items-card-descriptioncolor {\n\t\t/* 텍스트 색상 ( 설명 ) */\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.card.descriptionColor\n\t\t\t);\n\t\t}};\n\t}\n\t.items-card-button {\n\t\t/* 텍스트 색상 ( 버튼 ) */\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.card.buttonTextColor\n\t\t\t);\n\t\t}};\n\n\t\t/* 버튼 구분선 */\n\t\tborder-top-color: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.card.buttonLineColor\n\t\t\t);\n\t\t}};\n\t}\n\t.items-card-backgroundColor {\n\t\t/* 배경색상 */\n\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.card.backgroundColor\n\t\t\t);\n\t\t}};\n\t}\n\t/* 케로셀 */\n\t.items-carousel-button {\n\t\t/* 버튼 색상 ( 기본 ) */\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.carousel.button.default.textColor\n\t\t\t);\n\t\t}};\n\t\t/* 배경 색상 */\n\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.carousel.button.default.backgroundColor\n\t\t\t);\n\t\t}};\n\n\t\t/* 버튼 색상 ( 호버 ) */\n\t\t&:hover,\n\t\t&.active {\n\t\t\t/* 텍스트 색상 */\n\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.carousel.button.hover.textColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\t/* 배경 색상 */\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.carousel.button.hover.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\t}\n\t/* 메뉴 */\n\t.items-menu-button {\n\t\t/* 텍스트 색상 */\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.menu.button.default.textColor\n\t\t\t);\n\t\t}};\n\n\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.menu.button.default.backgroundColor\n\t\t\t);\n\t\t}};\n\n\t\t/* 테두리 색상 ( 호버) */\n\n\t\t&:hover {\n\t\t\tborder-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.menu.button.hover.borderColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.menu.button.hover.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\n\t\t&.just-icon {\n\t\t\t&:hover {\n\t\t\t\tbox-shadow: 0 0 0 1px\n\t\t\t\t\t${({ homeStyle }) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\t\thomeStyle.design.items.menu.button.hover.borderColor\n\t\t\t\t\t\t);\n\t\t\t\t\t}};\n\t\t\t}\n\t\t}\n\t}\n\t/* 퀵리플라이 */\n\t.items-quickreply-button {\n\t\tli {\n\t\t\t/* 텍스트 색상 */\n\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.quickReply.button.default.textColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\t/* 배경 색상 */\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.quickReply.button.default.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\t/* 테두리 색상 */\n\t\t\tborder-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.quickReply.button.default.borderColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\t/* 호버 */\n\t\t\t&:hover {\n\t\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.quickReply.button.hover.textColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\n\t\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.quickReply.button.hover.backgroundColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\n\t\t\t\tborder-color: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.quickReply.button.hover.backgroundColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\t\t\t}\n\t\t}\n\t\t/* 상위 퀵리플라이 버튼 */\n\t\tspan {\n\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.quickReply.button.hover.textColor\n\t\t\t\t);\n\t\t\t}};\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.quickReply.button.hover.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\t\t\tborder-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.quickReply.button.hover.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\t}\n\n\t/* 멀티퀵리플라이 뒤로가기 */\n\t.items-quickreply-goback {\n\t\t/* 테두리 색상 */\n\t\tcircle {\n\t\t\tfill: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.quickReply.button.default.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\t\t\tstroke: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.quickReply.button.default.borderColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\t\t/* 화살표 */\n\t\tpath {\n\t\t\tstroke: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.quickReply.button.default.borderColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\n\t\t&:hover {\n\t\t\tcircle {\n\t\t\t\tfill: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.quickReply.button.default.borderColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\t\t\t\tstroke: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.quickReply.button.default.borderColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\t\t\t}\n\t\t\t/* 화살표 */\n\t\t\tpath {\n\t\t\t\tstroke: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.quickReply.button.backgroundColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\t\t\t}\n\t\t}\n\t}\n\n\t/* 캘린더 */\n\t.items-calendar-buttons {\n\t\t/* 확인 버튼 ( 기본 ) */\n\t\t.confirm-btn {\n\t\t\t/* 텍스트 색상 */\n\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.calendar.confirmButton.default.textColor\n\t\t\t\t);\n\t\t\t}};\n\t\t\t/* 배경 색상 */\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.calendar.confirmButton.default.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\t/* 테두리 색상 */\n\t\t\tborder-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.calendar.confirmButton.default.borderColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\t/* 마우스 호버 */\n\t\t\t&:hover {\n\t\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.calendar.confirmButton.hover.textColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\t\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.calendar.confirmButton.hover.backgroundColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\t\t\t}\n\t\t}\n\t\t/* 취소버튼 */\n\t\t.cancel-btn {\n\t\t\t/* 텍스트 색상 */\n\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.calendar.cancelButton.default.textColor\n\t\t\t\t);\n\t\t\t}};\n\t\t\t/* 배경 색상 */\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.calendar.cancelButton.default.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\t/* 테두리 색상 */\n\t\t\tborder-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.calendar.cancelButton.default.borderColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\t/* 마우스 오버 */\n\t\t\t&:hover {\n\t\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.calendar.cancelButton.hover.textColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\n\t\t\t\t/* 배경 색상 */\n\t\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\thomeStyle.design.items.calendar.cancelButton.hover.backgroundColor\n\t\t\t\t\t);\n\t\t\t\t}};\n\t\t\t}\n\t\t}\n\n\t\t.calender-custom-style {\n\t\t\t&.calender-custom-wrap {\n\t\t\t\t.calendar-background {\n\t\t\t\t\tbackground: ${({ homeStyle }) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\t\thomeStyle.design.items.calendar.backgroundColor\n\t\t\t\t\t\t);\n\t\t\t\t\t}};\n\t\t\t\t}\n\n\t\t\t\t.Calendar__day {\n\t\t\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\t\thomeStyle.design.items.calendar.textColor\n\t\t\t\t\t\t);\n\t\t\t\t\t}};\n\t\t\t\t}\n\n\t\t\t\t.Calendar__weekDay {\n\t\t\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\t\thomeStyle.design.items.calendar.textColor\n\t\t\t\t\t\t);\n\t\t\t\t\t}};\n\t\t\t\t}\n\n\t\t\t\t.Calendar__day.-disabled {\n\t\t\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\t\thomeStyle.design.items.calendar.disableTextColor\n\t\t\t\t\t\t);\n\t\t\t\t\t}};\n\t\t\t\t}\n\n\t\t\t\t.calendar-time-wrap {\n\t\t\t\t\tborder-color: ${({ homeStyle }) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\t\thomeStyle.design.items.calendar.borderColor\n\t\t\t\t\t\t);\n\t\t\t\t\t}};\n\n\t\t\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\t\thomeStyle.design.items.calendar.backgroundColor\n\t\t\t\t\t\t);\n\t\t\t\t\t}};\n\n\t\t\t\t\t.selectbox-value {\n\t\t\t\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\t\t\thomeStyle.design.items.calendar.textColor\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}};\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/* 선택박스 */\n\t.items-selectbox-title {\n\t\t/* 텍스트 색상 ( 제목 ) */\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.selectBox.titleColor\n\t\t\t);\n\t\t}};\n\n\t\t/* 텍스트 볼드 ( 제목 ) */\n\t\tfont-weight: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.selectBox.isTitleBold &&\n\t\t\t\t700\n\t\t\t);\n\t\t}};\n\t}\n\n\t.items-selectbox-description {\n\t\t/* 텍스트 색상 ( 내용 ) */\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.selectBox.descriptionColor\n\t\t\t);\n\t\t}};\n\t}\n\n\t/* 체크 아이콘 ( 활성 ) */\n\t.items-selectbox-icon {\n\t\t& + div {\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.selectBox.icon.default.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\n\t\t&:not(:disabled):checked + div {\n\t\t\t/* 체크 아이콘 색상 */\n\t\t\tsvg {\n\t\t\t\tpath {\n\t\t\t\t\tstroke: ${({ homeStyle }) => {\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\thomeStyle &&\n\t\t\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\t\t\thomeStyle.design.items.selectBox.icon.selected.color\n\t\t\t\t\t\t);\n\t\t\t\t\t}};\n\t\t\t\t}\n\t\t\t}\n\t\t\t/* 채우기 */\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.selectBox.icon.selected.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\t}\n\t/* 만족도 */\n\t.items-rating-titlecolor {\n\t\t/* 텍스트 색상 */\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.rating.titleColor\n\t\t\t);\n\t\t}};\n\n\t\t/* 텍스트 볼드 */\n\t\tfont-weight: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.rating.isTitleBold &&\n\t\t\t\t700\n\t\t\t);\n\t\t}};\n\t}\n\t.items-rating-score-textcolor {\n\t\t/* 점수 텍스트 색상 */\n\t\t> span {\n\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.rating.score.textColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\t}\n\t.items-rating-score-smilecolor {\n\t\t/* face */\n\t\t.icon-bg svg path,\n\t\t.icon-bg svg line {\n\t\t\tstroke: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.rating.icon.smileColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\t}\n\t.items-rating-score-starcolor {\n\t\t/* star */\n\t\t.icon-bg svg path {\n\t\t\tfill: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.rating.icon.starColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\t}\n\n\t/* 질문하기 */\n\t.items-question-background {\n\t\t/* 배경 색상 */\n\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.items.question.backgroundColor\n\t\t\t);\n\t\t}};\n\t}\n\t.items-question-text {\n\t\t/* 텍스트 색상 ( 질문 )*/\n\t\tp {\n\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.question.textColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\n\t\t/* 배경색상 */\n\t\tspan {\n\t\t\tcolor: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.question.answer.textColor\n\t\t\t\t);\n\t\t\t}};\n\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn (\n\t\t\t\t\thomeStyle &&\n\t\t\t\t\thomeStyle.design &&\n\t\t\t\t\thomeStyle.design.items.question.answer.backgroundColor\n\t\t\t\t);\n\t\t\t}};\n\t\t}\n\t}\n\n\t/* 제네릭 메뉴 */\n\t.generic-menu-button {\n\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle &&\n\t\t\t\thomeStyle.design &&\n\t\t\t\thomeStyle.design.genericMenu.button.backgroundColor\n\t\t\t);\n\t\t}};\n\t}\n\t.generic-menu-textcolor {\n\t\tcolor: ${({ homeStyle }) => {\n\t\t\treturn (\n\t\t\t\thomeStyle && homeStyle.design && homeStyle.design.genericMenu.textColor\n\t\t\t);\n\t\t}};\n\t}\n\t.is-active.generic-menu-backgroundcolor {\n\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\treturn homeStyle && homeStyle.design\n\t\t\t\t? homeStyle.design.genericMenu.backgroundColor\n\t\t\t\t: 'transparent';\n\t\t}};\n\n\t\t&.is-active ul {\n\t\t\tbackground-color: ${({ homeStyle }) => {\n\t\t\t\treturn homeStyle && homeStyle.design\n\t\t\t\t\t? homeStyle.design.genericMenu.backgroundColor\n\t\t\t\t\t: '#fff';\n\t\t\t}};\n\t\t}\n\t}\n`;\n\nexport default EngineStyles;\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBannerClose(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 7,\n height: 7,\n viewBox: \"0 0 7 7\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.630783 0.630295L6.37023 6.36975\",\n stroke: \"#C4C4C4\",\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M0.630783 6.36975L6.37023 0.630295\",\n stroke: \"#C4C4C4\",\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBannerClose);\nexport default __webpack_public_path__ + \"static/media/banner-close.299b923a.svg\";\nexport { ForwardRef as ReactComponent };","import { TypedUseSelectorHook, useDispatch, useSelector } from 'react-redux';\nimport type { RootState, AppDispatch } from '../store';\n\n// Use throughout your app instead of plain `useDispatch` and `useSelector`\nexport const useAppDispatch = () => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconLogo(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 20,\n height: 24,\n viewBox: \"0 0 20 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.0002 0.442871L0.0834961 6.20093V17.6531L10.0002 23.4111L19.9168 17.6531V6.20093L10.0002 0.442871ZM18.8932 17.0773L12.3674 20.852L12.3034 11.5111L15.7582 9.71975V8.12029L10.7679 10.6794V21.6837L10.0002 22.1956L1.10716 17.0773V6.77674L10.0002 1.65846L18.8932 6.77674V17.0773Z\",\n fill: \"#E8490A\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M2.64205 8.95206L7.63236 11.5112L7.5684 19.1886L9.16786 20.0843V10.7435L2.64205 7.3526V8.95206Z\",\n fill: \"#E8490A\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconLogo);\nexport default __webpack_public_path__ + \"static/media/icon-logo.8798ae0a.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from 'react';\nimport styled from 'styled-components';\n//img\nimport { ReactComponent as BtnClose } from 'assets/images/banner-close.svg';\n//hook\nimport { useAppSelector } from 'lib/hook';\n//response\nimport { device } from 'styles/mediaQueries';\n\nconst Popup = () => {\n\tconst [popup, setPopup] = useState(true);\n\tconst { isPopup } = useAppSelector((state) => state.engine);\n\n\t//close event\n\tconst handleClose = (e) => {\n\t\te.stopPropagation();\n\t\tsetPopup(false);\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{popup && (\n\t\t\t\t\n\t\t\t\t\t{isPopup.text}\n\t\t\t\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default Popup;\n\nconst PopupWrap = styled.div`\n\tbackground-color: #fff;\n\tcolor: #333;\n\twidth: 295px;\n\tpadding: 20px 23px;\n\tbox-shadow: 0px 2px 8px rgba(0, 0, 0, 0.16);\n\tborder-radius: 5px;\n\tmargin: 12px 0;\n\tfont-size: 12px;\n\tline-height: 17px;\n\t/* \\n 인지 해주는 스타일 */\n\twhite-space: pre-wrap;\n\t/* 문장이 너무 길어지면 들여쓰기 해줌 */\n\tword-break: break-all;\n\n\tposition: relative;\n\n\t&:hover {\n\t\tcursor: pointer;\n\t}\n\n\t${({ style }) => {\n\t\treturn style;\n\t}}\n\n\tsvg {\n\t\tpath {\n\t\t\tstroke: ${({ style }) => {\n\t\t\t\treturn style && style.closeColor;\n\t\t\t}};\n\t\t}\n\t}\n\n\t.popup-close-btn {\n\t\tposition: absolute;\n\t\ttop: 8px;\n\t\tright: 8px;\n\t\tz-index: 99999999;\n\n\t\t&:hover {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\tsvg {\n\t\t\tdisplay: block;\n\t\t\twidth: 10px;\n\t\t\theight: 10px;\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\tsvg {\n\t\t\t\twidth: 10px;\n\t\t\t\theight: 10px;\n\t\t\t}\n\t\t}\n\t}\n`;\n","// let url =\n// \tprocess && process.env.NODE_ENV !== 'production'\n// \t\t? 'dev.cloudturing.chat'\n// \t\t: 'cloudturing.chat';\n\n// let url = 'cloudturing.chat';\nlet url = process.env.REACT_APP_API_HOST;\n\n// if (typeof window !== 'undefined') {\n// if (\n// \twindow.location.hostname.indexOf('development') > -1 ||\n// \twindow.location.hostname.indexOf('localhost') > -1 ||\n// \twindow.location.hostname.indexOf('demo.json2bot.chat') > -1\n// ) {\n// \turl = 'dev.cloudturing.chat';\n// }\n// }\n\nexport let baseUrl = `https://${url}/v1.0/api`;\nexport let wsUrl = `wss://${url}/v1.0/api`;\n","import axios from 'axios';\nimport { baseUrl } from 'lib/helpers/baseUrlChecker';\nimport { ThunkAction, ThunkDispatch } from 'redux-thunk';\nimport { AnyAction } from 'redux';\nimport { RootState } from '../store';\n\nexport const api = axios.create({\n\tbaseURL: baseUrl,\n\twithCredentials: true,\n});\n\napi.interceptors.request.use((config) => {\n\tconst localcookie = document.cookie\n\t\t.split(';')\n\t\t.map((e) => e.trim().split('='))\n\t\t.filter((e) => (e[0] === 'X-User-Session' ? true : false));\n\n\tif (localcookie.length) {\n\t\tconfig.headers.common['X-User-Session'] = localcookie[0][1];\n\t}\n\n\treturn config;\n});\n\n// 비동기 통신\n// 이전 대화 가져오기\n// ! check\n// export function fetchHistory(chatbotId) {\n// \treturn async function fetchHistoryThunk(dispatch) {\n// \t\tconst response = await api.get(`chatbots/${chatbotId}/history`);\n// \t\tdispatch({\n// \t\t\ttype: 'HISTORY',\n// \t\t\tpayload: response.data,\n// \t\t});\n// \t};\n// }\n\nexport function fetchHistory(chatbotId) {\n\treturn async function fetchHistoryThunk(dispatch) {\n\t\ttry {\n\t\t\tconst response = await api.get(`chatbots/${chatbotId}/history`);\n\t\t\tdispatch({\n\t\t\t\ttype: 'HISTORY',\n\t\t\t\tpayload: response.data,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.log(error);\n\t\t}\n\t};\n}\n\n// 채팅창 스타일 가져오기\nexport function fetchHome(chatbotId: string) {\n\treturn async function fetchHomeThunk(dispatch) {\n\t\ttry {\n\t\t\tconst response = await api.get(`chatbots/${chatbotId}/home`);\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'HOME',\n\t\t\t\tpayload: response.data,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.log(error);\n\t\t}\n\t};\n}\n\n// 런처\nexport function fetchLauncher(chatbotId) {\n\treturn async function fetchLauncherThunk(dispatch) {\n\t\ttry {\n\t\t\tconst response = await api.get(`chatbots/${chatbotId}/launcher/page`);\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'LAUNCHER',\n\t\t\t\tpayload: response.data.launcher,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.log(error);\n\t\t}\n\t};\n}\n\n// 진입화면 채널종류\nexport function fetchChannel(chatbotId) {\n\treturn async function fetchChannelThunk(dispatch) {\n\t\ttry {\n\t\t\tconst response = await api.get(`chatbots/${chatbotId}/channel`);\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'CHANNEL',\n\t\t\t\tpayload: response.data.channel,\n\t\t\t});\n\t\t} catch (error) {\n\t\t\tconsole.log(error);\n\t\t}\n\t};\n}\n\n// 대화 삭제 지우기\nexport function deleteChat(chatbotId) {\n\treturn async function deleteChatThunk(dispatch) {\n\t\ttry {\n\t\t\tconst response = await api.delete(`chatbots/${chatbotId}/clear`);\n\n\t\t\tif (response) {\n\t\t\t\tdispatch({\n\t\t\t\t\ttype: 'RESET_MESSAGE',\n\t\t\t\t});\n\t\t\t}\n\t\t} catch (error) {\n\t\t\tconsole.log(error);\n\t\t}\n\t};\n}\n\n// 이미지 업로드\nexport function postImageUpload(formData) {\n\treturn async function postImageUploadThunk(dispatch) {\n\t\ttry {\n\t\t\tlet res = await api.post(`file-upload`, formData, {\n\t\t\t\theaders: {\n\t\t\t\t\t'Content-Type': 'multipart/form-data',\n\t\t\t\t},\n\t\t\t});\n\n\t\t\tlet data = await res.data;\n\n\t\t\t// 성공하면 화면에 표시\n\t\t\tdispatch({\n\t\t\t\ttype: 'ADD_MESSAGE',\n\t\t\t\tpayload: {\n\t\t\t\t\ttype: 'image',\n\t\t\t\t\timage: data.url,\n\t\t\t\t},\n\t\t\t});\n\n\t\t\treturn {\n\t\t\t\ttype: 'file',\n\t\t\t\tfileKeyValue: data.fileKeyValue,\n\t\t\t\tmimetype: data.mimetype,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tconsole.log(error);\n\t\t}\n\t};\n}\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n// image\nimport { ReactComponent as BtnClose } from 'assets/images/banner-close.svg'; // 닫기 버튼\nimport { ReactComponent as BannerLogo } from 'assets/images/icon-logo.svg'; // 배너 로고\n// lib\nimport { useAppSelector } from 'lib/hook';\nimport { api } from 'lib/api';\n//response\nimport { device } from 'styles/mediaQueries';\n\nconst Banner = () => {\n\tconst [isOpen, setIsOpen] = useState(true);\n\tconst introBox = useAppSelector((state) =>\n\t\tstate.engine.launcher ? state.engine.launcher.introBox : null\n\t);\n\n\t// 배너 닫기 이벤트\n\tconst onClickBannerClose = () => {\n\t\tsetIsOpen(false);\n\n\t\t// 다른 페이지에서도 배너 안뜨게 설정\n\t\twindow.sessionStorage.setItem('banner', 'closed');\n\n\t\t// GA 이벤트 보내기\n\t\tlet checkDfId = window.dyc ? window.dyc.chatbotUid : '';\n\t\tif (checkDfId) {\n\t\t\tapi.get(`/chatbots/${checkDfId}/analytics?action=closeintrobox`);\n\t\t}\n\t};\n\n\t// 튜링 홈페이지에서 배너하단 문의하기 링크 클릭시 utm 유지\n\tlet isCloudturingPage =\n\t\twindow.dyc.chatbotUid === 'f656fa94e1f2a990' ? true : false;\n\n\t// 하단 링크가 cloudturing.com일대 utm 추가\n\tlet checkIntroBoxLink = '#';\n\tif (introBox) {\n\t\tcheckIntroBoxLink =\n\t\t\tintroBox.link.url.indexOf('cloudturing.com') > -1 &&\n\t\t\twindow.location.hostname.indexOf('json2bot.chat') < 0 &&\n\t\t\twindow.location.hostname.indexOf('localhost') < 0 &&\n\t\t\t!isCloudturingPage // 튜링 홈페이지는 /contact 페이지여서 예외처리 추가\n\t\t\t\t? `${introBox.link.url}?utm_source=builder_chatbot&utm_medium=${window.location.hostname}&utm_campaign=create_own_launcher`\n\t\t\t\t: introBox.link.url;\n\t}\n\n\t// * tabindex enter\n\tconst tabEnter = (e) => {\n\t\tif (e.key === 'Enter') onClickBannerClose();\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t{isOpen && introBox && (\n\t\t\t\t\n\t\t\t\t\t{/* 로고, 안내문구 영역 */}\n\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t{introBox.logo ? (\n\t\t\t\t\t\t\t\tlogo\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t{introBox.title}\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t\t\t{introBox.description}\n\t\t\t\t\t\t\t

\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t{/* 닫기 버튼 */}\n\t\t\t\t\t\n\t\t\t\t\t\t

닫기

\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t{/* 하단 링크 */}\n\t\t\t\t\t{introBox.link.enabled && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{introBox.link.text}\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t
\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default Banner;\n\nconst BannerStyle = styled.div`\n\twidth: 295px;\n\n\tbox-shadow: 0px 2px 10px rgba(0, 0, 0, 0.12);\n\tborder-radius: 8px;\n\n\tposition: relative;\n\toverflow: hidden;\n\n\t&.launcher-introbox-banner {\n\t\tmargin: 12px 0;\n\t}\n\n\t.banner-logo-area {\n\t\tpadding: 20px 25px;\n\t\tdisplay: flex;\n\t}\n\n\t.banner-logo {\n\t\twidth: 34px;\n\t\theight: 34px;\n\t\tflex-shrink: 0;\n\t\tborder-radius: 50%;\n\t\tbox-shadow: 0px 0px 8px rgba(0, 0, 0, 0.12);\n\t\tmargin-right: 15px;\n\t\toverflow: hidden;\n\t\tbackground-size: cover;\n\n\t\tsvg {\n\t\t\twidth: 20px;\n\t\t}\n\n\t\timg {\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t.banner-text {\n\t\tp {\n\t\t\tfont-size: 12px;\n\t\t}\n\n\t\t.banner-title {\n\t\t\tfont-weight: 700;\n\t\t}\n\t}\n\n\t.banner-link {\n\t\tpadding: 11px;\n\t\ttext-align: center;\n\t\tdisplay: block;\n\n\t\tcolor: #fff;\n\n\t\tfont-size: 12px;\n\t\tfont-weight: 700;\n\t}\n\n\t.banner-close-btn {\n\t\tposition: absolute;\n\t\ttop: 8px;\n\t\tright: 8px;\n\n\t\t&:hover {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\tsvg {\n\t\t\tdisplay: block;\n\t\t\twidth: 10px;\n\t\t\theight: 10px;\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\tsvg {\n\t\t\t\twidth: 8px;\n\t\t\t\theight: 8px;\n\t\t\t}\n\t\t}\n\t}\n\n\t@media ${device.tablet} {\n\t\twidth: 280px;\n\t\tmargin: 7px 0;\n\n\t\t.banner-logo {\n\t\t\twidth: 24px;\n\t\t\theight: 24px;\n\t\t\tmargin-right: 7px;\n\t\t}\n\t\t.banner-text {\n\t\t\tfont-size: 11px;\n\n\t\t\tletter-spacing: -0.03em;\n\t\t}\n\n\t\t.banner-logo-area {\n\t\t\tpadding: 15px 20px;\n\t\t}\n\n\t\t.banner-link {\n\t\t\tfont-size: 11px;\n\t\t\tpadding: 9px;\n\t\t}\n\t}\n\t@media ${device.mobileL} {\n\t\twidth: 260px;\n\t}\n`;\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgHeaderClose(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n className: \"chat-btn-close\",\n d: \"M1 1L11 11\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n className: \"chat-btn-close\",\n d: \"M1 11L11 1\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgHeaderClose);\nexport default __webpack_public_path__ + \"static/media/header-close.323f3984.svg\";\nexport { ForwardRef as ReactComponent };","import React, { memo, useEffect, useCallback } from 'react';\nimport styled from 'styled-components';\n// image\nimport { ReactComponent as LauncherIcon } from 'assets/images/launcher.svg';\n// lib\nimport { useAppSelector, useAppDispatch } from 'lib/hook';\n// component\nimport Popup from './Popup';\nimport Banner from './Banner';\n// helpers\nimport { isDev } from 'lib/helpers/isDev';\n\nconst LauncherWrap = styled.div`\n\tposition: fixed;\n\tz-index: 999999;\n\n\t.launcher-chatbubble:hover {\n\t\tsvg {\n\t\t\tcursor: pointer;\n\t\t}\n\t}\n`;\n\nconst EngineLauncher = memo(() => {\n\tconst dispatch = useAppDispatch();\n\tconst { isPopup } = useAppSelector((state) => state.engine);\n\n\tconst chatbotUid = window.dyc ? window.dyc.chatbotUid : null;\n\tconst pageChatbot = window.dyc ? window.dyc.pageChatbot : null;\n\n\t// 둥둥이 열림/닫힘 이벤트\n\tconst onClickLauncherIcon = useCallback((e) => {\n\t\te.stopPropagation();\n\n\t\t// page 웹챗봇으로 redirect\n\t\tif (pageChatbot) {\n\t\t\tlet url = isDev()\n\t\t\t\t? `https://${chatbotUid}.page-test.cloudturing.app`\n\t\t\t\t: `https://${chatbotUid}.page.cloudturing.app`;\n\n\t\t\twindow.open(url, '', 'left=100,top=300,width=600,height=800');\n\n\t\t\treturn;\n\t\t}\n\n\t\tdispatch({\n\t\t\ttype: 'SET_TYPE',\n\t\t\tpayload: 'ENTRY',\n\t\t});\n\t}, []);\n\n\t// * tabindex enter\n\tconst tabEnter = (e) => {\n\t\tif (e.key === 'Enter') onClickLauncherIcon(e);\n\t};\n\n\t// 사용자가 닫았는지 체크 - 값이 없으면 null\n\tlet statusBanner = window.sessionStorage.getItem('banner');\n\n\treturn (\n\t\t\n\t\t\t{isPopup ? : !statusBanner ? : null}\n\t\t\t
\n\t\t\t\t

챗봇시작

\n\t\t\t\t\n\t\t\t
\n\t\t
\n\t);\n});\n\nexport default EngineLauncher;\n","export const isDev = () => {\n\tif (typeof window !== 'undefined') {\n\t\tif (\n\t\t\twindow.location.hostname.indexOf('development') > -1 ||\n\t\t\twindow.location.hostname.indexOf('localhost') > -1 ||\n\t\t\twindow.location.hostname.indexOf('demo.json2bot.chat') > -1\n\t\t) {\n\t\t\treturn true;\n\t\t}\n\t}\n\n\treturn false;\n};\n","import React, { useState, useEffect } from 'react';\n\n// page챗봇 체크하는 훅\nexport default function useIsPage() {\n\tconst [isPage, setIsPage] = useState(false);\n\n\tuseEffect(() => {\n\t\tconst qs = window.location.search;\n\t\tconst params = new URLSearchParams(qs);\n\t\tconst getIsPage = params.get('isPage');\n\n\t\tif (getIsPage === 'true') {\n\t\t\tsetIsPage(true);\n\t\t}\n\t}, []);\n\n\treturn isPage;\n}\n","import styled, { css } from 'styled-components';\n\n// responsive\nimport { device } from 'styles/mediaQueries';\n\n// lib\nimport useIsPage from 'lib/helpers/useIsPage';\n\nconst ChatLayoutStyle = styled.div`\n\twidth: 370px;\n\theight: 678px;\n\tposition: relative;\n\ttop: 0;\n\tleft: 50%;\n\ttransform: translateX(-50%);\n\tz-index: 100;\n\tbox-shadow: 0px 0px 20px rgba(0, 0, 0, 0.2);\n\tbackground-color: #fff;\n\tborder-radius: 40px 40px 0 40px;\n\toverflow: hidden;\n\n\t${({ isPage }) => {\n\t\tif (isPage) {\n\t\t\t// 팝업 윈도우 ( isPage ) 반응형\n\t\t\treturn css`\n\t\t\t\t@media ${device.mobileL} {\n\t\t\t\t\tborder-radius: 0;\n\t\t\t\t\theight: -webkit-fill-available;\n\t\t\t\t\theight: fill-available;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\t// 일반 웹챗봇 반응형\n\t\t\treturn css`\n\t\t\t\t@media ${device.laptopL} {\n\t\t\t\t\twidth: 320px;\n\t\t\t\t\theight: 530px;\n\t\t\t\t}\n\t\t\t\t@media ${device.mobileL} {\n\t\t\t\t\tborder-radius: 0;\n\t\t\t\t\theight: -webkit-fill-available;\n\t\t\t\t\theight: fill-available;\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t}}\n`;\n\ntype chatLayoutType = {\n\tchildren?: JSX.Element | JSX.Element[];\n\tclassName?: string;\n};\n\nconst ChatLayout = ({ children, className }: chatLayoutType) => {\n\tconst isPage = useIsPage();\n\n\treturn (\n\t\t\n\t\t\t{children}{' '}\n\t\t\n\t);\n};\n\nexport default ChatLayout;\n","var _path, _rect, _defs;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogoByCloudturing(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 122,\n height: 18,\n viewBox: \"0 0 122 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.4599 14H27.0339C28.8379 14 30.0919 13.219 30.0919 11.635C30.0919 10.535 29.4099 9.897 28.4529 9.71V9.655C29.2009 9.413 29.6299 8.709 29.6299 7.906C29.6299 6.487 28.4969 5.926 26.8579 5.926H24.4599V14ZM25.4829 9.369V6.74H26.7259C27.9799 6.74 28.6289 7.092 28.6289 8.038C28.6289 8.852 28.0679 9.369 26.6819 9.369H25.4829ZM25.4829 13.186V10.139H26.8909C28.2989 10.139 29.0909 10.601 29.0909 11.602C29.0909 12.691 28.2769 13.186 26.8909 13.186H25.4829ZM31.5392 16.574C32.7272 16.574 33.3542 15.672 33.7612 14.495L36.0162 8.027H35.0372L33.9702 11.349C33.8052 11.877 33.6292 12.482 33.4642 13.021H33.4092C33.2222 12.482 33.0132 11.866 32.8372 11.349L31.6162 8.027H30.5712L32.9692 14.011L32.8372 14.462C32.5952 15.199 32.1662 15.749 31.4842 15.749C31.3302 15.749 31.1542 15.694 31.0332 15.65L30.8352 16.453C31.0222 16.53 31.2532 16.574 31.5392 16.574ZM42.9583 14.154C44.0143 14.154 44.8833 13.736 45.5543 12.955L44.6963 11.943C44.2563 12.416 43.7173 12.746 43.0133 12.746C41.7263 12.746 40.8903 11.679 40.8903 9.908C40.8903 8.159 41.8143 7.103 43.0463 7.103C43.6623 7.103 44.1353 7.389 44.5533 7.785L45.4003 6.751C44.8723 6.201 44.0473 5.706 43.0133 5.706C40.9563 5.706 39.2293 7.279 39.2293 9.963C39.2293 12.68 40.9013 14.154 42.9583 14.154ZM46.8657 14H51.8047V12.636H48.4937V5.849H46.8657V14ZM56.0402 14.154C58.1962 14.154 59.6812 12.537 59.6812 9.897C59.6812 7.257 58.1962 5.706 56.0402 5.706C53.8842 5.706 52.3992 7.246 52.3992 9.897C52.3992 12.537 53.8842 14.154 56.0402 14.154ZM56.0402 12.746C54.8302 12.746 54.0602 11.635 54.0602 9.897C54.0602 8.148 54.8302 7.103 56.0402 7.103C57.2502 7.103 58.0202 8.148 58.0202 9.897C58.0202 11.635 57.2502 12.746 56.0402 12.746ZM64.395 14.154C66.386 14.154 67.541 13.043 67.541 10.337V5.849H65.979V10.48C65.979 12.174 65.363 12.746 64.395 12.746C63.449 12.746 62.855 12.174 62.855 10.48V5.849H61.227V10.337C61.227 13.043 62.415 14.154 64.395 14.154ZM69.4995 14H71.8205C74.2185 14 75.7585 12.636 75.7585 9.897C75.7585 7.147 74.2185 5.849 71.7325 5.849H69.4995V14ZM71.1275 12.691V7.158H71.6335C73.1515 7.158 74.0975 7.906 74.0975 9.897C74.0975 11.877 73.1515 12.691 71.6335 12.691H71.1275ZM81.4613 14H83.0893V7.213H85.3993V5.849H79.1733V7.213H81.4613V14ZM89.8433 14.154C91.8343 14.154 92.9893 13.043 92.9893 10.337V5.849H91.4273V10.48C91.4273 12.174 90.8113 12.746 89.8433 12.746C88.8973 12.746 88.3033 12.174 88.3033 10.48V5.849H86.6753V10.337C86.6753 13.043 87.8633 14.154 89.8433 14.154ZM94.9478 14H96.5758V10.92H97.7088L99.3808 14H101.196L99.2928 10.667C100.228 10.304 100.844 9.545 100.844 8.324C100.844 6.454 99.4908 5.849 97.7858 5.849H94.9478V14ZM96.5758 9.633V7.147H97.6318C98.6768 7.147 99.2598 7.444 99.2598 8.324C99.2598 9.193 98.6768 9.633 97.6318 9.633H96.5758ZM102.446 14H104.074V5.849H102.446V14ZM106.077 14H107.617V10.733C107.617 9.798 107.496 8.775 107.419 7.895H107.474L108.299 9.644L110.653 14H112.303V5.849H110.763V9.105C110.763 10.029 110.895 11.107 110.972 11.954H110.917L110.103 10.194L107.738 5.849H106.077V14ZM117.814 14.154C118.947 14.154 119.904 13.714 120.454 13.175V9.501H117.561V10.832H119.002V12.438C118.771 12.636 118.375 12.746 117.99 12.746C116.384 12.746 115.57 11.679 115.57 9.908C115.57 8.159 116.516 7.103 117.869 7.103C118.606 7.103 119.068 7.4 119.475 7.785L120.333 6.751C119.805 6.212 118.991 5.706 117.814 5.706C115.647 5.706 113.909 7.279 113.909 9.963C113.909 12.68 115.603 14.154 117.814 14.154Z\",\n fill: \"#707070\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 17.7935,\n height: 18,\n fill: \"url(#pattern0)\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0\",\n transform: \"translate(-0.0137057) scale(0.0158063 0.015625)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0\",\n width: 65,\n height: 64,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoByCloudturing);\nexport default __webpack_public_path__ + \"static/media/logo-by-cloudturing.aba74347.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconCloudturing(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 58,\n height: 58,\n viewBox: \"0 0 58 58\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 58,\n height: 58,\n rx: 14,\n fill: \"#E8490A\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M34.46 19.4654H33.8446C33.7483 19.4654 33.6694 19.5407 33.6694 19.6336V24.5337C33.6694 24.6266 33.7483 24.702 33.8446 24.702H34.46C34.5563 24.702 34.6352 24.6266 34.6352 24.5337V19.6336C34.6336 19.5407 34.5563 19.4654 34.46 19.4654Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.2098 11C18.886 11 10.5158 18.3517 10.5158 27.5622C10.5158 32.3469 13.309 43.3633 28.1067 48.0406C29.598 48.5117 29.2666 47.8339 28.9951 47.3612C27.7437 45.19 28.113 42.4195 29.5711 42.4195C39.0586 42.4195 47.9053 35.3866 47.9053 26.7097C47.9053 18.0328 39.5336 11 29.2098 11ZM29.2098 30.2382C17.1722 30.2382 15.9097 29.3665 15.9097 24.3286C15.9097 20.0631 22.4871 15.0813 29.2098 15.0813C35.9324 15.0813 42.5098 20.0631 42.5098 24.3286C42.5098 29.3681 41.2474 30.2382 29.2098 30.2382Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M24.5749 19.4654H23.9595C23.8632 19.4654 23.7843 19.5407 23.7843 19.6336V24.5337C23.7843 24.6266 23.8632 24.702 23.9595 24.702H24.5749C24.6712 24.702 24.7501 24.6266 24.7501 24.5337V19.6336C24.7501 19.5407 24.6712 19.4654 24.5749 19.4654Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M32.0834 25.7932C31.9367 25.7515 31.7915 25.7627 31.6495 25.8236C31.5074 25.8861 31.4143 25.9855 31.367 26.1201C31.2202 26.5367 30.9472 26.8732 30.5495 27.1312C30.1519 27.3891 29.7053 27.5173 29.2098 27.5173C28.7142 27.5173 28.2676 27.3891 27.87 27.1312C27.4723 26.8732 27.1993 26.5367 27.0525 26.1201C27.0052 25.9855 26.9121 25.8861 26.7732 25.8236C26.6343 25.7611 26.4923 25.7515 26.344 25.7932C26.1909 25.8348 26.0788 25.9166 26.0078 26.0383C25.9368 26.1601 25.9258 26.2867 25.9731 26.4165C26.1909 27.0462 26.598 27.5542 27.193 27.9388C27.7879 28.3233 28.4602 28.5156 29.2098 28.5156C29.9578 28.5156 30.63 28.3233 31.2265 27.9388C31.8215 27.5542 32.2286 27.0462 32.4464 26.4165C32.4937 26.2867 32.4811 26.1601 32.4117 26.0383C32.3407 25.9166 32.2318 25.8348 32.0834 25.7932Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconCloudturing);\nexport default __webpack_public_path__ + \"static/media/icon-cloudturing.fd27ad93.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogoKakao(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 58,\n height: 58,\n viewBox: \"0 0 58 58\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 58,\n height: 58,\n rx: 14,\n fill: \"#FFE812\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M29.6974 11.6094C19.4296 11.6094 11.1061 18.3497 11.1061 26.6641C11.1061 32.0395 14.5859 36.7562 19.8204 39.4196C19.5356 40.4283 17.9904 45.9085 17.9289 46.3391C17.9289 46.3391 17.8919 46.6626 18.0959 46.7859C18.2998 46.9093 18.5397 46.8135 18.5397 46.8135C19.1246 46.7296 25.3225 42.2583 26.3953 41.4819C27.4669 41.6378 28.5704 41.7188 29.6974 41.7188C39.9651 41.7188 48.2887 34.9787 48.2887 26.6641C48.2887 18.3497 39.9651 11.6094 29.6974 11.6094Z\",\n fill: \"black\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.4185 31.9194C18.827 31.9194 18.346 31.4476 18.346 30.8674V24.3232H16.6724C16.092 24.3232 15.6198 23.8393 15.6198 23.2446C15.6198 22.65 16.0921 22.166 16.6724 22.166H22.1647C22.7451 22.166 23.2172 22.65 23.2172 23.2446C23.2172 23.8393 22.745 24.3232 22.1647 24.3232H20.4911V30.8674C20.4911 31.4476 20.0101 31.9194 19.4185 31.9194ZM28.8236 31.9051C28.3763 31.9051 28.0342 31.7186 27.931 31.4186L27.3999 29.9906L24.1293 29.9904L23.5978 31.4193C23.495 31.7188 23.1531 31.9051 22.7058 31.9051C22.4705 31.9054 22.238 31.8535 22.024 31.7531C21.7283 31.613 21.4441 31.2278 21.7698 30.1889L24.3354 23.2534C24.5161 22.726 25.0651 22.1825 25.7637 22.1662C26.4643 22.1824 27.0133 22.726 27.1943 23.2545L29.7589 30.1869C30.0853 31.2282 29.8011 31.6136 29.5054 31.7533C29.2914 31.8535 29.0588 31.9053 28.8236 31.9051C28.8236 31.9051 28.8234 31.9051 28.8236 31.9051ZM26.8359 28.0394L25.7646 24.9137L24.6933 28.0394H26.8359ZM31.485 31.7588C30.9181 31.7588 30.4571 31.3057 30.4571 30.749V23.2676C30.4571 22.6601 30.9484 22.166 31.552 22.166C32.1557 22.166 32.647 22.6601 32.647 23.2676V29.7393H34.9262C35.493 29.7393 35.9541 30.1924 35.9541 30.749C35.9541 31.3057 35.493 31.7588 34.9262 31.7588H31.485ZM37.4439 31.9051C36.8523 31.9051 36.3713 31.4111 36.3713 30.8036V23.2676C36.3713 22.6601 36.8523 22.166 37.4439 22.166C38.0354 22.166 38.5164 22.6601 38.5164 23.2676V25.6352L41.5089 22.5618C41.6628 22.4038 41.8743 22.3167 42.1038 22.3167C42.3716 22.3167 42.6405 22.4353 42.842 22.6421C43.0298 22.8348 43.1419 23.0829 43.1573 23.3405C43.1728 23.6003 43.0886 23.8384 42.9206 24.0111L40.4764 26.521L43.1165 30.1132C43.2018 30.2285 43.2639 30.36 43.2992 30.5001C43.3346 30.6401 43.3425 30.7861 43.3225 30.9293C43.3033 31.0727 43.2567 31.2107 43.1853 31.3354C43.1138 31.4601 43.019 31.569 42.9063 31.6558C42.7208 31.8006 42.4941 31.8787 42.2612 31.8781C42.095 31.8789 41.9309 31.8397 41.7821 31.7637C41.6333 31.6877 41.504 31.5769 41.4043 31.4403L38.889 28.0173L38.5168 28.3996V30.803C38.5165 31.0952 38.4033 31.3753 38.2022 31.5819C38.0011 31.7885 37.7283 31.9047 37.4439 31.9051Z\",\n fill: \"#FFE812\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoKakao);\nexport default __webpack_public_path__ + \"static/media/logo-kakao.cd445478.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgLogoNaver(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 58,\n height: 58,\n viewBox: \"0 0 58 58\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M58 48.7363C58 53.8501 53.8889 58 48.8229 58H9.17706C4.11106 58 0 53.8501 0 48.7363V9.26366C0 4.14986 4.11106 0 9.17706 0H48.8229C53.8889 0 58 4.14986 58 9.26366V48.7363Z\",\n fill: \"#3EB044\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M44.2382 18.4965L44.2453 18.4894L41.1836 15.6704C40.52 14.9567 39.5779 14.5 38.5217 14.5H18.1397C16.1343 14.5 14.5 16.1343 14.5 18.1397V40.6199C14.5 41.2479 14.6142 41.7119 14.8497 42.0401C14.9353 42.1543 15.0281 42.2542 15.1352 42.3328L18.0612 45.0303C18.104 45.0802 18.1539 45.1231 18.2039 45.1659L18.2324 45.1874V45.1801C18.2824 45.2159 18.3252 45.2516 18.3823 45.28C18.5536 45.3657 18.7463 45.4157 18.9604 45.4157C19.5027 45.4157 19.9809 45.1017 20.0665 45.0374L23.485 41.5405C24.2129 40.6628 26.1612 40.4701 26.8534 40.4701H41.6191C43.6244 40.4701 45.2587 38.8358 45.2587 36.8304V20.9943C45.2587 20.0166 44.8662 19.1459 44.2382 18.4965ZM40.9481 33.9757C40.9481 35.3174 39.8563 36.4023 38.5217 36.4023H23.7561C23.4421 36.4023 20.6731 36.445 19.4885 37.8795L18.8034 38.5788L17.5901 39.8277L16.2342 41.2194C16.1343 41.2837 15.9701 41.355 15.8631 41.355H15.8488C15.8488 41.355 15.7132 41.2265 15.7132 40.6199V18.1397C15.7132 16.798 16.8051 15.7132 18.1397 15.7132H38.5217C39.5851 15.7132 40.4772 16.4055 40.8055 17.3546C40.8912 17.6044 40.9481 17.8613 40.9481 18.1397V33.9757Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M22.5071 22.1075C21.5079 22.1075 20.6944 22.9211 20.6944 23.9202V27.7312C20.6944 28.7303 21.5079 29.5439 22.5071 29.5439C23.5062 29.5439 24.3198 28.7303 24.3198 27.7312V23.9202C24.3269 22.9211 23.5133 22.1075 22.5071 22.1075Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M33.8118 22.1075C32.8126 22.1075 31.9991 22.9211 31.9991 23.9202V27.7312C31.9991 28.7303 32.8126 29.5439 33.8118 29.5439C34.8108 29.5439 35.6244 28.7303 35.6244 27.7312V23.9202C35.6244 22.9211 34.8108 22.1075 33.8118 22.1075Z\",\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoNaver);\nexport default __webpack_public_path__ + \"static/media/logo-naver.5721b018.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgNotificationArrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 8,\n height: 6,\n viewBox: \"0 0 8 6\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.27881 1.57129L4.11874 4.42843L6.95866 1.57129\",\n stroke: \"#757575\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgNotificationArrow);\nexport default __webpack_public_path__ + \"static/media/notification-arrow.617743d0.svg\";\nexport { ForwardRef as ReactComponent };","var _circle, _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconLogoCloudturing(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 12,\n cy: 12,\n r: 12,\n fill: \"white\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 3.84204L5 7.90656V15.9904L12 20.0549L19 15.9904V7.90656L12 3.84204ZM18.2774 15.584L13.671 18.2485L13.6258 11.6549L16.0645 10.3904V9.26139L12.5419 11.0678V18.8356L12 19.1969L5.72258 15.584V8.31301L12 4.70011L18.2774 8.31301V15.584Z\",\n fill: \"#E8490A\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M6.80627 9.84851L10.3288 11.655L10.2837 17.0743L11.4127 17.7066V11.113L6.80627 8.71948V9.84851Z\",\n fill: \"#E8490A\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconLogoCloudturing);\nexport default __webpack_public_path__ + \"static/media/icon-logo-cloudturing.0490d40b.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components';\n\nimport { device } from 'styles/mediaQueries';\n\nconst OptionsStyle = styled.div`\n\tflex: 1;\n\tposition: relative;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t.notification {\n\t\theight: 35px;\n\t\tbackground-color: #f4f4f4;\n\t\tcolor: #333;\n\t\tfont-size: 12px;\n\t\tpadding: 9px 16px 10px;\n\t\tposition: relative;\n\n\t\t@media ${device.mobileL} {\n\t\t\tpadding: 10px 15px;\n\t\t\tfont-size: 11px;\n\t\t}\n\t}\n\n\t.options-list {\n\t\tpadding: 15px;\n\n\t\t@media ${device.mobileL} {\n\t\t\tpadding: 20px;\n\t\t}\n\t}\n\n\t.option-list-item {\n\t\tpadding: 10px 9px;\n\t\tbox-shadow: 0px 1px 8px rgba(197, 197, 197, 0.4);\n\t\tborder-radius: 20px;\n\t\tborder: 1px solid transparent;\n\t\ttransition: border-color 0.3s ease;\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\n\t\t& + .option-list-item {\n\t\t\tmargin-top: 12px;\n\t\t}\n\n\t\t&:hover {\n\t\t}\n\n\t\tsvg {\n\t\t\twidth: 58px;\n\t\t}\n\n\t\t@media ${device.laptopL} {\n\t\t\tpadding: 6px 5px;\n\n\t\t\tsvg {\n\t\t\t\twidth: 45px;\n\t\t\t}\n\t\t\t.option-list-item {\n\t\t\t\tpadding: 12px;\n\t\t\t}\n\t\t\t.option-list-item {\n\t\t\t\tborder-radius: 15px;\n\t\t\t}\n\t\t\t.options-list-text {\n\t\t\t\tmargin-left: 10px;\n\t\t\t\tspan {\n\t\t\t\t\tmargin-bottom: 5px;\n\t\t\t\t}\n\t\t\t\tstrong {\n\t\t\t\t\tfont-size: 13px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\tborder-radius: 10px;\n\n\t\t\tsvg {\n\t\t\t\twidth: 53px;\n\t\t\t\theight: 53px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.options-list-text {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\tmargin-left: 18px;\n\t\tline-height: 1;\n\t\tspan {\n\t\t\tmargin-bottom: 7px;\n\t\t\tcolor: #757575;\n\t\t\tfont-size: 12px;\n\t\t}\n\t\tstrong {\n\t\t\tcolor: #333;\n\t\t\tfont-weight: 500;\n\t\t}\n\t\t& > * {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\t.options-list-text {\n\t\t\t\tmargin-left: 13px;\n\n\t\t\t\tspan {\n\t\t\t\t\tmargin-bottom: 4px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.entry-by-logo {\n\t\tposition: absolute;\n\t\tbottom: 9px;\n\t\tleft: 50%;\n\t\ttransform: translate(-50%);\n\n\t\tsvg {\n\t\t\twidth: 122px;\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\tbottom: 18px;\n\t\t}\n\t}\n\n\t.toggle-style {\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tright: 15px;\n\t\ttransform: translateY(-50%);\n\t\tcursor: pointer;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tspan {\n\t\t\tpadding-right: 8px;\n\t\t}\n\t}\n\n\t.arrow-style {\n\t\tpadding-top: 2px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tsvg {\n\t\t\ttransform: ${(props) =>\n\t\t\t\tprops.isOpened ? `rotate(${180}deg)` : `rotate(0deg)`};\n\t\t\ttransform-origin: center;\n\t\t\ttransition: transform 0.2s ease-out;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\t}\n`;\n\nexport default OptionsStyle;\n","export default __webpack_public_path__ + \"static/media/notification-more.d0903bed.svg\";","export default __webpack_public_path__ + \"static/media/notification-more-hover.00498699.svg\";","import React from 'react';\n\n// library\nimport styled, { keyframes } from 'styled-components';\nimport { fadeIn } from 'react-animations';\n\n// image\nimport More from 'assets/images/notification-more.svg';\nimport MoreHover from 'assets/images/notification-more-hover.svg';\n\nconst fadeNotification = keyframes`${fadeIn}`;\n\nconst NotificationListStyle = styled.div`\n\tposition: absolute;\n\ttop: 35px;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tbackground-color: #fff;\n\tanimation: 0.7s ${fadeNotification};\n`;\n\nconst ListWrap = styled.ul`\n\tpadding-top: 8px;\n\n\tli {\n\t\tfont-weight: 500;\n\t\tfont-size: 14px;\n\t\tcolor: #9e9e9e;\n\n\t\t> a {\n\t\t\tcursor: pointer;\n\t\t\tdisplay: block;\n\t\t\tpadding: 14px 16px 14px;\n\t\t\tposition: relative;\n\t\t\tmin-height: 47px;\n\t\t\t&:after {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\twidth: 6px;\n\t\t\t\theight: 12px;\n\t\t\t\tposition: absolute;\n\t\t\t\tright: 20px;\n\t\t\t\ttop: 17px;\n\t\t\t\tbackground: url(${More}) no-repeat center center;\n\t\t\t\tbackground-size: cover;\n\t\t\t\twidth: 9px;\n\t\t\t\theight: 15px;\n\t\t\t}\n\t\t\t&:hover {\n\t\t\t\tcolor: #000;\n\t\t\t\tbackground-color: #f5f5f5;\n\n\t\t\t\t&:after {\n\t\t\t\t\tbackground-image: url(${MoreHover});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n`;\n\nconst NotificationList = ({ boards }) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t{boards.map((board, i) => {\n\t\t\t\t\treturn (\n\t\t\t\t\t\t
  • \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{board.title}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
  • \n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t
    \n\t\t
    \n\t);\n};\n\nexport default NotificationList;\n","import React, { useRef, useCallback, useEffect, useState } from 'react';\nimport styled from 'styled-components';\n// image\nimport { ReactComponent as ByLogo } from 'assets/images/logo-by-cloudturing.svg';\nimport { ReactComponent as TuringLogo } from 'assets/images/icon-cloudturing.svg';\nimport { ReactComponent as KakaoLogo } from 'assets/images/logo-kakao.svg';\nimport { ReactComponent as NaverLogo } from 'assets/images/logo-naver.svg';\nimport { ReactComponent as Arrow } from 'assets/images/notification-arrow.svg';\n\n//style\nimport OptionsStyle from './OptionsStyles';\n// lib\nimport { useAppSelector } from 'lib/hook';\nimport { useDispatch } from 'react-redux';\nimport TextTransition from 'react-text-transition';\nimport { api } from 'lib/api';\n\n// component\nimport NotificationList from './NotificationList';\n\nconst Options = () => {\n\tconst channels = useAppSelector((state) => state.engine.channel);\n\tconst boards = useAppSelector((state) => state.engine.home.boards);\n\tconst dispatch = useDispatch();\n\tconst resetToLauncher = useRef(true); // cleanup 여부 체크\n\tconst [index, setIndex] = useState(0); // 공지사항 텍스트\n\tconst [opened, setOpened] = useState(false); // 공지사항\n\n\tuseEffect(() => {\n\t\t// unmount때 런처로 초기화 해야되는지 체크\n\t\treturn () => {\n\t\t\t// 페이지 이동시에만 초기화 실행\n\t\t\tif (resetToLauncher.current) {\n\t\t\t\tdispatch({\n\t\t\t\t\ttype: 'SET_TYPE',\n\t\t\t\t\tpayload: 'LAUNCHER',\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\tlet intervalId;\n\n\t\tif (boards && boards.length > 0) {\n\t\t\t// 사용자가 공지사항 '시용'으로 변경시 텍스트 애니메이션 시작\n\t\t\tintervalId = setInterval(\n\t\t\t\t() => {\n\t\t\t\t\t// 공지사항 배열 length랑 같아지면 index 초기화\n\t\t\t\t\tif (index === boards.length - 1) {\n\t\t\t\t\t\tsetIndex(0);\n\t\t\t\t\t\t// setDelay(false);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// 공지사항 배열에서 다음 element를 가져오기 위해 index 증가\n\t\t\t\t\t\tsetIndex((index) => index + 1);\n\t\t\t\t\t}\n\t\t\t\t},\n\t\t\t\t3000 // every 3 seconds\n\t\t\t);\n\t\t}\n\n\t\treturn () => clearTimeout(intervalId);\n\t}, [index]);\n\n\tconst onClickTuring = useCallback(() => {\n\t\tresetToLauncher.current = false;\n\n\t\tdispatch({\n\t\t\ttype: 'SET_TYPE',\n\t\t\tpayload: 'CHAT',\n\t\t});\n\t}, []);\n\n\tconst handleNotification = useCallback(() => {\n\t\tsetOpened((prevState) => !prevState);\n\t}, []);\n\n\t/* 공지사항이 닫힘 상태, 1개보다 많을때 체크해서 ->\n\t\t애니메이션 여부 확인 */\n\n\tlet titleDisplay;\n\tif (boards) {\n\t\ttitleDisplay =\n\t\t\tboards.length > 1 ? (\n\t\t\t\t\n\t\t\t) : (\n\t\t\t\t

    {boards[0]?.title}

    \n\t\t\t);\n\t}\n\n\tconst onClickChannel: any = () => {\n\t\tlet checkDfId = window.dyc ? window.dyc.chatbotUid : '';\n\n\t\t// GA 보낼 리스트\n\t\tlet channels = {\n\t\t\tkakao: () =>\n\t\t\t\tapi.get(`/chatbots/${checkDfId}/analytics?action=start_kakao_chatbot`),\n\t\t\tnaver: () =>\n\t\t\t\tapi.get(`/chatbots/${checkDfId}/analytics?action=start_naver_chatbot`),\n\t\t};\n\n\t\tif (checkDfId) {\n\t\t\treturn channels;\n\t\t} else {\n\t\t\treturn {};\n\t\t}\n\t};\n\n\t// * tabindex enter\n\tconst tabEnter = (e) => {\n\t\tif (e.key === 'Enter') onClickTuring();\n\t};\n\n\treturn (\n\t\tchannels && (\n\t\t\t\n\t\t\t\t{/* 공지사항 제목 */}\n\t\t\t\t{boards && boards.length > 0 && (\n\t\t\t\t\t
    \n\t\t\t\t\t\t{opened ?

    {'공지사항'}

    : titleDisplay}\n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{!opened ? '펼쳐보기' : '닫기'}\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t)}\n\n\t\t\t\t{/* 공지사항 리스트 */}\n\t\t\t\t{opened && }\n\n\t\t\t\t
    \n\t\t\t\t\t{/* 웹챗봇 */}\n\t\t\t\t\t{channels.map((el, i) => {\n\t\t\t\t\t\t/* 카카오톡 챗봇 */\n\t\t\t\t\t\tif (el.channelType === 'KAKAO') {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t{el.channelType}\n\n\t\t\t\t\t\t\t\t\t\t{el.homeMessage}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// 네이버톡톡\n\t\t\t\t\t\tif (el.channelType === 'NAVER') {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t{el.channelType}\n\n\t\t\t\t\t\t\t\t\t\t{el.homeMessage}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t{el.channelType}\n\n\t\t\t\t\t\t\t\t\t{el.homeMessage}\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t);\n\t\t\t\t\t})}\n\t\t\t\t\n\t\t\t\t{/* By cloudturing 로고 */}\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t)\n\t);\n};\n\nexport default Options;\n","// 챗봇 생성시 생기는 script태그를 DOM에서 제거함\nconst removeScriptTag = () => {\n\t// remove DOM with id 'dychat-20210908'\n\tlet element = window.document.getElementById('dychat-20210908');\n\telement.remove();\n\n\t// remove script tag\n\tlet scriptTags = window.document.scripts;\n\tlet scriptsToRemove = [];\n\tfor (let i = 0; i < scriptTags.length; i++) {\n\t\tif (scriptTags[i].src.indexOf('cloudturing') > -1) {\n\t\t\tscriptsToRemove.push(scriptTags[i]);\n\t\t}\n\t}\n\t// * document.scripts 배열은 point of reference로 loop를 돌면서 removeChild를 하면\n\t// * loop index가 변경되서 별도 배열에 해당 tag를 추가후 loop 진행\n\tif (scriptsToRemove.length > 0) {\n\t\tfor (let i = 0; i < scriptsToRemove.length; i++) {\n\t\t\tscriptsToRemove[i].parentNode.removeChild(scriptsToRemove[i]);\n\t\t}\n\t}\n};\n\nexport default removeScriptTag;\n","import React, { useEffect, useState, useCallback } from 'react';\nimport styled from 'styled-components';\n// img\nimport BannerDefault from 'assets/images/banner-default.png';\nimport { ReactComponent as BtnClose } from 'assets/images/header-close.svg';\n// component\nimport ChatLayout from 'components/Layouts/ChatLayout';\nimport Options from './Options';\n// action\nimport { fetchChannel } from 'lib/api';\n// lib\nimport { useAppSelector } from 'lib/hook';\nimport { useDispatch } from 'react-redux';\n//responsive\nimport { device } from 'styles/mediaQueries';\n// helpers\nimport removeScriptTag from 'lib/helpers/removeScriptTag';\n\ntype engineEntryType = {\n\tchatbotId: string | string[];\n};\n\nconst EngineEntry = ({ chatbotId }: engineEntryType) => {\n\tconst dispatch = useDispatch();\n\tconst { home } = useAppSelector((state) => state.engine.home);\n\tconst mobileWidth = window.innerWidth;\n\n\t// 채널정보 가져오기\n\tuseEffect(() => {\n\t\tdispatch(fetchChannel(chatbotId));\n\t}, []);\n\n\t// 닫기 이벤트\n\tconst onClickEntryClose = useCallback(() => {\n\t\t//@ts-ignore\n\t\tlet destWindow = window.dyc.destWindow;\n\t\tif (destWindow) {\n\t\t\tdispatch({\n\t\t\t\ttype: 'SET_TYPE',\n\t\t\t\tpayload: destWindow,\n\t\t\t});\n\n\t\t\tremoveScriptTag();\n\t\t} else {\n\t\t\tdispatch({\n\t\t\t\ttype: 'SET_TYPE',\n\t\t\t\tpayload: 'LAUNCHER',\n\t\t\t});\n\t\t}\n\t}, []);\n\n\t// * tabindex enter\n\tconst tabEnter = (e) => {\n\t\tif (e.key === 'Enter') onClickEntryClose();\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t{/* 배너영역 */}\n\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t

    닫기

    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\n\t\t\t\t\t{/* 공지사항 && 챗봇 선택 영역 */}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n};\n\nexport default EngineEntry;\n\nconst EntryStyle = styled.div`\n\theight: 100%;\n\tdisplay: flex;\n\tflex-direction: column;\n\n\t/* ios style */\n\tdisplay: -webkit-flex;\n\n\t.entry {\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t}\n\n\t.entry-header {\n\t\twidth: 100%;\n\t\theight: 185px;\n\t\tposition: relative;\n\t\ttext-align: center;\n\n\t\timg {\n\t\t\theight: 100%;\n\t\t\twidth: auto;\n\t\t\tmargin: 0 auto;\n\t\t}\n\n\t\t@media ${device.laptopL} {\n\t\t\theight: 160px;\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\t/* 2:1 비율로 계산하기 */\n\t\t\theight: ${(props) => props.mobileWidth / 2}px;\n\n\t\t\timg {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\t}\n\n\t.custom-layout {\n\t\t/* left: auto; */\n\t\ttransform: none;\n\t\tposition: fixed;\n\t\tz-index: 999999;\n\t}\n\n\t.entry-header-close {\n\t\tposition: absolute;\n\t\ttop: 19px;\n\t\tright: 27px;\n\t\tcursor: pointer;\n\n\t\tsvg {\n\t\t\twidth: 12px;\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\ttop: 15px;\n\t\t\tright: 20px;\n\t\t}\n\t}\n`;\n","export default \"data:image/png;base64,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\"","import styled from 'styled-components';\n\nimport { device } from 'styles/mediaQueries';\n\nconst ChatStyles = styled.div`\n\t.dy-header {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpadding: 12px 24px;\n\t\theight: auto;\n\n\t\t@media ${device.mobileL} {\n\t\t\tpadding: 12px 18px;\n\t\t}\n\t}\n\n\t.dy-logo {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\timg {\n\t\t\theight: 24px;\n\t\t\twidth: 24px;\n\t\t\tbox-shadow: 0px 0px 8px rgba(0, 0, 0, 0.12);\n\t\t\tborder-radius: 50%;\n\t\t\toverflow: hidden;\n\t\t}\n\t\tstrong {\n\t\t\tmargin-left: 5px;\n\t\t\tfont-size: 15px;\n\t\t\tfont-weight: 500;\n\t\t\tline-height: 24px;\n\t\t}\n\n\t\tsvg {\n\t\t\twidth: 24px;\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\tstrong {\n\t\t\t\tfont-size: 16px;\n\t\t\t\tmargin-left: 9px;\n\t\t\t}\n\n\t\t\timg,\n\t\t\tsvg {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.chat-header-options-area {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\tsvg {\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\t.chat-setting {\n\t\tposition: relative;\n\n\t\t.setting-modal {\n\t\t\tposition: absolute;\n\t\t\tright: 0;\n\t\t\tbottom: -45px;\n\t\t\tcolor: #333333;\n\t\t\tbox-shadow: 0px 2px 8px rgba(0, 0, 0, 0.16);\n\t\t\tz-index: 1;\n\t\t\tcursor: pointer;\n\t\t\twidth: 97px;\n\t\t\tpadding: 9px 18px;\n\t\t\tbackground-color: #fff;\n\t\t\tborder-radius: 5px;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: #f5f5f5;\n\t\t\t}\n\n\t\t\tstrong {\n\t\t\t\tdisplay: inline-block;\n\t\t\t\tfont-weight: 400;\n\t\t\t}\n\t\t}\n\n\t\tcursor: pointer;\n\t\tsvg {\n\t\t\twidth: 17px;\n\t\t}\n\t}\n\n\t.chat-close {\n\t\tcursor: pointer;\n\t\tmargin-left: 23px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\n\t\tsvg {\n\t\t\twidth: 12px;\n\t\t\tdisplay: block;\n\t\t}\n\t}\n\n\t@media ${device.mobileL} {\n\t\t.chat-setting {\n\t\t\tsvg {\n\t\t\t\twidth: 20px;\n\t\t\t\theight: 20px;\n\t\t\t}\n\t\t}\n\t\t.chat-close {\n\t\t\tsvg {\n\t\t\t\twidth: 17px;\n\t\t\t\theight: 17px;\n\t\t\t}\n\t\t}\n\t}\n\n\t.chat-body {\n\t\tborder-radius: 40px 0 0 0;\n\t\tposition: relative;\n\t}\n\n\t.is-question + .chat-footer {\n\t\tdisplay: none;\n\t}\n\n\t/* 푸터 */\n\t.chat-footer {\n\t\tpadding: 14px 12px;\n\t\tposition: relative;\n\t\tborder-radius: 0 0 0 40px;\n\t\tz-index: 99999;\n\n\t\t&.is-active {\n\t\t\tbackground-color: #fff;\n\t\t}\n\n\t\t.input-area {\n\t\t\tpadding: 7px 12px;\n\t\t\tborder-radius: 30px;\n\t\t\toverflow: hidden;\n\t\t\tdisplay: flex;\n\n\t\t\tposition: relative;\n\t\t\tz-index: 99999;\n\n\t\t\t@media ${device.mobileL} {\n\t\t\t\tpadding: 10px 12px;\n\t\t\t}\n\n\t\t\t.left {\n\t\t\t\tflex: 1;\n\t\t\t\tdisplay: flex;\n\n\t\t\t\tinput {\n\t\t\t\t\tbackground-color: transparent;\n\t\t\t\t\theight: 32px;\n\t\t\t\t\tpadding: 0 12px;\n\t\t\t\t\tdisplay: block;\n\t\t\t\t\tflex: 1 1 auto;\n\t\t\t\t\t-ms-flex: 1 1 auto;\n\t\t\t\t\t-webkit-flex: 1 1 auto;\n\n\t\t\t\t\t&::-ms-cleaer {\n\t\t\t\t\t\tdisplay: none;\n\t\t\t\t\t\twidth: 0;\n\t\t\t\t\t\theight: 0;\n\t\t\t\t\t}\n\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\tborder-color: transparent;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.send {\n\t\t\t\twidth: 30px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t\toverflow: hidden;\n\t\t\t\t&:hover {\n\t\t\t\t\tcursor: pointer;\n\t\t\t\t}\n\t\t\t\timg {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.generic-icon {\n\t\tbackground-color: #fff;\n\t\tborder-radius: 50%;\n\t\twidth: 32px;\n\t\theight: 32px;\n\t\tpadding: 8px 0;\n\t\tflex-shrink: 0;\n\n\t\t&:hover {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\t.line {\n\t\t\twidth: 12px;\n\t\t\theight: 2px;\n\t\t\tborder-radius: 10px;\n\t\t\tbackground-color: #bdbdbd;\n\t\t\tdisplay: block;\n\t\t\tmargin: 3px auto;\n\t\t\t-webkit-transition: all 0.2s ease-in-out;\n\t\t\t-o-transition: all 0.2s ease-in-out;\n\t\t\ttransition: all 0.2s ease-in-out;\n\t\t}\n\t\t&.is-active {\n\t\t\t.line:nth-child(1) {\n\t\t\t\t-webkit-transform: translateY(5px) rotate(45deg);\n\t\t\t\t-ms-transform: translateY(5px) rotate(45deg);\n\t\t\t\t-o-transform: translateY(5px) rotate(45deg);\n\t\t\t\ttransform: translateY(5px) rotate(45deg);\n\t\t\t}\n\n\t\t\t.line:nth-child(2) {\n\t\t\t\topacity: 0;\n\t\t\t}\n\n\t\t\t.line:nth-child(3) {\n\t\t\t\t-webkit-transform: translateY(-5px) rotate(-45deg);\n\t\t\t\t-ms-transform: translateY(-5px) rotate(-45deg);\n\t\t\t\t-o-transform: translateY(-5px) rotate(-45deg);\n\t\t\t\ttransform: translateY(-5px) rotate(-45deg);\n\t\t\t}\n\t\t}\n\t}\n\n\t.generic-menu {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tright: 0;\n\t\tleft: 0;\n\t\tbottom: 0;\n\t\tz-index: 9999;\n\t\t/* background-color: #fff; */\n\t\t/* background-color: transparent; */\n\t\toverflow: hidden;\n\n\t\tborder-radius: 0 0 0 40px;\n\n\t\t&.is-active {\n\t\t\toverflow: visible;\n\t\t}\n\n\t\tul {\n\t\t\ttransform: translateY(0);\n\t\t\topacity: 0;\n\t\t\toverflow: hidden;\n\t\t\tpadding: 20px 22px;\n\t\t\t/* background-color: #fff; */\n\t\t\tborder-radius: 20px 20px 0px 0px;\n\n\t\t\t&.is-active {\n\t\t\t\ttransition: all 0.2s ease-in-out;\n\t\t\t\theight: auto;\n\t\t\t\topacity: 1;\n\t\t\t\ttransform: translateY(-100%);\n\t\t\t}\n\n\t\t\tli {\n\t\t\t\tpadding: 10px 0;\n\t\t\t\tcursor: pointer;\n\t\t\t\t&:hover {\n\t\t\t\t\tfont-weight: 500;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t.custom-layout {\n\t\ttransform: none;\n\t\tposition: fixed;\n\t\tz-index: 999999;\n\n\t\t@media ${device.mobileL} {\n\t\t\tfont-size: 13px;\n\n\t\t\t/* apply only on chrome */\n\t\t\theight: ${() => {\n\t\t\t\treturn window.chrome ? 'fill-available' : '';\n\t\t\t\t/*height: -webkit-fill-available;*/\n\t\t\t}};\n\t\t}\n\t}\n\n\t// 제네릭 열였을때 배경 어둡게 해주는 overlay\n\t.generic-overlay {\n\t\tposition: absolute;\n\t\tbackground-color: rgba(0, 0, 0, 0.4);\n\t\ttop: 0;\n\t\tright: 0;\n\t\tleft: 0;\n\t\tbottom: 0;\n\t\tz-index: 9999;\n\t\tborder-radius: 40px 0 0 0;\n\t}\n\n\t.right {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\t/* flex: 0 1 32px;\n -ms-flex: 0 1 32px; */\n\t\tflex-shrink: 0;\n\t\t-ms-flex-negative: 0;\n\t\t-webkit-flex-negative: 0;\n\t}\n\n\t.file-upload {\n\t\tdisplay: block;\n\t\twidth: 16px;\n\t\theight: 18px;\n\t\tmargin-right: 17px;\n\n\t\tinput {\n\t\t\tmin-width: 0;\n\t\t\tflex-shrink: 1;\n\t\t}\n\t}\n\n\t.modal-image-error {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\tbackground-color: rgba(51, 51, 51, 0.35);\n\t\tz-index: 99999;\n\n\t\t.modal-content {\n\t\t\tbackground-color: #fff;\n\t\t\twidth: 314px;\n\t\t\theight: 144px;\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tleft: 50%;\n\t\t\ttransform: translate(-50%, -50%);\n\t\t\tborder-radius: 20px;\n\t\t\ttext-align: center;\n\t\t\tpadding: 28px 33px 15px;\n\t\t\tcolor: #333;\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: column;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t/* a,\n span {\n color: #0091ea;\n } */\n\t\tp {\n\t\t\tcolor: #ee4238;\n\t\t}\n\n\t\tbutton {\n\t\t\tcolor: #fff;\n\t\t\tbackground-color: #e8490a;\n\t\t\tborder-radius: 18px;\n\t\t\tpadding: 8px 42px;\n\t\t\ttext-align: center;\n\t\t\tmargin-top: 18px;\n\n\t\t\t&:hover {\n\t\t\t\tcolor: rgb(255, 255, 255);\n\t\t\t\tbackground-color: rgb(217, 77, 22);\n\t\t\t}\n\t\t}\n\t}\n\n\t.by-logo-wrap {\n\t\tmargin-top: 15px;\n\n\t\timg {\n\t\t\twidth: 122px;\n\t\t}\n\n\t\t@media ${device.mobileL} {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t.mobile-by-logo-wrap {\n\t\tdisplay: none;\n\n\t\t@media ${device.mobileL} {\n\t\t\tdisplay: block;\n\t\t\tposition: absolute;\n\t\t\tbottom: 74px;\n\t\t\tleft: 20px;\n\t\t}\n\t}\n`;\n\nexport default ChatStyles;\n","const getUserCookie = () => {\n\tconst localcookie = document.cookie\n\t\t.split(';')\n\t\t.map((e) => e.trim().split('='))\n\t\t.filter((e) => (e[0] === 'X-User-Session' ? true : false));\n\n\treturn localcookie;\n};\n\nexport default getUserCookie;\n","import { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport { baseUrl } from './baseUrlChecker';\nimport getUserCookie from './getUserCookie';\n\nconst useEngineCookie = (chatbotId: string | string[]) => {\n\tconst [cookieStatus, setCookieStatus] = useState(null);\n\n\tuseEffect(() => {\n\t\tif (!chatbotId) return null;\n\n\t\t// 쿠키 체크\n\t\tconst localcookie = getUserCookie();\n\t\tconst getCookie = async () => {\n\t\t\ttry {\n\t\t\t\tlet res = await axios.get(`${baseUrl}/chatbots/${chatbotId}/cookie`);\n\t\t\t\tlet data = await res.data;\n\t\t\t\tlet newCookie = data.cookie;\n\t\t\t\tdocument.cookie = `X-User-Session=${newCookie}; path=/; Max-Age=315360000`;\n\t\t\t\tsetCookieStatus(true);\n\t\t\t} catch (err) {\n\t\t\t\t// TODO 에러처리\n\t\t\t\tconsole.log(err);\n\t\t\t}\n\t\t};\n\t\tif (!localcookie.length) {\n\t\t\tgetCookie();\n\t\t} else {\n\t\t\tsetCookieStatus(true);\n\t\t}\n\t}, [chatbotId]);\n\n\treturn cookieStatus;\n};\n\nexport default useEngineCookie;\n","// 버튼 설정 > 링크 체크할때\nexport const userOsChecker = () => {\n\tlet detectOS;\n\n\t// ios\n\tif (/iPhone|iPad|iPod/i.test(window.navigator.userAgent)) {\n\t\tdetectOS = 'ios';\n\t}\n\n\t// android\n\tif (/Android/i.test(window.navigator.userAgent)) {\n\t\tdetectOS = 'android';\n\t}\n\n\t// mac\n\tif (/Mac/i.test(window.navigator.userAgent)) {\n\t\tdetectOS = 'mac';\n\t}\n\n\t// win\n\tif (/Win/i.test(window.navigator.userAgent)) {\n\t\tdetectOS = 'win';\n\t}\n\n\treturn detectOS;\n};\n\nexport const userButtonTypeChecker = (obj, detectOS) => {\n\tlet link;\n\t// mac\n\tif (detectOS === 'mac') {\n\t\tif (obj.hasOwnProperty('pc')) {\n\t\t\tlink = obj.pc.default;\n\n\t\t\tif (obj.pc.hasOwnProperty('macos')) {\n\t\t\t\tlink = obj.pc.macos;\n\t\t\t}\n\t\t}\n\t}\n\n\t// win\n\tif (detectOS === 'win') {\n\t\tif (obj.hasOwnProperty('pc')) {\n\t\t\tlink = obj.pc.default;\n\n\t\t\tif (obj.pc.hasOwnProperty('windows')) {\n\t\t\t\tlink = obj.pc.windows;\n\t\t\t}\n\t\t}\n\t}\n\n\t// ios\n\tif (detectOS === 'ios') {\n\t\tif (obj.hasOwnProperty('mobile')) {\n\t\t\tlink = obj.mobile.default;\n\n\t\t\tif (obj.mobile.hasOwnProperty('ios')) {\n\t\t\t\tlink = obj.mobile.ios;\n\t\t\t}\n\t\t}\n\t}\n\n\t// android\n\tif (detectOS === 'android') {\n\t\tif (obj.hasOwnProperty('mobile')) {\n\t\t\tlink = obj.mobile.default;\n\n\t\t\tif (obj.hasOwnProperty('android')) {\n\t\t\t\tlink = obj.mobile.android;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn link;\n};\n\n// type\ntype msgInfoType = {\n\tmessageText?: string;\n\ttext?: string;\n\teventId?: string;\n\tpayload?: any;\n\tlabel?: string;\n};\n\n// 웹소켓 보낼때 데이터 양식\nexport const wsSendDataFormatter = (\n\ttype?: string,\n\tinfo?: msgInfoType | string\n) => {\n\tlet obj = {\n\t\ttype: 'text',\n\t\ttext: '',\n\t};\n\n\t// 사용자 답변 - 텍스트형\n\t// union타입 때문에 string 타입일 경우 switch문에서 에러나서 상단에서 미리 처리함\n\tif (typeof info === 'string') {\n\t\tobj.text = info;\n\t\treturn obj;\n\t}\n\n\t// 사용자 답변 - 나머지 종류\n\tswitch (type) {\n\t\tcase 'generic':\n\t\tcase 'quick':\n\t\tcase 'btn':\n\t\t\tobj.text = info.messageText;\n\t\t\treturn obj;\n\n\t\tcase 'click':\n\t\t\tobj.text = info.text;\n\t\t\treturn obj;\n\n\t\tcase 'event':\n\t\t\treturn {\n\t\t\t\ttype: 'event',\n\t\t\t\tmessageText: info.messageText,\n\t\t\t\teventId: info.eventId,\n\t\t\t\tpayload: info.payload,\n\t\t\t\tlabel: info.label,\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn null;\n\t}\n};\n\nexport const btnIsLinkType = (btn) => {\n\t// os, 기기 체크\n\tlet link;\n\tlet detectOS = userOsChecker();\n\tlet obj = btn.link;\n\n\t//디폴트 링크\n\tlink = btn.link.web;\n\n\tlet isTypeMatch = userButtonTypeChecker(obj, detectOS);\n\n\tconst setRedirectMobile = (app, link) => {\n\t\t// send to mobile app\n\t\t// window.location.href = app;\n\t\twindow.open(app);\n\n\t\t// settimtout in case app doesn't exist\n\t\tlet customTimeout = setTimeout(() => {\n\t\t\twindow.location.href = link;\n\t\t\twindow.clearTimeout(customTimeout);\n\t\t}, 3000);\n\t};\n\n\t// 링크 설정이 있으면\n\tif (isTypeMatch) {\n\t\tlink = isTypeMatch;\n\n\t\t// 모바일 체크\n\t\tif (obj.ios || obj.android) {\n\t\t\tlet whichLink = obj.mobile ? obj.mobile : obj.web;\n\n\t\t\tsetRedirectMobile(link, whichLink);\n\t\t}\n\t}\n\n\t// * ios 에서 새탭이 안열림.. 해결 안됨\n\tif (detectOS === 'ios') {\n\t\twindow.location.href = link;\n\t} else {\n\t\twindow.open(link, '_blank');\n\t}\n};\n","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconClose(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 12,\n height: 12,\n viewBox: \"0 0 12 12\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 1L11 11\",\n stroke: \"#B6B7B9\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1 11L11 1\",\n stroke: \"#B6B7B9\",\n strokeWidth: 1.5,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconClose);\nexport default __webpack_public_path__ + \"static/media/icon-close.73e706cb.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconSetting(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 17,\n viewBox: \"0 0 17 17\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14.9946 9.333C15.0296 9.061 15.0558 8.789 15.0558 8.5C15.0558 8.211 15.0296 7.939 14.9946 7.667L16.8384 6.2645C17.0044 6.137 17.0481 5.9075 16.9433 5.7205L15.1956 2.7795C15.0907 2.5925 14.8548 2.5245 14.6625 2.5925L12.4867 3.4425C12.0323 3.1025 11.5429 2.822 11.0099 2.6095L10.6778 0.357C10.6516 0.153 10.4681 0 10.2496 0H6.75424C6.53578 0 6.35227 0.153 6.32606 0.357L5.99399 2.6095C5.46095 2.822 4.9716 3.111 4.5172 3.4425L2.34132 2.5925C2.14034 2.516 1.91314 2.5925 1.80828 2.7795L0.0605851 5.7205C-0.0530148 5.9075 -0.000583993 6.137 0.165447 6.2645L2.00926 7.667C1.97431 7.939 1.94809 8.2195 1.94809 8.5C1.94809 8.7805 1.97431 9.061 2.00926 9.333L0.165447 10.7355C-0.000583993 10.863 -0.0442764 11.0925 0.0605851 11.2795L1.80828 14.2205C1.91314 14.4075 2.14908 14.4755 2.34132 14.4075L4.5172 13.5575C4.9716 13.8975 5.46095 14.178 5.99399 14.3905L6.32606 16.643C6.35227 16.847 6.53578 17 6.75424 17H10.2496C10.4681 17 10.6516 16.847 10.6778 16.643L11.0099 14.3905C11.5429 14.178 12.0323 13.889 12.4867 13.5575L14.6625 14.4075C14.8635 14.484 15.0907 14.4075 15.1956 14.2205L16.9433 11.2795C17.0481 11.0925 17.0044 10.863 16.8384 10.7355L14.9946 9.333ZM8.50193 11.475C6.81541 11.475 5.44347 10.1405 5.44347 8.5C5.44347 6.8595 6.81541 5.525 8.50193 5.525C10.1885 5.525 11.5604 6.8595 11.5604 8.5C11.5604 10.1405 10.1885 11.475 8.50193 11.475Z\",\n fill: \"#BDBDBD\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconSetting);\nexport default __webpack_public_path__ + \"static/media/icon-setting.55fd6b32.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _rect, _rect2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconSend(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 31,\n viewBox: \"0 0 30 31\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M30 15.5706C30 21.9806 26.2713 27.4853 20.9422 29.8751C19.1213 30.6903 17.1133 27.291 15.0017 27.291C12.8901 27.291 10.8821 30.6937 9.06114 29.8751C3.7287 27.4853 0 21.9806 0 15.5706C0 6.9719 6.71567 0 14.9983 0C23.281 0 30 6.9719 30 15.5706Z\",\n fill: \"#E8490A\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M9.67741 11.5L15 6L20.3226 11.5H9.67741Z\",\n fill: \"white\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 13.5486,\n y: 8,\n width: 2.90323,\n height: 11,\n rx: 1.45161,\n fill: \"white\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 13.5486,\n y: 21,\n width: 2.90323,\n height: 3,\n rx: 1.45161,\n fill: \"white\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconSend);\nexport default __webpack_public_path__ + \"static/media/icon-send.f0d14168.svg\";\nexport { ForwardRef as ReactComponent };","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconFile(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n className: \"icon-file\",\n width: 16,\n height: 18,\n viewBox: \"0 0 16 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.8005 5.18802L5.38139 10.6886C4.8527 11.2252 4.8527 12.1643 5.38139 12.701C5.91008 13.2376 6.83529 13.2376 7.36398 12.701L14.237 5.72466C15.2943 4.65138 15.2943 2.77314 14.237 1.5657C13.1796 0.492422 11.3292 0.492422 10.1396 1.5657L1.94491 10.1519C0.358838 11.7619 0.358838 14.4451 1.94491 16.055C3.53098 17.6649 6.17443 17.6649 7.7605 16.055L14.6335 9.07867\",\n stroke: \"#9E9E9E\",\n strokeWidth: 1.48694,\n strokeMiterlimit: 10,\n strokeLinecap: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconFile);\nexport default __webpack_public_path__ + \"static/media/icon-file.256cb72f.svg\";\nexport { ForwardRef as ReactComponent };","var _rect, _path, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgBotProfile(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 82,\n height: 83,\n fill: \"none\",\n viewBox: \"0 0 82 83\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 82,\n height: 82,\n y: 0.577,\n fill: \"#E8490A\",\n rx: 41\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M48.24 27.951h-.849c-.133 0-.242.104-.242.233v6.793c0 .129.11.233.242.233h.849c.133 0 .241-.104.241-.233v-6.793c-.002-.129-.108-.233-.241-.233z\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M40.999 16.216c-14.239 0-25.783 10.191-25.783 22.959 0 6.633 3.853 21.904 24.261 28.387 2.057.653 1.6-.286 1.226-.941-1.726-3.01-1.217-6.85.794-6.85 13.085 0 25.286-9.75 25.286-21.778 0-12.028-11.546-21.777-25.784-21.777zm0 26.669c-16.602 0-18.344-1.209-18.344-8.192 0-5.913 9.072-12.82 18.344-12.82 9.271 0 18.343 6.907 18.343 12.82 0 6.985-1.741 8.192-18.343 8.192z\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fill: \"#fff\",\n d: \"M34.606 27.951h-.848c-.133 0-.242.104-.242.233v6.793c0 .129.109.233.242.233h.848c.133 0 .242-.104.242-.233v-6.793c0-.129-.109-.233-.242-.233zM44.962 36.723c-.202-.058-.403-.042-.599.042-.195.087-.324.224-.389.41-.202.578-.579 1.045-1.127 1.403-.549.357-1.165.535-1.848.535-.684 0-1.3-.178-1.848-.535-.549-.358-.925-.825-1.128-1.402-.065-.187-.193-.324-.385-.411-.191-.087-.387-.1-.592-.042-.21.058-.365.17-.463.34-.098.168-.114.344-.048.524.3.873.862 1.577 1.682 2.11.82.533 1.748.8 2.782.8 1.031 0 1.959-.267 2.781-.8.82-.533 1.382-1.237 1.683-2.11.065-.18.047-.356-.048-.524-.098-.17-.248-.282-.453-.34z\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgBotProfile);\nexport default __webpack_public_path__ + \"static/media/bot-profile.73edc6df.svg\";\nexport { ForwardRef as ReactComponent };","import styled, { css } from 'styled-components';\n\nimport { device } from 'styles/mediaQueries';\n\nconst ConversationStyle = styled.div`\n\theight: 557px;\n\tdisplay: flex;\n\tflex-direction: column;\n\tposition: relative;\n\tborder-radius: 40px 0 0 0;\n\toverflow: hidden;\n\n\t${({ isPage }) => {\n\t\tif (isPage) {\n\t\t\t// 팝업 윈도우( isPage ) 는 모바일만 반응형\n\t\t\treturn css`\n\t\t\t\t@media ${device.mobileL} {\n\t\t\t\t\theight: ${(props) => props.mobile - 137}px;\n\t\t\t\t}\n\t\t\t`;\n\t\t} else {\n\t\t\t// 일반 웹챗봇 반응형\n\t\t\treturn css`\n\t\t\t\t@media ${device.laptopL} {\n\t\t\t\t\theight: 405px;\n\t\t\t\t}\n\t\t\t\t@media ${device.mobileL} {\n\t\t\t\t\theight: ${(props) => props.mobile - 137}px;\n\t\t\t\t}\n\t\t\t`;\n\t\t}\n\t}}\n\n\t.converse {\n\t\tbackground-color: transparent;\n\t\tpadding: 12px 20px 0;\n\t\twhite-space: pre-wrap;\n\t\tword-break: break-all;\n\n\t\t@media ${device.laptopL} {\n\t\t\tpadding: 8px 10px 0;\n\t\t}\n\n\t\t.date {\n\t\t\ttext-align: center;\n\t\t\tfont-size: 12px;\n\t\t\tcolor: #b6b7b9;\n\t\t}\n\n\t\t.bot-response {\n\t\t\tdisplay: flex;\n\t\t\tpadding: 9px 0;\n\n\t\t\t.logo-area {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t\tborder-radius: 50%;\n\t\t\t\toverflow: hidden;\n\n\t\t\t\timg {\n\t\t\t\t\twidth: 100%;\n\t\t\t\t\theight: 100%;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t.user-response {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: flex-end;\n\t\t}\n\t}\n\t.custom-scrollstyle {\n\t\theight: 100%;\n\t\tborder-radius: 40px 0 0 0;\n\t\toverflow-y: scroll;\n\n\t\tscrollbar-width: none;\n\t\t::-webkit-scrollbar {\n\t\t\tdisplay: none;\n\t\t\twidth: 0;\n\t\t}\n\t\t-ms-overflow-style: none;\n\t}\n\n\t.custom-scrollstyle-inner {\n\t\t// window에서 가로 스크르롤 방지\n\t\toverflow-x: hidden;\n\t}\n\t.response-layout {\n\t\tdisplay: flex;\n\t\tpadding: 9px 0;\n\t\tword-break: keep-all;\n\t\tword-wrap: break-word;\n\n\t\t.logo-area {\n\t\t\twidth: 30px;\n\t\t\theight: 30px;\n\t\t\tborder-radius: 50%;\n\t\t\toverflow: hidden;\n\n\t\t\timg {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t}\n\n\t\t.response-style {\n\t\t\tmargin-top: 17px;\n\t\t\tmargin-left: 8px;\n\t\t\ttext-align: left;\n\t\t}\n\t}\n\n\t.follow-to-bottom {\n\t\tdisplay: none;\n\t}\n`;\n\nexport default ConversationStyle;\n","import styled from 'styled-components';\n\n// response\nimport { device } from 'styles/mediaQueries';\n\nconst TimeStampStyle = styled.div`\n\tcolor: #bdbdbd;\n\tline-height: 1;\n\n\tspan {\n\t\tdisplay: inline-block;\n\t\tfont-size: 12px;\n\t\tfont-weight: 500;\n\t}\n\n\t&.item-time {\n\t\tmargin-top: 7px;\n\n\t\t@media ${device.mobileL} {\n\t\t\tmargin-top: 4px;\n\n\t\t\tspan {\n\t\t\t\tfont-size: 11px;\n\t\t\t}\n\t\t}\n\t}\n`;\n\ntype timestampType = {\n\tisTime?: string;\n\tisDate?: number;\n};\n\n// 채팅 상단 날짜\nconst HeaderDate = ({ children }) => {\n\treturn
    {children}
    ;\n};\n\nconst Timestamp = ({ isTime, isDate }: timestampType) => {\n\t// 오늘시간 가져오기\n\tlet HH: string | number = new Date().getHours();\n\tlet MM: string | number = new Date().getMinutes();\n\n\t// 서버에서 받은 시간이 있으면\n\tif (isTime) {\n\t\tlet newTs = new Date(isTime);\n\n\t\tHH = newTs.getHours();\n\t\tMM = newTs.getMinutes();\n\t}\n\n\t// am/pm 체크\n\tlet ampm = HH >= 12 ? 'pm' : 'am';\n\n\t// 12 시간으로 변환\n\tHH = HH % 12;\n\tHH = HH ? HH : 12;\n\n\tMM = MM < 10 ? '0' + MM : MM;\n\n\tlet time = `${HH}:${MM}${ampm}`;\n\n\t// 상단 날짜 표시\n\tif (isDate) {\n\t\tlet showDate;\n\n\t\t//date 계산\n\t\tlet today = new Date();\n\t\tlet todayMM = ('0' + (today.getMonth() + 1)).slice(-2);\n\t\tlet todayDD = ('0' + today.getDate()).slice(-2);\n\t\tlet todayDate = `${todayMM}.${todayDD}`;\n\n\t\tlet yesterdayDate = `${todayMM}.${('0' + (today.getDate() - 1)).slice(-2)}`;\n\n\t\t// 현재가 01일이면 이전의 달의 마지막 날짜로로 다시 계산 ex) 10.01 -> 09.30 , 10.01 -> 10.00(x)\n\t\tif (today.getDate() - 1 === 0) {\n\t\t\t// calculate prev month\n\t\t\tlet d = new Date();\n\t\t\tlet dMM = new Date(d.setMonth(d.getMonth() - 1)).getMonth() + 1;\n\t\t\tlet prevMM = ('0' + dMM).slice(-2);\n\n\t\t\t// .setDate(0) 파라미터가 0 일경우 자동으로 이전달의 마지막날을 가져옴\n\t\t\tlet prevLastDayTimestamp = today.setDate(0);\n\n\t\t\t// last day of previous month\n\t\t\tlet prevLastDay = new Date(prevLastDayTimestamp).getDate();\n\n\t\t\t// full date of previous month date\n\t\t\tyesterdayDate = `${prevMM}.${prevLastDay}`;\n\t\t}\n\n\t\tlet getDate = new Date(isDate);\n\t\tlet mm = ('0' + (getDate.getMonth() + 1)).slice(-2);\n\t\tlet dd = ('0' + getDate.getDate()).slice(-2);\n\n\t\tlet myDate = `${mm}.${dd}`;\n\n\t\tshowDate = myDate;\n\n\t\t// console.log(yesterdayDate, 'yesterdayDate');\n\t\t// console.log(myDate, 'myDate,');\n\n\t\t//받은 date가 '어제' '오늘' 인지 체크\n\t\tif (myDate === todayDate) {\n\t\t\tshowDate = '오늘';\n\t\t}\n\t\tif (myDate === yesterdayDate) {\n\t\t\tshowDate = '어제';\n\t\t}\n\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{showDate}\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\treturn (\n\t\t\n\t\t\t{time}\n\t\t\n\t);\n};\n\nexport default Timestamp;\n","import { memo } from 'react';\nimport styled from 'styled-components';\n// components\nimport Timestamp from '../Items/common/Timestamp';\n\ntype responseUserType = {\n\tdata?: {\n\t\ttimestamp: string;\n\t\tmessageId: string;\n\t\titem: {\n\t\t\ttext?: string;\n\t\t\timage?: string;\n\t\t\turl?: string;\n\t\t};\n\t};\n\ttext?: string;\n\timage?: string;\n\tevent?: {\n\t\tmessageText?: string;\n\t\tlabel?: string;\n\t};\n};\n\nconst ResponseUser = memo(({ data, text, image, event }: responseUserType) => {\n\tconst RenderText = (text) => {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t

    {text}

    \n\t\t\t
    \n\t\t);\n\t};\n\n\tconst RenderImage = (img) => {\n\t\treturn (\n\t\t\t
    \n\t\t\t\t이미지\n\t\t\t
    \n\t\t);\n\t};\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t{/* 이전대화 - 텍스트형 */}\n\t\t\t\t{data && data.item.text && RenderText(data.item.text)}\n\t\t\t\t{/* 이전대화 - 이미지형 */}\n\t\t\t\t{data && data.item.image && RenderImage(data.item.image)}\n\t\t\t\t{/* 이전대화 - 파일업로드 */}\n\t\t\t\t{data && data.item.url && RenderImage(data.item.url)}\n\t\t\t\t{/* 현재대화 - 텍스트형 */}\n\t\t\t\t{text && RenderText(text)}\n\t\t\t\t{/* 현재대화 - 이미지형 */}\n\t\t\t\t{image && RenderImage(image)}\n\t\t\t\t{/* 현재대화 - 이벤트형 */}\n\t\t\t\t{event && RenderText(event.messageText || event.label)}\n\t\t\t
    \n\n\t\t\t{}\n\t\t
    \n\t);\n});\n\nconst ResponseUserStyle = styled.div`\n\ttext-align: right;\n\tpadding: 9px 0;\n\n\t.user-response {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\t/* margin: 9px 0; */\n\n\t\tp {\n\t\t\tcolor: #fff;\n\t\t\t/* background-color: #e8490a; */\n\t\t\tborder-radius: 20px 0px 20px 20px;\n\t\t\tpadding: 10px 15px;\n\t\t\tmax-width: 230px;\n\t\t\tword-break: break-all;\n\t\t\ttext-align: left;\n\t\t}\n\n\t\t.image-upload {\n\t\t\tborder-radius: 20px 0 20px 20px;\n\t\t\toverflow: hidden;\n\t\t\twidth: 250px;\n\t\t\theight: 150px;\n\n\t\t\timg {\n\t\t\t\twidth: 100%;\n\t\t\t\tmax-width: 100%;\n\t\t\t\tmax-height: 100%;\n\t\t\t}\n\t\t}\n\t}\n`;\nexport default ResponseUser;\n","var _rect, _rect2, _rect3, _rect4, _rect5, _rect6, _rect7, _rect8, _rect9, _rect10, _rect11, _rect12, _rect13, _rect14, _rect15, _rect16, _rect17, _rect18, _rect19, _rect20, _rect21, _rect22, _rect23;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSystemBgLine(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 90,\n height: 1,\n viewBox: \"0 0 90 1\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 4,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 8,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 12,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 16,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 20,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 24,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect8 || (_rect8 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 28,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect9 || (_rect9 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 32,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect10 || (_rect10 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 36,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect11 || (_rect11 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 40,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect12 || (_rect12 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 44,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect13 || (_rect13 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 48,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect14 || (_rect14 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 52,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect15 || (_rect15 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 56,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect16 || (_rect16 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 60,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect17 || (_rect17 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 64,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect18 || (_rect18 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 68,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect19 || (_rect19 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 72,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect20 || (_rect20 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 76,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect21 || (_rect21 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 80,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect22 || (_rect22 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 84,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })), _rect23 || (_rect23 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 88,\n width: 2,\n height: 1,\n fill: \"#C4C4C4\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSystemBgLine);\nexport default __webpack_public_path__ + \"static/media/system-bg-line.ef7528b0.svg\";\nexport { ForwardRef as ReactComponent };","import { memo } from 'react';\nimport styled from 'styled-components';\n\n// image\nimport { ReactComponent as BotProfile } from 'assets/images/bot-profile.svg';\n// import bot_profile from 'assets/images/bot-profile.svg';\n\ntype botLayoutType = {\n\tchildren?: JSX.Element | JSX.Element[];\n\tlogo?: string;\n};\n\nconst BotLayout = memo(({ children, logo }: botLayoutType) => {\n\treturn (\n\t\t\n\t\t\t{logo ? 챗봇 프로필 이미지 : }\n\t\t\t{/* 답변 아이템 표시 부분 */}\n\t\t\t
    {children}
    \n\t\t
    \n\t);\n});\n\nexport default BotLayout;\n\nconst BotLayoutStyle = styled.div`\n\tdisplay: flex;\n\tpadding: 9px 0;\n\t> img {\n\t\twidth: 30px;\n\t\theight: 30px;\n\t\tborder-radius: 100%;\n\t\tvertical-align: top;\n\t\toverflow: hidden;\n\t}\n\n\t.response-items {\n\t\tmargin-top: 17px;\n\t\tmargin-left: 8px;\n\t\ttext-align: left;\n\t}\n\n\t& > svg {\n\t\twidth: 30px;\n\t\theight: 30px;\n\t}\n\n\t// * 브라우져 렌더시 흐림 현상(?) 위해서 추가함\n\ttransform: none !important;\n\tperspective: none !important;\n`;\n","import { memo } from 'react';\nimport styled from 'styled-components';\n// components\nimport BotLayout from 'components/Layouts/BotLayout';\nimport Timestamp from 'components/Chat/Conversation/Messages/Items/common/Timestamp'; // 타임 스탬프\n\nconst TextStyle = styled.div`\n\tfont-size: 14px;\n\tborder-radius: 0px 20px 20px 20px;\n\tpadding: 10px 15px;\n\tmax-width: 250px;\n\tdisplay: inline-block;\n\tword-break: break-all;\n`;\n\ntype itemTextType = {\n\tshowText: string;\n\tnoBotLayout?: boolean;\n\tlogo: string;\n\ttime: string;\n};\n\nconst ItemText = memo(({ showText, noBotLayout, logo, time }: itemTextType) => {\n\tif (noBotLayout) {\n\t\treturn {showText};\n\t}\n\n\treturn (\n\t\t\n\t\t\t{showText}\n\t\t\t\n\t\t\n\t);\n});\n\nexport default ItemText;\n","import { memo } from 'react';\n\nimport styled from 'styled-components';\nimport BotLayout from 'components/Layouts/BotLayout';\nimport Timestamp from './common/Timestamp';\n\nconst ItemImageStyle = styled.div`\n\tborder-radius: 20px;\n\toverflow: hidden;\n\tbox-shadow: 0px 0px 8px rgba(131, 131, 131, 0.5);\n`;\n\nconst ImageAreaStyle = styled.div`\n\twidth: 250px;\n\n\ta {\n\t\tdisplay: block;\n\t}\n\n\timg {\n\t\tmax-width: 100%;\n\t\tmax-height: 100%;\n\t}\n`;\n\ntype itemImageType = {\n\timages: { imageUrl: string } | [{ imageUrl: string }];\n\tlogo: string;\n\ttime: string;\n};\n\nconst ItemImage = memo(({ images, logo, time }: itemImageType) => {\n\tlet image;\n\n\tif (Array.isArray(images)) {\n\t\timage = images[0].imageUrl;\n\t} else {\n\t\timage = images.imageUrl;\n\t}\n\n\t// ! 올리브영 예외처리\n\n\tlet chatbotId = window.dyc ? window.dyc.chatbotUid : null;\n\n\tlet isOlive =\n\t\tchatbotId === 'd573a3aa75263df6' ||\n\t\tchatbotId === '2edd487ccfd6073b' ||\n\t\tchatbotId === 'b147bfd2db9f2304' ||\n\t\tchatbotId === '8aa25a09e2e99c2e';\n\n\tconst onClickOlive = () => {\n\t\tconst callUrl = encodeURI(image);\n\n\t\t// 안드로이드\n\t\tif (window.navigator.userAgent.toLowerCase().indexOf('android') > -1) {\n\t\t\twindow.OliveLounge.openExternalURL(\n\t\t\t\tJSON.stringify({ url: callUrl.toString() })\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\t// 아이폰\n\t\tif (\n\t\t\twindow.navigator.userAgent.toLowerCase().indexOf('iphone') > -1 ||\n\t\t\twindow.navigator.userAgent.toLowerCase().indexOf('ipad') > -1 ||\n\t\t\twindow.navigator.userAgent.toLowerCase().indexOf('ipod') > -1\n\t\t) {\n\t\t\twindow.webkit.messageHandlers.openExternalURL.postMessage({\n\t\t\t\turl: `${callUrl}`,\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// 웹\n\t\tif (\n\t\t\twindow.navigator.userAgent.toLowerCase().indexOf('olivelounge') === -1\n\t\t) {\n\t\t\twindow.open(`${callUrl}`, '_blank');\n\t\t\treturn;\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t{isOlive ? (\n\t\t\t\t\t\t\n\t\t\t\t\t) : (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t이미지\n\t\t\t\t\t\t\n\t\t\t\t\t)}\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n});\n\nexport default ItemImage;\n","import { memo } from 'react';\nimport styled from 'styled-components';\n// helper\nimport { userOsChecker, userButtonTypeChecker } from './helpers';\n// lib\nimport { useDispatch } from 'react-redux';\nimport { send } from '@giantmachines/redux-websocket';\n// hook\nimport { wsSendDataFormatter } from 'components/Chat/Conversation/Messages/Items/common/helpers';\n//response\nimport { device } from 'styles/mediaQueries';\n\nconst CardBtnStyle = styled.div`\n\tbutton {\n\t\tpadding: 11px;\n\t\ttext-align: center;\n\t\tcolor: #2c7dce;\n\t\tline-height: 1;\n\t\tfont-size: 14px;\n\t\twidth: 100%;\n\t\tdisplay: block;\n\t\tborder-top: 1px solid;\n\t\tborder-color: #ecf0f3;\n\n\t\t@media ${device.mobileL} {\n\t\t\tfont-size: 13px;\n\t\t\tpadding: 9px;\n\t\t}\n\t}\n`;\n\ntype cardBtnType = {\n\tbtn: [\n\t\t{\n\t\t\ttype: 'message' | 'phone' | 'link' | 'event';\n\t\t\tlabel: string;\n\t\t}\n\t];\n};\n\nconst CardBtn = memo(({ btn }: cardBtnType) => {\n\tconst dispatch = useDispatch();\n\n\t// 버튼 이벤트 타입별 체크\n\tconst onClickBtn = (btn) => () => {\n\t\t// 메시지 전송,\n\t\tif (btn.type === 'message') {\n\t\t\tlet obj = wsSendDataFormatter('btn', btn);\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'ADD_MESSAGE',\n\t\t\t\tpayload: obj,\n\t\t\t});\n\n\t\t\tdispatch(send(obj));\n\t\t}\n\n\t\t//대화의도 연결일때\n\t\tif (btn.type === 'event') {\n\t\t\tlet obj = wsSendDataFormatter('event', btn);\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'ADD_MESSAGE',\n\t\t\t\tpayload: obj,\n\t\t\t});\n\n\t\t\tdispatch(send(obj));\n\t\t}\n\n\t\t//전화\n\t\tif (btn.type === 'phone') {\n\t\t\twindow.open(`tel:${btn.phoneNumber}`, '_self');\n\t\t}\n\n\t\t// 링크\n\t\tif (btn.type === 'link') {\n\t\t\t// os, 기기 체크\n\t\t\tlet link;\n\t\t\tlet detectOS = userOsChecker();\n\t\t\tlet obj = btn.link;\n\n\t\t\t//디폴트 링크\n\t\t\tlink = btn.link.web;\n\n\t\t\tlet isTypeMatch = userButtonTypeChecker(obj, detectOS);\n\n\t\t\t// 모바일에서 앱을 여는데 앱이 없으면 실행됨\n\t\t\tconst setRedirectMobile = (app, link) => {\n\t\t\t\t// send to mobile app\n\t\t\t\twindow.location.href = app;\n\n\t\t\t\t// settimtout in case app doesn't exist\n\t\t\t\tlet customTimeout = setTimeout(() => {\n\t\t\t\t\twindow.location.href = link;\n\t\t\t\t\twindow.clearTimeout(customTimeout);\n\t\t\t\t}, 3000);\n\t\t\t};\n\n\t\t\t// 링크 설정이 있으면 - 모바일앱을 열려고 할때 사용\n\t\t\tif (isTypeMatch) {\n\t\t\t\tlink = isTypeMatch;\n\n\t\t\t\t// 모바일 체크\n\t\t\t\tif (obj.ios || obj.android) {\n\t\t\t\t\tlet whichLink = obj.mobile ? obj.mobile : obj.web;\n\n\t\t\t\t\tsetRedirectMobile(link, whichLink);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// ! 올리브영 창닫기를 위한 별도 예외처리\n\n\t\t\tlet chatbotId = window.dyc ? window.dyc.chatbotUid : null;\n\n\t\t\tlet isOlive =\n\t\t\t\tchatbotId === 'd573a3aa75263df6' ||\n\t\t\t\tchatbotId === '2edd487ccfd6073b' ||\n\t\t\t\tchatbotId === 'b147bfd2db9f2304' ||\n\t\t\t\tchatbotId === '8aa25a09e2e99c2e';\n\n\t\t\tif (isOlive) {\n\t\t\t\tconst callUrl = encodeURI(link);\n\n\t\t\t\t// 안드로이드\n\t\t\t\tif (window.navigator.userAgent.toLowerCase().indexOf('android') > -1) {\n\t\t\t\t\twindow.OliveLounge.openExternalURL(\n\t\t\t\t\t\tJSON.stringify({ url: callUrl.toString() })\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// 아이폰\n\t\t\t\tif (\n\t\t\t\t\twindow.navigator.userAgent.toLowerCase().indexOf('iphone') > -1 ||\n\t\t\t\t\twindow.navigator.userAgent.toLowerCase().indexOf('ipad') > -1 ||\n\t\t\t\t\twindow.navigator.userAgent.toLowerCase().indexOf('ipod') > -1\n\t\t\t\t) {\n\t\t\t\t\twindow.webkit.messageHandlers.openExternalURL.postMessage({\n\t\t\t\t\t\turl: `${callUrl}`,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// 웹\n\t\t\t\tif (\n\t\t\t\t\twindow.navigator.userAgent.toLowerCase().indexOf('olivelounge') === -1\n\t\t\t\t) {\n\t\t\t\t\twindow.open(`${callUrl}`, '_blank');\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// * ios 에서 새탭이 안열림.. 해결 안됨\n\t\t\tif (detectOS === 'ios') {\n\t\t\t\twindow.location.href = link;\n\t\t\t} else {\n\t\t\t\twindow.open(link, '_blank');\n\t\t\t}\n\t\t}\n\t};\n\n\t// 버튼 for loop\n\treturn (\n\t\t<>\n\t\t\t{btn.map((el, i) => {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t})}\n\t\t\n\t);\n});\n\nexport default CardBtn;\n","import React from 'react';\n\nimport styled from 'styled-components';\n\ntype carouselType = {\n\tdata: any;\n\tactive: number;\n\thandleActive: (index) => () => void;\n\tisThumbnail: boolean;\n};\n\nconst CardCarouselBtn = ({\n\tdata,\n\tactive,\n\thandleActive,\n\tisThumbnail,\n}: carouselType) => {\n\t// 버튼 개수 for loop\n\n\tlet items = [];\n\n\t// 이미지가 있으면 이미지 표 캐러셀 표시\n\n\t// 카드형 캐러셀\n\tif (isThumbnail) {\n\t\t// 이미지 전체를 가져와야 함\n\n\t\tfor (let [k, v] of data.entries()) {\n\t\t\titems.push(\n\t\t\t\t\n\t\t\t\t\t이미지\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\t// items배열에 이미지 추가\n\t} else {\n\t\t// 텍스트형 캐러셀\n\t\tfor (let i = 0; i < data.length; i++) {\n\t\t\titems.push(\n\t\t\t\t\n\t\t\t\t\t{i + 1}\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\n\treturn {items};\n};\n\nexport default CardCarouselBtn;\n\nconst CardCarouselBtnStyle = styled.ul`\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\twidth: 255px;\n\tmargin-top: 16px !important;\n\n\tli {\n\t\twidth: 58px;\n\t\theight: 29px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\tborder-radius: 10px;\n\t\toverflow: hidden;\n\t\tmargin-left: 7px;\n\t\tmargin-bottom: 7px;\n\n\t\tcursor: pointer;\n\t\toverflow: hidden;\n\n\t\t/* 일반 캐러셀 스타일 */\n\t\t// &.type-number {\n\t\t// \t&.active {\n\t\t// \t\tborder-radius: 0 10px 10px 10px;\n\t\t// \t}\n\t\t// }\n\n\t\t/* 이미지 캐러셀 스타일 */\n\t\t&.type-image {\n\t\t\tposition: relative;\n\n\t\t\t&:before {\n\t\t\t\tcontent: '';\n\t\t\t\tdisplay: block;\n\t\t\t\tposition: absolute;\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t\tbackground-color: rgba(256, 256, 256, 0.5);\n\t\t\t\toverflow: hidden;\n\t\t\t}\n\n\t\t\t&.active:before {\n\t\t\t\tbackground-color: transparent;\n\t\t\t}\n\n\t\t\timg {\n\t\t\t\twidth: 100%;\n\t\t\t}\n\t\t}\n\n\t\t&:nth-child(4n + 1) {\n\t\t\tmargin-left: 0;\n\t\t}\n\n\t\t&.active {\n\t\t\tborder-radius: 0 10px 10px 10px;\n\t\t}\n\t}\n`;\n","import { useState, useCallback } from 'react';\n\nimport styled, { css } from 'styled-components';\n\n// component\nimport CardBtn from './CardBtn'; // 버튼 컴포넌트\nimport CardCarouselBtn from './CardCarouselBtn'; // 버튼 컴포넌트\nimport Timestamp from './Timestamp';\n\n// helpers\nimport { userOsChecker, userButtonTypeChecker } from './helpers';\n\ntype cardTypeType = {\n\tdata: [\n\t\t{\n\t\t\ttitle: string;\n\t\t\tdescription: string;\n\t\t\tthumbnail: {\n\t\t\t\timageUrl: string;\n\t\t\t\tlink?: {\n\t\t\t\t\tweb?: string;\n\t\t\t\t\tios?: string;\n\t\t\t\t\tandroid?: string;\n\t\t\t\t\tmobile?: string;\n\t\t\t\t};\n\t\t\t};\n\t\t\tbuttons?: [\n\t\t\t\t{\n\t\t\t\t\ttype: 'message' | 'phone' | 'link' | 'event';\n\t\t\t\t\tlabel: string;\n\t\t\t\t}\n\t\t\t];\n\t\t}\n\t];\n\tisMenu?: boolean;\n\tisSquare?: boolean;\n\tisTextCard?: boolean;\n\tisCarousel?: boolean;\n\ttime?: string;\n};\n\nconst CardType = ({\n\tdata,\n\tisMenu,\n\tisSquare,\n\tisTextCard,\n\tisCarousel,\n\ttime,\n}: cardTypeType) => {\n\tconst [active, setActive] = useState(0);\n\n\t// 캐러셀 버튼 변경 이벤트\n\tconst handleActive = (index) => {\n\t\treturn () => {\n\t\t\tsetActive(index);\n\t\t};\n\t};\n\n\tconst setRedirectMobile = useCallback((app, link) => {\n\t\treturn () => {\n\t\t\t// send to mobile app\n\t\t\twindow.location.href = app;\n\n\t\t\t// settimtout in case app doesn't exist\n\t\t\tlet customTimeout = setTimeout(() => {\n\t\t\t\twindow.location.href = link;\n\t\t\t\twindow.clearTimeout(customTimeout);\n\t\t\t}, 3000);\n\t\t};\n\t}, []);\n\n\tlet thumbnailLink;\n\t// 해당 기기 체크\n\tlet detectOS;\n\n\treturn (\n\t\t<>\n\t\t\t{/* 카드 영역 */}\n\t\t\t\n\t\t\t\t{data.map((el, i) => {\n\t\t\t\t\tlet imgLink;\n\t\t\t\t\tlet redirectMobile;\n\t\t\t\t\tlet hasThumbnailLink = false;\n\n\t\t\t\t\t// 썸네일 있는지 체크\n\t\t\t\t\tif (el.thumbnail) {\n\t\t\t\t\t\t// check for image\n\t\t\t\t\t\tlet getUrl = el.thumbnail.imageUrl ? el.thumbnail.imageUrl : '';\n\t\t\t\t\t\tthumbnailLink = getUrl;\n\n\t\t\t\t\t\timgLink = getUrl;\n\n\t\t\t\t\t\t// 링크설정 체크\n\t\t\t\t\t\tif (el.thumbnail.link) {\n\t\t\t\t\t\t\tdetectOS = userOsChecker();\n\n\t\t\t\t\t\t\tlet obj = el.thumbnail.link;\n\n\t\t\t\t\t\t\t// web 설정이 디폴트\n\t\t\t\t\t\t\timgLink = obj.web;\n\n\t\t\t\t\t\t\t//사용자 링크 체크\n\t\t\t\t\t\t\thasThumbnailLink = true;\n\n\t\t\t\t\t\t\t// 링크 체크 순서\n\t\t\t\t\t\t\t// mac , win , ios, android 에 없으면, pc 또든 mobile 임, but 여기에도 없으면 web으로 디폴트 ( web 필수값임 )\n\t\t\t\t\t\t\tlet isButtonType = userButtonTypeChecker(obj, detectOS);\n\n\t\t\t\t\t\t\t// 링크 설정이 있으면\n\t\t\t\t\t\t\tif (isButtonType) {\n\t\t\t\t\t\t\t\timgLink = isButtonType;\n\n\t\t\t\t\t\t\t\t// 모바일 체크\n\t\t\t\t\t\t\t\tif (obj.ios || obj.android) {\n\t\t\t\t\t\t\t\t\tlet whichLink = obj.mobile ? obj.mobile : obj.web;\n\n\t\t\t\t\t\t\t\t\tredirectMobile = setRedirectMobile(isButtonType, whichLink);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/* 이미지 영역 */}\n\t\t\t\t\t\t\t{/* thumbnail > link type 체크해서 이미지 클릭시 페이지 이동 */}\n\t\t\t\t\t\t\t{thumbnailLink ? (\n\t\t\t\t\t\t\t\tdetectOS === 'ios' || detectOS === 'andriod' ? (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t이미지\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t) : hasThumbnailLink ? (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t이미지\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t이미지\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) : null}\n\n\t\t\t\t\t\t\t{(el.title || el.description) && (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t{/* 타이틀 */}\n\t\t\t\t\t\t\t\t\t{el.title && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{el.title}\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t{/* 문구 */}\n\t\t\t\t\t\t\t\t\t{el.description && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t{el.description}\n\t\t\t\t\t\t\t\t\t\t

    \n\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{/* 버튼 영역 */}\n\t\t\t\t\t\t\t{!isMenu &&\n\t\t\t\t\t\t\t\t// 메뉴형에서는 버튼 표시 안함\n\t\t\t\t\t\t\t\tel.buttons && (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t\n\n\t\t\t{/* 캐러셀이면 표시 */}\n\t\t\t{isCarousel && data.length > 1 && (\n\t\t\t\t\n\t\t\t)}\n\t\t\t{!isMenu && }\n\t\t\n\t);\n};\n\nexport default CardType;\n\nconst CardAreaContentWrap = styled.div`\n\tflex-wrap: no-wrap;\n\tdisplay: flex;\n\tbox-shadow: 0px 0px 8px rgba(131, 131, 131, 0.5);\n\twidth: 250px;\n\toverflow-x: hidden;\n\tborder-radius: 20px;\n\n\t/* 텍스트 카드일때 box-shadow 제거 */\n\t${(props) =>\n\t\tprops.isTextCard &&\n\t\tcss`\n\t\t\tbox-shadow: none;\n\t\t\tborder-radius: none;\n\t\t`}\n\n\t.card-button-area {\n\t\tpadding: 0 13px;\n\t}\n\n\t// .text-area-style + .card-button-area {\n\t// \tmargin-top: 16px;\n\t// }\n`;\n\nconst CardContent = styled.div`\n\twidth: 250px;\n\tflex-shrink: 0;\n\tbackground-color: #fff;\n\n\tdisplay: flex;\n\tflex-direction: column;\n\tvisibility: hidden;\n\n\tjustify-content: space-between;\n\n\t&.active {\n\t\tvisibility: visible;\n\t\t/* active index만큼 왼쪽으로 카드가 움직임 */\n\t\tmargin-left: -${({ active = 0 }) => active * 250}px;\n\t}\n\n\tstrong {\n\t\tdisplay: inline-block;\n\t\tfont-weight: 400;\n\t}\n\n\tdiv + div {\n\t\tmargin-top: 0;\n\t}\n\n\t.image-area {\n\t\ttext-align: center;\n\n\t\t& a:hover {\n\t\t\tcursor: pointer;\n\t\t}\n\n\t\timg {\n\t\t\theight: ${({ isSquare }) => (isSquare ? '250px' : '125px')};\n\t\t\twidth: 100%;\n\t\t}\n\t}\n\n\t.text-area-style {\n\t\tflex: 1 0 auto;\n\n\t\tstrong {\n\t\t\tpadding: 15px 15px 4px;\n\t\t\tfont-size: 16px;\n\n\t\t\t& ~ p {\n\t\t\t\tpadding-top: 0;\n\t\t\t}\n\n\t\t\t&.add-padding {\n\t\t\t\tpadding: 15px;\n\t\t\t}\n\t\t}\n\n\t\tp {\n\t\t\tpadding: 15px;\n\t\t}\n\t}\n`;\n","import React, { memo } from 'react';\n\n// component\nimport CardType from '../Items/common/CardType';\nimport BotLayout from 'components/Layouts/BotLayout';\n\ntype itemTextCardType = {\n\tcontent: any;\n\tlogo: string;\n\ttime: string;\n};\n\nconst ItemTextCard = memo(({ content, logo, time }: itemTextCardType) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n});\n\nexport default ItemTextCard;\n","import { memo } from 'react';\n// component\nimport CardType from '../Items/common/CardType';\nimport BotLayout from 'components/Layouts/BotLayout';\n\ntype itemBasicCardType = {\n\tcontent: any;\n\tlogo: string;\n\ttime: string;\n};\n\nconst ItemBasicCard = memo(({ content, logo, time }: itemBasicCardType) => {\n\t// 캐러셀이 아니면 하나만 보이기\n\treturn (\n\t\t\n\t\t\t\n\t\t\n\t);\n});\n\nexport default ItemBasicCard;\n","import React, { useContext, memo } from 'react';\nimport styled from 'styled-components';\n// component\nimport CardType from '../Items/common/CardType';\nimport BotLayout from 'components/Layouts/BotLayout';\nimport Timestamp from './common/Timestamp';\n// lib\nimport { useDispatch } from 'react-redux';\nimport { send } from '@giantmachines/redux-websocket';\n// hook\nimport { wsSendDataFormatter } from 'components/Chat/Conversation/Messages/Items/common/helpers';\nimport {\n\tuserOsChecker,\n\tuserButtonTypeChecker,\n\tbtnIsLinkType,\n} from './common/helpers';\n\ntype itemMenuType = {\n\tmenu: any;\n\tlogo: string;\n\ttime: string;\n};\n\nconst ItemMenu = memo(({ menu, logo, time }: itemMenuType) => {\n\tconst dispatch = useDispatch();\n\n\tconst onClickMenuBtn = (btn) => () => {\n\t\t// 메시지 전송,\n\t\tif (btn.type === 'message') {\n\t\t\tlet obj = wsSendDataFormatter('btn', btn);\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'ADD_MESSAGE',\n\t\t\t\tpayload: obj,\n\t\t\t});\n\n\t\t\tdispatch(send(obj));\n\t\t}\n\n\t\t//대화의도 연결일때\n\t\tif (btn.type === 'event') {\n\t\t\tlet obj = wsSendDataFormatter('event', btn);\n\n\t\t\tdispatch({\n\t\t\t\ttype: 'ADD_MESSAGE',\n\t\t\t\tpayload: obj,\n\t\t\t});\n\n\t\t\tdispatch(send(obj));\n\t\t}\n\n\t\t//전화\n\t\tif (btn.type === 'phone') {\n\t\t\twindow.open(`tel:${btn.phoneNumber}`, '_self');\n\t\t}\n\n\t\t// 링크\n\t\tif (btn.type === 'link') {\n\t\t\tbtnIsLinkType(btn);\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t{/* 카드영역 */}\n\t\t\t\n\t\t\t{/* 메뉴버튼영역 */}\n\t\t\t\n\t\t\t\t{menu.buttons.map((el, i) => {\n\t\t\t\t\t// 이미지는 필수값 , 텍스트는 옵션임\n\n\t\t\t\t\treturn (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{/* 이미지 + 텍스트*/}\n\t\t\t\t\t\t\t{el.label ? (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t{/* 이미지 없을시 예외처리 */}\n\t\t\t\t\t\t\t\t\t{el.icon && 아이콘}\n\n\t\t\t\t\t\t\t\t\t{el.label}\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t// 이미지 only\n\t\t\t\t\t\t\t\t아이콘\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t})}\n\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n});\n\nexport default ItemMenu;\n\nconst ItemMenuButtonsStyle = styled.ul`\n\twidth: 240px;\n\tmax-height: 170px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: ${({ count }) => {\n\t\treturn count > 1 ? 'space-between' : 'flex-start';\n\t}};\n\tmargin: 10px auto 0;\n\n\tli {\n\t\tbox-shadow: 0px 0px 8px rgba(131, 131, 131, 0.5);\n\t\tborder-radius: 16px;\n\t\twidth: 74px;\n\t\theight: 74px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: center;\n\t\tborder: 1px solid transparent;\n\t\ttransition: border 300ms ease;\n\t\tcursor: pointer;\n\t\toverflow: hidden;\n\n\t\t&:nth-child(n + 4) {\n\t\t\tmargin-top: 10px;\n\t\t}\n\n\t\t&:hover {\n\t\t\tborder-color: #e8490a;\n\t\t}\n\n\t\t&.text-and-icon {\n\t\t\timg {\n\t\t\t\twidth: 36px;\n\t\t\t\tmargin: 0 auto;\n\t\t\t}\n\n\t\t\tspan {\n\t\t\t\tfont-size: 12px;\n\t\t\t\tdisplay: block;\n\t\t\t\ttext-align: center;\n\t\t\t\tmargin-top: 3px;\n\t\t\t}\n\t\t}\n\n\t\t&.just-icon {\n\t\t\ttransition: box-shadow 300ms ease;\n\t\t\tbackground-color: #fff;\n\t\t\tborder: none;\n\n\t\t\timg {\n\t\t\t\twidth: 100%;\n\t\t\t\theight: 100%;\n\t\t\t}\n\t\t}\n\t}\n`;\n","import React from 'react';\nimport ReactPlayer from 'react-player';\n\nimport styled from 'styled-components';\nimport BotLayout from 'components/Layouts/BotLayout';\nimport Timestamp from './common/Timestamp';\n\nconst ItemPlayerStyle = styled.div`\n\twidth: 250px;\n\n\tborder-radius: 0 20px 20px 20px;\n\toverflow: hidden;\n\n\tbox-shadow: 0px 0px 8px rgba(131, 131, 131, 0.5);\n\n\t//safari border-radius debug\n\tbackface-visibility: hidden;\n\ttransform: translate3d(0, 0, 0);\n\t-webkit-backface-visibility: hidden;\n\t-moz-backface-visibility: hidden;\n\t-webkit-transform: translate3d(0, 0, 0);\n\t-moz-transform: translate3d(0, 0, 0);\n`;\n\ntype itemPlayerType = {\n\tvideo: {\n\t\tlink: string;\n\t\tautoPlay: boolean;\n\t};\n\tisCurrent?: boolean;\n\tlogo: string;\n\ttime: string;\n};\n\nconst ItemPlayer = ({ video, isCurrent, logo, time }: itemPlayerType) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n};\n\nexport default ItemPlayer;\n","var _circle, _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIconQuickarrow(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 29,\n height: 29,\n viewBox: \"0 0 29 29\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 14.5,\n cy: 14.5,\n r: 14,\n fill: \"white\",\n stroke: \"#E8490A\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12.2693 10.0383L7.80775 14.4999L12.2693 18.9614\",\n stroke: \"#E8490A\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.80777 14.5L21.1924 14.5\",\n stroke: \"#E8490A\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIconQuickarrow);\nexport default __webpack_public_path__ + \"static/media/icon-quickarrow.6e61b809.svg\";\nexport { ForwardRef as ReactComponent };","import styled from 'styled-components';\n// img\nimport { ReactComponent as SystemBgLine } from 'assets/images/system-bg-line.svg';\nimport SystemProfile from 'assets/images/system-profile.png';\n\n// 상담 시작/종료 컴포넌트\nconst ItemSystem = ({ value }) => {\n\tlet text =\n\t\tvalue === 'start-agent'\n\t\t\t? '상담사와 연결되었습니다.'\n\t\t\t: '채팅 상담이 종료되었습니다.';\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t\t\n\t\t\t\t{text}\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n};\n\nexport default ItemSystem;\n\nconst ItemSystemStyle = styled.div`\n\tposition: relative;\n\ttext-align: center;\n\tline-height: 1;\n\toverflow: hidden;\n\tpadding: 9px 0;\n\n\tstrong {\n\t\tfont-size: 12px;\n\t\tcolor: #bdbdbd;\n\t\tfont-weight: 500;\n\t\tdisplay: block;\n\n\t\tmargin-top: 7px;\n\t}\n\n\t.system-content {\n\t\tdisplay: inline-block;\n\t\tposition: relative;\n\t\tpadding: 0 5px;\n\n\t\t// svg {\n\t\t// \tdisplay: block;\n\t\t// \tmargin: 0 auto;\n\t\t// }\n\n\t\t.system-profile {\n\t\t\tdisplay: block;\n\t\t\tmargin: 0 auto;\n\t\t\twidth: 30px;\n\t\t\theight: 30px;\n\t\t}\n\t\t.system-content-before,\n\t\t.system-content-after {\n\t\t\twidth: 89px;\n\t\t\theight: 1px;\n\t\t\tposition: absolute;\n\t\t\ttop: 50%;\n\t\t\tmargin-top: -1px;\n\t\t}\n\n\t\t.system-content-before {\n\t\t\tright: 100%;\n\t\t}\n\t\t.system-content-after {\n\t\t\tleft: 100%;\n\t\t}\n\t}\n\n\t.system-bg-line {\n\t\twidth: 100%;\n\t\tposition: absolute;\n\t\ttop: 50%;\n\t\tleft: 0;\n\t}\n`;\n","export default \"data:image/png;base64,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\"","import React, { memo, useEffect, useState } from 'react';\n\n// component\nimport ItemText from '../Items/ItemText';\nimport ItemImage from '../Items/ItemImage';\nimport ItemTextCard from '../Items/ItemTextCard';\nimport ItemBasicCard from '../Items/ItemBasicCard';\nimport ItemMenu from '../Items/ItemMenu';\nimport ItemPlayer from '../Items/ItemPlayer';\nimport ItemSystem from '../Items/ItemSystem';\n\ntype responseBotType = {\n\tbot: any;\n};\n\n// 챗봇 대화 영역\nconst ResponseBot = memo(({ bot }: responseBotType) => {\n\tconst getLogo = bot.messageby.senderIcon\n\t\t? bot.messageby.senderIcon.url\n\t\t: null;\n\t// Delay 예외처리\n\tif (bot.message.item.type === 'delay') return <>;\n\n\t// for loop 돌면서 받은 데이터 체크하면서 날짜 처리, 타입 처리\n\t// let botResponse = [];\n\n\t// 상담사 연결\n\tif (bot.message.item.type === 'system') {\n\t\tconst value = bot.message.item.value;\n\t\tconst systemType =\n\t\t\tvalue === 'start-agent' || value === 'end-agent' ? true : false;\n\n\t\tif (systemType) {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\n\t// 텍스트형\n\tif (bot.message.item.type === 'text') {\n\t\t// carousel X && no buttons -> 텍스트형\n\n\t\tif (\n\t\t\t// !bot.message.item.carousel &&\n\t\t\tbot.message.item.text.length < 2\n\t\t) {\n\t\t\tif (typeof bot.message.item.text[0] === 'string') {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t} else if (\n\t\t\t\tbot.message.item.text[0].buttons &&\n\t\t\t\tbot.message.item.text[0].buttons.length > 0\n\t\t\t) {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\treturn (\n\t\t\t\t\t\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\n\t// // 이미지형\n\tif (bot.message.item.type === 'image') {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\t// 카드형\n\tif (bot.message.item.type === 'basicCard') {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\t// // 텍스트 카드형\n\tif (bot.message.item.type === 'textCard') {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\t// /* 비디오형 */\n\tif (bot.message.item.type === 'video') {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\t/* 메뉴형 */\n\tif (bot.message.item.type === 'menu') {\n\t\treturn (\n\t\t\t\n\t\t);\n\t}\n\n\treturn <>;\n});\n\nexport default ResponseBot;\n","import { useState, memo, useEffect, useMemo, useCallback } from 'react';\nimport { useAppSelector } from 'lib/hook';\n//components\nimport Timestamp from './Items/common/Timestamp';\nimport ResponseUser from './ResponseUser';\nimport ResponseBot from './ResponseBot';\n// lib\nimport { useSticky, useScrollToBottom, useAtEnd } from 'react-scroll-to-bottom';\n\nconst EngineMessages = memo(() => {\n\tconst { messages } = useAppSelector((state) => state.engine);\n\tconst [sticky] = useSticky();\n\tconst scrollToBottom = useScrollToBottom();\n\n\t// const [isEnd] = useAtEnd();\n\t// const [showScroll, setShowScroll] = useState(false);\n\n\t// * 스크롤 방법 목록 ( 사용자가 위로 스크롤한 상태 )\n\t// * #1 대화가 생기면 무조건 아래로 스크롤 - 완료\n\t// * #2 대화가 생기면 스크롤 '버튼' 표시\n\t// * #3 바로 스크롤 '버튼' 표시\n\n\t// * 스크롤 방법 - #1\n\tuseEffect(() => {\n\t\tif (!sticky) {\n\t\t\tscrollToBottom();\n\t\t}\n\t}, [messages]);\n\n\t// 스크롤 방법 - #2\n\t// useEffect(() => {\n\t// \tif (!sticky) {\n\t// \t\tsetShowScroll(true);\n\t// \t}\n\t// }, [messages]);\n\n\t// if (showScroll) {\n\t// \tif (isEnd) {\n\t// \t\tsetShowScroll(false);\n\t// \t}\n\t// }\n\n\t// const onClickScroll = () => {\n\t// \t// 밑으로 스크롤\n\t// \tscrollToBottom();\n\n\t// \t// 스크롤 버튼 숨기기\n\t// \tsetShowScroll(false);\n\t// };\n\n\tconst displayMessage = useMemo(() => {\n\t\t// 대화 리스트\n\t\tlet messagesList = [];\n\n\t\t//날짜 체크 - 대화가 없으면 '오늘'표시\n\t\tif (messages && messages.length === 0) {\n\t\t\tlet date = new Date();\n\t\t\tmessagesList.push();\n\t\t}\n\n\t\t//이전 대화가 있는지 체크\n\t\tif (messages && messages.length > 0) {\n\t\t\tlet firstDateInMessage;\n\t\t\tlet userFirstDate;\n\n\t\t\t// 이전대화의 첫번째 날짜 가져오기\n\t\t\tif (messages[0].message) {\n\t\t\t\t// 이전대화일때 날짜\n\t\t\t\tuserFirstDate = new Date(messages[0].message.timestamp);\n\t\t\t} else {\n\t\t\t\t// 현재 대화일때 날짜\n\t\t\t\tuserFirstDate = new Date();\n\t\t\t}\n\n\t\t\tlet userFirstDateMM = ('0' + (userFirstDate.getMonth() + 1)).slice(-2);\n\t\t\tlet userFirstDateDD = userFirstDate.getDate();\n\t\t\tfirstDateInMessage = `${userFirstDateMM}.${userFirstDateDD}`;\n\n\t\t\t// 전체 대화 loop\n\t\t\tmessagesList = messages.reduce((accu, curr, i) => {\n\t\t\t\t// 맨 처음 날짜 표시,\n\t\t\t\tif (i === 0) {\n\t\t\t\t\tlet date = new Date();\n\n\t\t\t\t\taccu.push(\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t//날짜 체크\n\t\t\t\tlet getElementDate;\n\t\t\t\tif (curr.message) {\n\t\t\t\t\tgetElementDate = new Date(curr.message.timestamp);\n\t\t\t\t} else {\n\t\t\t\t\tgetElementDate = new Date();\n\t\t\t\t}\n\t\t\t\tlet mm = ('0' + (getElementDate.getMonth() + 1)).slice(-2);\n\t\t\t\tlet dd = getElementDate.getDate();\n\t\t\t\tlet elDate = `${mm}.${dd}`;\n\n\t\t\t\t//처음 날짜와 비교 해서 다르면 날짜 표시 but 한번만 표기\n\t\t\t\tif (firstDateInMessage !== elDate) {\n\t\t\t\t\taccu.push(\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t\tfirstDateInMessage = elDate;\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\tcurr.message &&\n\t\t\t\t\tcurr.message.item &&\n\t\t\t\t\tcurr.message.item.type === 'welcome'\n\t\t\t\t)\n\t\t\t\t\treturn accu;\n\n\t\t\t\t// 이전 대화 - 사용자\n\t\t\t\tif (curr.messageby && curr.messageby.sender === 'user') {\n\t\t\t\t\taccu.push(\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// 이전 & 현재 대화 - 봇\n\t\t\t\tif (\n\t\t\t\t\tcurr.message &&\n\t\t\t\t\tcurr.messageby.sender.indexOf('chatbot') !== -1 &&\n\t\t\t\t\tcurr.message.item\n\t\t\t\t) {\n\t\t\t\t\taccu.push(\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// 상담사 연결\n\t\t\t\tif (\n\t\t\t\t\tcurr.message &&\n\t\t\t\t\tcurr.messageby.sender.indexOf('system') > -1 &&\n\t\t\t\t\tcurr.message.item\n\t\t\t\t) {\n\t\t\t\t\taccu.push(\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// 현재 대화 - 사용자\n\t\t\t\tif (curr.type === 'text') {\n\t\t\t\t\taccu.push();\n\t\t\t\t}\n\n\t\t\t\tif (curr.type === 'image') {\n\t\t\t\t\taccu.push();\n\t\t\t\t}\n\n\t\t\t\tif (curr.type === 'event') {\n\t\t\t\t\t// 일반 텍스트이면 messagesText\n\t\t\t\t\t// 사용자 event 이면 label로 텍스트 표시\n\t\t\t\t\taccu.push(\n\t\t\t\t\t\t\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn accu;\n\t\t\t}, []);\n\t\t}\n\n\t\treturn messagesList;\n\t}, [messages]);\n\n\treturn (\n\t\t<>\n\t\t\t{displayMessage}\n\t\t\t{/* 스크롤 버튼 */}\n\t\t\t{/* {showScroll && (\n\t\t\t\t\n\t\t\t\t\tSCROLLBOTTOM\n\t\t\t\t\n\t\t\t)} */}\n\t\t\t{/* 스크롤 방법 - #3\n\t\t\t\t\t{!sticky && } \n\t\t\t*/}\n\t\t\n\t);\n});\n\nexport default EngineMessages;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgInputCheck(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 16,\n height: 16,\n viewBox: \"0 0 16 16\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M12 5L6.5 11L4 8.27273\",\n stroke: \"white\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInputCheck);\nexport default __webpack_public_path__ + \"static/media/input-check.d6159f53.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, useContext } from 'react';\nimport styled from 'styled-components';\n// image\nimport { ReactComponent as Goback } from 'assets/images/icon-quickarrow.svg';\n// lib\nimport { useDispatch } from 'react-redux';\nimport { send } from '@giantmachines/redux-websocket';\n// hook\nimport { wsSendDataFormatter } from 'components/Chat/Conversation/Messages/Items/common/helpers';\n\ntype quickReplyType = {\n\tdata: any;\n\tisQuickReply?: boolean;\n};\n\nconst QuickReply = ({ data, isQuickReply }: quickReplyType) => {\n\t// 타입체크하기\n\tconst [isFirstChecked, setIsFirstChecked] = useState(false);\n\tconst [activeIndex, setActiveIndex] = useState(false);\n\tconst [selectedFirstName, setSelectedFirstName] = useState('');\n\n\tconst dispatch = useDispatch();\n\n\tlet firstReply;\n\tlet secondReply;\n\n\t// quickReply 선택 이벤트\n\tconst firstReplyIsClicked = (index, name) => {\n\t\treturn () => {\n\t\t\tsetIsFirstChecked(true); // firstReply 상태 변경\n\t\t\tsetActiveIndex(index); // firstReply 선택한 인덱스 추가\n\n\t\t\tsetSelectedFirstName(name);\n\t\t};\n\t};\n\n\t// secondReply 뒤로가기\n\tconst goBacktoFirstReply = () => {\n\t\treturn resetReply;\n\t};\n\n\tconst resetReply = () => {\n\t\t// 전체 초기화\n\t\tsetIsFirstChecked(false);\n\t\tsetActiveIndex(false);\n\t\tsetSelectedFirstName('');\n\t};\n\n\t// handle Reply 여기서 답변 나가는 이벤트\n\tconst handleReply = (data) => {\n\t\tlet obj;\n\n\t\t//이벤트인지 메시지인지 체크\n\t\tif (data.type === 'message') {\n\t\t\tobj = wsSendDataFormatter('quick', data);\n\t\t}\n\n\t\tif (data.type === 'event') {\n\t\t\tobj = wsSendDataFormatter('event', data);\n\t\t}\n\n\t\treturn () => {\n\t\t\tdispatch({\n\t\t\t\ttype: 'ADD_MESSAGE',\n\t\t\t\tpayload: obj,\n\t\t\t});\n\n\t\t\tdispatch(send(obj));\n\n\t\t\t// 전송 후 초기화\n\t\t\tresetReply();\n\t\t};\n\t};\n\n\t// 상위 리플라이\n\tfirstReply = data.map((el, i) => {\n\t\t// 클릭 이벤트 분리하기\n\n\t\t// 퀵 리플라이일때\n\t\tif (isQuickReply) {\n\t\t\treturn (\n\t\t\t\t
  • \n\t\t\t\t\t{el.label}\n\t\t\t\t
  • \n\t\t\t);\n\t\t}\n\n\t\t// 멀티 퀵리플라이일때\n\t\treturn (\n\t\t\t
  • \n\t\t\t\t{el.label}\n\t\t\t
  • \n\t\t);\n\t});\n\n\t// 하위 리플라이 - 상위 index 가져옴\n\tif (activeIndex !== false && typeof activeIndex !== 'boolean') {\n\t\tif (data[activeIndex].quickReplies) {\n\t\t\t// 하위 답변 컴포넌트 생성\n\t\t\tsecondReply = data[activeIndex].quickReplies.map((el, i) => {\n\t\t\t\treturn (\n\t\t\t\t\t
  • \n\t\t\t\t\t\t{el.label}\n\t\t\t\t\t
  • \n\t\t\t\t);\n\t\t\t});\n\t\t}\n\t}\n\n\t// 하위가 있으면 보여주기\n\n\treturn (\n\t\t
    \n\t\t\t{/* 상위 리플라이 */}\n\t\t\t{!isFirstChecked && (\n\t\t\t\t\n\t\t\t\t\t{firstReply}\n\t\t\t\t\n\t\t\t)}\n\t\t\t{/* 하위 리플라이 */}\n\t\t\t{isFirstChecked && (\n\t\t\t\t<>\n\t\t\t\t\t{/* 이전/선택한 firstReply 보이기 */}\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t{selectedFirstName}\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{/* secondReply 보이기 */}\n\t\t\t\t\t\t{secondReply}\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t)}\n\t\t\n\t);\n};\n\nexport default QuickReply;\n\nconst QuickReplyStyle = styled.ul`\n\twidth: 100%;\n\tpadding: 3px 9px;\n\tdisplay: flex;\n\tflex-wrap: wrap;\n\tjustify-content: flex-end;\n\tbackground-color: transparent;\n\n\tli {\n\t\tmargin: 3px;\n\t\tborder-radius: 50px;\n\t\tborder: 1px solid #e8490a;\n\t\tcolor: #e8490a;\n\t\tpadding: 7px 9px;\n\t\tcursor: pointer;\n\t\tfont-size: 13px;\n\t\tline-height: 1;\n\n\t\t&:hover {\n\t\t\tcolor: #fff;\n\t\t\tbackground-color: #e8490a;\n\t\t}\n\t}\n`;\n\nconst SecondReplyHeader = styled.div`\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tbackground-color: transparent;\n\tpadding: 3px 9px;\n\n\tdiv {\n\t\tmargin: 3px;\n\n\t\tsvg {\n\t\t\tdisplay: block;\n\t\t}\n\n\t\t&:hover {\n\t\t\tcursor: pointer;\n\n\t\t\tcircle {\n\t\t\t\tfill: #e8490a;\n\t\t\t\tstroke: #e8490a;\n\t\t\t}\n\t\t\tpath {\n\t\t\t\tstroke: #fff;\n\t\t\t}\n\t\t}\n\t}\n\n\tspan {\n\t\tcolor: #fff;\n\t\tbackground-color: #e8490a;\n\t\tborder-radius: 50px;\n\t\tfont-size: 13px;\n\t\tline-height: 1;\n\t\tpadding: 7px 9px;\n\t}\n\n\t& > * {\n\t\tmargin: 3px;\n\t}\n`;\n","import React from 'react';\nimport styled from 'styled-components';\nimport BotLayout from 'components/Layouts/BotLayout';\n\nconst LoadingStyle = styled.div`\n\t.spinner {\n\t\tmargin: 0 auto;\n\t\twidth: 50px;\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t}\n\n\t.spinner > div {\n\t\twidth: 10px;\n\t\theight: 10px;\n\t\tbackground-color: #e8490a;\n\n\t\tborder-radius: 100%;\n\t\t-webkit-animation: bouncedelay 1s infinite ease-in-out both;\n\t\tanimation: bouncedelay 1s infinite ease-in-out both;\n\t}\n\n\t.spinner .bounce1 {\n\t\t-webkit-animation-delay: -0.32s;\n\t\tanimation-delay: -0.32s;\n\t}\n\n\t.spinner .bounce2 {\n\t\t-webkit-animation-delay: -0.16s;\n\t\tanimation-delay: -0.16s;\n\t}\n\n\t@-webkit-keyframes bouncedelay {\n\t\t0%,\n\t\t80%,\n\t\t100% {\n\t\t\t-webkit-transform: scale(0);\n\t\t}\n\t\t40% {\n\t\t\t-webkit-transform: scale(1);\n\t\t}\n\t}\n\n\t@keyframes bouncedelay {\n\t\t0%,\n\t\t80%,\n\t\t100% {\n\t\t\t-webkit-transform: scale(0);\n\t\t\ttransform: scale(0);\n\t\t}\n\t\t40% {\n\t\t\t-webkit-transform: scale(1);\n\t\t\ttransform: scale(1);\n\t\t}\n\t}\n`;\n\nconst Loading = ({ logo }) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n};\n\nexport default Loading;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgInputSelectFold(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 13,\n height: 7,\n viewBox: \"0 0 13 7\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M1.71436 1L6.71435 6L11.7144 1\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInputSelectFold);\nexport default __webpack_public_path__ + \"static/media/input-select-fold.ea075db1.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/input-check-disabled.8dd8dd0c.svg\";","export default __webpack_public_path__ + \"static/media/input-radio.3d229347.svg\";","export default __webpack_public_path__ + \"static/media/input-radio-disabled.420269e6.svg\";","import React, { useState, memo } from 'react';\n\nimport styled from 'styled-components';\n\n// type confirmButtonsType = {};\n\nconst ConfirmButtons = memo(() => {\n\t// TODO 확인 취소 이벤트\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\t확인\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t취소\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n});\n\nexport default ConfirmButtons;\n\nconst ConfirmButtonStyle = styled.div`\n\tposition: relative;\n\ttext-align: center;\n\tmargin-top: 16px;\n\n\t.confirm-wrap {\n\t\tposition: relative;\n\t\tdisplay: inline-block;\n\n\t\t& > button {\n\t\t\twidth: 82px;\n\t\t\theight: 36px;\n\t\t\tpadding: 0;\n\t\t}\n\t}\n\t&:hover button {\n\t\topacity: 1;\n\t}\n\tbutton {\n\t\tdisplay: inline-block;\n\t\tfont-weight: 400;\n\t\ttext-align: center;\n\t\twhite-space: nowrap;\n\t\tvertical-align: middle;\n\t\t-webkit-user-select: none;\n\t\t-moz-user-select: none;\n\t\t-ms-user-select: none;\n\t\tuser-select: none;\n\t\tborder-radius: 60px;\n\t\tpadding: 8px 28px;\n\n\t\t& + button {\n\t\t\tmargin-left: 8px;\n\t\t}\n\t}\n\n\t.confirm-btn {\n\t\tcolor: #fff;\n\t\tbackground-color: #e8490a;\n\t\tborder: 1px solid #e8490a;\n\n\t\t&:hover {\n\t\t\tbackground-color: #d94d16;\n\t\t}\n\t}\n\n\t.cancel-btn {\n\t\tborder: solid 1px #e0e0e0;\n\t\tbackground-color: #ffffff;\n\t\t&:hover {\n\t\t\tbackground-color: #f5f5f5;\n\t\t}\n\t}\n`;\n\nconst Btn = styled.button``;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n// image\nimport { ReactComponent as InputCheck } from 'assets/images/input-check.svg';\nimport inputCheckDisabled from 'assets/images/input-check-disabled.svg';\nimport inputRadio from 'assets/images/input-radio.svg';\nimport inputRadioDisabled from 'assets/images/input-radio-disabled.svg';\n// component\nimport BotLayout from 'components/Layouts/BotLayout';\nimport ConfirmButtons from './common/ConfirmButtons';\n\n// 체크박스\nconst CheckBox = ({ label, disabled, value }) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t\t{label && (\n\t\t\t\t{label}\n\t\t\t)}\n\t\t
    \n\t);\n};\n\n// 라디오\nconst Radio = ({ label, disabled, name, value }) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t{label && {label}}\n\t\t\n\t);\n};\n\nconst ItemCheckboxRadio = ({ box, logo }) => {\n\t// radio name 중복값 방지하기 위한 랜덤값 생성\n\tlet radioName = Math.floor(Math.random() * 100) + 1;\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t{/* 최대 14글자 */}\n\n\t\t\t\t\t

    {box.title.slice(0, 14)}

    \n\n\t\t\t\t\t{\n\t\t\t\t\t\t// 라디오\n\t\t\t\t\t\tbox.items.map((el, i) => {\n\t\t\t\t\t\t\t// 체크박스\n\t\t\t\t\t\t\tif (box.isCheckBox) {\n\t\t\t\t\t\t\t\t// TODO disabled 내려주는지 체크\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t
    \n\t\t\t
    \n\t\t\t\n\t\t
    \n\t);\n};\n\nexport default ItemCheckboxRadio;\n\nconst ItemCheckboxRadioStyle = styled.div`\n\t.CheckboxRadioLayout {\n\t\twidth: 250px;\n\t\tbox-shadow: 0px 0px 8px rgba(131, 131, 131, 0.5);\n\t\tborder-radius: 20px;\n\t\tpadding: 20px;\n\t\tbackground-color: #fff;\n\t}\n\n\tp {\n\t\tfont-weight: 500;\n\t\tfont-size: 14px;\n\t\tline-height: 20px;\n\t}\n\n\t.selection-area {\n\t\tmargin-top: 15px;\n\t}\n`;\n\nconst CheckBoxLabelStyle = styled.label`\n\tposition: relative;\n\tdisplay: inline-flex;\n\talign-items: center;\n\n\t&[disabled] {\n\t\tcursor: default;\n\t}\n\n\t.label {\n\t\tmargin-left: 8px;\n\t\tcolor: #333;\n\t}\n\n\t& > input {\n\t\tclip: rect(1px, 1px, 1px, 1px);\n\t\theight: 1px;\n\t\tposition: absolute;\n\t\twhite-space: nowrap;\n\t\twidth: 1px;\n\t\topacity: 0;\n\t\tborder-width: 0px;\n\t\tborder-style: initial;\n\t\tborder-color: initial;\n\t\tborder-image: initial;\n\t\toverflow: hidden;\n\t\tpadding: 0px;\n\t}\n\n\t& > input + div {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tborder-radius: 4px;\n\t\tborder: solid 1px #e0e0e0;\n\t\tbackground-color: #ffffff;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\n\t\tsvg {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t&:hover input:not(:disabled) + div {\n\t\tborder-color: #e8490a;\n\t}\n\n\tinput:not(:disabled):checked + div {\n\t\tborder-color: #e8490a;\n\t\tbackground-color: #e8490a;\n\n\t\tsvg {\n\t\t\tdisplay: block;\n\t\t\twidth: 16px;\n\t\t\theight: 16px;\n\t\t}\n\t}\n\n\tinput:disabled + div {\n\t\tcursor: default;\n\t\tbackground-color: #eeeeee;\n\n\t\tsvg {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\tinput:disabled:checked + div {\n\t\tbackground-image: url(${inputCheckDisabled});\n\t}\n`;\n\nconst RadioLabelStyle = styled.label`\n\tposition: relative;\n\tdisplay: inline-flex;\n\talign-items: center;\n\n\t& > span.label {\n\t\tmargin-left: 8px;\n\t\tcolor: #333;\n\t}\n\t& > input {\n\t\tclip: rect(1px, 1px, 1px, 1px);\n\t\theight: 1px;\n\t\tposition: absolute;\n\t\twhite-space: nowrap;\n\t\twidth: 1px;\n\t\topacity: 0;\n\t\tborder-width: 0px;\n\t\tborder-style: initial;\n\t\tborder-color: initial;\n\t\tborder-image: initial;\n\t\toverflow: hidden;\n\t\tpadding: 0px;\n\t}\n\t& > input + div {\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tborder-radius: 50%;\n\t\tborder: solid 1px #e0e0e0;\n\t\tbackground-color: #ffffff;\n\t\tbackground-position: center;\n\t\tbackground-repeat: no-repeat;\n\t}\n\n\t:hover input:not(:disabled) + div {\n\t\tborder-color: #e8490a;\n\t}\n\tinput:not(:disabled):checked + div {\n\t\tborder-color: #e8490a;\n\t\tbackground-color: #e8490a;\n\t\tbackground-image: url(${inputRadio});\n\t}\n\n\tinput:disabled + div {\n\t\tcursor: default;\n\t\tbackground-color: #eeeeee;\n\t}\n\tinput:disabled:checked + div {\n\t\tbackground-image: url(${inputRadioDisabled});\n\t}\n\n\t&[disabled] {\n\t\tcursor: default;\n\n\t\t& > span.label {\n\t\t\tcolor: #bdbdbd;\n\t\t}\n\t}\n`;\n","import React, { useState, useContext } from 'react';\nimport styled from 'styled-components';\n//img\nimport { ReactComponent as SendIcon } from 'assets/images/icon-send.svg';\nimport { useAppSelector } from 'lib/hook';\n//response\nimport { device } from 'styles/mediaQueries';\n\ntype itemQuestionType = {\n\tquestion: {\n\t\tbuttons: [{ label: string }, { label: string }];\n\t\tprefix: string;\n\t\tsuffix: string;\n\t\tvalid: string;\n\t\tplaceholder: string;\n\t};\n};\n\nconst ItemQuestion = ({ question }: itemQuestionType) => {\n\tconst { home } = useAppSelector((state) => state.engine);\n\tconst [inputVal, setInputVal] = useState('');\n\n\tconst isSendIcon = home ? home.design.bottom.textInput.sendIcon.url : null;\n\n\tconst handleInputVal = (e) => {\n\t\tsetInputVal(e.target.value);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t

    {question.prefix}

    \n\t\t\t\t\t{inputVal}\n\t\t\t\t\t

    {question.suffix}

    \n\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t\t\n\n\t\t\t\t\t
    \n\t\t\t\t\t\t{isSendIcon ? (\n\t\t\t\t\t\t\t보내기 아이콘\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n};\n\nexport default ItemQuestion;\n\nconst ItemQuestionStyle = styled.div`\n\tposition: relative;\n\twidth: 100%;\n\tborder-radius: 5px;\n\tbackground-color: #fff;\n\tpadding-top: 40px;\n\tcolor: #000;\n\tpadding: 9px 12px;\n\ttext-align: right;\n\n\t.question-cancel-btn {\n\t\tpadding: 8px 20px;\n\t\t/* position: absolute;\n top: 5px;\n right: 5px; */\n\t\tdisplay: inline-block;\n\t\tmargin-left: auto;\n\t\tmargin-bottom: 10px;\n\t\tcolor: #333;\n\t\tborder: 1px solid #e0e0e0;\n\t\tfont-size: 14px;\n\t\tborder-radius: 18px;\n\t\t&:hover {\n\t\t\tbackground-color: rgb(245, 245, 245);\n\t\t}\n\t}\n\n\t.question-cont {\n\t\tbackground-color: #f6f8f9;\n\t\tborder-radius: 30px;\n\t}\n\n\t.question-content-input-area {\n\t\tdisplay: flex;\n\t\tpadding: 10px 10px 10px 24px;\n\t\talign-items: center;\n\t\t/* background-color: #ecf0f3; */\n\t\tborder-radius: 30px;\n\n\t\tinput {\n\t\t\tflex-grow: 1;\n\t\t\tmargin-right: 10px;\n\t\t\tbackground-color: transparent;\n\t\t}\n\n\t\t.icon-send {\n\t\t\tcursor: pointer;\n\t\t\tmargin-left: 17px;\n\t\t\tborder-radius: 50%;\n\t\t\toverflow: hidden;\n\n\t\t\timg {\n\t\t\t\twidth: 30px;\n\t\t\t\theight: 30px;\n\t\t\t}\n\t\t\twidth: 30px;\n\t\t\theight: 30px;\n\t\t}\n\t\t@media ${device.mobileL} {\n\t\t\tpadding: 10px 12px;\n\t\t}\n\t}\n\t.question-display {\n\t\tpadding: 12px 22px;\n\t\ttext-align: center;\n\t\tfont-size: 12px;\n\n\t\tspan {\n\t\t\tdisplay: block;\n\t\t\theight: 36px;\n\t\t\tline-height: 36px;\n\t\t\tmargin: 10px 0;\n\t\t\tborder-radius: 30px;\n\t\t\tborder: solid 1px #e0e0e0;\n\t\t\toverflow: hidden;\n\t\t\tbackground-color: #ecf0f3;\n\t\t}\n\t}\n\n\t/* 질문하기 컴포넌트가 렌더되면 \n 하단에 있는 footer는 가림 */\n\t& + div {\n\t\tdisplay: none;\n\t}\n`;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgInputSelectUnfold(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 13,\n height: 7,\n viewBox: \"0 0 13 7\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M11.2856 6L6.28565 1L1.28564 6\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgInputSelectUnfold);\nexport default __webpack_public_path__ + \"static/media/input-select-unfold.bce4dbac.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgIcoClock(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 17,\n height: 18,\n viewBox: \"0 0 17 18\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.5 16.5C12.6421 16.5 16 13.1421 16 9C16 4.85786 12.6421 1.5 8.5 1.5C4.35786 1.5 1 4.85786 1 9C1 13.1421 4.35786 16.5 8.5 16.5Z\",\n stroke: \"#757575\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.5 4.5V9L11.5 10.5\",\n stroke: \"#757575\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgIcoClock);\nexport default __webpack_public_path__ + \"static/media/ico_clock.fa8a566d.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState, memo, useRef } from 'react';\nimport { useClickAway } from 'react-use';\nimport styled from 'styled-components';\nimport Box, { EnhancerProps } from 'ui-box';\n//image\nimport { ReactComponent as SelectFold } from 'assets/images/input-select-fold.svg';\nimport { ReactComponent as SelectUnFold } from 'assets/images/input-select-unfold.svg';\n\nexport interface SelectProps extends EnhancerProps {\n\tclassName?: string;\n\tdisabled?: boolean;\n\tisInvalid?: boolean;\n\tplaceholder?: string;\n\tplaceholderColor?: string;\n\tvalue?: string;\n\tvalues?: string[];\n\tonClick?: (any) => void;\n\t/**\n\t * custom list\n\t */\n\tchildren?: React.ReactChildren | React.ReactNode | string;\n}\n\nconst Select = memo((props: SelectProps) => {\n\tconst {\n\t\tvalue,\n\t\tvalues,\n\t\tonClick,\n\t\tplaceholder,\n\t\tplaceholderColor,\n\t\tdisabled,\n\t\tisInvalid,\n\t\tchildren,\n\t\t...rest\n\t} = props;\n\n\tconst [active, setActive] = useState(false);\n\n\tconst seleteEl = useRef(null);\n\tuseClickAway(seleteEl, () => {\n\t\tsetActive(false);\n\t});\n\n\tconst onHandleActive = () => {\n\t\tsetActive((prev) => !prev);\n\t};\n\n\tconst onChangeValue = (data: string) => (e: React.MouseEvent) => {\n\t\te.stopPropagation();\n\t\tonClick(data);\n\t\tonHandleActive();\n\t};\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t{value ? (\n\t\t\t\t\t

    {value}

    \n\t\t\t\t) : (\n\t\t\t\t\tplaceholder && (\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{placeholder}\n\t\t\t\t\t\t

    \n\t\t\t\t\t)\n\t\t\t\t)}\n\t\t\t\t\n\t\t\t\t\n\t\t\t
    \n\n\t\t\t
      \n\t\t\t\t{values?.map((v, i) => (\n\t\t\t\t\t\n\t\t\t\t\t\t{v}\n\t\t\t\t\t\n\t\t\t\t))}\n\t\t\t\t{children}\n\t\t\t
    \n\t\t\n\t);\n});\n\nexport default Select;\n\nconst SelectWrap = styled.div`\n\tposition: relative;\n\tdisplay: inline-block;\n\tbox-sizing: border-box;\n\theight: 36px;\n\tborder-radius: 5px;\n\tborder: solid 1px #e0e0e0;\n\tbackground-color: #ffffff;\n\tvertical-align: middle;\n\n\t${({ isInvalid }) =>\n\t\tisInvalid &&\n\t\t`\n border-color: #ee4238 !important;\n & .placeholder {\n color: #ee4238 !important;\n }\n `}\n\n\t.select-value > svg {\n\t\tfloat: right;\n\t\tmargin-top: 15px;\n\t\twidth: 10px;\n\t\theight: 5px;\n\t}\n\n\t${({ disabled }) =>\n\t\tdisabled &&\n\t\t`\n background: #eeeeee;\n p,\n p.placeholder {\n color: #bdbdbd;\n }\n & .select-value{\n cursor: default !important;\n }\n `}\n\n\t${({ active }) =>\n\t\tactive\n\t\t\t? `\n border-color: #757575;\n svg.fold{\n display: none;\n }\n svg.unfold {\n display: inline-block;\n }\n ul.select-list{\n display: inline-block;\n }\n `\n\t\t\t: ` \n svg.unfold {\n display: none;\n }\n `} \n\n .select-value {\n\t\tdisplay: inline-block;\n\t\twidth: 100%;\n\t\tpadding: 0 12px;\n\t\theight: 36px;\n\t\tline-height: 36px;\n\t\tvertical-align: middle;\n\t\tcursor: pointer;\n\t\t& > p {\n\t\t\tmax-width: 100%;\n\t\t\tdisplay: inline-block;\n\t\t\tcolor: #333333;\n\t\t\toverflow: hidden;\n\t\t\ttext-overflow: ellipsis;\n\t\t\twhite-space: nowrap;\n\t\t}\n\t}\n\n\t.select-list {\n\t\twidth: 100%;\n\t\tmax-height: 160px;\n\t\toverflow-y: auto;\n\t\tdisplay: none;\n\t\tposition: absolute;\n\t\tleft: 0;\n\t\ttop: 38px;\n\t\tborder-radius: 5px;\n\t\tbox-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.16);\n\t\tz-index: 150;\n\t}\n\n\t.select-list li {\n\t\theight: 36px;\n\t\tline-height: 36px;\n\t\tbackground-color: #ffffff;\n\t\tpadding: 0 16px;\n\t\tmax-width: 100%;\n\t\toverflow: hidden;\n\t\ttext-overflow: ellipsis;\n\t\twhite-space: nowrap;\n\t\tcursor: pointer;\n\t\t&.on {\n\t\t\tbackground-color: #f5f5f5;\n\t\t}\n\t}\n\n\t.select-list li:hover {\n\t\tbackground-color: #f5f5f5;\n\t}\n`;\n","var _mask, _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgStar(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 28,\n viewBox: \"0 0 30 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"path-1-inside-1\",\n fill: \"white\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.225 0L19.7654 9.21556L29.9188 10.7024L22.5719 17.8717L24.3058 28L15.225 23.2156L6.14428 28L7.87815 17.8717L0.53125 10.7024L10.6847 9.21556L15.225 0Z\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M15.225 0L16.6603 -0.707132C16.391 -1.2538 15.8345 -1.6 15.225 -1.6C14.6156 -1.6 14.0591 -1.2538 13.7898 -0.707132L15.225 0ZM19.7654 9.21556L18.3302 9.92269C18.5628 10.3949 19.0128 10.7224 19.5336 10.7987L19.7654 9.21556ZM29.9188 10.7024L31.0363 11.8475C31.4718 11.4225 31.6286 10.7872 31.4407 10.2084C31.2528 9.6296 30.7528 9.20748 30.1507 9.1193L29.9188 10.7024ZM22.5719 17.8717L21.4545 16.7266C21.0779 17.094 20.9061 17.6231 20.9949 18.1417L22.5719 17.8717ZM24.3058 28L23.56 29.4155C24.099 29.6995 24.7524 29.6528 25.2455 29.295C25.7385 28.9372 25.9857 28.3305 25.8829 27.73L24.3058 28ZM15.225 23.2156L15.9709 21.8C15.5041 21.5541 14.946 21.5541 14.4792 21.8L15.225 23.2156ZM6.14428 28L4.56722 27.73C4.46443 28.3305 4.71154 28.9372 5.20461 29.295C5.69767 29.6528 6.35113 29.6995 6.89009 29.4155L6.14428 28ZM7.87815 17.8717L9.4552 18.1417C9.54398 17.6231 9.37214 17.094 8.99559 16.7266L7.87815 17.8717ZM0.53125 10.7024L0.29942 9.1193C-0.302709 9.20748 -0.802688 9.6296 -0.990579 10.2084C-1.17847 10.7872 -1.02174 11.4225 -0.586195 11.8475L0.53125 10.7024ZM10.6847 9.21556L10.9165 10.7987C11.4373 10.7224 11.8873 10.3949 12.1199 9.92269L10.6847 9.21556ZM13.7898 0.707132L18.3302 9.92269L21.2007 8.50843L16.6603 -0.707132L13.7898 0.707132ZM19.5336 10.7987L29.687 12.2855L30.1507 9.1193L19.9973 7.63245L19.5336 10.7987ZM28.8014 9.55729L21.4545 16.7266L23.6894 19.0168L31.0363 11.8475L28.8014 9.55729ZM20.9949 18.1417L22.7287 28.27L25.8829 27.73L24.149 17.6017L20.9949 18.1417ZM25.0516 26.5845L15.9709 21.8L14.4792 24.6311L23.56 29.4155L25.0516 26.5845ZM14.4792 21.8L5.39846 26.5845L6.89009 29.4155L15.9709 24.6311L14.4792 21.8ZM7.72134 28.27L9.4552 18.1417L6.30109 17.6017L4.56722 27.73L7.72134 28.27ZM8.99559 16.7266L1.6487 9.55729L-0.586195 11.8475L6.7607 19.0168L8.99559 16.7266ZM0.76308 12.2855L10.9165 10.7987L10.4528 7.63245L0.29942 9.1193L0.76308 12.2855ZM12.1199 9.92269L16.6603 0.707132L13.7898 -0.707132L9.2494 8.50843L12.1199 9.92269Z\",\n fill: \"#BDBDBD\",\n mask: \"url(#path-1-inside-1)\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStar);\nexport default __webpack_public_path__ + \"static/media/star.9f0981bb.svg\";\nexport { ForwardRef as ReactComponent };","export default __webpack_public_path__ + \"static/media/ico-calender-default.57fbbb0d.svg\";","import React, { memo, useState, useCallback } from 'react';\nimport '@hassanmojab/react-modern-calendar-datepicker/lib/DatePicker.css';\nimport { Calendar } from '@hassanmojab/react-modern-calendar-datepicker';\nimport Select from 'components/Common/Select';\nimport { ReactComponent as ClockIcon } from 'assets/images/ico_clock.svg';\n\n// img\nimport Arrow from 'assets/images/ico-calender-default.svg';\n\nimport styled from 'styled-components';\n\nconst CalendarWrapStyle = styled.div`\n\t.calender-custom-wrap {\n\t\twidth: 268px;\n\t\tmargin: 0 auto;\n\n\t\t.Calendar {\n\t\t\tpadding-top: 0;\n\t\t\twidth: 100%;\n\t\t\tbox-shadow: 0px 2px 8px rgba(0, 0, 0, 0.16);\n\t\t\tborder-radius: 20px;\n\t\t\tmin-height: auto;\n\t\t}\n\t\t.Calendar__sectionWrapper {\n\t\t\tmin-height: 19em;\n\t\t}\n\t\t.Calendar__day:hover {\n\t\t\tbackground-color: #ffffff !important;\n\t\t\tborder: 1px solid #e8490a !important;\n\t\t\tcolor: #333333;\n\t\t}\n\t\t.Calendar__day.-ltr {\n\t\t\tfont-size: 14px;\n\t\t\tcolor: #333333;\n\t\t\tmin-height: unset;\n\t\t}\n\t\t.Calendar__day.-ltr.-selected {\n\t\t\tfont-size: 14px;\n\t\t\tcolor: #ffffff;\n\t\t}\n\t\t.Calendar__day.-ltr.-selected:hover {\n\t\t\tcolor: #333333;\n\t\t}\n\t\t.Calendar__day {\n\t\t\tmargin-bottom: 2px;\n\t\t\tpadding: 0;\n\t\t\twidth: 32px;\n\t\t\theight: 32px;\n\t\t}\n\t\t.Calendar__weekDay {\n\t\t\twidth: 32px;\n\t\t}\n\t\t.Calendar__header {\n\t\t\twidth: 220px;\n\t\t\tpadding: 28px 0 25px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.Calendar__section {\n\t\t\tpadding: 0;\n\t\t}\n\t\t.Calendar__weekDays {\n\t\t\twidth: 225px;\n\t\t\tjustify-content: unset;\n\t\t\tpadding: 0;\n\t\t\tmargin: 0 auto 5px;\n\t\t}\n\t\t.Calendar__section.-hiddenNext,\n\t\t.Calendar__section.-hiddenPrevious {\n\t\t\ttransform: translateX(100%);\n\t\t}\n\t\t.Calendar__weekRow {\n\t\t\twidth: 225px;\n\t\t\tmargin: 0 auto;\n\t\t}\n\t\t.Calendar__day.-selectedBetween {\n\t\t\tbackground-color: #ffffff !important;\n\t\t\tcolor: #333333;\n\t\t}\n\t\t.Calendar__day.-ltr.-selectedStart,\n\t\t.Calendar__day.-ltr.-selectedEnd {\n\t\t\tborder-radius: 100% !important;\n\t\t\tborder-top-left-radius: none !important;\n\t\t\tborder-bottom-left-radius: none !important;\n\t\t}\n\t\t.Calendar__day.-ltr.-selectedStart:hover,\n\t\t.Calendar__day.-ltr.-selectedEnd:hover {\n\t\t\tcolor: #333333;\n\t\t}\n\n\t\t.calender-time {\n\t\t\tdisplay: flex;\n\t\t\tjustify-content: center;\n\t\t\talign-items: center;\n\t\t\tpadding: 0 0 28px;\n\t\t\t& > svg {\n\t\t\t\twidth: 16px;\n\t\t\t\theight: 16px;\n\t\t\t\tvertical-align: top;\n\t\t\t\tmargin-right: 10px;\n\t\t\t}\n\t\t\tspan {\n\t\t\t\twidth: 28px;\n\t\t\t\ttext-align: center;\n\t\t\t}\n\t\t\tul {\n\t\t\t\tmax-height: 90px;\n\t\t\t\toverflow-y: scroll;\n\t\t\t}\n\t\t}\n\n\t\t.Calendar__day.-today {\n\t\t\tposition: relative;\n\t\t}\n\t\t.Calendar__day.-today:not(.-selectedStart):not(.-selectedEnd):not(.-selectedBetween) {\n\t\t\tfont-weight: 400;\n\t\t\tcolor: #333333;\n\t\t}\n\n\t\t.Calendar__day.-today::after,\n\t\t.Calendar__day.-today.-selectedStart::after,\n\t\t.Calendar__day.-today.-selectedEnd::after,\n\t\t.Calendar__day.-today.-selectedBetween::after {\n\t\t\tdisplay: inline-block !important;\n\t\t\tcontent: '' !important;\n\t\t\tposition: absolute !important;\n\t\t\ttop: 4px !important;\n\t\t\tleft: unset !important;\n\t\t\tright: 2px !important;\n\t\t\twidth: 4px !important;\n\t\t\theight: 4px !important;\n\t\t\tborder-radius: 100% !important;\n\t\t\tbackground-color: #0091ea !important;\n\t\t\topacity: unset !important;\n\t\t}\n\n\t\t.Calendar__monthYearContainer > .Calendar__monthYear {\n\t\t\tdisplay: flex;\n\t\t\tflex-direction: row-reverse;\n\t\t\tjustify-content: center;\n\t\t\twidth: 100%;\n\t\t}\n\t\tbutton.Calendar__yearText:hover {\n\t\t\ttransform: translateX(-0.2em) scale(0.95) !important;\n\t\t}\n\t\tbutton.Calendar__monthText:hover {\n\t\t\ttransform: translateX(0.2em) scale(0.95) !important;\n\t\t}\n\t\t.Calendar__monthYear .Calendar__monthText.-hidden,\n\t\t.Calendar__yearText.-hidden {\n\t\t\tdisplay: none !important;\n\t\t}\n\t\t.Calendar__monthText.-activeBackground,\n\t\t.Calendar__yearText.-activeBackground {\n\t\t\ttransform: unset !important;\n\t\t}\n\t\t.Calendar__yearText::after {\n\t\t\tdisplay: inline-block;\n\t\t\tcontent: '년';\n\t\t\tcolor: #333333;\n\t\t}\n\t\t.Calendar__monthText,\n\t\t.Calendar__yearText {\n\t\t\tcolor: #333333;\n\t\t}\n\t\t.Calendar__monthArrow {\n\t\t\tbackground-image: url(${Arrow});\n\t\t\twidth: 28px;\n\t\t\theight: 28px;\n\t\t}\n\t\t.Calendar__monthArrowWrapper.-left {\n\t\t\ttransform: rotate(0);\n\t\t}\n\t\t.Calendar__monthArrowWrapper.-right {\n\t\t\ttransform: rotate(-180deg);\n\t\t}\n\t}\n`;\n\nconst myCustomLocale = {\n\t// months list by order\n\tmonths: [\n\t\t'1월',\n\t\t'2월',\n\t\t'3월',\n\t\t'4월',\n\t\t'5월',\n\t\t'6월',\n\t\t'7월',\n\t\t'8월',\n\t\t'9월',\n\t\t'10월',\n\t\t'11월',\n\t\t'12월',\n\t],\n\n\t// week days by order\n\tweekDays: [\n\t\t{\n\t\t\tname: '일요일', // used for accessibility\n\t\t\tshort: '일', // displayed at the top of days' rows\n\t\t\tisWeekend: true, // is it a formal weekend or not?\n\t\t},\n\t\t{\n\t\t\tname: '월요일',\n\t\t\tshort: '월',\n\t\t},\n\t\t{\n\t\t\tname: '화요일',\n\t\t\tshort: '화',\n\t\t},\n\t\t{\n\t\t\tname: '수요일',\n\t\t\tshort: '수',\n\t\t},\n\t\t{\n\t\t\tname: '목요일',\n\t\t\tshort: '목',\n\t\t},\n\t\t{\n\t\t\tname: '금요일',\n\t\t\tshort: '금',\n\t\t},\n\t\t{\n\t\t\tname: '토요일',\n\t\t\tshort: '토',\n\t\t\tisWeekend: true,\n\t\t},\n\t],\n\n\t// just play around with this number between 0 and 6\n\tweekStartingIndex: 0,\n\n\t// return a { year: number, month: number, day: number } object\n\tgetToday(gregorainTodayObject) {\n\t\treturn gregorainTodayObject;\n\t},\n\n\t// return a native JavaScript date here\n\ttoNativeDate(date) {\n\t\treturn new Date(date.year, date.month - 1, date.day);\n\t},\n\n\t// return a number for date's month length\n\tgetMonthLength(date) {\n\t\treturn new Date(date.year, date.month, 0).getDate();\n\t},\n\n\t// return a transformed digit to your locale\n\ttransformDigit(digit) {\n\t\treturn digit;\n\t},\n\n\t// texts in the date picker\n\tnextMonth: 'Next Month',\n\tpreviousMonth: 'Previous Month',\n\topenMonthSelector: 'Open Month Selector',\n\topenYearSelector: 'Open Year Selector',\n\tcloseMonthSelector: 'Close Month Selector',\n\tcloseYearSelector: 'Close Year Selector',\n\tdefaultPlaceholder: 'Select...',\n\n\t// for input range value\n\tfrom: 'from',\n\tto: 'to',\n\n\t// used for input value when multi dates are selected\n\tdigitSeparator: ',',\n\n\t// if your provide -2 for example, year will be 2 digited\n\tyearLetterSkip: 0,\n\n\t// is your language rtl or ltr?\n\tisRtl: false,\n};\n\nlet hour = [\n\t'0',\n\t'1',\n\t'2',\n\t'3',\n\t'4',\n\t'5',\n\t'6',\n\t'7',\n\t'8',\n\t'9',\n\t'10',\n\t'11',\n\t'12',\n\t'13',\n\t'14',\n\t'15',\n\t'16',\n\t'17',\n\t'18',\n\t'19',\n\t'20',\n\t'21',\n\t'22',\n\t'23',\n];\n\n// 시간 - 시간 간격에 따라 값이 바뀜\nlet minute = [\n\t'5',\n\t'10',\n\t'15',\n\t'20',\n\t'25',\n\t'30',\n\t'35',\n\t'40',\n\t'45',\n\t'50',\n\t'55',\n\t'00',\n];\n\ntype datePickerType = {\n\tdata: any;\n};\n\nconst CustomDatePicker = memo(({ data }: datePickerType) => {\n\tconst [selectedDay, setSelectedDay] = useState();\n\tconst [currentTime, setCurrentTime] = useState('0');\n\tconst [currentMinute, setCurrentMinute] = useState('00');\n\n\t// 시작일자\n\tconst { year: startYear, month: startMonth, day: startDay } = data.date.from;\n\tlet minimumDate = {\n\t\tyear: startYear,\n\t\tmonth: startMonth,\n\t\tday: startDay,\n\t};\n\n\t//종료일자\n\tconst { year: endYear, month: endMonth, day: endDay } = data.date.to;\n\tlet maximumDate = {\n\t\tyear: endYear,\n\t\tmonth: endMonth,\n\t\tday: endDay,\n\t};\n\n\t// 시간 간격은 옵션임\n\tif (data.time) {\n\t\t// Hour\n\t\tlet newHour = [];\n\t\tlet startHour = data.time.from.hour; // hour start\n\t\tlet endHour = data.time.to.hour; // hour end\n\n\t\t// start, end hour에 맞춰서 새로운 배열을 만듬\n\t\tfor (let i = startHour; i <= endHour; i++) {\n\t\t\t//('0' + (today.getMonth() + 1)).slice(-2);\n\t\t\tlet addZeroToTime = ('0' + i).slice(-2);\n\t\t\tnewHour.push(addZeroToTime);\n\t\t}\n\n\t\t// 새로운 시간 범위로 변경\n\n\t\thour = newHour;\n\n\t\t// Minute\n\t\tlet newMinute = [];\n\t\t//let startMinute = Number(data.time.from.minute); // start\n\t\t//let endMinute = Number(data.time.to.minute); // end\n\t\t//let minuteInterval = Number(data.time.interval); // 시간 단위\n\n\t\t// 새로운 interval 에 맞는 minute 배열을 만듬\n\t\t//for (let j = startMinute; j <= endMinute; j += minuteInterval) {\n\t\t// newMinute.push(j);\n\t\t//}\n\n\t\t// 0분 에서 60까지만 루프로 변경\n\t\tlet startMinute = 0;\n\t\tlet endMinute = 60;\n\t\tlet minuteInterval = Number(data.time.interval);\n\n\t\tfor (let j = startMinute; j < endMinute; j += minuteInterval) {\n\t\t\tlet addZeroToMin = ('0' + j).slice(-2);\n\t\t\tnewMinute.push(addZeroToMin);\n\t\t}\n\n\t\t// 새로운 분 범위로 변경\n\t\tminute = newMinute;\n\t}\n\n\tconst renderFooterView = useCallback(() => {\n\t\tif (data.time) {\n\t\t\treturn (\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t:\n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t);\n\t\t} else {\n\t\t\treturn <>;\n\t\t}\n\t}, [currentTime, currentMinute]);\n\n\tconst onChangeCalendar = (e) => {\n\t\tsetSelectedDay(e);\n\t};\n\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n});\n\nexport default CustomDatePicker;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\n// components\nimport ConfirmButtons from '../common/ConfirmButtons';\nimport CustomDatePicker from './Calendar';\nimport BotLayout from 'components/Layouts/BotLayout';\n\nconst ItemCalendarStyle = styled.div`\n\tpadding: 9px 0;\n\ttext-align: center;\n`;\n\nconst ItemCalendar = ({ data, logo }) => {\n\tconst [useTime, setUseTime] = useState(false);\n\tconst [openDatePicker, setOpenDatePicker] = useState(false);\n\tconst [startTime, setStartTime] = useState('00:00');\n\tconst [endTime, setEndTime] = useState('00:00');\n\n\tconst hadleUseTime = (e) => {\n\t\tsetUseTime(e.target.checked);\n\t};\n\n\tconst handleDatePicker = (e) => {\n\t\tsetOpenDatePicker(!openDatePicker);\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t\n\n\t\t\t\t{/* 확인, 취소 */}\n\t\t\t\t
    \n\t\t\t\t\t\n\t\t\t\t
    \n\t\t\t
    \n\t\t
    \n\t);\n};\n\nexport default ItemCalendar;\n","import React, { memo, useState, useEffect, useCallback } from 'react';\nimport styled from 'styled-components';\n\nexport interface SvgButtonProps {\n\thoverValue: number;\n\tactiveValue: number;\n\thalf?: boolean;\n\torder: number;\n\tchildren: React.ReactNode | string;\n\t// color?: string;\n}\n\nconst SvgButton = memo((props: SvgButtonProps) => {\n\tconst { order, hoverValue, activeValue, children, half } = props;\n\tconst [starState, setStarState] = useState('');\n\n\t// useEffect(() => {\n\t// let state = '';\n\t// if (order * 2 + 2 === hoverValue) {\n\t// state = 'full';\n\t// } else if (order * 2 + 1 === hoverValue) {\n\t// state = 'half';\n\t// } else {\n\t// if (order * 2 + 2 < hoverValue) {\n\t// state = 'full';\n\t// } else if (hoverValue === 0) {\n\t// state = '';\n\t// }\n\t// }\n\t// setStarState(state);\n\t// }, [hoverValue]);\n\tuseEffect(() => {\n\t\tlet state = '';\n\t\tif (order * 2 + 2 === hoverValue) {\n\t\t\tstate = 'full';\n\t\t} else if (order * 2 + 1 === hoverValue) {\n\t\t\tstate = 'half';\n\t\t} else if (order * 2 + 2 < hoverValue) {\n\t\t\tstate = 'full';\n\t\t} else if (hoverValue === 0) {\n\t\t\tstate = '';\n\t\t}\n\t\tsetStarState(state);\n\t}, [hoverValue]);\n\n\tuseEffect(() => {\n\t\tlet state = '';\n\t\tif (activeValue !== 0 && hoverValue === 0) {\n\t\t\tif (order * 2 + 2 === activeValue) {\n\t\t\t\tstate = 'full';\n\t\t\t} else if (order * 2 + 1 === activeValue) {\n\t\t\t\tstate = 'half';\n\t\t\t} else {\n\t\t\t\tif (order * 2 + 2 < activeValue) {\n\t\t\t\t\tstate = 'full';\n\t\t\t\t}\n\t\t\t}\n\t\t\tsetStarState(state);\n\t\t}\n\t}, [activeValue, hoverValue]);\n\t// console.log('order>>>', order);\n\treturn (\n\t\t\n\t\t\t
    \n\t\t\t
    \n\t\t\t
    {children?.[0] && children[0]}
    \n\t\t\t
    {children?.[1] && children[1]}
    \n\t\t\n\t);\n});\n\nexport default SvgButton;\n\nconst SvgButtonWrap = styled.div`\n\tposition: relative;\n\twidth: 28px;\n\theight: 28px;\n\tcursor: pointer;\n\tsvg {\n\t\tvertical-align: top;\n\t}\n\t.icon-wrap {\n\t\tposition: absolute;\n\t\ttop: 0;\n\t\tleft: 0;\n\t}\n\n\t&.scale {\n\t\t.icon-line,\n\t\t.icon-bg,\n\t\t.left,\n\t\t.right {\n\t\t\ttransform: scale(1.2);\n\t\t}\n\t}\n\n\t.icon-line {\n\t\twidth: 28px;\n\t\theight: 28px;\n\t\tz-index: 10;\n\t\t/* display: ${({ state }) =>\n\t\t\tstate === 'full' ? 'none' : 'inline-block'}; */\n\t\tsvg {\n\t\t\tvertical-align: top;\n\t\t\twidth: 28px;\n\t\t\theight: 28px;\n\t\t}\n\t}\n\n\t.icon-bg {\n\t\tdisplay: ${({ state }) =>\n\t\t\tstate === 'full' || state === 'half' ? 'inline-block' : 'none'};\n\t\tz-index: 20;\n\t\twidth: 14px;\n\t\theight: 28px;\n\t\toverflow: ${({ state }) => (state === 'full' ? 'unset' : 'hidden')};\n\t\tsvg {\n\t\t\tvertical-align: top;\n\t\t\twidth: 28px;\n\t\t\theight: 28px;\n\t\t}\n\t}\n\n\t.left {\n\t\twidth: 14px;\n\t\theight: 28px;\n\t\tz-index: 30;\n\t}\n\t.right {\n\t\twidth: 14px;\n\t\theight: 28px;\n\t\tz-index: 30;\n\t\tleft: 14px;\n\t}\n`;\n","var _path;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgStarFull(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 30,\n height: 28,\n viewBox: \"0 0 30 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M14.6918 23.2166L5.61303 28L7.3469 17.8717L0 10.7024L10.1534 9.21556L14.6899 0.00793428V0L14.6918 0.00396765L14.6938 0V0.00793633L19.2291 9.21556L29.3799 10.7024L22.0349 17.8717L23.7683 28L14.6918 23.2166Z\",\n fill: \"#F9A825\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgStarFull);\nexport default __webpack_public_path__ + \"static/media/star_full.9e762652.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSmile1(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 27C21.1797 27 27 21.1797 27 14C27 6.8203 21.1797 1 14 1C6.8203 1 1 6.8203 1 14C1 21.1797 6.8203 27 14 27Z\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M19.2 19.2001C19.2 19.2001 17.25 16.6001 14 16.6001C10.75 16.6001 8.80005 19.2001 8.80005 19.2001\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.1001 11.1001H10.1131\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.8999 11.1001H17.9129\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmile1);\nexport default __webpack_public_path__ + \"static/media/smile_1.49a29e62.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSmile2(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 27C21.1797 27 27 21.1797 27 14C27 6.8203 21.1797 1 14 1C6.8203 1 1 6.8203 1 14C1 21.1797 6.8203 27 14 27Z\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.9001 19.1999C17.9001 19.1999 16.4376 17.8999 14.0001 17.8999C11.5626 17.8999 10.1001 19.1999 10.1001 19.1999\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.1001 11.1001H10.1131\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.8999 11.1001H17.9129\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmile2);\nexport default __webpack_public_path__ + \"static/media/smile_2.21eef6a1.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _line, _path2, _path3;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSmile3(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 27C21.1797 27 27 21.1797 27 14C27 6.8203 21.1797 1 14 1C6.8203 1 1 6.8203 1 14C1 21.1797 6.8203 27 14 27Z\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _line || (_line = /*#__PURE__*/React.createElement(\"line\", {\n x1: 10.8501,\n y1: 18.4502,\n x2: 17.1501,\n y2: 18.4502,\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.8999 11.1001H17.9129\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.1001 11.1001H10.1131\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmile3);\nexport default __webpack_public_path__ + \"static/media/smile_3.28de966f.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSmile4(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 27C21.1797 27 27 21.1797 27 14C27 6.8203 21.1797 1 14 1C6.8203 1 1 6.8203 1 14C1 21.1797 6.8203 27 14 27Z\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.0999 17.9002C10.0999 17.9002 11.5624 19.2002 13.9999 19.2002C16.4374 19.2002 17.8999 17.9002 17.8999 17.9002\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.1001 11.1001H10.1131\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.8999 11.1001H17.9129\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmile4);\nexport default __webpack_public_path__ + \"static/media/smile_4.b227c5e4.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgSmile5(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 28,\n height: 28,\n viewBox: \"0 0 28 28\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M14 27C21.1797 27 27 21.1797 27 14C27 6.8203 21.1797 1 14 1C6.8203 1 1 6.8203 1 14C1 21.1797 6.8203 27 14 27Z\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.79995 16.6002C8.79995 16.6002 10.75 19.2002 14 19.2002C17.25 19.2002 19.2 16.6002 19.2 16.6002\",\n stroke: \"#BDBDBD\",\n strokeWidth: 1.5,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M10.1001 11.1001H10.1131\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M17.8999 11.1001H17.9129\",\n stroke: \"#BDBDBD\",\n strokeWidth: 3,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgSmile5);\nexport default __webpack_public_path__ + \"static/media/smile_5.03ac5c4f.svg\";\nexport { ForwardRef as ReactComponent };","import React, { memo, useState, useCallback } from 'react';\nimport SvgButton from './SvgButton';\nimport styled from 'styled-components';\n// svg\nimport { ReactComponent as Star } from 'assets/images/star.svg';\nimport { ReactComponent as StarFull } from 'assets/images/star_full.svg';\nimport { ReactComponent as Smile01 } from 'assets/images/smile_1.svg';\nimport { ReactComponent as SmileHalf01 } from 'assets/images/smile_1_half.svg';\nimport { ReactComponent as Smile02 } from 'assets/images/smile_2.svg';\nimport { ReactComponent as SmileHalf02 } from 'assets/images/smile_2_half.svg';\nimport { ReactComponent as Smile03 } from 'assets/images/smile_3.svg';\nimport { ReactComponent as SmileHalf03 } from 'assets/images/smile_3_half.svg';\nimport { ReactComponent as Smile04 } from 'assets/images/smile_4.svg';\nimport { ReactComponent as SmileHalf04 } from 'assets/images/smile_4_half.svg';\nimport { ReactComponent as Smile05 } from 'assets/images/smile_5.svg';\nimport { ReactComponent as SmileHalf05 } from 'assets/images/smile_5_half.svg';\n\nexport interface RatingButtonProps {\n\tclassName?: string;\n\ttype: 'star' | 'smile';\n\ticonColor?: string;\n\tscoreColor?: string;\n\tlabel?: string;\n\tscore?: boolean;\n\thalf?: boolean;\n\tisInvalid?: boolean;\n\tdefaultValue?: number;\n}\n\nconst RatingButton = memo((props: RatingButtonProps) => {\n\tconst {\n\t\ttype,\n\t\tlabel,\n\t\tscore,\n\t\tscoreColor,\n\t\ticonColor,\n\t\thalf,\n\t\tisInvalid,\n\t\tdefaultValue,\n\t\t...rest\n\t} = props;\n\n\tconst [hoverValue, setHoverValue] = useState(0);\n\tconst [activeValue, setActiveValue] = useState(\n\t\tdefaultValue ? defaultValue : 0\n\t);\n\n\tconst onMouseOverSvgBtn = useCallback((e) => {\n\t\tif (e.target.dataset.order) {\n\t\t\tsetHoverValue(parseInt(e.target.dataset.order));\n\t\t}\n\t}, []);\n\tconst onClickSvgBtn = useCallback((e) => {\n\t\tif (e.target.dataset.order) {\n\t\t\tsetActiveValue(parseInt(e.target.dataset.order));\n\t\t}\n\t}, []);\n\tconst onMouseLeaveSvgBtn = useCallback(() => {\n\t\tsetHoverValue(0);\n\t}, []);\n\n\tconst handleSvgType = useCallback(() => {\n\t\tif (type === 'star') {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t} else if (type === 'smile') {\n\t\t\treturn (\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}, [hoverValue, activeValue, type]);\n\n\treturn (\n\t\t\n\t\t\t{(label || score) && (\n\t\t\t\t
    \n\t\t\t\t\t{label &&

    {label}

    }\n\t\t\t\t\t{score && (\n\t\t\t\t\t\t{half ? `${activeValue}점` : `${activeValue / 2}점`}\n\t\t\t\t\t)}\n\t\t\t\t
    \n\t\t\t)}\n\t\t\t{handleSvgType()}\n\t\t\n\t);\n});\n\nexport default RatingButton;\n\nconst SvgButtonComponentWrap = styled.div`\n\t.svg-button-wrap {\n\t\tdisplay: flex;\n\t\theight: 28px;\n\t\twidth: 190px;\n\t\tjustify-content: space-between;\n\t}\n\t.svg-score-wrap {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\talign-items: center;\n\t\tmargin-bottom: 15px;\n\t\t&.validate {\n\t\t\t& > h3 {\n\t\t\t\tcolor: #ee4238;\n\t\t\t}\n\t\t}\n\t\t> h3 {\n\t\t\tfont-size: 12px;\n\t\t\tcolor: #757575;\n\t\t}\n\t\t> span {\n\t\t\tfont-size: 14px;\n\t\t\tcolor: ${(props) => (props.scoreColor ? props.scoreColor : '#333')};\n\t\t}\n\t}\n\t.icon-bg svg path {\n\t\t${(props) =>\n\t\t\tprops.type === 'star'\n\t\t\t\t? { fill: props.iconColor }\n\t\t\t\t: { stroke: props.iconColor }}\n\t}\n`;\n","import React from 'react';\n\n// components\nimport styled from 'styled-components';\nimport ConfirmButtons from 'components/Chat/Conversation/Messages/Items/common/ConfirmButtons';\nimport BotLayout from 'components/Layouts/BotLayout';\nimport RatingButton from 'components/Common/RatingButtons';\n\nconst ItemRating = ({ rating, logo }) => {\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t

    만족도를 선택해주세요.

    \n\t\t\t\t\t\t{/* smile */}\n\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t

    만족도를 선택해주세요.

    \n\t\t\t\t\t\t{/* star */}\n\t\t\t\t\t\t
      \n\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    • \n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t
    \n\t\t\t\t{/* 확인, 취소 */}\n\t\t\t\t\n\t\t\t
    \n\t\t
    \n\t);\n};\n\nexport default ItemRating;\n\nconst ItemRatingStyle = styled.div`\n\t.rating-content {\n\t\twidth: 250px;\n\t\tbackground-color: #fff;\n\t\tbox-shadow: 0px 0px 8px rgba(131, 131, 131, 0.25);\n\t\tborder-radius: 20px;\n\t\tmargin: 0 auto;\n\t\tpadding: 20px;\n\n\t\t> div + div {\n\t\t\tmargin-top: 10px;\n\t\t}\n\t}\n\n\tp {\n\t\tmargin-bottom: 7px;\n\t\tfont-size: 14px;\n\t}\n\n\t/* .rating-content {\n\t\tbackground-color: ${({ rating }) => {\n\t\treturn rating && rating.backgroundColor;\n\t}};\n\n\t\t.svg-score-wrap > h3 {\n\t\t\tcolor: ${({ rating }) => {\n\t\treturn rating && rating.titleColor;\n\t}};\n\t\t}\n\t}\n\n\t.items-rating-titlecolor {\n\t\t 텍스트 색상 \n\t\tcolor: ${({ rating }) => {\n\t\tconsole.log(rating?.titleColor);\n\t\treturn rating && rating.titleColor;\n\t}};\n\n\t 텍스트 볼드 \n\t\tfont-weight: ${({ rating }) => {\n\t\treturn rating && rating.isTitleBold && 700;\n\t}};\n\t} */\n`;\n","import React, { useEffect, memo, useRef } from 'react';\n//style\nimport ConversationStyle from './ConversationStyle';\n// component\nimport EngineMessages from './Messages';\nimport QuickReply from 'components/Chat/Conversation/Messages/Items/ItemQuickReply';\nimport Loading from 'components/Chat/Conversation/Messages/Items/ItemLoading';\nimport ItemCheckboxRadio from 'components/Chat/Conversation/Messages/Items/ItemCheckboxRadio';\nimport ItemQuestion from 'components/Chat/Conversation/Messages/Items/ItemQuestion';\nimport ItemCalendar from 'components/Chat/Conversation/Messages/Items/ItemCalendar';\nimport ItemRating from 'components/Chat/Conversation/Messages/Items/ItemRating';\n// lib\nimport { useAppSelector } from 'lib/hook';\nimport { useDispatch } from 'react-redux';\nimport ScrollToBottom from 'react-scroll-to-bottom';\nimport { use100vh } from 'react-div-100vh';\nimport useIsPage from 'lib/helpers/useIsPage';\n\nconst Conversation = memo(() => {\n\tconst { messages } = useAppSelector((state) => state.engine);\n\tconst dispatch = useDispatch();\n\tconst mobileHeight = use100vh();\n\tconst mobileInnerHeight = window.innerHeight;\n\n\tlet checkDemoPage = window.location.hostname.indexOf('demo.json2bot') > -1;\n\n\tconst messagesEndRef = useRef(null);\n\n\tconst isPage = useIsPage();\n\n\tconst isIE =\n\t\twindow.navigator.userAgent.indexOf('MSIE ') > -1 ||\n\t\twindow.navigator.userAgent.indexOf('Trident') > -1;\n\n\tuseEffect(() => {\n\t\treturn () => {\n\t\t\tdispatch({ type: 'RESET_MESSAGE' });\n\t\t};\n\t}, []);\n\n\t// IE11 scroll\n\tuseEffect(() => {\n\t\tlet timeout;\n\t\tif (isIE) {\n\t\t\ttimeout = setTimeout(() => {\n\t\t\t\tmessagesEndRef.current.scrollIntoView(false);\n\t\t\t}, 0);\n\n\t\t\treturn () => {\n\t\t\t\tclearTimeout(timeout);\n\t\t\t};\n\t\t}\n\t}, [messages]);\n\n\tlet showReply;\n\tlet Delay = null;\n\n\tlet question; // 질문하기\n\tlet checkboxradio; // 선택박스\n\tlet rating; // 만족도\n\tlet calendar; // 캘린더\n\n\tif (\n\t\tmessages &&\n\t\tmessages[messages.length - 1] &&\n\t\tmessages[messages.length - 1].message\n\t) {\n\t\t// 퀵 리플라이\n\t\tif (messages[messages.length - 1].message.quickReplies) {\n\t\t\tshowReply = (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t\t//멀티 퀵 리플라이\n\t\tif (messages && messages[messages.length - 1].message.multiQuickReplies) {\n\t\t\tshowReply = (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\t// 딜레이 - 로딩\n\t\tif (\n\t\t\tmessages[messages.length - 1].message.item &&\n\t\t\tmessages[messages.length - 1].message.item.delay\n\t\t\t// messages[messages.length - 1].message.item.type === 'delay'\n\t\t) {\n\t\t\tlet status = messages[messages.length - 1].message.item.delay.status;\n\t\t\tlet getLogo = messages[messages.length - 1].messageby.senderIcon.url;\n\n\t\t\t// check status on/off\n\t\t\tif (status) {\n\t\t\t\tDelay = ;\n\t\t\t}\n\t\t}\n\n\t\t// 선택박스\n\t\tif (messages[messages.length - 1].message.selectBox) {\n\t\t\tcheckboxradio = (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\t//질문하기\n\t\tif (messages[messages.length - 1].message.question) {\n\t\t\tquestion = (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\t//캘린더\n\t\tif (messages[messages.length - 1].message.calendar) {\n\t\t\tcalendar = (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\n\t\t// 만족도\n\t\tif (messages[messages.length - 1].message.rating) {\n\t\t\tcheckboxradio = (\n\t\t\t\t\n\t\t\t);\n\t\t}\n\t}\n\n\tif (isIE) {\n\t\treturn (\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t{/* 대화 - 답변 아이템 */}\n\t\t\t\t\t\n\t\t\t\t\t{/* 캘린더 */}\n\t\t\t\t\t{calendar}\n\t\t\t\t\t{/* 만족도 */}\n\t\t\t\t\t{rating}\n\t\t\t\t\t{/* 선택박스 */}\n\t\t\t\t\t{checkboxradio}\n\t\t\t\t\t{/* 로딩 */}\n\t\t\t\t\t{Delay}\n\n\t\t\t\t\t{/* IE에서만 사용한 스크롤 */}\n\t\t\t\t\t
    \n\t\t\t\t
    \n\n\t\t\t\t{/* 데이터 수집 답변 아이템 */}\n\t\t\t\t{showReply}\n\t\t\t\n\t\t);\n\t}\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t{/* 대화 - 답변 아이템 */}\n\t\t\t\t\t\n\t\t\t\t\t{/* 캘린더 */}\n\t\t\t\t\t{calendar}\n\t\t\t\t\t{/* 만족도 */}\n\t\t\t\t\t{rating}\n\t\t\t\t\t{/* 선택박스 */}\n\t\t\t\t\t{checkboxradio}\n\t\t\t\t\t{/* 로딩 */}\n\t\t\t\t\t{Delay}\n\t\t\t\t
    \n\t\t\t\n\t\t\t{/* 데이터 수집 답변 아이템 */}\n\t\t\t{showReply}\n\t\t\n\t);\n});\n\nexport default Conversation;\n","import { useState, useEffect, useCallback, useRef, memo } from 'react';\n// styles\nimport ChatStyles from './ChatStyles';\n// lib\nimport { connect, send, disconnect } from '@giantmachines/redux-websocket';\nimport Div100vh from 'react-div-100vh';\n// hook\nimport useEngineCookie from 'lib/helpers/useEngineCookie';\nimport { wsUrl } from 'lib/helpers/baseUrlChecker';\nimport getUserCookie from 'lib/helpers/getUserCookie';\nimport { useDispatch } from 'react-redux';\nimport { useAppSelector } from 'lib/hook';\nimport {\n\twsSendDataFormatter,\n\tbtnIsLinkType,\n} from 'components/Chat/Conversation/Messages/Items/common/helpers';\n// image\nimport { ReactComponent as HeaderLogo } from 'assets/images/icon-logo-cloudturing.svg';\nimport { ReactComponent as IconClose } from 'assets/images/icon-close.svg';\nimport { ReactComponent as IconSetting } from 'assets/images/icon-setting.svg';\nimport { ReactComponent as IconSend } from 'assets/images/icon-send.svg';\nimport { ReactComponent as FileIcon } from 'assets/images/icon-file.svg';\nimport ByCloudturing from 'assets/images/logo-by-cloudturing.png';\nimport { ReactComponent as ByLogo } from 'assets/images/logo-by-cloudturing.svg';\n// action\nimport { fetchHistory, deleteChat, postImageUpload } from 'lib/api';\n// components\nimport ChatLayout from 'components/Layouts/ChatLayout';\nimport Conversation from './Conversation';\n// helpers\nimport removeScriptTag from 'lib/helpers/removeScriptTag';\nimport useIsPage from 'lib/helpers/useIsPage';\n\ntype chatType = {\n\tchatbotId: string;\n};\n\nconst EngineChat = memo(({ chatbotId }: chatType) => {\n\tconst isCookie = useEngineCookie(chatbotId); //\n\tconst localCookie = getUserCookie(); // 쿠키체크\n\tconst dispatch = useDispatch();\n\n\tconst inputEl = useRef(null);\n\tconst inputAreaEl = useRef(null);\n\tconst closeBtnEl = useRef(null);\n\tconst logoEl = useRef(null);\n\n\tconst [userText, setUserText] = useState(''); // 사용자 입력 텍스트\n\tconst { home, isReconnect } = useAppSelector((state) => state.engine);\n\tconst [generic, setGeneric] = useState(false); //제네릭 토글\n\tconst [settingModal, setSettingModal] = useState(false);\n\tconst [imgUploadStatus, setImgUpload] = useState(false); //이미지 업로드 에러모달\n\n\tconst isPage = useIsPage(); // page 웹챗봇 체크\n\n\tconst [isFirstFocus, setIsFirstFocus] = useState(true);\n\n\t// 쿠키 체크\n\tuseEffect(() => {\n\t\tif (!isCookie) return null;\n\n\t\treturn () => {\n\t\t\tdispatch({\n\t\t\t\ttype: 'SET_TYPE',\n\t\t\t\tpayload: 'LAUNCHER',\n\t\t\t});\n\t\t};\n\t}, []);\n\n\tuseEffect(() => {\n\t\t// api통신 후에 맨 마지막에 WS 연결\n\t\tconst delayWSConnection = setTimeout(() => {\n\t\t\tif (localCookie.length > 0) {\n\t\t\t\t// 웹소켓 연결\n\t\t\t\tdispatch(\n\t\t\t\t\tconnect(`${wsUrl}/${chatbotId}?x-user-session=${localCookie[0][1]}`)\n\t\t\t\t);\n\t\t\t}\n\t\t}, 100);\n\n\t\treturn () => {\n\t\t\tdispatch(disconnect());\n\t\t\tclearInterval(delayWSConnection);\n\t\t};\n\t}, [chatbotId]);\n\n\t// 재접속\n\tuseEffect(() => {\n\t\t// api통신 후에 맨 마지막에 WS 연결\n\t\tif (isReconnect) {\n\t\t\tdispatch(disconnect());\n\n\t\t\tconst delayWSConnection = setTimeout(() => {\n\t\t\t\tif (localCookie.length > 0) {\n\t\t\t\t\t// 웹소켓 연결\n\t\t\t\t\tdispatch(\n\t\t\t\t\t\tconnect(`${wsUrl}/${chatbotId}?x-user-session=${localCookie[0][1]}`)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}, 100);\n\n\t\t\treturn () => {\n\t\t\t\tclearInterval(delayWSConnection);\n\t\t\t};\n\t\t}\n\t}, [isReconnect]);\n\n\tuseEffect(() => {\n\t\tdispatch(fetchHistory(chatbotId));\n\t}, []);\n\n\t// 모바일에서 키보드 바로 활성화 하기 위해 추가\n\tuseEffect(() => {\n\t\tif (inputAreaEl.current) {\n\t\t\tinputAreaEl.current.focus();\n\t\t}\n\t}, []);\n\n\t// 파일 업로드\n\tconst onChangeFileUpload = (e) => {\n\t\te.preventDefault();\n\n\t\tlet formData = new FormData();\n\t\tconst file = inputEl.current.files[0];\n\n\t\tif (!file) return;\n\n\t\t// 이미지만 체커\n\t\tlet allowedExt = ['jpg', 'jpeg', 'png', 'gif', ''];\n\t\tlet fileExt = file.name.split('.').pop();\n\t\tlet isImage = allowedExt.indexOf(fileExt);\n\t\tconst FILE_SIZE = 0.5 * 1024 * 1024;\n\n\t\t// 이미지 파일이 아니면\n\t\tif (isImage < 0) {\n\t\t\t// 초기화\n\t\t\tinputEl.current.value = '';\n\n\t\t\t// 모달 에러 띄우기 - 파일 형식이 맞지 않습니다.\n\t\t\tsetImgUpload('파일 형식이 맞지 않습니다');\n\n\t\t\treturn;\n\t\t}\n\n\t\t// 이미지 사이즈\n\t\t// let fileSize = Math.round(file.size / 1024); // KB로 변환\n\t\tlet uploadFileSize = file.size;\n\n\t\t// '500KB' 보다 크면 안됨\n\t\tif (uploadFileSize > FILE_SIZE) {\n\t\t\t// 1KB = 1024 bytes\n\t\t\t// 1MB = 1024 KB or 1,048,576 bytes\n\t\t\t// 1GB = 1024 MG or 1,073,741,824 bytes\n\n\t\t\t// 파일 초기화\n\t\t\tinputEl.current.value = '';\n\n\t\t\t// 모달 에러 띄우기 - 파일 형식이 맞지 않습니다.\n\t\t\tsetImgUpload('파일 형식이 맞지 않습니다');\n\n\t\t\treturn;\n\t\t}\n\n\t\tformData.append('file', file);\n\n\t\t// 이미지 화면에 표시\n\t\tconst sendUpload = async () => {\n\t\t\ttry {\n\t\t\t\tconst objWS = await dispatch(postImageUpload(formData));\n\n\t\t\t\t// 웹소켓으로도 전송해야함\n\t\t\t\t// websocket 으로 send\n\t\t\t\tdispatch(send(objWS));\n\n\t\t\t\t//file 초기화\n\t\t\t\tinputEl.current.value = '';\n\t\t\t} catch (error) {\n\t\t\t\t// 모달 에러 띄우기 - 파일업로드 실패했습니다\n\t\t\t\tsetImgUpload('파일업로드 실패했습니다');\n\t\t\t}\n\t\t};\n\n\t\tsendUpload();\n\t};\n\n\tconst onChangeUserText = (e) => {\n\t\t// let str = e.target.value;\n\n\t\t// //한글 체크\n\t\t// let check = /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/;\n\n\t\t// let isKor = check.test(str);\n\n\t\t// //안드로이드 체크\n\t\t// var isAndroid = /(android)/i.test(navigator.userAgent);\n\n\t\t// //안드로이드에서 전송후 텍스트가 사라지지 않고 유지되는 현상을 막아줌\n\t\t// if (!e.nativeEvent.isComposing && isKor && isAndroid) {\n\t\t// \treturn;\n\t\t// }\n\t\tsetUserText(e.target.value);\n\t};\n\n\t// onkeypress 엔터키 감지\n\tconst onKeypressDetectEnter = (e) => {\n\t\te.stopPropagation();\n\n\t\tif (e.key === 'Enter') {\n\t\t\tonClickSendUserText();\n\t\t}\n\t};\n\n\t// 입력창 텍스트 보내기\n\tconst onClickSendUserText = useCallback(() => {\n\t\tif (userText === '') return;\n\t\t// 텍스트형 양식\n\t\tlet obj = wsSendDataFormatter('text', userText);\n\n\t\t// 리덕스에 사용자 텍스트 추가\n\t\tdispatch({\n\t\t\ttype: 'ADD_MESSAGE',\n\t\t\tpayload: obj,\n\t\t});\n\n\t\t// 웹소켓 통신\n\t\tdispatch(send(obj));\n\n\t\t// input 초기화\n\t\tsetUserText('');\n\t}, [userText]);\n\n\t// 창 닫기 이벤트\n\tconst onClickCloseChat = useCallback(() => {\n\t\t//@ts-ignore\n\t\tlet destWindow = window.dyc.destWindow;\n\t\tif (destWindow) {\n\t\t\tdispatch({\n\t\t\t\ttype: 'SET_TYPE',\n\t\t\t\tpayload: destWindow,\n\t\t\t});\n\n\t\t\tremoveScriptTag();\n\t\t} else {\n\t\t\tdispatch({\n\t\t\t\ttype: 'SET_TYPE',\n\t\t\t\tpayload: 'LAUNCHER',\n\t\t\t});\n\t\t}\n\t}, []);\n\n\t// 제네릭 메뉴\n\tconst onClickGenericIcon = useCallback(() => {\n\t\tsetGeneric((prev) => !prev);\n\t}, []);\n\n\t// 제네릭 메시지 전송 이벤트\n\tconst onClickGenericItem = useCallback(\n\t\t(btn) => () => {\n\t\t\t//타입 텍스트\n\t\t\tif (btn.type === 'message') {\n\t\t\t\tlet obj = wsSendDataFormatter('text', btn.messageText);\n\n\t\t\t\tdispatch({\n\t\t\t\t\ttype: 'ADD_MESSAGE',\n\t\t\t\t\tpayload: obj,\n\t\t\t\t});\n\n\t\t\t\tdispatch(send(obj));\n\t\t\t}\n\n\t\t\t//타입 이벤트\n\t\t\tif (btn.type === 'event') {\n\t\t\t\tlet obj = wsSendDataFormatter('event', btn);\n\n\t\t\t\tdispatch({\n\t\t\t\t\ttype: 'ADD_MESSAGE',\n\t\t\t\t\tpayload: obj,\n\t\t\t\t});\n\n\t\t\t\tdispatch(send(obj));\n\t\t\t}\n\n\t\t\t//타입 전화\n\t\t\tif (btn.type === 'phone') {\n\t\t\t\twindow.open(`tel:${btn.phoneNumber}`, '_self');\n\t\t\t}\n\n\t\t\t//타입 링크\n\t\t\tif (btn.type === 'link') {\n\t\t\t\tbtnIsLinkType(btn);\n\t\t\t}\n\n\t\t\t// 제네릭창 닫기\n\t\t\tsetGeneric(false);\n\t\t},\n\t\t[]\n\t);\n\n\t// 대화지우기 모달\n\tconst onClickSettingModal = useCallback(() => {\n\t\tsetSettingModal((prev) => !prev);\n\t}, []);\n\n\t// 대화지우기 메시지 지우기 이벤트\n\tconst onClickSettingDeleteMessage = useCallback(() => {\n\t\t// DELETE 요청\n\t\tdispatch(deleteChat(chatbotId));\n\n\t\tsetSettingModal(false);\n\t}, []);\n\n\tconst onClickModalImageError = useCallback(() => {\n\t\tsetImgUpload(false);\n\t}, []);\n\n\t// * tabindex enter\n\tconst tabEnterSetting = (e) => {\n\t\tif (e.key === 'Enter') onClickSettingModal();\n\t};\n\n\tconst tabEnterDeleteMsg = (e) => {\n\t\tif (e.key === 'Enter') onClickSettingDeleteMessage();\n\t};\n\n\tconst tabEnterClose = (e) => {\n\t\tif (e.key === 'Enter') onClickCloseChat();\n\n\t\tif (e.key === 'Tab') {\n\t\t\te.preventDefault();\n\t\t\tif (isFirstFocus) {\n\t\t\t\tinputAreaEl.current.focus();\n\t\t\t\tsetIsFirstFocus(false);\n\t\t\t} else {\n\t\t\t\tcloseBtnEl.current.blur();\n\t\t\t\tsetIsFirstFocus(true);\n\t\t\t\tlogoEl.current.focus();\n\t\t\t}\n\t\t}\n\t};\n\n\tconst tabEnterSend = (e) => {\n\t\tif (e.key === 'Enter') {\n\t\t\tonClickSendUserText();\n\t\t}\n\n\t\tif (e.key === 'Tab') {\n\t\t\te.preventDefault();\n\t\t\tcloseBtnEl.current.focus();\n\t\t}\n\t};\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\t
    \n\t\t\t\t\t{/* 상단 */}\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{home && home.design.top.brandLogo ? (\n\t\t\t\t\t\t\t\t기업 로고\n\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t{home ? home.design.top.brandName : '클라우드튜링'}\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{/* 설정버튼 - 챗봇만들기 페이지에서는 표시 안함 */}\n\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t

    설정

    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\t\t{settingModal && (\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t대화 삭제\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t
    \n\n\t\t\t\t\t\t\t{/* 닫기 */}\n\t\t\t\t\t\t\t{/* page 웹챗봇에서 표시 안함 */}\n\t\t\t\t\t\t\t{!isPage && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t

    닫기

    \n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t
    \n\t\t\t\t\t\n\n\t\t\t\t\t{/* 하단 */}\n\t\t\t\t\t
    \n\t\t\t\t\t\t{generic &&
    }\n\t\t\t\t\t\t{/* 대화 */}\n\t\t\t\t\t\t\n\n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t{/* 제네릭 리스트 */}\n\t\t\t\t\t\t\t{home && home.genericMenu.enabled && (\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t{home.genericMenu.buttons.map((el, i) => {\n\t\t\t\t\t\t\t\t\t\t\t// 버튼 기능 체크 - 블록 링크, 전화, 메시지\n\t\t\t\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\t\t{el.label}\n\t\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t})}\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t{/* 입력란 */}\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t{home && home.genericMenu.enabled && (\n\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t{home && home.hasImageUpload && (\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\t)}\n\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t

    전송

    \n\t\t\t\t\t\t\t\t\t\t{home && home.design.bottom.textInput.sendIcon ? (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t{imgUploadStatus && (\n\t\t\t\t\t
    \n\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t

    {imgUploadStatus}.

    \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
    \n\t\t\t\t\t
    \n\t\t\t\t)}\n\t\t\t\n\n\t\t\t
    \n\t\t\t\t\n\t\t\t\t\tlogo\n\t\t\t\t\n\t\t\t
    \n\t\t\n\t);\n});\n\nexport default EngineChat;\n","export default \"data:image/png;base64,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\"","import { useEffect, useCallback, memo, useState } from 'react';\n// style\nimport EngineStyles from './EngineStyles';\n// components\nimport EngineLauncher from 'components/Launcher';\nimport EngineEntry from 'components/Entry';\nimport EngineChat from 'components/Chat';\n// action\nimport { fetchHome, fetchLauncher, api } from 'lib/api';\n// hook\nimport { useDispatch } from 'react-redux';\nimport { useAppSelector } from 'lib/hook';\nimport useEngineCookie from 'lib/helpers/useEngineCookie';\n// lib\nimport useIsPage from 'lib/helpers/useIsPage';\n\n// get chatbotid\nlet chatbotId: string = window.dyc ? window.dyc.chatbotUid : null;\nlet isEnglish: string = window.dyc ? window.dyc.isEnglish : null;\n\nconst Engine = memo(() => {\n\tconst dispatch = useDispatch();\n\tconst { home, isLoaded, launcher, type } = useAppSelector((state) => {\n\t\treturn state.engine;\n\t});\n\n\tconst isCookie = useEngineCookie(chatbotId);\n\n\tconst isPage = useIsPage(); // page 웹챗봇 flag\n\n\t// 쿠키 체크\n\tuseEffect(() => {\n\t\tif (!isCookie) return null;\n\t}, [isCookie]);\n\n\t// 스타일 가져오기\n\tuseEffect(() => {\n\t\tdispatch(fetchLauncher(chatbotId));\n\t\tdispatch(fetchHome(chatbotId));\n\n\t\t// 로딩시 둥둥이 깜빡거림, 안보이게끔 delay\n\t\tconst delayLauncher = setTimeout(() => {\n\t\t\tdispatch({ type: 'IS_LOADED' });\n\t\t}, 500);\n\n\t\treturn () => clearTimeout(delayLauncher);\n\t}, []);\n\n\t// 스크립트액션\n\tconst actionMessageClick = (event) => {\n\t\t// 대화창 열림\n\t\tdispatch({\n\t\t\ttype: 'SET_TYPE',\n\t\t\tpayload: 'CHAT',\n\t\t});\n\n\t\t// intent 보내기\n\t\tlet urls = {\n\t\t\tpath: window.location.pathname,\n\t\t\thost: window.location.hostname,\n\t\t};\n\n\t\tlet obj = Object.assign(urls, event);\n\n\t\tconst sendIntent = async () => {\n\t\t\ttry {\n\t\t\t\tlet res = await api.put(`chatbots/${chatbotId}/intent`, obj);\n\t\t\t\treturn res.data;\n\t\t\t} catch (err) {\n\t\t\t\tconsole.log(err);\n\t\t\t}\n\t\t};\n\n\t\t// DOM이 로딩 후 실행되게끔\n\t\tconst delay = setTimeout(() => {\n\t\t\tsendIntent();\n\t\t\tclearTimeout(delay);\n\t\t}, 1000);\n\t};\n\n\t// 메시지 팝업 띄우기\n\tconst actionMessagePopup = (style, text, event) => {\n\t\t// 스타일 , 텍스트 입력 받아서 컴포넌트에 보여줌\n\n\t\t// add onClick event\n\t\tlet customClickEvent = () => {\n\t\t\t//채팅창 실행\n\t\t\tactionMessageClick(event);\n\t\t};\n\n\t\t// 메시지팝업 표시 - store 업데이트\n\t\tdispatch({\n\t\t\ttype: 'CHANGE_POPUP',\n\t\t\tpayload: {\n\t\t\t\ttext,\n\t\t\t\tstyle,\n\t\t\t\tonClickPopup: customClickEvent,\n\t\t\t},\n\t\t});\n\n\t\treturn;\n\t};\n\n\tuseEffect(() => {\n\t\t// 글로벌에 등록\n\t\tif (typeof window !== 'undefined') {\n\t\t\t// window type 에러 때문에 추가\n\t\t\tlet myWindow = window as any;\n\n\t\t\t// dyc 객체가 있을때만 액션 추가\n\t\t\tif (myWindow.dyc) {\n\t\t\t\tmyWindow.dyc.actionClick = actionMessageClick;\n\t\t\t\tmyWindow.dyc.actionPopup = actionMessagePopup;\n\n\t\t\t\t// 임시 테스트용\n\t\t\t\t// myWindow.showChatbot = () => {\n\t\t\t\t// \tdispatch({\n\t\t\t\t// \t\ttype: 'HIDE',\n\t\t\t\t// \t\tpayload: false,\n\t\t\t\t// \t});\n\t\t\t\t// };\n\t\t\t}\n\t\t}\n\t}, []);\n\n\t// 진입화면으로 바로가기\n\tuseEffect(() => {\n\t\t//@ts-ignore\n\t\tlet destWindow = window.dyc.destWindow;\n\n\t\tif (destWindow) {\n\t\t\tdispatch({\n\t\t\t\ttype: 'SET_TYPE',\n\t\t\t\tpayload: destWindow,\n\t\t\t});\n\t\t}\n\t}, []);\n\n\t// page 웹챗봇 바로가기\n\tuseEffect(() => {\n\t\tif (isPage) {\n\t\t\tdispatch({\n\t\t\t\ttype: 'SET_TYPE',\n\t\t\t\tpayload: 'CHAT',\n\t\t\t});\n\t\t}\n\t}, [isPage]);\n\n\tlet activeChild = useCallback(() => {\n\t\tswitch (type) {\n\t\t\tcase 'LAUNCHER':\n\t\t\t\treturn ;\n\t\t\tcase 'ENTRY':\n\t\t\t\treturn ;\n\t\t\tcase 'CHAT':\n\t\t\t\treturn ;\n\t\t\tdefault:\n\t\t\t\treturn ;\n\t\t}\n\t}, [type]);\n\n\treturn (\n\t\t\n\t\t\t{isLoaded && activeChild()}\n\t\t\n\t);\n});\n\nexport default Engine;\n","// style\nimport GlobalStyle from 'styles/globalStyle';\n// component\nimport Engine from 'components/Engine';\n\nfunction App() {\n\treturn (\n\t\t
    \n\t\t\t\n\n\t\t\t\n\t\t
    \n\t);\n}\n\nexport default App;\n","import produce, { enableES5 } from 'immer';\n\nimport {\n\tWEBSOCKET_BROKEN,\n\tWEBSOCKET_CLOSED,\n\tWEBSOCKET_CONNECT,\n\tWEBSOCKET_DISCONNECT,\n\tWEBSOCKET_MESSAGE,\n\tWEBSOCKET_OPEN,\n\tWEBSOCKET_SEND,\n\tWEBSOCKET_ERROR,\n} from '@giantmachines/redux-websocket';\n\nimport {\n\tengineHomeType,\n\tengineChannelType,\n\tlauncherType,\n} from 'lib/types/engine';\n\nenableES5();\n\nexport interface engineType {\n\thome: engineHomeType | null;\n\tmessages: any | null;\n\tisLoaded: boolean;\n\tlauncher: launcherType | null;\n\ttype: 'LAUNCHER' | 'ENTRY' | 'CHAT';\n\tisPopup: null | { text: string; style: any; onClickPopup: () => void };\n\tchannel: engineChannelType[] | null;\n\tisReconnect: boolean;\n\n\t// hide: boolean;\n}\n\nconst initialState: engineType = {\n\thome: null,\n\tmessages: [],\n\tisLoaded: false,\n\tlauncher: null,\n\ttype: 'LAUNCHER',\n\tisPopup: null,\n\tchannel: null,\n\tisReconnect: false,\n\n\t// hide: false,\n};\n\nconst WS_PREFIX = 'REDUX_WEBSOCKET';\n\nexport const REDUX_WEBSOCKET_BROKEN = `${WS_PREFIX}::${WEBSOCKET_BROKEN}`;\nexport const REDUX_WEBSOCKET_OPEN = `${WS_PREFIX}::${WEBSOCKET_OPEN}`;\nexport const REDUX_WEBSOCKET_CLOSED = `${WS_PREFIX}::${WEBSOCKET_CLOSED}`;\nexport const REDUX_WEBSOCKET_MESSAGE = `${WS_PREFIX}::${WEBSOCKET_MESSAGE}`;\nexport const REDUX_WEBSOCKET_CONNECT = `${WS_PREFIX}::${WEBSOCKET_CONNECT}`;\nexport const REDUX_WEBSOCKET_DISCONNECT = `${WS_PREFIX}::${WEBSOCKET_DISCONNECT}`;\nexport const REDUX_WEBSOCKET_SEND = `${WS_PREFIX}::${WEBSOCKET_SEND}`;\nexport const REDUX_WEBSOCKET_ERROR = `${WS_PREFIX}::${WEBSOCKET_ERROR}`;\n\nconst engineReducer = (state = initialState, action) =>\n\tproduce(state, (draft) => {\n\t\tswitch (action.type) {\n\t\t\tcase REDUX_WEBSOCKET_CONNECT:\n\t\t\t\tdraft.isReconnect = false;\n\t\t\t\tbreak;\n\t\t\tcase REDUX_WEBSOCKET_MESSAGE:\n\t\t\t\tlet data = JSON.parse(action.payload.message);\n\t\t\t\tlet finalMsg = JSON.parse(action.payload.message);\n\n\t\t\t\t// ws 재연결 체크\n\t\t\t\tif (data.type === 'retry') {\n\t\t\t\t\tdraft.isReconnect = true;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\t// 삭제 체크\n\t\t\t\tif (data.message && data.message.delete) {\n\t\t\t\t\tlet msgId = data.message.delete.target.messageId;\n\n\t\t\t\t\t// 대화에서 messageId 찾아서 삭제\n\t\t\t\t\tlet newArr = draft.messages.filter((item) => {\n\t\t\t\t\t\t// 사용자는 대화는 그대로 리턴\n\t\t\t\t\t\tif (item.type) {\n\t\t\t\t\t\t\treturn item;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// 봇 - messageId 제외한 나머지 리턴\n\t\t\t\t\t\tif (item.message) {\n\t\t\t\t\t\t\treturn item.message.messageId !== msgId;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tfinalMsg = newArr;\n\t\t\t\t}\n\n\t\t\t\t// 수정 체크\n\t\t\t\tif (data.message && data.message.modify) {\n\t\t\t\t\tlet msgId = data.message.modify.target.messageId;\n\t\t\t\t\tlet newItem = data.message.modify.target.item;\n\n\t\t\t\t\t// 대화에서 messageId 찾아서 수정\n\t\t\t\t\tlet newArr = draft.messages.map((item) => {\n\t\t\t\t\t\t// 사용자는 대화는 그대로 리턴\n\t\t\t\t\t\tif (item.type) {\n\t\t\t\t\t\t\treturn item;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// 봇 - messageId 제외한 나머지 리턴\n\t\t\t\t\t\tif (item.message && item.message.messageId === msgId) {\n\t\t\t\t\t\t\t// 이전 item 가져오기\n\t\t\t\t\t\t\tlet newObj = Object.assign({}, item);\n\n\t\t\t\t\t\t\t// 새로운 item 추가\n\t\t\t\t\t\t\tnewObj.message.item = newItem;\n\n\t\t\t\t\t\t\treturn newObj;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn item;\n\t\t\t\t\t});\n\n\t\t\t\t\tfinalMsg = newArr;\n\t\t\t\t}\n\n\t\t\t\tdraft.messages.push(finalMsg);\n\n\t\t\t\tbreak;\n\n\t\t\tcase REDUX_WEBSOCKET_CLOSED:\n\t\t\t\tconsole.log('disconnected');\n\t\t\t\t// console.log('action.payload', action.payload);\n\n\t\t\t\t// TODO 이벤트 내려오는지 체크\n\t\t\t\tif (action.payload.wasClean) {\n\t\t\t\t\tconsole.log(`[close] Connection closed cleanly`);\n\t\t\t\t\t// * 메시지가 남게끔 변경\n\t\t\t\t\t// draft.messages = [];\n\t\t\t\t} else {\n\t\t\t\t\t// e.g. server process killed or network down\n\t\t\t\t\tconsole.log('[close] Connection died');\n\n\t\t\t\t\t// reconnect\n\t\t\t\t\tdraft.isReconnect = true;\n\t\t\t\t}\n\t\t\t\tbreak;\n\n\t\t\tcase REDUX_WEBSOCKET_ERROR:\n\t\t\t\tconsole.log('error');\n\t\t\t\t// * 메시지가 남게끔 변경\n\t\t\t\t// draft.messages = [];\n\n\t\t\t\tbreak;\n\n\t\t\tcase 'HISTORY':\n\t\t\t\tdraft.messages = action.payload;\n\t\t\t\tbreak;\n\t\t\tcase 'HOME':\n\t\t\t\tdraft.home = action.payload;\n\t\t\t\t// draft.isLoaded = true;\n\t\t\t\tbreak;\n\t\t\tcase 'ADD_MESSAGE':\n\t\t\t\tdraft.messages.push(action.payload);\n\t\t\t\tbreak;\n\t\t\tcase 'RESET_MESSAGE':\n\t\t\t\tdraft.messages = [];\n\t\t\t\tbreak;\n\t\t\tcase 'LAUNCHER':\n\t\t\t\tdraft.launcher = action.payload;\n\t\t\t\tbreak;\n\t\t\tcase 'SET_TYPE':\n\t\t\t\tdraft.type = action.payload;\n\t\t\t\tbreak;\n\t\t\tcase 'CHANGE_POPUP':\n\t\t\t\tdraft.isPopup = action.payload;\n\t\t\t\tbreak;\n\t\t\tcase 'CHANNEL':\n\t\t\t\tdraft.channel = action.payload;\n\t\t\t\tbreak;\n\t\t\tcase 'IS_LOADED':\n\t\t\t\tdraft.isLoaded = true;\n\t\t\t\tbreak;\n\n\t\t\t// case 'HIDE':\n\t\t\t// \tdraft.hide = action.payload;\n\t\t\t// \tbreak;\n\t\t\tdefault:\n\t\t\t\treturn state;\n\t\t}\n\t});\nexport default engineReducer;\n","import { combineReducers } from 'redux';\nimport engine from './engine';\n\nconst rootReducer = combineReducers({\n\tengine,\n});\n\nexport default rootReducer;\n","import { createStore, applyMiddleware } from 'redux';\nimport rootReducer from '../reducer';\nimport { composeWithDevTools } from 'redux-devtools-extension/developmentOnly';\n// import logger from 'redux-logger';\nimport thunk from 'redux-thunk';\nimport reduxWebsocket from '@giantmachines/redux-websocket';\n\n// Create the middleware instance.\nconst reduxWebsocketMiddleware = reduxWebsocket();\n\nlet middleware = [];\n\nif (process.env.NODE_ENV === 'development') {\n\tmiddleware = [thunk, reduxWebsocketMiddleware];\n} else {\n\tmiddleware = [thunk, reduxWebsocketMiddleware];\n}\n\nconst store = createStore(\n\trootReducer,\n\tcomposeWithDevTools(applyMiddleware(...middleware))\n);\n\n// / Infer the `RootState` and `AppDispatch` types from the store itself\nexport type RootState = ReturnType;\n// Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState}\nexport type AppDispatch = typeof store.dispatch;\n\nexport default store;\n","import 'core-js/stable';\nimport 'regenerator-runtime/runtime';\n\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport store from 'lib/store';\nimport { Provider } from 'react-redux';\n\nimport WebFont from 'webfontloader';\n\nWebFont.load({\n\tgoogle: {\n\t\tfamilies: ['Noto Sans KR'],\n\t},\n});\n\nconst Routing = (\n\t\n\t\t\n\t\n);\n\n// window onload로는 DOM이 리액트보다 먼저 처리됨\nReactDOM.render(Routing, document.getElementById('dychat-20210908'));\n"],"sourceRoot":""}