@applicaster/zapp-react-native-ui-components 12.0.0-alpha.4534459584 → 12.0.0-alpha.5114122134

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,7 @@
1
1
  import * as React from "react";
2
2
  import { Animated, EasingFunction, StyleProp, ViewStyle } from "react-native";
3
-
3
+ import { usePrevious } from "@applicaster/zapp-react-native-utils/reactHooks/utils";
4
+ import { toBooleanWithDefaultFalse } from "@applicaster/zapp-react-native-utils/booleanUtils";
4
5
  import { noop } from "@applicaster/zapp-react-native-utils/functionUtils";
5
6
 
6
7
  type AnimatedInterpolatedStyle =
@@ -35,11 +36,16 @@ function getAnimation(config: AnimatedInConfig, phase: "in" | "out") {
35
36
  return config[phase] || config;
36
37
  }
37
38
 
38
- export function AnimatedInOut(props: Props) {
39
- const { visible, animationConfig, children } = props;
40
-
39
+ export function AnimatedInOut({
40
+ visible,
41
+ animationConfig,
42
+ staticStyles = {},
43
+ children,
44
+ }: Props) {
41
45
  const [animatedValue] = React.useState(new Animated.Value(visible ? 1 : 0));
42
- const [animating, setAnimating] = React.useState(null);
46
+ const [animating, setAnimating] = React.useState(undefined);
47
+
48
+ const previousVisible = usePrevious(toBooleanWithDefaultFalse(visible));
43
49
 
44
50
  function startAnimation(toValue, config) {
45
51
  if (animating) {
@@ -55,7 +61,7 @@ export function AnimatedInOut(props: Props) {
55
61
  delay,
56
62
  useNativeDriver: true,
57
63
  }).start(() => {
58
- setAnimating(null);
64
+ setAnimating(undefined);
59
65
  onAnimationEnd();
60
66
  });
61
67
 
@@ -63,12 +69,14 @@ export function AnimatedInOut(props: Props) {
63
69
  }
64
70
 
65
71
  React.useEffect(() => {
66
- if (visible) {
72
+ if (!previousVisible && visible) {
67
73
  startAnimation(1.0, getAnimation(animationConfig, "in"));
68
- } else {
74
+ }
75
+
76
+ if (previousVisible && !visible) {
69
77
  startAnimation(0.0, getAnimation(animationConfig, "out"));
70
78
  }
71
- }, [visible, animating]);
79
+ }, [visible, previousVisible]);
72
80
 
73
81
  const styles = visible
74
82
  ? getAnimation(animationConfig, "in").styles
@@ -77,7 +85,7 @@ export function AnimatedInOut(props: Props) {
77
85
  return (
78
86
  <Animated.View
79
87
  renderToHardwareTextureAndroid={animating}
80
- style={[styles(animatedValue), props?.staticStyles || {}]}
88
+ style={[styles(animatedValue), staticStyles]}
81
89
  >
82
90
  {children}
83
91
  </Animated.View>
@@ -1,5 +1,4 @@
1
1
  import React from "react";
2
-
3
2
  import FastImage, {
4
3
  FastImageProps,
5
4
  } from "@applicaster/react-native-fast-image";
@@ -15,6 +14,8 @@ export const QBImage = (props: FastImageProps) => {
15
14
  headers: props.source.headers,
16
15
  priority: props.source.priority,
17
16
  cache: props.source.cache,
17
+ maxWidth: props.source.maxWidth,
18
+ maxHeight: props.source.maxHeight,
18
19
  };
19
20
  }, [
20
21
  ...(typeof props.source === "object"
@@ -23,6 +24,8 @@ export const QBImage = (props: FastImageProps) => {
23
24
  props.source?.priority,
24
25
  props.source?.cache,
25
26
  props.source?.headers,
27
+ props.source?.maxWidth,
28
+ props.source?.maxHeight,
26
29
  ]
27
30
  : []),
28
31
  ]);
@@ -4,7 +4,6 @@ import { Text, TextStyle, View, ViewStyle } from "react-native";
4
4
 
5
5
  import { getLocalizations } from "@applicaster/zapp-react-native-utils/localizationUtils";
6
6
  import { getAppStylesColor } from "@applicaster/zapp-react-native-utils/stylesUtils";
7
- import { useDimensions } from "@applicaster/zapp-react-native-utils/reactHooks/layout";
8
7
  import { useTheme } from "@applicaster/zapp-react-native-utils/theme";
9
8
  import { styleKeys } from "@applicaster/zapp-react-native-utils/styleKeysUtils";
10
9
 
@@ -26,10 +25,10 @@ const textStyles = (appStyles = defaultAppStyles): TextStyle => ({
26
25
  textAlign: "center",
27
26
  });
28
27
 
29
- const errorStyles = ({ width, height, backgroundColor }): ViewStyle => ({
28
+ const errorStyles = ({ backgroundColor }): ViewStyle => ({
30
29
  flex: 1,
31
- width,
32
- height,
30
+ width: "100%",
31
+ height: "100%",
33
32
  justifyContent: "center",
34
33
  alignItems: "center",
35
34
  position: "absolute",
@@ -41,8 +40,6 @@ export function ErrorDisplayComponent({
41
40
  styles,
42
41
  remoteConfigurations: { localizations },
43
42
  }: Props) {
44
- const { width, height } = useDimensions("window");
45
-
46
43
  const theme = useTheme();
47
44
  const backgroundColor = theme?.app_background_color;
48
45
 
@@ -53,7 +50,7 @@ export function ErrorDisplayComponent({
53
50
  const appStyles = R.prop(styleKeys.style_namespace, styles);
54
51
 
55
52
  return (
56
- <View style={errorStyles({ width, height, backgroundColor })}>
53
+ <View style={errorStyles({ backgroundColor })}>
57
54
  <Text style={textStyles(appStyles)}>{stream_error_message}</Text>
58
55
  </View>
59
56
  );
@@ -1,13 +1,10 @@
1
1
  import * as React from "react";
2
2
  import * as R from "ramda";
3
+ import { GeneralContentScreen } from "@applicaster/zapp-react-native-ui-components/Components/GeneralContentScreen";
3
4
 
4
5
  import { FeedLoader } from "../FeedLoader";
5
6
  import { ScreenResolver } from "../ScreenResolver";
6
7
 
7
- import type { ZappScreenProps } from "@applicaster/zapp-react-native-flow-types";
8
-
9
- import { GeneralContentScreen } from "../GeneralContentScreen";
10
-
11
8
  type Props = ZappScreenProps & {
12
9
  feedUrl?: string;
13
10
  isInsideContainer?: boolean;
@@ -18,6 +15,12 @@ type Props = ZappScreenProps & {
18
15
  | import("react-native").FlatListProps<any>
19
16
  ) &
20
17
  Record<string, any>;
18
+ appData: AppDataKeys;
19
+ screenTitle: string;
20
+ screenSummary: string;
21
+ setIsScreenWrappedInContainer: (isInsideContainer: boolean) => void;
22
+ screenContext: ZappRiver;
23
+ river: ZappRiver;
21
24
  };
22
25
 
23
26
  type State = {
@@ -27,7 +30,7 @@ type State = {
27
30
  export class RiverComponent extends React.Component<Props, State> {
28
31
  private currentScreenTitle: string;
29
32
  private currentScreenSummary: string;
30
- constructor(props) {
33
+ constructor(props: Props) {
31
34
  super(props);
32
35
 
33
36
  this.state = {
@@ -1,7 +1,7 @@
1
1
  import * as R from "ramda";
2
2
 
3
3
  import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
4
- import { useDimensions } from "@applicaster/zapp-react-native-utils/reactHooks";
4
+ import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
5
5
  import { toCamelCase } from "@applicaster/zapp-react-native-utils/stringUtils";
6
6
  import { useMemo } from "react";
7
7
  import { isNilOrEmpty } from "@applicaster/zapp-react-native-utils/reactUtils/helpers";
@@ -47,7 +47,7 @@ const stylingKeys = [
47
47
 
48
48
  export function useScreenConfiguration(screenId: string): ScreenConfiguration {
49
49
  const { rivers } = usePickFromState(["rivers"]);
50
- const { deviceInfo } = useDimensions("screen", { deviceInfo: true });
50
+ const isTablet = useIsTablet();
51
51
 
52
52
  return useMemo(() => {
53
53
  const config = {} as ScreenConfiguration;
@@ -56,8 +56,7 @@ export function useScreenConfiguration(screenId: string): ScreenConfiguration {
56
56
  if (screenData) {
57
57
  const { styles } = screenData;
58
58
 
59
- const keyPrefix =
60
- deviceInfo?.isTablet && styles?.tablet_theme ? "tablet_" : "";
59
+ const keyPrefix = isTablet && styles?.tablet_theme ? "tablet_" : "";
61
60
 
62
61
  stylingKeys.forEach(([key, castFn]) => {
63
62
  const styleKey = `${keyPrefix}${key}`;
@@ -2,8 +2,6 @@ import * as React from "react";
2
2
  import { View } from "react-native";
3
3
  import { create, act } from "react-test-renderer";
4
4
 
5
- import { ORIENTATIONS } from "@applicaster/zapp-react-native-utils/appUtils/orientationHelper";
6
-
7
5
  const Mocked_RouteManager = jest.fn((props) => (
8
6
  <View testID="routeManager" {...props} />
9
7
  ));
@@ -144,44 +142,44 @@ describe("<Screen Component />", () => {
144
142
  });
145
143
  });
146
144
 
147
- it("invokes the orientation hook when the route changes", () => {
148
- act(() => {
149
- wrapper = create(<Screen {...screenProps} />);
150
- });
151
-
152
- // @ts-ignore
153
- useCurrentScreenData.mockReturnValue({
154
- id: "player-testId",
155
- general: { screen_orientation: ORIENTATIONS.landscapeSensor },
156
- plugin_type: "player",
157
- });
158
-
159
- act(() => {
160
- wrapper.update(
161
- <Screen
162
- {...screenProps}
163
- pathname="/playable"
164
- screenData={{
165
- id: "player-testId",
166
- general: { screen_orientation: ORIENTATIONS.landscapeSensor },
167
- plugin_type: "player",
168
- }}
169
- />
170
- );
171
- });
172
-
173
- useCurrentScreenData.mockReturnValue({
174
- id: "player-testId",
175
- general: { screen_orientation: ORIENTATIONS.landscapeSensor },
176
- });
177
-
178
- act(() => {
179
- wrapper.update(<Screen {...screenProps} />);
180
- });
181
-
182
- expect(allowedOrientationsForScreen).toHaveBeenNthCalledWith(
183
- 1,
184
- ORIENTATIONS.landscapeSensor
185
- );
186
- });
145
+ // it("invokes the orientation hook when the route changes", () => {
146
+ // act(() => {
147
+ // wrapper = create(<Screen {...screenProps} />);
148
+ // });
149
+
150
+ // // @ts-ignore
151
+ // useCurrentScreenData.mockReturnValue({
152
+ // id: "player-testId",
153
+ // general: { screen_orientation: ORIENTATIONS.landscapeSensor },
154
+ // plugin_type: "player",
155
+ // });
156
+
157
+ // act(() => {
158
+ // wrapper.update(
159
+ // <Screen
160
+ // {...screenProps}
161
+ // pathname="/playable"
162
+ // screenData={{
163
+ // id: "player-testId",
164
+ // general: { screen_orientation: ORIENTATIONS.landscapeSensor },
165
+ // plugin_type: "player",
166
+ // }}
167
+ // />
168
+ // );
169
+ // });
170
+
171
+ // useCurrentScreenData.mockReturnValue({
172
+ // id: "player-testId",
173
+ // general: { screen_orientation: ORIENTATIONS.landscapeSensor },
174
+ // });
175
+
176
+ // act(() => {
177
+ // wrapper.update(<Screen {...screenProps} />);
178
+ // });
179
+
180
+ // expect(allowedOrientationsForScreen).toHaveBeenNthCalledWith(
181
+ // 1,
182
+ // ORIENTATIONS.landscapeSensor
183
+ // );
184
+ // });
187
185
  });
@@ -7,7 +7,6 @@ import { useTheme } from "@applicaster/zapp-react-native-utils/theme";
7
7
  import { useScreenOrientationHandler } from "./orientationHandler";
8
8
  import { useScreenConfiguration } from "../River/useScreenConfiguration";
9
9
  import { useCurrentScreenData } from "@applicaster/zapp-react-native-utils/reactHooks/screen";
10
- import type { ZappNavigationProps } from "@applicaster/zapp-react-native-flow-types/index";
11
10
  import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
12
11
  import { ScreenContextProvider } from "../../Contexts/ScreenContext";
13
12
 
@@ -8,7 +8,7 @@ import {
8
8
 
9
9
  import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
10
10
  import { findPluginByType } from "@applicaster/zapp-react-native-utils/pluginUtils";
11
- import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks/device/useIsTablet";
11
+ import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
12
12
  import { ZappHookModalContext } from "../../Contexts";
13
13
  import { HookModalContextT } from "../../Contexts/ZappHookModalContext";
14
14
 
@@ -379,7 +379,9 @@ export class LiveImageManager implements PlayerLifecycleListener {
379
379
  onLiveImageError = (item: LiveImage, error: Error) => {
380
380
  item.setMode(LiveImageType.Image);
381
381
 
382
- if (this.currentlyPlaying === item) {
382
+ const currentItem = this.currentlyPlaying;
383
+
384
+ if (currentItem === item) {
383
385
  this.currentlyPlaying = null;
384
386
  // TODO: ...Maybe player some other item
385
387
  }
@@ -389,8 +391,8 @@ export class LiveImageManager implements PlayerLifecycleListener {
389
391
  event: {
390
392
  item,
391
393
  error,
392
- playerId: this.currentlyPlaying?.playerId,
393
- primaryPlayerId: this.primaryPlayer?.playerId,
394
+ playerId: currentItem?.playerId,
395
+ primaryPlayerId: currentItem?.playerId,
394
396
  },
395
397
  });
396
398
  };
@@ -1,18 +1,24 @@
1
1
  import * as React from "react";
2
- import { Platform, StyleSheet, View, ViewStyle } from "react-native";
2
+ import {
3
+ Dimensions,
4
+ Platform,
5
+ StyleSheet,
6
+ View,
7
+ ViewStyle,
8
+ } from "react-native";
3
9
  import { Edge, SafeAreaView } from "react-native-safe-area-context";
4
10
 
5
11
  import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
6
- import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks/device";
12
+ import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
7
13
  import { PlayerDetails } from "./PlayerDetails";
8
14
  import { playerDimesionsHack } from "./utils";
9
15
  import { PathnameContext } from "../../Contexts/PathnameContext";
10
- import { useDimensions } from "@applicaster/zapp-react-native-utils/reactHooks";
11
16
  import { ScreenContextProvider } from "../../Contexts/ScreenContext";
12
17
 
13
- type Dimensions = {
14
- width: number;
15
- height: number;
18
+ type DimensionsT = {
19
+ width: number | string;
20
+ height: number | string;
21
+ aspectRatio?: number;
16
22
  };
17
23
 
18
24
  type Configuration = {
@@ -23,25 +29,21 @@ type Configuration = {
23
29
 
24
30
  type Props = {
25
31
  entry: ZappEntry;
26
- style: ViewStyle & Dimensions;
32
+ style: ViewStyle & DimensionsT;
27
33
  containerStyle?: ViewStyle;
28
34
  inline?: boolean;
29
35
  docked?: boolean;
36
+ pip?: boolean;
30
37
  isModal?: boolean;
31
38
  fullscreen?: boolean;
32
39
  isTabletPortrait?: boolean;
33
- children: (playerDimensions: Dimensions) => React.ReactNode;
40
+ children: (playerDimensions: DimensionsT) => React.ReactNode;
34
41
  configuration: Configuration;
35
42
  };
36
43
 
37
44
  const defaultStyles = StyleSheet.create({
38
45
  playerContainer: { position: "relative", alignSelf: "center", zIndex: 200 },
39
46
  playerDetails: { flex: 1, paddingTop: 20 },
40
- inlinePlayerContainerDimensions: {
41
- aspectRatio: 16 / 9,
42
- width: "100%",
43
- height: undefined,
44
- },
45
47
  });
46
48
 
47
49
  const orientationStyles = StyleSheet.create({
@@ -57,6 +59,15 @@ const directionStyles = (isTabletLandscape: boolean): ViewStyle => {
57
59
  return orientationStyles.portrait;
58
60
  };
59
61
 
62
+ const getScreenAspectRatio = () => {
63
+ const { width, height } = Dimensions.get("screen");
64
+
65
+ const longEdge = Math.max(width, height);
66
+ const shortEdge = Math.min(width, height);
67
+
68
+ return longEdge / shortEdge;
69
+ };
70
+
60
71
  const safeAreaStyles = (
61
72
  configuration: Configuration,
62
73
  isTablet: boolean
@@ -71,34 +82,6 @@ const safeAreaStyles = (
71
82
  };
72
83
  };
73
84
 
74
- const getTabletWidth = (
75
- configuration: Configuration,
76
- dimensions: Dimensions
77
- ) => {
78
- const tablet_landscape_sidebar_width =
79
- configuration?.tablet_landscape_sidebar_width;
80
-
81
- const { width } = dimensions;
82
-
83
- const sidebarWidth = Number(tablet_landscape_sidebar_width?.replace("%", ""));
84
-
85
- if (tablet_landscape_sidebar_width?.includes("%")) {
86
- return width * (1 - sidebarWidth / 100);
87
- }
88
-
89
- if (Number.isNaN(sidebarWidth)) {
90
- return width * 0.65;
91
- }
92
-
93
- return width - sidebarWidth;
94
- };
95
-
96
- export const defaultAspectRatioHeight = (width: number): number =>
97
- (width / 16) * 9;
98
-
99
- export const defaultAspectRatioWidth = (height: number): number =>
100
- (height / 9) * 16;
101
-
102
85
  const getEdges = (
103
86
  isTablet: boolean,
104
87
  docked: boolean,
@@ -120,6 +103,28 @@ const getEdges = (
120
103
  return ["top"];
121
104
  };
122
105
 
106
+ const getTabletWidth = (
107
+ configuration: Configuration,
108
+ dimensions: DimensionsT
109
+ ) => {
110
+ const tablet_landscape_sidebar_width =
111
+ configuration?.tablet_landscape_sidebar_width;
112
+
113
+ const { width } = dimensions;
114
+
115
+ const sidebarWidth = Number(tablet_landscape_sidebar_width?.replace("%", ""));
116
+
117
+ if (tablet_landscape_sidebar_width?.includes("%")) {
118
+ return Number(width) * (1 - sidebarWidth / 100);
119
+ }
120
+
121
+ if (Number.isNaN(sidebarWidth)) {
122
+ return Number(width) * 0.65;
123
+ }
124
+
125
+ return Number(width) - sidebarWidth;
126
+ };
127
+
123
128
  export const PlayerWrapper = (props: Props) => {
124
129
  const {
125
130
  entry,
@@ -131,6 +136,7 @@ export const PlayerWrapper = (props: Props) => {
131
136
  children,
132
137
  isTabletPortrait,
133
138
  configuration,
139
+ pip,
134
140
  } = props;
135
141
 
136
142
  const isTablet = useIsTablet();
@@ -141,40 +147,38 @@ export const PlayerWrapper = (props: Props) => {
141
147
 
142
148
  const tabletWidth = getTabletWidth(configuration, style);
143
149
 
144
- const { width: screenWidth } = useDimensions("screen");
145
-
146
- const containerDimensions: Dimensions = React.useMemo(
150
+ const baseDimensions: DimensionsT = React.useMemo(
147
151
  () => ({
148
152
  width:
149
- isInlineModal && !docked && isTabletLandscape
150
- ? tabletWidth
151
- : style.width,
152
- height:
153
- isInlineModal && !docked
154
- ? defaultAspectRatioHeight(
155
- isTabletLandscape ? tabletWidth : screenWidth
156
- )
157
- : style.height,
153
+ isInlineModal && !docked && isTabletLandscape ? tabletWidth : "100%",
154
+ height: isInlineModal && docked ? style.height : undefined,
158
155
  }),
159
- [isInlineModal, docked, isTabletLandscape, tabletWidth, style, screenWidth]
156
+ [isInlineModal, tabletWidth, style.height, docked]
160
157
  );
161
158
 
162
- const playerDimensions: Dimensions = React.useMemo(
159
+ const playerDimensions: DimensionsT = React.useMemo(
163
160
  () => ({
164
- width:
165
- isInlineModal && docked
166
- ? defaultAspectRatioWidth(containerDimensions.height)
167
- : containerDimensions.width,
168
- height: containerDimensions.height,
161
+ ...baseDimensions,
162
+ width: isInlineModal && docked ? undefined : baseDimensions.width,
163
+ aspectRatio: !isInlineModal && !pip ? getScreenAspectRatio() : 16 / 9,
164
+ }),
165
+ [baseDimensions, isInlineModal]
166
+ );
167
+
168
+ const containerDimensions: DimensionsT = React.useMemo(
169
+ () => ({
170
+ ...baseDimensions,
171
+ aspectRatio:
172
+ isInlineModal && docked ? undefined : playerDimensions.aspectRatio,
169
173
  }),
170
- [isInlineModal, docked, containerDimensions]
174
+ [baseDimensions, isInlineModal, docked, playerDimensions.aspectRatio]
171
175
  );
172
176
 
173
177
  const WrapperView = React.useMemo(() => (isTV() ? View : SafeAreaView), []);
174
178
 
175
179
  const childrenStyles = React.useMemo(
176
180
  () => ({ ...playerDimensions, ...playerDimesionsHack }),
177
- [playerDimensions, playerDimesionsHack]
181
+ [containerDimensions, playerDimesionsHack]
178
182
  );
179
183
 
180
184
  return (
@@ -195,9 +199,6 @@ export const PlayerWrapper = (props: Props) => {
195
199
  defaultStyles.playerContainer,
196
200
  containerDimensions,
197
201
  containerStyle,
198
- isInlineModal && !docked && !isTabletLandscape
199
- ? defaultStyles.inlinePlayerContainerDimensions
200
- : {},
201
202
  playerDimesionsHack,
202
203
  ]}
203
204
  >
@@ -50,7 +50,7 @@ jest.mock("@applicaster/zapp-react-native-utils/reactHooks/navigation", () => ({
50
50
 
51
51
  jest.mock("../utils", () => ({ playerDimesionsHack: {} }));
52
52
 
53
- const { PlayerWrapper, defaultAspectRatioWidth } = require("../PlayerWrapper");
53
+ const { PlayerWrapper } = require("../PlayerWrapper");
54
54
 
55
55
  jest.useFakeTimers();
56
56
  const children = jest.fn(() => {});
@@ -110,7 +110,8 @@ describe("PlayerWrapper", () => {
110
110
 
111
111
  const expectDimensions = {
112
112
  ...dimensions,
113
- width: defaultAspectRatioWidth(dimensions.height),
113
+ width: undefined,
114
+ aspectRatio: 16 / 9,
114
115
  };
115
116
 
116
117
  expect(element).toMatchSnapshot();
@@ -34,17 +34,13 @@ exports[`PlayerWrapper renders inline 1`] = `
34
34
  "position": "relative",
35
35
  "zIndex": 200,
36
36
  },
37
- Object {
38
- "height": 421.875,
39
- "width": 300,
40
- },
41
- Object {},
42
37
  Object {
43
38
  "aspectRatio": 1.7777777777777777,
44
39
  "height": undefined,
45
40
  "width": "100%",
46
41
  },
47
42
  Object {},
43
+ Object {},
48
44
  ]
49
45
  }
50
46
  testID="test-player-container"
@@ -107,12 +103,12 @@ exports[`PlayerWrapper renders inline and docked 1`] = `
107
103
  "zIndex": 200,
108
104
  },
109
105
  Object {
106
+ "aspectRatio": undefined,
110
107
  "height": 50,
111
- "width": 300,
108
+ "width": "100%",
112
109
  },
113
110
  Object {},
114
111
  Object {},
115
- Object {},
116
112
  ]
117
113
  }
118
114
  testID="test-player-container"
@@ -163,12 +159,12 @@ exports[`PlayerWrapper renders inline on tablet in landscape orientation 1`] = `
163
159
  "zIndex": 200,
164
160
  },
165
161
  Object {
166
- "height": 109.6875,
162
+ "aspectRatio": 1.7777777777777777,
163
+ "height": undefined,
167
164
  "width": 195,
168
165
  },
169
166
  Object {},
170
167
  Object {},
171
- Object {},
172
168
  ]
173
169
  }
174
170
  testID="test-player-container"
@@ -231,12 +227,12 @@ exports[`PlayerWrapper renders properly 1`] = `
231
227
  "zIndex": 200,
232
228
  },
233
229
  Object {
234
- "height": 800,
235
- "width": 300,
230
+ "aspectRatio": 1.7786666666666666,
231
+ "height": undefined,
232
+ "width": "100%",
236
233
  },
237
234
  Object {},
238
235
  Object {},
239
- Object {},
240
236
  ]
241
237
  }
242
238
  testID="test-player-container"
@@ -1,4 +1,4 @@
1
- import React from "react";
1
+ import * as React from "react";
2
2
  import { Dimensions } from "react-native";
3
3
  import { useIsTabletLandscape } from "@applicaster/zapp-react-native-utils/reactHooks/device/useMemoizedIsTablet";
4
4
  import {
@@ -39,13 +39,22 @@ export const useModalSize = (): Size => {
39
39
  MODAL_SIZE_FOR_PORTRAIT
40
40
  );
41
41
 
42
- const setNewModalSize = (size, log) => {
43
- setModalSize(size);
42
+ const setNewModalSize = React.useCallback((newSize, log) => {
43
+ setModalSize((oldSize) => {
44
+ if (
45
+ oldSize.height === newSize.height &&
46
+ oldSize.width === newSize.width
47
+ ) {
48
+ return oldSize;
49
+ }
50
+
51
+ return newSize;
52
+ });
44
53
 
45
54
  logger.debug({
46
55
  message: log,
47
56
  });
48
- };
57
+ }, []);
49
58
 
50
59
  const isTabletLandscape = useIsTabletLandscape();
51
60
 
@@ -1,9 +1,5 @@
1
1
  import * as React from "react";
2
2
 
3
- import type {
4
- ZappComponent,
5
- ZappRivers,
6
- } from "@applicaster/zapp-react-native-flow-types";
7
3
  import { usePickFromState } from "@applicaster/zapp-react-native-redux/hooks";
8
4
  import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
9
5
  import { usePathname } from "@applicaster/zapp-react-native-utils/reactHooks/navigation";
@@ -1,9 +1,5 @@
1
1
  import { zappPipesDataConnector } from "./ZappPipesDataConnector";
2
2
  import * as R from "ramda";
3
- import type {
4
- ZappComponent,
5
- ZappDecorator,
6
- } from "@applicaster/zapp-react-native-flow-types";
7
3
 
8
4
  import { withNavigator } from "./Navigator";
9
5
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@applicaster/zapp-react-native-ui-components",
3
- "version": "12.0.0-alpha.4534459584",
3
+ "version": "12.0.0-alpha.5114122134",
4
4
  "description": "Applicaster Zapp React Native ui components for the Quick Brick App",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
@@ -29,16 +29,15 @@
29
29
  },
30
30
  "homepage": "https://github.com/applicaster/quickbrick#readme",
31
31
  "devDependencies": {
32
- "@applicaster/zapp-react-native-flow-types": "1.5.0",
33
32
  "@types/react": "17.0.2",
34
33
  "@types/react-native": "0.69.6",
35
34
  "redux-mock-store": "^1.5.3"
36
35
  },
37
36
  "dependencies": {
38
- "@applicaster/applicaster-types": "12.0.0-alpha.4534459584",
39
- "@applicaster/zapp-react-native-bridge": "12.0.0-alpha.4534459584",
40
- "@applicaster/zapp-react-native-redux": "12.0.0-alpha.4534459584",
41
- "@applicaster/zapp-react-native-utils": "12.0.0-alpha.4534459584",
37
+ "@applicaster/applicaster-types": "12.0.0-alpha.5114122134",
38
+ "@applicaster/zapp-react-native-bridge": "12.0.0-alpha.5114122134",
39
+ "@applicaster/zapp-react-native-redux": "12.0.0-alpha.5114122134",
40
+ "@applicaster/zapp-react-native-utils": "12.0.0-alpha.5114122134",
42
41
  "promise": "^8.3.0",
43
42
  "react-router-native": "^5.1.2",
44
43
  "url": "^0.11.0",