PageSourceSearch

https://ru-digital.de/build/routes/media/favorites_article/$favArticleId-F2U3HBO3.js

js ru-digital.de collected 2026-10-06 05:23:23 UTC 2,595 bytes, 85 lines download raw bytes

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.