{"version":3,"file":"static/chunks/app/hackathon/page-50c59e636b070359.js","mappings":"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","sources":["webpack://_N_E/?d334","webpack://_N_E/../common/src/libs/formatHackathonDate.ts","webpack://_N_E/./src/app/hackathon/_components/FilterContent.tsx","webpack://_N_E/../common/src/components/Tag.tsx","webpack://_N_E/./src/app/hackathon/[hackathonId]/_components/OrganizerInfo.tsx","webpack://_N_E/./src/lib/calculateTimeRemaining.ts","webpack://_N_E/./src/components/Hackathon/HackathonStatusBadge.tsx","webpack://_N_E/./src/app/hackathon/_components/HackathonCard.tsx","webpack://_N_E/./src/app/hackathon/_components/HackathonList.tsx","webpack://_N_E/./src/app/hackathon/_components/ParticipatingHackathonCard.tsx","webpack://_N_E/./src/app/hackathon/_components/ParticipatingHackathonList.tsx"],"sourcesContent":["import(/* webpackMode: \"eager\", webpackExports: [\"HackathonList\"] */ \"/codebuild/output/src1508508373/src/craft-stadium/frontend/user/src/app/hackathon/_components/HackathonList.tsx\");\n;\nimport(/* webpackMode: \"eager\", webpackExports: [\"ParticipatingHackathonList\"] */ \"/codebuild/output/src1508508373/src/craft-stadium/frontend/user/src/app/hackathon/_components/ParticipatingHackathonList.tsx\");\n","import { ZonedDateTime } from \"@internationalized/date\"\nimport { toZonedTime } from \"date-fns-tz\"\n\nconst timeZone = \"Asia/Tokyo\"\nconst dayOfWeek = [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]\n\n/**\n * 2桁の数値文字列にフォーマットする\n * @param num 数値\n * @returns 2桁の文字列(例: \"01\", \"12\")\n */\nconst _format2Digits = (num: number): string => {\n return `${num.toString().padStart(2, \"0\")}`\n}\n\n/**\n * 日付を \"MM/DD\" 形式の文字列に変換する\n * @param date Dateオブジェクト\n * @returns \"MM月DD日\" 形式の文字列(例: \"12月25日\")\n */\nconst _getDate = (date: Date): string => {\n const month = date.getMonth() + 1\n const day = date.getDate()\n\n return `${_format2Digits(month)}月${_format2Digits(day)}日`\n}\n\n/**\n * 時刻を \"HH:mm\" 形式の文字列に変換する\n * @param date Dateオブジェクト\n * @returns \"HH:mm\" 形式の文字列(例: \"14:30\")\n */\nconst _getTime = (date: Date): string => {\n const hour = date.getHours()\n const minutes = date.getMinutes()\n\n return `${_format2Digits(hour)}:${_format2Digits(minutes)}`\n}\n\n/**\n * UnixタイムスタンプからJST(日本時間)のDateオブジェクトを取得する\n * @param unixTimestamp Unixタイムスタンプ(秒)\n * @returns JST(日本時間)のDateオブジェクト\n */\nconst _toJpDate = (unixTimestamp: number): Date => {\n const utcDate = new Date(unixTimestamp * 1000)\n return toZonedTime(utcDate, timeZone)\n}\n\n/**\n * UnixタイムスタンプをMM/DD(曜)HH:mm形式の日本時間文字列に変換する\n * @param unixTimestamp Unixタイムスタンプ(秒)\n * @returns \"MM/DD(曜)HH:mm\" 形式の文字列(例: \"12/25(月)14:30\")\n */\nexport const formatHackathonDate = (unixTimestamp: number): string => {\n const jpDate = _toJpDate(unixTimestamp)\n const dayOfWeekIndex = jpDate.getDay()\n return `${_getDate(jpDate)}(${dayOfWeek[dayOfWeekIndex]})${_getTime(jpDate)}`\n}\n\n/**\n * UnixタイムスタンプをMM/DD形式の日本時間文字列に変換する\n * @param unixTimestamp Unixタイムスタンプ(秒)\n * @returns \"MM月DD日\" 形式の文字列(例: \"12月25日\")\n */\nexport const formatHackathonCardDate = (unixTimestamp: number): string => {\n return _getDate(_toJpDate(unixTimestamp))\n}\n\n/**\n * UnixタイムスタンプをYYYY年MM月DD日形式の日本時間文字列に変換する\n * @param unixTimestamp Unixタイムスタンプ(秒)\n * @returns \"YYYY年MM月DD日\" 形式の文字列(例: \"2025年02月09日\")\n */\nexport const formatHackathonDetailDate = (unixTimestamp: number): string => {\n const jpDate = _toJpDate(unixTimestamp)\n const year = jpDate.getFullYear()\n return `${year}年${_getDate(jpDate)}`\n}\n\n/**\n * ZonedDateTimeをUnixタイムスタンプに変換する\n * @param date ZonedDateTimeオブジェクト\n * @returns Unixタイムスタンプ(秒)または 0\n */\nexport const zonedDateTimeToUnixTimestamp = (\n date: ZonedDateTime | null,\n): number => {\n if (!date) return 0\n\n const jsDate = date.toDate()\n return Math.floor(jsDate.getTime() / 1000)\n}\n","import { Checkbox } from \"@heroui/checkbox\"\nimport { Radio, RadioGroup } from \"@heroui/radio\"\nimport { FC } from \"react\"\n\nimport { TRaidStatus } from \"@/api/raid\"\n\nexport type StatusFilter = TRaidStatus | \"すべて\" | \"おすすめ\"\nexport type FormatFilter = \"オンライン\" | \"対面\" | \"両方\"\nexport type PeriodFilter = \"1~6日\" | \"1~4週間\" | \"1ヶ月~\" | \"すべて\"\n\ntype Props = {\n formatFilter: FormatFilter | string\n setFormatFilter: (value: string) => void\n areaOptions: string[]\n areaFilter: string[]\n setAreaFilter: (value: string[]) => void\n periodFilter: PeriodFilter | string\n setPeriodFilter: (value: string) => void\n tagOptions: string[]\n tagFilter: string[]\n setTagFilter: (value: string[]) => void\n}\n\nexport const FilterContent: FC = ({\n formatFilter,\n setFormatFilter,\n areaOptions,\n areaFilter,\n setAreaFilter,\n periodFilter,\n setPeriodFilter,\n tagOptions,\n tagFilter,\n setTagFilter,\n}) => (\n
\n
\n

形式

\n setFormatFilter(value)}\n >\n 両方\n オンライン\n 対面\n \n
\n
\n

開催地域

\n
\n {areaOptions.map((area) => (\n {\n if (isSelected) {\n setAreaFilter([...areaFilter, area])\n } else {\n setAreaFilter(areaFilter.filter((a) => a !== area))\n }\n }}\n >\n {area}\n \n ))}\n
\n
\n
\n

期間

\n setPeriodFilter(value)}\n >\n すべて\n 1~6日\n 1~4週間\n 1ヶ月~\n \n
\n
\n

タグ

\n
\n {tagOptions.map((tag) => (\n {\n if (isSelected) {\n setTagFilter([...tagFilter, tag])\n } else {\n setTagFilter(tagFilter.filter((t) => t !== tag))\n }\n }}\n >\n {tag}\n \n ))}\n
\n
\n
\n)\n","type Props = {\n value: string\n disabled?: boolean\n}\n\nexport const HackathonTag = ({ value, disabled = false }: Props) => {\n return (\n
\n \n {value}\n \n
\n )\n}\n","import { Image } from \"@heroui/image\"\nimport { FC } from \"react\"\n\nimport { SocialIcons } from \"./SocialIcons\"\n\nimport { TOrganizer } from \"@/api/organizer\"\n\ntype Props = {\n organizers: TOrganizer[]\n containSnsIcons?: boolean\n}\n\nexport const OrganizerInfo: FC = ({\n organizers,\n containSnsIcons = true,\n}) => {\n return (\n
\n {organizers.map((item: TOrganizer) => {\n return (\n \n
\n
\n \n
\n

\n {item.info.name}\n

\n
\n {containSnsIcons && }\n
\n )\n })}\n \n )\n}\n","/**\n * 残り日数を計算\n * @param targetDate 数値\n * @returns 残り時間・日数(例: 23日)\n */\n\nexport const calculateTimeRemaining = (\n targetDate: number,\n): { value: number; unit: \"日\" | \"時間\" } | null => {\n const now = new Date()\n const target = new Date(targetDate * 1000)\n const diff = target.getTime() - now.getTime()\n\n if (diff < 0) return null\n\n // 1日以上ある場合は日数で表示\n const days = Math.floor(diff / (1000 * 60 * 60 * 24))\n if (days > 0) {\n return { value: days, unit: \"日\" }\n }\n\n // 1日未満の場合は時間で表示\n const hours = Math.max(1, Math.floor(diff / (1000 * 60 * 60)))\n return { value: hours, unit: \"時間\" }\n}\n","import { FC } from \"react\"\n\nimport { TRaidStatus } from \"@/api/raid\"\nimport { calculateTimeRemaining } from \"@/lib/calculateTimeRemaining\"\n\ntype StatusBadgeProps = {\n status: TRaidStatus | string\n startDate: number\n}\n\nexport const HackathonStatusBadge: FC = ({\n status,\n startDate,\n}) => {\n let bgColor = \"\"\n let displayText = status\n\n switch (status) {\n case \"終了\":\n bgColor = \"bg-[#373A40]\"\n break\n case \"開催予定\":\n bgColor = \"bg-[#3C8AF5]\"\n if (startDate !== null) {\n const timeRemaining = calculateTimeRemaining(startDate)\n if (timeRemaining) {\n displayText = `締切まで残り ${timeRemaining.value}${timeRemaining.unit}`\n }\n }\n break\n case \"開催中\":\n bgColor = \"bg-[#B83CF5]\"\n break\n default:\n bgColor = \"bg-gray-100\"\n }\n\n return (\n
\n {displayText}\n
\n )\n}\n","import { IconTextItem } from \"@craft-stadium/common/src/components/IconTextItem/index\"\nimport { HackathonTag } from \"@craft-stadium/common/src/components/Tag\"\nimport {\n formatHackathonCardDate,\n formatHackathonDetailDate,\n} from \"@craft-stadium/common/src/libs/formatHackathonDate\"\nimport { Card, CardBody, CardFooter } from \"@heroui/card\"\nimport { Image } from \"@heroui/image\"\nimport NextLink from \"next/link\"\nimport { FC } from \"react\"\n\nimport { OrganizerInfo } from \"../[hackathonId]/_components/OrganizerInfo\"\n\nimport { TOrganizer } from \"@/api/organizer\"\nimport { TRaidSummary } from \"@/api/raid\"\nimport { HackathonStatusBadge } from \"@/components/Hackathon/HackathonStatusBadge\"\n\ntype Props = {\n hackathon: TRaidSummary\n organizers?: TOrganizer[]\n}\n\nexport const HackathonCard: FC = ({ hackathon, organizers }) => {\n return (\n \n \n \n
\n \n
\n
\n \n
\n
\n
\n
\n \n

{hackathon.info.title}

\n {/* 場所 / 日付 */}\n
\n \n \n
\n {/* 賞金 / 参加者 */}\n
\n \n \n
\n
\n {hackathon.tags.map((tag) => (\n \n ))}\n
\n\n {organizers && (\n \n )}\n
\n \n \n )\n}\n","\"use client\"\n\nimport { Button } from \"@heroui/button\"\nimport {\n Modal,\n ModalBody,\n ModalContent,\n ModalFooter,\n ModalHeader,\n} from \"@heroui/modal\"\nimport { useCallback, useMemo, useState } from \"react\"\nimport {\n RiCalendarTodoLine,\n RiCheckDoubleLine,\n RiFilterFill,\n RiFilterOffFill,\n RiTimer2Line,\n} from \"react-icons/ri\"\n\nimport {\n FilterContent,\n FormatFilter,\n PeriodFilter,\n StatusFilter,\n} from \"./FilterContent\"\nimport { HackathonCard } from \"./HackathonCard\"\n\nimport { TOrganizer } from \"@/api/organizer\"\nimport { THackathonRecommendation, TRaidSummary } from \"@/api/raid\"\n\ntype Props = {\n hackathonList: TRaidSummary[]\n hackathonOrganizerMap: Map\n areaOptions: string[]\n tagOptions: string[]\n recommendedHackathons: THackathonRecommendation[]\n}\n\nconst sortByRecommendation = (\n a: TRaidSummary,\n b: TRaidSummary,\n recommendationMap: Map,\n): number => {\n const rankA = recommendationMap.get(a.info.numberId) ?? Infinity\n const rankB = recommendationMap.get(b.info.numberId) ?? Infinity\n return rankA - rankB\n}\n\nconst sortByStatus = (a: TRaidSummary, b: TRaidSummary): number => {\n const statusOrder = {\n 開催予定: 0,\n 開催中: 1,\n 終了: 2,\n }\n if (statusOrder[a.info.status] !== statusOrder[b.info.status]) {\n return statusOrder[a.info.status] - statusOrder[b.info.status]\n }\n return a.info.eventDate.raidStart - b.info.eventDate.raidStart\n}\n\nconst combinedSort = (\n a: TRaidSummary,\n b: TRaidSummary,\n recommendationMap: Map,\n): number => {\n const recommendationComparison = sortByRecommendation(a, b, recommendationMap)\n if (recommendationComparison !== 0) return recommendationComparison\n return sortByStatus(a, b)\n}\n\nexport const HackathonList: React.FC = ({\n hackathonList,\n hackathonOrganizerMap,\n areaOptions,\n tagOptions,\n recommendedHackathons,\n}: Props) => {\n const [statusFilter, setStatusFilter] = useState(\"おすすめ\")\n const [formatFilter, setFormatFilter] = useState(\n \"両方\",\n )\n const [areaFilter, setAreaFilter] = useState([])\n const [periodFilter, setPeriodFilter] = useState(\n \"すべて\",\n )\n const [tagFilter, setTagFilter] = useState([])\n\n // SPモーダル用のstate\n const [isSPFilterModalOpen, setIsSPFilterModalOpen] = useState(false)\n\n const clearFilters = () => {\n setStatusFilter(\"おすすめ\")\n setFormatFilter(\"両方\")\n setAreaFilter([])\n setPeriodFilter(\"すべて\")\n setTagFilter([])\n setIsSPFilterModalOpen(false)\n }\n\n const matchesPeriodFilter = (\n hackathon: TRaidSummary,\n filter: PeriodFilter | string,\n ) => {\n const durationInDays =\n (hackathon.info.eventDate.raidEnd - hackathon.info.eventDate.raidStart) /\n (24 * 60 * 60)\n switch (filter) {\n case \"1~6日\":\n return durationInDays <= 6\n case \"1~4週間\":\n return durationInDays > 6 && durationInDays <= 28\n case \"1ヶ月~\":\n return durationInDays > 28\n default:\n return true\n }\n }\n\n const recommendationMap = useMemo(\n () =>\n new Map(\n recommendedHackathons.map((rec) => [rec.hackathonNumberId, rec.rank]),\n ),\n [recommendedHackathons],\n )\n\n const matchesRecommendedFilter = useCallback(\n (hackathon: TRaidSummary) => {\n return recommendationMap.has(hackathon.info.numberId)\n },\n [recommendationMap],\n )\n\n const sortedHackathonList = useMemo(() => {\n return hackathonList\n .slice()\n .sort((a, b) => combinedSort(a, b, recommendationMap))\n }, [hackathonList, recommendationMap])\n\n const filteredAndSortedHackathonList = useMemo(() => {\n return sortedHackathonList.filter((hackathon) => {\n const matchesStatus = (() => {\n if (statusFilter === \"すべて\") return true\n if (statusFilter === \"おすすめ\") {\n if (recommendedHackathons.length > 0) {\n return matchesRecommendedFilter(hackathon)\n }\n return recommendedHackathons.length === 0\n }\n return hackathon.info.status === statusFilter\n })()\n const matchesFormat =\n formatFilter === \"両方\" ||\n (formatFilter === \"オンライン\" && hackathon.info.venueInfo.isOnline) ||\n (formatFilter === \"対面\" && !hackathon.info.venueInfo.isOnline)\n const matchesArea =\n areaFilter.length === 0 ||\n areaFilter.includes(hackathon.info.venueInfo.venueArea)\n const matchesPeriod =\n periodFilter === \"すべて\" ||\n matchesPeriodFilter(hackathon, periodFilter)\n const matchesTags =\n tagFilter.length === 0 ||\n hackathon.tags.some((tag) => tagFilter.includes(tag.value))\n\n return (\n matchesStatus &&\n matchesFormat &&\n matchesArea &&\n matchesPeriod &&\n matchesTags\n )\n })\n }, [\n recommendedHackathons,\n sortedHackathonList,\n statusFilter,\n matchesRecommendedFilter,\n formatFilter,\n areaFilter,\n periodFilter,\n tagFilter,\n ])\n\n const statusButtons: { label: StatusFilter; value: StatusFilter }[] = [\n { label: \"おすすめ\", value: \"おすすめ\" },\n { label: \"開催予定\", value: \"開催予定\" },\n { label: \"開催中\", value: \"開催中\" },\n { label: \"終了\", value: \"終了\" },\n { label: \"すべて\", value: \"すべて\" },\n ]\n\n return (\n
\n {/* PC表示用のサイドバー */}\n
\n \n\n
\n {/* SP表示用のヘッダー */}\n
\n

\n {filteredAndSortedHackathonList.length}\n 件のハッカソン\n

\n setIsSPFilterModalOpen(true)}\n startContent={}\n className=\"font-semibold\"\n >\n 絞り込み\n \n
\n\n {/* ステータスフィルター(共通) */}\n
\n {statusButtons.map((button) => (\n setStatusFilter(button.value)}\n color={statusFilter === button.value ? \"primary\" : \"default\"}\n className=\"flex-shrink-0\"\n >\n {button.label}\n \n ))}\n
\n {/* ハッカソン一覧 */}\n
\n {filteredAndSortedHackathonList.length === 0 ? (\n

\n 該当するハッカソンがありません。\n

\n ) : (\n
\n {/* 開催予定のハッカソン */}\n {filteredAndSortedHackathonList.some(\n (h) => h.info.status === \"開催予定\",\n ) && (\n
\n
\n \n

開催予定

\n
\n
\n {filteredAndSortedHackathonList\n .filter((h) => h.info.status === \"開催予定\")\n .map((hackathon) => (\n \n ))}\n
\n
\n )}\n\n {/* 開催中のハッカソン */}\n {filteredAndSortedHackathonList.some(\n (h) => h.info.status === \"開催中\",\n ) && (\n
\n
\n \n

開催中

\n
\n
\n {filteredAndSortedHackathonList\n .filter((h) => h.info.status === \"開催中\")\n .map((hackathon) => (\n \n ))}\n
\n
\n )}\n\n {/* 終了したハッカソン */}\n {filteredAndSortedHackathonList.some(\n (h) => h.info.status === \"終了\",\n ) && (\n
\n
\n \n

終了

\n
\n
\n {filteredAndSortedHackathonList\n .filter((h) => h.info.status === \"終了\")\n .map((hackathon) => (\n \n ))}\n
\n
\n )}\n
\n )}\n
\n
\n
\n\n {/* SP表示用のフィルターモーダル */}\n setIsSPFilterModalOpen(false)}\n scrollBehavior=\"inside\"\n size=\"4xl\"\n className=\"lg:hidden\"\n placement=\"bottom\"\n >\n \n \n
\n

絞り込み条件

\n }\n className=\"w-full\"\n >\n 条件をリセットする\n \n
\n
\n \n \n \n \n setIsSPFilterModalOpen(false)}\n className=\"w-full\"\n >\n 条件を適用する ({filteredAndSortedHackathonList.length}件)\n \n \n
\n \n
\n )\n}\n","import { IconTextItem } from \"@craft-stadium/common/src/components/IconTextItem/index\"\nimport { formatHackathonCardDate } from \"@craft-stadium/common/src/libs/formatHackathonDate\"\nimport { Button } from \"@heroui/button\"\nimport { Card, CardBody, CardFooter, CardHeader } from \"@heroui/card\"\nimport { Image } from \"@heroui/image\"\nimport Link from \"next/link\"\nimport { FC } from \"react\"\nimport { RiExternalLinkLine } from \"react-icons/ri\"\n\nimport { TRaidSummary } from \"@/api/raid\"\nimport { PATH, RAID_TABS } from \"@/constants/path\"\n\ntype Props = {\n hackathon: TRaidSummary\n}\n\nexport const ParticipatingHackathonCard: FC = ({ hackathon }) => {\n return (\n \n \n

\n {hackathon.info.title}\n

\n
\n \n \n
\n
\n\n \n\n \n {/* イベント日程 */}\n
\n \n \n \n
\n\n
\n \n }\n >\n ハッカソン概要\n \n \n \n }\n >\n ルール\n \n \n
\n
\n\n \n \n \n \n \n
\n )\n}\n","\"use client\"\n\nimport { FC } from \"react\"\n\nimport { ParticipatingHackathonCard } from \"./ParticipatingHackathonCard\"\n\nimport { TRaidSummary } from \"@/api/raid\"\n\ntype Props = {\n participatingHackathons: TRaidSummary[]\n}\n\nexport const ParticipatingHackathonList: FC = ({\n participatingHackathons,\n}) => {\n if (participatingHackathons.length === 0) {\n return null\n }\n\n return (\n
\n
\n

\n {participatingHackathons.length}件のハッカソンに出場中\n

\n

出場確定のハッカソン

\n
\n\n
\n {participatingHackathons.map((hackathon) => (\n \n ))}\n
\n
\n )\n}\n"],"names":["Promise","resolve","then","__webpack_require__","bind","_format2Digits","concat","num","toString","padStart","_getDate","month","date","getMonth","day","getDate","_toJpDate","utcDate","Date","unixTimestamp","toZonedTime","formatHackathonCardDate","formatHackathonDetailDate","jpDate","year","getFullYear","FilterContent","formatFilter","setFormatFilter","areaOptions","areaFilter","setAreaFilter","periodFilter","setPeriodFilter","tagOptions","tagFilter","setTagFilter","param","jsx_runtime","jsxs","div","className","jsx","h4","RadioGroup","value","onValueChange","Radio","map","Checkbox","isSelected","includes","area","filter","a","tag","t","HackathonTag","disabled","span","OrganizerInfo","organizers","containSnsIcons","Image","src","item","info","logoImage","alt","name","width","height","radius","p","SocialIcons","urls","id","calculateTimeRemaining","now","diff","target","targetDate","getTime","days","Math","floor","unit","max","HackathonStatusBadge","status","startDate","bgColor","displayText","timeRemaining","HackathonCard","hackathon","NextLink","href","displayId","Card","isBlurred","shadow","as","CardBody","imageUrl","title","eventDate","raidStart","CardFooter","h3","IconTextItem","iconInfo","isRiIcon","text","venueInfo","venueArea","raidEnd","prize","total","description","direction","playerLimit","tags","sortByRecommendation","b","recommendationMap","rankA","get","numberId","Infinity","sortByStatus","statusOrder","開催予定","開催中","終了","combinedSort","recommendationComparison","HackathonList","hackathonList","hackathonOrganizerMap","recommendedHackathons","statusFilter","setStatusFilter","useState","isSPFilterModalOpen","setIsSPFilterModalOpen","clearFilters","matchesPeriodFilter","durationInDays","useMemo","Map","rec","hackathonNumberId","rank","matchesRecommendedFilter","useCallback","has","sortedHackathonList","slice","sort","filteredAndSortedHackathonList","matchesStatus","length","matchesFormat","isOnline","matchesArea","matchesPeriod","matchesTags","some","aside","Button","isIconOnly","aria-label","size","onPress","RiFilterOffFill","section","color","startContent","RiFilterFill","statusButtons","label","button","h","RiCalendarTodoLine","h2","RiTimer2Line","RiCheckDoubleLine","Modal","isOpen","onClose","scrollBehavior","placement","ModalContent","ModalHeader","variant","ModalBody","ModalFooter","ParticipatingHackathonCard","CardHeader","removeWrapper","kickoff","demoDay","Link","PATH","SERVICE","getRaidDetailWithTab","RAID_TABS","OVERVIEW","rel","endContent","RiExternalLinkLine","RULES","getHackathonPlayerParticipateInfo","ParticipatingHackathonList","participatingHackathons"],"sourceRoot":""}