{"version":3,"file":"job_favorite-DVNJNW8J.js","sources":["../../../app/frontend/entrypoints/job_favorite.js"],"sourcesContent":["window.addEventListener(\n 'DOMContentLoaded',\n () => {\n const favoriteBtns = $('.c-button.-border-orange.-heart-icon');\n // issue_4141の施策の結果次第で修正\n // 横幅が狭いボタンの場合テキストが入らないため文字をカスタマイズ\n const isShortText = favoriteBtns\n .map(function () {\n return $(this).attr('data-is-square') === 'true';\n })\n .get()\n .some(Boolean);\n\n const favOn = {\n class: 'c-button -border-orange -heart-icon -sp-text-sm',\n 'data-method': 'post',\n innerHTML: isShortText ? 'お気に入り' : 'お気に入り登録',\n href: '/mypage/favorites?job_id=',\n };\n const favOff = {\n class: 'c-button -border-orange -heart-icon -sp-text-sm -solid -done',\n 'data-method': 'delete',\n innerHTML: isShortText ? 'お気に入り' : 'お気に入り登録済',\n href: '/mypage/favorites/',\n };\n function toggle(favBtn) {\n if (favBtn.className.includes(favOff.class)) {\n // お気に入り登録済みのクラスを削除\n favBtn.classList.remove('-solid', '-done');\n updateFavBtn(favBtn, favOn);\n updateFavoriteBadge(false);\n } else if (favBtn.className.includes(favOn.class)) {\n // お気に入り登録済みのクラスを追加\n favBtn.classList.add('-solid', '-done');\n updateFavBtn(favBtn, favOff);\n updateFavoriteBadge(true);\n }\n }\n\n function updateFavBtn(favBtn, favState) {\n favBtn.innerHTML = favState.innerHTML;\n favBtn.href = favState.href + favBtn.id;\n favBtn.setAttribute('data-method', favState['data-method']);\n }\n\n /**\n * お気に入りのバッジの更新処理\n *\n * @param {boolean} isAdd - いいねの加算か減算かのフラグ\n */\n function updateFavoriteBadge(isAdd) {\n const urlParams = new URLSearchParams(window.location.search);\n if (urlParams.has('ver') && urlParams.get('ver') === 'issue_4612') {\n const $badge = $('.badge.js-favorite-badge');\n const $icon = $('.js-favorite-icon');\n // 現在のバッジ数を取得(バッジがない場合は 0 とする)\n const currentCount = $badge.length ? Number($badge.text()) : 0;\n // 加算か減算かで新しいカウントを求める\n const newCount = isAdd ? currentCount + 1 : currentCount - 1;\n if (isAdd) {\n // 「いいね」を増やす\n addFavorite($icon, $badge, currentCount, newCount);\n } else {\n // 「いいね」を減らす\n removeFavorite($icon, $badge, newCount);\n }\n }\n }\n\n /**\n * 「いいね」を増やす処理\n *\n * @param {jQuery} $icon - いいねアイコンのjQueryオブジェクト\n * @param {jQuery} $badge - いいね数を表示するバッジのjQueryオブジェクト\n * @param {number} currentCount - 現在のバッジ数\n * @param {number} newCount - 増やした後のバッジ数\n */\n function addFavorite($icon, $badge, currentCount, newCount) {\n if (currentCount === 0) {\n // バッジが存在しないので、新規作成\n $icon.attr('src', $icon[0].dataset.heartSolidPath);\n const $newBadge = $('')\n .addClass('badge js-favorite-badge')\n .text(newCount);\n $icon.after($newBadge);\n } else {\n // すでにバッジがあるのでテキストを更新\n $badge.text(newCount);\n }\n }\n\n /**\n * 「いいね」を減らす処理\n *\n * @param {jQuery} $icon - いいねアイコンのjQueryオブジェクト\n * @param {jQuery} $badge - いいね数を表示するバッジのjQueryオブジェクト\n * @param {number} newCount - 減らした後のバッジ数\n */\n function removeFavorite($icon, $badge, newCount) {\n if (newCount > 0) {\n // まだ 0 以上なのでテキスト更新\n $badge.text(newCount);\n } else {\n // 0 以下になったのでバッジを削除し、アイコンをアウトラインに戻す\n $badge.remove();\n $icon.attr('src', $icon[0].dataset.heartOutlinePath);\n }\n }\n\n $.each(favoriteBtns, function (i, theBtn) {\n $(this).on('ajax:success', () => {\n $.each(favoriteBtns, (j, btn) => {\n if (btn.id === theBtn.id) {\n toggle(btn);\n }\n });\n });\n });\n },\n false\n);\n"],"names":["favoriteBtns","$","isShortText","favOn","favOff","toggle","favBtn","updateFavBtn","updateFavoriteBadge","favState","isAdd","urlParams","$badge","$icon","currentCount","newCount","addFavorite","removeFavorite","$newBadge","i","theBtn","j","btn"],"mappings":"gFAAA,OAAO,iBACL,mBACA,IAAM,CACJ,MAAMA,EAAeC,EAAE,sCAAsC,EAGvDC,EAAcF,EACjB,IAAI,UAAY,CACf,OAAOC,EAAE,IAAI,EAAE,KAAK,gBAAgB,IAAM,MAClD,CAAO,EACA,IAAK,EACL,KAAK,OAAO,EAETE,EAAQ,CACZ,MAAO,kDACP,cAAe,OACf,UAAWD,EAAc,QAAU,UACnC,KAAM,2BACZ,EACUE,EAAS,CACb,MAAO,+DACP,cAAe,SACf,UAAWF,EAAc,QAAU,WACnC,KAAM,oBACZ,EACI,SAASG,EAAOC,EAAQ,CAClBA,EAAO,UAAU,SAASF,EAAO,KAAK,GAExCE,EAAO,UAAU,OAAO,SAAU,OAAO,EACzCC,EAAaD,EAAQH,CAAK,EAC1BK,EAAoB,EAAK,GAChBF,EAAO,UAAU,SAASH,EAAM,KAAK,IAE9CG,EAAO,UAAU,IAAI,SAAU,OAAO,EACtCC,EAAaD,EAAQF,CAAM,EAC3BI,EAAoB,EAAI,EAE3B,CAED,SAASD,EAAaD,EAAQG,EAAU,CACtCH,EAAO,UAAYG,EAAS,UAC5BH,EAAO,KAAOG,EAAS,KAAOH,EAAO,GACrCA,EAAO,aAAa,cAAeG,EAAS,aAAa,CAAC,CAC3D,CAOD,SAASD,EAAoBE,EAAO,CAClC,MAAMC,EAAY,IAAI,gBAAgB,OAAO,SAAS,MAAM,EAC5D,GAAIA,EAAU,IAAI,KAAK,GAAKA,EAAU,IAAI,KAAK,IAAM,aAAc,CACjE,MAAMC,EAASX,EAAE,0BAA0B,EACrCY,EAAQZ,EAAE,mBAAmB,EAE7Ba,EAAeF,EAAO,OAAS,OAAOA,EAAO,KAAI,CAAE,EAAI,EAEvDG,EAAWL,EAAQI,EAAe,EAAIA,EAAe,EACvDJ,EAEFM,EAAYH,EAAOD,EAAQE,EAAcC,CAAQ,EAGjDE,EAAeJ,EAAOD,EAAQG,CAAQ,CAEzC,CACF,CAUD,SAASC,EAAYH,EAAOD,EAAQE,EAAcC,EAAU,CAC1D,GAAID,IAAiB,EAAG,CAEtBD,EAAM,KAAK,MAAOA,EAAM,CAAC,EAAE,QAAQ,cAAc,EACjD,MAAMK,EAAYjB,EAAE,QAAQ,EACzB,SAAS,yBAAyB,EAClC,KAAKc,CAAQ,EAChBF,EAAM,MAAMK,CAAS,CAC7B,MAEQN,EAAO,KAAKG,CAAQ,CAEvB,CASD,SAASE,EAAeJ,EAAOD,EAAQG,EAAU,CAC3CA,EAAW,EAEbH,EAAO,KAAKG,CAAQ,GAGpBH,EAAO,OAAM,EACbC,EAAM,KAAK,MAAOA,EAAM,CAAC,EAAE,QAAQ,gBAAgB,EAEtD,CAEDZ,EAAE,KAAKD,EAAc,SAAUmB,EAAGC,EAAQ,CACxCnB,EAAE,IAAI,EAAE,GAAG,eAAgB,IAAM,CAC/BA,EAAE,KAAKD,EAAc,CAACqB,EAAGC,IAAQ,CAC3BA,EAAI,KAAOF,EAAO,IACpBf,EAAOiB,CAAG,CAEtB,CAAS,CACT,CAAO,CACP,CAAK,CACF,EACD,EACF"}