{"version":3,"file":"JSearchAddr.vue2.cjs","sources":["../../../../src/components/molecules/JSearchAddr.vue"],"sourcesContent":["<script setup lang=\"ts\">\r\nimport { ref, watch, onMounted, onUnmounted, nextTick } from 'vue'\r\nimport type { \r\n  JSearchAddrProps, \r\n  PostcodeData, \r\n  AddressResult \r\n} from '@/types/search-addr.types'\r\n\r\n/**\r\n * JSearchAddr 컴포넌트\r\n * \r\n * Daum Postcode API를 활용한 주소 검색 컴포넌트입니다.\r\n * 모달 형태로 동작하며, 우편번호와 주소를 검색할 수 있습니다.\r\n * \r\n * @emits close - 모달 닫힘 요청\r\n * @emits complete - 주소 선택 완료 (간소화된 데이터)\r\n * @emits complete-raw - 주소 선택 완료 (원본 데이터)\r\n * @emits search - 검색 시작\r\n * @emits error - 에러 발생\r\n */\r\n\r\nconst props = withDefaults(defineProps<JSearchAddrProps>(), {\r\n  isOpen: false,\r\n  title: '주소 검색',\r\n  width: '600px',\r\n  height: '600px',\r\n  closeOnBackdrop: true,\r\n  closeOnEsc: true,\r\n  defaultLanguage: 'K',\r\n  theme: 'default',\r\n  autoComplete: true\r\n})\r\n\r\nconst emit = defineEmits<{\r\n  close: []\r\n  complete: [result: AddressResult]\r\n  'complete-raw': [data: PostcodeData]\r\n  search: []\r\n  error: [error: Error]\r\n}>()\r\n\r\n// Refs\r\nconst modalRef = ref<HTMLElement | null>(null)\r\nconst postcodeLayerRef = ref<HTMLElement | null>(null)\r\nconst isScriptLoaded = ref(false)\r\nconst isLoading = ref(false)\r\nconst postcodeInstance = ref<any>(null)\r\n\r\n/**\r\n * Daum Postcode 스크립트 로드\r\n */\r\nconst loadPostcodeScript = (): Promise<void> => {\r\n  return new Promise((resolve, reject) => {\r\n    if (window.daum && window.daum.Postcode) {\r\n      isScriptLoaded.value = true\r\n      resolve()\r\n      return\r\n    }\r\n\r\n    const existingScript = document.getElementById('daum-postcode-script')\r\n    if (existingScript) {\r\n      existingScript.addEventListener('load', () => {\r\n        isScriptLoaded.value = true\r\n        resolve()\r\n      })\r\n      return\r\n    }\r\n\r\n    const script = document.createElement('script')\r\n    script.id = 'daum-postcode-script'\r\n    script.src = 'https://t1.daumcdn.net/mapjsapi/bundle/postcode/prod/postcode.v2.js'\r\n    script.async = true\r\n\r\n    script.onload = () => {\r\n      isScriptLoaded.value = true\r\n      resolve()\r\n    }\r\n\r\n    script.onerror = () => {\r\n      const error = new Error('Failed to load Daum Postcode script')\r\n      emit('error', error)\r\n      reject(error)\r\n    }\r\n\r\n    document.head.appendChild(script)\r\n  })\r\n}\r\n\r\n/**\r\n * 주소 데이터 변환 (PostcodeData → AddressResult)\r\n */\r\nconst transformAddressData = (data: PostcodeData): AddressResult => {\r\n  let mainAddr = ''\r\n  let extraAddr = ''\r\n\r\n  // 언어에 따라 주소 선택\r\n  if (data.userLanguageType === 'K') {\r\n    if (data.userSelectedType === 'R') {\r\n      mainAddr = data.roadAddress\r\n      \r\n      // 건물명 등 추가 정보\r\n      if (data.bname !== '') {\r\n        extraAddr += data.bname\r\n      }\r\n      if (data.buildingName !== '') {\r\n        extraAddr += (extraAddr !== '' ? ', ' + data.buildingName : data.buildingName)\r\n      }\r\n    } else {\r\n      mainAddr = data.jibunAddress\r\n    }\r\n  } else {\r\n    if (data.userSelectedType === 'R') {\r\n      mainAddr = data.roadAddressEnglish\r\n    } else {\r\n      mainAddr = data.jibunAddressEnglish\r\n    }\r\n  }\r\n\r\n  return {\r\n    zonecode: data.zonecode,\r\n    address: mainAddr,\r\n    addressDetail: extraAddr || undefined,\r\n    addressType: data.userSelectedType,\r\n    languageType: data.userLanguageType,\r\n    sido: data.sido,\r\n    sigungu: data.sigungu,\r\n    bname: data.bname\r\n  }\r\n}\r\n\r\n/**\r\n * Postcode 초기화 및 embed\r\n */\r\nconst initPostcode = async () => {\r\n  if (!postcodeLayerRef.value) {\r\n    console.warn('postcodeLayerRef is not available')\r\n    return\r\n  }\r\n\r\n  try {\r\n    isLoading.value = true\r\n\r\n    // 스크립트 로드\r\n    await loadPostcodeScript()\r\n\r\n    // DOM 준비 대기\r\n    await nextTick()\r\n\r\n    // Postcode 인스턴스 생성 및 embed\r\n    postcodeInstance.value = new window.daum.Postcode({\r\n      oncomplete: (data: PostcodeData) => {\r\n        const result = transformAddressData(data)\r\n        emit('complete', result)\r\n        emit('complete-raw', data)\r\n        closeModal()\r\n      },\r\n      onclose: () => {\r\n        // 사용자가 X 버튼으로 닫을 경우\r\n        if (props.isOpen) {\r\n          closeModal()\r\n        }\r\n      },\r\n      onsearch: () => {\r\n        emit('search')\r\n      },\r\n      width: '100%',\r\n      height: '100%'\r\n    })\r\n\r\n    // 레이어에 embed\r\n    if (postcodeLayerRef.value) {\r\n      postcodeInstance.value.embed(postcodeLayerRef.value)\r\n      console.log('Daum Postcode embedded successfully')\r\n    }\r\n    \r\n    isLoading.value = false\r\n  } catch (error) {\r\n    isLoading.value = false\r\n    console.error('Failed to initialize Postcode:', error)\r\n    emit('error', error instanceof Error ? error : new Error('Unknown error'))\r\n  }\r\n}\r\n\r\n/**\r\n * 모달 열기\r\n */\r\nconst openModal = async () => {\r\n  // body 스크롤 잠금\r\n  document.body.style.overflow = 'hidden'\r\n  \r\n  // DOM이 완전히 렌더링될 때까지 대기\r\n  await nextTick()\r\n  \r\n  // 약간의 추가 지연 (모달 애니메이션 고려)\r\n  setTimeout(() => {\r\n    initPostcode()\r\n  }, 100)\r\n}\r\n\r\n/**\r\n * 모달 닫기\r\n */\r\nconst closeModal = () => {\r\n  // body 스크롤 복원\r\n  document.body.style.overflow = ''\r\n  \r\n  emit('close')\r\n}\r\n\r\n/**\r\n * 배경 클릭 핸들러\r\n */\r\nconst handleBackdropClick = (event: MouseEvent) => {\r\n  if (props.closeOnBackdrop && event.target === event.currentTarget) {\r\n    closeModal()\r\n  }\r\n}\r\n\r\n/**\r\n * ESC 키 핸들러\r\n */\r\nconst handleEscKey = (event: KeyboardEvent) => {\r\n  if (props.closeOnEsc && event.key === 'Escape' && props.isOpen) {\r\n    closeModal()\r\n  }\r\n}\r\n\r\n// Watch isOpen\r\nwatch(\r\n  () => props.isOpen,\r\n  (newValue) => {\r\n    if (newValue) {\r\n      openModal()\r\n    } else {\r\n      document.body.style.overflow = ''\r\n    }\r\n  }\r\n)\r\n\r\n// Lifecycle\r\nonMounted(() => {\r\n  document.addEventListener('keydown', handleEscKey)\r\n  \r\n  if (props.isOpen) {\r\n    openModal()\r\n  }\r\n})\r\n\r\nonUnmounted(() => {\r\n  document.removeEventListener('keydown', handleEscKey)\r\n  document.body.style.overflow = ''\r\n})\r\n\r\n// Expose\r\ndefineExpose({\r\n  close: closeModal\r\n})\r\n</script>\r\n\r\n<template>\r\n  <Teleport to=\"body\">\r\n    <Transition name=\"modal-fade\">\r\n      <div\r\n        v-if=\"isOpen\"\r\n        ref=\"modalRef\"\r\n        class=\"search-addr-overlay\"\r\n        role=\"dialog\"\r\n        aria-modal=\"true\"\r\n        :aria-label=\"title\"\r\n        @click=\"handleBackdropClick\"\r\n      >\r\n        <div\r\n          class=\"search-addr-modal\"\r\n          :style=\"{ width, height }\"\r\n          @click.stop\r\n        >\r\n          <!-- Header -->\r\n          <div class=\"search-addr-header\">\r\n            <h2 class=\"search-addr-title\">{{ title }}</h2>\r\n            <button\r\n              type=\"button\"\r\n              class=\"search-addr-close\"\r\n              aria-label=\"닫기\"\r\n              @click=\"closeModal\"\r\n            >\r\n              <svg\r\n                xmlns=\"http://www.w3.org/2000/svg\"\r\n                width=\"24\"\r\n                height=\"24\"\r\n                viewBox=\"0 0 24 24\"\r\n                fill=\"none\"\r\n                stroke=\"currentColor\"\r\n                stroke-width=\"2\"\r\n                stroke-linecap=\"round\"\r\n                stroke-linejoin=\"round\"\r\n              >\r\n                <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\r\n                <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\r\n              </svg>\r\n            </button>\r\n          </div>\r\n\r\n          <!-- Body -->\r\n          <div class=\"search-addr-body\">\r\n            <!-- 로딩 -->\r\n            <div v-if=\"isLoading\" class=\"search-addr-loading\">\r\n              <div class=\"loading-spinner\"></div>\r\n              <p>주소 검색을 불러오는 중...</p>\r\n            </div>\r\n\r\n            <!-- Postcode Layer -->\r\n            <div\r\n              ref=\"postcodeLayerRef\"\r\n              class=\"postcode-layer\"\r\n              :class=\"{ 'is-loading': isLoading }\"\r\n            ></div>\r\n          </div>\r\n        </div>\r\n      </div>\r\n    </Transition>\r\n  </Teleport>\r\n</template>\r\n\r\n<style scoped>\r\n/* Overlay */\r\n.search-addr-overlay {\r\n  position: fixed;\r\n  top: 0;\r\n  left: 0;\r\n  width: 100%;\r\n  height: 100%;\r\n  background-color: rgba(0, 0, 0, 0.5);\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  z-index: 9999;\r\n  padding: 20px;\r\n}\r\n\r\n/* Modal */\r\n.search-addr-modal {\r\n  background: white;\r\n  border-radius: 12px;\r\n  box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1),\r\n              0 10px 10px -5px rgba(0, 0, 0, 0.04);\r\n  display: flex;\r\n  flex-direction: column;\r\n  max-width: 90vw;\r\n  max-height: 90vh;\r\n  overflow: hidden;\r\n}\r\n\r\n/* Header */\r\n.search-addr-header {\r\n  position: relative;\r\n  padding: 20px 24px;\r\n  border-bottom: 1px solid #e5e7eb;\r\n  flex-shrink: 0;\r\n}\r\n\r\n.search-addr-title {\r\n  margin: 0;\r\n  font-size: 20px;\r\n  font-weight: 600;\r\n  color: #111827;\r\n  padding-right: 40px;\r\n}\r\n\r\n.search-addr-close {\r\n  position: absolute;\r\n  top: 16px;\r\n  right: 16px;\r\n  width: 36px;\r\n  height: 36px;\r\n  padding: 0;\r\n  background: none;\r\n  border: none;\r\n  border-radius: 6px;\r\n  cursor: pointer;\r\n  color: #6b7280;\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: center;\r\n  transition: all 0.2s;\r\n}\r\n\r\n.search-addr-close:hover {\r\n  background-color: #f3f4f6;\r\n  color: #111827;\r\n}\r\n\r\n.search-addr-close:focus {\r\n  outline: 2px solid #3b82f6;\r\n  outline-offset: 2px;\r\n}\r\n\r\n.search-addr-close:active {\r\n  background-color: #e5e7eb;\r\n}\r\n\r\n/* Body */\r\n.search-addr-body {\r\n  flex: 1;\r\n  min-height: 0;\r\n  position: relative;\r\n}\r\n\r\n.postcode-layer {\r\n  width: 100%;\r\n  height: 100%;\r\n  position: relative;\r\n}\r\n\r\n.postcode-layer.is-loading {\r\n  opacity: 0;\r\n  pointer-events: none;\r\n}\r\n\r\n/* Loading */\r\n.search-addr-loading {\r\n  position: absolute;\r\n  top: 0;\r\n  left: 0;\r\n  width: 100%;\r\n  height: 100%;\r\n  display: flex;\r\n  flex-direction: column;\r\n  align-items: center;\r\n  justify-content: center;\r\n  background: #f9fafb;\r\n  z-index: 10;\r\n}\r\n\r\n.loading-spinner {\r\n  width: 40px;\r\n  height: 40px;\r\n  border: 4px solid #e5e7eb;\r\n  border-top: 4px solid #3b82f6;\r\n  border-radius: 50%;\r\n  animation: spin 1s linear infinite;\r\n  margin-bottom: 16px;\r\n}\r\n\r\n@keyframes spin {\r\n  0% { transform: rotate(0deg); }\r\n  100% { transform: rotate(360deg); }\r\n}\r\n\r\n.search-addr-loading p {\r\n  margin: 0;\r\n  font-size: 14px;\r\n  color: #6b7280;\r\n}\r\n\r\n/* Animation */\r\n.modal-fade-enter-active,\r\n.modal-fade-leave-active {\r\n  transition: opacity 0.3s ease;\r\n}\r\n\r\n.modal-fade-enter-active .search-addr-modal,\r\n.modal-fade-leave-active .search-addr-modal {\r\n  transition: transform 0.3s ease, opacity 0.3s ease;\r\n}\r\n\r\n.modal-fade-enter-from,\r\n.modal-fade-leave-to {\r\n  opacity: 0;\r\n}\r\n\r\n.modal-fade-enter-from .search-addr-modal,\r\n.modal-fade-leave-to .search-addr-modal {\r\n  transform: scale(0.95);\r\n  opacity: 0;\r\n}\r\n\r\n/* Responsive */\r\n@media (max-width: 768px) {\r\n  .search-addr-overlay {\r\n    padding: 0;\r\n  }\r\n\r\n  .search-addr-modal {\r\n    width: 100vw !important;\r\n    height: 100vh !important;\r\n    max-width: 100vw;\r\n    max-height: 100vh;\r\n    border-radius: 0;\r\n  }\r\n\r\n  .search-addr-header {\r\n    padding: 16px 20px;\r\n  }\r\n\r\n  .search-addr-title {\r\n    font-size: 18px;\r\n  }\r\n}\r\n\r\n/* Dark mode */\r\n@media (prefers-color-scheme: dark) {\r\n  .search-addr-modal {\r\n    background: #1f2937;\r\n  }\r\n\r\n  .search-addr-header {\r\n    border-color: #374151;\r\n  }\r\n\r\n  .search-addr-title {\r\n    color: #f9fafb;\r\n  }\r\n\r\n  .search-addr-close {\r\n    color: #9ca3af;\r\n  }\r\n\r\n  .search-addr-close:hover {\r\n    background-color: #374151;\r\n    color: #f9fafb;\r\n  }\r\n\r\n  .search-addr-loading {\r\n    background: #111827;\r\n  }\r\n\r\n  .search-addr-loading p {\r\n    color: #9ca3af;\r\n  }\r\n}\r\n</style>\r\n\r\n"],"names":["props","__props","emit","__emit","modalRef","ref","postcodeLayerRef","isScriptLoaded","isLoading","postcodeInstance","loadPostcodeScript","resolve","reject","existingScript","script","error","transformAddressData","data","mainAddr","extraAddr","initPostcode","nextTick","result","closeModal","openModal","handleBackdropClick","event","handleEscKey","watch","newValue","onMounted","onUnmounted","__expose","_createBlock","_Teleport","_createVNode","_Transition","_createElementBlock","_createElementVNode","_normalizeStyle","_hoisted_2","_hoisted_3","_toDisplayString","_hoisted_4","_openBlock","_hoisted_5","_cache","_normalizeClass"],"mappings":"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"}