{"version":3,"file":"js/app.843314ec.js","mappings":"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","sources":["webpack://xigeistclient/./src/App.vue","webpack://xigeistclient/./src/App.vue?7ccd","webpack://xigeistclient/./src/views/MainPage.vue","webpack://xigeistclient/./src/components/LogIn.vue","webpack://xigeistclient/./src/components/LogIn.vue?b9f7","webpack://xigeistclient/./src/components/essential/headerTemplate_w.vue","webpack://xigeistclient/./src/components/essential/headerTemplate_w.vue?566b","webpack://xigeistclient/./src/views/MainPage.vue?5494","webpack://xigeistclient/./src/components/PageSection2.vue","webpack://xigeistclient/./src/components/essential/headerTemplate.vue","webpack://xigeistclient/./src/components/essential/headerTemplate.vue?67f6","webpack://xigeistclient/./src/components/PageSection2.vue?b26e","webpack://xigeistclient/./src/components/ViewerPage.vue","webpack://xigeistclient/./src/components/ThreeViewer.vue","webpack://xigeistclient/./src/script/ThreeView.js","webpack://xigeistclient/./src/script/ThreeAnim.js","webpack://xigeistclient/./src/components/ThreeViewer.vue?c5cb","webpack://xigeistclient/./src/components/ViewerPage.vue?e78f","webpack://xigeistclient/./src/components/ErrorPage.vue","webpack://xigeistclient/./src/components/ErrorPage.vue?41fd","webpack://xigeistclient/./src/components/LoginNCallback.vue","webpack://xigeistclient/./src/components/LoginNCallback.vue?cc8d","webpack://xigeistclient/./src/router/index.js","webpack://xigeistclient/./src/script/global.js","webpack://xigeistclient/./src/main.js","webpack://xigeistclient/webpack/bootstrap","webpack://xigeistclient/webpack/runtime/chunk loaded","webpack://xigeistclient/webpack/runtime/compat get default export","webpack://xigeistclient/webpack/runtime/define property getters","webpack://xigeistclient/webpack/runtime/global","webpack://xigeistclient/webpack/runtime/hasOwnProperty shorthand","webpack://xigeistclient/webpack/runtime/publicPath","webpack://xigeistclient/webpack/runtime/jsonp chunk loading","webpack://xigeistclient/webpack/startup"],"sourcesContent":["<template>\r\n  <div>\r\n    <div id=\"nav\">\r\n      <router-link to=\"/\"></router-link>\r\n    </div>\r\n    <router-view />\r\n  </div>\r\n</template>\r\n\r\n<style>\r\n@font-face {\r\n  font-family: \"Pretendard\";\r\n  src: url(\"../src/assets/fonts/Pretendard-Regular.ttf\");\r\n  font-weight: 400;\r\n}\r\n\r\nbody {\r\n  margin: 0px;\r\n}\r\n</style>\r\n","import { render } from \"./App.vue?vue&type=template&id=50bf3b5c\"\nconst script = {}\n\nimport \"./App.vue?vue&type=style&index=0&id=50bf3b5c&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","<template>\r\n  <div id=\"Home_Main\">\r\n    <div id=\"Header\" class=\"grid\" v-if=\"active\">\r\n      <div class=\"h-title\">\r\n        <!-- <img src=\"../assets/images/Logo_w.png\" @click=\"onClickRedirect()\" /> -->\r\n        <!--- 로그인 페이지 갖고오기 --->\r\n        <Header />\r\n      </div>\r\n    </div>\r\n\r\n    <div class=\"Section_Div\">\r\n      <!-- 최상단 Section START -->\r\n      <div class=\"S1\">\r\n        <video loop=\"loop\" muted=\"muted\" autoplay=\"autoplay\" playsinline>\r\n          <source src=\"../assets/medias/mainMedia.mp4\" type=\"video/mp4\" />\r\n        </video>\r\n\r\n        <div class=\"S1_Tit\">\r\n          <h2>자이가이스트와 함께<br />당신의 집을 만들어 볼까요?</h2>\r\n          <div class=\"bar\"></div>\r\n\r\n          <div class=\"S1_Routers\">\r\n            <router-link to=\"/section/type2\">\r\n              <div class=\"Room_Router\">START</div>\r\n            </router-link>\r\n          </div>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- 최상단 Section END -->\r\n    </div>\r\n    <LogIn @childEvent=\"getToken\" @childEvent2=\"LoginChild2\" v-if=\"showEditPopup\" />\r\n  </div>\r\n</template>\r\n\r\n<style scoped>\r\n@import \"../assets/css/MainPage.css\";\r\n\r\n.container {\r\n  position: absolute;\r\n  display: flex;\r\n}\r\n\r\nbutton {\r\n  width: auto;\r\n}\r\n\r\n.headerW_Container,\r\n.headerW_Container::after {\r\n  box-shadow: none;\r\n}\r\n</style>\r\n\r\n<script>\r\nimport Paginate from \"vuejs-paginate-next\";\r\nimport $ from \"jquery\";\r\nimport LogIn from \"../components/LogIn.vue\";\r\nimport Cookies from 'js-cookie';\r\nimport axios from 'axios';\r\nimport Header from '../components/essential/headerTemplate_w.vue'\r\n\r\nexport default {\r\n  metaInfo: {\r\n    title: \"Xigeist Home Configurator\",\r\n    titleTemplate: \"MainPage\",\r\n    htmlAttrs: {\r\n      lang: \"ko\",\r\n      amp: true,\r\n    },\r\n  },\r\n\r\n  name: \"component.vue\",\r\n  name: \"jQueryApp\",\r\n\r\n  components: {\r\n    paginate: Paginate,\r\n    LogIn,\r\n    Header\r\n  },\r\n  data() {\r\n    return {\r\n      scrollPosition: 0,\r\n      openType: false,\r\n      showMd: true,\r\n      showRF: false,\r\n      showEx: false,\r\n      showR: true,\r\n      showS: true,\r\n      active: true,\r\n      typeName: \"\",\r\n      showMyPage: false,\r\n      userIdx: \"\",\r\n      userName: \"\",\r\n      showEditPopup: false\r\n    };\r\n  },\r\n  async created() {\r\n    await this.getToken();\r\n  },\r\n  methods: {\r\n    scroll() {\r\n      if (window.scrollY > this.$refs.scrollTest.offsetTop) {\r\n        this.deactive = true;\r\n      } else {\r\n        this.deactive = true;\r\n      }\r\n    },\r\n\r\n    updateScroll() {\r\n      this.scrollPosition = window.scrollY;\r\n    },\r\n\r\n    Select: function (event) {\r\n      const targetId = event.currentTarget.id;\r\n      window.scrollTo(0, 940);\r\n    },\r\n\r\n    SelectH: function (event) {\r\n      const targetId = event.currentTarget.id;\r\n      window.scrollTo(0, 940);\r\n    },\r\n\r\n    Select2: function (event) {\r\n      const targetId = event.currentTarget.id;\r\n      window.scrollTo(0, 1880);\r\n    },\r\n\r\n    onClickRedirect: function () {\r\n      window.open(\"https://www.xigeist.com\", \"_blank\");\r\n    },\r\n    onClickRedirect2: function () {\r\n      window.open(\"http://xigeist.bimpeers.com/\", \"_blank\");\r\n    },\r\n\r\n    showType: function (typeName) {\r\n      this.openType = !this.openType;\r\n      this.typeName = typeName;\r\n    },\r\n\r\n    openRF: function () {\r\n      this.showRF = !this.showRF;\r\n    },\r\n    openEx: function () {\r\n      this.showEx = !this.showEx;\r\n    },\r\n    clickMyPage() {\r\n      //this.showMyPage = !this.showMyPage;\r\n      if (this.userName != '') {\r\n        this.showMyPage = !this.showMyPage;\r\n      } else {\r\n        //window.location.href = this.$TARGETURL + \"member/login\";\r\n        this.showEditPopup = true;\r\n      }\r\n\r\n    },\r\n    async getToken() {\r\n      const cookie = Cookies.get('token');\r\n      console.log(\"쿠키 : \" + cookie);\r\n      let data = {\r\n        token: cookie == undefined ? '' : cookie\r\n      }\r\n      const res = await axios.post(\"/server/token_check\", JSON.stringify(data), {\r\n        headers: { 'Content-Type': 'application/json' }\r\n      });\r\n      if (data.token == '') { //토큰 자체가 없으면 걍 로그인 안된거\r\n\r\n      }\r\n      else if (res.data._data[\"length\"] == 0) { // 토큰이 변경됐으면\r\n        alert(\"다른 계정 로그인으로 인해 로그아웃됩니다.\");\r\n        Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n        Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n        this.userIdx = '';\r\n        this.userName = '';\r\n        this.showMyPage = false; //마이페이지 닫음\r\n        window.location.reload();\r\n      }\r\n      else if (res.status == 200) {\r\n        this.userIdx = res.data._data[0][\"idx\"];\r\n        this.userName = res.data._data[0][\"NAME\"];\r\n        //this.showMyPage=true;\r\n      }\r\n    },\r\n    logout() {\r\n      alert(\"로그아웃 합니다\");\r\n      if (this.userCode == 1) {\r\n        console.log(\"카카오로그아웃\");\r\n        this.kakaoLogout();\r\n      }\r\n      Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n      Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n      this.userIdx = '';\r\n      this.userName = '';\r\n      this.showMyPage = false;\r\n      window.location.reload();\r\n    },\r\n    LoginChild2() {\r\n      this.showEditPopup = false;\r\n    },\r\n    kakaoLogout() {\r\n      window.Kakao.API.request({\r\n        url: '/v1/user/unlink',\r\n        success: function (response) {\r\n          console.log(response);\r\n          document.cookie = \"token=\" + \"\";\r\n          //alert(\"로그아웃 되었어용\");\r\n        },\r\n        fail: function (error) {\r\n          console.log(error);\r\n        },\r\n      });\r\n    },\r\n\r\n  },\r\n  mounted() {\r\n    window.scrollTo(0, 0);\r\n    document.addEventListener(\"scroll\", this.scrollEvents);\r\n    document.addEventListener(\"scroll\", this.scroll);\r\n    document.title = 'Home Self-Design System | XiGEIST'\r\n\r\n    $(function () {\r\n      // 스크롤 시 header fade-in\r\n      $(document).on(\"scroll\", function () {\r\n        if ($(window).scrollTop() > 940) {\r\n          $(\"#Header\").removeClass(\"active\");\r\n          $(\"#Header\").addClass(\"deactive\");\r\n        } else {\r\n          $(\"#Header\").removeClass(\"deactive\");\r\n          $(\"#Header \").addClass(\"active\");\r\n        }\r\n      });\r\n    });\r\n  },\r\n};\r\n</script>\r\n","<template>\r\n    <div id=\"LogIn_Wrapper\" v-if=\"isVisible\">\r\n        <div class=\"LogIn_Body\">\r\n            <button class=\"closeEditPop\" @click=\"closeEditPop\">X</button>\r\n            <div class=\"LogIn_Wrapper\">\r\n                <div>\r\n                    <h1>로그인</h1>\r\n                    <p>자이가이스트에 오신 것을 환영합니다.<br>\r\n                        로그인을 하시면 보다 나은 서비스를 만나보실 수 있습니다.</p>\r\n                </div>\r\n\r\n                <div class=\"LogIn_Form\">\r\n                    <form v-on:submit.prevent>\r\n                        <input type=\"text\" name=\"userid\" class=\"text-field\" placeholder=\"이메일 입력\" v-model=\"email\">\r\n                        <input type=\"password\" name=\"password\" class=\"text-field\" placeholder=\"비밀번호 입력\" v-model=\"password\">\r\n                        <label for=\"keepLogin\" class=\"keepLoginBtn\">\r\n                            <input type=\"checkbox\" id=\"keepLogin\" name=\"keepLogin\" class=\"checkmarkLogin\"\r\n                                @change=\"keepLogin\">\r\n                            <div>로그인 상태 유지</div>\r\n                        </label>\r\n                        <button value=\"로그인\" @click=\"postData\" class=\"submit-btn\">로그인</button>\r\n                    </form>\r\n\r\n                    <div class=\"Register_Div\">\r\n                        <a :href= \"this.$TARGETURL + 'member/joinStep1'\" class=\"register\">회원가입</a>\r\n                        <div class=\"IDPW_Div\">\r\n                            <a :href=\"this.$TARGETURL + 'member/findemail'\" class=\"findID\">아이디 찾기</a>\r\n                            <a :href=\"this.$TARGETURL + 'member/changePW1'\" class=\"findPW\">비밀번호 변경</a>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div class=\"SNS_Div\">\r\n                        <h4>SNS계정 간편 로그인</h4>\r\n                        <span class=\"KakaoBtn\" @click=\"kakaoJoin\">\r\n                            <img src=\"../assets/images/icons/button_kakao.png\" alt=\"\">\r\n                            카카오로 로그인하기\r\n                        </span>\r\n\r\n                        <div id=\"naver_id_login\" style=\"display: none;\"></div>\r\n                        <span id=\"naverLogin\">\r\n                            <img src=\"../assets/images/icons/naver.png\" alt=\"\">\r\n                            네이버로 로그인하기\r\n                        </span>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        </div>\r\n    </div>\r\n</template>\r\n\r\n<style scoped>\r\n@import url(\"../assets/css/LogIn.css\");\r\n</style>\r\n\r\n<script>\r\nimport axios from 'axios';\r\nimport CryptoJS from \"crypto-js\";\r\nimport Cookies from 'js-cookie';\r\n\r\n//자이viewer 테스트\r\n//const client_id = \"2yeVLd8BZjNmctM5lt2H\";\r\nconst client_id = \"TDQ3VSyu9CPGHbOkbGUe\";\r\n\r\nexport default {\r\n    data() {\r\n        return {\r\n            users: [],\r\n            email: \"\",\r\n            password: \"\",\r\n            image: \"\",\r\n            selectedFile: \"\",\r\n            naverLogin: null,\r\n            account_email: \"\",\r\n            name: \"\",\r\n            birth: \"\",\r\n            phone: \"\",\r\n            gender: \"\",\r\n            nickname: \"\",\r\n            updatedate: \"\",\r\n            key: \"\",\r\n            m: \"\",\r\n            EncodeData: \"\",\r\n            code: \"\",\r\n            isSocial: \"\",\r\n            address: \"\",\r\n            path: \"\",\r\n            interest: \"\",\r\n            hashPw: \"\",\r\n            isKeepLoin: false,\r\n            isVisible : true\r\n        }\r\n    },\r\n    mounted() {\r\n        this.naverLogin = new window.naver_id_login(\r\n            client_id,\r\n            this.$TARGETURL2 + \"callback\",  // 개발자센터에서 등록한 Callback URL\r\n            //\"http://localhost:8081/callback\"\r\n\r\n        );\r\n        var state = this.naverLogin.getUniqState();\r\n        //this.naverLogin.setButton(\"white\", 2, 62); // 버튼설정\r\n        this.naverLogin.setDomain(this.$TARGETURL2);\r\n        this.naverLogin.setState(state);\r\n        this.naverLogin.setPopup(); // 팝업 여부\r\n        this.naverLogin.init_naver_id_login();\r\n\r\n        $(document).on(\"click\", \"#naverLogin\", function () {\r\n            var btnNaverLogin = document.getElementById(\"naver_id_login\").firstChild;\r\n            btnNaverLogin.click();\r\n        })\r\n    },\r\n    methods: {\r\n        keepLogin() {\r\n            var aaa = document.getElementById(\"keepLogin\");\r\n            if (aaa.checked) {\r\n                //alert(\"체크\");\r\n                this.isKeepLoin = true;\r\n            }\r\n            else {\r\n                //alert(\"안체크\");\r\n                this.isKeepLoin = false;\r\n            }\r\n        },\r\n        //카카오 회원가입\r\n        kakaoJoin() {\r\n            //window.Kakao.init(\"50721e897a5869296e050475ab6dd3ea\");\r\n\r\n            window.Kakao.Auth.login({\r\n                scope: \"profile_image, account_email, profile_nickname, name, gender, age_range, birthday, birthyear, phone_number\",\r\n                success: this.getKakaoAccount,\r\n            });\r\n        },\r\n        async getKakaoAccount() {\r\n            console.log(\"1\");\r\n            window.Kakao.API.request({\r\n                url: \"/v2/user/me\",\r\n                success: async (res) => {\r\n                    const kakao_account = res.kakao_account;\r\n                    const nickname = kakao_account.profile.nickname;\r\n                    const email = kakao_account.email;\r\n                    var birth_temp = kakao_account.birthday;\r\n                    const token = window.Kakao.Auth.getAccessToken();\r\n                    let today = new Date();\r\n                    let data = {\r\n                        key: 1,\r\n                        name: kakao_account.name,\r\n                        birthdate: kakao_account.birthyear + \"-\" + birth_temp.slice(0, 2) + \"-\" + birth_temp.slice(2),\r\n                        phonenumber: (\"0\" + kakao_account.phone_number.split(\" \")[1]).replace(/-/g, ''), //국가코드, 하이픈 삭제\r\n                        email: kakao_account.email,\r\n                        gender: kakao_account.gender,\r\n                        nickname: kakao_account.profile.nickname,\r\n                        code: 1, // 카카오 가입 코드 1,\r\n                        address: \"\",\r\n                        path: \"\",\r\n                        interest: \"\",\r\n                        password: \"\",\r\n                        token: token,\r\n                        updatetime: today.getFullYear() + '-' + today.getMonth() + '-' + today.getDay(),\r\n                        hashPw: \"\",\r\n                        receive_s: \"\",\r\n                        receive_e: \"\"\r\n                    }\r\n\r\n                    //document.cookie = \"token=\" + token;\r\n                    let expireDate = new Date();\r\n                    if(this.isKeepLoin){\r\n                        expireDate.setTime(expireDate.getTime() + (24 * 60 * 60 * 1000 * 365));\r\n                    }\r\n                    else {\r\n                        expireDate.setTime(expireDate.getTime() + (3 * 60 * 60 * 1000)); //3시간 후\r\n                    }\r\n                    Cookies.set('token', token, { expires: expireDate, domain: this.$DOMAIN, path: '/' });\r\n                    await axios.post(\"/server/social_check\", JSON.stringify(data), {\r\n                        headers: {\r\n                            'Content-Type': 'application/json'\r\n                        }\r\n                    }).then(res => {\r\n                        if (res.data._data[\"length\"] == 0) { //다 가입 안돼있으면\r\n                            this.isSocial = 3;\r\n                            alert(\"환영합니다.\");\r\n                        }\r\n                        else if (res.data._data[0][\"CODE\"] == 1) { //소셜가입돼있으면\r\n                            this.isSocial = 1;\r\n                            alert(\"환영합니다.\");\r\n                        }\r\n                        else if (res.data._data[0][\"CODE\"] == 0) { //일반회원 가입돼있으면\r\n                            this.isSocial = 2;\r\n                            alert(\"일반회원으로 가입된 이메일입니다\");\r\n                            this.kakaoLogout();\r\n                        }\r\n                    })\r\n                    console.log(this.isSocial);\r\n                    if (this.isSocial == 3) { //소셜 가입한 적 없으면 회원가입 테이블에도 넣음\r\n                        await axios.post(\"/server/join_test\", JSON.stringify(data), {\r\n                            headers: {\r\n                                'Content-Type': 'application/json'\r\n                            }\r\n                        })\r\n                    }\r\n\r\n\r\n                    console.log(\"nickname\", nickname);\r\n                    console.log(\"email\", email);\r\n                    console.log(\"token\", token); \r\n\r\n                    if (this.isSocial != 2) {\r\n                        await axios.post(\"/server/login_test\", JSON.stringify(data), {\r\n                            headers: {\r\n                                'Content-Type': 'application/json'\r\n                            }\r\n                        }).then(res => {\r\n                            //location.href = \"https://selfdesign.xigeist.com/\"\r\n                            //location.href = this.$CLIENTURL;\r\n                            //location.href = this.TARGETURL2;\r\n                            this.isVisible = false;\r\n                            this.$emit('childEvent');\r\n                        })\r\n                    }\r\n                    console.log(data);\r\n\r\n                },\r\n                fail: (error) => {\r\n                    console.log(error);\r\n                },\r\n            });\r\n        },\r\n        kakaoLogout() {\r\n            window.Kakao.API.request({\r\n                url: '/v1/user/unlink',\r\n                success: function (response) {\r\n                    console.log(response);\r\n                    document.cookie = \"token=\" + \"\";\r\n                    //alert(\"로그아웃 되었어용\");\r\n                },\r\n                fail: function (error) {\r\n                    console.log(error);\r\n                },\r\n            });\r\n        },\r\n        async test() {\r\n            // alert(\"입력한 값은 11 입니다.\");\r\n            const data = await axios.get(\"/server/login\").then((response) => {\r\n                this.users = response.data;\r\n                console.log(this.users);\r\n\r\n            })\r\n                .catch(error => {\r\n                    console.error(error);\r\n                })\r\n        },\r\n        postData() {\r\n            let data = {\r\n                email: this.email,\r\n                password: this.password,\r\n                token: \"\",\r\n                code: \"0\",\r\n                hashPw: CryptoJS.SHA256(this.password).toString(),\r\n            }\r\n            //axios.post(this.$SERVERURL + \"login_test\", JSON.stringify(data), {\r\n                axios.post(\"/server/login_test\", JSON.stringify(data), {\r\n                headers: {\r\n                    'Content-Type': 'application/json'\r\n                }\r\n            }).then((response) => {\r\n                let token = response.data;\r\n                if (token != false) {\r\n                    //document.cookie = \"token=\" + token;\r\n                    let expireDate = new Date();\r\n                    if(this.isKeepLoin){\r\n                        expireDate.setTime(expireDate.getTime() + (24 * 60 * 60 * 1000 * 365));\r\n                    }\r\n                    else {\r\n                        expireDate.setTime(expireDate.getTime() + (3 * 60 * 60 * 1000)); //3시간 후\r\n                    }\r\n                    Cookies.set('token', token, { expires: expireDate, domain: this.$DOMAIN, path: '/' });\r\n                    console.log(token);\r\n                    alert(\"환영합니다.\");\r\n                    this.isVisible = false;\r\n                    //location.href = this.$TARGETURL + \"myhome\"\r\n                    //location.href = \"https://selfdesign.xigeist.com/\"\r\n                    //location.href = this.$CLIENTURL;\r\n                    //location.href = this.$TARGETURL2;\r\n                    this.$emit('childEvent');\r\n                }\r\n                else {\r\n                    alert(\"아이디, 비밀번호를 확인하세요.\");\r\n                }\r\n            })\r\n                .catch((error) => {\r\n                    console.error(error);\r\n                })\r\n        },\r\n        closeEditPop() {\r\n            this.isVisible = false;\r\n            this.$emit('childEvent2');\r\n        }\r\n\r\n    },\r\n}\r\n\r\n</script>","import { render } from \"./LogIn.vue?vue&type=template&id=4e0c2141&scoped=true\"\nimport script from \"./LogIn.vue?vue&type=script&lang=js\"\nexport * from \"./LogIn.vue?vue&type=script&lang=js\"\n\nimport \"./LogIn.vue?vue&type=style&index=0&id=4e0c2141&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-4e0c2141\"]])\n\nexport default __exports__","<template>\r\n    <div id=\"Header_Root\">\r\n        <div class=\"hw-title\">\r\n            <img src=\"../../assets/images/LogoW.png\" alt=\"\" @click=\"onClickRedirect()\">\r\n            <p>Home Self-Design System</p>\r\n            <!-- MaingPage 로고 색 다름 -->\r\n            <div class=\"MyInfo_Wrapper\" ref=\"myInfoWrapper\" @mouseleave=\"hideMyPage\">\r\n                <button @click=\"clickMyPage\" type=\"button\">\r\n                    <img src=\"../../assets/images/icons/logIn.png\" alt=\"\" class=\"myInfoIcon\">\r\n                </button>\r\n\r\n                <div class=\"MyInfo_List\" v-if=\"showMyPage\" :class=\"{ 'block' : showMyPage}\">\r\n                    <p class=\"arrow\"></p>\r\n                    <ul>\r\n                        <li class=\"name\"><strong>{{ this.userName }}</strong> 님</li>\r\n                        <li>\r\n                            <a @click=\"navigateToPage('mypage')\" :class=\"{ 'selected': isCurrentPage('/mypage') }\" id=\"myhome\">\r\n                                <!-- <a :href=\"`${this.$TARGETURL}myPage`\" @click=\"navigateToPage('/mypage')\" :class=\"{ 'selected': isCurrentPage('/mypage') }\" id=\"myhome\"></a> -->\r\n                                마이페이지\r\n                            </a>\r\n                        </li>\r\n                        <li>\r\n                            <a @click=\"navigateToPage('myhome')\" :class=\"{ 'selected': isCurrentPage('/myhome') }\" id=\"myhome\">\r\n                                내가 만든 주택\r\n                            </a>\r\n                        </li>\r\n                        <!-- <li>\r\n                            <router-link to=\"/account\">\r\n                                로그아웃\r\n                            </router-link>\r\n                        </li> -->\r\n                        <li @click=\"logout\">로그아웃</li>\r\n                    </ul>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <LogInModal @childEvent=\"getToken\" @childEvent2=\"LoginChild2\" v-if=\"IsModalPopup && !IsLogin\" />\r\n    </div>\r\n</template>\r\n\r\n<style scoped>\r\n#Header_Root {\r\n    grid-row:1;\r\n    width:100vw;\r\n    height: 100%;\r\n    display: flex;\r\n    align-items: center;\r\n    align-self: center;\r\n    justify-content: space-between;\r\n}\r\n#Header_Root .hw-title {\r\n    display:flex;\r\n    flex-direction: row;\r\n    align-items:center;\r\n    column-gap: 35px;\r\n}\r\n#Header_Root .hw-title img {\r\n    height: 28px;\r\n    display: flex;\r\n    align-items: flex-end;\r\n    justify-content: center;\r\n    cursor: pointer;\r\n    margin-left: 24px;\r\n}\r\n.iconContainer {\r\n    margin-right:24px;\r\n}\r\n.MyInfo_Wrapper {\r\n    position: absolute;\r\n    top: 20px;\r\n    right: 24px;\r\n    float: right;\r\n    z-index: 9998;\r\n    cursor: pointer;\r\n    height: 30px;\r\n}\r\n.M_Header .hw-title p {\r\n    font-family: Pretendard,sans-serif;\r\n    font-size: 1.2rem;\r\n    color: #787878;\r\n    font-weight: 300;\r\n    letter-spacing: -.5px;\r\n    cursor: pointer;\r\n    margin-left:0 !important\r\n}\r\n\r\n.myInfoIcon {\r\n    cursor: pointer;\r\n    height: 52px !important;\r\n}\r\n.MyInfo_List {\r\n    position:absolute;\r\n    top: 0;\r\n    right: 0;\r\n    height: auto;\r\n    display:none\r\n}\r\n.arrow {\r\n    position:relative;\r\n    content: \"\";\r\n    top: 35px;\r\n    right: 8px;\r\n    float: right;\r\n    transform: rotate(45deg);\r\n    width: 20px;\r\n    height: 20px;\r\n    background-color: #fff;\r\n    box-shadow: -3px -4px 4px -2px #ccc;\r\n    z-index:9990;\r\n}\r\n\r\n.MyInfo_Wrapper ul {\r\n    margin-top:60px;\r\n    width: 119px;\r\n    padding: 25px 12px ;\r\n    background: #fff;\r\n    border-radius: 5px;\r\n    box-shadow: 1px 1px 3px 2px #ccc;\r\n}\r\n.MyInfo_Wrapper .name strong {\r\n    font-size:1rem;\r\n}\r\n.MyInfo_Wrapper ul li,\r\n.MyInfo_Wrapper ul li a {\r\n    cursor: pointer;\r\n    font-size:.8rem;\r\n    color:#787878;\r\n    line-height:1.6rem;\r\n}\r\n.MyInfo_Wrapper ul li a:hover,\r\n.MyInfo_Wrapper ul li:hover  {\r\n    font-weight: bold;\r\n}\r\n\r\n.MyInfo_Wrapper ul li:first-child:hover  {\r\n    font-weight: initial;\r\n}\r\n.MyInfo_Wrapper ul li:first-child {\r\n    cursor:initial\r\n}\r\n.MyInfo_Wrapper button:active ~ .MyInfo_List {\r\n    display:block;\r\n}\r\n.MyInfo_Wrapper button ~ .MyInfo_List:hover {\r\n    display: block;\r\n}\r\n.MyInfo_Wrapper button {\r\n    background:0;\r\n    border:0;\r\n}\r\n.block {\r\n    display: block;\r\n}\r\n.selected {\r\n    font-weight: bold;\r\n    color:#000\r\n}\r\n</style>\r\n\r\n\r\n<script>\r\nimport Cookies from 'js-cookie';\r\nimport LogInModal from '../LogIn.vue';\r\nimport axios from 'axios';\r\n\r\n    export default {\r\n        components : {\r\n            LogInModal\r\n        },\r\n        data() {\r\n            return {\r\n                IsModalPopup: false,\r\n                token: {},\r\n                userName: '',\r\n                userEmail: '',\r\n                userIdx: '',\r\n                IsLogin: false,\r\n                showMyPage:false\r\n            }\r\n        },\r\n        async created() {\r\n            await this.getToken();\r\n        },\r\n        methods : {\r\n            async getToken() {\r\n                const cookie = Cookies.get(\"token\");\r\n                let data = {\r\n                    token: cookie == undefined ? \"\" : cookie,\r\n                };\r\n                //const res = await axios.post(\"http://localhost:12008/token_check\", JSON.stringify(data),{\r\n                const res = await axios.post(\r\n                    \"/server/token_check\",\r\n                    JSON.stringify(data),\r\n                    {\r\n                        headers: { \"Content-Type\": \"application/json\" },\r\n                    }\r\n                );\r\n                if (data.token == \"\") {\r\n                    //토큰 자체가 없으면 걍 로그인 안된거\r\n                    this.IsLogin = false;\r\n                } else if (res.data._data[\"length\"] == 0) {\r\n                    alert(\"다른 계정 로그인으로 인해 로그아웃 됩니다.\");\r\n                    Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n                    Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n                    //this.$router.push(\"/member/login\");\r\n                    window.location.reload();\r\n                } else if (res.status == 200) {\r\n                    // 로그인 된거\r\n                    this.userEmail = res.data._data[0][\"USER_EMAIL\"];\r\n                    this.userName = res.data._data[0][\"NAME\"];\r\n                    this.userIdx = res.data._data[0][\"idx\"];\r\n                    this.IsLogin = true;\r\n                }\r\n            },\r\n            async getFileList() {\r\n                const res = await axios.post(\"/server/read_file\",\r\n                    `{ \"key\":\"READ\", \"user_idx\":\"${this.userIdx}\" }`,{\r\n                    headers: {\r\n                    'Content-Type': 'application/json',\r\n                    'Access-Control-Allow-origin' : '*',\r\n                    'Access-Control-Allow-Methods' : 'GET, POST, OPTIONS, PUT, PATCH, DELETE',\r\n                    'Access-Control-Allow-Credentials' : 'true'\r\n                }\r\n                })\r\n                if (res.status == 200) {\r\n                    this.fileList = [...res.data._data];\r\n                    console.log(this.fileList)\r\n                }\r\n            },\r\n            logout() {\r\n                alert(\"로그아웃 합니다\");\r\n                if (this.userCode == 1) {\r\n                    console.log(\"카카오로그아웃\");\r\n                    this.kakaoLogout();\r\n                }\r\n                Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n                Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n                //window.location.href = \"http://localhost:8080/member/login\"\r\n                //this.$router.push('/member/login');\r\n                window.location.reload();\r\n                this.IsLogin = false;\r\n            },\r\n            saveFileToLocal(home) {\r\n                localStorage.setItem('load', home.FILE_DATA);\r\n                localStorage.setItem('loadIdx', home.IDX);\r\n            },\r\n            // clickMyPage() {\r\n            //     if (this.userName != '') {\r\n            //         this.showMyPage = !this.showMyPage;\r\n            //         console.log(this.showMyPage);\r\n            //     } else {\r\n            //         this.IsModalPopup = true;\r\n            //         this.showMyPage = true; // 로그인이 된 상태에서 showMyPage도 show되게~..\r\n            //     }\r\n            // },\r\n            clickMyPage() {\r\n                if (this.IsLogin) {\r\n                    this.showMyPage = !this.showMyPage;\r\n                } else {\r\n                    this.IsModalPopup = !this.IsModalPopup;\r\n                }\r\n            },\r\n            // showMyPage가 true일 때 MyPage_Wrapper 영역 밖으로 마우스 놓으면 hide~...\r\n            hideMyPage(event) {\r\n                if (!this.$refs.myInfoWrapper.contains(event.relatedTarget)) {\r\n                    this.showMyPage = false;\r\n                }\r\n            },\r\n            LoginChild2() {\r\n                this.IsModalPopup = false;\r\n            },\r\n            navigateToPage(page) {\r\n                //this.$emit('navigate', page);\r\n                // this.$router.push(page).then(() => {\r\n                //     this.updateCheckedState();\r\n                // });\r\n                // window.location(\"http://localhost:8080/mypage\").then(() => {\r\n                //     this.updateCheckedState();\r\n                // });\r\n                window.location.href = this.$TARGETURL + page;\r\n            },\r\n            isCurrentPage(page) {\r\n                return this.$route.path === page;\r\n            },\r\n            updateCheckedState() {\r\n                const mypage = document.getElementById('mypage');\r\n                const myhome = document.getElementById('myhome');\r\n\r\n                if (mypage) mypage.checked = false;\r\n                if (myhome) myhome.checked = false;\r\n\r\n                if (this.isCurrentPage('/mypage')) {\r\n                    const mypage = document.getElementById('mypage');\r\n                    if (mypage) mypage.checked = true;\r\n                } else if (this.isCurrentPage('/myhome')) {\r\n                    const myhome = document.getElementById('myhome');\r\n                    if (myhome) myhome.checked = true;\r\n                }\r\n            },\r\n            onClickRedirect() {\r\n                window.open(\"https://www.xigeist.com\", \"_blank\");\r\n            }\r\n        },\r\n        computed: {\r\n            currentRoute() {\r\n                return this.$route.path;\r\n            }\r\n        }\r\n    }\r\n</script>\r\n","import { render } from \"./headerTemplate_w.vue?vue&type=template&id=cb09a4ba&scoped=true\"\nimport script from \"./headerTemplate_w.vue?vue&type=script&lang=js\"\nexport * from \"./headerTemplate_w.vue?vue&type=script&lang=js\"\n\nimport \"./headerTemplate_w.vue?vue&type=style&index=0&id=cb09a4ba&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-cb09a4ba\"]])\n\nexport default __exports__","import { render } from \"./MainPage.vue?vue&type=template&id=2cca6183&scoped=true\"\nimport script from \"./MainPage.vue?vue&type=script&lang=js\"\nexport * from \"./MainPage.vue?vue&type=script&lang=js\"\n\nimport \"./MainPage.vue?vue&type=style&index=0&id=2cca6183&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-2cca6183\"]])\n\nexport default __exports__","<template>\r\n  <div id=\"S2_Div\">\r\n    <div id=\"Header-w\">\r\n      <div class=\"hw-tit\">\r\n        <Header />\r\n      </div>\r\n    </div>\r\n\r\n    <!--- 로그인이 된 상태에서만 보이기 --->\r\n    <div class=\"headerW_Container\" v-show=\"showMyPage\">\r\n      <div class=\"arrow\"></div>\r\n      <div class=\"myPageWrapper\">\r\n        <ul>\r\n          <li class=\"name\"><strong>{{ userName }}</strong> 님</li>\r\n          <li>\r\n            <a :href=\"this.$TARGETURL + 'mypage'\">\r\n              마이페이지\r\n            </a>\r\n          </li>\r\n          <li>\r\n            <a :href=\"this.$TARGETURL + 'myhome'\">\r\n              내가 만든 주택\r\n            </a>\r\n          </li>\r\n          <li @click=\"logout\">로그아웃</li>\r\n        </ul>\r\n      </div>\r\n    </div>\r\n    <!-- 방, 화장실 개수 Section START -->\r\n\r\n    <div class=\"S2_SideMenu\">\r\n      <div class=\"SideMenu_Btn\">\r\n        <router-link to=\"/\" class=\"Prev_Div\">\r\n          <img src=\"../assets/images/icons/arrow.png\" class=\"prev\" />\r\n        </router-link>\r\n\r\n        <div class=\"Next_Div\" @click=\"nextNav\">\r\n          <img src=\"../assets/images/icons/arrow.png\" class=\"next\" />\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"SideMenu_Tit\">\r\n        <img src=\"../assets/images/icons/question.png\" alt=\"\" />\r\n        <h3 v-if=\"typeName == 'type1'\">방이 몇 개인 집을 원하시나요?</h3>\r\n        <h3 v-if=\"typeName == 'type2'\">몇 평형대의 집을 원하시나요?</h3>\r\n        <div class=\"SideMenu_desc\">\r\n          <p>{{ Types.length }}개의 모델이 등록되어 있습니다.</p>\r\n        </div>\r\n      </div>\r\n\r\n      <div class=\"Spec_Div\">\r\n        <div class=\"Room_Div\" v-if=\"typeName == 'type1'\">\r\n          <p><img src=\"../assets/images/icons/room.png\" alt=\"\" />방 개수</p>\r\n          <div class=\"Room_Btns\">\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select\" @click=\"onClickRoomFilter($event, 1, 5, RoomFilters, 'rm')\" /><label\r\n                for=\"select\">1</label>\r\n            </div>\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select2\" @click=\"onClickRoomFilter($event, 2, 5, RoomFilters, 'rm')\" /><label\r\n                for=\"select2\">2</label>\r\n            </div>\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select3\" @click=\"onClickRoomFilter($event, 3, 5, RoomFilters, 'rm')\" /><label\r\n                for=\"select3\">3</label>\r\n            </div>\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select4\" @click=\"onClickRoomFilter($event, 4, 5, RoomFilters, 'rm')\" /><label\r\n                for=\"select4\">4</label>\r\n            </div>\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select5\" @click=\"onClickRoomFilter($event, 5, 5, RoomFilters, 'rm')\" /><label\r\n                for=\"select5\">5+</label>\r\n            </div>\r\n          </div>\r\n        </div>\r\n        <div class=\"BathRoom_Div\" v-if=\"typeName == 'type1'\">\r\n          <p><img src=\"../assets/images/icons/bathroom.png\" alt=\"\" />화장실 개수</p>\r\n          <div class=\"BathRoom_Btns\">\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select6\"\r\n                @click=\"onClickRoomFilter($event, 1, 3, BathRoomFilters, 'brm')\" /><label for=\"select6\">1</label>\r\n            </div>\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select7\"\r\n                @click=\"onClickRoomFilter($event, 2, 3, BathRoomFilters, 'brm')\" /><label for=\"select7\">2</label>\r\n            </div>\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select8\" @click=\"onClickRoomFilter($event, 3, 3, BathRoomFilters, 'brm')\" />\r\n              <label for=\"select8\">3</label>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"Size_Div\" v-if=\"typeName == 'type2'\">\r\n          <p><img src=\"../assets/images/icons/size.png\" alt=\"\" />평형</p>\r\n          <div class=\"Size_Btns\">\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select9\" @click=\"onClickAreaFilter($event, 29, 1)\" /><label\r\n                for=\"select9\">20py↓</label>\r\n            </div>\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select10\" @click=\"onClickAreaFilter($event, 30, 0)\" /><label\r\n                for=\"select10\">30py</label>\r\n            </div>\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select11\" @click=\"onClickAreaFilter($event, 40, 0)\" /><label\r\n                for=\"select11\">40py</label>\r\n            </div>\r\n\r\n            <div>\r\n              <input type=\"checkbox\" id=\"select12\" @click=\"onClickAreaFilter($event, 51, 2)\" /><label\r\n                for=\"select12\">50py↑</label>\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"Floor_Div\" v-if=\"typeName == 'type2'\">\r\n          <p><img src=\"../assets/images/icons/floor.png\" alt=\"\" />층수</p>\r\n          <div class=\"Floor_Btns\">\r\n            <input type=\"checkbox\" id=\"select13\" @click=\"onClickFloorFilter($event, 1)\" /><label\r\n              for=\"select13\">1</label>\r\n            <input type=\"checkbox\" id=\"select14\" @click=\"onClickFloorFilter($event, 2)\" /><label\r\n              for=\"select14\">2</label>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </div>\r\n\r\n\r\n    <div class=\"S2_List\">\r\n      <div class=\"S2_Thumbs_Wrap prevent\">\r\n        <div class=\"S2_Thumbs\" v-for=\"t in DisplayTypes\" :key=\"t\">\r\n          <router-link :to=\"t.viewPath\">\r\n            <div class=\"S2_Thumb\">\r\n              <div class=\"Thumb_Tit\">\r\n                <p>{{ t.title }}</p>\r\n              </div>\r\n              <img :src=\"t.thumbnail\" alt=\"\" />\r\n              <div class=\"Type_desc\">\r\n                <p>\r\n                  {{ t.mmSize }} ({{ t.areaSize }} py) | {{ t.floor }}-Story |\r\n                  {{ t.roomCnt }}-Bed | {{ t.bathRoomCnt }}-Bath\r\n                </p>\r\n              </div>\r\n            </div>\r\n          </router-link>\r\n        </div>\r\n      </div>\r\n\r\n      <!-- <div class=\"pagination_Div\">\r\n        <div class=\"pagination\">\r\n          <span class=\"btn_f\" @click=\"pageMove(pages[0])\"></span>\r\n          <span class=\"btn_p\" @click=\"pageMove(curPage-1)\"></span>\r\n          <span class=\"pageN\" v-for=\"page in pages\" :key=\"page\"\r\n                @click=\"pageMove(page)\" \r\n                v-bind:style=\"{color : getPageColor(page)}\">\r\n                {{\r\n                  page\r\n                }}</span>\r\n          <span class=\"btn_n\" @click=\"pageMove(curPage+1)\"> </span>\r\n          <span class=\"btn_l\" @click=\"pageMove(pages.at(-1))\"></span>\r\n        </div>\r\n      </div> -->\r\n    </div>\r\n    <!-- 방, 화장실 개수 Section END -->\r\n    <LogIn @childEvent=\"getToken\" @childEvent2=\"LoginChild2\" v-if=\"showEditPopup\" />\r\n  </div>\r\n</template>\r\n\r\n<style scoped>\r\n@import \"../assets/css/PageSection2.css\";\r\n@import \"../assets/css/Responsive.css\";\r\n</style>\r\n\r\n<script>\r\nimport axios from \"axios\";\r\nimport { RedFormat } from \"three\";\r\nimport LogIn from \"../components/LogIn.vue\";\r\nimport Cookies from 'js-cookie';\r\nimport Header from \"./essential/headerTemplate.vue\"\r\n\r\nexport default {\r\n  name: \"component.vue\",\r\n\r\n  components: {\r\n    LogIn,\r\n    Header\r\n  },\r\n\r\n  data() {\r\n    return {\r\n      totalType: 0,\r\n      typeName: \"\",\r\n      Types: [],\r\n      DisplayTypes: [],\r\n      RoomFilters: new Map(),\r\n      BathRoomFilters: new Map(),\r\n      FloorFilterMap: new Map(),\r\n      AreaFilterMap: new Map(),\r\n      pages: [], //페이지 배열,\r\n      curPage: 1,\r\n      pageActiveColor: '#006B8E',\r\n      pageNomalColor: '#696d6f',\r\n      showMyPage: false,\r\n      userName: '',\r\n      userIdx: '',\r\n      showEditPopup: false\r\n    };\r\n  },\r\n  async beforeRouteEnter(to, from, next) {\r\n    const typeName = to.params.typeName;\r\n    if (typeName === \"type1\" || typeName === \"type2\") {\r\n      next();\r\n    }\r\n    else {\r\n      next(\"/Error\");\r\n    }\r\n  },\r\n  async created() {\r\n    await this.getToken();\r\n  },\r\n  async mounted() {\r\n    this.typeName = this.$route.params.typeName;\r\n    this.global.typeHistory = this.typeName;\r\n    const response = await axios.get(\"../../Types.json\");\r\n    this.Types = response.data;\r\n    this.DisplayTypes = [...this.Types];\r\n    this.totalType = this.Types.length; //totalType 가져오기\r\n    document.title = 'LIST | Home Self-Design System | XiGEIST';\r\n  },\r\n  methods: {\r\n    clickMyPage() {\r\n      //this.showMyPage = !this.showMyPage\r\n      if (this.userName != '') {\r\n        this.showMyPage = !this.showMyPage;\r\n      } else {\r\n        //window.location.href = this.$TARGETURL + \"member/login\";\r\n        this.onClickEditPopup();\r\n      }\r\n    },\r\n    async getToken() {\r\n      const cookie = Cookies.get('token');\r\n      let data = {\r\n        token: cookie == undefined ? '' : cookie\r\n      }\r\n      const res = await axios.post(\"/server/token_check\", JSON.stringify(data), {\r\n        headers: { 'Content-Type': 'application/json' }\r\n      });\r\n      if (data.token == '') { //토큰 자체가 없으면 걍 로그인 안된거\r\n\r\n      }\r\n      else if (res.data._data[\"length\"] == 0) { // 토큰이 변경됐으면\r\n        alert(\"다른 계정 로그인으로 인해 로그아웃됩니다.\");\r\n        Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n        Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n        this.userIdx = '';\r\n        this.userName = '';\r\n        this.showMyPage = false; //마이페이지 닫음\r\n        window.location.reload();\r\n      }\r\n      else if (res.status == 200) {\r\n        this.userIdx = res.data._data[0][\"idx\"];\r\n        this.userName = res.data._data[0][\"NAME\"];\r\n        console.log(this.userName);\r\n        //this.showMyPage=true;\r\n      }\r\n    },\r\n    logout() {\r\n      alert(\"로그아웃 합니다\");\r\n      if (this.userCode == 1) {\r\n        console.log(\"카카오로그아웃\");\r\n        this.kakaoLogout();\r\n      }\r\n      Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n      Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n      this.userIdx = '';\r\n      this.userName = '';\r\n      this.showMyPage = false;\r\n      window.location.reload();\r\n    },\r\n    getPageColor(page) {\r\n      if (this.curPage === page) {\r\n        return this.pageActiveColor\r\n      }\r\n      return this.pageNomalColor\r\n    },\r\n    onClickRedirect: function () {\r\n      window.open(\"https://www.xigeist.com\", \"_blank\");\r\n    },\r\n    onClickRoomFilter(e, i, maxRoom, map, keyStr) {\r\n      const checked = e.target.checked;\r\n      const key = `${i}`;\r\n\r\n      const filter = (type) => {\r\n        if (keyStr == \"rm\") {\r\n          if (i === maxRoom) {\r\n            return type.filter((o) => o.roomCnt >= i);\r\n          }\r\n          return type.filter((o) => o.roomCnt == i);\r\n        } else {\r\n          if (i === maxRoom) {\r\n            return type.filter((o) => o.bathRoomCnt >= i);\r\n          }\r\n          return type.filter((o) => o.bathRoomCnt == i);\r\n        }\r\n      };\r\n\r\n      if (checked) {\r\n        if (!map.has(key)) {\r\n          map.set(key, filter);\r\n        }\r\n      } else {\r\n        if (map.has(key)) {\r\n          map.delete(key);\r\n        }\r\n      }\r\n\r\n      this.SetDisplayType1List();\r\n    },\r\n    onClickFloorFilter(e, i) {\r\n      const checked = e.target.checked;\r\n      const key = `fl${i}`;\r\n      const filter = (type) => {\r\n        return type.filter((o) => o.floor == i);\r\n      };\r\n      if (checked) {\r\n        if (!this.FloorFilterMap.has(key)) {\r\n          this.FloorFilterMap.set(key, filter);\r\n        }\r\n      } else {\r\n        if (this.FloorFilterMap.has(key)) {\r\n          this.FloorFilterMap.delete(key);\r\n        }\r\n      }\r\n      this.SetDisplayType2List();\r\n    },\r\n    onClickAreaFilter(e, i, option) {\r\n      const checked = e.target.checked;\r\n      const key = `fl${i}`;\r\n      const filter = (type) => {\r\n        if (option === 1) {\r\n          return type.filter((o) => o.areaSize <= i);\r\n        } else if (option === 2) {\r\n          return type.filter((o) => o.areaSize >= i);\r\n        } else {\r\n          return type.filter((o) => o.areaSize >= i && o.areaSize < i + 10);\r\n        }\r\n      };\r\n      if (checked) {\r\n        if (!this.AreaFilterMap.has(key)) {\r\n          this.AreaFilterMap.set(key, filter);\r\n        }\r\n      } else {\r\n        if (this.AreaFilterMap.has(key)) {\r\n          this.AreaFilterMap.delete(key);\r\n        }\r\n      }\r\n      this.SetDisplayType2List();\r\n    },\r\n    DisplaySort(a, b) {\r\n      if (a.name > b.name) return 1;\r\n      if (a.name < b.name) return -1;\r\n      if (a.name === b.name) return 0;\r\n    },\r\n    SetDisplayType1List() {\r\n      this.DisplayTypes.length = 0;\r\n      if (this.RoomFilters.size == 0 && this.BathRoomFilters.size == 0) {\r\n        this.DisplayTypes = [...this.Types];\r\n        this.DisplayTypes = this.DisplayTypes.sort(this.DisplaySort);\r\n        return;\r\n      } else if (this.RoomFilters.size == 0 && this.BathRoomFilters.size > 0) {\r\n        this.BathRoomFilters.forEach((f) => {\r\n          Array.prototype.push.apply(this.DisplayTypes, f(this.Types));\r\n        });\r\n        this.DisplayTypes = this.DisplayTypes.sort(this.DisplaySort);\r\n        return;\r\n      } else if (this.BathRoomFilters.size == 0 && this.RoomFilters.size > 0) {\r\n        this.RoomFilters.forEach((f) => {\r\n          Array.prototype.push.apply(this.DisplayTypes, f(this.Types));\r\n        });\r\n        this.DisplayTypes = this.DisplayTypes.sort(this.DisplaySort);\r\n        return;\r\n      } else {\r\n        const rmArr = [];\r\n        const brmArr = [];\r\n        this.RoomFilters.forEach((f) => {\r\n          Array.prototype.push.apply(rmArr, f(this.Types));\r\n        });\r\n        this.BathRoomFilters.forEach((f) => {\r\n          Array.prototype.push.apply(brmArr, f(this.Types));\r\n        });\r\n        const ret = rmArr.filter((x) => brmArr.findIndex((o) => o.name === x.name) > -1);\r\n        this.DisplayTypes = [...ret];\r\n        this.DisplayTypes = this.DisplayTypes.sort(this.DisplaySort);\r\n        return;\r\n      }\r\n\r\n      // this.DisplayTypes = this.DisplayTypes.filter((element, index) => {\r\n      //   const target = this.DisplayTypes.find((x) => x.name === element.name);\r\n      //   return this.DisplayTypes.indexOf(target) === index;\r\n      // });\r\n    },\r\n    SetDisplayType2List() {\r\n      this.DisplayTypes.length = 0;\r\n      if (this.FloorFilterMap.size == 0 && this.AreaFilterMap.size == 0) {\r\n        this.DisplayTypes = [...this.Types];\r\n        return;\r\n      } else if (this.FloorFilterMap.size == 0 && this.AreaFilterMap.size > 0) {\r\n        this.AreaFilterMap.forEach((f) => {\r\n          Array.prototype.push.apply(this.DisplayTypes, f(this.Types));\r\n          this.DisplayTypes = this.DisplayTypes.sort(this.DisplaySort);\r\n        });\r\n        return;\r\n      } else if (this.AreaFilterMap.size == 0 && this.FloorFilterMap.size > 0) {\r\n        this.FloorFilterMap.forEach((f) => {\r\n          Array.prototype.push.apply(this.DisplayTypes, f(this.Types));\r\n          this.DisplayTypes = this.DisplayTypes.sort(this.DisplaySort);\r\n        });\r\n        return;\r\n      } else {\r\n        const flArr = [];\r\n        const areaArr = [];\r\n        this.FloorFilterMap.forEach((f) => {\r\n          Array.prototype.push.apply(flArr, f(this.Types));\r\n        });\r\n        this.AreaFilterMap.forEach((f) => {\r\n          Array.prototype.push.apply(areaArr, f(this.Types));\r\n        });\r\n        const ret = flArr.filter((x) => areaArr.findIndex((o) => o.name === x.name) > -1);\r\n        this.DisplayTypes = [...ret];\r\n        this.DisplayTypes = this.DisplayTypes.sort(this.DisplaySort);\r\n        return;\r\n      }\r\n    },\r\n    async nextNav() {\r\n      if (this.global.moduleHistory === undefined) {\r\n        await this.$router.replace({\r\n          name: \"ViewerPage\",\r\n          params: { typeName: \"Volume20\" },\r\n        });\r\n      }\r\n      else {\r\n        await this.$router.replace({\r\n          name: \"ViewerPage\",\r\n          params: { typeName: this.global.moduleHistory },\r\n        });\r\n      }\r\n    },\r\n    onClickEditPopup() { // 편집하기 팝업 on\r\n      // 로그인 안 돼있으면 로그인하라는 팝업\r\n      this.showEditPopup = true;\r\n\r\n    },\r\n    LoginChild2() {\r\n      this.showEditPopup = false;\r\n    },\r\n    kakaoLogout() {\r\n      window.Kakao.API.request({\r\n        url: '/v1/user/unlink',\r\n        success: function (response) {\r\n          console.log(response);\r\n          document.cookie = \"token=\" + \"\";\r\n          //alert(\"로그아웃 되었어용\");\r\n        },\r\n        fail: function (error) {\r\n          console.log(error);\r\n        },\r\n      });\r\n    },\r\n\r\n\r\n  },\r\n};\r\n</script>\r\n","<template>\r\n    <div id=\"Header_Root\">\r\n        <div class=\"hw-title\">\r\n            <img src=\"../../assets/images/Logo.png\" alt=\"\" @click=\"onClickRedirect()\">\r\n            <p>Home Self-Design System</p>\r\n\r\n            <div class=\"MyInfo_Wrapper\" ref=\"myInfoWrapper\" @mouseleave=\"hideMyPage\">\r\n                <button @click=\"clickMyPage\" type=\"button\">\r\n                    <img src=\"../../assets/images/icons/mypage_2.png\" alt=\"\" class=\"myInfoIcon\">\r\n                </button>\r\n\r\n                <div class=\"MyInfo_List\" v-if=\"showMyPage\" :class=\"{ 'block' : showMyPage}\">\r\n                    <p class=\"arrow\"></p>\r\n                    <ul>\r\n                        <li class=\"name\"><strong>{{ this.userName }}</strong> 님</li>\r\n                        <li>\r\n                            <a @click=\"navigateToPage('mypage')\" :class=\"{ 'selected': isCurrentPage('/mypage') }\" id=\"myhome\">\r\n                                마이페이지\r\n                            </a>\r\n                        </li>\r\n                        <li>\r\n                            <a @click=\"navigateToPage('myhome')\" :class=\"{ 'selected': isCurrentPage('/myhome') }\" id=\"myhome\">\r\n                                내가 만든 주택\r\n                            </a>\r\n                        </li>\r\n                        <!-- <li>\r\n                            <router-link to=\"/account\">\r\n                                로그아웃\r\n                            </router-link>\r\n                        </li> -->\r\n                        <li @click=\"logout\">로그아웃</li>\r\n                    </ul>\r\n                </div>\r\n            </div>\r\n        </div>\r\n        <LogInModal @childEvent=\"getToken\" @childEvent2=\"LoginChild2\" v-if=\"IsModalPopup && !IsLogin\" />\r\n    </div>\r\n</template>\r\n\r\n<style scoped>\r\n#Header_Root {\r\n    grid-row:1;\r\n    width:100vw;\r\n    height: 100%;\r\n    display: flex;\r\n    align-items: center;\r\n    align-self: center;\r\n    justify-content: space-between;\r\n}\r\n#Header_Root .hw-title {\r\n    display:flex;\r\n    flex-direction: row;\r\n    align-items:center;\r\n    column-gap: 35px;\r\n}\r\n#Header_Root .hw-title img {\r\n    /* height: 28px; */\r\n    display: flex;\r\n    align-items: flex-end;\r\n    justify-content: center;\r\n    cursor: pointer;\r\n    margin-left: 24px;\r\n}\r\n.iconContainer {\r\n    margin-right:24px;\r\n}\r\n.MyInfo_Wrapper {\r\n    position: absolute;\r\n    top: 20px;\r\n    right: 24px;\r\n    float: right;\r\n    z-index: 9998;\r\n    cursor: pointer;\r\n    height: 30px;\r\n}\r\n.M_Header .hw-title p {\r\n    font-family: Pretendard,sans-serif;\r\n    font-size: 1.2rem;\r\n    color: #787878;\r\n    font-weight: 300;\r\n    letter-spacing: -.5px;\r\n    cursor: pointer;\r\n    margin-left:0 !important\r\n}\r\n\r\n.myInfoIcon {\r\n    cursor: pointer;\r\n    height: 36px;\r\n}\r\n.MyInfo_List {\r\n    position:absolute;\r\n    top: 0;\r\n    right: 0;\r\n    height: auto;\r\n    display:none\r\n}\r\n.arrow {\r\n    position:relative;\r\n    content: \"\";\r\n    top: 35px;\r\n    right: 8px;\r\n    float: right;\r\n    transform: rotate(45deg);\r\n    width: 20px;\r\n    height: 20px;\r\n    background-color: #fff;\r\n    box-shadow: -3px -4px 4px -2px #ccc;\r\n    z-index:9990;\r\n}\r\n\r\n.MyInfo_Wrapper ul {\r\n    margin-top:60px;\r\n    width: 119px;\r\n    padding: 25px 12px ;\r\n    background: #fff;\r\n    border-radius: 5px;\r\n    box-shadow: 1px 1px 3px 2px #ccc;\r\n}\r\n.MyInfo_Wrapper .name strong {\r\n    font-size:1rem;\r\n}\r\n.MyInfo_Wrapper ul li,\r\n.MyInfo_Wrapper ul li a {\r\n    cursor: pointer;\r\n    font-size:.8rem;\r\n    color:#787878;\r\n    line-height:1.6rem;\r\n}\r\n.MyInfo_Wrapper ul li a:hover,\r\n.MyInfo_Wrapper ul li:hover  {\r\n    font-weight: bold;\r\n}\r\n\r\n.MyInfo_Wrapper ul li:first-child:hover  {\r\n    font-weight: initial;\r\n}\r\n.MyInfo_Wrapper ul li:first-child {\r\n    cursor:initial\r\n}\r\n.MyInfo_Wrapper button:active ~ .MyInfo_List {\r\n    display:block;\r\n}\r\n.MyInfo_Wrapper button ~ .MyInfo_List:hover {\r\n    display: block;\r\n}\r\n.MyInfo_Wrapper button {\r\n    background:0;\r\n    border:0;\r\n}\r\n.block {\r\n    display: block;\r\n}\r\n.selected {\r\n    font-weight: bold;\r\n    color:#000\r\n}\r\n</style>\r\n\r\n\r\n<script>\r\nimport Cookies from 'js-cookie';\r\nimport LogInModal from '../LogIn.vue';\r\nimport axios from 'axios';\r\n\r\n    export default {\r\n        components : {\r\n            LogInModal\r\n        },\r\n        data() {\r\n            return {\r\n                IsModalPopup: false,\r\n                token: {},\r\n                userName: '',\r\n                userEmail: '',\r\n                userIdx: '',\r\n                IsLogin: false,\r\n                showMyPage:false\r\n            }\r\n        },\r\n        async created() {\r\n            await this.getToken();\r\n        },\r\n        methods : {\r\n            async getToken() {\r\n                const cookie = Cookies.get(\"token\");\r\n                let data = {\r\n                    token: cookie == undefined ? \"\" : cookie,\r\n                };\r\n                //const res = await axios.post(\"http://localhost:12008/token_check\", JSON.stringify(data),{\r\n                const res = await axios.post(\r\n                    \"/server/token_check\",\r\n                    JSON.stringify(data),\r\n                    {\r\n                        headers: { \"Content-Type\": \"application/json\" },\r\n                    }\r\n                );\r\n                if (data.token == \"\") {\r\n                    //토큰 자체가 없으면 걍 로그인 안된거\r\n                    this.IsLogin = false;\r\n                } else if (res.data._data[\"length\"] == 0) {\r\n                    alert(\"다른 계정 로그인으로 인해 로그아웃 됩니다.\");\r\n                    Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n                    Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n                    //this.$router.push(\"/member/login\");\r\n                    window.location.reload();\r\n                } else if (res.status == 200) {\r\n                    // 로그인 된거\r\n                    this.userEmail = res.data._data[0][\"USER_EMAIL\"];\r\n                    this.userName = res.data._data[0][\"NAME\"];\r\n                    this.userIdx = res.data._data[0][\"idx\"];\r\n                    this.IsLogin = true;\r\n                }\r\n            },\r\n            async getFileList() {\r\n                const res = await axios.post(\"/server/read_file\",\r\n                    `{ \"key\":\"READ\", \"user_idx\":\"${this.userIdx}\" }`,{\r\n                    headers: {\r\n                    'Content-Type': 'application/json',\r\n                    'Access-Control-Allow-origin' : '*',\r\n                    'Access-Control-Allow-Methods' : 'GET, POST, OPTIONS, PUT, PATCH, DELETE',\r\n                    'Access-Control-Allow-Credentials' : 'true'\r\n                }\r\n                })\r\n                if (res.status == 200) {\r\n                    this.fileList = [...res.data._data];\r\n                    console.log(this.fileList)\r\n                }\r\n            },\r\n            logout() {\r\n                alert(\"로그아웃 합니다\");\r\n                if (this.userCode == 1) {\r\n                    console.log(\"카카오로그아웃\");\r\n                    this.kakaoLogout();\r\n                }\r\n                Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n                Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n                //window.location.href = \"http://localhost:8080/member/login\"\r\n                //this.$router.push('/member/login');\r\n                window.location.reload();\r\n                this.IsLogin = false;\r\n            },\r\n            saveFileToLocal(home) {\r\n                localStorage.setItem('load', home.FILE_DATA);\r\n                localStorage.setItem('loadIdx', home.IDX);\r\n            },\r\n            // clickMyPage() {\r\n            //     if (this.userName != '') {\r\n            //         this.showMyPage = !this.showMyPage;\r\n            //         console.log(this.showMyPage);\r\n            //     } else {\r\n            //         this.IsModalPopup = true;\r\n            //         this.showMyPage = true; // 로그인이 된 상태에서 showMyPage도 show되게~..\r\n            //     }\r\n            // },\r\n            clickMyPage() {\r\n                if (this.IsLogin) {\r\n                    this.showMyPage = !this.showMyPage;\r\n                } else {\r\n                    this.IsModalPopup = !this.IsModalPopup;\r\n                }\r\n            },\r\n            // showMyPage가 true일 때 MyPage_Wrapper 영역 밖으로 마우스 놓으면 hide~...\r\n            hideMyPage(event) {\r\n                if (!this.$refs.myInfoWrapper.contains(event.relatedTarget)) {\r\n                    this.showMyPage = false;\r\n                }\r\n            },\r\n            LoginChild2() {\r\n                this.IsModalPopup = false;\r\n            },\r\n            navigateToPage(page) {\r\n                //this.$emit('navigate', page);\r\n                // this.$router.push(page).then(() => {\r\n                //     this.updateCheckedState();\r\n                // });\r\n                // window.location(\"http://localhost:8080/mypage\").then(() => {\r\n                //     this.updateCheckedState();\r\n                // });\r\n                window.location.href = this.$TARGETURL + page;\r\n            },\r\n            isCurrentPage(page) {\r\n                return this.$route.path === page;\r\n            },\r\n            updateCheckedState() {\r\n                const mypage = document.getElementById('mypage');\r\n                const myhome = document.getElementById('myhome');\r\n\r\n                if (mypage) mypage.checked = false;\r\n                if (myhome) myhome.checked = false;\r\n\r\n                if (this.isCurrentPage('/mypage')) {\r\n                    const mypage = document.getElementById('mypage');\r\n                    if (mypage) mypage.checked = true;\r\n                } else if (this.isCurrentPage('/myhome')) {\r\n                    const myhome = document.getElementById('myhome');\r\n                    if (myhome) myhome.checked = true;\r\n                }\r\n            },\r\n            onClickRedirect() {\r\n                window.open(\"https://www.xigeist.com\", \"_blank\");\r\n            }\r\n        },\r\n        computed: {\r\n            currentRoute() {\r\n                return this.$route.path;\r\n            }\r\n        }\r\n    }\r\n</script>\r\n","import { render } from \"./headerTemplate.vue?vue&type=template&id=c4ad0a52&scoped=true\"\nimport script from \"./headerTemplate.vue?vue&type=script&lang=js\"\nexport * from \"./headerTemplate.vue?vue&type=script&lang=js\"\n\nimport \"./headerTemplate.vue?vue&type=style&index=0&id=c4ad0a52&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-c4ad0a52\"]])\n\nexport default __exports__","import { render } from \"./PageSection2.vue?vue&type=template&id=016c3655&scoped=true\"\nimport script from \"./PageSection2.vue?vue&type=script&lang=js\"\nexport * from \"./PageSection2.vue?vue&type=script&lang=js\"\n\nimport \"./PageSection2.vue?vue&type=style&index=0&id=016c3655&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-016c3655\"]])\n\nexport default __exports__","<template>\r\n  <div>\r\n    <router-view :key=\"$route.fullPath\">\r\n      <div id=\"Viewer_Div\" @click=\"closeSel\">\r\n        <div id=\"Header-w\">\r\n          <Header />\r\n        </div>\r\n\r\n        <!--- 로그인이 된 상태에서만 보이기 --->\r\n        <div class=\"headerW_Container\" v-show=\"showMyPage\">\r\n          <div class=\"arrow\"></div>\r\n          <div class=\"myPageWrapper\">\r\n            <ul>\r\n              <li class=\"name\"><strong>{{ userName }}</strong> 님</li>\r\n              <li>\r\n                <a :href=\"this.$TARGETURL + 'mypage'\">\r\n                  마이페이지\r\n                </a>\r\n              </li>\r\n              <li>\r\n                <a :href=\"this.$TARGETURL + 'myhome'\">\r\n                  내가 만든 주택\r\n                </a>\r\n              </li>\r\n              <li @click=\"logout\">로그아웃</li>\r\n            </ul>\r\n          </div>\r\n        </div>\r\n\r\n        <div class=\"Pop_SideMenu\">\r\n          <div class=\"SideMenus_Btn\">\r\n            <div class=\"Prevs_Div\" @click=\"navBackCommand\">\r\n              <img src=\"../assets/images/icons/arrow.png\" class=\"prev\" />\r\n            </div>\r\n\r\n            <div class=\"Nexts_Div\">\r\n              <img src=\"../assets/images/icons/arrow.png\" class=\"next\" />\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"Pop_Tit\">\r\n            <div class=\"Pop_Wrapper\">\r\n              <h3 style=\"margin: 0px\">{{ curType.title }}</h3>\r\n              <!--- 로그인이 안 된 상태에서 편집하기 버튼 클릭하면 로그인 페이지로 이동 --->\r\n              <a v-if=\"curType.title !== 'Proto.35D' && curType.title !== 'ADU'\" class=\"editBtn\"\r\n                @click=\"onClickEditPopup\">\r\n                <img src=\"../assets//images//icons/edit.png\" alt=\"\">\r\n                <p>편집하기</p>\r\n              </a>\r\n            </div>\r\n\r\n            <div class=\"Pop_Spec\">\r\n              <p><img src=\"../assets/images/icons/size.png\" />{{ curType.mmSize }}</p>\r\n              <p><img src=\"../assets/images/icons/room.png\" />{{ mRooms }}</p>\r\n              <p><img src=\"../assets/images/icons/floor.png\" />{{ mFloor }}</p>\r\n              <p><img src=\"../assets/images/icons/bathroom.png\" />{{ mBath }}</p>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"Floor_Thumb\">\r\n            <div class=\"Floor_Tit\" @click=\"showTypeCommand\">\r\n              <p>전체보기</p>\r\n            </div>\r\n            <img :src=\"curType.thumbnail\" @click=\"showTypeCommand\" alt=\"\" class=\"thumb\" />\r\n\r\n            <div class=\"Floor_Tit\">\r\n              <p>1F</p>\r\n            </div>\r\n            <img :src=\"curType.img1F\" alt=\"\" @click=\"openFPop(curType.img1F)\" />\r\n\r\n            <div class=\"Floor_Tit\" v-if=\"is2f\">\r\n              <p>2F</p>\r\n            </div>\r\n            <img :src=\"curType.img2F\" @click=\"openFPop(curType.img2F)\" alt=\"\" v-if=\"is2f\" />\r\n          </div>\r\n\r\n          <!-- <button class=\"Make_Btn\">\r\n            <img src=\"../assets/images/icons/edit.png\" alt=\"\">\r\n            직접 설계하기\r\n          </button> -->\r\n\r\n          <!-- <div class=\"FloorPlan_Div\"></div> -->\r\n        </div>\r\n\r\n        <div class=\"Pop_Viewer\">\r\n          <div class=\"FPop_Div\" v-show=\"showFP\">\r\n            <div class=\"Fpop_Menu\"></div>\r\n            <div class=\"Fpop_img\">\r\n              <img :src=\"selectFp\" alt=\"\" />\r\n              <button @click=\"closeFP\">X</button>\r\n            </div>\r\n          </div>\r\n\r\n          <div class=\"Viewer_desc\">\r\n            <p>※ 다락옵션의 경우 지붕 형태에 따라 선택의 제약이 있을 수 있음.</p>\r\n            <p>※ Option 모듈(현관모듈, 주차장모듈 등)은 외관 형상에 따라 선택의 제약이 있을 수 있음.</p>\r\n\r\n            <p>※ 2층 이상의 주택은 관련법령에 따라 소방창이 필요하며, 건축물 배치에 따라 소방창 위치가 변경될 수 있음.</p>\r\n          </div>\r\n\r\n          <router-link to=\"/\">\r\n            <!-- <div class=\"closeBtn\" @click=\"$router.go(-1)\">\r\n              <img src=\"../assets/images/OpenModule.png\" alt=\"\" /> \r\n            </div> -->\r\n          </router-link>\r\n\r\n          <div class=\"Layer_Div\">\r\n            <div class=\"Option_Btns\">\r\n              <input type=\"radio\" checked=\"true\" id=\"select\" name=\"btNav\" @click=\"openMd\" />\r\n              <label for=\"select\">Modules</label>\r\n\r\n              <input type=\"radio\" id=\"select2\" name=\"btNav\" @click=\"openRF\" />\r\n              <label for=\"select2\">Roofs</label>\r\n\r\n              <input type=\"radio\" v-if=\"isAdu\" id=\"select3\" name=\"btNav\" @click=\"openADU\" />\r\n              <label for=\"select3\" v-if=\"isAdu\">ADU Example</label>\r\n            </div>\r\n\r\n            <div class=\"Module_List\" v-if=\"showMd\" style=\"align-items: center\">\r\n              <p @click=\"selectAnimationCommand\" class=\"AnimateBtn\">\r\n                <span v-if=\"animButtonStatus('None')\">Animate</span>\r\n                <img v-if=\"animButtonStatus('Stop')\" src=\"../assets/images/icons/play.png\" alt=\"Play\" />\r\n                <img v-if=\"animButtonStatus('Run')\" src=\"../assets/images/icons/pause.png\" alt=\"Pause\" />\r\n              </p>\r\n\r\n              <div class=\"MLThumb_Wrap\">\r\n                <div class=\"MLThumb\" v-for=\"m in curModules\" :key=\"m\" @click=\"selectModuleCommand(m.name, $event)\"\r\n                  style=\"width: 250px; height: 98%; margin-right: 10px\">\r\n                  <div class=\"Module_Thumb\" style=\"width: 250px; height: 98%\">\r\n                    <img :src=\"m.imgPath\" alt=\"\" />\r\n                    <div style=\"\r\n                        position: absolute;\r\n                        color: beige;\r\n                        text-align: center;\r\n                        position: absolute;\r\n                        color: beige;\r\n                        text-align: center;\r\n                        top: 5px;\r\n                        left: 5px;\r\n                        z-index: 50;\r\n                        width: 60px;\r\n                        height: 25px;\r\n                        background: #d9d9d9;\r\n                        color: #696d6f;\r\n                        display: flex;\r\n                        justify-content: center;\r\n                        align-items: center;\r\n                        font-size: 13px;\r\n                        border-radius: 25px;\r\n                      \" v-if=\"m.isVisible == false\" class=\"onoffBtn1\">\r\n                      Off\r\n                    </div>\r\n                    <div style=\"\r\n                        position: absolute;\r\n                        color: beige;\r\n                        text-align: center;\r\n                        top: 5px;\r\n                        left: 5px;\r\n                        z-index: 50;\r\n                        width: 60px;\r\n                        height: 25px;\r\n                        background: gray;\r\n                        display: flex;\r\n                        justify-content: center;\r\n                        align-items: center;\r\n                        font-size: 13px;\r\n                        border-radius: 25px;\r\n                      \" v-if=\"m.isVisible == true\" class=\"onoffBtn\">\r\n                      On\r\n                    </div>\r\n                    <div class=\"Txt_Div\" style=\"\">\r\n                      <h3>{{ m.name }}</h3>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n\r\n            <div class=\"Module_List\" v-if=\"showRF\" style=\"align-items: center;\">\r\n              <p @click=\"selectAnimationCommand\" class=\"AnimateBtn\">\r\n                <span v-if=\"animButtonStatus('None')\">Animate</span>\r\n                <img v-if=\"animButtonStatus('Stop')\" src=\"../assets/images/icons/play.png\" alt=\"Play\" />\r\n                <img v-if=\"animButtonStatus('Run')\" src=\"../assets/images/icons/pause.png\" alt=\"Pause\" />\r\n              </p>\r\n              <div class=\"MLThumb_Wrap\">\r\n                <div v-for=\"(m, i) in curRoofs\" :key=\"m\" @click=\"selectRoofCommand(i)\"\r\n                  style=\"width: 250px; height: 98%; margin-right: 10px\" class=\"MLThumb\">\r\n                  <div class=\"Module_Thumb\" style=\"width: 100%; height: 100%\">\r\n                    <img :src=\"m.imgPath\" alt=\"\" />\r\n                    <div\r\n                      style=\" position: absolute; color: beige; text-align: center; top: 5px; left: 5px; z-index: 50; width: 60px; height: 25px; background: #d9d9d9; color: #696d6f; display: flex; justify-content: center; align-items: center; font-size: 13px; border-radius: 25px;\"\r\n                      class=\"onoffHover1\" v-if=\"m.isVisible == false\">\r\n                      Off\r\n                    </div>\r\n\r\n                    <div style=\"position: absolute; color: beige; text-align: center; top: 5px; left: 5px; z-index: 50; width: 60px; height: 25px; background: #696d6f; color: #d9d9d9; display: flex; justify-content: center;\r\n                        align-items: center; font-size: 13px; border-radius: 25px;\" class=\"onoffHover\"\r\n                      v-if=\"m.isVisible == true\">\r\n                      On\r\n                    </div>\r\n                    <div style=\"\r\n                        position: absolute;\r\n                        color: beige;\r\n                        text-align: center;\r\n                        top: 5px;\r\n                        left: 75px;\r\n                        z-index: 50;\r\n                        width: 60px;\r\n                        height: 25px;\r\n                        background: #d9d9d9;\r\n                        color: #696d6f;\r\n                        display: flex;\r\n                        justify-content: center;\r\n                        align-items: center;\r\n                        font-size: 13px;\r\n                        border-radius: 25px;\r\n                      \" v-if=\"!m.isOptionVisible\" class=\"onoffBtn1\" @click=\"selectOptionCommand(i, m, $event)\">\r\n                      Option\r\n                    </div>\r\n                    <div style=\"position: absolute; color: beige; text-align: center; top: 5px; left: 75px; z-index: 50; width: 60px; height: 25px; background: #696d6f; color: #d9d9d9; display: flex; justify-content: center;\r\n                        align-items: center; font-size: 13px; border-radius: 25px;\" v-if=\"m.isOptionVisible\"\r\n                      class=\"onoffBtn1\" @click=\"selectOptionCommand(i, m, $event)\">\r\n                      Option\r\n                    </div>\r\n                    <div class=\"Txt_Div\" style=\"\">\r\n                      <h3>{{ m.name }}</h3>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n            </div>\r\n\r\n            <div class=\"Module_List\" v-if=\"showADU\" style=\"align-items: center; \">\r\n              <p @click=\"selectAnimationCommand\" class=\"AnimateBtn\">\r\n                <span v-if=\"animButtonStatus('None')\">Animate</span>\r\n                <img v-if=\"animButtonStatus('Stop')\" src=\"../assets/images/icons/play.png\" alt=\"Play\" />\r\n                <img v-if=\"animButtonStatus('Run')\" src=\"../assets/images/icons/pause.png\" alt=\"Pause\" />\r\n              </p>\r\n\r\n              <div class=\"MLThumb_Wrap\">\r\n                <div v-for=\"(m, i) in curAdus\" :key=\"m\" @click=\"selectAduCommand(i)\"\r\n                  style=\"width: 250px; height: 98%; margin-right: 10px\" class=\"MLThumb\">\r\n                  <div class=\"Module_Thumb\" style=\"width: 100%; height: 100%\">\r\n                    <img :src=\"m.imgPath\" alt=\"\" />\r\n                    <div\r\n                      style=\"position: absolute; color: beige; text-align: center; top: 5px; left: 5px; z-index: 50; width: 60px; height: 25px; background: #d9d9d9; color: #696d6f; display: flex; justify-content: center; align-items: center; font-size: 13px; border-radius: 25px;\"\r\n                      class=\"onoffHover1\" v-if=\"m.isVisible == false\">\r\n                      Off\r\n                    </div>\r\n\r\n                    <div style=\"position: absolute; color: beige; text-align: center; top: 5px; left: 5px; z-index: 50; width: 60px; height: 25px; background: #696d6f; color: #d9d9d9; display: flex; justify-content: center;\r\n                        align-items: center; font-size: 13px; border-radius: 25px;\" class=\"onoffHover\"\r\n                      v-if=\"m.isVisible == true\">\r\n                      On\r\n                    </div>\r\n\r\n                    <div class=\"Txt_Div\" style=\"\">\r\n                      <h3>{{ m.name }}</h3>\r\n                    </div>\r\n                  </div>\r\n                </div>\r\n              </div>\r\n\r\n            </div>\r\n          </div>\r\n        </div>\r\n\r\n        <ThreeViewer :selectObj=\"resObj\" v-on:animCallBack=\"animCallBack\" />\r\n      </div>\r\n\r\n    </router-view>\r\n    <LogIn @childEvent=\"LoginChild\" @childEvent2=\"LoginChild2\" v-if=\"showEditPopup\" />\r\n  </div>\r\n</template>\r\n\r\n<style scoped>\r\n@import \"../assets/css/ViewerPage.css\";\r\n@import \"../assets/css/Responsive.css\";\r\n\r\n\r\n/* 3840 ~  / 가로형 */\r\n\r\n@media (min-width: 3840px) {\r\n  .Floor_Tit {\r\n    height: 45px;\r\n  }\r\n\r\n  .Floor_Tit p {\r\n    font-size: 1.2rem;\r\n  }\r\n\r\n  .Floor_Thumb .thumb {\r\n    top: 0;\r\n    width: 95%;\r\n    height: 180%;\r\n    object-fit: cover;\r\n    border: 5px solid #d9d9d9;\r\n    margin-bottom: 35px;\r\n    cursor: pointer !important;\r\n  }\r\n\r\n  .Floor_Thumb img {\r\n    top: 0;\r\n    width: 95%;\r\n    height: 180%;\r\n    object-fit: contain;\r\n    border: 5px solid #d9d9d9;\r\n    background: #fff;\r\n    cursor: pointer !important;\r\n    margin-bottom: 35px;\r\n  }\r\n}\r\n\r\n@media (max-width: 560px) {\r\n  .Floor_Thumb {\r\n    width: 100%;\r\n    grid-column: 2;\r\n    grid-row: 2;\r\n    display: grid;\r\n    grid-template-rows: 5px 17px 70px;\r\n    flex-wrap: nowrap;\r\n    overflow-x: scroll;\r\n    cursor: pointer;\r\n  }\r\n\r\n  .Floor_Thumb .thumb {\r\n    grid-row: 3;\r\n    object-fit: cover;\r\n    border: 3px solid #d9d9d9;\r\n    width: 140px;\r\n    height: 85px;\r\n    margin-right: 15px;\r\n    cursor: pointer !important;\r\n  }\r\n\r\n  .Floor_Thumb img {\r\n    grid-row: 3;\r\n    object-fit: contain;\r\n    border: 3px solid #d9d9d9;\r\n    width: 140px;\r\n    height: 85px;\r\n    margin-right: 15px;\r\n    cursor: pointer !important;\r\n  }\r\n\r\n  .Floor_Tit {\r\n    grid-row: 2;\r\n    width: 30%;\r\n    display: flex;\r\n    justify-content: center;\r\n    align-items: center;\r\n  }\r\n\r\n  .Floor_Tit p {\r\n    font-size: 7px;\r\n    margin-top: 2px;\r\n  }\r\n}\r\n</style>\r\n\r\n<script>\r\nimport ThreeViewer from \"../components/ThreeViewer.vue\";\r\nimport axios from \"axios\";\r\nimport LogIn from \"../components/LogIn.vue\";\r\nimport Cookies from 'js-cookie';\r\nimport Header from './essential/headerTemplate.vue'\r\n\r\nexport default {\r\n  metaInfo: {\r\n    title: \"Xigeist Home Configurator\",\r\n    titleTemplate: \"ViewerPage\",\r\n    htmlAttrs: {\r\n      lang: \"ko\",\r\n      amp: true,\r\n    },\r\n  },\r\n\r\n  components: {\r\n    ThreeViewer,\r\n    LogIn,\r\n    Header\r\n  },\r\n\r\n  data() {\r\n    return {\r\n      showMdD: true,\r\n      showMd: true,\r\n      showRF: false,\r\n      showADU: false,\r\n      showEx: false,\r\n      showFP: false,\r\n      hide: true,\r\n      selectFp: null,\r\n      mFloor: \"\",\r\n      mRooms: \"\",\r\n      mBath: \"\",\r\n\r\n      typeName: \"\",\r\n      curType: {},\r\n      curModules: [],\r\n      curRoofs: [],\r\n      curAdus: [],\r\n      resObj: {},\r\n\r\n      is2f: false,\r\n      isAdu: false,\r\n      animState: \"None\",\r\n      showEditPopup: false,\r\n      showMyPage: false,\r\n      userIdx: \"\",\r\n      userName: \"\"\r\n    };\r\n  },\r\n  async created() {\r\n    await this.getToken();\r\n  },\r\n  async beforeRouteEnter(to, from, next) {\r\n    const typeName = to.params.typeName;\r\n    const response = await axios.get(\"../../Types.json\");\r\n    const curType = response.data.find((x) => x.name == typeName);\r\n    if (curType === undefined) {\r\n      next(\"/Error\");\r\n    } else {\r\n      next();\r\n    }\r\n  },\r\n  mounted() {\r\n    this.sliderInit();\r\n    this.typeName = this.$route.params.typeName;\r\n    this.initailType(this.typeName);\r\n    document.title = `${this.typeName} | Home Self-Design System | XiGEIST`;\r\n  },\r\n  methods: {\r\n    clickMyPage() {\r\n      //this.showMyPage = !this.showMyPage;\r\n      if (this.userName != '') {\r\n        this.showMyPage = !this.showMyPage;\r\n      } else {\r\n        //window.location.href = this.$TARGETURL + \"member/login\";\r\n        this.onClickEditPopup2();\r\n      }\r\n    },\r\n    async getToken() {\r\n      const cookie = Cookies.get('token');\r\n      let data = {\r\n        token: cookie == undefined ? '' : cookie\r\n      }\r\n      const res = await axios.post(\"/server/token_check\", JSON.stringify(data), {\r\n        headers: { 'Content-Type': 'application/json' }\r\n      });\r\n      if (data.token == '') { //토큰 자체가 없으면 걍 로그인 안된거\r\n\r\n      }\r\n      else if (res.data._data[\"length\"] == 0) { // 토큰이 변경됐으면\r\n        alert(\"다른 계정 로그인으로 인해 로그아웃됩니다\");\r\n        Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n        Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n        this.userIdx = '';\r\n        this.userName = '';\r\n        this.showMyPage = false; //마이페이지 닫음\r\n        window.location.reload();\r\n      }\r\n\r\n      else if (res.status == 200) {\r\n        this.userIdx = res.data._data[0][\"idx\"];\r\n        this.userName = res.data._data[0][\"NAME\"];\r\n        //this.showMyPage=true;\r\n      }\r\n    },\r\n    logout() {\r\n      alert(\"로그아웃 합니다\");\r\n      if (this.userCode == 1) {\r\n        console.log(\"카카오로그아웃\");\r\n        this.kakaoLogout();\r\n      }\r\n      Cookies.remove('token', { domain: this.$DOMAIN, path: '/'});\r\n      Cookies.remove('token', { domain: this.$DOMAIN, path: '/member'});\r\n      this.userIdx = '';\r\n      this.userName = '';\r\n      this.showMyPage = false;\r\n      window.location.reload();\r\n    },\r\n    sliderInit() {\r\n      const slider = document.querySelector(\".MLThumb_Wrap\");\r\n      let isDown = false;\r\n      let startX;\r\n      let scrollLeft;\r\n\r\n      slider.addEventListener(\"mousedown\", (e) => {\r\n        isDown = true;\r\n        slider.classList.add(\"active\");\r\n        startX = e.pageX - slider.offsetLeft;\r\n        scrollLeft = slider.scrollLeft;\r\n      });\r\n\r\n      slider.addEventListener(\"mouseleave\", () => {\r\n        isDown = false;\r\n        slider.classList.remove(\"active\");\r\n      });\r\n\r\n      slider.addEventListener(\"mouseup\", () => {\r\n        isDown = false;\r\n        slider.classList.remove(\"active\");\r\n      });\r\n\r\n      slider.addEventListener(\"mousemove\", (e) => {\r\n        if (!isDown) return;\r\n        e.preventDefault();\r\n        const x = e.pageX - slider.offsetLeft;\r\n        const walk = x - startX;\r\n        slider.scrollLeft = scrollLeft - walk;\r\n      });\r\n    },\r\n    closeSel(event) {\r\n      var currentCli = document.getElementById(\"sellineName\");\r\n      if (currentCli) {\r\n        if (!currentCli.contains(event.target)) {\r\n          //    id sellineName     ,\r\n          this.listLineUl = false;\r\n        }\r\n      }\r\n    },\r\n    async initailType(typeName) {\r\n      const response = await axios.get(\"../../Types.json\");\r\n      this.curType = response.data.find((x) => x.name == typeName);\r\n      this.ListInit();\r\n      this.curModules = this.curType.modules;\r\n      this.curRoofs = this.curType.roofs;\r\n      if (this.curType.name == \"ADU\") {\r\n        this.isAdu = true;\r\n        this.curAdus.push(this.aduItemCreate(response, \"Proto17S\", \"1F_Module2\")); // test\r\n        this.curAdus.push(this.aduItemCreate(response, \"Proto25S\", \"1F_Module1\"));\r\n        this.curAdus.push(this.aduItemCreate(response, \"Proto33S\", \"1F_Module4\"));\r\n        this.curAdus.push(this.aduItemCreate(response, \"Proto43D\", \"2F_Module4\"));\r\n        this.curAdus.push(this.aduItemCreate(response, \"Proto63D\", \"2F_Module1\"));\r\n      }\r\n      this.resObj = { commandString: \"InitType\", curType: this.curType, aduTypes: this.curAdus };\r\n\r\n      this.mFloor = `${this.curType.floor}-Story`;\r\n      this.mRooms = `${this.curType.roomCnt}-Bed`;\r\n      this.mBath = `${this.curType.bathRoomCnt}-Bath`;\r\n      if (this.curType.floor == 2) {\r\n        this.is2f = true;\r\n      }\r\n    },\r\n    ListInit() {\r\n      //objects 분배\r\n      this.curType.objects.forEach((o) => {\r\n        if (o.type === \"Module\" || o.type === \"ModuleOption\") {\r\n          this.curType.modules.push(o);\r\n        } else if (o.type === \"Roof\") {\r\n          this.curType.roofs.push(o);\r\n        } else if (o.type === \"Exterior\") {\r\n          this.curType.exteriors.push(o);\r\n        } else if (o.type === \"Option\") {\r\n          this.curType.options.push(o);\r\n        }\r\n      });\r\n    },\r\n    showTypeCommand() {\r\n      this.resObj = { commandString: \"ShowType\" };\r\n    },\r\n    selectModuleCommand(moduleName, e) {\r\n      this.resObj = { commandString: \"ShowModule\", moduleName: moduleName };\r\n    },\r\n    selectRoofCommand(i) {\r\n      this.resObj = { commandString: \"ShowRoof\", index: i + 1 };\r\n    },\r\n    selectOptionCommand(i, m, e) {\r\n      e.stopPropagation();\r\n      if (m.isVisible) {\r\n        this.resObj = { commandString: \"ShowOption\", index: i + 1 };\r\n      }\r\n    },\r\n    selectAduCommand(i) {\r\n      this.resObj = { commandString: \"ShowAdu\", index: i + 1 };\r\n    },\r\n    selectAnimationCommand() {\r\n      if (this.animState === \"None\") {\r\n        this.animState = \"Run\";\r\n      }\r\n      else if (this.animState === \"Run\") {\r\n        this.animState = \"Stop\";\r\n      }\r\n      else if (this.animState === \"Stop\") {\r\n        this.animState = \"Run\";\r\n      }\r\n\r\n      let curMenu = \"Roof\";\r\n      if (this.showMd) {\r\n        curMenu = \"Module\";\r\n      }\r\n      else if (this.showADU) {\r\n        curMenu = \"ADU\"\r\n      }\r\n      this.resObj = { commandString: \"ShowAnimation\", state: this.animState, curMenu: curMenu };\r\n    },\r\n    animCallBack() {\r\n      this.animState = \"None\";\r\n      this.resObj = { commandString: \"ShowAnimation\", state: this.animState, curMenu: \"Roof\" };\r\n    },\r\n    async navBackCommand() {\r\n      if (this.global.typeHistory === undefined) {\r\n        await this.$router.push({\r\n          name: \"PageSection\",\r\n          params: { typeName: \"type2\" },\r\n        });\r\n      } else {\r\n        await this.$router.push({\r\n          name: \"PageSection\",\r\n          params: { typeName: this.global.typeHistory },\r\n        });\r\n      }\r\n      this.global.moduleHistory = this.typeName;\r\n    },\r\n    showType: function () {\r\n      this.openType = !this.openType;\r\n    },\r\n    openRF: function () {\r\n      this.showRF = true;\r\n      this.showMd = false;\r\n      this.showADU = false;\r\n    },\r\n    openMd: function () {\r\n      this.showMd = true;\r\n      this.showMdD = false;\r\n      this.showRF = false;\r\n      this.showADU = false;\r\n    },\r\n    openADU: function () {\r\n      this.showADU = true;\r\n      this.showMd = false;\r\n      this.showMdD = false;\r\n      this.showRF = false;\r\n    },\r\n    openFPop: function (img) {\r\n      this.showFP = true;\r\n      this.selectFp = img;\r\n    },\r\n    closeFP: function () {\r\n      this.showFP = false;\r\n    },\r\n\r\n    onClickRedirect: function () {\r\n      window.open(\"https://www.xigeist.com\", \"_blank\");\r\n    },\r\n    onClickRedirect2: function () {\r\n      window.open(\"http://xigeist.bimpeers.com/\", \"_blank\");\r\n    },\r\n    animButtonStatus(status) {\r\n      if (status === this.animState) {\r\n        return true;\r\n      }\r\n      return false;\r\n    },\r\n    aduItemCreate(response, itemName, aduName) {\r\n      const item = JSON.parse(JSON.stringify(response.data.find((x) => x.name == itemName)));\r\n      const aduModel = {};\r\n      aduModel.name = itemName;\r\n      aduModel.imgPath = `../models/ADU/example/${itemName}/img/RF_Roof.png`;\r\n      aduModel.isVisible = false;\r\n      aduModel.aduName = aduName;\r\n      aduModel.objects = [];\r\n\r\n      item.objects.forEach(element => {\r\n        if (element.name == aduName) {\r\n          element.name += \"ADU\";\r\n          aduModel.objects.push(element);\r\n        }\r\n        else if (element.type == \"Module\" || element.type == \"Base\") {\r\n          aduModel.objects.push(element);\r\n        }\r\n        else if (element.type == \"Option\") {\r\n          const str = element.name.split(\"_\")[0];\r\n          if (str.indexOf(1) > -1) {\r\n            aduModel.objects.push(element);\r\n          }\r\n        }\r\n        else if (element.type == \"Exterior\" || element.type == \"Roof\") {\r\n          const str = element.name.split(\"_\")[1];\r\n          if (str.indexOf(1) > -1) {\r\n            aduModel.objects.push(element);\r\n          }\r\n        }\r\n      });\r\n      return aduModel;\r\n    },\r\n    onClickEditPopup() { // 편집하기 팝업 on\r\n      // if (this.userName != '') { // 로그인 돼있으면 이동\r\n      //   console.log(this.$TARGETURL);\r\n      //   window.location.href = this.$TARGETURL + this.typeName;\r\n      // }\r\n      // else { // 로그인 안 돼있으면 로그인하라는 팝업\r\n      //   console.log(this.showEditPopup);\r\n      //   this.showEditPopup = true;\r\n      //   this.goEditPage = true;\r\n      // }\r\n      window.location.href = this.$TARGETURL + this.typeName;\r\n    },\r\n    onClickEditPopup2() {\r\n      this.showEditPopup = true;\r\n    },\r\n    closeEditPop() { //편집하기 팝업 off\r\n      this.showPopup = false;\r\n    },\r\n    LoginChild() {\r\n      this.getToken();\r\n      this.showEditPopup = false;\r\n      console.log(this.showEditPopup);\r\n      if (this.goEditPage) {\r\n        this.goEditPage = false;\r\n        window.location.href = this.$TARGETURL + this.typeName;\r\n      }\r\n    },\r\n    LoginChild2() {\r\n      this.showEditPopup = false;\r\n    },\r\n    kakaoLogout() {\r\n      window.Kakao.API.request({\r\n        url: '/v1/user/unlink',\r\n        success: function (response) {\r\n          console.log(response);\r\n          document.cookie = \"token=\" + \"\";\r\n          //alert(\"로그아웃 되었어용\");\r\n        },\r\n        fail: function (error) {\r\n          console.log(error);\r\n        },\r\n      });\r\n    },\r\n\r\n  },\r\n\r\n};\r\n</script>\r\n","<template>\r\n  <div class=\"AnimateViewer_Div\">\r\n    <div class=\"progress-bar-container\">\r\n      <label for=\"progress-bar\">Loading...</label>\r\n      <progress id=\"progress-bar\" value=\"0\" max=\"100\"></progress>\r\n    </div>\r\n    <div id=\"ThreeCanvas\" style=\"grid-row: 2; width: 100%; height: 100%; background: rgb(223, 217, 208); grid-column: 2;\"></div>\r\n  </div>\r\n</template>\r\n\r\n<style scoped>\r\n.progress-bar-container {\r\n  position: absolute;\r\n  left: 50%;\r\n  top: 50%;\r\n  transform: translate(-50%, -50%); \r\n \r\n  width: 100vw;\r\n  height: 100vh;\r\n  background-color: rgba(0, 0, 0, 0.8);\r\n  display: flex;\r\n  flex-direction: column;\r\n  justify-content: center;\r\n  align-items: center;\r\n  z-index: 1000;\r\n}\r\n\r\n#progress-bar {\r\n  width: 15%;\r\n  margin-top: 0.5%;\r\n  height: 1%;\r\n  display: flex;\r\n}\r\nlabel {\r\n  color: white;\r\n  font-size: 1rem;\r\n}\r\n</style>\r\n\r\n<script>\r\nimport ThreeView from \"../script/ThreeView\";\r\nimport ThreeAnim from \"@/script/ThreeAnim\";\r\nimport { nextTick } from \"@vue/runtime-core\";\r\n\r\nconst threeView = new ThreeView();\r\nconst anims = [];\r\n\r\nexport default {\r\n  props: {\r\n    selectObj: {},\r\n  },\r\n  data() {\r\n    return {\r\n      isInit: false,\r\n      animState : \"None\",\r\n    };\r\n  },\r\n  async mounted() {\r\n    threeView.Init();\r\n    this.threeRender();\r\n\r\n    window.onresize = async function () {\r\n      const width = threeView.threeCanvas.offsetWidth;\r\n      const height = threeView.threeCanvas.offsetHeight;\r\n      threeView.camera.aspect = width / height;\r\n      threeView.camera.updateProjectionMatrix();\r\n      threeView.renderer.setSize(width, height);\r\n    };\r\n\r\n    nextTick(async () => {});\r\n  },\r\n  watch: {\r\n    selectObj() {\r\n      if(this.selectObj.commandString != \"ShowAnimation\" && this.animState != \"None\")\r\n      {\r\n        anims.forEach((anim)=>{anim.EndAnim();});\r\n        this.$emit(\"animCallBack\");\r\n      }\r\n\r\n      if (this.selectObj.commandString === \"InitType\") {\r\n        const curType = this.selectObj.curType;\r\n        const aduTypes = this.selectObj.aduTypes;\r\n        threeView.LoadType(curType);\r\n        threeView.LoadAduType(aduTypes);\r\n        this.isInit = true;\r\n      } else if (this.selectObj.commandString === \"ShowType\") {\r\n        threeView.SetAllVisible(false);\r\n        threeView.ShowType(threeView.curType.initRoof);\r\n      } else if (this.selectObj.commandString == \"ShowModule\") {\r\n        const moduleName = this.selectObj.moduleName;\r\n        if (this.isInit == true) {\r\n          threeView.SceneClean(false);\r\n          threeView.curType.objects.forEach((o) => {\r\n            if (o.name === moduleName) {\r\n              o.isVisible = true;\r\n              return;\r\n            }\r\n            o.isVisible = false;\r\n          });\r\n          this.isInit = false;\r\n          threeView.SceneUpdate();\r\n        } else {\r\n          threeView.SceneClean(false);\r\n          const obj = threeView.curType.objects.find((x) => x.name === moduleName);\r\n          obj.isVisible = !obj.isVisible;\r\n          threeView.SceneUpdate();\r\n        }\r\n      } else if (this.selectObj.commandString == \"ShowRoof\") {\r\n        threeView.ShowType(this.selectObj.index);\r\n        this.isInit = false;\r\n      } else if (this.selectObj.commandString == \"ShowOption\") {\r\n        threeView.ShowOption(this.selectObj.index);\r\n        this.isInit = false;\r\n      }else if (this.selectObj.commandString == \"ShowAdu\") {\r\n        threeView.ShowAdu(this.selectObj.index);\r\n        this.isInit = false;\r\n      } else if (this.selectObj.commandString == \"ShowAnimation\") {\r\n        if(this.animState === \"None\" && this.selectObj.state === \"Run\")\r\n        {\r\n          threeView.SceneClean(false);\r\n          this.SetAnimation(this.selectObj.curMenu);\r\n          this.isInit = true;\r\n        }\r\n        this.animState = this.selectObj.state;\r\n      }\r\n    },\r\n  },\r\n  methods: {\r\n    SetAnimation(curMenu) {\r\n      if(anims.length > 0)\r\n      {\r\n        anims.forEach((anim) => {\r\n          anim.ClearModel();\r\n        });\r\n      }\r\n      let isOptionEnable = true;\r\n      threeView.curType.roofs.forEach(o=>{\r\n        if(o.isVisible)\r\n        {\r\n          isOptionEnable = o.isOptionVisible;\r\n        }\r\n      });\r\n      threeView.curType.objects.forEach(o => {\r\n        o.isVisible = false;\r\n      });\r\n      anims.length = 0;\r\n\r\n      let objects = [];\r\n      if(curMenu === \"Roof\")\r\n      {\r\n        threeView.ShowType(threeView.curIndex);\r\n        if(!isOptionEnable)\r\n        {\r\n          threeView.ShowOption(threeView.curIndex);\r\n        }\r\n        threeView.SceneClean(false);\r\n        objects = threeView.curType.objects.sort((a, b) => {\r\n          return a.order - b.order;\r\n        });\r\n      }\r\n      else if(curMenu === \"Module\")\r\n      {\r\n        threeView.curType.modules.forEach(m => {\r\n          if(m.type == \"Module\")\r\n          {\r\n            m.isVisible = true;\r\n          }\r\n        });\r\n        threeView.SceneClean(false);\r\n        objects = threeView.curType.modules.sort((a, b) => {\r\n          return a.order - b.order;\r\n        });\r\n      }\r\n      else if(curMenu === \"ADU\")\r\n      {\r\n        if(threeView.curAdu == null)\r\n        {\r\n          threeView.curAdu = threeView.aduTypes[0];\r\n          threeView.curAdu.isVisible = true;\r\n        }\r\n        threeView.SceneClean(false);\r\n        objects = threeView.curAdu.objects.sort((a, b) => {\r\n          return a.order - b.order;\r\n        });\r\n      }\r\n\r\n      if(curMenu === \"ADU\")\r\n      {\r\n        objects.forEach((o) => {\r\n          const instance = threeView.aduMap.get(threeView.curAdu.name+o.name);\r\n          const anim = new ThreeAnim(o.name, instance);\r\n          anims.push(anim);\r\n        });\r\n      }\r\n      else\r\n      {\r\n        objects.forEach((o) => {\r\n          if (o.isVisible == false) {\r\n            return;\r\n          }\r\n          const instance = threeView.moduleMap.get(o.name);\r\n          const anim = new ThreeAnim(o.name, instance);\r\n          anims.push(anim);\r\n        });\r\n      }\r\n      \r\n      anims.forEach((anim) => {\r\n        if (anim.name.indexOf(\"Base\") > -1) {\r\n          anim.CreateModel(threeView.scene, 0);\r\n        } else {\r\n          anim.CreateModel(threeView.scene, 10000);\r\n        }\r\n      });\r\n      return;\r\n    },\r\n    isAnimationEnd()\r\n    {\r\n      if(anims.length < 1)\r\n      {\r\n        this.$emit(\"animCallBack\");\r\n        return;\r\n      }\r\n      if(this.animState != \"None\")\r\n      {\r\n        let isEnd = true;\r\n        anims.forEach((anim) => {\r\n          if(!anim.isComplate)\r\n          {\r\n            isEnd = false;\r\n          }\r\n        });\r\n\r\n        if(isEnd)\r\n        {\r\n          this.$emit(\"animCallBack\");\r\n        }\r\n      }\r\n    },\r\n    threeRender()\r\n    {\r\n      if(this.animState === \"Run\")\r\n      {\r\n        for(let i = 0; i<anims.length; i++)\r\n        {\r\n          const anim = anims[i];\r\n          if(!anim.isComplate)\r\n          {\r\n            anim.isCreate = true;\r\n            anim.module.visible = true;\r\n            anim.StartAnimation(0);\r\n            break;\r\n          }\r\n        }\r\n      }\r\n      this.isAnimationEnd();\r\n      requestAnimationFrame(this.threeRender);\r\n      threeView.controls.update();\r\n      threeView.renderer.render(threeView.scene, threeView.camera);\r\n    },\r\n  },\r\n};\r\n</script>\r\n\r\n","import * as THREE from 'three';\r\nimport { OrbitControls } from 'three/examples/jsm/controls/OrbitControls'\r\nimport { RGBELoader } from 'three/examples/jsm/loaders/RGBELoader'\r\nimport { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader'\r\n\r\nexport default class ThreeView{\r\n\r\n    constructor(modules)\r\n    {\r\n        this.modules = modules\r\n        this.moduleMap = new Map()\r\n        this.aduMap = new Map()\r\n        this.isLoaded = false;\r\n        this.selectType = null;\r\n        this.curType = null;\r\n        this.aduTypes = null;\r\n        this.curAdu = null;\r\n        this.curIndex = 1;\r\n    }\r\n\r\n    Init()\r\n    {\r\n        this.InitailSetting();\r\n        this.InitailLoad();\r\n    }\r\n\r\n    InitailSetting()\r\n    {\r\n        this.threeCanvas = document.getElementById('ThreeCanvas');\r\n        this.scene = new THREE.Scene();\r\n        const width = this.threeCanvas.offsetWidth;\r\n        const height = this.threeCanvas.offsetHeight;\r\n        //this.camera = new THREE.OrthographicCamera(width / - 2, width / 2, height / 2, height / - 2, 100, 1000000 );\r\n        this.camera = new THREE.PerspectiveCamera(75, this.threeCanvas.offsetWidth / this.threeCanvas.offsetHeight, 100, 100000)\r\n        //this.camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 1000);\r\n        this.renderer = new THREE.WebGLRenderer({ antialias: true });\r\n        this.controls = new OrbitControls(this.camera, this.renderer.domElement);\r\n        this.controls.maxDistance = 25000;\r\n        this.controls.minDistance = 5000;\r\n        this.controls.minPolarAngle = 0;\r\n        this.controls.maxPolarAngle = Math.PI/2.2;\r\n        this.loadManager = new THREE.LoadingManager();\r\n        this.gltfLoader = new GLTFLoader(this.loadManager);\r\n        this.rgbeLoader = new RGBELoader(this.loadManager);\r\n\r\n        this.renderer.setSize( this.threeCanvas.offsetWidth, this.threeCanvas.offsetHeight);\r\n        this.renderer.shadowMap.enabled = true;\r\n        this.renderer.shadowMap.autoUpdate = true;\r\n        this.renderer.shadowMap.type = THREE.PCFSoftShadowMap; \r\n        this.renderer.setPixelRatio( window.devicePixelRatio );\r\n        this.renderer.toneMapping = THREE.ACESFilmicToneMapping;\r\n        this.renderer.toneMappingExposure = 1;\r\n        this.renderer.outputEncoding = THREE.sRGBEncoding;\r\n        this.renderer.setClearColor(0x000000, 0.0);\r\n        // const plane = new THREE.Plane( new THREE.Vector3( 0, - 1, 0 ), 2000 );\r\n        // this.renderer.clippingPlanes.push(plane);      \r\n        // this.renderer.localClippingEnabled = true;\r\n\r\n        this.controls.enableDamping = true\r\n        this.controls.target.set(0, 1, 0)\r\n\r\n        this.intensity = 1;\r\n        this.lightColor = 0xFFFFFF;\r\n        this.bias = -0.001;\r\n\r\n        this.directionalLight = new THREE.DirectionalLight(this.lightColor, this.intensity);\r\n        this.directionalLight.position.set(10000,20000,10000)\r\n        this.directionalLight.castShadow = true\r\n        this.directionalLight.shadow.mapSize.width = 6144;\r\n        this.directionalLight.shadow.mapSize.height = 6144;\r\n        const d = 80000;\r\n        this.directionalLight.shadow.camera.left = - d;\r\n        this.directionalLight.shadow.camera.right = d;\r\n        this.directionalLight.shadow.camera.top = d;\r\n        this.directionalLight.shadow.camera.bottom = - d;\r\n        this.directionalLight.shadow.camera.near = 75;\r\n        this.directionalLight.shadow.camera.far = 100000;\r\n        this.directionalLight.shadow.antialias = true;\r\n        this.directionalLight.shadow.bias = this.bias;\r\n\r\n        this.rightLight = new THREE.DirectionalLight( this.lightColor );\r\n        this.rightLight.position.set(40000,40000,0);\r\n        this.rightLight.intensity = this.intensity;\r\n\r\n        this.leftLight = new THREE.DirectionalLight( this.lightColor );\r\n        this.leftLight.position.set(-40000,40000,0);\r\n        this.leftLight.intensity = this.intensity;\r\n\r\n        this.backLight = new THREE.DirectionalLight( this.lightColor );\r\n        this.backLight.position.set(0,40000,-40000);\r\n        this.backLight.intensity = 1;\r\n        this.backLight.castShadow = false;\r\n\r\n        this.upLight = new THREE.DirectionalLight( this.lightColor );\r\n        this.upLight.position.set(0,-40000,-40000);\r\n        this.upLight.intensity = 1;\r\n        this.upLight.castShadow = false;\r\n        // this.helper = new THREE.DirectionalLightHelper( this.directionalLight, 5 );\r\n\r\n        // this.directionalLight.position.set(0,10000,-10000);\r\n        this.helper = new THREE.DirectionalLightHelper( this.directionalLight, 5 );\r\n        \r\n\r\n        this.threeCanvas.appendChild(this.renderer.domElement);\r\n    }\r\n\r\n    // CreateGround(width,height,x,y)\r\n    // {\r\n    //     this.ground = new THREE.Mesh(new THREE.PlaneGeometry(width, height, 32), new THREE.MeshStandardMaterial({ color: 0x131313}));\r\n    //     this.ground.rotation.x = - Math.PI / 2\r\n    //     this.ground.receiveShadow = true\r\n    //     this.ground.material.shininess = 0\r\n    //     this.ground.position.set(x,0,y);\r\n    //     this.scene.add(this.ground);\r\n    // }\r\n\r\n    InitailLoad()\r\n    {\r\n        const progressBarContainer = document.querySelector('.progress-bar-container');\r\n        const progressBar = document.getElementById('progress-bar');\r\n        \r\n        this.loadManager.onStart = async function()\r\n        {\r\n            progressBarContainer.style.display = 'flex';\r\n        }\r\n        this.loadManager.onProgress = function(url,loaded,total){\r\n            progressBar.value = (loaded/total) * 100;\r\n        }\r\n        this.loadManager.onLoad = function(){\r\n            progressBarContainer.style.display = 'none';\r\n        }\r\n\r\n        //Scene Load\r\n        this.rgbeLoader.setPath( '../../textures/' ).loadAsync('limpopo_golf_course_1k.hdr')\r\n        .then(texture=>{\r\n            texture.mapping = THREE.EquirectangularReflectionMapping;\r\n            this.scene.environment = texture;\r\n            //this.scene.background = texture;\r\n        });\r\n    }\r\n\r\n    SceneClean(isCameraClean = true)\r\n    {\r\n        this.scene.clear();\r\n        this.scene.add(this.rightLight);\r\n        this.scene.add(this.leftLight);\r\n        this.scene.add(this.backLight);\r\n        this.scene.add(this.directionalLight);\r\n        this.scene.add(this.upLight);\r\n        //this.scene.add( this.helper );\r\n        //this.scene.add(this.ground);\r\n        \r\n        if(isCameraClean)\r\n        {\r\n            this.controls.target.set(0, 1, 0)\r\n            this.camera.castShadow = true;\r\n            this.camera.position.set(0, 18000, 45000);\r\n            this.camera.lookAt(new THREE.Vector3(0,0,0));\r\n        }\r\n    }\r\n\r\n    SceneUpdate()\r\n    {\r\n        this.curType.objects.forEach(o=>{\r\n            if(o.isVisible === true)\r\n            {\r\n                this.scene.add(this.moduleMap.get(o.name));\r\n            }\r\n        });\r\n    }\r\n\r\n    async LoadObjectAsync(typeName,obj,map)\r\n    {\r\n        this.gltfLoader.loadAsync(`../../models/${typeName}/gltf/${obj.name}.gltf`).then(object=>{\r\n            const instance = object.scene.clone()\r\n            instance.receiveShadow = true;\r\n            instance.castShadow = true;\r\n            instance.position.x = 0;\r\n            instance.position.y = 0;\r\n            instance.position.z = 0;\r\n\r\n            instance.traverse(function (child) {\r\n                if (child.isMesh) {\r\n                  child.castShadow = true;\r\n                  child.receiveShadow = true;\r\n                  const material = child.material;\r\n                  material.onBeforeCompile = function( shader ) {\r\n                    shader.fragmentShader = shader.fragmentShader.replace(\r\n                        '#include <output_fragment>',\r\n                        `vec3 backfaceColor = vec3( 0.2, 0.2, 0.2);\r\n                        gl_FragColor = ( gl_FrontFacing ) ? vec4( outgoingLight, diffuseColor.a ) : vec4( backfaceColor, opacity );`\r\n                    )\r\n                };\r\n                material.side = THREE.DoubleSide;\r\n                }\r\n             });\r\n             obj.isVisible = false;\r\n             map.set(obj.name,instance)\r\n        });\r\n    }\r\n\r\n    AddScene(modelue)\r\n    {\r\n        this.scene.add(this.moduleMap.get(modelue.name));\r\n        modelue.isVisible = true;\r\n    }\r\n\r\n    ShowType(index)\r\n    {\r\n        this.curIndex = index;\r\n        this.SceneClean(false);console.log(this.curType,this.moduleMap)\r\n        const target = this.curType.roofs.find(x=>x.name.split(\"_\")[1].indexOf(index) > -1);\r\n        const base = this.curType.objects.find(o=>o.type === \"Base\")\r\n        if(base != undefined)\r\n        {\r\n            this.AddScene(base);\r\n        }\r\n        \r\n        if(target.isVisible == false)\r\n        {\r\n            this.curType.modules.forEach(o=>{\r\n                if(o.type === \"ModuleOption\")\r\n                {\r\n                    o.isVisible = false;\r\n                }\r\n                else\r\n                {\r\n                    this.AddScene(o);\r\n                }\r\n            });\r\n        }\r\n        else\r\n        {\r\n            if(base != undefined)\r\n            {\r\n                base.isVisible = false;\r\n            }\r\n        }\r\n        \r\n        let ret = false;\r\n        this.curType.roofs.forEach(o=>{\r\n            const str = o.name.split(\"_\")[1];\r\n            if(str.indexOf(index) > -1)\r\n            {\r\n                o.isVisible = !o.isVisible;\r\n                o.isOptionVisible = o.isVisible;\r\n                ret = o.isOptionVisible;\r\n            }\r\n            else{\r\n                o.isVisible = false;\r\n                o.isOptionVisible = false;\r\n            }\r\n        });\r\n        this.curType.exteriors.forEach(o=>{\r\n            const str = o.name.split(\"_\")[1];\r\n            if(str.indexOf(index) > -1)\r\n            {\r\n                o.isVisible = !o.isVisible;\r\n            }\r\n            else{\r\n                o.isVisible = false;\r\n            }\r\n        });\r\n        this.curType.options.forEach(o=>{\r\n            const str = o.name.split(\"_\")[0];\r\n            \r\n            if(str.indexOf(index) > -1)\r\n            {\r\n                o.isVisible = ret;\r\n            }\r\n            else{\r\n                o.isVisible = false;\r\n            }\r\n        });\r\n        this.SceneUpdate();\r\n    }\r\n\r\n    ShowOption(index)\r\n    {\r\n        if(!this.curType?.options)\r\n            return;\r\n\r\n        this.SceneClean(false);\r\n\r\n        let ret = false;\r\n        const zero = this.curType.options.find(x=>x.name == 'Option0');\r\n        this.curType.options.forEach(o=>{\r\n            const str = o.name.split(\"_\")[0];\r\n            \r\n            if(str.indexOf(index) > -1)\r\n            {\r\n                o.isVisible = !o.isVisible;\r\n                ret = o.isVisible;\r\n                zero.isVisible = !o.isVisible;\r\n            }\r\n            else{\r\n                o.isVisible = false;\r\n            }\r\n        });\r\n\r\n        this.curType.roofs.forEach(o=>{\r\n            const str = o.name.split(\"_\")[1];\r\n            if(str.indexOf(index) > -1)\r\n            {\r\n                o.isOptionVisible = ret;\r\n            }\r\n            else{\r\n                o.isOptionVisible = false;\r\n            }\r\n        });\r\n        console.log(this.curType)\r\n        this.SceneUpdate();\r\n    }\r\n\r\n    ShowAdu(index)\r\n    {\r\n        const aduType = this.aduTypes[index-1];\r\n        this.curAdu = aduType;\r\n        if(aduType.isVisible)\r\n        {\r\n            aduType.isVisible = false;\r\n            this.SceneClean();\r\n        }\r\n        else\r\n        {\r\n            this.aduTypes.forEach((type)=>{type.isVisible = false});\r\n            aduType.isVisible = true;\r\n            this.SceneClean();\r\n            aduType.objects.forEach(element => {\r\n                this.scene.add(this.aduMap.get(aduType.name+element.name));\r\n            });\r\n        }\r\n    }\r\n\r\n    LoadType(curType)\r\n    {\r\n        this.curType = curType;\r\n        //this.CreateGround(this.curType.groundWidth,this.curType.groundHeight,this.curType.groundOffsetX,this.curType.groundOffsetY);\r\n        this.SceneClean();\r\n        curType.objects.forEach(o=>{this.LoadObjectAsync(curType.name,o,this.moduleMap);});\r\n    }\r\n\r\n    LoadAduAsync(aduType)\r\n    {\r\n        this.gltfLoader.loadAsync(`../../models/ADU/example/${aduType.name}/gltf/${aduType.aduName}ADU.gltf`).then(object=>{\r\n            const instance = object.scene.clone()\r\n            instance.receiveShadow = true;\r\n            instance.castShadow = true;\r\n            instance.position.x = 0;\r\n            instance.position.y = 0;\r\n            instance.position.z = 0;\r\n\r\n            instance.traverse(function (child) {\r\n                if (child.isMesh) {\r\n                  child.castShadow = true;\r\n                  child.receiveShadow = true;\r\n                  const material = child.material;\r\n                  material.onBeforeCompile = function( shader ) {\r\n                    shader.fragmentShader = shader.fragmentShader.replace(\r\n                        '#include <output_fragment>',\r\n                        `vec3 backfaceColor = vec3( 0.2, 0.2, 0.2);\r\n                        gl_FragColor = ( gl_FrontFacing ) ? vec4( outgoingLight, diffuseColor.a ) : vec4( backfaceColor, opacity );`\r\n                    )\r\n                };\r\n                material.side = THREE.DoubleSide;\r\n                }\r\n             });\r\n             this.aduMap.set(`${aduType.name}${aduType.aduName}ADU`,instance)\r\n        });\r\n    }\r\n\r\n    async LoadADUObjectAsync(typeName,obj)\r\n    {\r\n        this.gltfLoader.loadAsync(`../../models/${typeName}/gltf/${obj.name}.gltf`).then(object=>{\r\n            const instance = object.scene.clone()\r\n            instance.receiveShadow = true;\r\n            instance.castShadow = true;\r\n            instance.position.x = 0;\r\n            instance.position.y = 0;\r\n            instance.position.z = 0;\r\n\r\n            instance.traverse(function (child) {\r\n                if (child.isMesh) {\r\n                  child.castShadow = true;\r\n                  child.receiveShadow = true;\r\n                  const material = child.material;\r\n                  material.onBeforeCompile = function( shader ) {\r\n                    shader.fragmentShader = shader.fragmentShader.replace(\r\n                        '#include <output_fragment>',\r\n                        `vec3 backfaceColor = vec3( 0.2, 0.2, 0.2);\r\n                        gl_FragColor = ( gl_FrontFacing ) ? vec4( outgoingLight, diffuseColor.a ) : vec4( backfaceColor, opacity );`\r\n                    )\r\n                };\r\n                material.side = THREE.DoubleSide;\r\n                }\r\n             });\r\n             obj.isVisible = false;\r\n             this.aduMap.set(typeName+obj.name,instance)\r\n        });\r\n    }\r\n\r\n    LoadAduType(aduTypes)\r\n    {\r\n        this.aduTypes = aduTypes;\r\n        aduTypes.forEach((aduType)=>{\r\n            aduType.objects.forEach(o=>{\r\n                if(o.name,o.name.indexOf(\"ADU\") === -1)\r\n                {\r\n                    this.LoadADUObjectAsync(aduType.name,o);\r\n                }\r\n                else\r\n                {\r\n                    this.LoadAduAsync(aduType);\r\n                }\r\n            });\r\n        });\r\n        \r\n    }\r\n\r\n    ModuleAnimationInit(modelName)\r\n    {\r\n        if(this.TypeMap.has(modelName))\r\n        {\r\n            this.TypeMap.get(modelName).forEach(floor => {\r\n                floor.forEach(module =>{\r\n                    module.ClearModel();\r\n                });\r\n            });\r\n        }\r\n    }\r\n\r\n    SetAllVisible(value)\r\n    {\r\n        this.curType.objects.forEach(o=>{o.isVisible = value;});\r\n    }\r\n}","export default class ThreeAnim{\r\n    constructor(name,module) {\r\n        this.name = name\r\n        this.module = module\r\n        this.isInit = true\r\n        this.isCreate = false\r\n        this.isComplate = false\r\n        this.speed = 150;\r\n    }\r\n\r\n    CreateModel(scene,startHeight)\r\n    {\r\n        this.module.position.y = startHeight\r\n        this.module.visible = false;\r\n        scene.add(this.module)\r\n    }\r\n\r\n    ClearModel()\r\n    {\r\n        this.isInit = true;\r\n        this.isCreate = false\r\n        this.isComplate = false\r\n    }\r\n\r\n    EndAnim()\r\n    {\r\n        this.module.visible = true;\r\n        this.module.position.y = 0;\r\n    }\r\n\r\n    StartAnimation(endHeight)\r\n    {\r\n        if(this.isComplate)\r\n        {\r\n            return;\r\n        }\r\n\r\n        if(this.isCreate)\r\n        {\r\n            if(this.module.position.y>endHeight)\r\n            {\r\n                this.module.position.y -= this.speed\r\n            }\r\n            else\r\n            {\r\n                this.module.position.y = endHeight\r\n                this.isComplate = true;\r\n            }\r\n        }\r\n    }\r\n}","import { render } from \"./ThreeViewer.vue?vue&type=template&id=19951cf9&scoped=true\"\nimport script from \"./ThreeViewer.vue?vue&type=script&lang=js\"\nexport * from \"./ThreeViewer.vue?vue&type=script&lang=js\"\n\nimport \"./ThreeViewer.vue?vue&type=style&index=0&id=19951cf9&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-19951cf9\"]])\n\nexport default __exports__","import { render } from \"./ViewerPage.vue?vue&type=template&id=67a577e4&scoped=true\"\nimport script from \"./ViewerPage.vue?vue&type=script&lang=js\"\nexport * from \"./ViewerPage.vue?vue&type=script&lang=js\"\n\nimport \"./ViewerPage.vue?vue&type=style&index=0&id=67a577e4&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-67a577e4\"]])\n\nexport default __exports__","<template>\r\n  <div id=\"Error_Div\">\r\n    <div class=\"Error_Tit\">\r\n      <img src=\"../assets/images/Logo_w.png\" alt=\"\" />\r\n      <h3>요청하신 페이지를 찾을 수 없습니다.</h3>\r\n      <p>\r\n        찾으려는 페이지의 주소가 잘못 입력되었거나,<br />\r\n        주소의 변경 혹은 삭제로 인해 사용하실 수 없습니다.<br />\r\n        입력하신 페이지의 주소가 정확한 지 다시 한 번 확인 해 주세요\r\n      </p>\r\n\r\n      <div class=\"Error_Btn\">\r\n        <router-link to=\"/\"><p>메인페이지로 돌아가기</p></router-link>\r\n      </div>\r\n    </div>\r\n  </div>\r\n</template>\r\n\r\n<style scoped>\r\n@import \"../assets/css/ErrorPage.css\";\r\n</style>\r\n","import { render } from \"./ErrorPage.vue?vue&type=template&id=0300b0f7&scoped=true\"\nconst script = {}\n\nimport \"./ErrorPage.vue?vue&type=style&index=0&id=0300b0f7&scoped=true&lang=css\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render],['__scopeId',\"data-v-0300b0f7\"]])\n\nexport default __exports__","<template>\r\n  <!-- <div>\r\n      <div>\r\n        <p>email: {{ email }}</p>\r\n        <p>nickname: {{ nickname }}</p>\r\n        <p>name: {{ name }}</p>\r\n        <p>birthday: {{ birthday }}</p>\r\n        <p>birthyear: {{ birthyear }}</p>\r\n        <p>mobile: {{ mobile }}</p>\r\n        <p>age: {{ age }}</p>\r\n        <p>gender: {{ gender }}</p>\r\n        <p>id: {{ id }}</p>\r\n      </div>\r\n      <button type=\"button\" @click=\"logout\">로그아웃</button>\r\n    </div> -->\r\n</template>\r\n<script>\r\nimport axios from \"axios\";\r\nimport router from \"@/router\";\r\nimport CryptoJS from \"crypto-js\";\r\nimport Cookies from 'js-cookie';\r\n\r\n// 네이버 개발자센터에서 어플리케이션 등록 시 발급된 값\r\n//자이 viewer 테스트\r\n//const client_id = \"4kjfJYnHSV14faBjq5R8\";\r\n//const client_secret = \"tBqkhxWsCT\";\r\n\r\nconst client_id = \"TDQ3VSyu9CPGHbOkbGUe\";\r\nconst client_secret = \"Jc0hh3FKNT\";\r\n\r\nexport default {\r\n  data() {\r\n    return {\r\n      accessToken: \"\",\r\n      email: \"\",\r\n      nickname: \"\",\r\n      id: \"\",\r\n      name: \"\",\r\n      gender: \"\",\r\n      age: \"\",\r\n      birthday: \"\",\r\n      birthyear: \"\",\r\n      mobile: \"\",\r\n      password: \"\",\r\n      path: \"\",\r\n      interest: \"\",\r\n      address: \"\",\r\n      phonenumber: \"\",\r\n      code: \"\",\r\n      isSocial: \"\",\r\n      refreshToken: \"\",\r\n      receive_s: \"\",\r\n      receive_e: \"\",\r\n      naverLogin: null,\r\n      today: new Date()\r\n    };\r\n  },\r\n  mounted() {\r\n    this.naverLogin = new window.naver_id_login(client_id);\r\n    this.accessToken = this.naverLogin.oauthParams.access_token;\r\n    let expireDate = new Date();\r\n    expireDate.setTime(expireDate.getTime() + (3 * 60 * 60 * 1000)); //3시간 후\r\n    //Cookies.set('token', this.accessToken, { expires: expireDate });\r\n    this.userInfo();\r\n\r\n  },\r\n  methods: {\r\n    // 사용자 프로필 조회\r\n    async userInfo() {\r\n      // const url = '/v1/nid/me';\r\n      // let header = \"Bearer \" + this.accessToken;\r\n      // const headers = { Authorization: header };\r\n      // console.log(\"headers : \", headers);\r\n      // const { data } = await axios.get(url, { headers });\r\n      // let today = new Date();\r\n      // console.log(\"userInfo: \", data);\r\n      // this.email = data.response.email; // 이메일\r\n\r\n      await axios.post(\"/server/naverLogin\", this.accessToken, {\r\n        headers: {\r\n          'Content-Type': 'application/json',\r\n          'Access-Control-Allow-origin': '*',\r\n          'Access-Control-Allow-Methods': 'GET, POST, OPTIONS, PUT, PATCH, DELETE',\r\n          'Access-Control-Allow-Credentials': 'true'\r\n        }\r\n      }\r\n      ).then(res => {\r\n        console.log(\"서버 결과 : \", res.data[\"id\"]);\r\n        console.log(typeof res);\r\n\r\n        Cookies.set('token', this.accessToken, { expires: this.expireDate, domain: this.$DOMAIN, path: '/' });\r\n        \r\n        this.name = res.data[\"name\"];\r\n        this.email = res.data[\"email\"];\r\n        this.gender = res.data[\"gender\"] == \"F\" ? \"female\" : \"male\";\r\n        this.age = res.data[\"age\"];\r\n        this.nickname = res.data[\"nickname\"];\r\n        this.phonenumber = res.data[\"mobile\"].replace(/-/g, '');\r\n        this.birthdate = res.data[\"birthyear\"] + \"-\" + res.data[\"birthday\"];\r\n      })\r\n\r\n      let data2 = {\r\n        key: 1,\r\n        name: this.name,\r\n        birthdate: this.birthdate,\r\n        phonenumber: this.phonenumber,\r\n        email: this.email,\r\n        gender: this.gender,\r\n        nickname: this.nickname,\r\n        password: this.password,\r\n        path: this.path,\r\n        interest: this.interest,\r\n        address: this.address,\r\n        code: 2,\r\n        token: this.accessToken,\r\n        updatetime: this.today.getFullYear() + '-' + this.today.getMonth() + '-' + this.today.getDay(),\r\n        hashPw: \"\",\r\n        receive_s: \"\",\r\n        receive_e: \"\"\r\n      }\r\n      let data3 = {\r\n        code: 2,\r\n        email: this.email\r\n      }\r\n      await axios.post(\"/server/social_check\", JSON.stringify(data3), {\r\n        headers: {\r\n          'Content-Type': 'application/json'\r\n        }\r\n      }).then(res => {\r\n        console.log(res.data);\r\n        if (res.data._data[\"length\"] == 0) { //다 가입 안돼있으면\r\n          this.isSocial = 3;\r\n          //alert(\"네이버 로그인 성공\");\r\n        }\r\n        else if (res.data._data[0][\"CODE\"] == 2) { //소셜가입돼있으면\r\n          this.isSocial = 1;\r\n          //alert(\"네이버 로그인 성공\");\r\n        }\r\n        else if (res.data._data[0][\"CODE\"] == 0) { //일반회원 가입돼있으면\r\n          this.isSocial = 2;\r\n          alert(\"일반회원으로 가입된 이메일입니다\");\r\n          this.kakaoLogout();\r\n        }\r\n      })\r\n      if (this.isSocial == 3) { // 소셜 가입 기록 없으면 멤버 테이블에 넣음\r\n        await axios.post(\"/server/join_test\", JSON.stringify(data2), {\r\n          headers: {\r\n            'Content-Type': 'application/json'\r\n          }\r\n        }).then(res => {\r\n          if (res) {\r\n            //alert(\"네이버 로그인 성공\");\r\n          }\r\n        })\r\n      }\r\n      if (this.isSocial != 2) {\r\n        await axios.post(\"/server/login_test\", JSON.stringify(data2), { //토큰 테이블에 토큰 넣음\r\n          headers: {\r\n            'Content-Type': 'application/json'\r\n          }\r\n        }).then(res => {\r\n          alert(\"환영합니다.\");\r\n          window.close();\r\n          this.$emit('childEvent');\r\n          opener.location.reload();\r\n        })\r\n\r\n      }\r\n    },\r\n\r\n    // 로그인 연동 해제 샘플\r\n    logout() {\r\n      const url = `/oauth2.0/token?grant_type=delete&client_id=${client_id}&client_secret=${client_secret}&access_token=${this.accessToken}&service_provider=NAVER`;\r\n\r\n      axios.get(url).then((res) => {\r\n        console.log(res.data);\r\n        document.cookie = \"token=\" + \"\";\r\n        router.push({ path: \"member/login\" });\r\n      });\r\n    },\r\n  },\r\n};\r\n</script>","import { render } from \"./LoginNCallback.vue?vue&type=template&id=486d414a\"\nimport script from \"./LoginNCallback.vue?vue&type=script&lang=js\"\nexport * from \"./LoginNCallback.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"C:\\\\Users\\\\장연서\\\\VScode\\\\2023_Xigeist_Configurator\\\\xigeistclient\\\\node_modules\\\\vue-loader\\\\dist\\\\exportHelper.js\"\nconst __exports__ = /*#__PURE__*/exportComponent(script, [['render',render]])\n\nexport default __exports__","import { createWebHistory, createRouter } from \"vue-router\";\r\nimport MainPage from \"../views/MainPage.vue\";\r\nimport PageSection2 from \"../components/PageSection2.vue\";\r\nimport ViewerPage from \"../components/ViewerPage.vue\";\r\nimport ErrorPage from \"../components/ErrorPage.vue\";\r\nimport LoginNCallback from \"../components/LoginNCallback.vue\";\r\n\r\n\r\n\r\nconst routes = [\r\n    {\r\n        path: \"/\",\r\n        name: \"MainPage\",\r\n        component: MainPage,\r\n        \r\n    },\r\n    {\r\n        path: \"/section/:typeName\",\r\n        name: \"PageSection\",\r\n        component: PageSection2,\r\n    },\r\n    {\r\n        path: \"/viewer/:typeName\",\r\n        name: \"ViewerPage\",\r\n        component:ViewerPage,\r\n    },\r\n\r\n    {\r\n        path: '/:pathMatch(.*)*',\r\n        name: \"ErrorPage\",\r\n        component:ErrorPage,\r\n    },\r\n    {\r\n        path: \"/callback\",\r\n        name: \"LoginNCallback\",\r\n        component: LoginNCallback,\r\n    },\r\n];\r\n\r\nconst router = createRouter({\r\n    history: createWebHistory(),\r\n    routes,\r\n});\r\n\r\nexport default router;\r\n\r\n\r\n","class global{\r\n    constructor(){\r\n        this.typeHistory = \"type2\"\r\n        this.moduleHistory = \"Volume20\"\r\n    }\r\n}\r\n\r\nexport default new global();","//import { createApp } from 'vue'\r\n//import App from './App.vue'\r\n\r\n//createApp(App).mount('#app')\r\n\r\nimport { createApp } from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router'\r\nimport global from './script/global'\r\nimport LogIn from './components/LogIn.vue';\r\nimport { reactive } from 'vue'\r\n\r\n\r\n\r\nconst app = createApp(App)\r\napp.use(router).mount('#app')\r\napp.component('LogIn', LogIn);\r\n\r\n//자이 서버 용\r\n  app.config.globalProperties.$TARGETURL = \"https://self-design.xigeist.com/\"; //2차\r\n  app.config.globalProperties.$TARGETURL2 = \"https://selfdesign.xigeist.com/\"; //1차\r\n  app.config.globalProperties.$AUTHURL = \"https://xiapi.xigeist.com/\" //본인인증서버\r\n  app.config.globalProperties.$DOMAIN = \".xigeist.com\" //쿠키 유지 최상위 도메인\r\n//app.config.globalProperties.$SERVERURL = \"https://xiapi.xigeist.com/\" //서버\r\n//app.config.globalProperties.$SERVERURL = \"http://localhost/\" //서버\r\n//  app.config.globalProperties.$SERVERURL = \"http://10.130.2.41/\" //서버\r\n\r\n\r\n//빔피어스 서버 테스트 용\r\n\r\n  //app.config.globalProperties.$TARGETURL = \"http://xiviewer.bimpeers.com/\"; //2차\r\n  //app.config.globalProperties.$TARGETURL2 = \"http://xiclient.bimpeers.com/\"; //1차\r\n//  app.config.globalProperties.$SERVERURL = \"http://xiapiserver.bimpeers.com:4486/\" //서버\r\n  //app.config.globalProperties.$AUTHURL = \"http://test-service.bimpeers.com:4487/\" //본인인증서버\r\n   //app.config.globalProperties.$DOMAIN = \".bimpeers.com\" //쿠키 유지 최상위 도메인\r\n\r\n//로컬 테스트 용\r\n  //app.config.globalProperties.$TARGETURL = \"http://localhost:8080/\"; // 2차 뷰어\r\n  //app.config.globalProperties.$TARGETURL2 = \"http://localhost:8081/\"; // 1차 클라이언트\r\n// //app.config.globalProperties.$SERVERURL = \"http://xiapiserver.bimpeers.com:4486/\" //서버\r\n //app.config.globalProperties.$SERVERURL = \"http://localhost:12008/\"\r\n// app.config.globalProperties.$AUTHURL = \"http://localhost:55239/\"\r\n\r\n\r\n//app.config.globalProperties.$TARGETURL = \"http://test-service.bimpeers.com:5006/\"; // 2차 뷰어\r\n//app.config.globalProperties.$TARGETURL = \"http://1.214.117.116:5006/\";\r\n//app.config.globalProperties.$TARGETURL2 = \"http://test-service.bimpeers.com/\"; // 1차 클라이언트\r\n//app.config.globalProperties.$TARGETURL = \"http://1.214.117.116:5006/\";\r\n//app.config.globalProperties.$TARGETURL2 = \"http://1.214.117.116/\";\r\n\r\n\r\n// reactive stateddddgcxxx\r\nconst state = reactive({\r\n    count: 0\r\n  })\r\n\r\napp.config.globalProperties.global = global;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n// no chunk on demand loading\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = function(chunkId) { return installedChunks[chunkId] === 0; };\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkxigeistclient\"] = self[\"webpackChunkxigeistclient\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], function() { return __webpack_require__(4072); })\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["id","_createElementBlock","_createElementVNode","_hoisted_1","_createVNode","_component_router_link","to","_component_router_view","script","__exports__","render","class","loop","muted","autoplay","playsinline","src","_imports_0","type","$data","_hoisted_2","_hoisted_3","_component_Header","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_createBlock","_component_LogIn","onChildEvent","$options","onChildEvent2","for","alt","style","_imports_1","onClick","onSubmit","name","placeholder","onChange","value","href","$TARGETURL","_hoisted_13","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","client_id","data","users","email","password","image","selectedFile","naverLogin","account_email","birth","phone","gender","nickname","updatedate","key","m","EncodeData","code","isSocial","address","path","interest","hashPw","isKeepLoin","isVisible","mounted","this","window","naver_id_login","$TARGETURL2","state","getUniqState","setDomain","setState","setPopup","init_naver_id_login","$","document","on","btnNaverLogin","getElementById","firstChild","click","methods","keepLogin","aaa","checked","kakaoJoin","Kakao","Auth","login","scope","success","getKakaoAccount","async","console","log","API","request","url","kakao_account","res","profile","birth_temp","birthday","token","getAccessToken","today","Date","birthdate","birthyear","slice","phonenumber","phone_number","split","replace","updatetime","getFullYear","getMonth","getDay","receive_s","receive_e","expireDate","setTime","getTime","Cookies","expires","domain","$DOMAIN","axios","JSON","stringify","headers","then","_data","alert","kakaoLogout","$emit","fail","error","response","cookie","catch","postData","CryptoJS","toString","closeEditPop","ref","onMouseleave","userName","_component_LogInModal","components","LogInModal","IsModalPopup","userEmail","userIdx","IsLogin","showMyPage","getToken","undefined","location","reload","status","fileList","logout","userCode","saveFileToLocal","home","localStorage","setItem","FILE_DATA","IDX","clickMyPage","hideMyPage","event","$refs","myInfoWrapper","contains","relatedTarget","LoginChild2","navigateToPage","page","isCurrentPage","$route","updateCheckedState","mypage","myhome","onClickRedirect","open","computed","currentRoute","metaInfo","title","titleTemplate","htmlAttrs","lang","amp","paginate","Paginate","LogIn","Header","scrollPosition","openType","showMd","showRF","showEx","showR","showS","active","typeName","showEditPopup","scroll","scrollY","scrollTest","offsetTop","deactive","updateScroll","Select","currentTarget","scrollTo","SelectH","Select2","onClickRedirect2","showType","openRF","openEx","addEventListener","scrollEvents","scrollTop","removeClass","addClass","_imports_2","_imports_3","_imports_4","_imports_5","_hoisted_12","_hoisted_19","length","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","$event","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_hoisted_30","_hoisted_31","_hoisted_32","_hoisted_33","_hoisted_34","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_hoisted_41","_hoisted_42","_hoisted_43","_hoisted_44","_hoisted_45","_hoisted_46","_hoisted_47","_hoisted_48","_Fragment","t","viewPath","_hoisted_49","_hoisted_50","thumbnail","_hoisted_52","mmSize","areaSize","floor","roomCnt","bathRoomCnt","totalType","Types","DisplayTypes","RoomFilters","Map","BathRoomFilters","FloorFilterMap","AreaFilterMap","pages","curPage","pageActiveColor","pageNomalColor","from","next","params","global","typeHistory","onClickEditPopup","getPageColor","onClickRoomFilter","e","i","maxRoom","map","keyStr","target","filter","o","has","set","delete","SetDisplayType1List","onClickFloorFilter","SetDisplayType2List","onClickAreaFilter","option","DisplaySort","a","b","size","sort","forEach","f","Array","prototype","push","apply","rmArr","brmArr","ret","x","findIndex","flArr","areaArr","moduleHistory","$router","_imports_6","_imports_7","_ctx","fullPath","img1F","img2F","_hoisted_51","imgPath","_hoisted_53","_hoisted_54","_hoisted_55","_hoisted_56","_hoisted_58","_hoisted_59","_hoisted_60","_hoisted_62","_hoisted_64","_hoisted_65","isOptionVisible","_hoisted_68","_hoisted_69","_hoisted_71","_hoisted_72","_hoisted_73","_hoisted_75","_hoisted_77","_hoisted_78","_hoisted_79","_component_ThreeViewer","selectObj","onAnimCallBack","max","ThreeView","constructor","modules","moduleMap","aduMap","isLoaded","selectType","curType","aduTypes","curAdu","curIndex","Init","InitailSetting","InitailLoad","threeCanvas","scene","THREE","offsetWidth","offsetHeight","camera","renderer","antialias","controls","OrbitControls","domElement","maxDistance","minDistance","minPolarAngle","maxPolarAngle","Math","PI","loadManager","gltfLoader","GLTFLoader","rgbeLoader","RGBELoader","setSize","shadowMap","enabled","autoUpdate","setPixelRatio","devicePixelRatio","toneMapping","toneMappingExposure","outputEncoding","setClearColor","enableDamping","intensity","lightColor","bias","directionalLight","position","castShadow","shadow","mapSize","width","height","d","left","right","top","bottom","near","far","rightLight","leftLight","backLight","upLight","helper","appendChild","progressBarContainer","querySelector","progressBar","onStart","display","onProgress","loaded","total","onLoad","setPath","loadAsync","texture","mapping","environment","SceneClean","isCameraClean","clear","add","lookAt","SceneUpdate","objects","get","obj","object","instance","clone","receiveShadow","y","z","traverse","child","isMesh","material","onBeforeCompile","shader","fragmentShader","side","AddScene","modelue","ShowType","index","roofs","find","indexOf","base","str","exteriors","options","ShowOption","zero","ShowAdu","aduType","element","LoadType","LoadObjectAsync","LoadAduAsync","aduName","LoadAduType","LoadADUObjectAsync","ModuleAnimationInit","modelName","TypeMap","module","ClearModel","SetAllVisible","ThreeAnim","isInit","isCreate","isComplate","speed","CreateModel","startHeight","visible","EndAnim","StartAnimation","endHeight","threeView","anims","props","animState","threeRender","onresize","aspect","updateProjectionMatrix","nextTick","watch","commandString","anim","initRoof","moduleName","SetAnimation","curMenu","isOptionEnable","order","isAnimationEnd","isEnd","requestAnimationFrame","update","ThreeViewer","showMdD","showADU","showFP","hide","selectFp","mFloor","mRooms","mBath","curModules","curRoofs","curAdus","resObj","is2f","isAdu","sliderInit","initailType","onClickEditPopup2","slider","startX","scrollLeft","isDown","classList","pageX","offsetLeft","remove","preventDefault","walk","closeSel","currentCli","listLineUl","ListInit","aduItemCreate","showTypeCommand","selectModuleCommand","selectRoofCommand","selectOptionCommand","stopPropagation","selectAduCommand","selectAnimationCommand","animCallBack","openMd","openADU","openFPop","img","closeFP","animButtonStatus","itemName","item","parse","aduModel","showPopup","LoginChild","goEditPage","client_secret","accessToken","age","mobile","refreshToken","oauthParams","access_token","userInfo","data2","data3","close","opener","router","routes","component","MainPage","PageSection2","ViewerPage","ErrorPage","LoginNCallback","createRouter","history","createWebHistory","app","createApp","App","use","mount","config","globalProperties","$AUTHURL","reactive","count","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","__webpack_modules__","call","deferred","O","result","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","definition","defineProperty","enumerable","g","globalThis","Function","prop","hasOwnProperty","p","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","self","bind","__webpack_exports__"],"sourceRoot":""}