@granite-js/react-native 0.1.22 → 0.1.23-next.0
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.
- package/CHANGELOG.md +14 -0
- package/dist/app/Granite.d.ts +2 -2
- package/dist/async-bridges.d.mts +1 -1
- package/dist/async-bridges.js +5 -2
- package/dist/async-bridges.mjs +2 -2
- package/dist/chunk-2PYPIQMA.mjs +10 -0
- package/dist/constant-bridges.js +5 -2
- package/dist/constant-bridges.mjs +2 -2
- package/dist/intersection-observer/IOFlatList.d.ts +2 -2
- package/dist/native-event-emitter/nativeEventEmitter.d.ts +5 -1
- package/dist/native-modules/core/GraniteCoreModule.d.ts +1 -1
- package/dist/native-modules/natives/GraniteModule.d.ts +1 -1
- package/dist/native-modules/natives/closeView.d.ts +1 -1
- package/dist/router/Router.d.ts +1 -0
- package/dist/router/components/StackNavigator.d.ts +36 -42
- package/dist/router/components/useRouterBackHandler.d.ts +2 -2
- package/dist/router/hooks/useInitialRouteName.d.ts +1 -1
- package/dist/video/Video.d.ts +2 -2
- package/dist/video/instance.d.ts +2 -2
- package/package.json +14 -16
- package/src/app/Granite.tsx +4 -3
- package/src/intersection-observer/IOFlatList.ts +2 -2
- package/src/native-event-emitter/nativeEventEmitter.ts +12 -1
- package/src/native-modules/core/GraniteCoreModule.ts +1 -1
- package/src/native-modules/natives/GraniteModule.ts +4 -1
- package/src/native-modules/natives/closeView.ts +1 -1
- package/src/native-modules/natives/getSchemeUri.ts +1 -1
- package/src/router/Router.tsx +5 -5
- package/src/router/components/useRouterBackHandler.tsx +2 -2
- package/src/router/hooks/useInitialRouteName.tsx +6 -2
- package/src/video/Video.tsx +1 -1
- package/src/video/instance.tsx +2 -2
- package/src/visibility/utils/usePrevious.tsx +1 -1
- package/dist/chunk-A3JGM5OI.mjs +0 -7
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# @granite-js/react-native
|
|
2
2
|
|
|
3
|
+
## 0.1.23-next.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- d9b7d7c: avoid multiple app registrations without throwing errors
|
|
8
|
+
- @granite-js/cli@0.1.23-next.0
|
|
9
|
+
- @granite-js/image@0.1.23-next.0
|
|
10
|
+
- @granite-js/jest@0.1.23-next.0
|
|
11
|
+
- @granite-js/lottie@0.1.23-next.0
|
|
12
|
+
- @granite-js/mpack@0.1.23-next.0
|
|
13
|
+
- @granite-js/native@0.1.23-next.0
|
|
14
|
+
- @granite-js/plugin-core@0.1.23-next.0
|
|
15
|
+
- @granite-js/style-utils@0.1.23-next.0
|
|
16
|
+
|
|
3
17
|
## 0.1.22
|
|
4
18
|
|
|
5
19
|
### Patch Changes
|
package/dist/app/Granite.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComponentType, PropsWithChildren } from 'react';
|
|
1
|
+
import { ComponentType, type JSX, PropsWithChildren } from 'react';
|
|
2
2
|
import type { InitialProps } from '../initial-props';
|
|
3
3
|
import type { RouterProps, RequireContext } from '../router';
|
|
4
4
|
export interface GraniteProps {
|
|
@@ -68,6 +68,6 @@ export interface GraniteProps {
|
|
|
68
68
|
*/
|
|
69
69
|
export declare const Granite: {
|
|
70
70
|
registerApp(AppContainer: ComponentType<PropsWithChildren<InitialProps>>, { appName, context, router, initialScheme, setIosSwipeGestureEnabled }: GraniteProps): (initialProps: InitialProps) => JSX.Element;
|
|
71
|
-
registerHostApp(AppContainer: ComponentType<PropsWithChildren<InitialProps>>, { appName }: Pick<GraniteProps, "appName">): (initialProps: InitialProps) => JSX.Element;
|
|
71
|
+
registerHostApp(AppContainer: ComponentType<PropsWithChildren<InitialProps>>, { appName }: Pick<GraniteProps, "appName">): (initialProps: InitialProps) => React.JSX.Element;
|
|
72
72
|
readonly appName: string;
|
|
73
73
|
};
|
package/dist/async-bridges.d.mts
CHANGED
package/dist/async-bridges.js
CHANGED
|
@@ -27,11 +27,14 @@ module.exports = __toCommonJS(async_bridges_exports);
|
|
|
27
27
|
|
|
28
28
|
// src/native-modules/natives/GraniteModule.ts
|
|
29
29
|
var import_react_native = require("react-native");
|
|
30
|
-
var GraniteModule = import_react_native.TurboModuleRegistry.
|
|
30
|
+
var GraniteModule = import_react_native.TurboModuleRegistry.get("GraniteModule");
|
|
31
|
+
if (!GraniteModule) {
|
|
32
|
+
console.warn("[GraniteModule] is not registered");
|
|
33
|
+
}
|
|
31
34
|
|
|
32
35
|
// src/native-modules/natives/closeView.ts
|
|
33
36
|
async function closeView() {
|
|
34
|
-
return GraniteModule
|
|
37
|
+
return GraniteModule?.closeView();
|
|
35
38
|
}
|
|
36
39
|
|
|
37
40
|
// src/native-modules/natives/openURL.ts
|
package/dist/async-bridges.mjs
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GraniteModule
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2PYPIQMA.mjs";
|
|
4
4
|
|
|
5
5
|
// src/native-modules/natives/closeView.ts
|
|
6
6
|
async function closeView() {
|
|
7
|
-
return GraniteModule
|
|
7
|
+
return GraniteModule?.closeView();
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
// src/native-modules/natives/openURL.ts
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// src/native-modules/natives/GraniteModule.ts
|
|
2
|
+
import { TurboModuleRegistry } from "react-native";
|
|
3
|
+
var GraniteModule = TurboModuleRegistry.get("GraniteModule");
|
|
4
|
+
if (!GraniteModule) {
|
|
5
|
+
console.warn("[GraniteModule] is not registered");
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export {
|
|
9
|
+
GraniteModule
|
|
10
|
+
};
|
package/dist/constant-bridges.js
CHANGED
|
@@ -26,11 +26,14 @@ module.exports = __toCommonJS(constant_bridges_exports);
|
|
|
26
26
|
|
|
27
27
|
// src/native-modules/natives/GraniteModule.ts
|
|
28
28
|
var import_react_native = require("react-native");
|
|
29
|
-
var GraniteModule = import_react_native.TurboModuleRegistry.
|
|
29
|
+
var GraniteModule = import_react_native.TurboModuleRegistry.get("GraniteModule");
|
|
30
|
+
if (!GraniteModule) {
|
|
31
|
+
console.warn("[GraniteModule] is not registered");
|
|
32
|
+
}
|
|
30
33
|
|
|
31
34
|
// src/native-modules/natives/getSchemeUri.ts
|
|
32
35
|
function getSchemeUri() {
|
|
33
|
-
return GraniteModule
|
|
36
|
+
return GraniteModule?.schemeUri ?? "unknown";
|
|
34
37
|
}
|
|
35
38
|
// Annotate the CommonJS export names for ESM import in node:
|
|
36
39
|
0 && (module.exports = {
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GraniteModule
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-2PYPIQMA.mjs";
|
|
4
4
|
|
|
5
5
|
// src/native-modules/natives/getSchemeUri.ts
|
|
6
6
|
function getSchemeUri() {
|
|
7
|
-
return GraniteModule
|
|
7
|
+
return GraniteModule?.schemeUri ?? "unknown";
|
|
8
8
|
}
|
|
9
9
|
export {
|
|
10
10
|
getSchemeUri
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RefAttributes } from 'react';
|
|
1
|
+
import React, { RefAttributes } from 'react';
|
|
2
2
|
import { FlatList, FlatListProps } from 'react-native';
|
|
3
3
|
import { IOComponentProps } from './withIO';
|
|
4
4
|
export type IOFlatListController = FlatList;
|
|
@@ -51,5 +51,5 @@ export type IOFlatListProps<ItemT = any> = IOComponentProps & FlatListProps<Item
|
|
|
51
51
|
* ```
|
|
52
52
|
*/
|
|
53
53
|
declare const IOFlatList: typeof IOFlatListFunction;
|
|
54
|
-
declare function IOFlatListFunction<ItemT = any>(props: IOFlatListProps<ItemT> & RefAttributes<IOFlatListController>): JSX.Element;
|
|
54
|
+
declare function IOFlatListFunction<ItemT = any>(props: IOFlatListProps<ItemT> & RefAttributes<IOFlatListController>): React.JSX.Element;
|
|
55
55
|
export default IOFlatList;
|
|
@@ -11,5 +11,9 @@ type ParamOf<K extends EventKeys> = EventEmittersMap[K]['params'];
|
|
|
11
11
|
interface EventEmitter {
|
|
12
12
|
addListener<Event extends EventKeys>(event: Event, callback: (...params: ParamOf<Event>) => void): EmitterSubscription;
|
|
13
13
|
}
|
|
14
|
-
export declare const nativeEventEmitter: EventEmitter
|
|
14
|
+
export declare const nativeEventEmitter: EventEmitter | {
|
|
15
|
+
addListener: () => {
|
|
16
|
+
remove: () => void;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
15
19
|
export {};
|
|
@@ -4,5 +4,5 @@ interface GraniteCoreModule extends TurboModule {
|
|
|
4
4
|
removeListeners: (count: number) => void;
|
|
5
5
|
importLazy: () => Promise<void>;
|
|
6
6
|
}
|
|
7
|
-
export declare const GraniteCoreModule: GraniteCoreModule;
|
|
7
|
+
export declare const GraniteCoreModule: GraniteCoreModule | null;
|
|
8
8
|
export {};
|
package/dist/router/Router.d.ts
CHANGED
|
@@ -26,6 +26,7 @@ interface StackNavigatorProps {
|
|
|
26
26
|
screenContainer?: ComponentType<PropsWithChildren<any>>;
|
|
27
27
|
}
|
|
28
28
|
type NavigationContainerProps = Pick<ComponentProps<typeof NavigationContainer>, 'ref' | 'documentTitle' | 'fallback' | 'onReady' | 'onUnhandledAction' | 'onStateChange'>;
|
|
29
|
+
export declare const navigationRef: NavigationContainerRefWithCurrent<never>;
|
|
29
30
|
/**
|
|
30
31
|
* @category Components
|
|
31
32
|
* @kind function
|
|
@@ -1,54 +1,48 @@
|
|
|
1
1
|
export declare const StackNavigator: {
|
|
2
|
-
Navigator: import("react").ComponentType<Omit<import("@react-navigation/routers").DefaultRouterOptions<string> & {
|
|
3
|
-
id?: string;
|
|
2
|
+
Navigator: import("react").ComponentType<Omit<import("@react-navigation/native-stack").NativeStackNavigatorProps, "children" | "id" | "initialRouteName" | "layout" | "screenListeners" | "screenOptions" | "screenLayout" | "UNSTABLE_router"> & import("@react-navigation/routers").DefaultRouterOptions<string> & {
|
|
4
3
|
children: React.ReactNode;
|
|
4
|
+
layout?: ((props: {
|
|
5
|
+
state: import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>;
|
|
6
|
+
navigation: import("@react-navigation/core").NavigationHelpers<import("@react-navigation/routers").ParamListBase, {}>;
|
|
7
|
+
descriptors: Record<string, import("@react-navigation/core").Descriptor<import("@react-navigation/native-stack").NativeStackNavigationOptions, import("@react-navigation/core").NavigationProp<import("@react-navigation/routers").ParamListBase, string, string | undefined, import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>, import("@react-navigation/native-stack").NativeStackNavigationOptions, import("@react-navigation/native-stack").NativeStackNavigationEventMap>, import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>>>;
|
|
8
|
+
children: React.ReactNode;
|
|
9
|
+
}) => React.ReactElement) | undefined;
|
|
5
10
|
screenListeners?: Partial<{
|
|
6
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionStart">;
|
|
7
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionEnd">;
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionStart", unknown>;
|
|
12
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionEnd", unknown>;
|
|
13
|
+
gestureCancel: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "gestureCancel", unknown>;
|
|
14
|
+
sheetDetentChange: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "sheetDetentChange", unknown>;
|
|
15
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "focus", unknown>;
|
|
16
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "blur", unknown>;
|
|
17
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "state", unknown>;
|
|
18
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "beforeRemove", true>;
|
|
12
19
|
}> | ((props: {
|
|
13
20
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
14
|
-
navigation:
|
|
21
|
+
navigation: import("@react-navigation/native-stack").NativeStackNavigationProp<import("@react-navigation/routers").ParamListBase, string, undefined>;
|
|
15
22
|
}) => Partial<{
|
|
16
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionStart">;
|
|
17
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionEnd">;
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
23
|
+
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionStart", unknown>;
|
|
24
|
+
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionEnd", unknown>;
|
|
25
|
+
gestureCancel: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "gestureCancel", unknown>;
|
|
26
|
+
sheetDetentChange: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "sheetDetentChange", unknown>;
|
|
27
|
+
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "focus", unknown>;
|
|
28
|
+
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "blur", unknown>;
|
|
29
|
+
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "state", unknown>;
|
|
30
|
+
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "beforeRemove", true>;
|
|
22
31
|
}>) | undefined;
|
|
23
32
|
screenOptions?: import("@react-navigation/native-stack").NativeStackNavigationOptions | ((props: {
|
|
24
33
|
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
25
|
-
navigation:
|
|
26
|
-
|
|
27
|
-
} & import("@react-navigation/routers").StackRouterOptions, "children" | "id" | "initialRouteName" | "screenListeners" | "screenOptions"> & import("@react-navigation/routers").DefaultRouterOptions<string> & {
|
|
28
|
-
id?: string;
|
|
29
|
-
children: React.ReactNode;
|
|
30
|
-
screenListeners?: Partial<{
|
|
31
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionStart">;
|
|
32
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionEnd">;
|
|
33
|
-
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "focus">;
|
|
34
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "blur">;
|
|
35
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "state">;
|
|
36
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "beforeRemove">;
|
|
37
|
-
}> | ((props: {
|
|
38
|
-
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
39
|
-
navigation: any;
|
|
40
|
-
}) => Partial<{
|
|
41
|
-
transitionStart: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionStart">;
|
|
42
|
-
transitionEnd: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "transitionEnd">;
|
|
43
|
-
focus: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "focus">;
|
|
44
|
-
blur: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "blur">;
|
|
45
|
-
state: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "state">;
|
|
46
|
-
beforeRemove: import("@react-navigation/core").EventListenerCallback<import("@react-navigation/native-stack").NativeStackNavigationEventMap & import("@react-navigation/core").EventMapCore<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>>, "beforeRemove">;
|
|
47
|
-
}>) | undefined;
|
|
48
|
-
screenOptions?: import("@react-navigation/native-stack").NativeStackNavigationOptions | ((props: {
|
|
49
|
-
route: import("@react-navigation/core").RouteProp<import("@react-navigation/routers").ParamListBase, string>;
|
|
50
|
-
navigation: any;
|
|
34
|
+
navigation: import("@react-navigation/native-stack").NativeStackNavigationProp<import("@react-navigation/routers").ParamListBase, string, undefined>;
|
|
35
|
+
theme: ReactNavigation.Theme;
|
|
51
36
|
}) => import("@react-navigation/native-stack").NativeStackNavigationOptions) | undefined;
|
|
37
|
+
screenLayout?: ((props: import("@react-navigation/core").ScreenLayoutArgs<import("@react-navigation/routers").ParamListBase, string, import("@react-navigation/native-stack").NativeStackNavigationOptions, import("@react-navigation/native-stack").NativeStackNavigationProp<import("@react-navigation/routers").ParamListBase, string, undefined>>) => React.ReactElement) | undefined;
|
|
38
|
+
UNSTABLE_router?: (<Action extends Readonly<{
|
|
39
|
+
type: string;
|
|
40
|
+
payload?: object;
|
|
41
|
+
source?: string;
|
|
42
|
+
target?: string;
|
|
43
|
+
}>>(original: import("@react-navigation/routers").Router<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>, Action>) => Partial<import("@react-navigation/routers").Router<import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>, Action>>) | undefined;
|
|
44
|
+
} & {
|
|
45
|
+
id?: undefined;
|
|
52
46
|
}>;
|
|
53
|
-
Screen: <RouteName extends string>(_: import("@react-navigation/core").RouteConfig<import("@react-navigation/routers").ParamListBase, RouteName, import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>, import("@react-navigation/native-stack").NativeStackNavigationOptions, import("@react-navigation/native-stack").NativeStackNavigationEventMap
|
|
47
|
+
Screen: <RouteName extends string>(_: import("@react-navigation/core").RouteConfig<import("@react-navigation/routers").ParamListBase, RouteName, import("@react-navigation/routers").StackNavigationState<import("@react-navigation/routers").ParamListBase>, import("@react-navigation/native-stack").NativeStackNavigationOptions, import("@react-navigation/native-stack").NativeStackNavigationEventMap, import("@react-navigation/native-stack").NativeStackNavigationProp<import("@react-navigation/routers").ParamListBase, string, undefined>>) => null;
|
|
54
48
|
};
|
|
@@ -42,13 +42,13 @@ import { NavigationContainerRefWithCurrent } from '@granite-js/native/@react-nav
|
|
|
42
42
|
* }
|
|
43
43
|
*/
|
|
44
44
|
export declare function useRouterBackHandler({ navigationContainerRef, onClose, }: {
|
|
45
|
-
navigationContainerRef: NavigationContainerRefWithCurrent<
|
|
45
|
+
navigationContainerRef: NavigationContainerRefWithCurrent<never>;
|
|
46
46
|
onClose?: () => void;
|
|
47
47
|
}): {
|
|
48
48
|
handler: () => void;
|
|
49
49
|
};
|
|
50
50
|
export declare function useInternalRouterBackHandler({ navigationContainerRef, onClose, }: {
|
|
51
|
-
navigationContainerRef: NavigationContainerRefWithCurrent<
|
|
51
|
+
navigationContainerRef: NavigationContainerRefWithCurrent<never>;
|
|
52
52
|
onClose?: () => void;
|
|
53
53
|
}): {
|
|
54
54
|
handler: () => void;
|
package/dist/video/Video.d.ts
CHANGED
|
@@ -58,11 +58,11 @@ type VideoProps = ComponentProps<typeof AnimatedRNVideo>;
|
|
|
58
58
|
* }
|
|
59
59
|
* ```
|
|
60
60
|
*/
|
|
61
|
-
declare const VideoImpl: import("react").ForwardRefExoticComponent<Omit<import("react-native-video").
|
|
61
|
+
declare const VideoImpl: import("react").ForwardRefExoticComponent<Omit<import("react-native-video").ReactVideoProps, "onAudioFocusChanged"> & {
|
|
62
62
|
onAudioFocusChanged?: (event: {
|
|
63
63
|
hasAudioFocus: boolean;
|
|
64
64
|
}) => void;
|
|
65
|
-
} & import("react").RefAttributes<VideoRef
|
|
65
|
+
} & import("react").RefAttributes<import("react").ForwardRefExoticComponent<import("react-native-video").ReactVideoProps & import("react").RefAttributes<import("react-native-video").VideoRef>>>>;
|
|
66
66
|
export declare const Video: typeof VideoImpl & {
|
|
67
67
|
isAvailable: boolean;
|
|
68
68
|
};
|
package/dist/video/instance.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ReactVideoProps } from '@granite-js/native/react-native-video';
|
|
2
2
|
import { type ComponentType } from 'react';
|
|
3
|
-
export type VideoNativeProps = Omit<
|
|
3
|
+
export type VideoNativeProps = Omit<ReactVideoProps, 'onAudioFocusChanged'> & {
|
|
4
4
|
onAudioFocusChanged?: (event: {
|
|
5
5
|
hasAudioFocus: boolean;
|
|
6
6
|
}) => void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@granite-js/react-native",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23-next.0",
|
|
4
4
|
"description": "The Granite Framework",
|
|
5
5
|
"bin": {
|
|
6
6
|
"granite": "./bin/cli.js"
|
|
@@ -86,39 +86,37 @@
|
|
|
86
86
|
"@babel/core": "^7.24.9",
|
|
87
87
|
"@babel/preset-env": "^7.24.8",
|
|
88
88
|
"@babel/preset-typescript": "^7.24.7",
|
|
89
|
-
"@granite-js/native": "0.1.
|
|
89
|
+
"@granite-js/native": "0.1.23-next.0",
|
|
90
90
|
"@testing-library/dom": "^10.4.0",
|
|
91
91
|
"@testing-library/react": "^16.1.0",
|
|
92
92
|
"@types/babel__core": "^7",
|
|
93
93
|
"@types/babel__preset-env": "^7",
|
|
94
94
|
"@types/node": "^22.10.2",
|
|
95
|
-
"@types/react": "
|
|
96
|
-
"@types/react-dom": "^18",
|
|
95
|
+
"@types/react": "npm:19.1.0",
|
|
97
96
|
"@vitest/coverage-v8": "^2.1.8",
|
|
98
|
-
"esbuild": "0.25.
|
|
97
|
+
"esbuild": "0.25.9",
|
|
99
98
|
"eslint": "^9.7.0",
|
|
100
99
|
"jsdom": "^25.0.1",
|
|
101
|
-
"react": "
|
|
102
|
-
"react-
|
|
103
|
-
"react-native": "0.72.6",
|
|
100
|
+
"react": "npm:19.1.0",
|
|
101
|
+
"react-native": "npm:0.81.0",
|
|
104
102
|
"tsup": "^8.5.0",
|
|
105
103
|
"typescript": "5.8.3",
|
|
106
104
|
"vitest": "^2.1.8"
|
|
107
105
|
},
|
|
108
106
|
"peerDependencies": {
|
|
109
|
-
"@granite-js/native": "
|
|
107
|
+
"@granite-js/native": "0.1.23-next.0",
|
|
110
108
|
"@types/react": "*",
|
|
111
109
|
"react": "*",
|
|
112
110
|
"react-native": "*"
|
|
113
111
|
},
|
|
114
112
|
"dependencies": {
|
|
115
|
-
"@granite-js/cli": "0.1.
|
|
116
|
-
"@granite-js/image": "0.1.
|
|
117
|
-
"@granite-js/jest": "0.1.
|
|
118
|
-
"@granite-js/lottie": "0.1.
|
|
119
|
-
"@granite-js/mpack": "0.1.
|
|
120
|
-
"@granite-js/plugin-core": "0.1.
|
|
121
|
-
"@granite-js/style-utils": "0.1.
|
|
113
|
+
"@granite-js/cli": "0.1.23-next.0",
|
|
114
|
+
"@granite-js/image": "0.1.23-next.0",
|
|
115
|
+
"@granite-js/jest": "0.1.23-next.0",
|
|
116
|
+
"@granite-js/lottie": "0.1.23-next.0",
|
|
117
|
+
"@granite-js/mpack": "0.1.23-next.0",
|
|
118
|
+
"@granite-js/plugin-core": "0.1.23-next.0",
|
|
119
|
+
"@granite-js/style-utils": "0.1.23-next.0",
|
|
122
120
|
"es-toolkit": "^1.39.8",
|
|
123
121
|
"react-native-url-polyfill": "1.3.0"
|
|
124
122
|
}
|
package/src/app/Granite.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ComponentType, PropsWithChildren } from 'react';
|
|
1
|
+
import { ComponentType, type JSX, PropsWithChildren } from 'react';
|
|
2
2
|
import { AppRegistry } from 'react-native';
|
|
3
3
|
import { ENTRY_BUNDLE_NAME } from '../constants';
|
|
4
4
|
import type { InitialProps } from '../initial-props';
|
|
@@ -44,7 +44,8 @@ const createApp = () => {
|
|
|
44
44
|
|
|
45
45
|
function registerComponent(appKey: string, component: React.ComponentType<any>): string {
|
|
46
46
|
if (AppRegistry.getAppKeys().includes(appKey)) {
|
|
47
|
-
|
|
47
|
+
// `AppRegistry.registerComponent` returns the app key.
|
|
48
|
+
return appKey;
|
|
48
49
|
}
|
|
49
50
|
|
|
50
51
|
return AppRegistry.registerComponent(appKey, () => component);
|
|
@@ -82,7 +83,7 @@ const createApp = () => {
|
|
|
82
83
|
registerHostApp(
|
|
83
84
|
AppContainer: ComponentType<PropsWithChildren<InitialProps>>,
|
|
84
85
|
{ appName }: Pick<GraniteProps, 'appName'>
|
|
85
|
-
): (initialProps: InitialProps) => JSX.Element {
|
|
86
|
+
): (initialProps: InitialProps) => React.JSX.Element {
|
|
86
87
|
if (appName !== ENTRY_BUNDLE_NAME) {
|
|
87
88
|
throw new Error(`Host appName must be 'shared'`);
|
|
88
89
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { RefAttributes } from 'react';
|
|
1
|
+
import React, { RefAttributes } from 'react';
|
|
2
2
|
import { FlatList, FlatListProps } from 'react-native';
|
|
3
3
|
import withIO, { IOComponentProps } from './withIO';
|
|
4
4
|
|
|
@@ -67,6 +67,6 @@ const IOFlatList = withIO(FlatList, [
|
|
|
67
67
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
68
68
|
declare function IOFlatListFunction<ItemT = any>(
|
|
69
69
|
props: IOFlatListProps<ItemT> & RefAttributes<IOFlatListController>
|
|
70
|
-
): JSX.Element;
|
|
70
|
+
): React.JSX.Element;
|
|
71
71
|
|
|
72
72
|
export default IOFlatList;
|
|
@@ -15,4 +15,15 @@ interface EventEmitter {
|
|
|
15
15
|
): EmitterSubscription;
|
|
16
16
|
}
|
|
17
17
|
|
|
18
|
-
export const nativeEventEmitter =
|
|
18
|
+
export const nativeEventEmitter = GraniteCoreModule
|
|
19
|
+
? (new NativeEventEmitter(GraniteCoreModule) as unknown as EventEmitter)
|
|
20
|
+
: {
|
|
21
|
+
addListener: () => {
|
|
22
|
+
console.warn('[GraniteCoreModule] is not registered');
|
|
23
|
+
return {
|
|
24
|
+
remove: () => {
|
|
25
|
+
console.warn('[GraniteCoreModule] is not registered');
|
|
26
|
+
},
|
|
27
|
+
};
|
|
28
|
+
},
|
|
29
|
+
};
|
|
@@ -6,4 +6,4 @@ interface GraniteCoreModule extends TurboModule {
|
|
|
6
6
|
importLazy: () => Promise<void>;
|
|
7
7
|
}
|
|
8
8
|
|
|
9
|
-
export const GraniteCoreModule = TurboModuleRegistry.
|
|
9
|
+
export const GraniteCoreModule = TurboModuleRegistry.get<GraniteCoreModule>('GraniteCoreModule');
|
|
@@ -5,4 +5,7 @@ interface GraniteModuleSpec extends TurboModule {
|
|
|
5
5
|
schemeUri: string;
|
|
6
6
|
}
|
|
7
7
|
|
|
8
|
-
export const GraniteModule = TurboModuleRegistry.
|
|
8
|
+
export const GraniteModule = TurboModuleRegistry.get<GraniteModuleSpec>('GraniteModule');
|
|
9
|
+
if (!GraniteModule) {
|
|
10
|
+
console.warn('[GraniteModule] is not registered');
|
|
11
|
+
}
|
package/src/router/Router.tsx
CHANGED
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
RouteProp,
|
|
8
8
|
} from '@granite-js/native/@react-navigation/native';
|
|
9
9
|
import { NativeStackNavigationOptions } from '@granite-js/native/@react-navigation/native-stack';
|
|
10
|
-
import { ComponentProps, ComponentType, Fragment, PropsWithChildren, ReactElement, useCallback
|
|
10
|
+
import { ComponentProps, ComponentType, Fragment, PropsWithChildren, ReactElement, useCallback } from 'react';
|
|
11
11
|
import { InitialProps } from '..';
|
|
12
12
|
import { closeView } from '../native-modules';
|
|
13
13
|
import { BackButton } from './components/BackButton';
|
|
@@ -89,6 +89,8 @@ type NavigationContainerProps = Pick<
|
|
|
89
89
|
'ref' | 'documentTitle' | 'fallback' | 'onReady' | 'onUnhandledAction' | 'onStateChange'
|
|
90
90
|
>;
|
|
91
91
|
|
|
92
|
+
export const navigationRef = createNavigationContainerRef<never>();
|
|
93
|
+
|
|
92
94
|
/**
|
|
93
95
|
* @category Components
|
|
94
96
|
* @kind function
|
|
@@ -141,10 +143,8 @@ export function Router({
|
|
|
141
143
|
initialScheme,
|
|
142
144
|
});
|
|
143
145
|
|
|
144
|
-
const ref = useMemo(() => navigationContainerRef ?? createNavigationContainerRef<any>(), [navigationContainerRef]);
|
|
145
|
-
|
|
146
146
|
const { handler, canGoBack, onBack } = useInternalRouterBackHandler({
|
|
147
|
-
navigationContainerRef:
|
|
147
|
+
navigationContainerRef: navigationRef,
|
|
148
148
|
onClose: closeView,
|
|
149
149
|
});
|
|
150
150
|
|
|
@@ -164,7 +164,7 @@ export function Router({
|
|
|
164
164
|
);
|
|
165
165
|
|
|
166
166
|
return (
|
|
167
|
-
<NavigationContainer ref={
|
|
167
|
+
<NavigationContainer ref={navigationRef} {...navigationContainerProps} linking={linkingOptions}>
|
|
168
168
|
<CanGoBackGuard canGoBack={canGoBack} onBack={onBack} setIosSwipeGestureEnabled={setIosSwipeGestureEnabled}>
|
|
169
169
|
<Container {...initialProps}>
|
|
170
170
|
<StackNavigator.Navigator initialRouteName={initialRouteName} screenOptions={screenOptions}>
|
|
@@ -48,7 +48,7 @@ export function useRouterBackHandler({
|
|
|
48
48
|
navigationContainerRef,
|
|
49
49
|
onClose,
|
|
50
50
|
}: {
|
|
51
|
-
navigationContainerRef: NavigationContainerRefWithCurrent<
|
|
51
|
+
navigationContainerRef: NavigationContainerRefWithCurrent<never>;
|
|
52
52
|
onClose?: () => void;
|
|
53
53
|
}) {
|
|
54
54
|
const { handler } = useInternalRouterBackHandler({ navigationContainerRef, onClose });
|
|
@@ -60,7 +60,7 @@ export function useInternalRouterBackHandler({
|
|
|
60
60
|
navigationContainerRef,
|
|
61
61
|
onClose,
|
|
62
62
|
}: {
|
|
63
|
-
navigationContainerRef: NavigationContainerRefWithCurrent<
|
|
63
|
+
navigationContainerRef: NavigationContainerRefWithCurrent<never>;
|
|
64
64
|
onClose?: () => void;
|
|
65
65
|
}) {
|
|
66
66
|
const { hasBackEvent, onBack } = useBackEventContext();
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { Platform } from 'react-native';
|
|
2
2
|
|
|
3
|
-
export function useInitialRouteName({ prefix, initialScheme }: { prefix: string; initialScheme
|
|
3
|
+
export function useInitialRouteName({ prefix, initialScheme }: { prefix: string; initialScheme?: string }) {
|
|
4
|
+
if (!initialScheme) {
|
|
5
|
+
return '/';
|
|
6
|
+
}
|
|
7
|
+
|
|
4
8
|
const pathname = removeTrailingSlash(initialScheme).slice(prefix.length).split('?')[0];
|
|
5
|
-
const shouldUseIndex =
|
|
9
|
+
const shouldUseIndex = pathname?.length === 0;
|
|
6
10
|
|
|
7
11
|
return shouldUseIndex ? '/' : pathname;
|
|
8
12
|
}
|
package/src/video/Video.tsx
CHANGED
|
@@ -62,7 +62,7 @@ type VideoProps = ComponentProps<typeof AnimatedRNVideo>;
|
|
|
62
62
|
* }
|
|
63
63
|
* ```
|
|
64
64
|
*/
|
|
65
|
-
const VideoImpl = forwardRef<VideoRef, instance.VideoNativeProps>((props, ref) => {
|
|
65
|
+
const VideoImpl = forwardRef<typeof VideoRef, instance.VideoNativeProps>((props, ref) => {
|
|
66
66
|
const [isFocused, setIsFocused] = useState(props.muted || props.paused);
|
|
67
67
|
const visible = useVisibility();
|
|
68
68
|
|
package/src/video/instance.tsx
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { ReactVideoProps } from '@granite-js/native/react-native-video';
|
|
2
2
|
import { Component as ReactComponent, forwardRef, type ComponentType, type ForwardedRef } from 'react';
|
|
3
3
|
import { View } from 'react-native';
|
|
4
4
|
|
|
5
|
-
export type VideoNativeProps = Omit<
|
|
5
|
+
export type VideoNativeProps = Omit<ReactVideoProps, 'onAudioFocusChanged'> & {
|
|
6
6
|
onAudioFocusChanged?: (event: { hasAudioFocus: boolean }) => void;
|
|
7
7
|
};
|
|
8
8
|
|