diff --git a/front/apps/mobile/package.json b/front/apps/mobile/package.json index 4f434d8a..500e9197 100644 --- a/front/apps/mobile/package.json +++ b/front/apps/mobile/package.json @@ -31,7 +31,7 @@ "react-native-safe-area-context": "4.4.1", "react-native-screens": "~3.18.0", "react-native-svg": "13.4.0", - "yoshiki": "0.2.7" + "yoshiki": "0.2.9" }, "devDependencies": { "@babel/core": "^7.19.3", diff --git a/front/apps/web/package.json b/front/apps/web/package.json index aa8044fb..4ffdd705 100644 --- a/front/apps/web/package.json +++ b/front/apps/web/package.json @@ -41,7 +41,7 @@ "react-native-web": "^0.18.10", "solito": "^2.0.5", "superjson": "^1.11.0", - "yoshiki": "0.2.7", + "yoshiki": "0.2.9", "zod": "^3.19.1" }, "devDependencies": { diff --git a/front/apps/web/src/pages/_app.tsx b/front/apps/web/src/pages/_app.tsx index 2c097bb2..c6339b2f 100755 --- a/front/apps/web/src/pages/_app.tsx +++ b/front/apps/web/src/pages/_app.tsx @@ -70,6 +70,11 @@ const GlobalCssTheme = () => { #__next { height: 100vh; } + + .infinite-scroll-component__outerdiv { + width: 100%; + height: 100%; + } `} diff --git a/front/packages/primitives/src/animated.tsx b/front/packages/primitives/src/animated.tsx new file mode 100644 index 00000000..a86c3cf9 --- /dev/null +++ b/front/packages/primitives/src/animated.tsx @@ -0,0 +1,47 @@ +/* + * Kyoo - A portable and vast media library solution. + * Copyright (c) Kyoo. + * + * See AUTHORS.md and LICENSE file in the project root for full license information. + * + * Kyoo is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * Kyoo is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with Kyoo. If not, see . + */ + +import { motify } from "moti"; +import { Component, ComponentType, FunctionComponent } from "react"; +import { Poster } from "./image"; + +const getDisplayName = (Cmp: ComponentType) => { + return Cmp.displayName || Cmp.name || "Component"; +}; + +const asClass = (Cmp: FunctionComponent) => { + // TODO: ensure that every props is given at least once. + return class AsClass extends Component & { forward?: Partial }> { + static displayName = `WithClass(${getDisplayName(Cmp)})`; + + constructor(props: Partial & { forward?: Partial }) { + super(props); + } + + render() { + // @ts-ignore See todo above + return ; + } + }; +}; + +export const Animated = { + Poster: motify(asClass(Poster))(), +}; diff --git a/front/packages/primitives/src/image.tsx b/front/packages/primitives/src/image.tsx index 63257104..fbc624b1 100644 --- a/front/packages/primitives/src/image.tsx +++ b/front/packages/primitives/src/image.tsx @@ -18,7 +18,7 @@ * along with Kyoo. If not, see . */ -import { useState } from "react"; +import { ComponentType, ReactNode, useState } from "react"; import { View, Image as Img, @@ -26,10 +26,14 @@ import { ImageStyle, Platform, ImageProps, + ViewProps, + ViewStyle, } from "react-native"; -import { useYoshiki } from "yoshiki/native"; -import { YoshikiStyle } from "yoshiki/dist/type"; +import { percent, useYoshiki } from "yoshiki/native"; +import { StyleList, YoshikiStyle } from "yoshiki/dist/type"; import { Skeleton } from "./skeleton"; +import { LinearGradient, LinearGradientProps } from "expo-linear-gradient"; +import { alpha, ContrastArea } from "./themes"; type YoshikiEnhanced