{"version":3,"file":"init_favorite_button-C0YNwon3.js","sources":["../../../app/frontend/entrypoints/shared/init_favorite_button.js"],"sourcesContent":["import toastr from 'toastr';\nimport { setCookie, getCookie } from './cookies';\n\nexport function initFavoriteButton() {\n const favoriteButtons = document.querySelectorAll('.js-favorite-button');\n if (!favoriteButtons) return;\n\n favoriteButtons.forEach((favoriteButton) => {\n favoriteButton.addEventListener('click', () => {\n toggleFavorite(favoriteButton);\n });\n });\n}\n\ntoastr.options = {\n timeOut: 1000,\n};\n\nfunction toggleFavorite(favoriteButton) {\n const jobId = Number(favoriteButton.dataset.jobId) || null;\n if (!jobId) return;\n\n if (favoriteButton.dataset.guestFavorite) {\n // 非会員の場合\n const guestFavorite = favoriteButton.dataset.guestFavorite === 'true';\n\n if (guestFavorite) {\n removeGuestFavoriteJob(favoriteButton, jobId);\n } else {\n addGuestFavoriteJob(favoriteButton, jobId);\n }\n } else if (favoriteButton.dataset.isFavorite) {\n // 会員の場合\n const isFavorite = favoriteButton.dataset.isFavorite === 'true';\n const header = {\n 'Content-Type': 'application/json',\n 'X-CSRF-Token': getCsrfToken(),\n };\n\n if (isFavorite) {\n removeMemberFavorite(favoriteButton, jobId, header);\n } else {\n addMemberFavorite(favoriteButton, jobId, header);\n }\n }\n}\n\nfunction getFavoriteJobIds() {\n return getCookie('favorite_job_ids') || [];\n}\n\nfunction addGuestFavoriteJob(favoriteButton, jobId) {\n if (!jobId) return;\n\n const favoriteJobIds = getFavoriteJobIds();\n const newFavoriteJobIds = [...favoriteJobIds, jobId];\n setCookie('favorite_job_ids', JSON.stringify(newFavoriteJobIds));\n favoriteButton.dataset.guestFavorite = 'true';\n toastr.info('お気に入りに追加しました');\n}\n\nfunction removeGuestFavoriteJob(favoriteButton, jobId) {\n if (!jobId) return;\n\n const favoriteJobIds = getFavoriteJobIds();\n const newFavoriteJobIds = favoriteJobIds.filter((id) => id !== jobId);\n setCookie('favorite_job_ids', JSON.stringify(newFavoriteJobIds));\n favoriteButton.dataset.guestFavorite = 'false';\n toastr.info('お気に入りから削除しました');\n}\n\nasync function addMemberFavorite(favoriteButton, jobId, header) {\n if (!jobId) return;\n\n const postUrl = `/mypage/favorites?job_id=${jobId}`;\n const response = await fetch(postUrl, { method: 'POST', headers: header });\n\n if (response.ok) {\n favoriteButton.dataset.isFavorite = 'true';\n toastr.info('お気に入りに追加しました');\n } else {\n console.error('error', response);\n }\n}\n\nasync function removeMemberFavorite(favoriteButton, jobId, header) {\n if (!jobId) return;\n\n const deleteUrl = `/mypage/favorites/${jobId}`;\n const response = await fetch(deleteUrl, {\n method: 'DELETE',\n headers: header,\n });\n\n if (response.ok) {\n favoriteButton.dataset.isFavorite = 'false';\n toastr.info('お気に入りから削除しました');\n } else {\n console.error('error', response);\n }\n}\n\nfunction getCsrfToken() {\n return document\n .querySelector('meta[name=\"csrf-token\"]')\n .getAttribute('content');\n}\n"],"names":["initFavoriteButton","favoriteButtons","favoriteButton","toggleFavorite","toastr","jobId","removeGuestFavoriteJob","addGuestFavoriteJob","isFavorite","header","getCsrfToken","removeMemberFavorite","addMemberFavorite","getFavoriteJobIds","getCookie","newFavoriteJobIds","setCookie","id","postUrl","response","deleteUrl"],"mappings":"iIAGO,SAASA,GAAqB,CACnC,MAAMC,EAAkB,SAAS,iBAAiB,qBAAqB,EAClEA,GAELA,EAAgB,QAASC,GAAmB,CAC1CA,EAAe,iBAAiB,QAAS,IAAM,CAC7CC,EAAeD,CAAc,CACnC,CAAK,CACL,CAAG,CACH,CAEAE,EAAO,QAAU,CACf,QAAS,GACX,EAEA,SAASD,EAAeD,EAAgB,CACtC,MAAMG,EAAQ,OAAOH,EAAe,QAAQ,KAAK,GAAK,KACtD,GAAKG,GAEL,GAAIH,EAAe,QAAQ,cAEHA,EAAe,QAAQ,gBAAkB,OAG7DI,EAAuBJ,EAAgBG,CAAK,EAE5CE,EAAoBL,EAAgBG,CAAK,UAElCH,EAAe,QAAQ,WAAY,CAE5C,MAAMM,EAAaN,EAAe,QAAQ,aAAe,OACnDO,EAAS,CACb,eAAgB,mBAChB,eAAgBC,EAAc,CACpC,EAEQF,EACFG,EAAqBT,EAAgBG,EAAOI,CAAM,EAElDG,EAAkBV,EAAgBG,EAAOI,CAAM,CAElD,EACH,CAEA,SAASI,GAAoB,CAC3B,OAAOC,EAAU,kBAAkB,GAAK,EAC1C,CAEA,SAASP,EAAoBL,EAAgBG,EAAO,CAClD,GAAI,CAACA,EAAO,OAGZ,MAAMU,EAAoB,CAAC,GADJF,IACuBR,CAAK,EACnDW,EAAU,mBAAoB,KAAK,UAAUD,CAAiB,CAAC,EAC/Db,EAAe,QAAQ,cAAgB,OACvCE,EAAO,KAAK,cAAc,CAC5B,CAEA,SAASE,EAAuBJ,EAAgBG,EAAO,CACrD,GAAI,CAACA,EAAO,OAGZ,MAAMU,EADiBF,IACkB,OAAQI,GAAOA,IAAOZ,CAAK,EACpEW,EAAU,mBAAoB,KAAK,UAAUD,CAAiB,CAAC,EAC/Db,EAAe,QAAQ,cAAgB,QACvCE,EAAO,KAAK,eAAe,CAC7B,CAEA,eAAeQ,EAAkBV,EAAgBG,EAAOI,EAAQ,CAC9D,GAAI,CAACJ,EAAO,OAEZ,MAAMa,EAAU,4BAA4Bb,CAAK,GAC3Cc,EAAW,MAAM,MAAMD,EAAS,CAAE,OAAQ,OAAQ,QAAST,CAAM,CAAE,EAErEU,EAAS,IACXjB,EAAe,QAAQ,WAAa,OACpCE,EAAO,KAAK,cAAc,GAE1B,QAAQ,MAAM,QAASe,CAAQ,CAEnC,CAEA,eAAeR,EAAqBT,EAAgBG,EAAOI,EAAQ,CACjE,GAAI,CAACJ,EAAO,OAEZ,MAAMe,EAAY,qBAAqBf,CAAK,GACtCc,EAAW,MAAM,MAAMC,EAAW,CACtC,OAAQ,SACR,QAASX,CACb,CAAG,EAEGU,EAAS,IACXjB,EAAe,QAAQ,WAAa,QACpCE,EAAO,KAAK,eAAe,GAE3B,QAAQ,MAAM,QAASe,CAAQ,CAEnC,CAEA,SAAST,GAAe,CACtB,OAAO,SACJ,cAAc,yBAAyB,EACvC,aAAa,SAAS,CAC3B"}