{"version":3,"file":"static/chunks/1368-03c0cf61c948aa29.js","mappings":"AAGA","sources":["webpack://_N_E/./node_modules/antd/es/_util/hooks/useFlexGapSupport.js","webpack://_N_E/./node_modules/antd/es/space/Item.js","webpack://_N_E/./node_modules/antd/es/space/index.js","webpack://_N_E/./src/api/booksOrder.ts","webpack://_N_E/./src/components/Books/Order/BooksOrderDelivery.tsx","webpack://_N_E/./src/components/Books/Order/BooksOrderProducts.tsx","webpack://_N_E/./src/components/Books/Order/BooksOrderTerms.tsx","webpack://_N_E/./src/components/Books/Order/BooksOrder.tsx","webpack://_N_E/./src/components/Books/Order/BooksOrderPayMethods.tsx","webpack://_N_E/./src/components/common/RoundedCounter.tsx","webpack://_N_E/./src/components/Books/Order/BooksOrderProductItem.tsx","webpack://_N_E/./src/components/Books/Order/BooksOrderSummary.tsx","webpack://_N_E/./src/components/Package/OrderComponents/OrderSummaryItem.tsx","webpack://_N_E/./src/components/Package/OrderComponents/PassOrderSummary.tsx","webpack://_N_E/./src/components/Package/OrderComponents/PaymentRadio.tsx","webpack://_N_E/./src/components/Package/OrderComponents/PaymentCard.tsx","webpack://_N_E/./src/components/Package/PassRegister/index.tsx","webpack://_N_E/./src/components/Package/SubscribeToPass/SubscribeNotice.tsx","webpack://_N_E/./src/components/Package/index.tsx","webpack://_N_E/./src/lib/iamport/index.tsx","webpack://_N_E/./src/store/booksOrder.ts","webpack://_N_E/<anon>"],"sourcesContent":["import _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nimport * as React from 'react';\nimport { detectFlexGapSupported } from '../styleChecker';\nexport default (function () {\n var _React$useState = React.useState(false),\n _React$useState2 = _slicedToArray(_React$useState, 2),\n flexible = _React$useState2[0],\n setFlexible = _React$useState2[1];\n React.useEffect(function () {\n setFlexible(detectFlexGapSupported());\n }, []);\n return flexible;\n});","import _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { SpaceContext } from '.';\nexport default function Item(_ref) {\n var className = _ref.className,\n direction = _ref.direction,\n index = _ref.index,\n marginDirection = _ref.marginDirection,\n children = _ref.children,\n split = _ref.split,\n wrap = _ref.wrap;\n var _React$useContext = React.useContext(SpaceContext),\n horizontalSize = _React$useContext.horizontalSize,\n verticalSize = _React$useContext.verticalSize,\n latestIndex = _React$useContext.latestIndex,\n supportFlexGap = _React$useContext.supportFlexGap;\n var style = {};\n if (!supportFlexGap) {\n if (direction === 'vertical') {\n if (index < latestIndex) {\n style = {\n marginBottom: horizontalSize / (split ? 2 : 1)\n };\n }\n } else {\n style = _extends(_extends({}, index < latestIndex && _defineProperty({}, marginDirection, horizontalSize / (split ? 2 : 1))), wrap && {\n paddingBottom: verticalSize\n });\n }\n }\n if (children === null || children === undefined) {\n return null;\n }\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: className,\n style: style\n }, children), index < latestIndex && split && /*#__PURE__*/React.createElement(\"span\", {\n className: className + \"-split\",\n style: style\n }, split));\n}","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _defineProperty from \"@babel/runtime/helpers/esm/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/esm/slicedToArray\";\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport classNames from 'classnames';\nimport toArray from \"rc-util/es/Children/toArray\";\nimport * as React from 'react';\nimport { ConfigContext } from '../config-provider';\nimport useFlexGapSupport from '../_util/hooks/useFlexGapSupport';\nimport Item from './Item';\nimport Compact from './Compact';\nimport useStyle from './style';\nexport var SpaceContext = /*#__PURE__*/React.createContext({\n latestIndex: 0,\n horizontalSize: 0,\n verticalSize: 0,\n supportFlexGap: false\n});\nvar spaceSize = {\n small: 8,\n middle: 16,\n large: 24\n};\nfunction getNumberSize(size) {\n return typeof size === 'string' ? spaceSize[size] : size || 0;\n}\nvar Space = function Space(props) {\n var _classNames;\n var _React$useContext = React.useContext(ConfigContext),\n getPrefixCls = _React$useContext.getPrefixCls,\n space = _React$useContext.space,\n directionConfig = _React$useContext.direction;\n var _props$size = props.size,\n size = _props$size === void 0 ? (space === null || space === void 0 ? void 0 : space.size) || 'small' : _props$size,\n align = props.align,\n className = props.className,\n children = props.children,\n _props$direction = props.direction,\n direction = _props$direction === void 0 ? 'horizontal' : _props$direction,\n customizePrefixCls = props.prefixCls,\n split = props.split,\n style = props.style,\n _props$wrap = props.wrap,\n wrap = _props$wrap === void 0 ? false : _props$wrap,\n otherProps = __rest(props, [\"size\", \"align\", \"className\", \"children\", \"direction\", \"prefixCls\", \"split\", \"style\", \"wrap\"]);\n var supportFlexGap = useFlexGapSupport();\n var _React$useMemo = React.useMemo(function () {\n return (Array.isArray(size) ? size : [size, size]).map(function (item) {\n return getNumberSize(item);\n });\n }, [size]),\n _React$useMemo2 = _slicedToArray(_React$useMemo, 2),\n horizontalSize = _React$useMemo2[0],\n verticalSize = _React$useMemo2[1];\n var childNodes = toArray(children, {\n keepEmpty: true\n });\n var mergedAlign = align === undefined && direction === 'horizontal' ? 'center' : align;\n var prefixCls = getPrefixCls('space', customizePrefixCls);\n var _useStyle = useStyle(prefixCls),\n _useStyle2 = _slicedToArray(_useStyle, 2),\n wrapSSR = _useStyle2[0],\n hashId = _useStyle2[1];\n var cn = classNames(prefixCls, hashId, prefixCls + \"-\" + direction, (_classNames = {}, _defineProperty(_classNames, prefixCls + \"-rtl\", directionConfig === 'rtl'), _defineProperty(_classNames, prefixCls + \"-align-\" + mergedAlign, mergedAlign), _classNames), className);\n var itemClassName = prefixCls + \"-item\";\n var marginDirection = directionConfig === 'rtl' ? 'marginLeft' : 'marginRight';\n // Calculate latest one\n var latestIndex = 0;\n var nodes = childNodes.map(function (child, i) {\n if (child !== null && child !== undefined) {\n latestIndex = i;\n }\n var key = child && child.key || itemClassName + \"-\" + i;\n return /*#__PURE__*/React.createElement(Item, {\n className: itemClassName,\n key: key,\n direction: direction,\n index: i,\n marginDirection: marginDirection,\n split: split,\n wrap: wrap\n }, child);\n });\n var spaceContext = React.useMemo(function () {\n return {\n horizontalSize: horizontalSize,\n verticalSize: verticalSize,\n latestIndex: latestIndex,\n supportFlexGap: supportFlexGap\n };\n }, [horizontalSize, verticalSize, latestIndex, supportFlexGap]);\n // =========================== Render ===========================\n if (childNodes.length === 0) {\n return null;\n }\n var gapStyle = {};\n if (wrap) {\n gapStyle.flexWrap = 'wrap';\n // Patch for gap not support\n if (!supportFlexGap) {\n gapStyle.marginBottom = -verticalSize;\n }\n }\n if (supportFlexGap) {\n gapStyle.columnGap = horizontalSize;\n gapStyle.rowGap = verticalSize;\n }\n return wrapSSR( /*#__PURE__*/React.createElement(\"div\", _extends({\n className: cn,\n style: _extends(_extends({}, gapStyle), style)\n }, otherProps), /*#__PURE__*/React.createElement(SpaceContext.Provider, {\n value: spaceContext\n }, nodes)));\n};\nvar CompoundedSpace = Space;\nCompoundedSpace.Compact = Compact;\nexport default CompoundedSpace;","import { otherApiClient } from \".\";\nexport const OrderStatus = {\n ORDERED: 0,\n VBANK_WAITING: 100,\n BILLING_WAITING: 200,\n COMPLETE: 400,\n BILLING_FAILED: 800,\n CANCELED: 900,\n REFUND_SUCCESS: 1000,\n PARTIALLY_REFUND: 1100\n};\nexport const OrderStatusWithString = {\n [OrderStatus.ORDERED]: \"ê²°ì œ 대기\",\n [OrderStatus.VBANK_WAITING]: \"입금 대기중\",\n [OrderStatus.BILLING_WAITING]: \"입금 대기중\",\n [OrderStatus.COMPLETE]: \"ê²°ì œ 완료\",\n [OrderStatus.BILLING_FAILED]: \"ê²°ì œ 실패\",\n [OrderStatus.CANCELED]: \"ê²°ì œ 취소\",\n [OrderStatus.REFUND_SUCCESS]: \"환불 완료\",\n [OrderStatus.PARTIALLY_REFUND]: \"부분 환불\"\n};\nexport const DiscountTypes = {\n AMOUNT: \"amount\",\n PERCENT: \"percent\"\n};\nexport const postOrder = async (params)=>{\n const { data } = await otherApiClient.market.post(\"/orders\", params);\n return data;\n};\nexport const getBooksOrderList = async (params)=>{\n const { data } = await otherApiClient.market(\"/orders\", {\n params\n });\n return data;\n};\nexport const getOrderList = async (param)=>{\n let { id } = param;\n const { data } = await otherApiClient.market(\"/orders/\".concat(id));\n return data;\n};\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n gap: 24px;\\n align-items: flex-start;\\n\\n .ant-btn {\\n color: \",\n \";\\n font-size: 14px;\\n font-weight: 600;\\n line-height: 22px;\\n letter-spacing: -0.14px;\\n }\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject1() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n flex-grow: 1;\\n\\n color: \",\n \";\\n font-size: 16px;\\n font-weight: 600;\\n line-height: 1.5;\\n letter-spacing: -0.16px;\\n line-break: anywhere;\\n\"\n ]);\n _templateObject1 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject2() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n font-size: 14px;\\n font-weight: 400;\\n line-height: 22px;\\n letter-spacing: -0.14px;\\n\\n &,\\n dd {\\n margin-bottom: 0;\\n }\\n\\n &,\\n dt {\\n color: \",\n \";\\n }\\n dt {\\n margin-right: 4px;\\n white-space: nowrap;\\n }\\n\"\n ]);\n _templateObject2 = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useAuthStore } from \"@/lib/auth/AuthStore\";\nimport { BOOKS_DELIVERY_ADDRESS } from \"@/settings/constant\";\nimport Link from \"next/link\";\nimport styled from \"styled-components\";\nimport NoPadButton from \"../../common/Button/NoPadButton\";\nconst HorizontalStack = styled.div.withConfig({\n componentId: \"sc-e18646af-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.sol_indigo_500);\nconst Stack = styled.div.withConfig({\n componentId: \"sc-e18646af-1\"\n})(_templateObject1(), (props)=>props.theme.new.colors.sol_gray_900);\nconst Message = styled.dl.withConfig({\n componentId: \"sc-e18646af-2\"\n})(_templateObject2(), (props)=>props.theme.new.colors.sol_gray_500);\nconst BooksOrderDelivery = ()=>{\n const { user } = useAuthStore();\n return /*#__PURE__*/ _jsxs(Stack, {\n children: [\n /*#__PURE__*/ _jsxs(HorizontalStack, {\n children: [\n /*#__PURE__*/ _jsxs(Stack, {\n children: [\n /*#__PURE__*/ _jsx(\"p\", {\n children: user.address.name\n }),\n /*#__PURE__*/ _jsxs(\"div\", {\n children: [\n /*#__PURE__*/ _jsx(\"p\", {\n children: user.address.address1\n }),\n /*#__PURE__*/ _jsx(\"p\", {\n children: user.address.address2\n })\n ]\n })\n ]\n }),\n /*#__PURE__*/ _jsx(Link, {\n href: BOOKS_DELIVERY_ADDRESS,\n children: /*#__PURE__*/ _jsx(NoPadButton, {\n type: \"text\",\n children: \"ìˆ˜ì •í•˜ê¸°\"\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(Message, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"배송 메시지:\"\n }),\n /*#__PURE__*/ _jsx(\"dd\", {\n children: user.address.message\n })\n ]\n })\n ]\n });\n};\nexport default BooksOrderDelivery;\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n gap: 24px;\\n\\n max-width: 300px;\\n margin: 0 auto;\\n\\n .ant-btn {\\n padding: 12px 20px;\\n font-size: 16px;\\n font-weight: 600;\\n line-height: 1.5;\\n letter-spacing: -0.16px;\\n }\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject1() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n gap: 16px;\\n\\n color: \",\n \";\\n font-size: 14px;\\n font-weight: 400;\\n line-height: 150%;\\n\\n svg {\\n width: 80px;\\n height: 50px;\\n }\\n\"\n ]);\n _templateObject1 = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport FilledButton from \"@/components/common/Button/FilledButton\";\nimport Icon from \"@/components/icon/Icon\";\nimport { Empty } from \"@/components/icon/IconList\";\nimport { BOOKS_LANDING, EBOOKS_LANDING, PASSES_LANDING } from \"@/settings/constant\";\nimport Link from \"next/link\";\nimport useBooksOrderStore from \"src/store/booksOrder\";\nimport styled from \"styled-components\";\nimport { useBooks } from \".\";\nimport BooksOrderProductItem from \"./BooksOrderProductItem\";\nimport { SourceTypeWithString } from \"../../../api/product\";\nimport { usePasses, useProductType } from \"@/components/Package\";\nimport { OrderCardContainer } from \"../../Package/OrderComponents/PaymentCard\";\nconst BooksOrderProductEmptyContainer = styled.div.withConfig({\n componentId: \"sc-3155adbe-0\"\n})(_templateObject());\nconst BooksOrderProductEmptyImage = styled.div.withConfig({\n componentId: \"sc-3155adbe-1\"\n})(_templateObject1(), (props)=>props.theme.new.colors.sol_gray_500);\nconst BooksOrderProducts = (param)=>{\n let { data } = param;\n const { isBooks } = useBooks();\n const { isPackages } = usePasses();\n const items = useBooksOrderStore((state)=>state.items);\n const { productType } = useProductType();\n return items ? items.length ? /*#__PURE__*/ _jsx(_Fragment, {\n children: items.map((item)=>/*#__PURE__*/ _jsx(BooksOrderProductItem, {\n ...item\n }, item.id))\n }) : /*#__PURE__*/ _jsx(OrderCardContainer, {\n children: /*#__PURE__*/ _jsxs(BooksOrderProductEmptyContainer, {\n children: [\n /*#__PURE__*/ _jsxs(BooksOrderProductEmptyImage, {\n children: [\n /*#__PURE__*/ _jsx(Icon, {\n icon: Empty\n }),\n \"담겨있는 \",\n SourceTypeWithString[productType],\n \" ìƒí’ˆì´ 없습니다.\"\n ]\n }),\n /*#__PURE__*/ _jsx(Link, {\n href: isBooks ? BOOKS_LANDING : isPackages ? PASSES_LANDING : EBOOKS_LANDING,\n children: /*#__PURE__*/ _jsxs(FilledButton, {\n type: \"text\",\n variant: \"solid\",\n block: true,\n children: [\n SourceTypeWithString[productType],\n \" ìƒí’ˆ 보러가기\"\n ]\n })\n })\n ]\n })\n }) : null;\n};\nexport default BooksOrderProducts;\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n height: 154px;\\n overflow: auto;\\n\\n &,\\n p,\\n dt {\\n font-size: 14px;\\n font-weight: 400;\\n line-height: 22px;\\n letter-spacing: -0.14px;\\n color: \",\n \";\\n }\\n\\n h5 {\\n color: \",\n \";\\n font-size: 16px;\\n font-weight: 700;\\n line-height: 1.5;\\n letter-spacing: -0.16px;\\n }\\n dt {\\n margin-bottom: 0;\\n font-weight: 700;\\n }\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport styled from \"styled-components\";\nimport { TermsContainer, useBooks } from \".\";\nimport { usePasses } from \"@/components/Package\";\nconst BooksOrderTermsContainer = styled.div.withConfig({\n componentId: \"sc-e10d5c86-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.sol_gray_500, (props)=>props.theme.new.colors.sol_gray_900);\nconst BooksOrderTerms = ()=>{\n const { isBooks } = useBooks();\n const { isPackages } = usePasses();\n return /*#__PURE__*/ _jsxs(BooksOrderTermsContainer, {\n children: [\n /*#__PURE__*/ _jsx(\"h5\", {\n children: \"ê°œì¸ì •ë³´ 수집 ë° ì´ìš© ë™ì˜\"\n }),\n /*#__PURE__*/ _jsx(\"p\", {\n children: \"ì•„ëž˜ì˜ ëª©ì 으로 ê°œì¸ì •ë³´ë¥¼ 수집 ë° ì´ìš©í•˜ë©°, 회ì›ì˜ ê°œì¸ì •ë³´ë¥¼ ì•ˆì „í•˜ê²Œ ì²˜ë¦¬í•˜ëŠ”ë° ìµœì„ ì„ ë‹¤í•˜ê³ ìžˆìŠµë‹ˆë‹¤. ì•„ëž˜ì˜ ë‚´ìš©ì„ í™•ì¸ í›„ ë™ì˜í•˜ì—¬ 주시기 ë°”ëžë‹ˆë‹¤.\"\n }),\n /*#__PURE__*/ _jsx(\"br\", {}),\n isPackages ? /*#__PURE__*/ _jsx(_Fragment, {}) : isBooks ? /*#__PURE__*/ _jsxs(_Fragment, {\n children: [\n /*#__PURE__*/ _jsxs(TermsContainer, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"ê°œì¸ì •ë³´ 수집 ë° ì´ìš© ë™ì˜\"\n }),\n /*#__PURE__*/ _jsx(\"dd\", {\n children: /*#__PURE__*/ _jsxs(\"ol\", {\n children: [\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"수집 ë° ì´ìš© 목ì \",\n /*#__PURE__*/ _jsxs(\"ul\", {\n children: [\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"서비스 ë° ìƒí’ˆ ì œê³µì— ê´€í•œ 계약 ì´í–‰ ë° ìš”ê¸ˆ ì •ì‚°\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"ê³ ê° ìƒë‹´ ë° ë¶ˆë§Œ, ë¯¼ì› ì‚¬ë¬´ 처리\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"거래 ë° ìƒí’ˆ ì œê³µì˜ ì›í™œí•œ 진행, ë³¸ì¸ ì˜ì‚¬ì˜ í™•ì •\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"ìƒí’ˆ \\xb7 서비스 ì´ìš© 실ì ì •ë³´ 통계 \\xb7 분ì„\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"ìƒí’ˆ \\xb7 서비스 ê°œì„ ë° ì¶”ì²œ, 불법 \\xb7 ë¶€ì • ì´ìš© 방지\"\n })\n ]\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"수집 ë° ì´ìš© í•ëª©\",\n /*#__PURE__*/ _jsx(\"ul\", {\n children: /*#__PURE__*/ _jsx(\"li\", {\n children: \"ìˆ˜ë ¹ìž ì •ë³´ (ì´ë¦„, ì´ë©”ì¼, 휴대í°ë²ˆí˜¸, 주소, 배송 메시지)\"\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"ë³´ìœ ë° ì´ìš© 기간\",\n /*#__PURE__*/ _jsxs(\"ul\", {\n children: [\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"서비스 ì´ìš© 기ë¡ì€ íšŒì› íƒˆí‡´ ì‹œì 으로부터 1ë…„ê°„ ë³´ê´€ 후 파기합니다.\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"단, 관계 ë²•ë ¹ì— ë”°ë¼ ì¼ì • 기간 보존해야 하는 경우 해당 기간 ë³´ê´€ 후 파기합니다.\"\n })\n ]\n })\n ]\n })\n ]\n })\n }),\n /*#__PURE__*/ _jsx(\"br\", {}),\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"ê°œì¸ì •ë³´ ì œ 3ìž ì œê³µ ë™ì˜\"\n }),\n /*#__PURE__*/ _jsx(\"dd\", {\n children: /*#__PURE__*/ _jsxs(\"ol\", {\n children: [\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"ì œê³µ 받는 ìž\",\n /*#__PURE__*/ _jsx(\"ul\", {\n children: /*#__PURE__*/ _jsx(\"li\", {\n children: \"(주) ì•Œë¼ë”˜ì»¤ë®¤ë‹ˆì¼€ì´ì…˜\"\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"ì œê³µ 목ì \",\n /*#__PURE__*/ _jsx(\"ul\", {\n children: /*#__PURE__*/ _jsx(\"li\", {\n children: \"주문 ìƒí’ˆ ë° ì„œë¹„ìŠ¤ì˜ ì œê³µ, 계약 ì´í–‰\"\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"ì œê³µ í•ëª©\",\n /*#__PURE__*/ _jsx(\"ul\", {\n children: /*#__PURE__*/ _jsx(\"li\", {\n children: \"ìˆ˜ë ¹ìž ì •ë³´ (ì•„ì´ë””, ì´ë¦„, ì „í™”ë²ˆí˜¸, íœ´ëŒ€í° ë²ˆí˜¸, ì´ë©”ì¼, ìƒí’ˆ 구매 ì •ë³´, 주소, 배송 메시지)\"\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"ë³´ìœ ë° ì´ìš© 기간\",\n /*#__PURE__*/ _jsxs(\"ul\", {\n children: [\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"ìƒí’ˆ 구매/배송/반품 서비스 처리 완료 후 180ì¼ê°„ ë³´ê´€ 후 파기\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"단, 관계 ë²•ë ¹ì— ë”°ë¼ ì¼ì • 기간 보관해야 하는 í•ëª©ì€ 해당 기간 ë³´ê´€ 후 파기합니다.\"\n })\n ]\n })\n ]\n })\n ]\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsx(\"br\", {}),\n /*#__PURE__*/ _jsx(\"p\", {\n children: \"필수ì ì¸ ê°œì¸ì •ë³´ 수집 ë° ì´ìš©ì— ë™ì˜í•˜ì§€ ì•Šì„ ê¶Œë¦¬ê°€ 있습니다. 다만, ë™ì˜í•˜ì§€ ì•Šì„ ê²½ìš° 서비스 ì´ìš©ì´ ì œí•œë©ë‹ˆë‹¤.\"\n })\n ]\n }) : /*#__PURE__*/ _jsxs(_Fragment, {\n children: [\n /*#__PURE__*/ _jsxs(TermsContainer, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"ê°œì¸ì •ë³´ 수집 ë° ì´ìš© ë™ì˜\"\n }),\n /*#__PURE__*/ _jsx(\"dd\", {\n children: /*#__PURE__*/ _jsxs(\"ol\", {\n children: [\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"수집 ë° ì´ìš© 목ì \",\n /*#__PURE__*/ _jsxs(\"ul\", {\n children: [\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"서비스 ë° ìƒí’ˆ ì œê³µì— ê´€í•œ 계약 ì´í–‰ ë° ìš”ê¸ˆ ì •ì‚°\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"ê³ ê° ìƒë‹´ ë° ë¶ˆë§Œ, ë¯¼ì› ì‚¬ë¬´ 처리\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"거래 ë° ìƒí’ˆ ì œê³µì˜ ì›í™œí•œ 진행, ë³¸ì¸ ì˜ì‚¬ì˜ í™•ì •\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"ìƒí’ˆ \\xb7 서비스 ê°œì„ ë° ì¶”ì²œ, 불법 \\xb7 ë¶€ì • ì´ìš© 방지\"\n })\n ]\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"수집 ë° ì´ìš© í•ëª©\",\n /*#__PURE__*/ _jsx(\"ul\", {\n children: /*#__PURE__*/ _jsx(\"li\", {\n children: \"ìˆ˜ë ¹ìž ì •ë³´ (ì´ë¦„, ì´ë©”ì¼, 휴대í°ë²ˆí˜¸)\"\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(\"li\", {\n children: [\n \"ë³´ìœ ë° ì´ìš© 기간\",\n /*#__PURE__*/ _jsxs(\"ul\", {\n children: [\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"íƒˆí‡´ìš”ì² 5ì¼ í›„ 지체 ì—†ì´ íŒŒê¸°í•©ë‹ˆë‹¤.\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"내부 ë°©ì¹¨ì— ì˜í•´ 서비스 ë¶€ì • ì´ìš© 기ë¡ì€ ë¶€ì • 가입 ë° ì´ìš© 방지를 위하여 íšŒì› íƒˆí‡´ ì‹œì 으로부터 1ë…„ê°„ ë³´ê´€ 후 파기합니다.\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"단, 관계 ë²•ë ¹ì— ë”°ë¼ ì¼ì • 기간 보존해야 하는 경우 해당 기간 ë³´ê´€ 후 파기합니다.\"\n })\n ]\n })\n ]\n })\n ]\n })\n }),\n /*#__PURE__*/ _jsx(\"br\", {}),\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"eBook ìƒí’ˆ 구매 ì‹œ ìœ ì˜ ì‚¬í•\"\n }),\n /*#__PURE__*/ _jsx(\"dd\", {\n children: /*#__PURE__*/ _jsxs(\"ol\", {\n children: [\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"eBook ìƒí’ˆì€ 구매 ì´í›„ 1íšŒì— í•œí•´ iOS 굿노트6 앱ì—ì„œ ë‚´ë ¤ë°›ê¸°ê°€ 가능하며, í•˜ë‚˜ì˜ ê³„ì •ì—서만 ì´ìš©ì´ 가능합니다. ìƒí’ˆì„ ë‚´ë ¤ë°›ì€ ì´í›„ì— êµ¬ë§¤í•œ ìƒí’ˆì„ 다른 ê³„ì •ì—ì„œ ë‚´ë ¤ë°›ê¸° í• ìˆ˜ 없습니다.\"\n }),\n /*#__PURE__*/ _jsx(\"li\", {\n children: \"ëª¨ë“ eBook ìƒí’ˆì€ DRM ê¸°ìˆ ì„ í†µí•´ 추ì ì´ ê°€ëŠ¥í•œ 형태로 보호ë˜ê³ 있습니다. 무단 ë°°í¬ ì‹œ ê´€ë ¨ 법 ì¡°í•ì— ì˜ê±°í•˜ì—¬ 처벌 ë°›ì„ ìˆ˜ 있습니다.\"\n })\n ]\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsx(\"br\", {}),\n /*#__PURE__*/ _jsx(\"br\", {}),\n /*#__PURE__*/ _jsx(\"p\", {\n children: \"ìƒí’ˆ, 가격, ìœ ì˜ì‚¬í• ë“±ì„ í™•ì¸í•˜ì˜€ìœ¼ë©° ê²°ì œì— ë™ì˜í•©ë‹ˆë‹¤.\"\n })\n ]\n })\n ]\n });\n};\nexport default BooksOrderTerms;\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 40px;\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject1() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n width: 100%;\\n\"\n ]);\n _templateObject1 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject2() {\n const data = _tagged_template_literal([\n \"\\n color: \",\n \";\\n\"\n ]);\n _templateObject2 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject3() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 24px;\\n\"\n ]);\n _templateObject3 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject4() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n\\n p {\\n color: \",\n \";\\n font-size: 14px;\\n font-weight: 400;\\n line-height: 22px;\\n letter-spacing: -0.14px;\\n text-align: center;\\n }\\n\"\n ]);\n _templateObject4 = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport FilledButton from \"@/components/common/Button/FilledButton\";\nimport useSearchParams from \"@/hooks/useSearchParams\";\nimport { getIamportPayload, requestPay, useIamport } from \"@/lib/iamport\";\nimport { mixpanelEvent } from \"@/lib/mixpanels/mixpanel\";\nimport { BOOKS_ORDER, EBOOKS_ORDER, HOME_PAGE } from \"@/settings/constant\";\nimport { useMutation, useQuery } from \"@tanstack/react-query\";\nimport { message } from \"antd\";\nimport Link from \"next/link\";\nimport { useRouter } from \"next/router\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { fetchBooksCart } from \"src/api/booksCart\";\nimport { postOrder } from \"src/api/booksOrder\";\nimport useBooksOrderStore from \"src/store/booksOrder\";\nimport styled from \"styled-components\";\nimport { BooksSubtitle, OrderFilledButton, useBooks } from \".\";\nimport BooksOrderDelivery from \"./BooksOrderDelivery\";\nimport BooksOrderModal from \"./BooksOrderModal\";\nimport BooksOrderPayMethods from \"./BooksOrderPayMethods\";\nimport BooksOrderProducts from \"./BooksOrderProducts\";\nimport BooksOrderSummary from \"./BooksOrderSummary\";\nimport BooksOrderTerms from \"./BooksOrderTerms\";\nimport { OrderCardContainer } from \"../../Package/OrderComponents/PaymentCard\";\nexport const OrderStack = styled.div.withConfig({\n componentId: \"sc-1f2bc4a6-0\"\n})(_templateObject());\nexport const OrderSectionContainer = styled.section.withConfig({\n componentId: \"sc-1f2bc4a6-1\"\n})(_templateObject1());\nexport const OrderSectionTitle = styled(BooksSubtitle).withConfig({\n componentId: \"sc-1f2bc4a6-2\"\n})(_templateObject2(), (props)=>props.theme.new.colors.sol_gray_700);\nexport const PaymentContainer = styled.form.withConfig({\n componentId: \"sc-1f2bc4a6-3\"\n})(_templateObject3());\nexport const PaymentButtonContainer = styled.div.withConfig({\n componentId: \"sc-1f2bc4a6-4\"\n})(_templateObject4(), (props)=>props.theme.new.colors.sol_gray_500);\nexport const OrderSection = (param)=>{\n let { children , label } = param;\n return /*#__PURE__*/ _jsxs(OrderSectionContainer, {\n children: [\n !!label && /*#__PURE__*/ _jsx(OrderSectionTitle, {\n children: label\n }),\n children\n ]\n });\n};\nconst mixpanelMemoKey = \"mixpanel-books-order\";\nconst BooksOrder = ()=>{\n const revision = useBooksOrderStore((state)=>state.revision);\n const items = useBooksOrderStore((state)=>state.items);\n const payableAmount = useBooksOrderStore((state)=>state.payableAmount);\n const payMethod = useBooksOrderStore((state)=>state.payMethod);\n const { setItems } = useBooksOrderStore((param)=>{\n let { setItems } = param;\n return {\n setItems\n };\n });\n const { isBooks } = useBooks();\n const { cartType , orderType , mixpanelCategory , postbackURL } = useMemo(()=>{\n return {\n cartType: isBooks ? \"aladinbook\" : \"ebook\",\n orderType: isBooks ? 3 : 2,\n mixpanelCategory: isBooks ? \"aladin\" : \"goodnote\",\n postbackURL: isBooks ? BOOKS_ORDER : EBOOKS_ORDER\n };\n }, [\n isBooks\n ]);\n const { data } = useQuery([\n \"currentBooksCart\",\n revision\n ], ()=>fetchBooksCart({\n cartType\n }));\n useEffect(()=>{\n if (!data) {\n setItems(undefined, isBooks);\n return;\n }\n setItems(data.lineItems, isBooks);\n }, [\n data,\n isBooks\n ]);\n const [isShownSuccessModal, setIsShownSuccessModal] = useState(false);\n const booksOrderMutation = useMutation(postOrder);\n const { impRef } = useIamport();\n const handleSuccess = useCallback(()=>{\n setIsShownSuccessModal(true);\n const memo = sessionStorage.getItem(mixpanelMemoKey);\n if (memo && window.mixpanel) {\n const props = JSON.parse(memo);\n mixpanelEvent(\"Purchase Completed\", props);\n }\n sessionStorage.removeItem(mixpanelMemoKey);\n }, []);\n const handleSubmit = useCallback(async (ev)=>{\n ev.preventDefault();\n try {\n const order = await booksOrderMutation.mutateAsync({\n orderType,\n cartId: data.id\n });\n // console.log(order)\n sessionStorage.setItem(mixpanelMemoKey, JSON.stringify({\n \"Payment Method\": payMethod,\n \"# of Products \": items.length,\n \"Product IDs\": items.map((param)=>{\n let { productId } = param;\n return Number.parseInt(productId, 10);\n }),\n \"Product Categories\": [\n mixpanelCategory\n ],\n \"Product Names\": items.map((param)=>{\n let { product } = param;\n return product.title;\n }),\n Subtotal: payableAmount,\n \"Order Total\": payableAmount,\n \"Product Variants\": []\n }));\n const result = await requestPay(getIamportPayload({\n merchant_uid: order.merchantUid,\n name: order.title,\n amount: order.total,\n buyer_email: order.email,\n buyer_name: order.name,\n buyer_tel: order.phone,\n m_redirect_url: document.location.origin.concat(\"\".concat(postbackURL)),\n buyer_addr: \"\".concat(order.address, \" \").concat(order.addressDetail),\n buyer_postcode: order.zipcode,\n tax_free: order.total\n }, payMethod), impRef.current);\n if (result.success) {\n handleSuccess();\n } else {\n throw new Error(result.error_msg);\n }\n } catch (error) {\n ;\n message.error(error.message);\n }\n }, [\n booksOrderMutation,\n orderType,\n data,\n payMethod,\n items,\n payableAmount,\n mixpanelCategory,\n postbackURL\n ]);\n const { pathname , replace } = useRouter();\n const searchParams = useSearchParams();\n useEffect(()=>{\n const success = searchParams.get(\"imp_success\");\n const errorMsg = searchParams.get(\"error_msg\");\n if (success) {\n if (success === \"true\") {\n handleSuccess();\n } else if (errorMsg) {\n message.error(errorMsg);\n }\n replace({\n pathname\n });\n }\n }, [\n handleSuccess,\n searchParams,\n replace,\n pathname\n ]);\n return /*#__PURE__*/ _jsxs(OrderStack, {\n children: [\n isBooks && /*#__PURE__*/ _jsx(OrderSection, {\n label: \"배송지 ì •ë³´\",\n children: /*#__PURE__*/ _jsx(OrderCardContainer, {\n children: /*#__PURE__*/ _jsx(BooksOrderDelivery, {})\n })\n }),\n /*#__PURE__*/ _jsx(OrderSection, {\n label: \"ìƒí’ˆ ì •ë³´\",\n children: /*#__PURE__*/ _jsx(BooksOrderProducts, {})\n }),\n !!(items === null || items === void 0 ? void 0 : items.length) && /*#__PURE__*/ _jsx(OrderSection, {\n label: \"ê²°ì œ ì •ë³´\",\n children: /*#__PURE__*/ _jsx(OrderCardContainer, {\n children: /*#__PURE__*/ _jsxs(PaymentContainer, {\n onSubmit: handleSubmit,\n children: [\n /*#__PURE__*/ _jsx(BooksOrderSummary, {}),\n /*#__PURE__*/ _jsx(BooksOrderPayMethods, {}),\n /*#__PURE__*/ _jsx(BooksOrderTerms, {}),\n /*#__PURE__*/ _jsxs(PaymentButtonContainer, {\n children: [\n /*#__PURE__*/ _jsxs(OrderFilledButton, {\n type: \"text\",\n variant: \"solid\",\n htmlType: \"submit\",\n children: [\n payableAmount.toLocaleString(),\n \"ì› ê²°ì œí•˜ê¸°\"\n ]\n }),\n /*#__PURE__*/ _jsx(\"p\", {\n children: \"ê²°ì œ ì‹œ 약관 ë° ì •ë³´ë¥¼ 확ì¸í•˜ì˜€ìœ¼ë©° ë™ì˜í•œ 것으로 간주합니다.\"\n })\n ]\n })\n ]\n })\n })\n }),\n /*#__PURE__*/ _jsx(BooksOrderModal, {\n open: isShownSuccessModal,\n title: /*#__PURE__*/ _jsxs(_Fragment, {\n children: [\n isBooks ? \"ë„ì„œ\" : \"굿노트6 eBook\",\n \" ê²°ì œê°€ 완료ë˜ì—ˆìŠµë‹ˆë‹¤.\",\n /*#__PURE__*/ _jsx(\"br\", {}),\n isBooks ? \"ë°°ì†¡ì´ ì‹œìž‘ë˜ë©´\" : \"카카오\",\n \" 알림톡으로 안내 드릴게요.\"\n ]\n }),\n content: !isBooks && \"ì ë¶ì— ê°€ìž…í•˜ì‹ ì¹´ì¹´ì˜¤ ê³„ì • ë° ê°€ìž…í•œ ì „í™”ë²ˆí˜¸ê°€ ì—°ê²°ëœ ì¹´ì¹´ì˜¤ ê³„ì •ì—ì„œ ì•Œë¦¼í†¡ì„ í™•ì¸í•˜ì‹¤ 수 있습니다.\",\n footer: /*#__PURE__*/ _jsxs(_Fragment, {\n children: [\n isBooks && /*#__PURE__*/ _jsx(Link, {\n href: \"https://solvook.channel.io/support-bots/95251\",\n target: \"_blank\",\n children: /*#__PURE__*/ _jsx(FilledButton, {\n type: \"text\",\n variant: \"soft\",\n children: \"ì¶”ì²œì¸ ì½”ë“œ ìž…ë ¥í•˜ê¸°\"\n })\n }),\n /*#__PURE__*/ _jsx(Link, {\n href: HOME_PAGE,\n children: /*#__PURE__*/ _jsx(FilledButton, {\n type: \"text\",\n variant: \"solid\",\n children: \"홈으로 ëŒì•„가기\"\n })\n })\n ]\n })\n })\n ]\n });\n};\nexport default BooksOrder;\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 12px;\\n\\n .ant-space {\\n display: flex;\\n gap: 12px !important;\\n\\n label {\\n display: flex;\\n padding: 16px;\\n padding-left: 20px;\\n\\n background-color: \",\n \";\\n border: 1px solid \",\n \";\\n border-radius: 6px;\\n\\n color: \",\n \";\\n font-size: 16px;\\n font-weight: 700;\\n line-height: 1.5;\\n letter-spacing: -0.16px;\\n\\n &.ant-radio-wrapper-checked,\\n &:hover {\\n background-color: \",\n \";\\n border: 1px solid \",\n \";\\n color: \",\n \";\\n }\\n & > :not(.ant-radio) {\\n padding: 0 16px;\\n }\\n }\\n }\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Radio, Space } from \"antd\";\nimport { useCallback } from \"react\";\nimport useBooksOrderStore from \"src/store/booksOrder\";\nimport styled from \"styled-components\";\nimport { BooksSubtitle } from \".\";\nexport const OrderPayMethodsContainer = styled.div.withConfig({\n componentId: \"sc-c06c6b14-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.white, (props)=>props.theme.new.colors.sol_gray_100, (props)=>props.theme.new.colors.sol_gray_700, (props)=>props.theme.new.colors.sol_indigo_50, (props)=>props.theme.new.colors.sol_indigo_500, (props)=>props.theme.new.colors.sol_indigo_500);\nconst BooksOrderPayMethods = ()=>{\n const payMethod = useBooksOrderStore((state)=>state.payMethod);\n const { setPayMethod } = useBooksOrderStore((param)=>{\n let { setPayMethod } = param;\n return {\n setPayMethod\n };\n });\n const handleChange = useCallback((ev)=>{\n setPayMethod(ev.target.value);\n }, [\n setPayMethod\n ]);\n return /*#__PURE__*/ _jsxs(OrderPayMethodsContainer, {\n children: [\n /*#__PURE__*/ _jsx(BooksSubtitle, {\n children: \"ê²°ì œìˆ˜ë‹¨\"\n }),\n /*#__PURE__*/ _jsx(Radio.Group, {\n onChange: handleChange,\n value: payMethod,\n children: /*#__PURE__*/ _jsxs(Space, {\n direction: \"vertical\",\n children: [\n /*#__PURE__*/ _jsx(Radio, {\n value: \"card\",\n children: \"ì‹ ìš©ì¹´ë“œ\"\n }),\n /*#__PURE__*/ _jsx(Radio, {\n value: \"kakaopay\",\n children: \"카카오페ì´\"\n })\n ]\n })\n })\n ]\n });\n};\nexport default BooksOrderPayMethods;\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n display: inline-flex;\\n align-items: center;\\n padding: 8px 16px;\\n\\n background-color: \",\n \";\\n border: 1px solid \",\n \";\\n border-radius: 47px;\\n\\n &,\\n .ant-btn {\\n color: \",\n \";\\n\\n &[disabled] {\\n color: \",\n \";\\n }\\n }\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject1() {\n const data = _tagged_template_literal([\n \"\\n width: 44px;\\n margin: 0 8px;\\n border: none;\\n font-size: 16px;\\n font-weight: 700;\\n line-height: 1.5;\\n letter-spacing: -0.16px;\\n text-align: center;\\n\"\n ]);\n _templateObject1 = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { useCallback } from \"react\";\nimport styled from \"styled-components\";\nimport Icon from \"../icon/Icon\";\nimport { Minus2, Plus2 } from \"../icon/IconList\";\nimport NoPadButton from \"./Button/NoPadButton\";\nconst RoundedCounterContainer = styled.div.withConfig({\n componentId: \"sc-8e868426-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.white, (props)=>props.theme.new.colors.sol_gray_100, (props)=>props.theme.new.colors.sol_gray_900, (props)=>props.theme.new.colors.sol_gray_300);\nconst RoundedCounterNumber = styled.input.withConfig({\n componentId: \"sc-8e868426-1\"\n})(_templateObject1());\nconst RoundedCounter = (param)=>{\n let { max =99 , value , onChange } = param;\n const handleDecr = useCallback(()=>{\n onChange(value - (value <= 1 ? 0 : 1));\n }, [\n onChange,\n value\n ]);\n const handleIncr = useCallback(()=>{\n onChange(value + (value >= max ? 0 : 1));\n }, [\n onChange,\n value\n ]);\n const handleChange = useCallback(()=>{}, []);\n return /*#__PURE__*/ _jsxs(RoundedCounterContainer, {\n className: \"rounded-counter\",\n children: [\n /*#__PURE__*/ _jsx(NoPadButton, {\n type: \"text\",\n disabled: value <= 1,\n onClick: handleDecr,\n children: /*#__PURE__*/ _jsx(Icon, {\n icon: Minus2\n })\n }),\n /*#__PURE__*/ _jsx(RoundedCounterNumber, {\n value: value,\n onChange: handleChange\n }),\n /*#__PURE__*/ _jsx(NoPadButton, {\n type: \"text\",\n disabled: value >= max,\n onClick: handleIncr,\n children: /*#__PURE__*/ _jsx(Icon, {\n icon: Plus2\n })\n })\n ]\n });\n};\nexport default RoundedCounter;\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n gap: 20px;\\n align-items: flex-start;\\n\\n .ant-btn {\\n color: \",\n \";\\n font-size: 14px;\\n font-weight: 600;\\n line-height: 22px;\\n letter-spacing: -0.14px;\\n }\\n\\n img {\\n width: \",\n \"px;\\n height: \",\n \"px;\\n border-radius: 2px;\\n box-shadow: 2.217px 2.217px 8.87px 0px rgba(28, 31, 46, 0.06);\\n object-fit: contain;\\n }\\n\\n .remove-button {\\n &:hover {\\n background-color: transparent;\\n color: \",\n \";\\n }\\n\\n svg {\\n width: 18px;\\n height: 18px;\\n margin-right: 4px;\\n }\\n }\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject1() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 24px;\\n flex-grow: 1;\\n\\n font-size: 16px;\\n font-weight: 400;\\n line-height: 1.5;\\n letter-spacing: -0.16px;\\n\\n .rounded-counter {\\n align-self: flex-start;\\n }\\n\"\n ]);\n _templateObject1 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject2() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n flex-grow: 1;\\n\\n &,\\n dd {\\n color: \",\n \";\\n margin-bottom: 0;\\n }\\n\\n dt {\\n color: \",\n \";\\n font-weight: 600;\\n\\n display: -webkit-box;\\n -webkit-line-clamp: 2;\\n -webkit-box-orient: vertical;\\n overflow: hidden;\\n }\\n\"\n ]);\n _templateObject2 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject3() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n\\n &,\\n dd {\\n margin-bottom: 0;\\n }\\n\\n &,\\n dt {\\n color: \",\n \";\\n }\\n\\n dt {\\n font-weight: 400;\\n }\\n\\n .amount {\\n display: flex;\\n justify-content: flex-end;\\n flex-grow: 1;\\n }\\n\"\n ]);\n _templateObject3 = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport Image from \"@/components/common/Image\";\nimport { useMutation } from \"@tanstack/react-query\";\nimport { useCallback } from \"react\";\nimport { deleteBooksCart, putBooksCart } from \"src/api/booksCart\";\nimport useBooksOrderStore from \"src/store/booksOrder\";\nimport styled from \"styled-components\";\nimport { useBooks } from \".\";\nimport NoPadButton from \"../../common/Button/NoPadButton\";\nimport RoundedCounter from \"../../common/RoundedCounter\";\nimport Icon from \"../../icon/Icon\";\nimport { Delete1_5 } from \"../../icon/IconList\";\nimport { OrderCardContainer } from \"../../Package/OrderComponents/PaymentCard\";\nconst thumbDimensions = {\n width: 71,\n height: 96\n};\nexport const HorizontalStack = styled.div.withConfig({\n componentId: \"sc-8fbcaca7-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.sol_gray_500, thumbDimensions.width, thumbDimensions.height, (props)=>props.theme.new.colors.sol_red_400);\nexport const Stack = styled.div.withConfig({\n componentId: \"sc-8fbcaca7-1\"\n})(_templateObject1());\nexport const TitleAndAround = styled.dl.withConfig({\n componentId: \"sc-8fbcaca7-2\"\n})(_templateObject2(), (props)=>props.theme.new.colors.sol_gray_500, (props)=>props.theme.new.colors.sol_gray_900);\nexport const Total = styled.dl.withConfig({\n componentId: \"sc-8fbcaca7-3\"\n})(_templateObject3(), (props)=>props.theme.new.colors.sol_gray_500);\nconst BooksOrderProductItem = (param)=>{\n let { id , product , quantity , subtotal } = param;\n const { setItems } = useBooksOrderStore((param)=>{\n let { setItems } = param;\n return {\n setItems\n };\n });\n const { isBooks } = useBooks();\n const deleteBooksOrderMutation = useMutation(deleteBooksCart);\n const putBooksOrderMutation = useMutation(putBooksCart);\n const handleRemove = useCallback((cartItemId)=>async ()=>{\n const result = await deleteBooksOrderMutation.mutateAsync({\n lineItemId: cartItemId\n });\n setItems(result.lineItems, isBooks);\n }, [\n deleteBooksOrderMutation,\n setItems,\n isBooks\n ]);\n const handleChangeCounter = useCallback((cartItemId)=>async (newQuantity)=>{\n const result = await putBooksOrderMutation.mutateAsync({\n lineItemId: cartItemId,\n quantity: newQuantity\n });\n setItems(result.lineItems, isBooks);\n }, [\n putBooksOrderMutation,\n setItems,\n isBooks\n ]);\n return /*#__PURE__*/ _jsx(OrderCardContainer, {\n children: /*#__PURE__*/ _jsxs(Stack, {\n children: [\n /*#__PURE__*/ _jsxs(HorizontalStack, {\n children: [\n /*#__PURE__*/ _jsx(Image, {\n alt: \"book-img\",\n width: thumbDimensions.width,\n height: thumbDimensions.height,\n src: product.thumbImg\n }),\n /*#__PURE__*/ _jsxs(Stack, {\n children: [\n /*#__PURE__*/ _jsxs(HorizontalStack, {\n children: [\n /*#__PURE__*/ _jsxs(TitleAndAround, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: product.title\n }),\n /*#__PURE__*/ _jsx(\"dd\", {\n children: product.author\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(NoPadButton, {\n type: \"text\",\n className: \"remove-button\",\n onClick: handleRemove(id),\n children: [\n /*#__PURE__*/ _jsx(Icon, {\n icon: Delete1_5\n }),\n \"ì‚ì œ\"\n ]\n })\n ]\n }),\n isBooks && /*#__PURE__*/ _jsx(RoundedCounter, {\n value: quantity,\n max: 99,\n onChange: handleChangeCounter(id)\n })\n ]\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(Total, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: isBooks ? \"합계 금액\" : \"íŒë§¤ê°€\"\n }),\n /*#__PURE__*/ _jsxs(\"dd\", {\n className: \"amount\",\n children: [\n subtotal.toLocaleString(),\n \"ì›\"\n ]\n })\n ]\n })\n ]\n })\n });\n};\nexport default BooksOrderProductItem;\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n\\n .ant-divider {\\n margin: 12px 0;\\n border-color: \",\n \";\\n\\n &:last-of-type {\\n margin-bottom: 0;\\n }\\n }\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Divider } from \"antd\";\nimport useBooksOrderStore from \"src/store/booksOrder\";\nimport styled from \"styled-components\";\nimport { useBooks } from \".\";\nimport { OrderSummaryItem } from \"../../Package/OrderComponents/OrderSummaryItem\";\nexport const BooksOrderSummaryContainer = styled.div.withConfig({\n componentId: \"sc-db641cdb-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.sol_gray_100);\nconst BooksOrderSummary = ()=>{\n const deliveryFee = useBooksOrderStore((state)=>state.deliveryFee);\n const originalPriceTotal = useBooksOrderStore((state)=>state.originalPriceTotal);\n const discountAmount = useBooksOrderStore((state)=>state.discountAmount);\n const payableAmount = useBooksOrderStore((state)=>state.payableAmount);\n const { isBooks } = useBooks();\n return /*#__PURE__*/ _jsxs(BooksOrderSummaryContainer, {\n children: [\n isBooks && /*#__PURE__*/ _jsxs(OrderSummaryItem, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"배송비\"\n }),\n /*#__PURE__*/ _jsxs(\"dd\", {\n children: [\n deliveryFee.toLocaleString(),\n \"ì›\"\n ]\n })\n ]\n }),\n /*#__PURE__*/ _jsxs(OrderSummaryItem, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"ì´ ìƒí’ˆ 금액\"\n }),\n /*#__PURE__*/ _jsxs(\"dd\", {\n children: [\n originalPriceTotal.toLocaleString(),\n \"ì›\"\n ]\n })\n ]\n }),\n !!discountAmount && /*#__PURE__*/ _jsxs(OrderSummaryItem, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"ì´ í• ì¸ ê¸ˆì•¡\"\n }),\n /*#__PURE__*/ _jsxs(\"dd\", {\n className: \"discount\",\n children: [\n \"-\",\n discountAmount.toLocaleString(),\n \"ì›\"\n ]\n })\n ]\n }),\n /*#__PURE__*/ _jsx(Divider, {}),\n /*#__PURE__*/ _jsxs(OrderSummaryItem, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"최종 ê²°ì œ 금액\"\n }),\n /*#__PURE__*/ _jsx(\"dd\", {\n children: /*#__PURE__*/ _jsxs(\"strong\", {\n children: [\n payableAmount.toLocaleString(),\n \"ì›\"\n ]\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsx(Divider, {})\n ]\n });\n};\nexport default BooksOrderSummary;\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n gap: 8px;\\n\\n font-size: 16px;\\n font-weight: 400;\\n line-height: 1.5;\\n letter-spacing: -0.16px;\\n\\n &,\\n dt {\\n font-weight: 400;\\n color: \",\n \";\\n }\\n\\n &,\\n dd {\\n margin-bottom: 0;\\n }\\n\\n dd {\\n display: flex;\\n justify-content: flex-end;\\n flex-grow: 1;\\n\\n &.discount {\\n color: \",\n \";\\n }\\n\\n strong {\\n color: \",\n \";\\n }\\n }\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nimport styled from \"styled-components\";\nexport const OrderSummaryItem = styled.dl.withConfig({\n componentId: \"sc-fcb63891-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.sol_gray_500, (props)=>props.theme.new.colors.sol_red_400, (props)=>props.theme.new.colors.sol_gray_900);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React, { useMemo } from \"react\";\nimport BigNumber from \"bignumber.js\";\nimport { BooksOrderSummaryContainer } from \"../../Books/Order/BooksOrderSummary\";\nimport { numberFormatter } from \"@/lib/utils\";\nimport { OrderSummaryItem } from \"./OrderSummaryItem\";\nimport { Divider } from \"@mui/material\";\nexport const PassOrderSummary = (param)=>{\n let { originPrice , price } = param;\n const discountAmount = useMemo(()=>{\n return new BigNumber(originPrice).minus(price);\n }, [\n originPrice,\n price\n ]);\n return /*#__PURE__*/ _jsxs(BooksOrderSummaryContainer, {\n children: [\n /*#__PURE__*/ _jsxs(OrderSummaryItem, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"ì´ ìƒí’ˆ 금액\"\n }),\n /*#__PURE__*/ _jsxs(\"dd\", {\n children: [\n numberFormatter(originPrice),\n \"ì›\"\n ]\n })\n ]\n }),\n discountAmount.toLocaleString() !== \"0\" && /*#__PURE__*/ _jsxs(OrderSummaryItem, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"ì´ í• ì¸ ê¸ˆì•¡\"\n }),\n /*#__PURE__*/ _jsxs(\"dd\", {\n className: \"discount\",\n children: [\n \"-\",\n numberFormatter(discountAmount.toLocaleString()),\n \"ì›\"\n ]\n })\n ]\n }),\n /*#__PURE__*/ _jsx(Divider, {\n sx: {\n marginY: \"12px\"\n }\n }),\n /*#__PURE__*/ _jsxs(OrderSummaryItem, {\n children: [\n /*#__PURE__*/ _jsx(\"dt\", {\n children: \"최종 ê²°ì œ 금액\"\n }),\n /*#__PURE__*/ _jsx(\"dd\", {\n children: /*#__PURE__*/ _jsxs(\"strong\", {\n children: [\n numberFormatter(price),\n \"ì›\"\n ]\n })\n })\n ]\n }),\n /*#__PURE__*/ _jsx(Divider, {\n sx: {\n marginTop: \"12px\"\n }\n })\n ]\n });\n};\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { Radio, Space } from \"antd\";\nimport React from \"react\";\nexport const PaymentRadio = (param)=>{\n let { handleChange , payMethod } = param;\n return /*#__PURE__*/ _jsx(Radio.Group, {\n onChange: (e)=>handleChange(e.target.value),\n value: payMethod,\n children: /*#__PURE__*/ _jsxs(Space, {\n direction: \"vertical\",\n children: [\n /*#__PURE__*/ _jsx(Radio, {\n value: \"card\",\n children: \"ì‹ ìš©ì¹´ë“œ\"\n }),\n /*#__PURE__*/ _jsx(Radio, {\n value: \"kakaopay\",\n children: \"카카오페ì´\"\n })\n ]\n })\n });\n};\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n padding: 24px;\\n background-color: \",\n \";\\n border-radius: 12px;\\n border: 1px solid \",\n \";\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport React from \"react\";\nimport styled from \"styled-components\";\nimport { PaymentButtonContainer, PaymentContainer } from \"../../Books/Order/BooksOrder\";\nimport { PassOrderSummary } from \"./PassOrderSummary\";\nimport { OrderPayMethodsContainer } from \"../../Books/Order/BooksOrderPayMethods\";\nimport { BooksSubtitle } from \"../../Books/Order\";\nimport { PaymentRadio } from \"./PaymentRadio\";\nimport { Typography } from \"@mui/material\";\nimport { Button } from \"@bookips/solvook-ui-library\";\nimport Notice from \"../SubscribeToPass/SubscribeNotice\";\nexport const PaymentCard = (param)=>{\n let { productInfo , handleSubmit , handleChange , payMethod , terms } = param;\n return /*#__PURE__*/ _jsx(OrderCardContainer, {\n children: /*#__PURE__*/ _jsxs(PaymentContainer, {\n onSubmit: handleSubmit,\n children: [\n /*#__PURE__*/ _jsx(PassOrderSummary, {\n originPrice: productInfo.originalPrice,\n price: productInfo.price\n }),\n /*#__PURE__*/ _jsxs(OrderPayMethodsContainer, {\n children: [\n /*#__PURE__*/ _jsx(BooksSubtitle, {\n children: \"ê²°ì œìˆ˜ë‹¨\"\n }),\n /*#__PURE__*/ _jsx(PaymentRadio, {\n payMethod: payMethod,\n handleChange: handleChange\n })\n ]\n }),\n terms && /*#__PURE__*/ _jsx(Notice, {\n caution: productInfo.description,\n title: productInfo.descriptionTitle\n }),\n /*#__PURE__*/ _jsxs(PaymentButtonContainer, {\n children: [\n /*#__PURE__*/ _jsxs(Button, {\n variant: \"filledPrimary\",\n type: \"submit\",\n sx: {\n padding: \"16px 24px\",\n fontSize: \"16px\"\n },\n children: [\n productInfo.price.toLocaleString(),\n \"ì› ê²°ì œí•˜ê¸°\"\n ]\n }),\n terms && /*#__PURE__*/ _jsx(Typography, {\n variant: \"regular14\",\n color: (theme)=>theme.palette.grey[500],\n sx: {\n textAlign: \"center\"\n },\n children: \"ê²°ì œ ì‹œ ìœ ì˜ì‚¬í• ë° ì •ë³´ë¥¼ 확ì¸í•˜ì˜€ìœ¼ë©° ë™ì˜í•œ 것으로 간주합니다.\"\n })\n ]\n })\n ]\n })\n });\n};\nexport const OrderCardContainer = styled.div.withConfig({\n componentId: \"sc-63c4ffb8-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.white, (props)=>props.theme.new.colors.sol_gray_100);\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n flex-grow: 1;\\n background-color: \",\n \";\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject1() {\n const data = _tagged_template_literal([\n \"\\n max-width: 600px;\\n margin: 0 auto;\\n padding: 40px 0;\\n\\n @media (max-width: 1200px) {\\n }\\n @media (max-width: 430px) {\\n width: 100%;\\n margin: 40px 0;\\n padding: 0 16px;\\n }\\n\"\n ]);\n _templateObject1 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject2() {\n const data = _tagged_template_literal([\n \"\\n display: flex;\\n flex-direction: column;\\n gap: 8px;\\n margin-bottom: 24px;\\n font-size: 24px;\\n font-weight: 600;\\n line-height: 32px;\\n color: \",\n \";\\n\"\n ]);\n _templateObject2 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject3() {\n const data = _tagged_template_literal([\n \"\\n font-size: 16px;\\n font-weight: 400;\\n line-height: 1.5;\\n letter-spacing: -0.16px;\\n color: \",\n \";\\n\"\n ]);\n _templateObject3 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject4() {\n const data = _tagged_template_literal([\n \"\\n margin: 40px 0;\\n display: flex;\\n gap: 8px;\\n flex-direction: column;\\n p {\\n font-size: 14px;\\n font-style: normal;\\n font-weight: 600;\\n line-height: 22px; /* 157.143% */\\n letter-spacing: -0.14px;\\n\\n color: \",\n \";\\n font-weight: 600;\\n }\\n\"\n ]);\n _templateObject4 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject5() {\n const data = _tagged_template_literal([\n \"\\n font-size: 14px;\\n\\n li {\\n font-weight: 400;\\n color: \",\n \";\\n\\n line-height: 22px;\\n list-style: initial;\\n margin-inline-start: 24px;\\n }\\n @media (max-width: 768px) {\\n li {\\n font-size: 14px;\\n }\\n }\\n\"\n ]);\n _templateObject5 = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from \"react/jsx-runtime\";\nimport styled from \"styled-components\";\nexport const ContentsWrapper = styled.div.withConfig({\n componentId: \"sc-c644f458-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.sol_gray_0);\nexport const ContentsContainer = styled.div.withConfig({\n componentId: \"sc-c644f458-1\"\n})(_templateObject1());\nexport const ContentsStyledTitle = styled.h2.withConfig({\n componentId: \"sc-c644f458-2\"\n})(_templateObject2(), (props)=>props.theme.new.colors.sol_gray_900);\nexport const Subtitle = styled.p.withConfig({\n componentId: \"sc-c644f458-3\"\n})(_templateObject3(), (props)=>props.theme.new.colors.sol_gray_500);\nexport const ContentsTitle = (param)=>{\n let { primary , secondary } = param;\n return /*#__PURE__*/ _jsx(_Fragment, {\n children: /*#__PURE__*/ _jsxs(ContentsStyledTitle, {\n children: [\n primary,\n !!secondary && /*#__PURE__*/ _jsx(Subtitle, {\n children: secondary\n })\n ]\n })\n });\n};\nexport const NoticeContainer = styled.div.withConfig({\n componentId: \"sc-c644f458-4\"\n})(_templateObject4(), (props)=>props.theme.new.colors.sol_gray_500);\n// page/packages/index ìŠ¤íƒ€ì¼ ë™ì¼í•œ 부분...ì¶©ëŒ ë°©ì§€ë¡œ ê°€ì ¸ì™€ 사용중, ë‚˜ì¤‘ì— ì •ë¦¬í•´ì•¼\nexport const NoticeList = styled.ul.withConfig({\n componentId: \"sc-c644f458-5\"\n})(_templateObject5(), (props)=>props.theme.new.colors.sol_gray_500);\n","import { jsx as _jsx, jsxs as _jsxs } from \"react/jsx-runtime\";\nimport { styled, Typography } from \"@mui/material\";\nimport { useTheme } from \"styled-components\";\nimport { NoticeList } from \"../PassRegister\";\nconst Notice = (param)=>{\n let { title , caution , layoutStyle } = param;\n const theme = useTheme();\n const isArray = Array.isArray(caution);\n return /*#__PURE__*/ _jsxs(NoticeStack, {\n sx: layoutStyle,\n children: [\n /*#__PURE__*/ _jsx(Typography, {\n variant: \"semibold14\",\n sx: {\n color: \"\".concat(theme.new.colors.sol_gray_500)\n },\n children: title\n }),\n /*#__PURE__*/ _jsx(NoticeList, {\n children: isArray ? caution.map((item, index)=>/*#__PURE__*/ _jsx(\"li\", {\n children: /*#__PURE__*/ _jsx(Typography, {\n variant: \"regular14\",\n children: item\n })\n }, index)) : /*#__PURE__*/ _jsx(Typography, {\n variant: \"regular12\",\n color: (theme)=>theme.palette.text.secondary,\n sx: {\n whiteSpace: \"pre-wrap\"\n },\n children: caution\n })\n })\n ]\n });\n};\nconst NoticeStack = styled(\"div\")((param)=>{\n let { theme } = param;\n return {\n position: \"relative\",\n overflow: \"auto\",\n backgroundColor: theme.palette.grey[\"0\"],\n borderRadius: \"6px\",\n maxHeight: \"90px\",\n \"&::-webkit-scrollbar\": {\n width: \"4px\"\n },\n \"&::-webkit-scrollbar-thumb\": {\n borderRadius: \"2px\",\n background: \"#bbbbbf\"\n }\n };\n});\nexport default Notice;\n","import { _ as _tagged_template_literal } from \"@swc/helpers/_/_tagged_template_literal\";\nfunction _templateObject() {\n const data = _tagged_template_literal([\n \"\\n li {\\n color: \",\n \";\\n line-height: 22px;\\n list-style: initial;\\n margin-inline-start: 24px;\\n }\\n\\n @media (max-width: 768px) {\\n li {\\n font-size: 14px;\\n }\\n }\\n\"\n ]);\n _templateObject = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject1() {\n const data = _tagged_template_literal([\n \"\\n .priceInfo {\\n display: flex;\\n align-items: center;\\n @media (max-width: 768px) {\\n display: flex;\\n align-items: flex-start;\\n }\\n }\\n\"\n ]);\n _templateObject1 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject2() {\n const data = _tagged_template_literal([\n \"\\n position: relative;\\n padding: 24px;\\n border-radius: 6px;\\n background-color: \",\n \";\\n border: 1px solid \",\n \";\\n\\n :hover {\\n box-shadow: 0px 2px 8px 0px rgba(0, 0, 0, 0.08), 0px 1px 4px 0px rgba(0, 0, 0, 0.04);\\n transition: box-shadow 0.3s ease-in-out;\\n }\\n\\n .ant-row {\\n width: 100%;\\n justify-content: space-between;\\n flex-wrap: nowrap;\\n gap: 40px;\\n align-items: center;\\n }\\n\\n .ant-col {\\n align-items: center;\\n\\n &.clickArea {\\n cursor: pointer;\\n flex: 1;\\n }\\n\\n &.priceInfo {\\n text-align: right;\\n display: flex;\\n flex-direction: row;\\n justify-content: space-between;\\n height: 52px;\\n\\n .left {\\n height: 100%;\\n justify-content: center;\\n display: flex;\\n flex-direction: column;\\n margin-right: 24px;\\n }\\n\\n .right {\\n display: flex;\\n flex-direction: column;\\n }\\n }\\n }\\n\\n @media (max-width: 768px) {\\n padding: 20px;\\n .ant-row {\\n flex-direction: column;\\n align-items: stretch;\\n }\\n\\n .ant-col.priceInfo {\\n align-items: flex-end;\\n }\\n\\n .ant-col {\\n &.priceInfo {\\n .left {\\n justify-content: flex-end;\\n }\\n }\\n }\\n }\\n\"\n ]);\n _templateObject2 = function() {\n return data;\n };\n return data;\n}\nfunction _templateObject3() {\n const data = _tagged_template_literal([\n \"\\n width: 100%;\\n display: flex;\\n gap: 8px;\\n padding: 20px 28px;\\n\"\n ]);\n _templateObject3 = function() {\n return data;\n };\n return data;\n}\nimport { jsx as _jsx } from \"react/jsx-runtime\";\nimport { BOOKS_LANDING, EBOOKS_LANDING, PASSES_LANDING } from \"@/settings/constant\";\nimport { Button } from \"@bookips/solvook-ui-library\";\nimport { styled as muiStyled } from \"@mui/material\";\nimport { useRouter } from \"next/router\";\nimport { useMemo } from \"react\";\nimport styled from \"styled-components\";\nimport FilledButton from \"../common/Button/FilledButton\";\nexport const getIsPasses = (pathname)=>pathname.startsWith(PASSES_LANDING);\nexport const usePasses = ()=>{\n const { pathname } = useRouter();\n const { isPasses } = useMemo(()=>{\n return {\n isPasses: getIsPasses(pathname)\n };\n }, [\n pathname\n ]);\n return {\n isPackages: isPasses\n };\n};\nexport const useProductType = ()=>{\n const { pathname } = useRouter();\n // Todo ë¡œì§ ìˆ˜ì • í•„ìš”\n const { productType } = useMemo(()=>{\n let productType;\n switch(pathname.split(\"/\")[1]){\n case EBOOKS_LANDING:\n productType = \"ebooks\";\n break;\n case PASSES_LANDING:\n productType = \"package\";\n break;\n case BOOKS_LANDING:\n productType = \"aladinbooks\";\n break;\n }\n return {\n productType\n };\n }, [\n pathname\n ]);\n return {\n productType\n };\n};\nexport const Title = muiStyled(\"h5\")((param)=>{\n let { theme } = param;\n return {\n color: theme.palette.grey[900],\n marginBottom: \"24px\",\n ...theme.typography.h4,\n \"& em\": {\n color: theme.palette.indigo[500],\n textDecoration: \"none\"\n },\n [theme.breakpoints.down(820)]: {\n marginBottom: \"20px\"\n }\n };\n});\nexport const SubTitle = muiStyled(\"h5\")((param)=>{\n let { theme } = param;\n return {\n color: theme.palette.text[\"title\"],\n marginBottom: \"20px\",\n ...theme.typography.h6,\n \"& span\": {\n color: theme.palette.text[\"secondary\"],\n marginInlineStart: \"4px\",\n ...theme.typography.body2\n },\n [theme.breakpoints.down(\"sm\")]: {\n \"& span\": {}\n }\n };\n});\nexport const Container = muiStyled(\"div\")((param)=>{\n let { theme } = param;\n return {\n maxWidth: \"1200px\",\n margin: \"0 auto\",\n width: \"100%\",\n // marginBottom: '40px',\n \".notice-title\": {\n color: theme.palette.grey[500],\n fontWeight: \"600\",\n marginBottom: \"8px\"\n },\n [theme.breakpoints.down(\"sm\")]: {\n gap: \"40px\"\n }\n };\n});\nexport const NoticeList = styled.ul.withConfig({\n componentId: \"sc-f80b46ae-0\"\n})(_templateObject(), (props)=>props.theme.new.colors.sol_gray_500);\nexport const OriginalPrice = muiStyled(\"s\")((param)=>{\n let { theme } = param;\n return {\n color: theme.palette.text[\"disabled\"],\n ...theme.typography.body2,\n [theme.breakpoints.down(\"sm\")]: {\n textAlign: \"left\"\n }\n };\n});\nexport const DiscountRate = muiStyled(\"em\")((param)=>{\n let { theme } = param;\n return {\n color: theme.palette.red[400],\n marginInlineEnd: \"4px\",\n ...theme.typography.h6,\n [theme.breakpoints.down(\"sm\")]: {}\n };\n});\nexport const Price = muiStyled(\"p\")((param)=>{\n let { theme } = param;\n return {\n color: theme.palette.text[\"primary\"],\n textAlign: \"right\",\n whiteSpace: \"nowrap\",\n ...theme.typography.h6,\n [theme.breakpoints.down(\"sm\")]: {\n textAlign: \"left\"\n }\n };\n});\nexport const PassTitle = muiStyled(\"h5\")((param)=>{\n let { theme } = param;\n return {\n color: theme.palette.text[\"primary\"],\n marginBottom: \"4px\",\n maxWidth: \"380px\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n display: \"-webkit-box\",\n WebkitLineClamp: 2,\n \"-webkit-box-orient\": \"vertical\",\n wordBreak: \"break-all\",\n ...theme.typography.h6,\n [theme.breakpoints.down(\"sm\")]: {\n display: \"flex\",\n flexDirection: \"column-reverse\",\n alignItems: \"flex-start\"\n }\n };\n});\nexport const PassPrice = styled.div.withConfig({\n componentId: \"sc-f80b46ae-1\"\n})(_templateObject1());\nexport const PassItemContainer = styled.li.withConfig({\n componentId: \"sc-f80b46ae-2\"\n})(_templateObject2(), (pass)=>pass.theme.new.colors.white, (pass)=>pass.theme.new.colors.sol_gray_100);\nexport const SubDescription = muiStyled(\"span\")((param)=>{\n let { theme } = param;\n return {\n color: theme.palette.text[\"secondary\"],\n display: \"flex\",\n alignItems: \"center\",\n ...theme.typography.body1\n };\n});\nexport const OrderFilledButton = muiStyled(FilledButton)((param)=>{\n let { theme } = param;\n return {\n padding: \"10px 16px\",\n ...theme.typography.subtitle2\n };\n});\nexport const PurchaseButton = (param)=>{\n let { onClick , children } = param;\n return /*#__PURE__*/ _jsx(OrderFilledButton, {\n type: \"text\",\n variant: \"outlined\",\n className: \"cart-btn\",\n onClick: onClick,\n children: children\n });\n};\nexport const SubscribeButton = (param)=>{\n let { onClick , children } = param;\n return /*#__PURE__*/ _jsx(OrderFilledButton, {\n type: \"text\",\n variant: \"solid\",\n className: \"cart-btn\",\n onClick: onClick,\n children: children\n });\n};\nexport const PassDialogButtonContainer = styled.div.withConfig({\n componentId: \"sc-f80b46ae-3\"\n})(_templateObject3());\nexport const PassDialogButton = muiStyled(Button)((param)=>{\n let { theme } = param;\n return {\n width: \"100%\",\n padding: \"12px 20px\",\n ...theme.typography.semibold16\n };\n});\n","import { useEffect, useMemo, useRef, useState } from \"react\";\nconst loadAsyncScript = (param)=>{\n let { src , async =true , onScriptLoad } = param;\n return new Promise((resolve, reject)=>{\n const script = document.createElement(\"script\");\n script.src = src;\n script.async = async;\n script.onload = ()=>{\n resolve(script);\n // @ts-ignore\n onScriptLoad();\n };\n document.body.appendChild(script);\n });\n};\nconst loadAllScript = ()=>{\n const scripts = [\n \"https://code.jquery.com/jquery-1.12.4.min.js\",\n \"https://cdn.iamport.kr/js/iamport.payment-1.2.0.js\"\n ].map((url)=>loadAsyncScript({\n src: url,\n async: false,\n onScriptLoad: ()=>{\n ;\n }\n }));\n return Promise.all(scripts);\n};\nexport const useIamport = (_impCode)=>{\n const impCode = useMemo(()=>_impCode || process.env.NEXT_PUBLIC_IAMPORT_USER_CODE || \"imp21555572\", [\n _impCode\n ]);\n const impRef = useRef(null);\n const [loading, setLoading] = useState(true);\n const [initialized, setInitialized] = useState(false);\n useEffect(()=>{\n let loadedScript = [];\n loadAllScript()// @ts-ignore\n .then((results)=>{\n loadedScript = results;\n const { IMP } = window;\n ;\n // @ts-ignore\n // IMP.init('imp21555572')\n IMP.init(impCode);\n // IMP.init(process.env.NEXT_PUBLIC_IAMPORT_USER_CODE)\n impRef.current = IMP;\n setInitialized(true);\n }).catch((err)=>{\n ;\n alert(err.message);\n }).finally(()=>{\n setLoading(false);\n });\n return ()=>{\n loadedScript.map((script)=>document.body.removeChild(script));\n // @ts-ignore\n window.IMP = undefined;\n };\n }, []);\n return {\n impRef,\n loading,\n initialized\n };\n};\nexport const getIamportPayload = (payload, payMethod)=>({\n ...payload,\n pay_method: payMethod,\n pg: payMethod !== \"kakaopay\" ? payload.tax_free ? process.env.NEXT_PUBLIC_PORTONE_PG_TAX_FREE : process.env.NEXT_PUBLIC_PORTONE_PG_TAX : \"kakaopay\"\n });\nexport const requestPay = (payload, impRef)=>{\n return new Promise((resolve, reject)=>{\n if (!impRef) {\n reject({\n message: \"invalid iamport lib\"\n });\n } else {\n impRef.request_pay(payload, (response)=>{\n ;\n if (response.success) {\n resolve(response);\n } else {\n reject({\n message: response.error_msg\n });\n // let msg = 'ê²°ì œì— ì‹¤íŒ¨í•˜ì˜€ìŠµë‹ˆë‹¤.'\n // msg += 'ì—러내용 : ' + rsp.error_msg\n // alert(msg)\n }\n });\n }\n });\n};\nexport const getTextFromPayMethod = (payMethod)=>{\n let text;\n switch(payMethod){\n case \"card\":\n text = \"ì‹ ìš©/ì²´í¬ì¹´ë“œ\";\n break;\n case \"trans\":\n text = \"실시간 계좌ì´ì²´\";\n break;\n case \"vbank\":\n text = \"ê°€ìƒê³„좌\";\n break;\n case \"phone\":\n text = \"íœ´ëŒ€í° ì†Œì•¡ê²°ì œ\";\n break;\n case \"samsung\":\n text = \"삼성페ì´\";\n break;\n case \"kpay\":\n text = \"kpay\";\n break;\n case \"cultureland\":\n text = \"문화ìƒí’ˆê¶Œ\";\n break;\n case \"smartculture\":\n text = \"스마트문ìƒ\";\n break;\n case \"happymoney\":\n text = \"해피머니\";\n break;\n case \"booknlife\":\n text = \"ë„서문화ìƒí’ˆê¶Œ\";\n break;\n case \"point\":\n case \"kakaopay\":\n text = \"카카오페ì´\";\n break;\n }\n return text;\n};\nexport const getTextFromPG = (pg)=>{\n let text;\n switch(pg){\n case \"html5_inicis\":\n text = \"ì´ë‹ˆì‹œìŠ¤\";\n break;\n case \"kcp\":\n text = \"KCP\";\n break;\n case \"kcp_billing\":\n text = \"KCP(ì •ê¸°ê²°ì œ)\";\n break;\n case \"uplus\":\n text = \"Toss\";\n break;\n case \"jtnet\":\n text = \"JTNet\";\n break;\n case \"nice\":\n text = \"나ì´ìŠ¤íŽ˜ì´\";\n break;\n case \"kakaopay\":\n text = \"카카오페ì´\";\n break;\n case \"kakao\":\n text = \"카카오페ì´\";\n break;\n case \"danal\":\n text = \"ë‹¤ë‚ \";\n break;\n case \"danal_tpay\":\n text = \"ë‹¤ë‚ (휴대í°ì†Œì•¡ê²°ì œ)\";\n break;\n case \"kicc\":\n text = \"KICC\";\n break;\n case \"paypal\":\n text = \"페ì´íŒ”\";\n break;\n case \"mobilians\":\n text = \"모빌리언스\";\n break;\n case \"payco\":\n text = \"페ì´ì½”\";\n break;\n case \"settle\":\n text = \"세틀뱅í¬\";\n break;\n case \"naverco\":\n text = \"네ì´ë²„페ì´\";\n break;\n case \"naverpay\":\n text = \"네ì´ë²„페ì´\";\n break;\n case \"smilepay\":\n text = \"스마ì¼íŽ˜ì´\";\n break;\n }\n return text;\n};\n","import BigNumber from \"bignumber.js\";\nimport { create } from \"zustand\";\nconst useBooksOrderStore = create((set)=>({\n revision: 0,\n deliveryFee: 0,\n originalPriceTotal: 0,\n amountTotal: 0,\n discountAmount: 0,\n payableAmount: 0,\n payMethod: \"card\",\n setItems: (items, isBooks)=>set((state)=>{\n if (!items) {\n return {\n items: undefined\n };\n }\n const totals = {\n originalPriceTotal: 0,\n amountTotal: 0\n };\n const newItems = items.map((item)=>{\n totals.originalPriceTotal += BigNumber(item.product.originPrice).multipliedBy(item.quantity).toNumber();\n const subtotal = BigNumber(item.product.price).multipliedBy(item.quantity).toNumber();\n totals.amountTotal += subtotal;\n return {\n ...item,\n subtotal\n };\n });\n const deliveryFee = isBooks ? BigNumber(totals.amountTotal).isGreaterThanOrEqualTo(30000) ? 0 : 2500 : 0;\n return {\n items: newItems,\n ...totals,\n deliveryFee,\n discountAmount: BigNumber(totals.originalPriceTotal).minus(BigNumber(totals.amountTotal)).toNumber(),\n payableAmount: BigNumber(totals.amountTotal).plus(deliveryFee).toNumber()\n };\n }),\n removeItem: (cartItemId)=>set((state)=>{\n const newItems = [\n ...state.items\n ];\n const idx = newItems.findIndex((param)=>{\n let { id } = param;\n return cartItemId === id;\n });\n if (idx > -1) {\n newItems.splice(idx, 1);\n }\n return {\n items: newItems\n };\n }),\n setItemQuantity: (cartItemId, quantity)=>set((state)=>{\n const newItems = [\n ...state.items\n ];\n const idx = newItems.findIndex((param)=>{\n let { id } = param;\n return cartItemId === id;\n });\n if (idx > -1) {\n newItems.splice(idx, 1);\n }\n return {\n items: state.items.map((item)=>({\n ...item,\n quantity: cartItemId === item.id ? quantity : item.quantity\n }))\n };\n }),\n setPayMethod: (payMethod)=>set((state)=>({\n payMethod\n })),\n brandNewRevision: ()=>set((state)=>({\n revision: new Date().getTime()\n }))\n }));\nexport default useBooksOrderStore;\n"],"names":[],"sourceRoot":""}