{"id":94314,"date":"2026-10-21T12:25:36","date_gmt":"2026-10-21T03:25:36","guid":{"rendered":"https:\/\/megazoo.co.kr\/eng\/?page_id=94314"},"modified":"2026-10-21T17:58:23","modified_gmt":"2026-10-21T08:58:23","slug":"2026-exhibitor-gallery-2","status":"publish","type":"page","link":"https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/","title":{"rendered":"2026 MEGAZOO PART 2 Exhibitor Gallery"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background nonhundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:100px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"max-width:1456px;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:20px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><link rel=\"stylesheet\" as=\"style\" crossorigin\n  href=\"https:\/\/cdn.jsdelivr.net\/gh\/orioncactus\/pretendard@v1.3.9\/dist\/web\/variable\/pretendardvariable.min.css\">\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0\">\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Swiper\/11.0.5\/swiper-bundle.min.js\"><\/script>\n<link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/Swiper\/11.0.5\/swiper-bundle.min.css\">\n<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/gh\/fancyapps\/fancybox@3.5.7\/dist\/jquery.fancybox.min.css\"\n  integrity=\"sha384-Q8BgkilbsFGYNNiDqJm69hvDS7NCJWOodvfK\/cwTyQD4VQA0qKzuPpvqNER1UC0F\" crossorigin=\"anonymous\">\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/lodash.js\/4.17.21\/lodash.min.js\"\n  integrity=\"sha512-WFN04846sdKMIP5LKNphMaWzU7YpMyCU245etK3g\/2ARYbPK9Ub18eG+ljU96qKRCWh+quCY7yefSmlkQw1ANQ==\" crossorigin=\"anonymous\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/js-cookie@rc\/dist\/js.cookie.min.js\"><\/script>\n<script src=\"https:\/\/megazoo.co.kr\/app\/plugins\/exhibition-info\/js\/esfair_api.js?v=1780621637\"><\/script>\n<link rel=\"stylesheet\" href=\"https:\/\/megazoo.co.kr\/app\/plugins\/exhibition-info\/template\/kpetk\/list.css?v=1792573401\">\n<link rel=\"stylesheet\" href=\"https:\/\/megazoo.co.kr\/app\/plugins\/exhibition-info\/template\/kpetk\/view.css?v=1792573401\">\n\n<div id=\"app\" class=\"brand_list_wrap\" v-cloak>\n  <div v-if=\"currentView === 'list'\" class=\"guide\">\n    <div class=\"company_wrap\">\n      <section class=\"filter_section\">\n        <div class=\"filter_search\">\n          <div class=\"filter_wrap\">\n            <button type=\"button\" class=\"btn_base cate_open_btn mob_view\" onclick=\"openCategories('cate_wrap');\">\n              <span class=\"txt\">Select Category<\/span>\n              <span class=\"material-symbols-outlined arrow\">expand_more<\/span>\n            <\/button>\n\n            <div class=\"cate_wrap\" id=\"cate_wrap\">\n              <div class=\"cate_box\">\n                <div class=\"cate_head mob_view\">\n                  <h2 class=\"tit\">Select Category<\/h2>\n                  <p class=\"desc\">Multiple selections allowed<\/p>\n                <\/div>\n                <div class=\"cate_tabs\">\n                  <input type=\"checkbox\" id=\"category_all\" name=\"category_all\" v-model=\"useAllCategories\" :disabled=\"useAllCategories\">\n                  <label for=\"category_all\">All<\/label>\n                  <template v-for=\"(category, index) in fmsCategories\" :key=\"index\">\n                    <input type=\"checkbox\" :id=\"'category_' + category.CATEGORY_FIRST_ID\" :name=\"'category_' + category.CATEGORY_FIRST_ID\"\n                      :checked=\"selectedCategories.some(c => c.categoryId === category.CATEGORY_FIRST_ID)\"\n                      @change=\"event => changeCategories(category.CATEGORY_FIRST_ID, category.CATEGORY_FIRST_NAME, event.target.checked)\">\n                    <label :for=\"'category_' + category.CATEGORY_FIRST_ID\">{{ category.CATEGORY_FIRST_NAME }}<\/label>\n                  <\/template>\n                <\/div>\n                <div class=\"cate_actions mob_view\">\n                  <button type=\"button\" class=\"btn_base reset_btn\" @click=\"useAllCategories = true\">Reset<\/button>\n                  <button type=\"button\" class=\"btn_base apply_btn\" onclick=\"closeCategories('cate_wrap');\">Apply<\/button>\n                <\/div>\n              <\/div>\n            <\/div>\n\n            <div class=\"divider pc_view\"><\/div>\n\n            <div :class=\"{'sch_bar': true, 'on': onClass}\">\n              <div class=\"sch_field\">\n                <span class=\"material-symbols-outlined\">search<\/span>\n                <input type=\"text\" id=\"sch_area\" name=\"sch_area\" v-model=\"searchKeyword\" placeholder=\"Enter a brand name\"\n                  autocomplete=\"off\" aria-label=\"Search brands\" @keyup.enter=\"searchBrand\" @focus=\"onClass = true\">\n                <button type=\"button\" class=\"sch_close_btn\" v-show=\"searchKeyword.trim() !== ''\" @click=\"deleteKeyword\"\n                  aria-label=\"Clear search\"><span class=\"material-symbols-outlined\">close<\/span><\/button>\n              <\/div>\n              <button type=\"button\" class=\"btn_base sch_submit\" @click=\"searchBrand\"><span>Search<\/span><\/button>\n\n              <div class=\"recent_sch_wrap\">\n                <div class=\"head\">\n                  <p class=\"tit\">Recent Searches<\/p>\n                  <button type=\"button\" class=\"all_del_btn\" @click=\"recentSearchKeywords = []\">Delete All<\/button>\n                <\/div>\n                <div class=\"cont swiper\">\n                  <ul class=\"recent_sch_list swiper-wrapper\">\n                    <li class=\"swiper-slide\" v-for=\"(keyword, index) in recentSearchKeywords\" :key=\"index\">\n                      <button type=\"button\" @click=\"clickRecentKeyword(keyword)\">{{ keyword }}<\/button>\n                      <button type=\"button\" class=\"keyword_del\"\n                        @click=\"recentSearchKeywords = recentSearchKeywords.filter(k => k !== keyword)\" :aria-label=\"'Delete ' + keyword\">\n                        <span class=\"material-symbols-outlined\">close<\/span>\n                      <\/button>\n                    <\/li>\n                    <li class=\"empty\" v-show=\"recentSearchKeywords.length === 0\">No recent searches.<\/li>\n                  <\/ul>\n                <\/div>\n              <\/div>\n              <div class=\"recent_sch_mask\" @click=\"onClass = false\"><\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"sel_cate_wrap mob_view\" :class=\"{'on': selectedCategories.length > 0}\">\n          <div class=\"sel_cate_scroll\">\n            <span class=\"sel_count\">\n              <span class=\"material-symbols-outlined\">filter_list<\/span>\n              <b class=\"num\">{{ selectedCategories.length }}<\/b>\n            <\/span>\n            <ul class=\"sel_cate_list\">\n              <li v-for=\"category in selectedCategories\" :key=\"category.categoryId\">\n                {{ category.categoryName }}\n                <button type=\"button\" class=\"btn_base del_btn\" @click=\"deleteCategory(category.categoryId)\"\n                  :aria-label=\"'Deselect ' + category.categoryName\">\n                  <span class=\"material-symbols-outlined\">close<\/span>\n                <\/button>\n              <\/li>\n            <\/ul>\n          <\/div>\n        <\/div>\n      <\/section>\n\n      <section class=\"result_wrap\">\n        <div class=\"result_head\">\n          <p class=\"total\"><b>{{ totalBrandCount.toLocaleString() }}<\/b> companies<\/p>\n          <p class=\"notice\">This information is being updated progressively.<\/p>\n        <\/div>\n\n        <ul class=\"company_list\">\n          <li v-for=\"(info, index) in brandInfos\" :key=\"info.COMPANY_FAIR_PROMOTION_BRAND_ID\" class=\"exhibitor_info\">\n            <a\n              :href=\"'#\/detail?company_fair_promotion_id=' + info.COMPANY_FAIR_PROMOTION_ID + '&company_fair_promotion_brand_id=' + info.COMPANY_FAIR_PROMOTION_BRAND_ID\">\n              <div class=\"logo_area\">\n                <img :src=\"getAttachFileUrl(info.COMPANY_BRAND_MAIN_URL)\" @error=\"e => e.target.src = defaultImg\" alt=\"Brand logo\">\n              <\/div>\n              <p class=\"name\" v-html=\"info.BRAND_NAME_ENG\"><\/p>\n              <p class=\"cate\" v-html=\"info.CATEGORY_MASTER_DESC_ENG\"><\/p>\n            <\/a>\n          <\/li>\n          <li class=\"empty\" v-show=\"totalBrandCount === 0\">There are no companies to display.<\/li>\n        <\/ul>\n\n        <div class=\"pagination\">\n          <ul>\n            <li class=\"move_btn prev_btn\" @click=\"changePage(1)\"><span class=\"material-symbols-outlined\">keyboard_double_arrow_left<\/span><\/li>\n            <li class=\"move_btn prev_btn\" @click=\"changePage(prevBtnPage)\"><span class=\"material-symbols-outlined\">navigate_before<\/span><\/li>\n            <li v-for=\"pageNumber in pageNumbers\" :key=\"pageNumber\" @click=\"changePage(pageNumber)\" :class=\"{'now': currentPage === pageNumber}\">\n              <span class=\"page_btn\">{{ pageNumber }}<\/span>\n            <\/li>\n            <li class=\"move_btn next_btn\" @click=\"changePage(nextBtnPage)\"><span class=\"material-symbols-outlined\">navigate_next<\/span><\/li>\n            <li class=\"move_btn next_btn\" @click=\"changePage(lastPage)\"><span class=\"material-symbols-outlined\">keyboard_double_arrow_right<\/span>\n            <\/li>\n          <\/ul>\n        <\/div>\n      <\/section>\n    <\/div>\n  <\/div>\n\n  <div v-else-if=\"currentView === 'detail' && brandInfo\" class=\"brand_view_wrap\">\n    <div class=\"guide\">\n      <div class=\"view_wrap\">\n        <div class=\"detail_cont\">\n          <section class=\"company_info\">\n            <div class=\"company_card\">\n              <div class=\"logo_area\">\n                <img :src=\"getAttachFileUrl(brandInfo.COMPANY_BRAND_MAIN_URL)\" @error=\"e => e.target.src = defaultImg\" alt=\"Brand logo\">\n              <\/div>\n              <div class=\"link_btns\" v-if=\"formatUrl(brandInfo.HOMEPAGE_URL_1) !== null || formatUrl(brandInfo.SNS_URL_1, 'instagram') !== null\">\n                <a :href=\"formatUrl(brandInfo.SNS_URL_1, 'instagram')\" class=\"btn_base link_btn insta\"\n                  v-if=\"formatUrl(brandInfo.SNS_URL_1, 'instagram') !== null\" target=\"_blank\" rel=\"noopener\">\n                  <span>SNS<\/span>\n                <\/a>\n                <a :href=\"formatUrl(brandInfo.HOMEPAGE_URL_1)\" class=\"btn_base link_btn home\"\n                  v-if=\"formatUrl(brandInfo.HOMEPAGE_URL_1) !== null\" target=\"_blank\" rel=\"noopener\">\n                  <span class=\"material-symbols-outlined\">open_in_new<\/span><span>Homepage<\/span>\n                <\/a>\n              <\/div>\n            <\/div>\n\n            <div class=\"company_meta\">\n              <h2 class=\"company_name\" v-html=\"brandInfo.BRAND_NAME_ENG\"><\/h2>\n              <div class=\"divider\"><\/div>\n              <ul class=\"info_list\">\n                <li class=\"info_row\">\n                  <div class=\"info_label\"><span class=\"bar\"><\/span>\n                    <p class=\"tit\">Booth Number<\/p>\n                  <\/div>\n                  <div v-if=\"boothNumber !== null\" class=\"info_tags\"><span class=\"tag\">{{ boothNumber }}<\/span><\/div>\n                  <div v-else class=\"info_tags\"><span class=\"tag\" style=\"border: none; background-color:transparent; line-height:1.5;\">Coming\n                      Soon<\/span><\/div>\n                <\/li>\n                <li class=\"info_row\">\n                  <div class=\"info_label\"><span class=\"bar\"><\/span>\n                    <p class=\"tit\">Category<\/p>\n                  <\/div>\n                  <div class=\"info_tags\"><span class=\"tag\" v-html=\"brandInfo.MASTER_CATEGORY_DESC_ENG + ' - ' + brandInfo.CATEGORY_DESC_ENG\"><\/span>\n                  <\/div>\n                <\/li>\n              <\/ul>\n            <\/div>\n          <\/section>\n\n          <section class=\"brand_desc\">\n            <div class=\"sec_tit\"><span class=\"bar\"><\/span>\n              <h3 class=\"tit\">Brand Description<\/h3>\n            <\/div>\n            <p class=\"desc\" v-html=\"brandInfo.COMPANY_BRAND_INFO_ENG\"><\/p>\n          <\/section>\n\n          <section class=\"brand_desc\" v-if=\"brandInfo.PROMOTION_INFO_ENG\">\n            <div class=\"sec_tit\"><span class=\"bar\"><\/span>\n              <h3 class=\"tit\">Promotion<\/h3>\n            <\/div>\n            <p class=\"desc\" v-html=\"brandInfo.PROMOTION_INFO_ENG\"><\/p>\n          <\/section>\n\n          <div class=\"img_slide_wrap brand_view_etc_wrap\" v-if=\"companyProductImgUrls(brandInfo).length > 0\">\n            <div class=\"swiper img_slide brand_view_img_slide\">\n              <ul class=\"swiper-wrapper\">\n                <li class=\"swiper-slide item\" v-for=\"(imgUrl, index) in companyProductImgUrls(brandInfo)\" :key=\"index\">\n                  <a :href=\"imgUrl\" data-fancybox=\"product-gallery\" class=\"img_link\">\n                    <div class=\"img\"><img :src=\"imgUrl\" @error=\"e => e.target.src = defaultImg\" alt=\"Product\"><\/div>\n                  <\/a>\n                <\/li>\n              <\/ul>\n            <\/div>\n            <button type=\"button\" class=\"btn_base swiper-button swiper-button-prev\" v-show=\"isMobile\"><span\n                class=\"material-symbols-outlined\">arrow_back_ios_new<\/span><\/button>\n            <button type=\"button\" class=\"btn_base swiper-button swiper-button-next\" v-show=\"isMobile\"><span\n                class=\"material-symbols-outlined\">arrow_forward_ios<\/span><\/button>\n          <\/div>\n        <\/div>\n        <a href=\"#\/\" class=\"btn_base list_btn\">Back to List<\/a>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n<script>\n  function openCategories(element) {\n    var $wrap = jQuery('#' + element);\n    if (!$wrap.hasClass('cate_wrap')) return;\n    $wrap.show().stop().animate({\n      opacity: 1\n    }, 300);\n    $wrap.find('.cate_box').stop().animate({\n      bottom: '0%'\n    }, 500);\n  }\n\n  function closeCategories(element) {\n    var $wrap = jQuery('#' + element);\n    if (!$wrap.hasClass('cate_wrap')) return;\n    $wrap.find('.cate_box').stop().animate({\n      bottom: '-100%'\n    }, 500);\n    setTimeout(function() {\n      $wrap.stop().animate({\n        opacity: 0\n      }, 300, function() {\n        $wrap.hide();\n      });\n    }, 200);\n  }\n\n  jQuery(function($) {\n    $('.cate_wrap').on('click', function(event) {\n      if (event.target === this) closeCategories(this.id);\n    });\n  });\n\n<\/script>\n\n<script src=\"https:\/\/cdn.jsdelivr.net\/gh\/fancyapps\/fancybox@3.5.7\/dist\/jquery.fancybox.min.js\"\n  integrity=\"sha384-Zm+UU4tdcfAm29vg+MTbfu\/\/q5B\/lInMbMCr4T8c9rQFyOv6PlfQYpB5wItcXWe7\" crossorigin=\"anonymous\"><\/script>\n<script type=\"importmap\">\n  {\n    \"imports\": {\n      \"vue\": \"https:\/\/cdn.messeesang.com\/npm\/vue.esm-browser\/3.5.13\/vue.esm-browser.js\"\n    }\n  }\n<\/script>\n\n<script type=\"module\">\n  import {\n    createApp,\n    ref,\n    watch,\n    computed,\n    onMounted,\n    onUnmounted,\n    nextTick\n  } from 'vue'\n\n  const App = {\n    setup() {\n      \/\/ =========================================================================\n      \/\/ [1\ub2e8\uacc4] \uc0c1\uc218 \ubc0f PHP \uc8fc\uc785 \ubcc0\uc218 (Constants & Config)\n      \/\/ =========================================================================\n      const fairMasterId = '6';\n      const fairId = '938';\n      const notUsedCategories = [647, 648, 1012, 1014, 1013];\n      const defaultImg = 'https:\/\/d5bvmdkxgb6q.cloudfront.net\/wp-content\/uploads\/2024\/04\/30174441\/noimage.png';\n      const COOKIE_NAME = 'megazooSearchKeywords';\n      const brandCountPerPage = 12;\n      const pageNumberCount = 5; \/\/ \ud398\uc774\uc9c0 \ubc88\ud638 \ucd9c\ub825 \uac1c\uc218\n\n      \/\/ =========================================================================\n      \/\/ [2\ub2e8\uacc4] \ubc18\uc751\ud615 \uc0c1\ud0dc \uc120\uc5b8 (Reactive States)\n      \/\/ =========================================================================\n      \/\/ 1. \uacf5\ud1b5 \ubc0f \ub77c\uc6b0\ud305 \uc0c1\ud0dc\n      const currentView = ref('list'); \/\/ 'list' \ub610\ub294 'detail'\n      const scrollPos = ref(0); \/\/ \ubaa9\ub85d \uc2a4\ud06c\ub864 \uc704\uce58 \ubcf4\uc874\uc6a9\n      const width = ref(window.innerWidth);\n      const onClass = ref(false);\n      const isLoading = ref(false);\n\n      \/\/ 2. \ub9ac\uc2a4\ud2b8 \uc804\uc6a9 \uc0c1\ud0dc\n      const selectedCategories = ref([]);\n      const useAllCategories = ref(true);\n      const searchKeyword = ref('');\n      const recentSearchKeywords = ref([]); \/\/ \ucd5c\uadfc \uac80\uc0c9\uc5b4 (\ucfe0\ud0a4\uc5d0\uc11c \ubd88\ub7ec\uc634)\n      const brandInfos = ref([]); \/\/ \ube0c\ub79c\ub4dc \ub9ac\uc2a4\ud2b8 \ub370\uc774\ud130\n      const totalBrandCount = ref(0);\n      const currentPage = ref(1);\n\n      \/\/ 3. \uc0c1\uc138 \uc804\uc6a9 \uc0c1\ud0dc\n      const detailData = ref(null); \/\/ API \ud638\ucd9c\ub85c \ubc1b\uc544\uc628 \uc0c1\uc138 \ub370\uc774\ud130\n\n      \/\/ =========================================================================\n      \/\/ [3\ub2e8\uacc4] \uacc4\uc0b0\ub41c \uc18d\uc131 (Computed Properties)\n      \/\/ =========================================================================\n      \/\/ 1. \uacf5\ud1b5 \ubc0f \ubc18\uc751\ud615 \uc870\uac74\n      const isMobile = computed(() => width.value <= 760);\n\n      \/\/ 2. \ub9ac\uc2a4\ud2b8\uc6a9 \uacc4\uc0b0\n      const lastPage = computed(() => (totalBrandCount.value !== 0) ? Math.ceil(totalBrandCount.value \/ brandCountPerPage) : 1);\n\n      const pageNumbers = computed(() => {\n        let startNumber = Math.floor((currentPage.value - 1) \/ pageNumberCount) * pageNumberCount + 1;\n        let endNumber = (startNumber + (pageNumberCount - 1)) > lastPage.value ? lastPage.value : startNumber + (pageNumberCount - 1);\n        return Array.from({\n          length: endNumber - startNumber + 1\n        }, (_, i) => startNumber + i);\n      });\n\n      const prevBtnPage = computed(() => {\n        let currentMinPage = Math.min(...pageNumbers.value);\n        return (currentMinPage - pageNumberCount) < 1 ? 1 : (currentMinPage - pageNumberCount);\n      });\n\n      const nextBtnPage = computed(() => {\n        let currentMaxPage = Math.max(...pageNumbers.value);\n        return (currentMaxPage + 1) < lastPage.value ? (currentMaxPage + 1) : lastPage.value;\n      });\n\n      \/\/ 3. \uc0c1\uc138\uc6a9 \uacc4\uc0b0\n      const brandInfo = computed(() => detailData.value?.brandInfo);\n      const boothNumber = computed(() => detailData.value?.boothNumber);\n\n      \/\/ =========================================================================\n      \/\/ [4\ub2e8\uacc4] \uc21c\uc218 \ud5ec\ud37c \ubc0f \ub370\uc774\ud130 \uac00\uacf5 \ud568\uc218 (Helper Functions)\n      \/\/ =========================================================================\n      const getAttachFileUrl = (filePath) => {\n        if (!filePath) return defaultImg;\n        return filePath.toLowerCase().startsWith('\/uploadfiles\/online') ? 'https:\/\/img.esfair.kr\/fms' + filePath : filePath;\n      };\n\n      const formatUrl = (rawUrl, filter = null) => {\n        if (rawUrl === null || rawUrl === undefined) return null;\n        if (filter !== null && rawUrl.indexOf(filter) === -1) return null;\n        return rawUrl.indexOf('http') === -1 ? 'https:\/\/' + rawUrl : rawUrl;\n      };\n\n      const companyProductImgUrls = (brandInfo) => {\n        if (!brandInfo) return [];\n        let urls = [];\n        for (let i = 1; i <= 4; i++) {\n          let key = `COMPANY_PRODUCT${i}_URL`;\n          if (brandInfo[key] !== null && brandInfo[key] !== undefined && brandInfo[key].trim() !== '') {\n            urls.push(getAttachFileUrl(brandInfo[key]));\n          }\n        }\n        return urls;\n      };\n\n      const loadCookie = () => {\n        let keywords = Cookies.get(COOKIE_NAME);\n        return keywords ? JSON.parse(keywords) : [];\n      };\n\n      const updateCookie = (cookieValue) => {\n        Cookies.set(COOKIE_NAME, JSON.stringify(cookieValue), {\n          expires: 30\n        });\n      };\n\n      \/\/ =========================================================================\n      \/\/ [5\ub2e8\uacc4] \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 \ubc0f \uc774\ubca4\ud2b8 \ud578\ub4e4\ub7ec \ud568\uc218 (Event Handlers)\n      \/\/ =========================================================================\n      const changePage = (pageNumber) => {\n        currentPage.value = pageNumber;\n        refreshBrandList();\n      };\n\n      const changeCategories = (categoryId, categoryName, isChecked) => {\n        currentPage.value = 1;\n        searchKeyword.value = '';\n        if (isChecked) {\n          selectedCategories.value.push({\n            categoryId: categoryId,\n            categoryName: categoryName\n          });\n        } else {\n          selectedCategories.value = selectedCategories.value.filter(c => c.categoryId !== categoryId);\n        }\n        selectedCategories.value.sort((a, b) => a.categoryId - b.categoryId);\n      };\n\n      const deleteCategory = (categoryId) => {\n        selectedCategories.value = selectedCategories.value.filter(c => c.categoryId !== categoryId);\n        $(`#category_${categoryId}`).prop('checked', false);\n        currentPage.value = 1;\n      };\n\n      const searchBrand = () => {\n        currentPage.value = 1;\n        refreshBrandList();\n        if (searchKeyword.value.trim() === '') return;\n\n        recentSearchKeywords.value = recentSearchKeywords.value.filter(k => k !== searchKeyword.value);\n        recentSearchKeywords.value.unshift(searchKeyword.value);\n      };\n\n      const deleteKeyword = () => {\n        searchKeyword.value = '';\n        searchBrand();\n      };\n\n      const clickRecentKeyword = (newKeyword) => {\n        searchKeyword.value = newKeyword;\n        searchBrand();\n      };\n\n      \/\/ =========================================================================\n      \/\/ [6\ub2e8\uacc4] \ub77c\uc6b0\ud305 \ubc0f \ub3d4 \uc81c\uc5b4 \ud568\uc218 (Controllers & Routing)\n      \/\/ =========================================================================\n      const getBrandInfo = () => {\n        let searchCategories = selectedCategories.value.length === 0 ? null : selectedCategories.value.map(c => c.categoryId).join(',');\n        return fmsApi.fair.getExhibitorInfo(brandCountPerPage, currentPage.value, fairId, searchCategories, searchKeyword.value, 'BRAND_NAME_ENG',\n          'Y');\n      };\n\n      const refreshBrandList = () => {\n        const data = getBrandInfo();\n        brandInfos.value = data;\n        totalBrandCount.value = data.length > 0 ? data[0].TOT_CNT : 0;\n      };\n\n      const initSwiper = () => undefined;\n\n      let brandViewImgSwiper = undefined;\n      const initDetailSwiper = () => {\n        if (brandViewImgSwiper !== undefined) brandViewImgSwiper.destroy();\n        brandViewImgSwiper = new Swiper(\".brand_view_img_slide\", {\n          slidesPerView: 1,\n          spaceBetween: 0,\n          loop: true,\n          observer: true,\n          observeParents: true,\n          navigation: {\n            nextEl: \".brand_view_etc_wrap .swiper-button-next\",\n            prevEl: \".brand_view_etc_wrap .swiper-button-prev\",\n          },\n          breakpoints: {\n            560: {\n              slidesPerView: 2,\n              spaceBetween: 20\n            },\n            960: {\n              slidesPerView: 4,\n              spaceBetween: 46\n            },\n          },\n        });\n      };\n\n      const fetchDetailData = (promotionId, brandId) => {\n        const response = fmsApi.get('fair\/GetPromotionInfo', {\n          company_fair_promotion_id: promotionId,\n          company_fair_promotion_brand_id: brandId,\n          language_type: 2\n        });\n\n        if (response) {\n          const brand = _.first(response.FAR_sd_CompanyFairReqPromotionBrandByType);\n          const common = _.first(response.FAR_sr_CompanyFairReqPromotionCommon);\n\n          detailData.value = {\n            brandInfo: brand,\n            boothNumber: common ? common.BOOTH_NUMBER : null\n          };\n\n          nextTick(() => {\n            initDetailSwiper();\n          });\n        }\n      };\n\n      const handleHashChange = () => {\n        const hash = window.location.hash;\n\n        if (hash.startsWith('#\/detail')) {\n          if (currentView.value === 'list') {\n            scrollPos.value = window.scrollY; \/\/ \ubaa9\ub85d \uc2a4\ud06c\ub864 \ubcf4\uc874\n          }\n\n          const queryString = hash.split('?')[1];\n          if (queryString) {\n            const params = new URLSearchParams(queryString);\n            const promotionId = params.get('company_fair_promotion_id');\n            const brandId = params.get('company_fair_promotion_brand_id');\n\n            if (promotionId && brandId) {\n              currentView.value = 'detail'; \/\/ \ubdf0\ub97c \uba3c\uc800 \uc804\ud658\ud558\uc5ec \uc0c1\uc138 \ud398\uc774\uc9c0 \ub3d4 \ud65c\uc131\ud654\n              fetchDetailData(promotionId, brandId);\n              window.scrollTo(0, 0);\n              return;\n            }\n          }\n        }\n\n        const wasDetail = currentView.value === 'detail';\n        currentView.value = 'list';\n        detailData.value = null;\n\n        if (wasDetail) {\n          \/\/ \uc0c1\uc138 \ub525\ub9c1\ud06c\ub85c \uc9c1\uc811 \uc9c4\uc785\ud588\ub2e4\uac00 \ubaa9\ub85d\uc73c\ub85c \ub098\uac08 \ub54c \ub9ac\uc2a4\ud2b8 \ub370\uc774\ud130 \ub85c\ub4dc\n          if (brandInfos.value.length === 0) {\n            refreshBrandList();\n          }\n          nextTick(() => {\n            window.scrollTo(0, scrollPos.value); \/\/ \ubaa9\ub85d \uc2a4\ud06c\ub864 \ubcf5\uc6d0\n          });\n        }\n      };\n\n      const onResize = () => {\n        width.value = window.innerWidth;\n        if (width.value > 760) {\n          $('.sch_bar').removeClass('on')\n        }\n        initSwiper();\n      };\n\n      \/\/ =========================================================================\n      \/\/ [7\ub2e8\uacc4] \ubc18\uc751\ud615 \uc0c1\ud0dc \uac10\uc2dc (Watchers)\n      \/\/ =========================================================================\n      watch(recentSearchKeywords, (newKeywords) => {\n        updateCookie(newKeywords);\n        initSwiper();\n      }, {\n        deep: true\n      });\n\n      watch(selectedCategories, (newCategories) => {\n        useAllCategories.value = newCategories.length === 0;\n        refreshBrandList();\n        initSwiper();\n      }, {\n        deep: true\n      });\n\n      watch(useAllCategories, (newVal) => {\n        if (newVal === true) {\n          searchKeyword.value = '';\n          currentPage.value = 1;\n          selectedCategories.value = [];\n          $(\".cate_field input\").prop('checked', false);\n        }\n      });\n\n      watch(isMobile, (newVal, oldVal) => {\n        if (newVal !== oldVal) {\n          currentPage.value = 1;\n          refreshBrandList();\n        }\n      });\n\n      \/\/ =========================================================================\n      \/\/ [8\ub2e8\uacc4] \ub77c\uc774\ud504\uc0ac\uc774\ud074 \ud6c5 (Lifecycle Hooks)\n      \/\/ =========================================================================\n      let fmsCategories = fmsApi.fair.findFairCategories(fairMasterId, 'Y');\n      fmsCategories = _.filter(fmsCategories, category => !_.includes(notUsedCategories, category.CATEGORY_FIRST_ID));\n\n      onMounted(() => {\n        initSwiper();\n        window.addEventListener('resize', onResize);\n        window.addEventListener('hashchange', handleHashChange);\n\n        window.addEventListener('scroll', _.throttle(() => {\n          if (currentView.value === 'detail' || !isMobile.value || currentPage.value === lastPage.value) {\n            return;\n          }\n\n          if (window.innerHeight + window.scrollY < document.documentElement.scrollHeight - 500 || isLoading.value) {\n            return;\n          }\n          isLoading.value = true;\n          currentPage.value++;\n          const newBrands = getBrandInfo();\n          brandInfos.value = brandInfos.value.concat(newBrands);\n          totalBrandCount.value = newBrands.length > 0 ? newBrands[0].TOT_CNT : 0;\n          isLoading.value = false;\n        }, 300), true);\n\n        handleHashChange(); \/\/ \uccab \uc8fc\uc18c \ud574\uc2dc \uccb4\ud06c\n\n        \/\/ \ub9ac\uc2a4\ud2b8 \ubdf0\uc778 \uacbd\uc6b0\uc5d0\ub9cc \ub9ac\uc2a4\ud2b8 \ub370\uc774\ud130\ub97c \ub3d9\uc801 \uc870\ud68c\n        if (currentView.value === 'list') {\n          refreshBrandList();\n        }\n        recentSearchKeywords.value = loadCookie();\n      });\n\n      onUnmounted(() => {\n        window.removeEventListener('resize', onResize);\n        window.removeEventListener('hashchange', handleHashChange);\n      });\n\n      \/\/ =========================================================================\n      \/\/ [\ubc18\ud658] \ud15c\ud50c\ub9bf \ubc18\ud658 \uac1d\uccb4 (Return Block)\n      \/\/ =========================================================================\n      return {\n        \/\/ \uace0\uc815 \uc124\uc815\uac12 \ubc0f \ub370\uc774\ud130\n        fairMasterId,\n        fairId,\n        brandCountPerPage,\n        fmsCategories,\n        defaultImg,\n        COOKIE_NAME,\n\n        \/\/ \ub77c\uc6b0\ud305 \ubc0f \ubdf0 \ubaa8\ub4dc\n        currentView,\n        detailData,\n        brandInfo,\n        boothNumber,\n\n        \/\/ \ubc18\uc751\ud615 \ubcc0\uc218\ub4e4\n        selectedCategories,\n        searchKeyword,\n        currentPage,\n        brandInfos,\n        useAllCategories,\n        totalBrandCount,\n        recentSearchKeywords,\n        isMobile,\n        onClass,\n\n        \/\/ \uc5f0\uc0b0 \uc0c1\ud0dc\uac12 (Computed)\n        pageNumbers,\n        lastPage,\n        prevBtnPage,\n        nextBtnPage,\n\n        \/\/ \uba54\uc11c\ub4dc \ubc0f \ud5ec\ud37c \ud568\uc218\n        changeCategories,\n        changePage,\n        searchBrand,\n        deleteCategory,\n        clickRecentKeyword,\n        deleteKeyword,\n        formatUrl,\n        companyProductImgUrls,\n        getAttachFileUrl\n      };\n    }\n  };\n\n  createApp(App).mount('#app');\n\n<\/script>\n<\/div><\/div><\/div><\/div>","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"footnotes":""},"class_list":["post-94314","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>2026 MEGAZOO PART 2 Exhibitor Gallery - MEGA ZOO ENG<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"2026 MEGAZOO PART 2 Exhibitor Gallery - MEGA ZOO ENG\" \/>\n<meta property=\"og:url\" content=\"https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/\" \/>\n<meta property=\"og:site_name\" content=\"MEGA ZOO ENG\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-21T08:58:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/d3d4noupcxrf4g.cloudfront.net\/app\/uploads\/sites\/4\/2025\/03\/20052225\/OG_New.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"675\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/2026-exhibitor-gallery-2\\\/\",\"url\":\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/2026-exhibitor-gallery-2\\\/\",\"name\":\"2026 MEGAZOO PART 2 Exhibitor Gallery - MEGA ZOO ENG\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/#website\"},\"datePublished\":\"2026-10-21T03:25:36+00:00\",\"dateModified\":\"2026-10-21T08:58:23+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/2026-exhibitor-gallery-2\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/2026-exhibitor-gallery-2\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/2026-exhibitor-gallery-2\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"2026 MEGAZOO PART 2 Exhibitor Gallery\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/#website\",\"url\":\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/\",\"name\":\"MEGA ZOO ENG\",\"description\":\"Just another WordPress site\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/megazoo.co.kr\\\/eng\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"2026 MEGAZOO PART 2 Exhibitor Gallery - MEGA ZOO ENG","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/","og_locale":"en_US","og_type":"article","og_title":"2026 MEGAZOO PART 2 Exhibitor Gallery - MEGA ZOO ENG","og_url":"https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/","og_site_name":"MEGA ZOO ENG","article_modified_time":"2026-10-21T08:58:23+00:00","og_image":[{"width":1200,"height":675,"url":"https:\/\/d3d4noupcxrf4g.cloudfront.net\/app\/uploads\/sites\/4\/2025\/03\/20052225\/OG_New.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/","url":"https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/","name":"2026 MEGAZOO PART 2 Exhibitor Gallery - MEGA ZOO ENG","isPartOf":{"@id":"https:\/\/megazoo.co.kr\/eng\/#website"},"datePublished":"2026-10-21T03:25:36+00:00","dateModified":"2026-10-21T08:58:23+00:00","breadcrumb":{"@id":"https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/megazoo.co.kr\/eng\/2026-exhibitor-gallery-2\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/megazoo.co.kr\/eng\/"},{"@type":"ListItem","position":2,"name":"2026 MEGAZOO PART 2 Exhibitor Gallery"}]},{"@type":"WebSite","@id":"https:\/\/megazoo.co.kr\/eng\/#website","url":"https:\/\/megazoo.co.kr\/eng\/","name":"MEGA ZOO ENG","description":"Just another WordPress site","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/megazoo.co.kr\/eng\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"}]}},"_links":{"self":[{"href":"https:\/\/megazoo.co.kr\/eng\/wp-json\/wp\/v2\/pages\/94314","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/megazoo.co.kr\/eng\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/megazoo.co.kr\/eng\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/megazoo.co.kr\/eng\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/megazoo.co.kr\/eng\/wp-json\/wp\/v2\/comments?post=94314"}],"version-history":[{"count":4,"href":"https:\/\/megazoo.co.kr\/eng\/wp-json\/wp\/v2\/pages\/94314\/revisions"}],"predecessor-version":[{"id":94328,"href":"https:\/\/megazoo.co.kr\/eng\/wp-json\/wp\/v2\/pages\/94314\/revisions\/94328"}],"wp:attachment":[{"href":"https:\/\/megazoo.co.kr\/eng\/wp-json\/wp\/v2\/media?parent=94314"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}