@webview-bridge/react 1.6.2 → 1.7.0-rc.1

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/dist/index.cjs ADDED
@@ -0,0 +1,140 @@
1
+ "use strict";
2
+ function _type_of(obj) {
3
+ "@swc/helpers - typeof";
4
+ return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
5
+ }
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __getOwnPropNames = Object.getOwnPropertyNames;
9
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
10
+ var __export = function(target, all) {
11
+ for(var name in all)__defProp(target, name, {
12
+ get: all[name],
13
+ enumerable: true
14
+ });
15
+ };
16
+ var __copyProps = function(to, from, except, desc) {
17
+ if (from && (typeof from === "undefined" ? "undefined" : _type_of(from)) === "object" || typeof from === "function") {
18
+ var _iteratorNormalCompletion = true, _didIteratorError = false, _iteratorError = undefined;
19
+ try {
20
+ var _loop = function() {
21
+ var key = _step.value;
22
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
23
+ get: function() {
24
+ return from[key];
25
+ },
26
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
27
+ });
28
+ };
29
+ for(var _iterator = __getOwnPropNames(from)[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true)_loop();
30
+ } catch (err) {
31
+ _didIteratorError = true;
32
+ _iteratorError = err;
33
+ } finally{
34
+ try {
35
+ if (!_iteratorNormalCompletion && _iterator.return != null) {
36
+ _iterator.return();
37
+ }
38
+ } finally{
39
+ if (_didIteratorError) {
40
+ throw _iteratorError;
41
+ }
42
+ }
43
+ }
44
+ }
45
+ return to;
46
+ };
47
+ var __toCommonJS = function(mod) {
48
+ return __copyProps(__defProp({}, "__esModule", {
49
+ value: true
50
+ }), mod);
51
+ };
52
+ // src/index.ts
53
+ var src_exports = {};
54
+ __export(src_exports, {
55
+ createLinkBridgeProvider: function() {
56
+ return createLinkBridgeProvider;
57
+ },
58
+ useBridge: function() {
59
+ return useBridge;
60
+ }
61
+ });
62
+ module.exports = __toCommonJS(src_exports);
63
+ // src/createLinkBridgeProvider.tsx
64
+ var import_web = require("@webview-bridge/web");
65
+ var import_react = require("react");
66
+ // src/useBridge.ts
67
+ var import_with_selector = require("use-sync-external-store/with-selector.js");
68
+ function useBridge(store, selector) {
69
+ var $selector = selector !== null && selector !== void 0 ? selector : function(state) {
70
+ return state;
71
+ };
72
+ return (0, import_with_selector.useSyncExternalStoreWithSelector)(store.subscribe, store.getState, store.getState, $selector);
73
+ }
74
+ // src/createLinkBridgeProvider.tsx
75
+ var import_jsx_runtime = require("react/jsx-runtime");
76
+ var createLinkBridgeProvider = function(options) {
77
+ var bridge = (0, import_web.linkBridge)(options);
78
+ var BridgeContext = (0, import_react.createContext)(null);
79
+ var BridgeProvider = function(param) {
80
+ var children = param.children;
81
+ var storeRef = (0, import_react.useRef)();
82
+ if (!storeRef.current) {
83
+ storeRef.current = bridge;
84
+ }
85
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(BridgeContext.Provider, {
86
+ value: storeRef.current,
87
+ children: children
88
+ });
89
+ };
90
+ var useBridgeStore = function(selector) {
91
+ var bridgeStoreContext = (0, import_react.useContext)(BridgeContext);
92
+ if (!bridgeStoreContext) {
93
+ throw new Error("useBridgeStore must be used within a BridgeProvider");
94
+ }
95
+ return useBridge(bridgeStoreContext.store, selector);
96
+ };
97
+ var useBridgeStatus = function() {
98
+ var bridgeStoreContext = (0, import_react.useContext)(BridgeContext);
99
+ if (!bridgeStoreContext) {
100
+ throw new Error("useBridgeStatus must be used within a BridgeProvider");
101
+ }
102
+ return {
103
+ isNativeMethodAvailable: function(method) {
104
+ return bridgeStoreContext.isNativeMethodAvailable(method);
105
+ },
106
+ isWebViewBridgeAvailable: bridgeStoreContext.isWebViewBridgeAvailable
107
+ };
108
+ };
109
+ var useBridgeLoose = function() {
110
+ var bridgeStoreContext = (0, import_react.useContext)(BridgeContext);
111
+ if (!bridgeStoreContext) {
112
+ throw new Error("useBridgeLoose must be used within a BridgeProvider");
113
+ }
114
+ return {
115
+ loose: bridgeStoreContext.loose
116
+ };
117
+ };
118
+ var useBridgeEventListener = function(eventName, listener) {
119
+ var bridgeStoreContext = (0, import_react.useContext)(BridgeContext);
120
+ if (!bridgeStoreContext) {
121
+ throw new Error("useBridgeEventListener must be used within a BridgeProvider");
122
+ }
123
+ (0, import_react.useEffect)(function() {
124
+ return bridgeStoreContext.addEventListener(eventName, listener);
125
+ }, []);
126
+ };
127
+ return {
128
+ bridge: bridge,
129
+ BridgeProvider: BridgeProvider,
130
+ useBridgeStore: useBridgeStore,
131
+ useBridgeStatus: useBridgeStatus,
132
+ useBridgeLoose: useBridgeLoose,
133
+ useBridgeEventListener: useBridgeEventListener
134
+ };
135
+ };
136
+ // Annotate the CommonJS export names for ESM import in node:
137
+ 0 && (module.exports = {
138
+ createLinkBridgeProvider: createLinkBridgeProvider,
139
+ useBridge: useBridge
140
+ });
@@ -0,0 +1,29 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as _webview_bridge_web from '@webview-bridge/web';
3
+ import { LinkBridgeOptions, Bridge as Bridge$1, BridgeStore as BridgeStore$1, ExtractStore as ExtractStore$1 } from '@webview-bridge/web';
4
+ import { BridgeStore, Bridge, ParserSchema, ExcludePrimitive, ExtractStore, KeyOfOrString, Parser } from '@webview-bridge/types';
5
+ import { ReactNode } from 'react';
6
+
7
+ interface BridgeProviderProps {
8
+ children: ReactNode;
9
+ }
10
+ declare const createLinkBridgeProvider: <T extends BridgeStore<T extends Bridge ? T : any>, V extends ParserSchema<any> = ParserSchema<any>>(options?: LinkBridgeOptions<T, V>) => {
11
+ bridge: _webview_bridge_web.LinkBridge<ExcludePrimitive<ExtractStore<T>>, Omit<T, "setState">, V>;
12
+ BridgeProvider: ({ children }: BridgeProviderProps) => react_jsx_runtime.JSX.Element;
13
+ useBridgeStore: <U>(selector: (state: ReturnType<T["getState"]>) => U) => U;
14
+ useBridgeStatus: () => {
15
+ isNativeMethodAvailable: (method: keyof ExcludePrimitive<ExtractStore<T>>) => boolean;
16
+ isWebViewBridgeAvailable: boolean;
17
+ };
18
+ useBridgeLoose: () => {
19
+ loose: (ExcludePrimitive<ExtractStore<T>> extends infer T_1 ? { [K in keyof T_1]: (...args: any[]) => Promise<any>; } : never) & {
20
+ [key: string]: (...args: any[]) => Promise<any>;
21
+ };
22
+ };
23
+ useBridgeEventListener: <EventName extends KeyOfOrString<V>>(eventName: EventName, listener: (args: Parser<V, EventName>) => void) => void;
24
+ };
25
+
26
+ declare function useBridge<T extends Bridge$1>(store: Omit<BridgeStore$1<T>, "setState">): ExtractStore$1<BridgeStore$1<T>>;
27
+ declare function useBridge<T extends Bridge$1, U extends ExtractStore$1<BridgeStore$1<T>>, V>(store: Omit<BridgeStore$1<T>, "setState">, selector?: (state: U) => V): V;
28
+
29
+ export { type BridgeProviderProps, createLinkBridgeProvider, useBridge };
@@ -0,0 +1,29 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as _webview_bridge_web from '@webview-bridge/web';
3
+ import { LinkBridgeOptions, Bridge as Bridge$1, BridgeStore as BridgeStore$1, ExtractStore as ExtractStore$1 } from '@webview-bridge/web';
4
+ import { BridgeStore, Bridge, ParserSchema, ExcludePrimitive, ExtractStore, KeyOfOrString, Parser } from '@webview-bridge/types';
5
+ import { ReactNode } from 'react';
6
+
7
+ interface BridgeProviderProps {
8
+ children: ReactNode;
9
+ }
10
+ declare const createLinkBridgeProvider: <T extends BridgeStore<T extends Bridge ? T : any>, V extends ParserSchema<any> = ParserSchema<any>>(options?: LinkBridgeOptions<T, V>) => {
11
+ bridge: _webview_bridge_web.LinkBridge<ExcludePrimitive<ExtractStore<T>>, Omit<T, "setState">, V>;
12
+ BridgeProvider: ({ children }: BridgeProviderProps) => react_jsx_runtime.JSX.Element;
13
+ useBridgeStore: <U>(selector: (state: ReturnType<T["getState"]>) => U) => U;
14
+ useBridgeStatus: () => {
15
+ isNativeMethodAvailable: (method: keyof ExcludePrimitive<ExtractStore<T>>) => boolean;
16
+ isWebViewBridgeAvailable: boolean;
17
+ };
18
+ useBridgeLoose: () => {
19
+ loose: (ExcludePrimitive<ExtractStore<T>> extends infer T_1 ? { [K in keyof T_1]: (...args: any[]) => Promise<any>; } : never) & {
20
+ [key: string]: (...args: any[]) => Promise<any>;
21
+ };
22
+ };
23
+ useBridgeEventListener: <EventName extends KeyOfOrString<V>>(eventName: EventName, listener: (args: Parser<V, EventName>) => void) => void;
24
+ };
25
+
26
+ declare function useBridge<T extends Bridge$1>(store: Omit<BridgeStore$1<T>, "setState">): ExtractStore$1<BridgeStore$1<T>>;
27
+ declare function useBridge<T extends Bridge$1, U extends ExtractStore$1<BridgeStore$1<T>>, V>(store: Omit<BridgeStore$1<T>, "setState">, selector?: (state: U) => V): V;
28
+
29
+ export { type BridgeProviderProps, createLinkBridgeProvider, useBridge };
package/dist/index.js ADDED
@@ -0,0 +1,74 @@
1
+ // src/createLinkBridgeProvider.tsx
2
+ import { linkBridge } from "@webview-bridge/web";
3
+ import { createContext, useContext, useEffect, useRef } from "react";
4
+ // src/useBridge.ts
5
+ import { useSyncExternalStoreWithSelector } from "use-sync-external-store/with-selector.js";
6
+ function useBridge(store, selector) {
7
+ var $selector = selector !== null && selector !== void 0 ? selector : function(state) {
8
+ return state;
9
+ };
10
+ return useSyncExternalStoreWithSelector(store.subscribe, store.getState, store.getState, $selector);
11
+ }
12
+ // src/createLinkBridgeProvider.tsx
13
+ import { jsx } from "react/jsx-runtime";
14
+ var createLinkBridgeProvider = function(options) {
15
+ var bridge = linkBridge(options);
16
+ var BridgeContext = createContext(null);
17
+ var BridgeProvider = function(param) {
18
+ var children = param.children;
19
+ var storeRef = useRef();
20
+ if (!storeRef.current) {
21
+ storeRef.current = bridge;
22
+ }
23
+ return /* @__PURE__ */ jsx(BridgeContext.Provider, {
24
+ value: storeRef.current,
25
+ children: children
26
+ });
27
+ };
28
+ var useBridgeStore = function(selector) {
29
+ var bridgeStoreContext = useContext(BridgeContext);
30
+ if (!bridgeStoreContext) {
31
+ throw new Error("useBridgeStore must be used within a BridgeProvider");
32
+ }
33
+ return useBridge(bridgeStoreContext.store, selector);
34
+ };
35
+ var useBridgeStatus = function() {
36
+ var bridgeStoreContext = useContext(BridgeContext);
37
+ if (!bridgeStoreContext) {
38
+ throw new Error("useBridgeStatus must be used within a BridgeProvider");
39
+ }
40
+ return {
41
+ isNativeMethodAvailable: function(method) {
42
+ return bridgeStoreContext.isNativeMethodAvailable(method);
43
+ },
44
+ isWebViewBridgeAvailable: bridgeStoreContext.isWebViewBridgeAvailable
45
+ };
46
+ };
47
+ var useBridgeLoose = function() {
48
+ var bridgeStoreContext = useContext(BridgeContext);
49
+ if (!bridgeStoreContext) {
50
+ throw new Error("useBridgeLoose must be used within a BridgeProvider");
51
+ }
52
+ return {
53
+ loose: bridgeStoreContext.loose
54
+ };
55
+ };
56
+ var useBridgeEventListener = function(eventName, listener) {
57
+ var bridgeStoreContext = useContext(BridgeContext);
58
+ if (!bridgeStoreContext) {
59
+ throw new Error("useBridgeEventListener must be used within a BridgeProvider");
60
+ }
61
+ useEffect(function() {
62
+ return bridgeStoreContext.addEventListener(eventName, listener);
63
+ }, []);
64
+ };
65
+ return {
66
+ bridge: bridge,
67
+ BridgeProvider: BridgeProvider,
68
+ useBridgeStore: useBridgeStore,
69
+ useBridgeStatus: useBridgeStatus,
70
+ useBridgeLoose: useBridgeLoose,
71
+ useBridgeEventListener: useBridgeEventListener
72
+ };
73
+ };
74
+ export { createLinkBridgeProvider, useBridge };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@webview-bridge/react",
3
3
  "type": "module",
4
- "version": "1.6.2",
4
+ "version": "1.7.0-rc.1",
5
5
  "description": "Fully Type-Safe Integration for React Native WebView and Web",
6
6
  "publishConfig": {
7
7
  "access": "public"
@@ -15,24 +15,24 @@
15
15
  "dist",
16
16
  "package.json"
17
17
  ],
18
- "main": "dist/commonjs/index.cjs",
19
- "module": "dist/module/index.mjs",
20
- "types": "dist/typescript/index.d.ts",
18
+ "main": "dist/index.js",
19
+ "module": "dist/index.cjs",
20
+ "types": "dist/index.d.ts",
21
21
  "exports": {
22
22
  ".": {
23
- "types": "./dist/typescript/index.d.ts",
24
- "import": "./dist/module/index.mjs",
25
- "require": "./dist/commonjs/index.cjs"
23
+ "types": "./dist/index.d.ts",
24
+ "import": "./dist/index.js",
25
+ "require": "./dist/index.cjs"
26
26
  }
27
27
  },
28
28
  "devDependencies": {
29
29
  "@types/react": "^18.2.69",
30
30
  "@types/use-sync-external-store": "^0.0.6",
31
- "esbuild": "^0.19.4",
32
- "react": "^18.2.0",
33
- "@webview-bridge/web": "^1.6.2"
31
+ "@webview-bridge/web": "1.7.0-rc.1",
32
+ "react": "^18.3.1"
34
33
  },
35
34
  "dependencies": {
35
+ "@webview-bridge/types": "1.7.0-rc.1",
36
36
  "use-sync-external-store": "^1.2.2"
37
37
  },
38
38
  "peerDependencies": {
@@ -45,7 +45,7 @@
45
45
  }
46
46
  },
47
47
  "scripts": {
48
- "build": "node esbuild.config.js && tspc --emitDeclarationOnly",
48
+ "build": "tsup src/index.ts --format cjs,esm --dts --target es5",
49
49
  "test:type": "tsc --noEmit"
50
50
  }
51
51
  }
@@ -1 +0,0 @@
1
- "use strict";var g=Object.defineProperty;var v=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var m=Object.prototype.hasOwnProperty;var f=(r,e)=>{for(var t in e)g(r,t,{get:e[t],enumerable:!0})},b=(r,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of x(e))!m.call(r,s)&&s!==t&&g(r,s,{get:()=>e[s],enumerable:!(n=v(e,s))||n.enumerable});return r};var p=r=>b(g({},"__esModule",{value:!0}),r);var w={};f(w,{createLinkBridgeProvider:()=>l,useBridge:()=>a});module.exports=p(w);var S=require("@webview-bridge/web"),o=require("react");var B=require("use-sync-external-store/with-selector.js");function a(r,e){let t=e!=null?e:n=>n;return(0,B.useSyncExternalStoreWithSelector)(r.subscribe,r.getState,r.getState,t)}var c=require("react/jsx-runtime"),l=r=>{let e=(0,S.linkBridge)(r),t=(0,o.createContext)(null);return{bridge:e,BridgeProvider:({children:i})=>{let d=(0,o.useRef)();return d.current||(d.current=e),(0,c.jsx)(t.Provider,{value:d.current,children:i})},useBridgeStore:i=>{let d=(0,o.useContext)(t);if(!d)throw new Error("useBridgeStore must be used within a BridgeProvider");return a(d.store,i)},useBridgeStatus:()=>{let i=(0,o.useContext)(t);if(!i)throw new Error("useBridgeStatus must be used within a BridgeProvider");return{isNativeMethodAvailable:d=>i.isNativeMethodAvailable(d),isWebViewBridgeAvailable:i.isWebViewBridgeAvailable}},useBridgeLoose:()=>{let i=(0,o.useContext)(t);if(!i)throw new Error("useBridgeLoose must be used within a BridgeProvider");return{loose:i.loose}},useBridgeEventListener:(i,d)=>{let u=(0,o.useContext)(t);if(!u)throw new Error("useBridgeEventListener must be used within a BridgeProvider");(0,o.useEffect)(()=>u.addEventListener(i,d),[])}}};0&&(module.exports={createLinkBridgeProvider,useBridge});
@@ -1 +0,0 @@
1
- import{linkBridge as u}from"@webview-bridge/web";import{createContext as B,useContext as d,useEffect as S,useRef as c}from"react";import{useSyncExternalStoreWithSelector as a}from"use-sync-external-store/with-selector.js";function g(o,i){let t=i!=null?i:s=>s;return a(o.subscribe,o.getState,o.getState,t)}import{jsx as v}from"react/jsx-runtime";var T=o=>{let i=u(o),t=B(null);return{bridge:i,BridgeProvider:({children:e})=>{let r=c();return r.current||(r.current=i),v(t.Provider,{value:r.current,children:e})},useBridgeStore:e=>{let r=d(t);if(!r)throw new Error("useBridgeStore must be used within a BridgeProvider");return g(r.store,e)},useBridgeStatus:()=>{let e=d(t);if(!e)throw new Error("useBridgeStatus must be used within a BridgeProvider");return{isNativeMethodAvailable:r=>e.isNativeMethodAvailable(r),isWebViewBridgeAvailable:e.isWebViewBridgeAvailable}},useBridgeLoose:()=>{let e=d(t);if(!e)throw new Error("useBridgeLoose must be used within a BridgeProvider");return{loose:e.loose}},useBridgeEventListener:(e,r)=>{let n=d(t);if(!n)throw new Error("useBridgeEventListener must be used within a BridgeProvider");S(()=>n.addEventListener(e,r),[])}}};export{T as createLinkBridgeProvider,g as useBridge};
@@ -1,20 +0,0 @@
1
- import type { Bridge, BridgeStore, ExcludePrimitive, ExtractStore, KeyOfOrString, LinkBridgeOptions, Parser, ParserSchema } from "@webview-bridge/web";
2
- import { type ReactNode } from "react";
3
- export interface BridgeProviderProps {
4
- children: ReactNode;
5
- }
6
- export declare const createLinkBridgeProvider: <T extends BridgeStore<T extends Bridge ? T : any>, V extends ParserSchema<any> = ParserSchema<any>>(options?: LinkBridgeOptions<T, V> | undefined) => {
7
- bridge: import("@webview-bridge/web").LinkBridge<ExcludePrimitive<ExtractStore<T>>, Omit<T, "setState">, V>;
8
- BridgeProvider: ({ children }: BridgeProviderProps) => import("react/jsx-runtime").JSX.Element;
9
- useBridgeStore: <U>(selector: (state: ReturnType<T["getState"]>) => U) => U;
10
- useBridgeStatus: () => {
11
- isNativeMethodAvailable: (method: keyof ExcludePrimitive<ExtractStore<T>>) => boolean;
12
- isWebViewBridgeAvailable: boolean;
13
- };
14
- useBridgeLoose: () => {
15
- loose: (ExcludePrimitive<ExtractStore<T>> extends infer T_1 ? { [K in keyof T_1]: (...args: any[]) => Promise<any>; } : never) & {
16
- [key: string]: (...args: any[]) => Promise<any>;
17
- };
18
- };
19
- useBridgeEventListener: <EventName extends KeyOfOrString<V>>(eventName: EventName, listener: (args: Parser<V, EventName>) => void) => void;
20
- };
@@ -1,2 +0,0 @@
1
- export * from "./createLinkBridgeProvider";
2
- export * from "./useBridge";
@@ -1,3 +0,0 @@
1
- import type { Bridge, BridgeStore, ExtractStore } from "@webview-bridge/web";
2
- export declare function useBridge<T extends Bridge>(store: Omit<BridgeStore<T>, "setState">): ExtractStore<BridgeStore<T>>;
3
- export declare function useBridge<T extends Bridge, U extends ExtractStore<BridgeStore<T>>, V>(store: Omit<BridgeStore<T>, "setState">, selector?: (state: U) => V): V;