@applicaster/zapp-react-native-ui-components 12.0.0-alpha.7623722215 → 12.0.0-alpha.7754333813

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.
Files changed (35) hide show
  1. package/Components/GeneralContentScreen/utils/__tests__/useCurationAPI.test.js +13 -6
  2. package/Components/GeneralContentScreen/utils/useCurationAPI.ts +1 -1
  3. package/Components/MasterCell/DefaultComponents/ActionButton.tsx +2 -0
  4. package/Components/MasterCell/DefaultComponents/BorderContainerView/index.tsx +105 -80
  5. package/Components/MasterCell/DefaultComponents/Image/Image.ios.tsx +5 -3
  6. package/Components/MasterCell/DefaultComponents/ImageContainer/index.tsx +5 -1
  7. package/Components/MasterCell/DefaultComponents/Text/index.tsx +14 -2
  8. package/Components/MasterCell/DefaultComponents/__tests__/image.test.js +1 -1
  9. package/Components/MasterCell/DefaultComponents/__tests__/text.test.tsx +24 -9
  10. package/Components/MasterCell/SharedUI/CollapsibleTextContainer/index.ts +1 -3
  11. package/Components/MasterCell/hooks/useAsyncRendering/index.ts +1 -1
  12. package/Components/MeasurmentsPortal/BasicMeasurementsPortal.tsx +11 -7
  13. package/Components/MeasurmentsPortal/MeasurementsPortal.tsx +10 -1
  14. package/Components/PlayerContainer/PlayerContainer.tsx +9 -5
  15. package/Components/River/ComponentsMap/ComponentsMap.tsx +86 -22
  16. package/Components/River/RefreshControl.tsx +55 -1
  17. package/Components/River/TV/River.tsx +2 -1
  18. package/Components/Screen/__tests__/__snapshots__/Screen.test.tsx.snap +4 -0
  19. package/Components/Screen/index.tsx +35 -24
  20. package/Components/VideoLive/__tests__/__snapshots__/PlayerLiveImageComponent.test.tsx.snap +0 -5
  21. package/Components/VideoModal/ModalAnimation/AnimatedScrollModal.tsx +11 -4
  22. package/Components/VideoModal/ModalAnimation/AnimatedVideoPlayerComponent.tsx +9 -2
  23. package/Components/VideoModal/ModalAnimation/ModalAnimationContext.tsx +13 -2
  24. package/Components/VideoModal/PlayerWrapper.tsx +2 -2
  25. package/Components/VideoModal/VideoModal.tsx +19 -19
  26. package/Components/Viewport/ViewportTracker/ViewportTracker.tsx +1 -1
  27. package/Components/Viewport/ViewportTracker/index.tsx +1 -0
  28. package/Components/Viewport/utils.js +1 -1
  29. package/Contexts/MenuToggleContext/{index.js → index.ts} +16 -0
  30. package/Contexts/ScreenContext/__tests__/__snapshots__/index.test.tsx.snap +3 -0
  31. package/Contexts/ScreenContext/__tests__/index.test.tsx +27 -0
  32. package/Contexts/ScreenContext/index.tsx +94 -25
  33. package/events/index.ts +1 -0
  34. package/package.json +5 -5
  35. /package/Contexts/{index.js → index.ts} +0 -0
@@ -1,4 +1,10 @@
1
- import React, { createContext, ReactNode, useMemo, useState } from "react";
1
+ import React, {
2
+ createContext,
3
+ ReactNode,
4
+ useCallback,
5
+ useMemo,
6
+ useRef,
7
+ } from "react";
2
8
  import {
3
9
  useCurrentScreenData,
4
10
  useNavigation,
@@ -7,27 +13,67 @@ import {
7
13
  } from "@applicaster/zapp-react-native-utils/reactHooks";
8
14
  import { useModalNavigationContext } from "@applicaster/zapp-react-native-ui-components/Contexts/ModalNavigationContext";
9
15
  import { useNestedNavigationContext } from "@applicaster/zapp-react-native-ui-components/Contexts/NestedNavigationContext";
16
+ import { create, StoreApi, UseBoundStore } from "zustand";
17
+ import { useShallow } from "zustand/react/shallow";
18
+ import { Animated } from "react-native";
19
+
20
+ interface NavBarStoreState {
21
+ visible: boolean;
22
+ title: string;
23
+ summary: string;
24
+ setVisible: (state: boolean) => void;
25
+ setTitle: (title: string) => void;
26
+ setSummary: (subtitle: string) => void;
27
+ height: number;
28
+ scrollState: number;
29
+ contentPosition: string;
30
+ scrollYAnimated: Animated.Value;
31
+ }
32
+
33
+ interface NavBarState {
34
+ visible: boolean;
35
+ title: string;
36
+ summary: string;
37
+ setVisible: (state: boolean) => void;
38
+ setTitle: (title: string) => void;
39
+ setSummary: (subtitle: string) => void;
40
+ }
10
41
 
11
42
  type ScreenContextType = {
12
- navBar: {
13
- visible: boolean;
14
- title: string;
15
- summary: string;
16
- setVisible: (state: boolean) => void;
17
- setTitle: (title: string) => void;
18
- setSummary: (subtitle: string) => void;
19
- };
43
+ _navBarStore: UseBoundStore<StoreApi<NavBarStoreState>>;
44
+ navBar: NavBarState;
20
45
  legacyFormatScreenData: LegacyNavigationScreenData | null;
21
46
  };
22
47
 
48
+ const createStore = () =>
49
+ create<NavBarStoreState>((set) => ({
50
+ title: "",
51
+ summary: "",
52
+ visible: true,
53
+ height: 0,
54
+ scrollState: 0,
55
+ contentPosition: "",
56
+ scrollYAnimated: new Animated.Value(0),
57
+ setTitle(title) {
58
+ set({ title });
59
+ },
60
+ setSummary(summary) {
61
+ set({ summary });
62
+ },
63
+ setVisible(visible) {
64
+ set({ visible });
65
+ },
66
+ }));
67
+
23
68
  export const ScreenContext = createContext<ScreenContextType>({
69
+ _navBarStore: createStore(),
24
70
  navBar: {
25
71
  visible: true,
26
72
  title: "",
27
73
  summary: "",
28
- setVisible: (_state) => {},
29
- setTitle: (_title) => {},
30
- setSummary: (_subtitle) => {},
74
+ setVisible: (_state) => void 0,
75
+ setTitle: (_title) => void 0,
76
+ setSummary: (_subtitle) => void 0,
31
77
  },
32
78
  legacyFormatScreenData: {} as LegacyNavigationScreenData,
33
79
  });
@@ -53,9 +99,30 @@ export function ScreenContextProvider({
53
99
  const isNested = useNestedNavigationContext();
54
100
  const currentScreenScreenData = useCurrentScreenData();
55
101
 
56
- const [navBarTitle, setNavBarTitle] = useState("");
57
- const [navBarSummary, setNavBarSummary] = useState("");
58
- const [navBarVisible, setNavBarVisible] = useState(true);
102
+ const screenNavBarStateRef =
103
+ useRef<null | ReturnType<typeof createStore>>(null);
104
+
105
+ const getScreenNavBarState = useCallback(() => {
106
+ if (screenNavBarStateRef.current !== null) {
107
+ return screenNavBarStateRef.current;
108
+ }
109
+
110
+ const navBarState = createStore();
111
+ screenNavBarStateRef.current = navBarState;
112
+
113
+ return navBarState;
114
+ }, []);
115
+
116
+ const screenNavBarState = getScreenNavBarState()(
117
+ useShallow((state) => ({
118
+ visible: state.visible,
119
+ title: state.title,
120
+ summary: state.summary,
121
+ setTitle: state.setTitle,
122
+ setSummary: state.setSummary,
123
+ setVisible: state.setVisible,
124
+ }))
125
+ );
59
126
 
60
127
  const isHook = pathname.includes("hook");
61
128
 
@@ -73,26 +140,28 @@ export function ScreenContextProvider({
73
140
  const isVisible = isNavBarVisible(
74
141
  pathname,
75
142
  currentScreenScreenData, // what fallback should be if currentScreenData is not available?
76
- navBarVisible,
143
+ screenNavBarState.visible,
77
144
  canGoBack(isHook, pathname),
78
145
  videoModalState
79
146
  );
80
147
 
81
- const navBarState = useMemo(() => {
82
- return {
83
- title: navBarTitle,
84
- summary: navBarSummary,
148
+ const navBarState = useMemo(
149
+ () => ({
150
+ title: screenNavBarState.title,
151
+ summary: screenNavBarState.summary,
85
152
  visible: isVisible,
86
- setTitle: setNavBarTitle,
87
- setSummary: setNavBarSummary,
88
- setVisible: setNavBarVisible,
89
- };
90
- }, [isVisible, navBarTitle, navBarSummary]);
153
+ setTitle: screenNavBarState.setTitle,
154
+ setSummary: screenNavBarState.setSummary,
155
+ setVisible: screenNavBarState.setVisible,
156
+ }),
157
+ [isVisible, screenNavBarState.title, screenNavBarState.summary]
158
+ );
91
159
 
92
160
  return (
93
161
  <ScreenContext.Provider
94
162
  value={useMemo(
95
163
  () => ({
164
+ _navBarStore: getScreenNavBarState(),
96
165
  navBar: navBarState,
97
166
  legacyFormatScreenData: routeScreenData,
98
167
  }),
package/events/index.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export enum QBUIComponentEvents {
2
2
  toggleGradient = "toggleGradient",
3
3
  topMenuBarTV_onFocus = "topMenuBarTV_onFocus",
4
+ navigatorReplaceItem = "navigatorReplaceItem",
4
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.7623722215",
3
+ "version": "12.0.0-alpha.7754333813",
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.7623722215",
38
- "@applicaster/zapp-react-native-bridge": "12.0.0-alpha.7623722215",
39
- "@applicaster/zapp-react-native-redux": "12.0.0-alpha.7623722215",
40
- "@applicaster/zapp-react-native-utils": "12.0.0-alpha.7623722215",
37
+ "@applicaster/applicaster-types": "12.0.0-alpha.7754333813",
38
+ "@applicaster/zapp-react-native-bridge": "12.0.0-alpha.7754333813",
39
+ "@applicaster/zapp-react-native-redux": "12.0.0-alpha.7754333813",
40
+ "@applicaster/zapp-react-native-utils": "12.0.0-alpha.7754333813",
41
41
  "promise": "^8.3.0",
42
42
  "react-router-native": "^5.1.2",
43
43
  "url": "^0.11.0",
File without changes