@applicaster/zapp-react-native-ui-components 12.0.0-alpha.5923342081 → 12.0.0-alpha.5933014273

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.
@@ -363,19 +363,11 @@ const PlayerContainerComponent = (props: Props) => {
363
363
  const { fullscreen = false } = event || {};
364
364
 
365
365
  if (fullscreen) {
366
- // in order to avoid UI glitches with player we have to start re-render ealier and then start real rotation
366
+ playerEvent("onFullscreenPlayerWillPresent");
367
367
  navigator.fullscreenVideoModal();
368
-
369
- setTimeout(() => {
370
- playerEvent("onFullscreenPlayerWillPresent");
371
- });
372
368
  } else {
373
- // in order to avoid UI glitches with player we have to start re-render ealier and then start real rotation
369
+ playerEvent("onFullscreenPlayerWillDismiss");
374
370
  navigator.maximiseVideoModal();
375
-
376
- setTimeout(() => {
377
- playerEvent("onFullscreenPlayerWillDismiss");
378
- });
379
371
  }
380
372
  };
381
373
 
@@ -527,7 +519,7 @@ const PlayerContainerComponent = (props: Props) => {
527
519
  }
528
520
 
529
521
  return () => {
530
- playerEvent("player_did_close", { item });
522
+ playerEvent("player_did_close");
531
523
 
532
524
  if (!isModal) {
533
525
  showNavBar(true);
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  import { View } from "react-native";
3
- import { update, compose, tail, append, take, identity, isNil } from "ramda";
3
+ import { update, compose, tail, append, take, identity } from "ramda";
4
4
 
5
5
  import { AnimationManager } from "./AnimationManager";
6
6
  import { Scene } from "./Scene";
@@ -50,10 +50,6 @@ function scenesForBackTransition(props: SceneProps, { scenes }) {
50
50
  : [prepareScene(props.children), scenes[0]];
51
51
  }
52
52
 
53
- const isModalClosed = (navigator) => {
54
- return !!isNil(navigator?.modalData);
55
- };
56
-
57
53
  type Props = {
58
54
  transitionConfig: any;
59
55
  children: React.ReactNode;
@@ -317,10 +313,7 @@ export class TransitionerComponent extends React.PureComponent<Props, State> {
317
313
  <Scene
318
314
  key={scenes[from.index].key}
319
315
  pathname={scenes[from.index].key}
320
- isActive={
321
- scenes[from.index].key === this.props.navigator.currentRoute &&
322
- isModalClosed(this.props.navigator)
323
- }
316
+ isActive={scenes[from.index].key === this.props.navigator.currentRoute}
324
317
  style={from.style}
325
318
  pointerEvents="none"
326
319
  overlayStyle={from.overlayStyle}
@@ -336,10 +329,7 @@ export class TransitionerComponent extends React.PureComponent<Props, State> {
336
329
  const toScene = scenes[to.index] && (
337
330
  <Scene
338
331
  pathname={scenes[to.index].key}
339
- isActive={
340
- scenes[to.index].key === this.props.navigator.currentRoute &&
341
- isModalClosed(this.props.navigator)
342
- }
332
+ isActive={scenes[to.index].key === this.props.navigator.currentRoute}
343
333
  key={scenes[to.index].key}
344
334
  style={to.style}
345
335
  overlayStyle={to.overlayStyle}
@@ -1,17 +1,9 @@
1
1
  import React, { useEffect, useRef } from "react";
2
- import {
3
- StyleProp,
4
- ViewStyle,
5
- Animated,
6
- Easing,
7
- Dimensions,
8
- } from "react-native";
2
+ import { StyleProp, ViewStyle, Animated, Easing } from "react-native";
9
3
  import { useTargetScreenData } from "@applicaster/zapp-react-native-utils/reactHooks/screen";
10
4
  import { ComponentsMap } from "@applicaster/zapp-react-native-ui-components/Components/River/ComponentsMap";
11
5
  import { useSafeAreaInsets } from "react-native-safe-area-context";
12
6
 
13
- const { width: SCREEN_WIDTH } = Dimensions.get("screen");
14
-
15
7
  type Configuration = {
16
8
  [key: string]: any;
17
9
  modal_background_color?: string;
@@ -23,7 +15,6 @@ type Props = {
23
15
  configuration: Configuration;
24
16
  isTabletLandscape: boolean;
25
17
  isAudioPlayer?: boolean;
26
- isTablet: boolean;
27
18
  };
28
19
 
29
20
  const containerStyle = ({
@@ -40,7 +31,6 @@ export const PlayerDetails = ({
40
31
  configuration,
41
32
  isTabletLandscape,
42
33
  isAudioPlayer,
43
- isTablet,
44
34
  }: Props) => {
45
35
  const screenData = useTargetScreenData(entry);
46
36
  const insets = useSafeAreaInsets();
@@ -87,11 +77,7 @@ export const PlayerDetails = ({
87
77
  transform: [{ translateY }],
88
78
  opacity,
89
79
  },
90
- {
91
- // workaround for avoid wrong text-height after going back to portrait rotation
92
- // we don't see this view in landscape mode, so we are able to use fixed width from portrait mode
93
- width: isTablet ? undefined : SCREEN_WIDTH,
94
- },
80
+ // isAudioPlayer && audioMarginStyle,
95
81
  ]}
96
82
  >
97
83
  {screenData && (
@@ -7,6 +7,7 @@ import {
7
7
  ViewStyle,
8
8
  } from "react-native";
9
9
  import { Edge, SafeAreaView } from "react-native-safe-area-context";
10
+
10
11
  import { isTV } from "@applicaster/zapp-react-native-utils/reactUtils";
11
12
  import { useIsTablet } from "@applicaster/zapp-react-native-utils/reactHooks";
12
13
  import { PlayerDetails } from "./PlayerDetails";
@@ -22,8 +23,6 @@ import {
22
23
  ComponentAnimationType,
23
24
  } from "@applicaster/zapp-react-native-ui-components/Components/VideoModal/ModalAnimation";
24
25
 
25
- const { width: SCREEN_WIDTH, height: SCREEN_HEIGHT } = Dimensions.get("screen");
26
-
27
26
  type DimensionsT = {
28
27
  width: number | string;
29
28
  height: number | string | undefined;
@@ -70,8 +69,10 @@ const directionStyles = (isTabletLandscape: boolean): ViewStyle => {
70
69
  };
71
70
 
72
71
  const getScreenAspectRatio = () => {
73
- const longEdge = Math.max(SCREEN_WIDTH, SCREEN_HEIGHT);
74
- const shortEdge = Math.min(SCREEN_WIDTH, SCREEN_HEIGHT);
72
+ const { width, height } = Dimensions.get("screen");
73
+
74
+ const longEdge = Math.max(width, height);
75
+ const shortEdge = Math.min(width, height);
75
76
 
76
77
  return longEdge / shortEdge;
77
78
  };
@@ -124,37 +125,10 @@ const getTabletWidth = (
124
125
  return Number(width) - sidebarWidth;
125
126
  };
126
127
 
127
- const getStyles = (baseStyle, isMobile, isPortrait) => {
128
- if (isMobile && isPortrait) {
129
- return { width: SCREEN_WIDTH, height: SCREEN_HEIGHT };
130
- }
131
-
132
- if (isMobile && !isPortrait) {
133
- return { width: SCREEN_HEIGHT, height: SCREEN_WIDTH };
134
- }
135
-
136
- return baseStyle;
137
- };
138
-
139
- const showDetails = (isMobile: boolean, docked: boolean): boolean => {
140
- // for mobile we always show details. Mounting of it very heavy operation.
141
- if (isMobile) {
142
- return true;
143
- }
144
-
145
- // workaround for tablets we need to mount/unmount in order to avoid PlayerDetails content dissappearing
146
- // FIXME - find out the reason of dissapearing of content
147
- if (docked) {
148
- return false;
149
- }
150
-
151
- return true;
152
- };
153
-
154
- const PlayerWrapperComponent = (props: Props) => {
128
+ export const PlayerWrapper = (props: Props) => {
155
129
  const {
156
130
  entry,
157
- style: baseStyle,
131
+ style,
158
132
  containerStyle,
159
133
  inline,
160
134
  docked,
@@ -169,8 +143,6 @@ const PlayerWrapperComponent = (props: Props) => {
169
143
 
170
144
  const isInlineModal = inline && isModal;
171
145
 
172
- const style = getStyles(baseStyle, !isTablet, isInlineModal);
173
-
174
146
  const isTabletLandscape = !isTV() && isTablet && !isTabletPortrait;
175
147
 
176
148
  const tabletWidth = getTabletWidth(configuration, style);
@@ -252,9 +224,8 @@ const PlayerWrapperComponent = (props: Props) => {
252
224
  </AnimatedVideoPlayerComponent>
253
225
  </AnimationComponent>
254
226
  </View>
255
-
256
227
  <AnimatedScrollModal>
257
- {showDetails(!isTablet, docked) && (
228
+ {isInlineModal && !docked ? (
258
229
  <AnimationComponent
259
230
  animationType={ComponentAnimationType.componentFade}
260
231
  style={defaultStyles.flex}
@@ -264,9 +235,10 @@ const PlayerWrapperComponent = (props: Props) => {
264
235
  style={defaultStyles.playerDetails}
265
236
  entry={entry}
266
237
  isTabletLandscape={isTabletLandscape}
267
- isTablet={isTablet}
268
238
  />
269
239
  </AnimationComponent>
240
+ ) : (
241
+ <View style={defaultStyles.playerDetails} />
270
242
  )}
271
243
  </AnimatedScrollModal>
272
244
  </ScreenContextProvider>
@@ -277,5 +249,3 @@ const PlayerWrapperComponent = (props: Props) => {
277
249
  </PathnameContext.Provider>
278
250
  );
279
251
  };
280
-
281
- export const PlayerWrapper = PlayerWrapperComponent;
@@ -1,6 +1,6 @@
1
1
  import React from "react";
2
2
  import * as R from "ramda";
3
- import { StyleSheet, View, StatusBar } from "react-native";
3
+ import { StyleSheet, View } from "react-native";
4
4
 
5
5
  import { HandlePlayable } from "@applicaster/zapp-react-native-ui-components/Components/HandlePlayable";
6
6
  import {
@@ -129,38 +129,32 @@ const VideoModalComponent = () => {
129
129
  const pathname = `${ROUTE_TYPES.VIDEO_MODAL}/${item?.id}`;
130
130
 
131
131
  return (
132
- <>
133
- {/* TODO: Workaround to avoid unnecessary UI effect when switching from portrait to fullscreen */}
134
- <StatusBar hidden={false} />
135
- {/* TODO: Workaround to avoid unnecessary UI effect when switching from portrait to fullscreen */}
136
-
137
- <PathnameContext.Provider value={pathname}>
138
- <ScreenContextProvider pathname={pathname}>
139
- {itemIdHooksFinished === item?.id ? (
140
- <AnimatedPlayerModalWrapper
141
- style={[
142
- styles.container,
143
- {
144
- backgroundColor,
145
- },
146
- ]}
147
- >
148
- <HandlePlayable
149
- item={item}
150
- isModal={mode !== "PIP"}
151
- modalHeight={modalSize.height}
152
- modalWidth={modalSize.width}
153
- mode={mode}
154
- />
155
- </AnimatedPlayerModalWrapper>
156
- ) : (
157
- <View style={styles.loaderContainer}>
158
- <Spinner />
159
- </View>
160
- )}
161
- </ScreenContextProvider>
162
- </PathnameContext.Provider>
163
- </>
132
+ <PathnameContext.Provider value={pathname}>
133
+ <ScreenContextProvider pathname={pathname}>
134
+ {itemIdHooksFinished === item?.id ? (
135
+ <AnimatedPlayerModalWrapper
136
+ style={[
137
+ styles.container,
138
+ {
139
+ backgroundColor,
140
+ },
141
+ ]}
142
+ >
143
+ <HandlePlayable
144
+ item={item}
145
+ isModal={mode !== "PIP"}
146
+ modalHeight={modalSize.height}
147
+ modalWidth={modalSize.width}
148
+ mode={mode}
149
+ />
150
+ </AnimatedPlayerModalWrapper>
151
+ ) : (
152
+ <View style={styles.loaderContainer}>
153
+ <Spinner />
154
+ </View>
155
+ )}
156
+ </ScreenContextProvider>
157
+ </PathnameContext.Provider>
164
158
  );
165
159
  };
166
160
 
@@ -8,13 +8,6 @@ const props = {
8
8
  configuration: { modal_background_color: "transparent" },
9
9
  };
10
10
 
11
- jest.mock("@applicaster/zapp-react-native-utils/reactHooks/layout", () => ({
12
- useDimensions: jest.fn(() => ({
13
- width: 20,
14
- height: 30,
15
- })),
16
- }));
17
-
18
11
  jest.mock("react-native-safe-area-context", () => ({
19
12
  useSafeAreaInsets: jest.fn(() => ({
20
13
  top: 20,
@@ -9,7 +9,6 @@ exports[`PlayerDetails renders properly 1`] = `
9
9
  "flex": 1,
10
10
  "marginTop": -8,
11
11
  "paddingTop": -8,
12
- "width": 750,
13
12
  }
14
13
  }
15
14
  >
@@ -30,7 +29,6 @@ exports[`PlayerDetails renders properly on tablet in landscape orientation 1`] =
30
29
  "flex": 1,
31
30
  "marginTop": -20,
32
31
  "paddingTop": 40,
33
- "width": 750,
34
32
  }
35
33
  }
36
34
  >
@@ -27,8 +27,8 @@ exports[`PlayerWrapper renders inline 1`] = `
27
27
  "backgroundColor": "transparent",
28
28
  },
29
29
  Object {
30
- "height": 1334,
31
- "width": 750,
30
+ "height": 800,
31
+ "width": 300,
32
32
  },
33
33
  Object {},
34
34
  ]
@@ -91,7 +91,6 @@ exports[`PlayerWrapper renders inline 1`] = `
91
91
  "id": "test",
92
92
  }
93
93
  }
94
- isTablet={false}
95
94
  isTabletLandscape={false}
96
95
  style={
97
96
  Object {
@@ -133,8 +132,8 @@ exports[`PlayerWrapper renders inline and docked 1`] = `
133
132
  "backgroundColor": "transparent",
134
133
  },
135
134
  Object {
136
- "height": 1334,
137
- "width": 750,
135
+ "height": undefined,
136
+ "width": 300,
138
137
  },
139
138
  Object {},
140
139
  ]
@@ -178,35 +177,13 @@ exports[`PlayerWrapper renders inline and docked 1`] = `
178
177
  testID="test-player-container"
179
178
  />
180
179
  <View
181
- animationType="componentFade"
182
180
  style={
183
181
  Object {
184
182
  "flex": 1,
183
+ "paddingTop": 20,
185
184
  }
186
185
  }
187
- >
188
- <View
189
- configuration={
190
- Object {
191
- "tablet_landscape_player_container_background_color": "red",
192
- "tablet_landscape_sidebar_width": "35%",
193
- }
194
- }
195
- entry={
196
- Object {
197
- "id": "test",
198
- }
199
- }
200
- isTablet={false}
201
- isTabletLandscape={false}
202
- style={
203
- Object {
204
- "flex": 1,
205
- "paddingTop": 20,
206
- }
207
- }
208
- />
209
- </View>
186
+ />
210
187
  </View>
211
188
  </RNCSafeAreaView>
212
189
  </RNCSafeAreaProvider>
@@ -319,7 +296,6 @@ exports[`PlayerWrapper renders inline on tablet in landscape orientation 1`] = `
319
296
  "id": "test",
320
297
  }
321
298
  }
322
- isTablet={true}
323
299
  isTabletLandscape={true}
324
300
  style={
325
301
  Object {
@@ -361,8 +337,8 @@ exports[`PlayerWrapper renders properly 1`] = `
361
337
  "backgroundColor": "transparent",
362
338
  },
363
339
  Object {
364
- "height": 750,
365
- "width": 1334,
340
+ "height": 800,
341
+ "width": 300,
366
342
  },
367
343
  Object {},
368
344
  ]
@@ -406,35 +382,13 @@ exports[`PlayerWrapper renders properly 1`] = `
406
382
  testID="test-player-container"
407
383
  />
408
384
  <View
409
- animationType="componentFade"
410
385
  style={
411
386
  Object {
412
387
  "flex": 1,
388
+ "paddingTop": 20,
413
389
  }
414
390
  }
415
- >
416
- <View
417
- configuration={
418
- Object {
419
- "tablet_landscape_player_container_background_color": "red",
420
- "tablet_landscape_sidebar_width": "35%",
421
- }
422
- }
423
- entry={
424
- Object {
425
- "id": "test",
426
- }
427
- }
428
- isTablet={false}
429
- isTabletLandscape={false}
430
- style={
431
- Object {
432
- "flex": 1,
433
- "paddingTop": 20,
434
- }
435
- }
436
- />
437
- </View>
391
+ />
438
392
  </View>
439
393
  </RNCSafeAreaView>
440
394
  </RNCSafeAreaProvider>
@@ -2,7 +2,7 @@ import { createStore } from "zustand/vanilla";
2
2
  import { useStore } from "zustand";
3
3
  import { noop } from "@applicaster/zapp-react-native-utils/functionUtils";
4
4
 
5
- export interface ConfirmationDialogState {
5
+ interface ConfirmationDialogState {
6
6
  isDialogVisible: boolean;
7
7
  messages: string;
8
8
  confirmAction: () => void;
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.5923342081",
3
+ "version": "12.0.0-alpha.5933014273",
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",
@@ -34,10 +34,10 @@
34
34
  "redux-mock-store": "^1.5.3"
35
35
  },
36
36
  "dependencies": {
37
- "@applicaster/applicaster-types": "12.0.0-alpha.5923342081",
38
- "@applicaster/zapp-react-native-bridge": "12.0.0-alpha.5923342081",
39
- "@applicaster/zapp-react-native-redux": "12.0.0-alpha.5923342081",
40
- "@applicaster/zapp-react-native-utils": "12.0.0-alpha.5923342081",
37
+ "@applicaster/applicaster-types": "12.0.0-alpha.5933014273",
38
+ "@applicaster/zapp-react-native-bridge": "12.0.0-alpha.5933014273",
39
+ "@applicaster/zapp-react-native-redux": "12.0.0-alpha.5933014273",
40
+ "@applicaster/zapp-react-native-utils": "12.0.0-alpha.5933014273",
41
41
  "promise": "^8.3.0",
42
42
  "react-router-native": "^5.1.2",
43
43
  "url": "^0.11.0",