{"ast":null,"code":"var _jsxFileName = \"/home/fanfarm/FanFarm/system/V3fanfarm-ubuntu-local/V3fanfarm-frontend/src/components/job/JobDetail.js\",\n _s = $RefreshSig$();\n// src/components/job/JobDetail.js - 新フィールド表示対応版\nimport React, { useState, useEffect, useContext, useCallback } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { JobPostings, Applications } from '../../api/api';\nimport { AuthContext } from '../../context/AuthContext';\nimport Button from '../common/Button';\nimport Card from '../common/Card';\nimport JobLocationMap from '../map/JobLocationMap';\n\n// スタイルコンポーネント(既存のものをそのまま使用)\nimport { jsxDEV as _jsxDEV } from \"react/jsx-dev-runtime\";\nconst JobDetailContainer = styled.div`\n max-width: 800px;\n margin: 40px auto;\n padding: 0 24px;\n`;\n_c = JobDetailContainer;\nconst JobTitle = styled.h1`\n text-align: center;\n margin-bottom: 24px;\n color: var(--primary-color);\n`;\n_c2 = JobTitle;\nconst JobContent = styled.div`\n margin-top: 32px;\n`;\n_c3 = JobContent;\nconst JobSection = styled.div`\n margin-bottom: 24px;\n`;\n_c4 = JobSection;\nconst SectionTitle = styled.h2`\n font-size: 22px;\n margin-bottom: 16px;\n color: var(--secondary-color);\n`;\n_c5 = SectionTitle;\nconst JobDetailItem = styled.p`\n margin-bottom: 12px;\n font-size: 18px;\n line-height: 1.6;\n`;\n_c6 = JobDetailItem;\nconst JobLabel = styled.span`\n font-weight: 700;\n margin-right: 8px;\n`;\n\n// 新規: 日付表示用のスタイル\n_c7 = JobLabel;\nconst DateChipsContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 8px;\n`;\n_c8 = DateChipsContainer;\nconst DateChip = styled.span`\n background: #e8f5e9;\n color: #1b5e20;\n padding: 6px 12px;\n border-radius: 16px;\n font-size: 14px;\n display: inline-block;\n`;\n_c9 = DateChip;\nconst RemarksSection = styled.div`\n background: #fffef7;\n border: 1px solid #fff3cd;\n border-radius: var(--border-radius);\n padding: 16px;\n margin-top: 16px;\n`;\n_c0 = RemarksSection;\nconst ButtonGroup = styled.div`\n display: flex;\n justify-content: center;\n gap: 16px;\n margin-top: 32px;\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 8px;\n }\n`;\n\n// その他のスタイルコンポーネント(既存のまま)\n_c1 = ButtonGroup;\nconst ErrorMessage = styled.p`\n color: var(--error-color);\n font-size: 16px;\n margin-top: 16px;\n text-align: center;\n`;\n_c10 = ErrorMessage;\nconst SuccessMessage = styled.p`\n color: var(--success-color);\n font-size: 18px;\n font-weight: 700;\n margin-top: 16px;\n text-align: center;\n`;\n_c11 = SuccessMessage;\nconst Loading = styled.p`\n text-align: center;\n font-size: 18px;\n color: var(--text-light);\n margin: 48px 0;\n`;\n_c12 = Loading;\nconst Error = styled.p`\n text-align: center;\n font-size: 18px;\n color: var(--error-color);\n margin: 48px 0;\n`;\n_c13 = Error;\nconst Modal = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n`;\n_c14 = Modal;\nconst ModalContent = styled(Card)`\n width: 90%;\n max-width: 500px;\n padding: 32px;\n text-align: center;\n`;\n_c15 = ModalContent;\nconst ModalTitle = styled.h2`\n margin-bottom: 24px;\n color: var(--primary-color);\n`;\n_c16 = ModalTitle;\nconst ModalText = styled.p`\n font-size: 18px;\n margin-bottom: 24px;\n`;\n_c17 = ModalText;\nconst MapSection = styled(JobSection)`\n border: 1px solid #e0e0e0;\n border-radius: var(--border-radius);\n padding: 20px;\n background: #fafafa;\n`;\n_c18 = MapSection;\nconst LocationInfo = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n font-size: 16px;\n color: var(--text-color);\n`;\n_c19 = LocationInfo;\nconst JobDetail = () => {\n _s();\n const {\n id\n } = useParams();\n const {\n currentUser\n } = useContext(AuthContext);\n const navigate = useNavigate();\n const [job, setJob] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState('');\n const [successMessage, setSuccessMessage] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [showConfirmModal, setShowConfirmModal] = useState(false);\n const [locationData, setLocationData] = useState(null);\n useEffect(() => {\n const fetchJobDetail = async () => {\n try {\n const response = await JobPostings.getById(id);\n setJob(response.data);\n setLoading(false);\n } catch (err) {\n setError('求人情報の取得に失敗しました');\n setLoading(false);\n }\n };\n fetchJobDetail();\n }, [id]);\n const handleApply = () => {\n if (!currentUser) {\n navigate('/login');\n return;\n }\n if (currentUser.user_type === 'farmer') {\n setErrorMessage('農家ユーザーは求人に応募できません');\n return;\n }\n setShowConfirmModal(true);\n };\n const handleConfirmApply = async () => {\n try {\n await Applications.apply({\n job_posting_id: job.id,\n applicant_id: currentUser.id\n });\n setSuccessMessage('応募が完了しました!');\n setShowConfirmModal(false);\n setTimeout(() => {\n navigate('/profile');\n }, 2000);\n } catch (err) {\n var _err$response, _err$response$data;\n setErrorMessage(((_err$response = err.response) === null || _err$response === void 0 ? void 0 : (_err$response$data = _err$response.data) === null || _err$response$data === void 0 ? void 0 : _err$response$data.error) || '応募に失敗しました');\n setShowConfirmModal(false);\n }\n };\n const handleCancelApply = () => {\n setShowConfirmModal(false);\n };\n const handleBack = () => {\n navigate('/jobs');\n };\n const handleLocationFound = useCallback(result => {\n setLocationData(result);\n console.log('📍 求人地の位置情報を取得:', result);\n }, []);\n const handleLocationError = useCallback(error => {\n console.warn('📍 求人地の位置情報取得エラー:', error);\n }, []);\n if (loading) {\n return /*#__PURE__*/_jsxDEV(JobDetailContainer, {\n children: /*#__PURE__*/_jsxDEV(Loading, {\n children: \"\\u8AAD\\u307F\\u8FBC\\u307F\\u4E2D...\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 242,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 241,\n columnNumber: 7\n }, this);\n }\n if (error) {\n return /*#__PURE__*/_jsxDEV(JobDetailContainer, {\n children: [/*#__PURE__*/_jsxDEV(Error, {\n children: error\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 250,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(ButtonGroup, {\n children: /*#__PURE__*/_jsxDEV(Button, {\n onClick: handleBack,\n children: \"\\u6C42\\u4EBA\\u4E00\\u89A7\\u306B\\u623B\\u308B\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 252,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 251,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 249,\n columnNumber: 7\n }, this);\n }\n if (!job) {\n return /*#__PURE__*/_jsxDEV(JobDetailContainer, {\n children: [/*#__PURE__*/_jsxDEV(Error, {\n children: \"\\u6C42\\u4EBA\\u60C5\\u5831\\u304C\\u898B\\u3064\\u304B\\u308A\\u307E\\u305B\\u3093\\u3067\\u3057\\u305F\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 261,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(ButtonGroup, {\n children: /*#__PURE__*/_jsxDEV(Button, {\n onClick: handleBack,\n children: \"\\u6C42\\u4EBA\\u4E00\\u89A7\\u306B\\u623B\\u308B\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 263,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 262,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 260,\n columnNumber: 7\n }, this);\n }\n\n // 勤務日の配列化処理\n const workDatesArray = job.work_dates ? job.work_dates.split(',').map(date => date.trim()) : [];\n return /*#__PURE__*/_jsxDEV(JobDetailContainer, {\n children: [/*#__PURE__*/_jsxDEV(Card, {\n children: [/*#__PURE__*/_jsxDEV(JobTitle, {\n children: job.company_name\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 275,\n columnNumber: 9\n }, this), /*#__PURE__*/_jsxDEV(JobContent, {\n children: [/*#__PURE__*/_jsxDEV(JobSection, {\n children: [/*#__PURE__*/_jsxDEV(SectionTitle, {\n children: \"\\u52E4\\u52D9\\u60C5\\u5831\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 280,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: [/*#__PURE__*/_jsxDEV(JobLabel, {\n children: \"\\u52E4\\u52D9\\u5730:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 282,\n columnNumber: 15\n }, this), job.location]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 281,\n columnNumber: 13\n }, this), job.meeting_place && /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: [/*#__PURE__*/_jsxDEV(JobLabel, {\n children: \"\\u96C6\\u5408\\u5834\\u6240:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 289,\n columnNumber: 17\n }, this), job.meeting_place]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 288,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: [/*#__PURE__*/_jsxDEV(JobLabel, {\n children: \"\\u6642\\u7D66:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 295,\n columnNumber: 15\n }, this), job.hourly_wage, \"\\u5186\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 294,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: [/*#__PURE__*/_jsxDEV(JobLabel, {\n children: \"\\u52E4\\u52D9\\u66DC\\u65E5:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 300,\n columnNumber: 15\n }, this), job.work_days]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 299,\n columnNumber: 13\n }, this), workDatesArray.length > 0 && /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: [/*#__PURE__*/_jsxDEV(JobLabel, {\n children: \"\\u52E4\\u52D9\\u65E5:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 307,\n columnNumber: 17\n }, this), /*#__PURE__*/_jsxDEV(DateChipsContainer, {\n children: workDatesArray.map((date, index) => /*#__PURE__*/_jsxDEV(DateChip, {\n children: [\"\\uD83D\\uDCC5 \", new Date(date).toLocaleDateString('ja-JP')]\n }, index, true, {\n fileName: _jsxFileName,\n lineNumber: 310,\n columnNumber: 21\n }, this))\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 308,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 306,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: [/*#__PURE__*/_jsxDEV(JobLabel, {\n children: \"\\u52E4\\u52D9\\u6642\\u9593:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 319,\n columnNumber: 15\n }, this), job.work_hours]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 318,\n columnNumber: 13\n }, this), job.seasonal_vegetables && /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: [/*#__PURE__*/_jsxDEV(JobLabel, {\n children: \"\\u65EC\\u306E\\u91CE\\u83DC:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 325,\n columnNumber: 17\n }, this), job.seasonal_vegetables]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 324,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: [/*#__PURE__*/_jsxDEV(JobLabel, {\n children: \"\\u52DF\\u96C6\\u4EBA\\u6570:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 331,\n columnNumber: 15\n }, this), job.positions_available, \"\\u4EBA \\uFF08\\u6B8B\\u308A\", job.positions_available - job.positions_filled, \"\\u4EBA\\uFF09\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 330,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 279,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(MapSection, {\n children: [/*#__PURE__*/_jsxDEV(SectionTitle, {\n children: \"\\uD83D\\uDCCD \\u52E4\\u52D9\\u5730\\u30DE\\u30C3\\u30D7\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 338,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(LocationInfo, {\n children: [/*#__PURE__*/_jsxDEV(\"span\", {\n children: \"\\uD83C\\uDFE0\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 340,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(\"span\", {\n children: job.location\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 341,\n columnNumber: 15\n }, this), locationData && /*#__PURE__*/_jsxDEV(\"span\", {\n style: {\n color: '#666',\n fontSize: '14px'\n },\n children: [\"\\uFF08\\u7CBE\\u5EA6: \", Math.round(locationData.accuracy), \"%\\uFF09\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 343,\n columnNumber: 17\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 339,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(JobLocationMap, {\n address: job.location,\n height: \"350px\",\n zoom: 15,\n showAccuracy: true,\n enableRetry: true,\n onLocationFound: handleLocationFound,\n onLocationError: handleLocationError\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 348,\n columnNumber: 13\n }, this), locationData && locationData.note && /*#__PURE__*/_jsxDEV(\"div\", {\n style: {\n fontSize: '14px',\n color: '#666',\n marginTop: '8px',\n fontStyle: 'italic'\n },\n children: [\"\\u2139\\uFE0F \", locationData.note]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 358,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 337,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(JobSection, {\n children: [/*#__PURE__*/_jsxDEV(SectionTitle, {\n children: \"\\u696D\\u52D9\\u5185\\u5BB9\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 371,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: job.job_description\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 372,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 370,\n columnNumber: 11\n }, this), job.belongings && /*#__PURE__*/_jsxDEV(JobSection, {\n children: [/*#__PURE__*/_jsxDEV(SectionTitle, {\n children: \"\\u6301\\u3061\\u7269\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 378,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: job.belongings\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 379,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 377,\n columnNumber: 13\n }, this), job.remarks && /*#__PURE__*/_jsxDEV(RemarksSection, {\n children: [/*#__PURE__*/_jsxDEV(SectionTitle, {\n children: \"\\uD83D\\uDCCC \\u5099\\u8003\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 386,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(JobDetailItem, {\n style: {\n marginBottom: 0\n },\n children: job.remarks\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 387,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 385,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(JobSection, {\n children: [/*#__PURE__*/_jsxDEV(SectionTitle, {\n children: \"\\u9023\\u7D61\\u5148\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 395,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(JobDetailItem, {\n children: [/*#__PURE__*/_jsxDEV(JobLabel, {\n children: \"\\u9023\\u7D61\\u5148:\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 397,\n columnNumber: 15\n }, this), job.contact]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 396,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 394,\n columnNumber: 11\n }, this), /*#__PURE__*/_jsxDEV(ButtonGroup, {\n children: [/*#__PURE__*/_jsxDEV(Button, {\n onClick: handleApply,\n disabled: job.positions_filled >= job.positions_available,\n children: job.positions_filled >= job.positions_available ? '募集終了' : '応募する'\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 403,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n $secondary: true,\n onClick: handleBack,\n children: \"\\u6C42\\u4EBA\\u4E00\\u89A7\\u306B\\u623B\\u308B\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 406,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 402,\n columnNumber: 11\n }, this), errorMessage && /*#__PURE__*/_jsxDEV(ErrorMessage, {\n children: errorMessage\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 411,\n columnNumber: 28\n }, this), successMessage && /*#__PURE__*/_jsxDEV(SuccessMessage, {\n children: successMessage\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 412,\n columnNumber: 30\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 277,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 274,\n columnNumber: 7\n }, this), showConfirmModal && /*#__PURE__*/_jsxDEV(Modal, {\n children: /*#__PURE__*/_jsxDEV(ModalContent, {\n children: [/*#__PURE__*/_jsxDEV(ModalTitle, {\n children: \"\\u5FDC\\u52DF\\u306E\\u78BA\\u8A8D\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 419,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(ModalText, {\n children: [job.company_name, \"\\u306E\\u6C42\\u4EBA\\u306B\\u5FDC\\u52DF\\u3057\\u307E\\u3059\\u3002\\u3088\\u308D\\u3057\\u3044\\u3067\\u3059\\u304B\\uFF1F\"]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 420,\n columnNumber: 13\n }, this), /*#__PURE__*/_jsxDEV(ButtonGroup, {\n children: [/*#__PURE__*/_jsxDEV(Button, {\n onClick: handleConfirmApply,\n children: \"\\u5FDC\\u52DF\\u3059\\u308B\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 424,\n columnNumber: 15\n }, this), /*#__PURE__*/_jsxDEV(Button, {\n $secondary: true,\n onClick: handleCancelApply,\n children: \"\\u30AD\\u30E3\\u30F3\\u30BB\\u30EB\"\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 425,\n columnNumber: 15\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 423,\n columnNumber: 13\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 418,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: _jsxFileName,\n lineNumber: 417,\n columnNumber: 9\n }, this)]\n }, void 0, true, {\n fileName: _jsxFileName,\n lineNumber: 273,\n columnNumber: 5\n }, this);\n};\n_s(JobDetail, \"1yH3Z+iwynwzsHuqokvBRRF1TnM=\", false, function () {\n return [useParams, useNavigate];\n});\n_c20 = JobDetail;\nexport default JobDetail;\nvar _c, _c2, _c3, _c4, _c5, _c6, _c7, _c8, _c9, _c0, _c1, _c10, _c11, _c12, _c13, _c14, _c15, _c16, _c17, _c18, _c19, _c20;\n$RefreshReg$(_c, \"JobDetailContainer\");\n$RefreshReg$(_c2, \"JobTitle\");\n$RefreshReg$(_c3, \"JobContent\");\n$RefreshReg$(_c4, \"JobSection\");\n$RefreshReg$(_c5, \"SectionTitle\");\n$RefreshReg$(_c6, \"JobDetailItem\");\n$RefreshReg$(_c7, \"JobLabel\");\n$RefreshReg$(_c8, \"DateChipsContainer\");\n$RefreshReg$(_c9, \"DateChip\");\n$RefreshReg$(_c0, \"RemarksSection\");\n$RefreshReg$(_c1, \"ButtonGroup\");\n$RefreshReg$(_c10, \"ErrorMessage\");\n$RefreshReg$(_c11, \"SuccessMessage\");\n$RefreshReg$(_c12, \"Loading\");\n$RefreshReg$(_c13, \"Error\");\n$RefreshReg$(_c14, \"Modal\");\n$RefreshReg$(_c15, \"ModalContent\");\n$RefreshReg$(_c16, \"ModalTitle\");\n$RefreshReg$(_c17, \"ModalText\");\n$RefreshReg$(_c18, \"MapSection\");\n$RefreshReg$(_c19, \"LocationInfo\");\n$RefreshReg$(_c20, \"JobDetail\");","map":{"version":3,"names":["React","useState","useEffect","useContext","useCallback","useParams","useNavigate","styled","JobPostings","Applications","AuthContext","Button","Card","JobLocationMap","jsxDEV","_jsxDEV","JobDetailContainer","div","_c","JobTitle","h1","_c2","JobContent","_c3","JobSection","_c4","SectionTitle","h2","_c5","JobDetailItem","p","_c6","JobLabel","span","_c7","DateChipsContainer","_c8","DateChip","_c9","RemarksSection","_c0","ButtonGroup","_c1","ErrorMessage","_c10","SuccessMessage","_c11","Loading","_c12","Error","_c13","Modal","_c14","ModalContent","_c15","ModalTitle","_c16","ModalText","_c17","MapSection","_c18","LocationInfo","_c19","JobDetail","_s","id","currentUser","navigate","job","setJob","loading","setLoading","error","setError","successMessage","setSuccessMessage","errorMessage","setErrorMessage","showConfirmModal","setShowConfirmModal","locationData","setLocationData","fetchJobDetail","response","getById","data","err","handleApply","user_type","handleConfirmApply","apply","job_posting_id","applicant_id","setTimeout","_err$response","_err$response$data","handleCancelApply","handleBack","handleLocationFound","result","console","log","handleLocationError","warn","children","fileName","_jsxFileName","lineNumber","columnNumber","onClick","workDatesArray","work_dates","split","map","date","trim","company_name","location","meeting_place","hourly_wage","work_days","length","index","Date","toLocaleDateString","work_hours","seasonal_vegetables","positions_available","positions_filled","style","color","fontSize","Math","round","accuracy","address","height","zoom","showAccuracy","enableRetry","onLocationFound","onLocationError","note","marginTop","fontStyle","job_description","belongings","remarks","marginBottom","contact","disabled","$secondary","_c20","$RefreshReg$"],"sources":["/home/fanfarm/FanFarm/system/V3fanfarm-ubuntu-local/V3fanfarm-frontend/src/components/job/JobDetail.js"],"sourcesContent":["// src/components/job/JobDetail.js - 新フィールド表示対応版\nimport React, { useState, useEffect, useContext, useCallback } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport styled from 'styled-components';\nimport { JobPostings, Applications } from '../../api/api';\nimport { AuthContext } from '../../context/AuthContext';\nimport Button from '../common/Button';\nimport Card from '../common/Card';\nimport JobLocationMap from '../map/JobLocationMap';\n\n// スタイルコンポーネント(既存のものをそのまま使用)\nconst JobDetailContainer = styled.div`\n max-width: 800px;\n margin: 40px auto;\n padding: 0 24px;\n`;\n\nconst JobTitle = styled.h1`\n text-align: center;\n margin-bottom: 24px;\n color: var(--primary-color);\n`;\n\nconst JobContent = styled.div`\n margin-top: 32px;\n`;\n\nconst JobSection = styled.div`\n margin-bottom: 24px;\n`;\n\nconst SectionTitle = styled.h2`\n font-size: 22px;\n margin-bottom: 16px;\n color: var(--secondary-color);\n`;\n\nconst JobDetailItem = styled.p`\n margin-bottom: 12px;\n font-size: 18px;\n line-height: 1.6;\n`;\n\nconst JobLabel = styled.span`\n font-weight: 700;\n margin-right: 8px;\n`;\n\n// 新規: 日付表示用のスタイル\nconst DateChipsContainer = styled.div`\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n margin-top: 8px;\n`;\n\nconst DateChip = styled.span`\n background: #e8f5e9;\n color: #1b5e20;\n padding: 6px 12px;\n border-radius: 16px;\n font-size: 14px;\n display: inline-block;\n`;\n\nconst RemarksSection = styled.div`\n background: #fffef7;\n border: 1px solid #fff3cd;\n border-radius: var(--border-radius);\n padding: 16px;\n margin-top: 16px;\n`;\n\nconst ButtonGroup = styled.div`\n display: flex;\n justify-content: center;\n gap: 16px;\n margin-top: 32px;\n\n @media (max-width: 768px) {\n flex-direction: column;\n gap: 8px;\n }\n`;\n\n// その他のスタイルコンポーネント(既存のまま)\nconst ErrorMessage = styled.p`\n color: var(--error-color);\n font-size: 16px;\n margin-top: 16px;\n text-align: center;\n`;\n\nconst SuccessMessage = styled.p`\n color: var(--success-color);\n font-size: 18px;\n font-weight: 700;\n margin-top: 16px;\n text-align: center;\n`;\n\nconst Loading = styled.p`\n text-align: center;\n font-size: 18px;\n color: var(--text-light);\n margin: 48px 0;\n`;\n\nconst Error = styled.p`\n text-align: center;\n font-size: 18px;\n color: var(--error-color);\n margin: 48px 0;\n`;\n\nconst Modal = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.5);\n display: flex;\n justify-content: center;\n align-items: center;\n z-index: 1000;\n`;\n\nconst ModalContent = styled(Card)`\n width: 90%;\n max-width: 500px;\n padding: 32px;\n text-align: center;\n`;\n\nconst ModalTitle = styled.h2`\n margin-bottom: 24px;\n color: var(--primary-color);\n`;\n\nconst ModalText = styled.p`\n font-size: 18px;\n margin-bottom: 24px;\n`;\n\nconst MapSection = styled(JobSection)`\n border: 1px solid #e0e0e0;\n border-radius: var(--border-radius);\n padding: 20px;\n background: #fafafa;\n`;\n\nconst LocationInfo = styled.div`\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 16px;\n font-size: 16px;\n color: var(--text-color);\n`;\n\nconst JobDetail = () => {\n const { id } = useParams();\n const { currentUser } = useContext(AuthContext);\n const navigate = useNavigate();\n const [job, setJob] = useState(null);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState('');\n const [successMessage, setSuccessMessage] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [showConfirmModal, setShowConfirmModal] = useState(false);\n const [locationData, setLocationData] = useState(null);\n\n useEffect(() => {\n const fetchJobDetail = async () => {\n try {\n const response = await JobPostings.getById(id);\n setJob(response.data);\n setLoading(false);\n } catch (err) {\n setError('求人情報の取得に失敗しました');\n setLoading(false);\n }\n };\n\n fetchJobDetail();\n }, [id]);\n\n const handleApply = () => {\n if (!currentUser) {\n navigate('/login');\n return;\n }\n\n if (currentUser.user_type === 'farmer') {\n setErrorMessage('農家ユーザーは求人に応募できません');\n return;\n }\n\n setShowConfirmModal(true);\n };\n\n const handleConfirmApply = async () => {\n try {\n await Applications.apply({\n job_posting_id: job.id,\n applicant_id: currentUser.id\n });\n \n setSuccessMessage('応募が完了しました!');\n setShowConfirmModal(false);\n \n setTimeout(() => {\n navigate('/profile');\n }, 2000);\n } catch (err) {\n setErrorMessage(err.response?.data?.error || '応募に失敗しました');\n setShowConfirmModal(false);\n }\n };\n\n const handleCancelApply = () => {\n setShowConfirmModal(false);\n };\n\n const handleBack = () => {\n navigate('/jobs');\n };\n\n const handleLocationFound = useCallback((result) => {\n setLocationData(result);\n console.log('📍 求人地の位置情報を取得:', result);\n }, []);\n\n const handleLocationError = useCallback((error) => {\n console.warn('📍 求人地の位置情報取得エラー:', error);\n }, []);\n\n if (loading) {\n return (\n <JobDetailContainer>\n <Loading>読み込み中...</Loading>\n </JobDetailContainer>\n );\n }\n\n if (error) {\n return (\n <JobDetailContainer>\n <Error>{error}</Error>\n <ButtonGroup>\n <Button onClick={handleBack}>求人一覧に戻る</Button>\n </ButtonGroup>\n </JobDetailContainer>\n );\n }\n\n if (!job) {\n return (\n <JobDetailContainer>\n <Error>求人情報が見つかりませんでした</Error>\n <ButtonGroup>\n <Button onClick={handleBack}>求人一覧に戻る</Button>\n </ButtonGroup>\n </JobDetailContainer>\n );\n }\n\n // 勤務日の配列化処理\n const workDatesArray = job.work_dates ? job.work_dates.split(',').map(date => date.trim()) : [];\n\n return (\n <JobDetailContainer>\n <Card>\n <JobTitle>{job.company_name}</JobTitle>\n \n <JobContent>\n {/* 勤務情報セクション */}\n <JobSection>\n <SectionTitle>勤務情報</SectionTitle>\n <JobDetailItem>\n <JobLabel>勤務地:</JobLabel>\n {job.location}\n </JobDetailItem>\n \n {/* 新規: 集合場所 */}\n {job.meeting_place && (\n <JobDetailItem>\n <JobLabel>集合場所:</JobLabel>\n {job.meeting_place}\n </JobDetailItem>\n )}\n \n <JobDetailItem>\n <JobLabel>時給:</JobLabel>\n {job.hourly_wage}円\n </JobDetailItem>\n \n <JobDetailItem>\n <JobLabel>勤務曜日:</JobLabel>\n {job.work_days}\n </JobDetailItem>\n \n {/* 新規: 具体的な勤務日 */}\n {workDatesArray.length > 0 && (\n <JobDetailItem>\n <JobLabel>勤務日:</JobLabel>\n <DateChipsContainer>\n {workDatesArray.map((date, index) => (\n <DateChip key={index}>\n 📅 {new Date(date).toLocaleDateString('ja-JP')}\n </DateChip>\n ))}\n </DateChipsContainer>\n </JobDetailItem>\n )}\n \n <JobDetailItem>\n <JobLabel>勤務時間:</JobLabel>\n {job.work_hours}\n </JobDetailItem>\n \n {job.seasonal_vegetables && (\n <JobDetailItem>\n <JobLabel>旬の野菜:</JobLabel>\n {job.seasonal_vegetables}\n </JobDetailItem>\n )}\n \n <JobDetailItem>\n <JobLabel>募集人数:</JobLabel>\n {job.positions_available}人 (残り{job.positions_available - job.positions_filled}人)\n </JobDetailItem>\n </JobSection>\n\n {/* マップセクション(既存) */}\n <MapSection>\n <SectionTitle>📍 勤務地マップ</SectionTitle>\n <LocationInfo>\n <span>🏠</span>\n <span>{job.location}</span>\n {locationData && (\n <span style={{ color: '#666', fontSize: '14px' }}>\n (精度: {Math.round(locationData.accuracy)}%)\n </span>\n )}\n </LocationInfo>\n <JobLocationMap \n address={job.location} \n height=\"350px\"\n zoom={15}\n showAccuracy={true}\n enableRetry={true}\n onLocationFound={handleLocationFound}\n onLocationError={handleLocationError}\n />\n {locationData && locationData.note && (\n <div style={{ \n fontSize: '14px', \n color: '#666', \n marginTop: '8px',\n fontStyle: 'italic'\n }}>\n ℹ️ {locationData.note}\n </div>\n )}\n </MapSection>\n \n {/* 業務内容セクション */}\n <JobSection>\n <SectionTitle>業務内容</SectionTitle>\n <JobDetailItem>{job.job_description}</JobDetailItem>\n </JobSection>\n \n {/* 新規: 持ち物セクション */}\n {job.belongings && (\n <JobSection>\n <SectionTitle>持ち物</SectionTitle>\n <JobDetailItem>{job.belongings}</JobDetailItem>\n </JobSection>\n )}\n \n {/* 新規: 備考セクション */}\n {job.remarks && (\n <RemarksSection>\n <SectionTitle>📌 備考</SectionTitle>\n <JobDetailItem style={{ marginBottom: 0 }}>\n {job.remarks}\n </JobDetailItem>\n </RemarksSection>\n )}\n \n {/* 連絡先セクション */}\n <JobSection>\n <SectionTitle>連絡先</SectionTitle>\n <JobDetailItem>\n <JobLabel>連絡先:</JobLabel>\n {job.contact}\n </JobDetailItem>\n </JobSection>\n \n <ButtonGroup>\n <Button onClick={handleApply} disabled={job.positions_filled >= job.positions_available}>\n {job.positions_filled >= job.positions_available ? '募集終了' : '応募する'}\n </Button>\n <Button $secondary onClick={handleBack}>\n 求人一覧に戻る\n </Button>\n </ButtonGroup>\n \n {errorMessage && <ErrorMessage>{errorMessage}</ErrorMessage>}\n {successMessage && <SuccessMessage>{successMessage}</SuccessMessage>}\n </JobContent>\n </Card>\n \n {showConfirmModal && (\n <Modal>\n <ModalContent>\n <ModalTitle>応募の確認</ModalTitle>\n <ModalText>\n {job.company_name}の求人に応募します。よろしいですか?\n </ModalText>\n <ButtonGroup>\n <Button onClick={handleConfirmApply}>応募する</Button>\n <Button $secondary onClick={handleCancelApply}>キャンセル</Button>\n </ButtonGroup>\n </ModalContent>\n </Modal>\n )}\n </JobDetailContainer>\n );\n};\n\nexport default JobDetail;\n"],"mappings":";;AAAA;AACA,OAAOA,KAAK,IAAIC,QAAQ,EAAEC,SAAS,EAAEC,UAAU,EAAEC,WAAW,QAAQ,OAAO;AAC3E,SAASC,SAAS,EAAEC,WAAW,QAAQ,kBAAkB;AACzD,OAAOC,MAAM,MAAM,mBAAmB;AACtC,SAASC,WAAW,EAAEC,YAAY,QAAQ,eAAe;AACzD,SAASC,WAAW,QAAQ,2BAA2B;AACvD,OAAOC,MAAM,MAAM,kBAAkB;AACrC,OAAOC,IAAI,MAAM,gBAAgB;AACjC,OAAOC,cAAc,MAAM,uBAAuB;;AAElD;AAAA,SAAAC,MAAA,IAAAC,OAAA;AACA,MAAMC,kBAAkB,GAAGT,MAAM,CAACU,GAAG;AACrC;AACA;AACA;AACA,CAAC;AAACC,EAAA,GAJIF,kBAAkB;AAMxB,MAAMG,QAAQ,GAAGZ,MAAM,CAACa,EAAE;AAC1B;AACA;AACA;AACA,CAAC;AAACC,GAAA,GAJIF,QAAQ;AAMd,MAAMG,UAAU,GAAGf,MAAM,CAACU,GAAG;AAC7B;AACA,CAAC;AAACM,GAAA,GAFID,UAAU;AAIhB,MAAME,UAAU,GAAGjB,MAAM,CAACU,GAAG;AAC7B;AACA,CAAC;AAACQ,GAAA,GAFID,UAAU;AAIhB,MAAME,YAAY,GAAGnB,MAAM,CAACoB,EAAE;AAC9B;AACA;AACA;AACA,CAAC;AAACC,GAAA,GAJIF,YAAY;AAMlB,MAAMG,aAAa,GAAGtB,MAAM,CAACuB,CAAC;AAC9B;AACA;AACA;AACA,CAAC;AAACC,GAAA,GAJIF,aAAa;AAMnB,MAAMG,QAAQ,GAAGzB,MAAM,CAAC0B,IAAI;AAC5B;AACA;AACA,CAAC;;AAED;AAAAC,GAAA,GALMF,QAAQ;AAMd,MAAMG,kBAAkB,GAAG5B,MAAM,CAACU,GAAG;AACrC;AACA;AACA;AACA;AACA,CAAC;AAACmB,GAAA,GALID,kBAAkB;AAOxB,MAAME,QAAQ,GAAG9B,MAAM,CAAC0B,IAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAACK,GAAA,GAPID,QAAQ;AASd,MAAME,cAAc,GAAGhC,MAAM,CAACU,GAAG;AACjC;AACA;AACA;AACA;AACA;AACA,CAAC;AAACuB,GAAA,GANID,cAAc;AAQpB,MAAME,WAAW,GAAGlC,MAAM,CAACU,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AAAAyB,GAAA,GAZMD,WAAW;AAajB,MAAME,YAAY,GAAGpC,MAAM,CAACuB,CAAC;AAC7B;AACA;AACA;AACA;AACA,CAAC;AAACc,IAAA,GALID,YAAY;AAOlB,MAAME,cAAc,GAAGtC,MAAM,CAACuB,CAAC;AAC/B;AACA;AACA;AACA;AACA;AACA,CAAC;AAACgB,IAAA,GANID,cAAc;AAQpB,MAAME,OAAO,GAAGxC,MAAM,CAACuB,CAAC;AACxB;AACA;AACA;AACA;AACA,CAAC;AAACkB,IAAA,GALID,OAAO;AAOb,MAAME,KAAK,GAAG1C,MAAM,CAACuB,CAAC;AACtB;AACA;AACA;AACA;AACA,CAAC;AAACoB,IAAA,GALID,KAAK;AAOX,MAAME,KAAK,GAAG5C,MAAM,CAACU,GAAG;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAACmC,IAAA,GAXID,KAAK;AAaX,MAAME,YAAY,GAAG9C,MAAM,CAACK,IAAI,CAAC;AACjC;AACA;AACA;AACA;AACA,CAAC;AAAC0C,IAAA,GALID,YAAY;AAOlB,MAAME,UAAU,GAAGhD,MAAM,CAACoB,EAAE;AAC5B;AACA;AACA,CAAC;AAAC6B,IAAA,GAHID,UAAU;AAKhB,MAAME,SAAS,GAAGlD,MAAM,CAACuB,CAAC;AAC1B;AACA;AACA,CAAC;AAAC4B,IAAA,GAHID,SAAS;AAKf,MAAME,UAAU,GAAGpD,MAAM,CAACiB,UAAU,CAAC;AACrC;AACA;AACA;AACA;AACA,CAAC;AAACoC,IAAA,GALID,UAAU;AAOhB,MAAME,YAAY,GAAGtD,MAAM,CAACU,GAAG;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAAC6C,IAAA,GAPID,YAAY;AASlB,MAAME,SAAS,GAAGA,CAAA,KAAM;EAAAC,EAAA;EACtB,MAAM;IAAEC;EAAG,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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}