{"version":3,"file":"static/chunks/app/(allowed)/community/hometownNews/[id]/page-2f8306cfe92001ae.js","mappings":"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","sources":["webpack://_N_E/?2f2b","webpack://_N_E/../common/__generated__/icon/figma/textfieldclose.svg","webpack://_N_E/../common/__generated__/icon/components/SvgTextfieldclose.tsx","webpack://_N_E/../common/components/atom/Indicator/Indicator.tsx","webpack://_N_E/./src/app/(allowed)/community/_components/DownloadAppBanner.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/HometownNewsBookmarkButton.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/HometownNewsDaysAgo.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/[id]/_hooks/useGetHometownNewsRelatedList.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/HometownNewsDetailBottomDrawer.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/ImageFloatingBanner.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/MoreFloatingButton.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/RecommendHometownNewsCard.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/RecommendHometownNewsVerticalCard.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/RecommendHometownNews.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/MoreHometownNewsList.tsx","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/TopBanner.tsx","webpack://_N_E/./src/components/molecule/BookmarkButton.tsx","webpack://_N_E/../common/__generated__/icon/figma/mail-send.svg","webpack://_N_E/../common/__generated__/icon/components/SvgMailSend.tsx","webpack://_N_E/./src/components/molecule/CommentField.tsx","webpack://_N_E/./src/components/template/CommentListWithField.tsx","webpack://_N_E/./src/hooks/useBookmark.ts","webpack://_N_E/./src/hooks/useToastPoint.tsx","webpack://_N_E/./src/query-factory/auth.ts","webpack://_N_E/./src/query-factory/dpg.ts","webpack://_N_E/./src/query-factory/family.ts","webpack://_N_E/./src/query-factory/hometown-news.ts","webpack://_N_E/./src/query-factory/meta-code.ts","webpack://_N_E/./src/utils/redirectDetailPage.ts","webpack://_N_E/./src/api/getPolicyDetail.ts","webpack://_N_E/./src/query-factory/policy.ts","webpack://_N_E/./src/query-factory/policy-info.ts","webpack://_N_E/./src/query-factory/situation.ts","webpack://_N_E/./src/query-factory/index.ts","webpack://_N_E/./src/query-factory/point.ts","webpack://_N_E/./src/app/(allowed)/community/hometownNews/[id]/page.module.scss","webpack://_N_E/./src/app/(allowed)/community/hometownNews/_components/HometownNewsDetailBottomDrawer.module.scss","webpack://_N_E/../../node_modules/es-toolkit/dist/error/AbortError.mjs","webpack://_N_E/../../node_modules/es-toolkit/dist/promise/delay.mjs","webpack://_N_E/../../node_modules/es-toolkit/dist/error/TimeoutError.mjs","webpack://_N_E/../../node_modules/es-toolkit/dist/promise/timeout.mjs","webpack://_N_E/../../node_modules/es-toolkit/dist/promise/withTimeout.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/hooks/animation-controls.mjs","webpack://_N_E/../../node_modules/framer-motion/dist/es/animation/hooks/use-animation.mjs"],"sourcesContent":["import(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-accordion/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-alert-dialog/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-avatar/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-checkbox/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-collapsible/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-context-menu/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-dialog/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-dropdown-menu/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-form/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-hover-card/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-label/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-menubar/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-navigation-menu/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-popover/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-portal/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-progress/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-radio-group/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-scroll-area/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-select/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-slider/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-switch/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-tabs/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-toast/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-toggle-group/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-toggle/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-toolbar/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/react-tooltip/dist/index.mjs\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"Avatar\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/avatar.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/callout.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/checkbox-cards.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/checkbox-group.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"Checkbox\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/checkbox.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/context-menu.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/dropdown-menu.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/radio-group.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"Radio\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/radio.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/segmented-control.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/select.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/text-field.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"ThemePanel\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/theme-panel.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@radix-ui/themes/dist/esm/components/theme.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"HydrationBoundary\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/HydrationBoundary.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"IsRestoringProvider\",\"useIsRestoring\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/isRestoring.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/QueryClientProvider.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"QueryErrorResetBoundary\",\"useQueryErrorResetBoundary\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useInfiniteQuery\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/useInfiniteQuery.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useIsFetching\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/useIsFetching.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useMutation\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/useMutation.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useIsMutating\",\"useMutationState\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/useMutationState.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useQueries\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/useQueries.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useQuery\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/useQuery.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useSuspenseInfiniteQuery\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/useSuspenseInfiniteQuery.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useSuspenseQueries\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/useSuspenseQueries.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useSuspenseQuery\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/@tanstack/react-query/build/modern/useSuspenseQuery.js\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/next/dist/client/image-component.js\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"ToastContainer\",\"Slide\"] */ \"/codebuild/output/src3192975231/src/wello-client/node_modules/react-toastify/dist/react-toastify.esm.mjs\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/__generated__/icon/figma/add.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/__generated__/icon/figma/bookmark-fill.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/__generated__/icon/figma/bookmark.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/__generated__/icon/figma/chatbubble-typing.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/__generated__/icon/figma/like-fill.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/__generated__/icon/figma/like.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/__generated__/icon/figma/share-link.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Badge/svg/apply-badge.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Badge/svg/building-badge.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Badge/svg/star-badge.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Checkbox/Checkbox.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Chip/Chip.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/DatePicker/DatePicker.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/DateRangePicker/DateRangePicker.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Indicator/Indicator.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Input/Input.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/InputDecorator/InputDecorator.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Logo/svg/biz.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Logo/svg/wello.svg\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Modal/Modal.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Radio/Radio.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Slider/Slider.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/Tab/Tab.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/atom/TextArea/TextArea.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"FullHandledBottomDrawer\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/organism/BottomDrawer/FullHandledBottomDrawer.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"BottomDrawer\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/organism/BottomDrawer/index.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"CustomEditor\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/organism/CustomEditor/index.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/organism/Popover/Popover.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/organism/Popover/UnControlledPopover.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/organism/Portal/Portal.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/organism/TestMark/TestMark.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/common/components/organism/Tooltip/Tooltip.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/public/assets/svgs/comment_off.svg\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"DownloadAppBanner\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/app/(allowed)/community/_components/DownloadAppBanner.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"HometownNewsBookmarkButton\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/app/(allowed)/community/hometownNews/_components/HometownNewsBookmarkButton.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"HometownNewsDaysAgo\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/app/(allowed)/community/hometownNews/_components/HometownNewsDaysAgo.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"MoreHometownNewsList\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/app/(allowed)/community/hometownNews/_components/MoreHometownNewsList.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"TopBanner\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/app/(allowed)/community/hometownNews/_components/TopBanner.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/atom/CustomLink.tsx\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/client/index.ts\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Badge/Badge.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Button/Button.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Card/HometownNewsDetailCard.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Card/NewsCard.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Card/PolicyInfoLargeCard.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Card/PolicyInfoMiniCard.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Card/RecommendNewsCard.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Footer/ContentsListFooter.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Footer/NewsCardFooter.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Header/JoinPageHeader.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Header/ListPageHeader.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Link/LinkableBox.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Loading/Skeleton.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/components/server/Loading/Spinner.module.scss\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/app/(allowed)/community/hometownNews/[id]/page.module.scss\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useCustomRouter\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/hooks/useCustomRouter.ts\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"useGeolocation\"] */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/hooks/useGeolocation.ts\");\n;\nimport(/* webpackMode: \"eager\" */ \"/codebuild/output/src3192975231/src/wello-client/packages/wello/src/stores/GlobalStore/index.ts\");\n","var _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgTextfieldclose = function SvgTextfieldclose(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"1em\",\n    height: \"1em\",\n    fill: \"none\",\n    viewBox: \"0 0 24 24\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#000\",\n    fillRule: \"evenodd\",\n    d: \"M12 23c6.075 0 11-4.925 11-11S18.075 1 12 1 1 5.925 1 12s4.925 11 11 11m4.705-14.295a.998.998 0 0 0-1.41-1.41L12 10.589 8.705 7.295a.997.997 0 1 0-1.41 1.41L10.589 12l-3.294 3.295a.998.998 0 0 0 1.41 1.41L12 13.411l3.295 3.294a.998.998 0 0 0 1.41-1.41L13.411 12z\",\n    clipRule: \"evenodd\"\n  })));\n};\nexport default SvgTextfieldclose;","import { createSvgComponent } from \"../../../icon/createSvgComponent\";\nimport Textfieldclose from \"../figma/textfieldclose.svg\";\nexport default createSvgComponent(Textfieldclose);","'use client';\n\nimport type { ProgressProps } from '@radix-ui/themes';\n\nimport { Progress } from '@radix-ui/themes';\n\nexport { Progress, type ProgressProps };\n","'use client';\n\nimport { Button, Portal } from '@common/components';\nimport { SvgDelete } from '@common/icon';\nimport dayjs from 'dayjs';\nimport Image from 'next/image';\nimport { useEffect, useState } from 'react';\nimport { useShallow } from 'zustand/react/shallow';\n\nimport { DEFAULT_META, SELECTOR } from '@/constants';\nimport { useDeviceInfoStore } from '@/stores/DeviceStore';\n\nexport const DownloadAppBanner = () => {\n  const [webviewType, osType] = useDeviceInfoStore(\n    useShallow((state) => [state.webviewType, state.osType]),\n  );\n\n  const [isVisible, setIsVisible] = useState(false);\n\n  const isMobileWeb =\n    !webviewType && osType && ['ios', 'android'].includes(osType);\n\n  useEffect(() => {\n    if (!isMobileWeb) return;\n\n    const lastClosed = localStorage.getItem('bannerLastClosed');\n    const now = dayjs();\n\n    if (!lastClosed || !dayjs(lastClosed).isSame(now, 'day')) {\n      setIsVisible(true);\n    }\n  }, [isMobileWeb]);\n\n  const handleClose = () => {\n    setIsVisible(false);\n    localStorage.setItem('bannerLastClosed', dayjs().toISOString());\n  };\n\n  if (!isVisible) return null;\n\n  return (\n    <Portal renderTo={() => document.getElementById(SELECTOR.PAGE_NAV_WRAPPER)}>\n      <aside className=\"flex items-center justify-between gap-8 bg-Gray-100 px-16 py-12\">\n        <div className=\"flex items-center gap-12 font-600 typo-caption1\">\n          <Image\n            alt=\"Wello Logo\"\n            className=\"size-32\"\n            height={32}\n            quality={100}\n            src=\"/assets/pngs/wello-logo.png\"\n            width={32}\n          />\n          맞춤 정책 확인하고 리워드 받기\n        </div>\n        <div className=\"flex items-center gap-8\">\n          <Button asChild className=\"bg-B-500 hover:bg-B-600\" dimensions=\"H26\">\n            <a\n              href={\n                osType === 'ios'\n                  ? DEFAULT_META.appLinks.ios.url\n                  : DEFAULT_META.appLinks.android.url\n              }\n              rel=\"noreferrer\"\n              target=\"_blank\"\n            >\n              앱으로 보기\n            </a>\n          </Button>\n          <button className=\"h-fit p-0\" type=\"button\" onClick={handleClose}>\n            <SvgDelete className=\"size-12 text-Gray-700\" name=\"close\" />\n          </button>\n        </div>\n      </aside>\n    </Portal>\n  );\n};\n","'use client';\n\nimport { assert } from '@common/utils';\nimport { useQuery } from '@tanstack/react-query';\n\nimport { BOOKMARK_TYPE } from '@/api';\nimport { UnauthQueryOptions } from '@/api/v2';\nimport { BookmarkButton } from '@/components/molecule/BookmarkButton';\nimport { useBookmark } from '@/hooks/useBookmark';\nimport { hometownNewsQueryOptions } from '@/query-factory';\nimport { useAuthStore } from '@/stores/AuthStore';\n\ninterface HometownNewsBookmarkButtonProps {\n  idIdx: string;\n}\n\nexport const HometownNewsBookmarkButton = ({\n  idIdx,\n}: HometownNewsBookmarkButtonProps) => {\n  const isLogin = useAuthStore((state) => !!state.isLogin);\n\n  const { data: id } = useQuery({\n    ...UnauthQueryOptions[\n      'get:/wello/v2/allows/hometown-news/{hometown_news_id_idx}'\n    ]({\n      path: {\n        hometown_news_id_idx: idIdx,\n      },\n    }),\n    select: ({ context }) => context?.detail_hometown_news?.hometown_news_id,\n  });\n\n  const feedbackQuery = useQuery({\n    ...hometownNewsQueryOptions.feedback({\n      id,\n      isLogin,\n    }),\n    select: ({ context }) => ({\n      isBookmarked: context?.wishlist_yn,\n      bookmarkCount: context?.wishlist_count,\n    }),\n  });\n\n  const { bookmark } = useBookmark();\n\n  return (\n    <BookmarkButton\n      {...feedbackQuery.data}\n      onClick={(isBookmarked) => {\n        assert(id);\n\n        bookmark({\n          bookmarkType: BOOKMARK_TYPE.HOMETOWN_NEWS,\n          contentId: id,\n          isBookmarked,\n          idx: idIdx,\n        });\n      }}\n    />\n  );\n};\n","'use client';\n\nimport { useQuery } from '@tanstack/react-query';\n\nimport { hometownNewsQueryOptions } from '@/query-factory';\nimport { useAuthStore } from '@/stores/AuthStore';\n\ninterface HometownNewsDaysAgoProps {\n  fallbackDate: string;\n  id: number;\n}\n\nexport const HometownNewsDaysAgo = ({\n  fallbackDate,\n  id,\n}: HometownNewsDaysAgoProps) => {\n  const isLogin = useAuthStore((state) => state.isLogin);\n  const feedback = useQuery({\n    ...hometownNewsQueryOptions.feedback({\n      id,\n      isLogin,\n    }),\n    select: ({ context }) => ({\n      daysAgo: context?.days_ago,\n    }),\n  });\n\n  const { daysAgo: clientDaysAgo } = feedback.data ?? {};\n  const daysAgo = clientDaysAgo ?? fallbackDate;\n\n  return <p className=\"text-Gray-700 typo-caption1\">{daysAgo}</p>;\n};\n","import { ERROR_CODE, isNormalizedResponse } from '@common/utils';\nimport { redirect } from 'next/navigation';\n\nimport { UNAUTH_API } from '@/api';\nimport { ROUTES } from '@/constants';\n\ninterface UseGetHometownNewsRelatedListProps {\n  idIdx: string;\n}\n\nexport const useGetHometownNewsRelatedList = async ({\n  idIdx,\n}: UseGetHometownNewsRelatedListProps) => {\n  try {\n    const { context } = await UNAUTH_API.getRelatedHometownNewsList({\n      hometownNewsIdIdx: idIdx,\n    });\n    if (!context) throw Error('hometown news list context not valid');\n\n    return {\n      list: context.contents ?? [],\n      keyword: context.search_keyword ?? '관련 소식',\n    };\n  } catch (e) {\n    if (isNormalizedResponse(e)) {\n      const { return_code } = e;\n\n      if (return_code === ERROR_CODE.HIDDEN) {\n        return redirect(ROUTES.ERROR.pathname({ code: return_code }));\n      }\n    }\n\n    throw e;\n  }\n};\n","'use client';\n\nimport { BottomDrawer, Button } from '@common/components';\nimport { useQuery } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\n\nimport { BANNER_CONTENTS_TYPE } from '@/api';\nimport { UnauthQueryOptions } from '@/api/v2';\nimport { LazyImage } from '@/components/client';\nimport { SELECTOR, STORAGE_KEY } from '@/constants';\nimport { useCheckWelloApp } from '@/hooks/useCheckWelloApp';\nimport { useAuthStore } from '@/stores/AuthStore';\n\nimport styles from './HometownNewsDetailBottomDrawer.module.scss';\n\nexport const HometownNewsDetailBottomDrawer = () => {\n  const [isShow, setIsShow] = useState(false);\n  const { isWelloApp } = useCheckWelloApp();\n  const isLogin = useAuthStore((state) => state.isLogin);\n\n  const { data, isLoading } = useQuery({\n    ...UnauthQueryOptions['get:/wello/v2/allows/banner']({\n      query: {\n        contents_type_cd: BANNER_CONTENTS_TYPE.HOMETOWN_BOTTOM_SHEET,\n      },\n    }),\n  });\n\n  const banner = (data?.context?.contents ?? [])[0];\n\n  const applyFileUrl = isWelloApp ? banner?.app_file_url : banner?.file_url;\n  const applyLinkUrl = isWelloApp ? banner?.app_link_url : banner?.link_url;\n\n  useEffect(() => {\n    if (!window || !sessionStorage) return;\n\n    const bottomDrawerShowPathname = sessionStorage.getItem(\n      STORAGE_KEY.HOMETOWN_NEWS_DETAIL_BOTTOM_DRAWER_PATH,\n    );\n\n    setTimeout(() => {\n      setIsShow(bottomDrawerShowPathname === window.location.pathname);\n      sessionStorage.removeItem(\n        STORAGE_KEY.HOMETOWN_NEWS_DETAIL_BOTTOM_DRAWER_PATH,\n      );\n    }, 2000);\n  }, []);\n\n  const handleClick = () => {\n    if (!applyLinkUrl) return;\n    window.location.href = applyLinkUrl;\n  };\n  const handleClose = () => {\n    setIsShow(false);\n  };\n\n  const isNoRender =\n    !!isLogin || (!isLoading && !banner) || !(applyFileUrl && applyLinkUrl);\n\n  if (isNoRender) return null;\n\n  return (\n    <BottomDrawer\n      opened={isShow}\n      renderTo={() => document.getElementById(SELECTOR.MAIN_WRAPPER)}\n      onClose={handleClose}\n    >\n      <BottomDrawer.HandleWrapper>\n        <BottomDrawer.Handle />\n      </BottomDrawer.HandleWrapper>\n      <BottomDrawer.Contents className=\"mx-0 flex flex-col justify-between\">\n        <section className=\"flex flex-col items-center gap-28 px-[47.5px] py-5 pb-16\">\n          <section className=\"flex flex-col items-center gap-4 text-center\">\n            <p className=\"whitespace-pre-wrap font-700 text-Gray-900 typo-body1\">\n              {banner.title}\n            </p>\n            <p className=\"whitespace-pre-wrap font-400 text-Gray-700 typo-body4\">\n              {banner.subtitle}\n            </p>\n          </section>\n          <LazyImage className={styles.thumbnail} src={applyFileUrl} />\n        </section>\n        <section className=\"flex items-center justify-center px-20 py-16\">\n          <Button\n            className=\"w-full whitespace-pre-wrap px-0 py-16\"\n            theme=\"primary-fill\"\n            onClick={handleClick}\n          >\n            {banner.button_text}\n          </Button>\n        </section>\n      </BottomDrawer.Contents>\n    </BottomDrawer>\n  );\n};\n","'use client';\n\nimport { Button } from '@common/components';\nimport { SvgTextfieldclose } from '@common/icon';\nimport { useQuery } from '@tanstack/react-query';\nimport { useEffect, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nimport { BANNER_CONTENTS_TYPE } from '@/api';\nimport { UnauthQueryOptions } from '@/api/v2';\nimport { CustomLink } from '@/components/atom/CustomLink';\nimport { LazyImage } from '@/components/client';\nimport { SELECTOR } from '@/constants';\nimport { useCheckWelloApp } from '@/hooks/useCheckWelloApp';\n\nexport const ImageFloatingBanner = () => {\n  const [isClose, setIsClose] = useState(false);\n  const [isMounted, setIsMounted] = useState(false);\n\n  const { isWelloApp } = useCheckWelloApp();\n\n  const { data } = useQuery({\n    ...UnauthQueryOptions['get:/wello/v2/allows/banner']({\n      query: {\n        contents_type_cd: BANNER_CONTENTS_TYPE.HOMETOWN_FLOATING,\n      },\n    }),\n  });\n\n  const banner = (data?.context?.contents ?? [])[0];\n\n  useEffect(() => {\n    setIsMounted(true);\n  }, []);\n\n  const [mainElement, setMainElement] = useState<HTMLElement>();\n\n  useEffect(() => {\n    const mainElement = document.getElementById(SELECTOR.MAIN);\n    if (mainElement && isMounted) {\n      setMainElement(mainElement);\n    }\n  }, [isMounted]);\n\n  const applyFileUrl = isWelloApp ? banner?.app_file_url : banner?.file_url;\n  const applyLinkUrl = isWelloApp ? banner?.app_link_url : banner?.link_url;\n\n  const isNoRender = isClose || !banner || !(applyFileUrl && applyLinkUrl);\n\n  if (isNoRender) return null;\n\n  return mainElement ? (\n    createPortal(\n      <CustomLink\n        className=\"sticky bottom-70 z-[2] ml-auto mr-20 size-116 rounded-mlarge\"\n        href={applyLinkUrl}\n        target={banner.target_new_yn ? '_blank' : '_self'}\n      >\n        <section className=\"relative size-full\">\n          <LazyImage\n            alt=\"image\"\n            className=\"rounded-mlarge\"\n            height={116}\n            src={applyFileUrl}\n            width={116}\n          />\n          <Button\n            className=\"absolute -right-12 -top-12 size-fit p-0\"\n            theme=\"sub-text\"\n            onClick={(e) => {\n              e.preventDefault();\n              setIsClose(true);\n            }}\n          >\n            <section className=\"relative flex size-24 items-center justify-center\">\n              <SvgTextfieldclose className=\"absolute left-0 top-0 size-full text-Gray-black opacity-100\" />\n              <div className=\"size-20 rounded-pill bg-Gray-white\" />\n            </section>\n          </Button>\n        </section>\n      </CustomLink>,\n      mainElement,\n    )\n  ) : (\n    <></>\n  );\n};\n","'use client';\n\nimport { Portal } from '@common/components';\nimport { SvgChevrondown } from '@common/icon';\nimport { throttle } from 'es-toolkit';\nimport { motion, useAnimation } from 'framer-motion';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { SELECTOR } from '@/constants';\n\ninterface MoreFloatingButtonProps {\n  contentAreaSelector: string;\n  recommendHometownNewsSelector: string;\n  keyword: string;\n}\n\nexport const MoreFloatingButton = ({\n  contentAreaSelector,\n  recommendHometownNewsSelector,\n  keyword,\n}: MoreFloatingButtonProps) => {\n  const [isMounted, setIsMounted] = useState(false);\n  const [mainElement, setMainElement] = useState<HTMLElement>();\n  const [contentsElement, setContentsElement] = useState<HTMLElement>();\n  const [recommendHometownNewsElement, setRecommendHometownNewsElement] =\n    useState<HTMLElement>();\n  const [isShow, setIsShow] = useState(false);\n  const controls = useAnimation();\n\n  useEffect(() => {\n    setIsMounted(true);\n  }, []);\n\n  const updateIsShow = useCallback(() => {\n    if (\n      mainElement === undefined ||\n      contentsElement === undefined ||\n      recommendHometownNewsElement === undefined\n    )\n      return;\n\n    const isContentsScrollOveredHalf =\n      contentsElement.offsetTop + contentsElement.offsetHeight / 2 <\n      mainElement.scrollTop + mainElement.offsetHeight / 2;\n\n    const isRecommendHometownNewsListScrollOvered =\n      recommendHometownNewsElement.offsetTop <\n      mainElement.scrollTop + mainElement.offsetHeight;\n\n    setIsShow(\n      isContentsScrollOveredHalf && !isRecommendHometownNewsListScrollOvered,\n    );\n  }, [contentsElement, mainElement, recommendHometownNewsElement]);\n\n  useEffect(() => {\n    if (!isMounted) return;\n\n    const mainElement = document.getElementById(SELECTOR.MAIN);\n    if (mainElement) {\n      setMainElement(mainElement);\n    }\n\n    const contentsElement = document.getElementById(contentAreaSelector);\n    if (contentsElement) {\n      setContentsElement(contentsElement);\n    }\n\n    const recommendHometownNewsElement = document.getElementById(\n      recommendHometownNewsSelector,\n    );\n    if (recommendHometownNewsElement) {\n      setRecommendHometownNewsElement(recommendHometownNewsElement);\n    }\n  }, [isMounted, contentAreaSelector, recommendHometownNewsSelector]);\n\n  useEffect(() => {\n    if (mainElement && contentsElement && recommendHometownNewsElement) {\n      updateIsShow();\n    }\n  }, [\n    mainElement,\n    contentsElement,\n    recommendHometownNewsElement,\n    updateIsShow,\n  ]);\n\n  useEffect(() => {\n    if (mainElement === undefined) return;\n\n    const handleScroll = throttle(() => updateIsShow(), 200);\n\n    mainElement.addEventListener('scroll', handleScroll);\n\n    return () => mainElement.removeEventListener('scroll', handleScroll);\n  }, [mainElement, updateIsShow]);\n\n  useEffect(() => {\n    controls.start({\n      opacity: isShow ? SHOW_BUTTON_OPACITY : INITIALIZE_BUTTON_OPACITY,\n      bottom: isShow ? SHOW_BUTTON_BOTTOM : INITIALIZE_BUTTON_BOTTOM,\n      transition: { duration: 0.2 },\n    });\n  }, [isShow, controls]);\n\n  const handleClick = () => {\n    if (recommendHometownNewsElement === undefined) return;\n\n    recommendHometownNewsElement.scrollIntoView({\n      behavior: 'smooth',\n      block: 'start',\n    });\n  };\n\n  return (\n    <Portal renderTo={() => document.getElementById(SELECTOR.MAIN)}>\n      <motion.button\n        animate={controls}\n        className=\"sticky bottom-10 mx-auto size-fit p-0\"\n        disabled={!isShow}\n        initial={{\n          opacity: INITIALIZE_BUTTON_OPACITY,\n          bottom: INITIALIZE_BUTTON_BOTTOM,\n        }}\n        type=\"button\"\n        onClick={handleClick}\n      >\n        <section className=\"flex h-40 w-full items-center justify-center gap-4 rounded-pill bg-Gray-black px-20\">\n          <p className=\"font-700 text-Gray-white typo-body4\">\n            {keyword} 소식 더보기\n          </p>\n          <SvgChevrondown className=\"size-14 text-Gray-white\" />\n        </section>\n      </motion.button>\n    </Portal>\n  );\n};\n\nconst INITIALIZE_BUTTON_OPACITY = 0;\nconst INITIALIZE_BUTTON_BOTTOM = -40;\nconst SHOW_BUTTON_OPACITY = 1;\nconst SHOW_BUTTON_BOTTOM = 10;\n","'use client';\n\nimport { CustomLink } from '@/components/atom/CustomLink';\nimport { LazyImage } from '@/components/client';\nimport { ROUTES, STORAGE_KEY } from '@/constants';\n\ninterface RecommendHometownNewsCardProps {\n  idIdx: string;\n  name: string;\n  publishedAt: string;\n  thumbnail: string;\n}\n\nexport const RecommendHometownNewsCard = ({\n  idIdx,\n  name,\n  publishedAt,\n  thumbnail,\n}: RecommendHometownNewsCardProps) => {\n  const routePathname = ROUTES.HOMETOWN_NEWS_DETAIL.pathname({ idIdx: idIdx });\n\n  const handleClick = () => {\n    sessionStorage.setItem(\n      STORAGE_KEY.HOMETOWN_NEWS_DETAIL_BOTTOM_DRAWER_PATH,\n      routePathname,\n    );\n  };\n\n  return (\n    <CustomLink\n      className=\"flex h-88 items-center gap-16 rounded-medium border-1 border-Gray-300 bg-Gray-white px-16\"\n      href={routePathname}\n      onClick={handleClick}\n    >\n      <LazyImage\n        alt={name}\n        className=\"size-56 rounded-medium object-cover\"\n        height={56}\n        src={thumbnail}\n        width={56}\n      />\n      <section className=\"flex flex-1 flex-col\">\n        <h4 className=\"line-clamp-1 text-ellipsis font-500 text-Gray-900 typo-body3\">\n          {name}\n        </h4>\n        <p className=\"font-400 text-Gray-600 typo-caption1\">\n          {publishedAt} 작성\n        </p>\n      </section>\n    </CustomLink>\n  );\n};\n","import { cn } from '@common/utils';\n\nimport { CustomLink } from '@/components/atom/CustomLink';\nimport { LazyImage } from '@/components/client';\nimport { ROUTES, STORAGE_KEY } from '@/constants';\n\ninterface RecommendHometownNewsVerticalCardProps {\n  className?: string;\n  idIdx: string;\n  name: string;\n  publishedAt: string;\n  thumbnail: string;\n}\n\nexport const RecommendHometownNewsVerticalCard = ({\n  className,\n  idIdx,\n  name,\n  publishedAt,\n  thumbnail,\n}: RecommendHometownNewsVerticalCardProps) => {\n  const routePathname = ROUTES.HOMETOWN_NEWS_DETAIL.pathname({ idIdx: idIdx });\n\n  const handleClick = () => {\n    sessionStorage.setItem(\n      STORAGE_KEY.HOMETOWN_NEWS_DETAIL_BOTTOM_DRAWER_PATH,\n      routePathname,\n    );\n  };\n\n  return (\n    <CustomLink\n      className={cn('flex h-244 w-161 flex-col gap-10', className)}\n      href={routePathname}\n      onClick={handleClick}\n    >\n      <LazyImage\n        alt={name}\n        className=\"size-160 rounded-medium border border-Gray-300\"\n        height={160}\n        src={thumbnail}\n        width={160}\n      />\n      <section className=\"flex h-73 flex-col justify-between gap-6\">\n        <h4 className=\"line-clamp-2 text-ellipsis break-all font-500 text-Gray-900 typo-body3\">\n          {name}\n        </h4>\n        <p className=\"font-400 text-Gray-600 typo-caption1\">\n          {publishedAt} 작성\n        </p>\n      </section>\n    </CustomLink>\n  );\n};\n","'use client';\n\nimport type { ListHometownNewsDto } from '@generatedapi/unauth';\nimport { Mousewheel } from 'swiper/modules';\nimport type { SwiperProps } from 'swiper/react';\nimport { Swiper, SwiperSlide } from 'swiper/react';\n\nimport { RecommendHometownNewsCard } from './RecommendHometownNewsCard';\nimport { RecommendHometownNewsVerticalCard } from './RecommendHometownNewsVerticalCard';\n\ninterface RecommendHometownNewsProps {\n  id?: string;\n  list: ListHometownNewsDto[];\n}\n\nexport const RecommendHometownNews = ({\n  id,\n  list,\n}: RecommendHometownNewsProps) => {\n  const listSection = {\n    list: list.length < 7 ? list : list.slice(0, 3),\n    swipeList: list.length < 7 ? [] : list.slice(3),\n  };\n\n  if (list.length < 1) return null;\n\n  return (\n    <article className=\"flex flex-col border-t-[6px] border-Gray-200 bg-Gray-white pb-30\">\n      <h4\n        className=\"pb-16 pl-20 pt-32 font-700 text-Gray-900 typo-body1\"\n        id={id}\n      >\n        이런 이야기는 어때요?\n      </h4>\n      <ul className=\"mb-20 flex flex-col gap-8 px-20\">\n        {listSection.list.map((news) => (\n          <li key={news.hometown_news_id}>\n            <RecommendHometownNewsCard\n              idIdx={news.hometown_news_id_idx}\n              name={news.hometown_news_name}\n              publishedAt={news.published_at}\n              thumbnail={news.thumbnail}\n            />\n          </li>\n        ))}\n      </ul>\n      {listSection.swipeList.length > 0 ? (\n        <Swiper {...SWIPER_PROPS} className=\"m-0 mb-20 pl-20\">\n          {listSection.swipeList.map((news) => (\n            <SwiperSlide\n              key={news.hometown_news_id}\n              className=\"w-fit last:mr-20\"\n            >\n              <RecommendHometownNewsVerticalCard\n                key={news.hometown_news_id}\n                className=\"select-none\"\n                idIdx={news.hometown_news_id_idx}\n                name={news.hometown_news_name}\n                publishedAt={news.published_at}\n                thumbnail={news.thumbnail}\n              />\n            </SwiperSlide>\n          ))}\n        </Swiper>\n      ) : null}\n    </article>\n  );\n};\n\nconst SWIPER_PROPS = {\n  slidesPerView: 'auto',\n  spaceBetween: 13,\n  mousewheel: true,\n  modules: [Mousewheel],\n} satisfies SwiperProps;\n","'use client';\n\nimport { createUuid } from '@common/utils';\nimport { useSuspenseQuery } from '@tanstack/react-query';\n\nimport { COMMENT_TYPE } from '@/api';\nimport { getCommentList } from '@/api/getCommentList';\nimport { CommentListWithField } from '@/components/template/CommentListWithField';\n\nimport { useGetHometownNewsRelatedList as getHometownNewsRelatedList } from '../[id]/_hooks/useGetHometownNewsRelatedList';\nimport { HometownNewsDetailBottomDrawer } from './HometownNewsDetailBottomDrawer';\nimport { ImageFloatingBanner } from './ImageFloatingBanner';\nimport { MoreFloatingButton } from './MoreFloatingButton';\nimport { RecommendHometownNews } from './RecommendHometownNews';\n\ninterface MoreHometownNewsListProps {\n  id: number;\n  idx: string;\n  contentAreaId: string;\n}\n\nexport const MoreHometownNewsList = ({\n  id,\n  idx,\n  contentAreaId,\n}: MoreHometownNewsListProps) => {\n  const hometownNewsRelated = useSuspenseQuery({\n    queryKey: ['getHometownNewsRelatedList', idx],\n    queryFn: async () => {\n      const {\n        list: hometownNewsRelatedList,\n        keyword: hometownNewsRelatedListKeyword,\n      } = await getHometownNewsRelatedList({ idIdx: idx });\n\n      return { hometownNewsRelatedList, hometownNewsRelatedListKeyword };\n    },\n  });\n  const { hometownNewsRelatedList, hometownNewsRelatedListKeyword } =\n    hometownNewsRelated.data;\n\n  const isNotRenderRelatedList = hometownNewsRelatedList.length > 0;\n\n  const initialComment = useSuspenseQuery({\n    queryKey: ['getCommentList', id],\n    queryFn: async () =>\n      await getCommentList({\n        commentType: COMMENT_TYPE.HOMETOWN_NEWS,\n        id,\n      }),\n  });\n\n  const initialCommentData = initialComment.data;\n\n  const recommendHometownNewsAreaId = createUuid();\n\n  return (\n    <>\n      {isNotRenderRelatedList ? (\n        <RecommendHometownNews\n          id={recommendHometownNewsAreaId}\n          list={hometownNewsRelatedList}\n        />\n      ) : null}\n      <CommentListWithField\n        commentType={COMMENT_TYPE.HOMETOWN_NEWS}\n        contentId={id}\n        initialData={initialCommentData}\n      />\n      {isNotRenderRelatedList ? (\n        <MoreFloatingButton\n          contentAreaSelector={contentAreaId}\n          keyword={hometownNewsRelatedListKeyword}\n          recommendHometownNewsSelector={recommendHometownNewsAreaId}\n        />\n      ) : null}\n      <ImageFloatingBanner />\n      <HometownNewsDetailBottomDrawer />\n    </>\n  );\n};\n","'use client';\n\nimport { Button } from '@common/components';\nimport { SvgDelete } from '@common/icon';\nimport { useState } from 'react';\n\nimport { CustomLink } from '@/components/atom/CustomLink';\nimport { useCheckWelloApp } from '@/hooks/useCheckWelloApp';\nimport { useAuthStore } from '@/stores/AuthStore';\n\ninterface TopBannerProps {\n  appFileUrl?: string;\n  appLinkUrl?: string;\n  fileUrl?: string;\n  linkUrl?: string;\n  title?: string;\n  targetNewYn?: boolean;\n}\n\nexport const TopBanner = ({\n  appFileUrl,\n  appLinkUrl,\n  fileUrl,\n  linkUrl,\n  title,\n  targetNewYn,\n}: TopBannerProps) => {\n  const [isClose, setIsClose] = useState(false);\n  const { isWelloApp } = useCheckWelloApp();\n  const isLogin = useAuthStore((state) => state.isLogin);\n\n  const applyFileUrl = isWelloApp ? appFileUrl : fileUrl;\n  const applyLinkUrl = isWelloApp ? appLinkUrl : linkUrl;\n\n  const isNoRender =\n    !!isLogin ||\n    isLogin === undefined ||\n    isClose ||\n    !(applyFileUrl && applyLinkUrl);\n\n  if (isNoRender) return null;\n\n  return (\n    <CustomLink\n      className=\"relative flex w-full items-center pt-[18.93%]\"\n      href={applyLinkUrl}\n      target={targetNewYn ? '_blank' : '_self'}\n    >\n      <img\n        alt={title}\n        className=\"absolute left-0 top-0 size-full\"\n        src={applyFileUrl}\n      />\n      <Button\n        className=\"absolute right-22 top-1/2 size-fit -translate-y-1/2 p-0\"\n        theme=\"sub-text\"\n        onClick={(e) => {\n          e.preventDefault();\n          setIsClose(true);\n        }}\n      >\n        <SvgDelete className=\"size-20 text-Gray-900\" />\n      </Button>\n    </CustomLink>\n  );\n};\n","'use client';\n\nimport { SvgBookmarkFill } from '@common/icon';\nimport { cn } from '@common/utils';\nimport { useState } from 'react';\nimport CountUp from 'react-countup';\nimport { useInView } from 'react-intersection-observer';\n\ninterface BookmarkButtonProps {\n  bookmarkCount?: number;\n  isBookmarked?: boolean;\n  onClick?: (isBookmarked: boolean) => void;\n}\n\nexport const BookmarkButton = ({\n  bookmarkCount = 0,\n  isBookmarked = false,\n  onClick,\n}: BookmarkButtonProps) => {\n  const [isDisplayed, setIsDisplayed] = useState(false);\n\n  const inView = useInView({\n    onChange: (inView) => {\n      if (inView) {\n        setIsDisplayed(true);\n      }\n    },\n  });\n\n  return (\n    <button\n      ref={inView.ref}\n      className=\"group h-36 gap-4 rounded-pill border border-Gray-300 px-16 flex-center\"\n      type=\"button\"\n      onClick={(e) => {\n        e.preventDefault();\n        onClick?.(isBookmarked);\n      }}\n    >\n      <SvgBookmarkFill\n        className={cn(\n          'size-18 text-Gray-400',\n          'duration-75 group-active:scale-75',\n          {\n            'text-B-500': isBookmarked,\n          },\n        )}\n      />\n      {isDisplayed ? (\n        <CountUp\n          preserveValue\n          startOnMount\n          className=\"font-400 text-Gray-700 typo-body4\"\n          end={bookmarkCount}\n        />\n      ) : null}\n    </button>\n  );\n};\n","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nvar SvgMailSend = function SvgMailSend(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: \"1em\",\n    height: \"1em\",\n    fill: \"none\",\n    viewBox: \"0 0 24 24\"\n  }, props), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n    clipPath: \"url(#mail-send_svg__a)\"\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#000\",\n    fillRule: \"evenodd\",\n    d: \"M22.092.795a2 2 0 0 0-.288.076c-.393.14-20.294 7.802-20.43 7.865-.17.079-.362.248-.446.393a.93.93 0 0 0-.132.564c.02.399.225.69.62.882.112.054 2.008.917 4.212 1.917s4.02 1.831 4.034 1.846c.015.014.845 1.83 1.846 4.034 1 2.204 1.863 4.1 1.918 4.21.126.26.29.432.51.537.154.072.18.077.428.077.251 0 .272-.004.422-.08q.314-.156.466-.47c.078-.16 7.735-20.045 7.889-20.486a.85.85 0 0 0 .062-.42.8.8 0 0 0-.085-.379 1.01 1.01 0 0 0-1.026-.566m-9.654 5.824A1322 1322 0 0 0 4.416 9.72c0 .009 1.302.607 2.894 1.33l2.894 1.316 2.176-2.171c2.033-2.029 2.186-2.176 2.326-2.237.408-.178.847-.105 1.143.192.297.296.37.735.192 1.143-.061.14-.208.293-2.237 2.326l-2.171 2.177 1.315 2.893a186 186 0 0 0 1.33 2.894c.01 0 1.392-3.577 3.073-7.95 1.682-4.372 3.072-7.985 3.09-8.028a.3.3 0 0 0 .025-.076c-.003 0-3.616 1.39-8.028 3.089\",\n    clipRule: \"evenodd\"\n  }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n    id: \"mail-send_svg__a\"\n  }, /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#fff\",\n    d: \"M0 0h24v24H0z\"\n  })))));\n};\nexport default SvgMailSend;","import { createSvgComponent } from \"../../../icon/createSvgComponent\";\nimport MailSend from \"../figma/mail-send.svg\";\nexport default createSvgComponent(MailSend);","'use client';\n\nimport { type Editor, Spinner } from '@common/components';\nimport { Button, CustomEditor } from '@common/components';\nimport { SvgMailSend } from '@common/icon';\nimport { cn,CustomError } from '@common/utils';\nimport type { SaveWelloCommentResponse } from '@generatedapi/auth';\nimport { useMutation, useSuspenseQuery } from '@tanstack/react-query';\nimport { Fragment, Suspense, useEffect, useRef, useState } from 'react';\n\nimport type { COMMENT_TYPE } from '@/api';\nimport { AuthApi, AuthQueryKey, UnauthQueryOptions } from '@/api/v2';\nimport { ROUTES } from '@/constants';\nimport { useCustomRouter } from '@/hooks/useCustomRouter';\nimport { useAuthStore } from '@/stores/AuthStore';\n\nimport { BottomNavPortal } from '../client';\n\ninterface CommentFieldContentProps {\n  initOnFocus?: boolean;\n  replyTo?: string;\n  contentId: number;\n  commentType: COMMENT_TYPE;\n  rootCommentId?: number;\n  parentCommentId?: number;\n  isLogin: boolean;\n  onSuccess?: (response?: SaveWelloCommentResponse) => void;\n  topDivider?: boolean;\n  className?: string;\n}\n\nconst CommentFieldContent = ({\n  initOnFocus,\n  replyTo,\n  contentId,\n  commentType,\n  rootCommentId,\n  parentCommentId,\n  isLogin,\n  onSuccess,\n  topDivider = true,\n  className,\n}: CommentFieldContentProps) => {\n  const [isFocused, setIsFocused] = useState(false);\n\n  const startText = replyTo ? `@${replyTo}` : '';\n\n  const protectedPrefix = startText\n    ? `<p class=\"min-h-24 typo-body3 font-400 Gray-black\"><span types=\"listItem,starterKit\" style=\"color: rgb(51, 102, 255)\">${startText}</span>&nbsp;`\n    : null;\n\n  const minHtmlLength = replyTo ? protectedPrefix!.length : 0;\n\n  const tempContentForProtectedPrefix = useRef('');\n  const editorRef = useRef<Editor | null>(null);\n\n  const [isSubmitDisabled, setIsSubmitDisabled] = useState(false);\n\n  const handleSubmitDisabled = (editor: Editor) => {\n    let text = editor.getText({\n      blockSeparator: '\\n',\n    });\n\n    if (startText && text.startsWith(startText)) {\n      text = text.slice(startText.length + 1);\n    }\n\n    const isDisabled = !text.length;\n\n    setIsSubmitDisabled(isDisabled);\n  };\n\n  const initContent = (editor: Editor) => {\n    if (protectedPrefix) {\n      tempContentForProtectedPrefix.current = protectedPrefix;\n\n      editor.commands.setContent(protectedPrefix);\n    } else {\n      editor.commands.setContent('');\n    }\n  };\n\n  useEffect(() => {\n    if (!protectedPrefix || !editorRef.current) return;\n    editorRef.current.commands.setContent(protectedPrefix);\n  }, [protectedPrefix]);\n\n  const postComment = useMutation({\n    mutationFn: (contents: string) =>\n      AuthApi['post:/wello/v2/auth/wello-comment']({\n        body: {\n          comment_type_cd: commentType,\n          content_id: contentId,\n          contents,\n          parent_wello_comment_id: parentCommentId,\n          root_wello_comment_id: rootCommentId,\n        },\n      }),\n    meta: {\n      reset: [\n        AuthQueryKey['get:/wello/v2/auth/wello-comment'](),\n        AuthQueryKey['get:/wello/v2/auth/policy/feedback/{policy_id}'](),\n        AuthQueryKey[\n          'get:/wello/v2/auth/contents/feedback/{best_contents_id}'\n        ](),\n        AuthQueryKey['get:/wello/v2/auth/wello-comment/my'](),\n        AuthQueryKey['get:/wello/v2/auth/community/my'](),\n        AuthQueryKey[\n          'get:/wello/v2/auth/hometown-news/feedback/{hometown_news_id}'\n        ](),\n        AuthQueryKey[\n          'get:/wello/v2/auth/community/free-talk/feedback/{community_id_idx}'\n        ](),\n        AuthQueryKey[\n          'get:/wello/v2/auth/community/policy-talk/feedback/{community_id_idx}'\n        ](),\n        AuthQueryKey[\n          'get:/wello/v2/auth/community/wello-news/feedback/{community_id_idx}'\n        ](),\n      ],\n    },\n\n    onSuccess: async ({ data }) => {\n      const context = data?.context;\n\n      const { current: editor } = editorRef;\n\n      if (!editor) throw new CustomError();\n\n      initContent(editor);\n\n      handleSubmitDisabled(editor);\n\n      onSuccess?.(context);\n\n      setTimeout(() => {\n        editor.commands.focus();\n      }, 100);\n    },\n  });\n\n  const router = useCustomRouter();\n\n  return (\n    <div\n      className={cn(\n        'w-full p-16 animate-duration-150',\n        {\n          'border-t border-Gray-200': topDivider,\n        },\n        className,\n      )}\n    >\n      <CustomEditor.Provider\n        placeholder=\"댓글을 입력해주세요.\"\n        onBlur={() => setIsFocused(false)}\n        onCreate={({ editor }) => {\n          initContent(editor);\n\n          if (initOnFocus) {\n            editor.commands.focus();\n          }\n\n          editorRef.current = editor;\n\n          handleSubmitDisabled(editor);\n        }}\n        onFocus={() => {\n          if (isLogin) {\n            setIsFocused(true);\n          } else {\n            const url = new URL(window.location.href);\n\n            router.push(\n              ROUTES.LOGIN.withSearchParams({\n                searchParams: {\n                  redirect: url.pathname + url.search,\n                },\n              }),\n            );\n          }\n        }}\n        onUpdate={({ editor }) => {\n          if (protectedPrefix) {\n            const content = editor.getHTML();\n\n            if (!content.startsWith(protectedPrefix)) {\n              if (content.length <= minHtmlLength) {\n                editor.commands.setContent(protectedPrefix);\n              } else {\n                return editor.commands.setContent(\n                  tempContentForProtectedPrefix.current,\n                );\n              }\n            }\n\n            tempContentForProtectedPrefix.current = content;\n          }\n\n          handleSubmitDisabled(editor);\n        }}\n      >\n        <form\n          className={cn(\n            'flex max-h-96 rounded-small border border-Gray-300 bg-Gray-white transition-[border] duration-150',\n            {\n              'border-Gray-900': isFocused,\n            },\n          )}\n          onSubmit={(e) => {\n            e.preventDefault();\n\n            const { current: editor } = editorRef;\n\n            if (!editor) throw new CustomError();\n\n            let text = editor.getText({\n              blockSeparator: '\\n',\n            });\n\n            if (startText) {\n              text = text.replace(startText, '');\n            }\n\n            text = text.trim();\n\n            if (!text.length) throw new CustomError();\n\n            postComment.mutate(text);\n          }}\n        >\n          <CustomEditor.Contents className=\"my-11 ml-16 flex-1 p-0 hide-scrollbar typo-body3\" />\n          {isSubmitDisabled ? null : (\n            <Button\n              className=\"mt-auto h-46 animate-fade\"\n              dimensions=\"H40\"\n              disabled={postComment.isPending}\n              theme=\"primary-text\"\n              type=\"submit\"\n            >\n              {postComment.isPending ? (\n                <Spinner size={20} />\n              ) : (\n                <SvgMailSend className=\"size-20 text-inherit\" />\n              )}\n            </Button>\n          )}\n        </form>\n      </CustomEditor.Provider>\n    </div>\n  );\n};\n\nconst ReplyCommentField = (\n  props: Omit<CommentFieldContentProps, 'replyTo' | 'parentCommentId'> & {\n    parentCommentId: number;\n  },\n) => {\n  const { data: nickname } = useSuspenseQuery({\n    ...UnauthQueryOptions[\n      'get:/wello/v2/allows/wello-comment/{welloCommentId}'\n    ]({\n      path: {\n        welloCommentId: props.parentCommentId,\n      },\n    }),\n    select: (data) => data.context?.nick_name,\n  });\n\n  return <CommentFieldContent {...props} replyTo={nickname} />;\n};\n\nconst FixedArea = () => <div className=\"h-81 w-full\" />;\n\ninterface CommentFieldProps\n  extends Omit<CommentFieldContentProps, 'isLogin' | 'replyTo'> {\n  withPortal?: boolean;\n}\n\nexport const CommentField = ({\n  parentCommentId,\n  withPortal = true,\n  ...restProps\n}: CommentFieldProps) => {\n  const isLogin = useAuthStore((state) => state.isLogin);\n\n  const Container = withPortal ? BottomNavPortal : Fragment;\n\n  return (\n    <Container>\n      {isLogin !== undefined ? (\n        <Suspense fallback={<FixedArea />}>\n          {parentCommentId ? (\n            <ReplyCommentField\n              {...restProps}\n              isLogin={isLogin}\n              parentCommentId={parentCommentId}\n            />\n          ) : (\n            <CommentFieldContent {...restProps} isLogin={isLogin} />\n          )}\n        </Suspense>\n      ) : (\n        <FixedArea />\n      )}\n    </Container>\n  );\n};\n","'use client';\n\nimport { CustomError, isEnumValue } from '@common/utils';\nimport { useSearchParams } from 'next/navigation';\nimport { useState } from 'react';\nimport { scroller } from 'react-scroll';\n\nimport { COMMENT_SORT_TYPE } from '@/api';\nimport { ROUTES, SEARCH_PARAMS, SELECTOR } from '@/constants';\nimport { useCustomRouter } from '@/hooks/useCustomRouter';\nimport { useToastPoint } from '@/hooks/useToastPoint';\nimport { useAuthStore } from '@/stores/AuthStore';\n\nimport { CommentField } from '../molecule/CommentField';\nimport type { CommentListProps } from '../organism/CommentList';\nimport { CommentList } from '../organism/CommentList';\n\nexport interface CommentListWithFieldProps\n  extends Pick<\n    CommentListProps,\n    'commentType' | 'contentId' | 'initialData' | 'rootCommentId' | 'className'\n  > {\n  initOnFocus?: boolean;\n  policyTalkContentIdx?: string;\n  hasCommentField?: boolean;\n  commentFieldTopDivider?: boolean;\n  commentFieldClassName?: string;\n  withPortal?: boolean;\n}\n\nexport const CommentListWithField = ({\n  initOnFocus,\n  commentType,\n  contentId,\n  initialData,\n  rootCommentId,\n  className,\n  policyTalkContentIdx,\n  hasCommentField = true,\n  commentFieldTopDivider,\n  commentFieldClassName,\n  withPortal,\n}: CommentListWithFieldProps) => {\n  const searchParams = useSearchParams();\n\n  const sortType =\n    searchParams?.get(SEARCH_PARAMS.SORT_TYPE) || COMMENT_SORT_TYPE.LATEST;\n\n  const parentCommentId = ((params) => {\n    if (!params) return undefined;\n\n    const parentCommentId = Number(params);\n\n    if (Number.isNaN(parentCommentId)) return undefined;\n\n    return parentCommentId;\n  })(searchParams?.get(SEARCH_PARAMS.PARENT_COMMENT_ID));\n\n  if (!isEnumValue(COMMENT_SORT_TYPE, sortType))\n    throw new CustomError({\n      return_message: '잘못된 sortType입니다.',\n    });\n\n  const isLogin = useAuthStore((state) => state.isLogin);\n\n  const router = useCustomRouter();\n\n  const [placeholder, setPlaceholder] = useState(initialData);\n\n  const isCommentPage = !!parentCommentId;\n\n  const { toastPoint } = useToastPoint();\n\n  return (\n    <>\n      <CommentList\n        className={className}\n        commentType={commentType}\n        contentId={contentId}\n        initialData={placeholder}\n        rootCommentId={rootCommentId}\n        sortType={sortType}\n        onChangeCommentData={setPlaceholder}\n        onClickEditButton={(commentId, isRoot) => {\n          if (isRoot && policyTalkContentIdx) {\n            router.push(\n              ROUTES.POLICY_TALK_COMMENT_EDIT.pathname({\n                commentId,\n                contentIdx: policyTalkContentIdx,\n              }),\n            );\n          } else {\n            router.push(\n              ROUTES.COMMENT_EDIT.withSearchParams({\n                dynamicPath: { commentId },\n              }),\n            );\n          }\n        }}\n        onClickReplyButton={(commentId, parentCommentId) => {\n          const targetRoute = ROUTES.COMMENT_LIST.withSearchParams({\n            dynamicPath: { commentType, contentId, commentId },\n            searchParams: {\n              sortType,\n              parentCommentId,\n            },\n          });\n\n          if (!isLogin) {\n            return router.push(\n              ROUTES.LOGIN.withSearchParams({\n                searchParams: {\n                  redirect: targetRoute,\n                },\n              }),\n            );\n          }\n\n          return isCommentPage\n            ? router.replace(targetRoute)\n            : router.push(targetRoute);\n        }}\n      />\n      {hasCommentField && isLogin ? (\n        <CommentField\n          className={commentFieldClassName}\n          commentType={commentType}\n          contentId={contentId}\n          initOnFocus={initOnFocus}\n          parentCommentId={parentCommentId}\n          rootCommentId={rootCommentId}\n          topDivider={commentFieldTopDivider}\n          withPortal={withPortal}\n          onSuccess={(res) => {\n            if (!res) throw new CustomError();\n\n            if (sortType !== COMMENT_SORT_TYPE.LATEST) {\n              const url = new URL(window.location.href);\n\n              url.searchParams.set(\n                SEARCH_PARAMS.SORT_TYPE,\n                COMMENT_SORT_TYPE.LATEST,\n              );\n\n              history.replaceState(null, '', url.search);\n            }\n\n            scroller.scrollTo(SELECTOR.COMMENT_LIST_TOP, {\n              duration: 300,\n              smooth: 'easeOutQuad',\n              containerId: SELECTOR.MAIN,\n              offset: -100,\n            });\n\n            const point = res?.point_activity?.result_yn\n              ? res.point_activity.add_points\n              : null;\n\n            if (point) {\n              toastPoint(point);\n            }\n\n            setTimeout(() => {\n              scroller.scrollTo(\n                SELECTOR.COMMENT_PREFIX + res.wello_comment_id,\n                {\n                  duration: 300,\n                  smooth: 'easeOutQuad',\n                  containerId: SELECTOR.MAIN,\n                  offset: -100,\n                },\n              );\n            }, 300);\n          }}\n        />\n      ) : null}\n    </>\n  );\n};\n","'use client';\n\nimport { isSameEndpointQuery } from '@common/api/isSameEndpointQuery';\nimport { hasObjectKey } from '@common/utils';\nimport { useMutation, useQueryClient } from '@tanstack/react-query';\nimport { cloneDeep, debounce } from 'es-toolkit';\nimport { useMemo } from 'react';\n\nimport { AuthApi, AuthQueryKey } from '@/api/v2';\nimport { ROUTES } from '@/constants';\nimport { MESSAGE_KEYWORD, useHandleApp } from '@/modules/wello-app';\nimport { useAuthStore } from '@/stores/AuthStore';\n\nimport { useCustomRouter } from './useCustomRouter';\n\ninterface BookmarkParams {\n  /**\n   * 쿼리키 조회용\n   */\n  idx?: string;\n  contentId: number;\n  isBookmarked: boolean;\n  bookmarkType: string;\n}\n\n// 북마크 가능한 항목의 인터페이스\ninterface BookmarkableItem {\n  id: number;\n  wishlist_yn: boolean;\n  [key: string]: unknown;\n}\n\n// 컨텐츠 배열을 포함하는 응답 데이터 인터페이스\ninterface ContentsResponse {\n  context: {\n    contents: BookmarkableItem[];\n    [key: string]: unknown;\n  };\n  [key: string]: unknown;\n}\n\nconst OPTIMISTIC_QUERY_KEYS = [\n  AuthQueryKey['get:/wello/v2/auth/member/neighbor/policy'],\n  AuthQueryKey['get:/wello/v2/auth/member/recommend/policy'],\n  AuthQueryKey['get:/wello/v2/auth/policy-apply/history'],\n  AuthQueryKey['get:/wello/v2/auth/community/wello-news'],\n  AuthQueryKey['get:/wello/v2/auth/member/recent/policy'],\n  AuthQueryKey['get:/wello/v2/auth/community/policy-talk'],\n  AuthQueryKey['get:/wello/v2/auth/hometown-news'],\n  AuthQueryKey['get:/wello/v2/auth/member/interest/policy'],\n  AuthQueryKey['get:/wello/v2/auth/policy/policy/{meta_policy_id_idx}/related'],\n  AuthQueryKey['get:/wello/v2/auth/member/wishlist/voucher-provider'],\n  AuthQueryKey['get:/wello/v2/auth/contents/pick/{wello_pick_id}'],\n  AuthQueryKey['get:/wello/v2/auth/policy'],\n  AuthQueryKey['get:/wello/v2/auth/member/wishlist/policy'],\n  AuthQueryKey['get:/wello/v2/auth/member/wishlist/community/policy-talk'],\n  AuthQueryKey['get:/wello/v2/auth/member/wishlist/best-contents'],\n  AuthQueryKey['get:/wello/v2/auth/wello-comment'],\n  AuthQueryKey['get:/wello/v2/auth/member/wishlist/emergency-room'],\n  AuthQueryKey['get:/wello/v2/auth/emergency-room/{emergencyRoomId}'],\n  AuthQueryKey['get:/wello/v2/auth/voucher/provider'],\n  AuthQueryKey['get:/wello/v2/auth/voucher/provider/feedback/{id}'],\n  AuthQueryKey['get:/wello/v2/auth/policy/feedback/{policy_id}'],\n  AuthQueryKey['get:/wello/v2/auth/contents/feedback/{best_contents_id}'],\n  AuthQueryKey['get:/wello/v2/auth/wello-comment/my'],\n  AuthQueryKey['get:/wello/v2/auth/community/my'],\n  AuthQueryKey['get:/wello/v2/auth/hometown-news/feedback/{hometown_news_id}'],\n  AuthQueryKey[\n    'get:/wello/v2/auth/community/free-talk/feedback/{community_id_idx}'\n  ],\n  AuthQueryKey[\n    'get:/wello/v2/auth/community/policy-talk/feedback/{community_id_idx}'\n  ],\n  AuthQueryKey[\n    'get:/wello/v2/auth/community/wello-news/feedback/{community_id_idx}'\n  ],\n  AuthQueryKey['get:/wello/v2/auth/member/peer-group/policy'],\n  AuthQueryKey['get:/wello/v2/auth/contents/best'],\n  AuthQueryKey['get:/wello/v2/auth/member/wishlist/hometown-news'],\n  AuthQueryKey['get:/wello/v2/auth/member/wishlist/community/wello-news'],\n];\n\ntype QueryObject = {\n  query: {\n    page: number;\n  };\n};\n\nconst isQueryObject = (obj: object): obj is QueryObject => {\n  return 'query' in obj && typeof (obj as any).query === 'object';\n};\n\nexport const useBookmark = () => {\n  const { mutate } = useMutation({\n    mutationFn: ({ contentId, isBookmarked, bookmarkType }: BookmarkParams) =>\n      AuthApi[\n        isBookmarked\n          ? 'delete:/wello/v2/auth/member/wishlist'\n          : 'post:/wello/v2/auth/member/wishlist'\n      ]({\n        body: {\n          content_id: contentId,\n          content_type_cd: bookmarkType,\n        },\n      }),\n    meta: {\n      reset: [AuthQueryKey['get:/wello/v2/auth/member/action-count']()],\n    },\n  });\n\n  const queryClient = useQueryClient();\n  const router = useCustomRouter();\n\n  const { request: requestHaptic } = useHandleApp({\n    type: MESSAGE_KEYWORD.HAPTIC,\n  });\n\n  const bookmark = useMemo(() => {\n    const debouncedMutate = debounce<typeof mutate>((params, options) => {\n      return mutate(params, options);\n    }, 500);\n\n    return (params: BookmarkParams) => {\n      requestHaptic();\n      const { contentId, isBookmarked, idx } = params;\n\n      const { isLogin } = useAuthStore.getState();\n\n      if (!isLogin)\n        return router.push(\n          ROUTES.LOGIN.withSearchParams({\n            searchParams: {\n              redirect: location.href,\n            },\n          }),\n        );\n\n      const bookmarkQueries = queryClient.getQueriesData({\n        predicate: (query) =>\n          OPTIMISTIC_QUERY_KEYS.some((queryKey) =>\n            isSameEndpointQuery(query, queryKey()),\n          ),\n      });\n\n      bookmarkQueries.forEach(([key, data]) => {\n        const isBaseKeyHasId = (() => {\n          const [firstKey] = key;\n\n          const isV2ApiQueryKey = typeof firstKey === 'object';\n\n          if (isV2ApiQueryKey) {\n            const StringKey = JSON.stringify(firstKey);\n\n            const id = String(contentId);\n\n            if (StringKey.includes(id) || (idx && StringKey.includes(idx)))\n              return true;\n          }\n\n          return false;\n        })();\n\n        if (\n          (key.includes(contentId) ||\n            isBaseKeyHasId ||\n            (idx && key.includes(idx))) &&\n          hasObjectKey(data, 'context') &&\n          hasObjectKey(data.context, 'wishlist_yn')\n        ) {\n          const newData = cloneDeep(data);\n\n          if (\n            hasObjectKey(newData.context, 'wishlist_yn') &&\n            typeof newData.context.wishlist_yn === 'boolean'\n          ) {\n            newData.context.wishlist_yn = !isBookmarked;\n\n            if (\n              'wishlist_count' in newData.context &&\n              typeof newData.context.wishlist_count === 'number'\n            ) {\n              newData.context.wishlist_count = isBookmarked\n                ? newData.context.wishlist_count - 1\n                : newData.context.wishlist_count + 1;\n            }\n\n            queryClient.setQueryData(key, newData);\n          }\n        }\n        //* 일반 쿼리 (not Infinite Query)\n        else if (\n          data &&\n          typeof data === 'object' &&\n          hasObjectKey(data, 'context') &&\n          data.context &&\n          typeof data.context === 'object' &&\n          hasObjectKey(data.context, 'contents') &&\n          Array.isArray(data.context.contents)\n        ) {\n          const newData = cloneDeep(data);\n\n          const updateContents = (contents: unknown[]): unknown[] =>\n            contents.map((item) => {\n              if (\n                item &&\n                typeof item === 'object' &&\n                'id' in item &&\n                typeof item.id === 'number' &&\n                item.id === contentId &&\n                'wishlist_yn' in item &&\n                typeof item.wishlist_yn === 'boolean'\n              ) {\n                return { ...item, wishlist_yn: !isBookmarked };\n              }\n\n              return item;\n            });\n\n          const hasContents = (obj: unknown): obj is ContentsResponse =>\n            obj !== null &&\n            typeof obj === 'object' &&\n            'context' in obj &&\n            obj.context !== null &&\n            typeof obj.context === 'object' &&\n            'contents' in obj.context &&\n            Array.isArray(obj.context.contents);\n\n          if (hasContents(newData)) {\n            const updatedContents = updateContents(newData.context.contents);\n            const hasChanges = updatedContents.some(\n              (item, index) => item !== newData.context.contents[index],\n            );\n\n            if (hasChanges) {\n              newData.context.contents = updatedContents as BookmarkableItem[];\n              queryClient.setQueryData(key, newData);\n            }\n          }\n        } else\n          for (const idKey of [\n            'community_id',\n            'best_contents_id',\n            'hometown_news_id',\n            'wello_comment_id',\n            'policy_talk_id',\n            'policy_id',\n            'id',\n          ] as const) {\n            const newData = cloneDeep(data);\n\n            const targetObjectList = ((data) => {\n              const result: unknown[] = [];\n\n              const findTargetObject = (obj: unknown) => {\n                if (obj && typeof obj === 'object') {\n                  if (hasObjectKey(obj, idKey) && obj[idKey] === contentId) {\n                    switch (idKey) {\n                      case 'id': {\n                        const hasId =\n                          'meta_policy_id_idx' in obj || 'uuid' in obj;\n\n                        if (hasId) result.push(obj);\n\n                        break;\n                      }\n\n                      default:\n                        result.push(obj);\n                        break;\n                    }\n                  }\n\n                  for (const key in obj) {\n                    if (hasObjectKey(obj, key)) {\n                      findTargetObject(obj[key]);\n                    }\n                  }\n                }\n              };\n\n              findTargetObject(data);\n\n              return result;\n            })(newData);\n\n            const changeBookmarkCount = (obj: unknown) => {\n              if (obj && typeof obj === 'object') {\n                if (\n                  hasObjectKey(obj, 'wishlist_count') &&\n                  typeof obj.wishlist_count === 'number'\n                ) {\n                  obj['wishlist_count'] = isBookmarked\n                    ? obj['wishlist_count'] - 1\n                    : obj['wishlist_count'] + 1;\n                }\n                for (const key in obj) {\n                  if (hasObjectKey(obj, key)) {\n                    changeBookmarkCount(obj[key]);\n                  }\n                }\n              }\n            };\n\n            const changeBookmarkYn = (obj: unknown) => {\n              if (obj && typeof obj === 'object') {\n                if (\n                  hasObjectKey(obj, 'wishlist_yn') &&\n                  typeof obj.wishlist_yn === 'boolean'\n                ) {\n                  obj['wishlist_yn'] = !isBookmarked;\n                }\n                for (const key in obj) {\n                  if (hasObjectKey(obj, key)) {\n                    changeBookmarkYn(obj[key]);\n                  }\n                }\n              }\n            };\n\n            targetObjectList.forEach((obj) => {\n              changeBookmarkCount(obj);\n              changeBookmarkYn(obj);\n\n              const [firstKey] = key;\n\n              const isV2InfiniteQuery =\n                firstKey && isQueryObject(firstKey) && '_infinite';\n\n              if (isV2InfiniteQuery) {\n                firstKey.query.page = 1;\n              }\n\n              queryClient.setQueryData(key, newData);\n            });\n          }\n      });\n\n      debouncedMutate(params, {\n        onError: () => {\n          bookmarkQueries.forEach(([key, data]) => {\n            queryClient.setQueryData(key, data);\n          });\n        },\n      });\n    };\n  }, [mutate, queryClient, requestHaptic, router]);\n\n  return { bookmark };\n};\n","import type { ServerResponse } from '@common/utils';\nimport { useQueryClient } from '@tanstack/react-query';\nimport Image from 'next/image';\nimport { toast } from 'react-toastify';\n\nimport { pointOptionsKeys } from '@/query-factory/point';\n\nexport const useToastPoint = () => {\n  const queryClient = useQueryClient();\n\n  const toastPoint = (point: number) => {\n    toast(\n      // 가운데 정렬을 위한 콘테이너\n      <div className=\"flex justify-center\">\n        {/* 토스트 콘테이너 */}\n        <div className=\"pointer-events-auto flex min-h-48 items-center gap-8 rounded-pill bg-Gray-black bg-opacity-70 px-20\">\n          <Image\n            alt=\"동전\"\n            height={30}\n            src=\"/assets/pngs/coin2.png\"\n            width={30}\n          />\n          <p className=\"font-400 typo-body4\">\n            <span className=\"font-700 text-[#C49B5F]\">\n              {Math.abs(point).toLocaleString()}P\n            </span>\n            {point >= 0 ? '가 적립되었어요!' : '가 차감되었어요!'}\n          </p>\n        </div>\n      </div>,\n      {\n        className: '!bg-transparent !shadow-none pointer-events-none',\n      },\n    );\n\n    //* 포인트 정보 갱신\n    QUERY_KEYS_TO_INVALIDATE.forEach(async (key) => {\n      await queryClient.invalidateQueries({\n        queryKey: [key],\n      });\n    });\n  };\n\n  const toastPointError = ({ error }: { error: unknown }) => {\n    const { return_code: errorCode, return_message: errorMessage } =\n      error as ServerResponse;\n\n    console.error(error);\n\n    const toastErrorMessage = (message: string) =>\n      toast(\n        // 가운데 정렬을 위한 콘테이너\n        <div className=\"flex justify-center\">\n          {/* 토스트 콘테이너 */}\n          <div className=\"pointer-events-auto flex min-h-48 items-center gap-8 rounded-pill bg-Gray-black bg-opacity-70 px-20\">\n            <Image\n              alt=\"동전\"\n              height={30}\n              src=\"/assets/pngs/coin2.png\"\n              width={30}\n            />\n            <p className=\"font-400 typo-body4\">{message}</p>\n          </div>\n        </div>,\n        {\n          className: '!bg-transparent !shadow-none pointer-events-none',\n        },\n      );\n\n    if (!errorCode || !errorMessage) {\n      return toastErrorMessage('서버로 부터 정상적인 응답을 받지 못했습니다.');\n    }\n\n    if (30000 <= errorCode) {\n      return toastErrorMessage(errorMessage);\n    }\n\n    return toastErrorMessage(\n      `일시적인 오류가 발생했습니다. 잠시 후 다시 시도해주세요. (${errorCode})`,\n    );\n  };\n\n  return {\n    toastPoint,\n    toastPointError,\n  };\n};\n\nconst QUERY_KEYS_TO_INVALIDATE = [\n  pointOptionsKeys.pointAttendance,\n  pointOptionsKeys.pointHistoryInfiniteList,\n  //* 필요에 따라 다른 queryKey를 추가\n];\n","import { createUuid,CustomError } from '@common/utils';\nimport { queryOptions } from '@tanstack/react-query';\nimport ky from 'ky';\n\nimport { LOGIN_TYPE } from '@/api';\nimport { API_ROUTES, ENV } from '@/constants';\n\nexport const authQueryOptionsKeys = {\n  socialLogin: createUuid(),\n};\n\ninterface SocialLoginProps {\n  state?: string | null;\n  code?: string | null;\n}\n\nexport interface SocialLoginResult {\n  socialLoginToken: string;\n  loginType: LOGIN_TYPE;\n}\n\ninterface LoginResponse {\n  access_token: string;\n}\n\nexport const authQueryOptions = {\n  socialLogin: ({ code, state }: SocialLoginProps) => {\n    const enabled = !!(code && state);\n\n    return queryOptions({\n      queryKey: [authQueryOptionsKeys.socialLogin, enabled, state],\n      staleTime: 0,\n      enabled,\n      queryFn: async (): Promise<SocialLoginResult> => {\n        if (!enabled)\n          throw new CustomError({\n            return_message: 'socialLoginProps 가 없습니다.',\n          });\n\n        const decodedState = window.atob(state);\n\n        const { type, redirectPath } = JSON.parse(decodedState);\n\n        switch (type) {\n          //! ⚠️ Kakao는 client secret이 없어서 front에서 직접 요청 가능\n          case 'kakao': {\n            const { access_token } = await ky\n              .post('https://kauth.kakao.com/oauth/token', {\n                headers: {\n                  'Content-Type': 'application/x-www-form-urlencoded',\n                },\n                body: new URLSearchParams({\n                  code,\n                  state,\n                  redirect_uri: `${ENV.NEXT_PUBLIC_DOMAIN}${redirectPath}`,\n                  grant_type: 'authorization_code',\n                  client_id: ENV.NEXT_PUBLIC_KAKAO_CLIENT_ID,\n                }),\n              })\n              .json<LoginResponse>();\n\n            return {\n              loginType: LOGIN_TYPE.KAKAO,\n              socialLoginToken: access_token,\n            };\n          }\n\n          case 'naver': {\n            const { access_token } = await ky\n              .post(API_ROUTES.NAVER_AUTH.pathname, {\n                json: {\n                  code,\n                  state,\n                },\n              })\n              .json<LoginResponse>();\n\n            return {\n              loginType: LOGIN_TYPE.NAVER,\n              socialLoginToken: access_token,\n            };\n          }\n\n          case 'google': {\n            const { access_token } = await ky\n              .post(API_ROUTES.GOOGLE_AUTH.pathname, {\n                json: {\n                  code,\n                  state,\n                },\n              })\n              .json<LoginResponse>();\n\n            return {\n              loginType: LOGIN_TYPE.GOOGLE,\n              socialLoginToken: access_token,\n            };\n          }\n\n          case 'apple': {\n            const { id_token } = await ky\n              .post(API_ROUTES.APPLE_TOKEN.pathname, {\n                json: {\n                  code,\n                  state,\n                },\n              })\n              .json<{ id_token: string }>();\n\n            return {\n              loginType: LOGIN_TYPE.APPLE,\n              socialLoginToken: id_token,\n            };\n          }\n\n          default:\n            throw new Error('잘못된 로그인 타입입니다.');\n        }\n      },\n    });\n  },\n};\n","import { assert, createUuid } from '@common/utils';\nimport { queryOptions } from '@tanstack/react-query';\nimport ky from 'ky';\n\nimport { AUTH_API,DPG_API } from '@/api';\n\ninterface DeptReportDetailProps {\n  custCi: string;\n  rprYr: string;\n  dbtrRprClssCd: string;\n  dbtrRprDt: string;\n}\n\nexport const dpgQueryOptionsKeys = {\n  checkEligibility: createUuid(),\n  agreement: createUuid(),\n  notice: createUuid(),\n  loanInterest: createUuid(),\n  deptReportList: createUuid(),\n  deptReportDetail: createUuid(),\n  getCIInfo: createUuid(),\n  address: createUuid(),\n};\n\nexport const dpgQueryOptions = {\n  checkEligibility: (ciToken: string) =>\n    queryOptions({\n      queryKey: [dpgQueryOptionsKeys.checkEligibility, ciToken],\n      queryFn: () =>\n        DPG_API.postEligibilityCheck({\n          requestBody: {\n            custCi: ciToken,\n          },\n        }),\n      retry: false,\n      enabled: ciToken !== '',\n      select: ({ context }) => {\n        return {\n          ciToken: context?.custCi,\n          isTarget: context?.canRprYn === 'Y',\n          isPeriodicReport: context?.preRgrRprtYn === 'Y',\n        };\n      },\n    }),\n  agreement: () =>\n    queryOptions({\n      queryKey: [dpgQueryOptionsKeys.agreement],\n      queryFn: DPG_API.getAgreement,\n      select: ({ context }) => {\n        assert(context, 'context is not valid');\n\n        return {\n          financialInfo: context.finInfoAgmtCten,\n          personalInfo: context.indvInfoAgmtCten,\n        };\n      },\n    }),\n  notice: (year = 2024) =>\n    queryOptions({\n      queryKey: [dpgQueryOptionsKeys.notice, year, DPG_API],\n      queryFn: () =>\n        ky\n          .get('https://stage.dpgapi.wello.im/wello/v1/dept-reporting/notice', {\n            searchParams: { baseYear: year.toString() },\n          })\n          .json<Awaited<ReturnType<typeof DPG_API.getNotice>>>(),\n      select: (data) => {\n        assert(data.context, 'context is not valid');\n\n        return {\n          content: data.context.noticeCten,\n        };\n      },\n    }),\n  loanInterest: (custCi: string) =>\n    queryOptions({\n      queryKey: [dpgQueryOptionsKeys.loanInterest, custCi],\n      queryFn: () =>\n        DPG_API.getLoanInterestList({\n          requestBody: {\n            custCi,\n            baseYear: new Date().getFullYear().toString(),\n          },\n        }),\n      enabled: !!custCi,\n      select: ({ context }) => {\n        assert(context, 'context is not valid');\n\n        return {\n          custCi: context.custCi,\n          basDt: context.basDt,\n          loanAmtSum: context.loanAmtSum,\n          loanBlmtSum: context.loanBlmtSum,\n          loanIntAmtSum: context.loanIntAmtSum,\n          nyRcpDutyApmtAmt: context.nyRcpDutyApmtAmt,\n          nyRcpOvdAmt: context.nyRcpOvdAmt,\n          nyRcpOvdAdAmt: context.nyRcpOvdAdAmt,\n          nyRcpAmtSum: context.nyRcpAmtSum,\n          loanList: context.loanList,\n        };\n      },\n    }),\n  deptReportList: (custCi: string) =>\n    queryOptions({\n      queryKey: [dpgQueryOptionsKeys.deptReportList, custCi],\n      queryFn: () =>\n        DPG_API.getReportHistoryList({\n          requestBody: {\n            custCi,\n          },\n        }),\n      enabled: !!custCi,\n      select: ({ context }) => {\n        assert(context, 'context is not valid');\n\n        return {\n          contents: context.contents,\n          total: context.totalCount,\n        };\n      },\n    }),\n  deptReportDetail: ({\n    custCi,\n    rprYr,\n    dbtrRprClssCd,\n    dbtrRprDt,\n  }: DeptReportDetailProps) =>\n    queryOptions({\n      queryKey: [\n        dpgQueryOptionsKeys.deptReportDetail,\n        custCi,\n        dbtrRprClssCd,\n        dbtrRprDt,\n        rprYr,\n      ],\n      queryFn: () =>\n        DPG_API.getReportHistory({\n          requestBody: {\n            custCi,\n            rprYr,\n            dbtrRprClssCd,\n            dbtrRprDt,\n          },\n        }),\n      enabled: !!custCi,\n      select: ({ context }) => {\n        assert(context, 'context is not valid');\n\n        return {\n          custCi: context.custCi,\n          rprFltNm: context.rprFltNm,\n          dbtrRprClssCd: context.dbtrRprClssCd,\n          rprDutyAbtnYr: context.rprDutyAbtnYr,\n          dbtrRprDt: context.dbtrRprDt,\n          univGrdtYn: context.univGrdtYn,\n          grdtDt: context.grdtDt,\n          grdtUnivCd: context.grdtUnivCd,\n          grdtUnivNm: context.grdtUnivNm,\n          ovseRsdYn: context.ovseRsdYn,\n          rsdcPno: context.rsdcPno,\n          rsdcPnoAddr: context.rsdcPnoAddr,\n          rsdcDtalAddr: context.rsdcDtalAddr,\n          rsdcStsgLtnoDivCd: context.rsdcStsgLtnoDivCd,\n          ctyCd: context.ctyCd,\n          ctyNm: context.ctyNm,\n          etcMttCten: context.etcMttCten,\n          mblTno: context.mblTno,\n          emailAddr: context.emailAddr,\n          wkplEan: context.wkplEan,\n          spoEan: context.spoEan,\n          spoFrnrYn: context.spoFrnrYn,\n          spoNm: context.spoNm,\n          spoOvseRsdYn: context.spoOvseRsdYn,\n          spoRsdcPno: context.spoRsdcPno,\n          spoRsdcPnoAddr: context.spoRsdcPnoAddr,\n          spoRsdcDtalAddr: context.spoRsdcDtalAddr,\n          spoRsdcStsgLtnoDivCd: context.spoRsdcStsgLtnoDivCd,\n          spoCtyCd: context.spoCtyCd,\n          spoCtyNm: context.spoCtyNm,\n          spoWkplEan: context.spoWkplEan,\n          indvInfoOferAgmtYn: context.indvInfoOferAgmtYn,\n          finInfoOferAgmtYn: context.finInfoOferAgmtYn,\n          dbtrNrgrRprClssCd: context.dbtrNrgrRprClssCd,\n          careerList: context.careerList,\n          spoCareerList: context.spoCareerList,\n        };\n      },\n    }),\n  getCIInfo: (accessToken: string | null) =>\n    queryOptions({\n      queryKey: [dpgQueryOptionsKeys.getCIInfo],\n      queryFn: AUTH_API.getMemberVerification,\n      enabled: !!accessToken,\n      select: ({ context }) => {\n        assert(context, 'context is not valid');\n\n        return {\n          ci: context.ci,\n        };\n      },\n    }),\n  address: (custCi: string) =>\n    queryOptions({\n      queryKey: [dpgQueryOptionsKeys.address, custCi],\n      queryFn: () => DPG_API.getAddress({ requestBody: { custCi } }),\n      select: ({ context }) => {\n        assert(context, 'context is not valid');\n\n        return {\n          address: context.pnoAddr,\n          addressDetail: context.dtalAddr,\n          zonecode: context.pno,\n          addressType: context.stsgLtnoDivCd,\n        };\n      },\n    }),\n};\n","import { queryOptions } from '@tanstack/react-query';\n\nimport { AUTH_API } from '@/api';\nimport { queryKeys } from '@/constants/query-keys';\n\ninterface FamilyListOptionsProps {\n  isLogin: boolean;\n}\n\nexport const familyQueryOptions = {\n  list: ({ isLogin }: FamilyListOptionsProps) =>\n    queryOptions({\n      queryKey: [queryKeys.familyList],\n      queryFn: AUTH_API.getFamilyList,\n      select: ({ context }) => {\n        const { wello_member_family_list, total_policy_count } = context ?? {};\n\n        return {\n          familyList: wello_member_family_list,\n          totalPolicyCount: total_policy_count,\n        };\n      },\n      enabled: isLogin,\n    }),\n};\n","import { infiniteQueryOptions, queryOptions } from '@tanstack/react-query';\n\nimport {\n  AuthInfiniteQueryOptions,\n  AuthQueryOptions,\n  UnauthInfiniteQueryOptions,\n  UnauthQueryOptions,\n} from '@/api/v2';\n\ninterface HometownNewsFeedbackOptionsProps {\n  id: number | undefined;\n  isLogin?: boolean;\n}\n\ninterface HometownNewsListOptionsProps {\n  keyword?: string;\n  codeRegion?: string;\n  codeSubRegion?: string;\n  isLogin: boolean | undefined;\n  hometownNewsSort?: 'LATEST' | 'POPULARITY';\n}\n\nexport const hometownNewsQueryOptions = {\n  list: ({\n    keyword,\n    isLogin,\n    codeRegion,\n    codeSubRegion,\n    hometownNewsSort = 'LATEST',\n  }: HometownNewsListOptionsProps) => {\n    const INITIAL_PAGE = 1;\n    const PAGE_SIZE = 20;\n\n    return infiniteQueryOptions({\n      ...(isLogin\n        ? AuthInfiniteQueryOptions['get:/wello/v2/auth/hometown-news']\n        : UnauthInfiniteQueryOptions['get:/wello/v2/allows/hometown-news'])({\n        query: {\n          page: INITIAL_PAGE,\n          size: PAGE_SIZE,\n          code_region: codeRegion,\n          code_sub_region: codeSubRegion,\n          hometown_news_sort: hometownNewsSort,\n          search_keyword: keyword,\n        },\n      }),\n      enabled: isLogin !== undefined,\n      select: (data) => ({\n        pages: data.pages.map(({ context }) => ({\n          contents: context?.contents?.map((news) => {\n            return {\n              id: news.hometown_news_id,\n              idIdx: news.hometown_news_id_idx,\n              title: news.hometown_news_name,\n              daysAgo: news.days_ago,\n              thumbnail: news.thumbnail,\n              commentCount: news.comment_count,\n              isBookmarked: news.wishlist_yn,\n              bookmarkCount: news.wishlist_count,\n              dateText: news.published_at,\n              summary: news.summary,\n              thumbUpCount: news.like_count,\n              isThumbUp: news.like_yn,\n            };\n          }),\n          totalCount: context?.total_count,\n        })),\n        pageParams: data.pageParams,\n      }),\n      getNextPageParam: (lastPage) => {\n        if (lastPage.context?.total_count && lastPage.context.page) {\n          const nextPage = lastPage.context.page + 1;\n          const maxPage = Math.ceil(lastPage.context.total_count / PAGE_SIZE);\n\n          return nextPage <= maxPage ? nextPage : undefined;\n        }\n      },\n      initialPageParam: INITIAL_PAGE,\n    });\n  },\n  feedback: ({ id, isLogin }: HometownNewsFeedbackOptionsProps) =>\n    queryOptions({\n      ...(isLogin\n        ? AuthQueryOptions[\n            'get:/wello/v2/auth/hometown-news/feedback/{hometown_news_id}'\n          ]\n        : UnauthQueryOptions[\n            'get:/wello/v2/allows/hometown-news/feedback/{hometown_news_id}'\n          ])({\n        path: {\n          hometown_news_id: id!,\n        },\n      }),\n      enabled: isLogin !== undefined && !!id,\n    }),\n};\n","import { assert, createUuid } from '@common/utils';\nimport { queryOptions } from '@tanstack/react-query';\nimport ky from 'ky';\n\nimport { UNAUTH_API } from '@/api';\n\nexport const metaCodeQueryOptionsKeys = {\n  regionList: createUuid(),\n  subRegionList: createUuid(),\n  geolocation: createUuid(),\n  geoCodingByRegionCode: createUuid(),\n};\n\nexport const metaCodeQueryOptions = {\n  regionList: queryOptions({\n    queryKey: [metaCodeQueryOptionsKeys.regionList],\n    queryFn: () => UNAUTH_API.getMetaCode({ metaCode: 'C01' }),\n    select: (data) =>\n      data.context?.meta_code_all_list?.[0].meta_sub_code_list?.map((item) => ({\n        label: item.value,\n        value: item.code,\n      })),\n  }),\n\n  subRegionList: (regionCode?: string) =>\n    queryOptions({\n      queryKey: [metaCodeQueryOptionsKeys.subRegionList, regionCode],\n      queryFn: () => {\n        assert(regionCode, '지역코드가 없습니다.');\n\n        return UNAUTH_API.getMetaCode({ metaCode: regionCode });\n      },\n      enabled: !!regionCode,\n      select: ({ context }) => {\n        const [{ meta_sub_code_list }] = context?.meta_code_all_list ?? [];\n\n        const allItem = meta_sub_code_list?.find((item) =>\n          item.value.includes('전체'),\n        );\n\n        const options = meta_sub_code_list?.filter(\n          (item) => !item.value.includes('전체'),\n        );\n\n        if (allItem && options) {\n          options.unshift(allItem);\n        }\n\n        return options?.map(({ value, code }) => ({\n          label: value,\n          value: code,\n        }));\n      },\n    }),\n\n  geolocation: () =>\n    queryOptions({\n      queryKey: [metaCodeQueryOptionsKeys.geolocation],\n      queryFn: async () => {\n        const ip = await ky.get('https://api.ip.pe.kr').text();\n\n        return UNAUTH_API.getGeolocation({ ip });\n      },\n      select: ({ context }) => context,\n    }),\n\n  geocodingByCode: ({\n    regionCode,\n    subRegionCode,\n  }: Partial<Parameters<typeof UNAUTH_API.getGeocodingByRegionCode>[number]>) =>\n    queryOptions({\n      queryKey: [\n        metaCodeQueryOptionsKeys.geoCodingByRegionCode,\n        regionCode,\n        subRegionCode,\n      ],\n      enabled: !!regionCode && !!subRegionCode,\n      queryFn: () => {\n        assert(regionCode, '지역코드가 없습니다.');\n        assert(subRegionCode, '지역코드가 없습니다.');\n\n        return UNAUTH_API.getGeocodingByRegionCode({\n          regionCode,\n          subRegionCode,\n        });\n      },\n    }),\n};\n","import { redirect } from 'next/navigation';\n\ninterface RedirectDetailPageProps {\n  returnCode?: number;\n  pathname: string;\n}\n\nexport const redirectDetailPage = ({\n  returnCode,\n  pathname,\n}: RedirectDetailPageProps) => {\n  switch (returnCode) {\n    case 24040:\n      return redirect(`${pathname}?toast=존재하지 않는 페이지입니다.`);\n    case 20019:\n    case 24041:\n      return redirect(`${pathname}?toast=숨김 처리된 페이지입니다.`);\n  }\n};\n","import { assert } from '@common/utils';\nimport { withTimeout } from 'es-toolkit';\n\nimport { ROUTES } from '@/constants';\nimport { redirectDetailPage } from '@/utils/redirectDetailPage';\n\nimport { GPT_PROMPT_TYPE, UNAUTH_API } from '.';\nimport { UnauthApi } from './v2';\n\nexport const getPolicyDetail = async (metaPolicyIdIdx: string) => {\n  const { data } = await UnauthApi[\n    'get:/wello/v2/allows/policy/{meta_policy_id_idx}'\n  ]({\n    path: {\n      meta_policy_id_idx: metaPolicyIdIdx,\n    },\n  });\n\n  redirectDetailPage({\n    pathname: ROUTES.HOME.pathname,\n    returnCode: data?.return_code,\n  });\n\n  const context = data?.context;\n\n  assert(context);\n\n  let relatedInfo = '';\n  if (context.apply_documents)\n    relatedInfo += `○ 구비서류\\n - ${context.apply_documents\n      ?.replaceAll('\\n', '\\n  - ')\n      .replaceAll('||', '\\n  - ')}`;\n\n  if (context.base_rule)\n    relatedInfo += `${relatedInfo ? '\\n' : ''}○ 관계법령\\n - ${context.base_rule\n      ?.replaceAll('\\n', '\\n  - ')\n      .replaceAll('||', '\\n  - ')}`;\n\n  if (!relatedInfo) relatedInfo = '- 관련 정보 없음';\n\n  const [summaryString, keywordString] = await withTimeout(async () => {\n    let summaryString = context.ai_summary;\n    let keywordString = context.ai_seo_keyword;\n\n    [summaryString, keywordString] = await Promise.all([\n      summaryString\n        ? summaryString\n        : UNAUTH_API.updatePolicyAiInfo({\n            metaPolicyIdIdx,\n            requestBody: {\n              gpt_prompt_type: GPT_PROMPT_TYPE.SUMMARY,\n            },\n          }).then((res) => res.context?.result),\n      keywordString\n        ? keywordString\n        : UNAUTH_API.updatePolicyAiInfo({\n            metaPolicyIdIdx,\n            requestBody: {\n              gpt_prompt_type: GPT_PROMPT_TYPE.KEYWORD,\n            },\n          }).then((res) => res.context?.result),\n    ]);\n\n    return [summaryString, keywordString];\n  }, 3_000).catch(() => []);\n\n  const aiSummaryList = summaryString\n    ?.split('***')\n    .map((s) => s.trim())\n    .slice(1);\n\n  const aiKeywordList = keywordString\n    ?.split(' | ')\n    .map((s) => s.trim())\n    //! 한자 제외\n    .filter((keyword) => !/[\\u4E00-\\u9FFF]/.test(keyword));\n\n  return {\n    id: context.id,\n    idx: context.meta_policy_id_idx,\n    policyName: context.policy_name,\n    descAgeList: context.desc_age_list,\n    dday: context.dday,\n    policyApplyId: context.wello_policy_apply_id,\n    provisionTypeList: context.provision_type_list,\n    applyTypeList: context.apply_type_list,\n    agencyLogo: context.agency_logo,\n    agency: context.agency,\n    dueDateBetween: context.due_date_between,\n    supportBenefit: context.support_benefit,\n    descTarget: context.desc_target,\n    descSupport: context.desc_support,\n    descProvision: context.desc_provision,\n    relatedInfo,\n    policyBannerTypeList: context.policy_banner_type_list,\n    descApply: context.desc_apply,\n    agencyTel: context.agency_tel,\n    infoUrl: context.info_url,\n    aiSummaryList,\n    aiKeywordList,\n    policyApplicationTypeCd: context.policy_application_type_cd,\n    detailPolicyApplicationTypeCd: context.detail_policy_application_type_cd,\n  };\n};\n\nexport type PolicyDetail = Awaited<ReturnType<typeof getPolicyDetail>>;\n","import { createUuid } from '@common/utils';\nimport {\n  infiniteQueryOptions,\n  keepPreviousData,\n  queryOptions,\n} from '@tanstack/react-query';\n\nimport { getPolicyDetail } from '@/api/getPolicyDetail';\nimport {\n  AuthInfiniteQueryOptions,\n  AuthQueryOptions,\n  UnauthInfiniteQueryOptions,\n  UnauthQueryOptions,\n} from '@/api/v2';\n\nexport const policyQueryOptionsKeys = {\n  policyDetail: createUuid(),\n};\n\ninterface PolicyOptionsProps {\n  id: number;\n  isLogin: boolean | undefined;\n}\n\ninterface SearchOptionsProps {\n  codeRegion?: string;\n  codeSubRegion?: string;\n  keyword?: string;\n  isLogin?: boolean | undefined;\n  descAgeList?: string[];\n  codeProvisionTypeList?: string[];\n  policySort?: 'LATEST' | 'POPULARITY';\n}\n\nexport interface PolicySearchItem {\n  name: string;\n  id: number;\n}\n\nexport const policyQueryOptions = {\n  feedback: ({ id, isLogin }: PolicyOptionsProps) => {\n    const options = isLogin\n      ? AuthQueryOptions['get:/wello/v2/auth/policy/feedback/{policy_id}']\n      : UnauthQueryOptions['get:/wello/v2/allows/policy/feedback/{policy_id}'];\n\n    return queryOptions({\n      ...options({\n        path: {\n          policy_id: id,\n        },\n      }),\n      enabled: isLogin !== undefined,\n      placeholderData: keepPreviousData,\n      select: ({ context }) => ({\n        readingCount: context?.reading_count ?? 0,\n        hasNewComment: context?.new_comment_yn ?? false,\n        isThumbUp: context?.like_yn ?? false,\n        thumbUpCount: context?.like_count ?? 0,\n        isBookmarked: context?.wishlist_yn,\n        bookmarkCount: context?.wishlist_count ?? 0,\n        commentCount: context?.comment_count ?? 0,\n        likeCount: context?.like_count ?? 0,\n      }),\n    });\n  },\n  policyDetail: (idx: string) =>\n    queryOptions({\n      queryKey: [policyQueryOptionsKeys.policyDetail, idx],\n      queryFn: () => getPolicyDetail(idx),\n    }),\n  search: ({\n    isLogin,\n    keyword,\n    codeRegion,\n    codeSubRegion,\n    descAgeList,\n    codeProvisionTypeList,\n    policySort = 'LATEST',\n  }: SearchOptionsProps) => {\n    const INITIAL_PAGE = 1;\n    const PAGE_SIZE = 20;\n\n    const options = isLogin\n      ? AuthInfiniteQueryOptions['get:/wello/v2/auth/policy']\n      : UnauthInfiniteQueryOptions['get:/wello/v2/allows/policy'];\n\n    return infiniteQueryOptions({\n      ...options({\n        query: {\n          page: INITIAL_PAGE,\n          size: PAGE_SIZE,\n          codeProvisionTypeList,\n          codeRegion,\n          codeSubRegion,\n          descAgeList,\n          policySort,\n          searchKeyword: keyword,\n        },\n      }),\n      enabled: isLogin !== undefined,\n      getNextPageParam: (lastPage) => {\n        const { page: currentPage, total_count: totalCount } =\n          lastPage.context ?? {};\n\n        if (!totalCount || !currentPage) return;\n\n        const nextPage = currentPage + 1;\n        const totalPageCount = Math.ceil(totalCount / PAGE_SIZE);\n\n        if (nextPage <= totalPageCount) return nextPage;\n      },\n      initialPageParam: INITIAL_PAGE,\n      placeholderData: keepPreviousData,\n    });\n  },\n};\n","import { infiniteQueryOptions } from '@tanstack/react-query';\n\nimport { AuthInfiniteQueryOptions, UnauthInfiniteQueryOptions } from '@/api/v2';\n\ninterface PolicyInfoListOptionsProps {\n  isLogin: boolean | undefined;\n  keyword?: string;\n  policySort?: 'LATEST' | 'POPULARITY';\n  codeProvisionType?: string;\n}\n\nexport const policyInfoQueryOptions = {\n  list: ({\n    isLogin,\n    policySort = 'LATEST',\n    keyword,\n    codeProvisionType,\n  }: PolicyInfoListOptionsProps) => {\n    const INITIAL_PAGE = 1;\n    const PAGE_SIZE = 20;\n\n    return infiniteQueryOptions({\n      ...(isLogin\n        ? AuthInfiniteQueryOptions['get:/wello/v2/auth/contents/best']\n        : UnauthInfiniteQueryOptions['get:/wello/v2/allows/contents/best'])({\n        query: {\n          size: PAGE_SIZE,\n          search_keyword: keyword,\n          best_contents_sort: policySort,\n          code_provision_type: codeProvisionType,\n          page: INITIAL_PAGE,\n        },\n      }),\n      getNextPageParam: ({ context }) => {\n        const { total_count, page } = context ?? {};\n\n        if (!total_count || !page) return;\n\n        const nextPage = page + 1;\n        const totalPageCount = Math.ceil(total_count / PAGE_SIZE);\n\n        if (nextPage <= totalPageCount) return nextPage;\n      },\n      select: ({ pages }) =>\n        pages.map(({ context }) => ({\n          policyInfoList: context?.contents?.map(\n            ({ provision_type, ...content }) => {\n              const provisionTypeList: string[] = [];\n\n              for (const key in provision_type) {\n                const value = provision_type[key];\n                if (value) provisionTypeList.push(value);\n              }\n\n              return { ...content, provisionTypeList };\n            },\n          ),\n          totalCount: context?.total_count,\n        })),\n      initialPageParam: INITIAL_PAGE,\n    });\n  },\n};\n","import { createUuid,CustomError } from '@common/utils';\nimport { infiniteQueryOptions, queryOptions } from '@tanstack/react-query';\n\nimport { AUTH_API, UNAUTH_API } from '@/api';\n\nimport { EXCEPTED_HIDDEN_CODE } from './filter';\n\nexport const situationQueryKeys = {\n  hospitalList: createUuid(),\n  hospitalDetailLive: createUuid(),\n  medicalPolicyInfinityList: createUuid(),\n  emergencyRoomCountOfRegion: createUuid(),\n};\n\nexport const situationQueryOptions = {\n  hospitalInfinityList: ({\n    page,\n    size,\n    time,\n    ...restParams\n  }: Parameters<typeof UNAUTH_API.getEmergencyRoomList>[number]) =>\n    infiniteQueryOptions({\n      queryKey: [situationQueryKeys.hospitalList, page, size, time, restParams],\n      queryFn: ({ pageParam }) =>\n        UNAUTH_API.getEmergencyRoomList({\n          page: pageParam,\n          size,\n          time: time === 24 ? 0 : time,\n          ...restParams,\n        }),\n      getNextPageParam: (lastPage) => {\n        const { page: currentPage, has_next } = lastPage.context ?? {};\n\n        if (!has_next || !currentPage) return;\n\n        return currentPage + 1;\n      },\n      initialPageParam: page,\n    }),\n\n  HospitalList: ({\n    time,\n    ...restParams\n  }: Omit<\n    Parameters<typeof UNAUTH_API.getEmergencyRoomList>[number],\n    'page' | 'size'\n  >) => {\n    return queryOptions({\n      queryKey: [situationQueryKeys.hospitalList, restParams, time],\n      queryFn: () =>\n        UNAUTH_API.getEmergencyRoomList({\n          ...restParams,\n          time: time === 24 ? 0 : time,\n          page: 1,\n          size: 999,\n        }),\n    });\n  },\n\n  hospitalDetailLive: (emergencyRoomId: number) =>\n    queryOptions({\n      refetchInterval: 60_000,\n      queryKey: [situationQueryKeys.hospitalDetailLive, emergencyRoomId],\n      queryFn: () =>\n        UNAUTH_API.getEmergencyRoomLive({\n          emergencyRoomId,\n        }),\n      select: ({ context }) => ({\n        roomCount: context?.hv36,\n        babyRoomCount: context?.hv37,\n        ambulanceUsable: context?.hvamyn,\n        ctUsable: context?.hvctayn,\n        mriUsable: context?.hvmriayn,\n        doctorName: context?.hvdnm,\n      }),\n    }),\n\n  medicalPolicyInfinityList: ({\n    page,\n    size,\n    isLogin,\n    ...restParams\n  }: Parameters<typeof UNAUTH_API.getMedicalPolicyList>[number] & {\n    isLogin?: boolean;\n  }) =>\n    infiniteQueryOptions({\n      queryKey: [\n        situationQueryKeys.medicalPolicyInfinityList,\n        page,\n        size,\n        restParams,\n        isLogin,\n      ],\n      queryFn: ({ pageParam }) => {\n        const params = {\n          page: pageParam,\n          size,\n          ...restParams,\n        };\n\n        return isLogin\n          ? AUTH_API.getMedicalPolicyList(params)\n          : UNAUTH_API.getMedicalPolicyList(params);\n      },\n      getNextPageParam: (lastPage) => {\n        const { page: currentPage, total_count } = lastPage.context ?? {};\n\n        if (!total_count || !currentPage)\n          throw new CustomError({\n            return_message: '페이지 수 데이터가 없습니다.',\n          });\n\n        const hasNextPage = currentPage < total_count / size;\n\n        if (!hasNextPage) return;\n\n        return currentPage + 1;\n      },\n      initialPageParam: page,\n      enabled: isLogin !== undefined,\n    }),\n  emergencyRoomCountOfRegion: ({\n    time,\n    ...restParams\n  }: Parameters<typeof UNAUTH_API.getEmergencyRoomCountOfRegion>[number]) =>\n    queryOptions({\n      queryFn: () =>\n        UNAUTH_API.getEmergencyRoomCountOfRegion({\n          ...restParams,\n          time: time === 24 ? 0 : time,\n        }),\n      queryKey: [\n        situationQueryKeys.emergencyRoomCountOfRegion,\n        time,\n        restParams,\n      ],\n      select: ({ context }) => {\n        const sejongIndex = context?.contents.find(\n          ({ code_sub_region }) =>\n            code_sub_region === EXCEPTED_HIDDEN_CODE.REGION_SEJONG_ALL,\n        );\n\n        if (sejongIndex) {\n          sejongIndex.sub_region = '세종시';\n        }\n\n        return context?.contents;\n      },\n    }),\n};\n","export * from './auth';\nexport * from './dpg';\nexport * from './family';\nexport * from './hometown-news';\nexport * from './meta-code';\nexport * from './policy';\nexport * from './policy-info';\nexport * from './situation';\n","import { createUuid } from '@common/utils';\nimport {\n  infiniteQueryOptions,\n  keepPreviousData,\n  queryOptions,\n} from '@tanstack/react-query';\n\nimport { AUTH_API, POINT_ACTIVITY, UNAUTH_API } from '@/api';\n\nexport const pointOptionsKeys = {\n  /** 본인 인증된 사용자 정보 */\n  memberAccount: createUuid(),\n  /** 포인트 정보 */\n  point: createUuid(),\n  /** 출석 내역 조회 */\n  pointAttendance: createUuid(),\n  /** 초대 수 */\n  invitedMemberCount: createUuid(),\n  /** 포인트 입출금 내역 리스트 */\n  pointHistoryInfiniteList: createUuid(),\n  /** 은행 리스트 */\n  bankList: createUuid(),\n  /** 포인트 예산 조회 */\n  pointBudget: createUuid(),\n  /** 포인트 시세 조회 */\n  pointPrice: createUuid(),\n  /** 내 포인트 조회 */\n  myPointBudget: createUuid(),\n};\n\nexport const pointOptions = {\n  //* 본인 인증된 사용자 정보\n  memberAccount: () =>\n    queryOptions({\n      queryFn: () => AUTH_API.getMemberAccount(),\n      queryKey: [pointOptionsKeys.memberAccount],\n      placeholderData: keepPreviousData,\n      select: ({ context }) => {\n        return {\n          accountNumber: context?.account_number,\n          accountOwner: context?.account_owner,\n          bankId: context?.bank_id,\n          birthDate: context?.birth_date,\n          memberAccountId: context?.member_account_id,\n        };\n      },\n    }),\n  //* point 정보, 특히 totalPoints\n  point: () =>\n    queryOptions({\n      queryFn: () => AUTH_API.getDetailPointBalance(),\n      queryKey: [pointOptionsKeys.pointAttendance],\n      placeholderData: keepPreviousData,\n      select: ({ context }) => {\n        return {\n          totalPoints: context?.total_points,\n          debitablePoints: context?.debitable_points,\n          memberOauthId: context?.member_oauth_id,\n        };\n      },\n      //* 매번 요청 최신화\n      staleTime: 0,\n      gcTime: 0,\n    }),\n  //* 은행 리스트\n  bankList: () =>\n    queryOptions({\n      queryFn: () => UNAUTH_API.getBankList(),\n      queryKey: [pointOptionsKeys.bankList],\n      placeholderData: keepPreviousData,\n      select: ({ context }) => {\n        return {\n          contents: context?.contents,\n        };\n      },\n    }),\n  // * 출석 내역 조회\n  pointAttendance: () =>\n    queryOptions({\n      queryFn: AUTH_API.getListPointAttendance,\n      queryKey: [pointOptionsKeys.pointAttendance],\n      placeholderData: keepPreviousData,\n      staleTime: 0,\n      select: ({ context }) => {\n        return {\n          attendanceList: context?.attendance_list.map((item) => ({\n            checked: item.attendance_yn,\n            date: item.date,\n          })),\n          count: context?.attendance_count,\n          month: context?.month,\n          point: context?.total_points,\n        };\n      },\n    }),\n  //* 초대 수\n  invitedMemberCount: () =>\n    queryOptions({\n      queryFn: () => AUTH_API.getInvitedMemberCount(),\n      queryKey: [pointOptionsKeys.invitedMemberCount],\n      placeholderData: keepPreviousData,\n      select: ({ context }) => {\n        return {\n          invitedMemberCount: context?.invited_member_count,\n        };\n      },\n    }),\n  //* 포인트 입출금 내역 리스트\n  pointHistoryInfiniteList: (\n    params: Pick<\n      Parameters<typeof AUTH_API.getPointHistoryList>[number],\n      'activityType'\n    >,\n  ) =>\n    infiniteQueryOptions({\n      queryKey: [\n        pointOptionsKeys.pointHistoryInfiniteList,\n        params.activityType,\n      ],\n      queryFn: ({ pageParam }) =>\n        AUTH_API.getPointHistoryList({\n          activityType: params.activityType,\n          page: pageParam,\n          size: 50,\n        }),\n      getNextPageParam: (lastPage, allPages) => {\n        // list length가 0이 아니면 다음 page 요청\n        if (lastPage.context && lastPage.context.contents.length > 0) {\n          return allPages.length + 1;\n        }\n\n        return null; // 나머지 조건에는 종료\n      },\n      initialPageParam: 1,\n      staleTime: 0,\n      gcTime: 0,\n    }),\n  //* 포인트 예산 조회\n  pointBudget: () =>\n    queryOptions({\n      queryFn: () => UNAUTH_API.getPointBudget(),\n      queryKey: [pointOptionsKeys.pointBudget],\n      placeholderData: keepPreviousData,\n      staleTime: 0,\n      select: ({ context }) => {\n        const weeklyBudget = context?.budget_point ?? 0;\n        const weeklyAccumulatedPoint = context?.accumulated_point ?? 0;\n        const benefitCount = context?.benefit_count ?? 0;\n        const weeklyAccumulatedPointPercentage =\n          (weeklyAccumulatedPoint / weeklyBudget) * 100;\n        const weeklyRemainingPoint = context?.remain_point ?? 0;\n\n        let weeklyAccumulatedPointText = '';\n\n        if (10_000 <= weeklyAccumulatedPoint) {\n          weeklyAccumulatedPointText = `${Math.floor(weeklyAccumulatedPoint / 10_000).toLocaleString()}만`;\n        } else {\n          weeklyAccumulatedPointText = `${weeklyAccumulatedPoint.toLocaleString()}`;\n        }\n\n        let weeklyBudgetText = '';\n\n        if (10_000 <= weeklyBudget) {\n          weeklyBudgetText = `${(weeklyBudget / 10_000).toLocaleString()}만`;\n        } else {\n          weeklyBudgetText = `${weeklyBudget.toLocaleString()}`;\n        }\n\n        return {\n          weeklyBudget,\n          weeklyAccumulatedPointPercentage,\n          weeklyRemainingPoint,\n          weeklyAccumulatedPointText,\n          weeklyBudgetText,\n          benefitCount,\n        };\n      },\n    }),\n  //* 포인트 시세 조회\n  pointPrice: () =>\n    queryOptions({\n      queryFn: () => UNAUTH_API.getPointPrice(),\n      queryKey: [pointOptionsKeys.pointPrice],\n      placeholderData: keepPreviousData,\n      staleTime: Infinity,\n      gcTime: Infinity,\n      select: ({ context }) => {\n        const pointEarning = context?.point_earning;\n\n        if (!pointEarning) return;\n\n        const activity = Object.values(POINT_ACTIVITY).reduce(\n          (acc, cur) => {\n            acc[cur] = pointEarning[cur];\n\n            return acc;\n          },\n          {} as Record<POINT_ACTIVITY, number | undefined>,\n        );\n\n        return activity;\n      },\n    }),\n  myPointBudget: () =>\n    queryOptions({\n      queryFn: () => AUTH_API.getPointBudget(),\n      queryKey: [pointOptionsKeys.myPointBudget],\n      select: ({ context }) => {\n        const pointMission = {\n          isSaveFilter: context?.save_filter_yn ?? false,\n          isAttendance: context?.today_attendance_yn ?? false,\n          isInvite: context?.today_invite_yn ?? false,\n          isWrite: context?.today_write_yn ?? false,\n        };\n\n        const completedMission: (keyof typeof pointMission)[] = [];\n        const leftMission: (keyof typeof pointMission)[] = [];\n\n        Object.entries(pointMission).forEach(([key, value]) => {\n          const missionKey = key as keyof typeof pointMission;\n          if (value) {\n            completedMission.push(missionKey);\n          } else {\n            leftMission.push(missionKey);\n          }\n        });\n\n        return {\n          eventCombo: context?.event_count ?? 0,\n          todayAccumulatedPoint: context?.today_accumulated_point ?? 0,\n          completedMission,\n          leftMission,\n          pointMission,\n          totalWithdrawalCount: context?.total_withdrawal_count ?? 0,\n        };\n      },\n      staleTime: 0,\n      placeholderData: keepPreviousData,\n    }),\n};\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"contents\":\"page_contents__ASCLL\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"thumbnail\":\"HometownNewsDetailBottomDrawer_thumbnail__UaaIk\"};","class AbortError extends Error {\n    constructor(message = 'The operation was aborted') {\n        super(message);\n        this.name = 'AbortError';\n    }\n}\n\nexport { AbortError };\n","import { AbortError } from '../error/AbortError.mjs';\n\nfunction delay(ms, { signal } = {}) {\n    return new Promise((resolve, reject) => {\n        const abortError = () => {\n            reject(new AbortError());\n        };\n        const abortHandler = () => {\n            clearTimeout(timeoutId);\n            abortError();\n        };\n        if (signal?.aborted) {\n            return abortError();\n        }\n        const timeoutId = setTimeout(() => {\n            signal?.removeEventListener('abort', abortHandler);\n            resolve();\n        }, ms);\n        signal?.addEventListener('abort', abortHandler, { once: true });\n    });\n}\n\nexport { delay };\n","class TimeoutError extends Error {\n    constructor(message = 'The operation was timed out') {\n        super(message);\n        this.name = 'TimeoutError';\n    }\n}\n\nexport { TimeoutError };\n","import { delay } from './delay.mjs';\nimport { TimeoutError } from '../error/TimeoutError.mjs';\n\nasync function timeout(ms) {\n    await delay(ms);\n    throw new TimeoutError();\n}\n\nexport { timeout };\n","import { timeout } from './timeout.mjs';\n\nasync function withTimeout(run, ms) {\n    return Promise.race([run(), timeout(ms)]);\n}\n\nexport { withTimeout };\n","import { invariant } from '../../utils/errors.mjs';\nimport { setValues } from '../../render/utils/setters.mjs';\nimport { animateVisualElement } from '../interfaces/visual-element.mjs';\n\nfunction stopAnimation(visualElement) {\n    visualElement.values.forEach((value) => value.stop());\n}\n/**\n * @public\n */\nfunction animationControls() {\n    /**\n     * Track whether the host component has mounted.\n     */\n    let hasMounted = false;\n    /**\n     * A collection of linked component animation controls.\n     */\n    const subscribers = new Set();\n    const controls = {\n        subscribe(visualElement) {\n            subscribers.add(visualElement);\n            return () => void subscribers.delete(visualElement);\n        },\n        start(definition, transitionOverride) {\n            invariant(hasMounted, \"controls.start() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n            const animations = [];\n            subscribers.forEach((visualElement) => {\n                animations.push(animateVisualElement(visualElement, definition, {\n                    transitionOverride,\n                }));\n            });\n            return Promise.all(animations);\n        },\n        set(definition) {\n            invariant(hasMounted, \"controls.set() should only be called after a component has mounted. Consider calling within a useEffect hook.\");\n            return subscribers.forEach((visualElement) => {\n                setValues(visualElement, definition);\n            });\n        },\n        stop() {\n            subscribers.forEach((visualElement) => {\n                stopAnimation(visualElement);\n            });\n        },\n        mount() {\n            hasMounted = true;\n            return () => {\n                hasMounted = false;\n                controls.stop();\n            };\n        },\n    };\n    return controls;\n}\n\nexport { animationControls };\n","import { animationControls } from './animation-controls.mjs';\nimport { useConstant } from '../../utils/use-constant.mjs';\nimport { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs';\n\n/**\n * Creates `AnimationControls`, which can be used to manually start, stop\n * and sequence animations on one or more components.\n *\n * The returned `AnimationControls` should be passed to the `animate` property\n * of the components you want to animate.\n *\n * These components can then be animated with the `start` method.\n *\n * ```jsx\n * import * as React from 'react'\n * import { motion, useAnimation } from 'framer-motion'\n *\n * export function MyComponent(props) {\n *    const controls = useAnimation()\n *\n *    controls.start({\n *        x: 100,\n *        transition: { duration: 0.5 },\n *    })\n *\n *    return <motion.div animate={controls} />\n * }\n * ```\n *\n * @returns Animation controller with `start` and `stop` methods\n *\n * @public\n */\nfunction useAnimationControls() {\n    const controls = useConstant(animationControls);\n    useIsomorphicLayoutEffect(controls.mount, []);\n    return controls;\n}\nconst useAnimation = useAnimationControls;\n\nexport { useAnimation, useAnimationControls };\n"],"names":["Promise","resolve","then","__webpack_require__","bind","t","_path","_extends","Object","assign","n","e","arguments","length","r","hasOwnProperty","call","apply","components_SvgTextfieldclose","createSvgComponent","props","react","createElement","xmlns","width","height","fill","viewBox","fillRule","d","clipRule","DownloadAppBanner","webviewType","osType","useDeviceInfoStore","useShallow","state","isVisible","setIsVisible","useState","isMobileWeb","includes","useEffect","lastClosed","localStorage","getItem","now","dayjs","isSame","react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__","jsx","Portal","renderTo","document","getElementById","SELECTOR","PAGE_NAV_WRAPPER","jsxs","aside","className","div","Image","alt","quality","src","Button","asChild","dimensions","a","href","DEFAULT_META","appLinks","ios","url","android","rel","target","button","type","onClick","setItem","toISOString","SvgDelete","name","HometownNewsBookmarkButton","idIdx","param","isLogin","useAuthStore","data","id","useQuery","UnauthQueryOptions","path","hometown_news_id_idx","select","context","detail_hometown_news","hometown_news_id","feedbackQuery","hometownNewsQueryOptions","feedback","isBookmarked","wishlist_yn","bookmarkCount","wishlist_count","bookmark","useBookmark","BookmarkButton","assert","bookmarkType","BOOKMARK_TYPE","HOMETOWN_NEWS","contentId","idx","HometownNewsDaysAgo","fallbackDate","daysAgo","clientDaysAgo","days_ago","p","useGetHometownNewsRelatedList","UNAUTH_API","getRelatedHometownNewsList","hometownNewsIdIdx","Error","list","contents","keyword","search_keyword","isNormalizedResponse","return_code","ERROR_CODE","HIDDEN","redirect","ROUTES","ERROR","pathname","code","HometownNewsDetailBottomDrawer","isShow","setIsShow","isWelloApp","useCheckWelloApp","isLoading","query","contents_type_cd","BANNER_CONTENTS_TYPE","HOMETOWN_BOTTOM_SHEET","banner","applyFileUrl","app_file_url","file_url","applyLinkUrl","app_link_url","link_url","window","sessionStorage","bottomDrawerShowPathname","STORAGE_KEY","HOMETOWN_NEWS_DETAIL_BOTTOM_DRAWER_PATH","setTimeout","location","removeItem","jsx_runtime","BottomDrawer","opened","MAIN_WRAPPER","onClose","HandleWrapper","Handle","Contents","section","title","subtitle","LazyImage","styles","theme","button_text","ImageFloatingBanner","isClose","setIsClose","isMounted","setIsMounted","HOMETOWN_FLOATING","mainElement","setMainElement","MAIN","createPortal","CustomLink","target_new_yn","preventDefault","SvgTextfieldclose","Fragment","MoreFloatingButton","contentAreaSelector","recommendHometownNewsSelector","contentsElement","setContentsElement","recommendHometownNewsElement","setRecommendHometownNewsElement","controls","useAnimation","updateIsShow","useCallback","undefined","isContentsScrollOveredHalf","offsetTop","offsetHeight","scrollTop","isRecommendHometownNewsListScrollOvered","handleScroll","throttle","addEventListener","removeEventListener","start","opacity","SHOW_BUTTON_OPACITY","INITIALIZE_BUTTON_OPACITY","bottom","SHOW_BUTTON_BOTTOM","INITIALIZE_BUTTON_BOTTOM","transition","duration","motion","animate","disabled","initial","scrollIntoView","behavior","block","SvgChevrondown","RecommendHometownNewsCard","publishedAt","thumbnail","routePathname","HOMETOWN_NEWS_DETAIL","h4","RecommendHometownNewsVerticalCard","cn","RecommendHometownNews","listSection","slice","swipeList","article","ul","map","li","news","hometown_news_name","published_at","Swiper","SWIPER_PROPS","SwiperSlide","slidesPerView","spaceBetween","mousewheel","modules","Mousewheel","MoreHometownNewsList","contentAreaId","hometownNewsRelatedList","hometownNewsRelatedListKeyword","hometownNewsRelated","useSuspenseQuery","queryKey","queryFn","getHometownNewsRelatedList","isNotRenderRelatedList","initialCommentData","initialComment","getCommentList","commentType","COMMENT_TYPE","recommendHometownNewsAreaId","createUuid","CommentListWithField","initialData","TopBanner","appFileUrl","appLinkUrl","fileUrl","linkUrl","targetNewYn","img","isDisplayed","setIsDisplayed","inView","useInView","onChange","ref","SvgBookmarkFill","CountUp","preserveValue","startOnMount","end","_g","_defs","components_SvgMailSend","node_modules_react","clipPath","CommentFieldContent","initOnFocus","replyTo","rootCommentId","parentCommentId","onSuccess","topDivider","isFocused","setIsFocused","startText","concat","protectedPrefix","minHtmlLength","tempContentForProtectedPrefix","useRef","editorRef","isSubmitDisabled","setIsSubmitDisabled","handleSubmitDisabled","text","editor","getText","blockSeparator","startsWith","initContent","current","commands","setContent","postComment","useMutation","mutationFn","AuthApi","body","comment_type_cd","content_id","parent_wello_comment_id","root_wello_comment_id","meta","reset","AuthQueryKey","CustomError","focus","router","useCustomRouter","CustomEditor","Provider","placeholder","onBlur","onCreate","onFocus","URL","push","LOGIN","withSearchParams","searchParams","search","onUpdate","content","getHTML","form","onSubmit","replace","trim","mutate","isPending","Spinner","size","SvgMailSend","ReplyCommentField","nickname","welloCommentId","nick_name","FixedArea","CommentField","withPortal","restProps","Container","BottomNavPortal","Suspense","fallback","policyTalkContentIdx","hasCommentField","commentFieldTopDivider","commentFieldClassName","useSearchParams","sortType","get","SEARCH_PARAMS","SORT_TYPE","COMMENT_SORT_TYPE","LATEST","params","Number","isNaN","PARENT_COMMENT_ID","isEnumValue","return_message","setPlaceholder","isCommentPage","toastPoint","useToastPoint","CommentList","onChangeCommentData","onClickEditButton","commentId","isRoot","POLICY_TALK_COMMENT_EDIT","contentIdx","COMMENT_EDIT","dynamicPath","onClickReplyButton","targetRoute","COMMENT_LIST","res","set","history","replaceState","scroller","scrollTo","COMMENT_LIST_TOP","smooth","containerId","offset","point","point_activity","result_yn","add_points","COMMENT_PREFIX","wello_comment_id","OPTIMISTIC_QUERY_KEYS","isQueryObject","obj","content_type_cd","queryClient","useQueryClient","request","requestHaptic","useHandleApp","MESSAGE_KEYWORD","HAPTIC","useMemo","debouncedMutate","debounce","options","getState","bookmarkQueries","getQueriesData","predicate","some","isSameEndpointQuery","forEach","key","isBaseKeyHasId","firstKey","StringKey","JSON","stringify","String","hasObjectKey","newData","cloneDeep","setQueryData","Array","isArray","updatedContents","item","index","idKey","targetObjectList","result","findTargetObject","changeBookmarkCount","changeBookmarkYn","page","onError","toast","span","Math","abs","toLocaleString","QUERY_KEYS_TO_INVALIDATE","invalidateQueries","toastPointError","message","error","errorCode","errorMessage","console","pointOptionsKeys","pointAttendance","pointHistoryInfiniteList","authQueryOptionsKeys","socialLogin","authQueryOptions","enabled","queryOptions","staleTime","redirectPath","parse","atob","access_token","ky","post","headers","URLSearchParams","redirect_uri","ENV","NEXT_PUBLIC_DOMAIN","grant_type","client_id","NEXT_PUBLIC_KAKAO_CLIENT_ID","json","loginType","LOGIN_TYPE","KAKAO","socialLoginToken","API_ROUTES","NAVER_AUTH","NAVER","GOOGLE_AUTH","GOOGLE","id_token","APPLE_TOKEN","APPLE","dpgQueryOptionsKeys","checkEligibility","agreement","notice","loanInterest","deptReportList","deptReportDetail","getCIInfo","address","dpgQueryOptions","ciToken","DPG_API","postEligibilityCheck","requestBody","custCi","retry","isTarget","canRprYn","isPeriodicReport","preRgrRprtYn","getAgreement","financialInfo","finInfoAgmtCten","personalInfo","indvInfoAgmtCten","year","baseYear","toString","noticeCten","getLoanInterestList","Date","getFullYear","basDt","loanAmtSum","loanBlmtSum","loanIntAmtSum","nyRcpDutyApmtAmt","nyRcpOvdAmt","nyRcpOvdAdAmt","nyRcpAmtSum","loanList","getReportHistoryList","total","totalCount","rprYr","dbtrRprClssCd","dbtrRprDt","getReportHistory","rprFltNm","rprDutyAbtnYr","univGrdtYn","grdtDt","grdtUnivCd","grdtUnivNm","ovseRsdYn","rsdcPno","rsdcPnoAddr","rsdcDtalAddr","rsdcStsgLtnoDivCd","ctyCd","ctyNm","etcMttCten","mblTno","emailAddr","wkplEan","spoEan","spoFrnrYn","spoNm","spoOvseRsdYn","spoRsdcPno","spoRsdcPnoAddr","spoRsdcDtalAddr","spoRsdcStsgLtnoDivCd","spoCtyCd","spoCtyNm","spoWkplEan","indvInfoOferAgmtYn","finInfoOferAgmtYn","dbtrNrgrRprClssCd","careerList","spoCareerList","AUTH_API","getMemberVerification","accessToken","ci","getAddress","pnoAddr","addressDetail","dtalAddr","zonecode","pno","addressType","stsgLtnoDivCd","familyQueryOptions","queryKeys","familyList","getFamilyList","wello_member_family_list","total_policy_count","totalPolicyCount","codeRegion","codeSubRegion","hometownNewsSort","infiniteQueryOptions","AuthInfiniteQueryOptions","UnauthInfiniteQueryOptions","code_region","code_sub_region","hometown_news_sort","pages","commentCount","comment_count","dateText","summary","thumbUpCount","like_count","isThumbUp","like_yn","total_count","pageParams","getNextPageParam","lastPage","nextPage","ceil","initialPageParam","AuthQueryOptions","metaCodeQueryOptionsKeys","regionList","subRegionList","geolocation","geoCodingByRegionCode","getMetaCode","metaCode","meta_code_all_list","meta_sub_code_list","label","value","regionCode","subRegionCode","getGeocodingByRegionCode","redirectDetailPage","returnCode","getPolicyDetail","metaPolicyIdIdx","UnauthApi","meta_policy_id_idx","HOME","relatedInfo","apply_documents","replaceAll","base_rule","summaryString","keywordString","withTimeout","ai_summary","ai_seo_keyword","all","updatePolicyAiInfo","gpt_prompt_type","GPT_PROMPT_TYPE","SUMMARY","KEYWORD","catch","aiSummaryList","split","s","aiKeywordList","filter","test","policyName","policy_name","descAgeList","desc_age_list","dday","policyApplyId","wello_policy_apply_id","provisionTypeList","provision_type_list","applyTypeList","apply_type_list","agencyLogo","agency_logo","agency","dueDateBetween","due_date_between","supportBenefit","support_benefit","descTarget","desc_target","descSupport","desc_support","descProvision","desc_provision","policyBannerTypeList","policy_banner_type_list","descApply","desc_apply","agencyTel","agency_tel","infoUrl","info_url","policyApplicationTypeCd","policy_application_type_cd","detailPolicyApplicationTypeCd","detail_policy_application_type_cd","policyQueryOptionsKeys","policyDetail","policyQueryOptions","policy_id","placeholderData","keepPreviousData","readingCount","reading_count","hasNewComment","new_comment_yn","likeCount","codeProvisionTypeList","policySort","searchKeyword","currentPage","policyInfoQueryOptions","codeProvisionType","best_contents_sort","code_provision_type","policyInfoList","provision_type","situationQueryKeys","hospitalList","hospitalDetailLive","medicalPolicyInfinityList","emergencyRoomCountOfRegion","situationQueryOptions","hospitalInfinityList","time","restParams","pageParam","getEmergencyRoomList","has_next","HospitalList","refetchInterval","emergencyRoomId","getEmergencyRoomLive","roomCount","hv36","babyRoomCount","hv37","ambulanceUsable","hvamyn","ctUsable","hvctayn","mriUsable","hvmriayn","doctorName","hvdnm","getMedicalPolicyList","getEmergencyRoomCountOfRegion","sejongIndex","find","EXCEPTED_HIDDEN_CODE","REGION_SEJONG_ALL","sub_region","memberAccount","invitedMemberCount","bankList","pointBudget","pointPrice","myPointBudget","pointOptions","getMemberAccount","accountNumber","account_number","accountOwner","account_owner","bankId","bank_id","birthDate","birth_date","memberAccountId","member_account_id","getDetailPointBalance","totalPoints","total_points","debitablePoints","debitable_points","memberOauthId","member_oauth_id","gcTime","getBankList","getListPointAttendance","attendanceList","attendance_list","checked","attendance_yn","date","count","attendance_count","month","getInvitedMemberCount","invited_member_count","activityType","getPointHistoryList","allPages","getPointBudget","weeklyBudget","budget_point","weeklyAccumulatedPoint","accumulated_point","benefitCount","benefit_count","weeklyRemainingPoint","remain_point","weeklyAccumulatedPointText","floor","weeklyBudgetText","weeklyAccumulatedPointPercentage","getPointPrice","Infinity","pointEarning","point_earning","values","POINT_ACTIVITY","reduce","acc","cur","pointMission","isSaveFilter","save_filter_yn","isAttendance","today_attendance_yn","isInvite","today_invite_yn","isWrite","today_write_yn","completedMission","leftMission","entries","eventCombo","event_count","todayAccumulatedPoint","today_accumulated_point","totalWithdrawalCount","total_withdrawal_count","module","exports","AbortError","constructor","delay","ms","signal","reject","abortError","abortHandler","clearTimeout","timeoutId","aborted","once","TimeoutError","timeout","g","run","race","animationControls","hasMounted","subscribers","Set","subscribe","add","visualElement","delete","definition","transitionOverride","errors","k","animations","visual_element","setters","gg","stop","stopAnimation","mount","use_constant","h","use_isomorphic_effect","L"],"sourceRoot":""}