1import { 2 CardNew, 3 ListItem, 4 es_default, 5 fallback_screen_default 6} from "/build/_shared/chunk-Y6OIBGDA.js"; 7import { 8 to_safe_path_segment_default 9} from "/build/_shared/chunk-P4WFY3UR.js"; 10import "/build/_shared/chunk-VIU3M2OR.js"; 11import { 12 init_esm, 13 useLoaderData 14} from "/build/_shared/chunk-46RNFGVL.js"; 15import { 16 React, 17 init_react 18} from "/build/_shared/chunk-BNRLY3XL.js"; 19 20// browser-route-module:routes/media/favorites_article/$favArticleId.tsx?browser 21init_react(); 22 23// app/routes/media/favorites_article/$favArticleId.tsx 24init_react(); 25init_esm(); 26function favArticleId_default() { 27 const data = useLoaderData(); 28 const [favoriteList, setFavoriteList] = es_default("favoriteList", { 29 defaultValue: [] 30 }); 31 const isItemFavorite = (id) => { 32 const itemInFavorite = favoriteList.length ? favoriteList.find((item) => item.id === id) : void 0; 33 if (itemInFavorite) { 34 return true; 35 } 36 return false; 37 }; 38 const addToFavorite = ({ name, firstPicture, id, slug }, itemInFavorite) => { 39 if (!itemInFavorite) { 40 setFavoriteList([ 41 ...favoriteList, 42 { 43 name, 44 firstPicture, 45 id, 46 slug 47 } 48 ]); 49 } else { 50 const newItems = favoriteList.filter((item) => item.id !== id); 51 if (!newItems) { 52 setFavoriteList([]); 53 } else { 54 setFavoriteList(newItems); 55 } 56 } 57 }; 58 const getArticleLink = (id, name, slug) => `${id}/${to_safe_path_segment_default(slug || name)}`; 59 if (data && !data.media.length) 60 return /* @__PURE__ */ React.createElement(fallback_screen_default, { 61 subtitle: "Versuche es mit einem anderen Suchbegriff oder verwende weniger Filter. Manchmal hilft auch die Suche in einem anderen Bundesland.", 62 title: "Leider konnten wir kein Medium finden." 63 }); 64 return /* @__PURE__ */ React.createElement("div", { 65 className: "media-card-wrapper pt-4" 66 }, /* @__PURE__ */ React.createElement("ul", { 67 className: "lg:masonry md:masonry-md" 68 }, data && data.media.length ? data.media.map((media) => { 69 const isFavorite = isItemFavorite(media.id); 70 return /* @__PURE__ */ React.createElement(ListItem, { 71 className: "mb-3", 72 key: media.id 73 }, /* @__PURE__ */ React.createElement(CardNew, { 74 ...media, 75 action: addToFavorite, 76 favoriteList, 77 isFavorite, 78 articleLink: getArticleLink(media.id, media.name, media.slug) 79 })); 80 }) : null)); 81} 82export { 83 favArticleId_default as default 84}; 85//# sourceMappingURL=/build/routes/media/favorites_article/$favArticleId-F2U3HBO3.js.map
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.