@ic-reactor/react 1.5.5-beta.2 → 1.6.0-beta.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.
Files changed (35) hide show
  1. package/dist/context/{actor.d.ts → actor/index.d.ts} +1 -1
  2. package/dist/context/{actor.js → actor/index.js} +2 -2
  3. package/dist/context/actor/types.d.ts +16 -0
  4. package/dist/context/actor/types.js +2 -0
  5. package/dist/context/adapter/index.d.ts +7 -0
  6. package/dist/context/adapter/index.js +13 -0
  7. package/dist/context/adapter/types.d.ts +10 -0
  8. package/dist/context/adapter/types.js +2 -0
  9. package/dist/context/{agent.js → agent/index.js} +3 -3
  10. package/dist/context/agent/types.d.ts +16 -0
  11. package/dist/context/agent/types.js +2 -0
  12. package/dist/context/index.d.ts +3 -0
  13. package/dist/context/index.js +19 -0
  14. package/dist/context/types.d.ts +3 -29
  15. package/dist/context/types.js +17 -0
  16. package/dist/helpers/extractActorContext.d.ts +2 -1
  17. package/dist/hooks/actor/hooks.d.ts +1 -1
  18. package/dist/hooks/adapter/index.d.ts +1 -0
  19. package/dist/hooks/adapter/index.js +5 -0
  20. package/dist/hooks/{agent → adapter}/useCandidAdapter.d.ts +1 -5
  21. package/dist/hooks/{agent → adapter}/useCandidAdapter.js +7 -19
  22. package/dist/hooks/agent/index.d.ts +1 -1
  23. package/dist/hooks/agent/index.js +1 -1
  24. package/dist/hooks/types.d.ts +2 -1
  25. package/dist/hooks/types.js +15 -0
  26. package/dist/hooks/useActor.js +40 -15
  27. package/dist/index.d.ts +2 -2
  28. package/dist/index.js +2 -2
  29. package/dist/provider/actor.d.ts +1 -1
  30. package/dist/provider/adapter.d.ts +26 -0
  31. package/dist/provider/adapter.js +60 -0
  32. package/dist/types.d.ts +1 -1
  33. package/dist/types.js +1 -1
  34. package/package.json +3 -3
  35. /package/dist/context/{agent.d.ts → agent/index.d.ts} +0 -0
@@ -1,4 +1,4 @@
1
- import { BaseActor } from "../types";
1
+ import { BaseActor } from "../../types";
2
2
  import { CreateActorContextParameters, CreateActorContextReturnType } from "./types";
3
3
  /**
4
4
  * Creates a React context specifically designed for managing the state and interactions with an actor on the Internet Computer (IC) blockchain.
@@ -16,8 +16,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.createActorContext = void 0;
18
18
  const react_1 = __importDefault(require("react"));
19
- const useActor_1 = require("../hooks/useActor");
20
- const extractActorContext_1 = require("../helpers/extractActorContext");
19
+ const useActor_1 = require("../../hooks/useActor");
20
+ const extractActorContext_1 = require("../../helpers/extractActorContext");
21
21
  /**
22
22
  * Creates a React context specifically designed for managing the state and interactions with an actor on the Internet Computer (IC) blockchain.
23
23
  * This context facilitates the dynamic creation and management of IC actors within React applications, leveraging the provided configuration options.
@@ -0,0 +1,16 @@
1
+ /// <reference types="react" />
2
+ import type { IDL, ActorHooksReturnType, BaseActor, ActorManagerParameters, CanisterId } from "../../types";
3
+ export interface CreateActorContextReturnType<A = BaseActor> extends ActorHooksReturnType<A> {
4
+ ActorProvider: React.FC<ActorProviderProps>;
5
+ }
6
+ export interface ActorProviderProps extends CreateActorContextParameters {
7
+ children?: React.ReactNode | undefined;
8
+ candidString?: string;
9
+ loadingComponent?: React.ReactNode;
10
+ authenticatingComponent?: React.ReactNode;
11
+ }
12
+ export interface CreateActorContextParameters extends Omit<ActorManagerParameters, "idlFactory" | "agentManager" | "canisterId"> {
13
+ didjsId?: string;
14
+ canisterId?: CanisterId;
15
+ idlFactory?: IDL.InterfaceFactory;
16
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import React from "react";
2
+ import { CandidAdapterContextType } from "./types";
3
+ /**
4
+ * Adapter context for the Candid adapter.
5
+ */
6
+ declare const CandidAdapterContext: React.Context<CandidAdapterContextType | null>;
7
+ export { CandidAdapterContext };
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CandidAdapterContext = void 0;
7
+ const react_1 = __importDefault(require("react"));
8
+ /**
9
+ * Adapter context for the Candid adapter.
10
+ */
11
+ const CandidAdapterContext = react_1.default.createContext(null);
12
+ exports.CandidAdapterContext = CandidAdapterContext;
13
+ CandidAdapterContext.displayName = "CandidAdapterContext";
@@ -0,0 +1,10 @@
1
+ import type { PropsWithChildren } from "react";
2
+ import type { CandidAdapterParameters } from "../../types";
3
+ import type { CandidAdapter } from "@ic-reactor/core/dist/classes";
4
+ export type { CandidAdapter };
5
+ export interface CandidAdapterContextType extends CandidAdapter {
6
+ }
7
+ export interface CandidAdapterProviderProps extends PropsWithChildren, CandidAdapterParameters {
8
+ withParser?: boolean;
9
+ loadingComponent?: React.ReactNode;
10
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -17,9 +17,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
17
17
  exports.createAgentContext = void 0;
18
18
  const react_1 = __importDefault(require("react"));
19
19
  const core_1 = require("@ic-reactor/core");
20
- const agentHooks_1 = require("../helpers/agentHooks");
21
- const authHooks_1 = require("../helpers/authHooks");
22
- const extractAgentContext_1 = require("../helpers/extractAgentContext");
20
+ const agentHooks_1 = require("../../helpers/agentHooks");
21
+ const authHooks_1 = require("../../helpers/authHooks");
22
+ const extractAgentContext_1 = require("../../helpers/extractAgentContext");
23
23
  /**
24
24
  * Creates a React context for managing IC agent and authentication states, providing hooks for interacting with the IC blockchain.
25
25
  * This function initializes an `AgentContext` with a set of utilities and hooks based on the provided agent configuration.
@@ -0,0 +1,16 @@
1
+ import type { AgentHooksReturnType, AuthHooksReturnType, AgentManager, AgentManagerParameters } from "../../types";
2
+ import type { PropsWithChildren } from "react";
3
+ export interface AgentContext extends AgentHooksReturnType, AuthHooksReturnType {
4
+ agentManager: AgentManager;
5
+ }
6
+ export interface CreateAgentCotextParameters extends AgentManagerParameters {
7
+ withProcessEnv?: boolean;
8
+ disableAuthenticateOnMount?: boolean;
9
+ }
10
+ export interface CreateAgentContextReturnType extends AgentHooksReturnType, AuthHooksReturnType {
11
+ useAgentManager: () => AgentManager;
12
+ AgentProvider: React.FC<AgentProviderProps>;
13
+ }
14
+ export interface AgentProviderProps extends PropsWithChildren, CreateAgentCotextParameters {
15
+ agentManager?: AgentManager;
16
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,3 @@
1
+ export * from "./agent";
2
+ export * from "./actor";
3
+ export * from "./adapter";
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./agent"), exports);
18
+ __exportStar(require("./actor"), exports);
19
+ __exportStar(require("./adapter"), exports);
@@ -1,29 +1,3 @@
1
- import type { IDL, ActorHooksReturnType, AgentHooksReturnType, AuthHooksReturnType, BaseActor, AgentManager, ActorManagerParameters, AgentManagerParameters, CanisterId } from "../types";
2
- import type { PropsWithChildren } from "react";
3
- export interface AgentContext extends AgentHooksReturnType, AuthHooksReturnType {
4
- agentManager: AgentManager;
5
- }
6
- export interface CreateAgentCotextParameters extends AgentManagerParameters {
7
- withProcessEnv?: boolean;
8
- disableAuthenticateOnMount?: boolean;
9
- }
10
- export interface CreateAgentContextReturnType extends AgentHooksReturnType, AuthHooksReturnType {
11
- useAgentManager: () => AgentManager;
12
- AgentProvider: React.FC<AgentProviderProps>;
13
- }
14
- export interface AgentProviderProps extends PropsWithChildren, CreateAgentCotextParameters {
15
- agentManager?: AgentManager;
16
- }
17
- export interface CreateActorContextReturnType<A = BaseActor> extends ActorHooksReturnType<A> {
18
- ActorProvider: React.FC<ActorProviderProps>;
19
- }
20
- export interface ActorProviderProps extends CreateActorContextParameters {
21
- children?: React.ReactNode | undefined;
22
- loadingComponent?: React.ReactNode;
23
- authenticatingComponent?: React.ReactNode;
24
- }
25
- export interface CreateActorContextParameters extends Omit<ActorManagerParameters, "idlFactory" | "agentManager" | "canisterId"> {
26
- didjsId?: string;
27
- canisterId?: CanisterId;
28
- idlFactory?: IDL.InterfaceFactory;
29
- }
1
+ export * from "./actor/types";
2
+ export * from "./agent/types";
3
+ export * from "./adapter/types";
@@ -1,2 +1,19 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./actor/types"), exports);
18
+ __exportStar(require("./agent/types"), exports);
19
+ __exportStar(require("./adapter/types"), exports);
@@ -1,3 +1,4 @@
1
1
  import React from "react";
2
- import type { ActorHooksReturnType, BaseActor, CreateActorContextReturnType } from "../types";
2
+ import type { ActorHooksReturnType, BaseActor } from "../types";
3
+ import { CreateActorContextReturnType } from "../context/actor/types";
3
4
  export declare function extractActorContext<A = BaseActor>(actorContext: React.Context<ActorHooksReturnType<A> | null>): Omit<CreateActorContextReturnType<A>, "ActorProvider">;
@@ -1 +1 @@
1
- export declare const ActorHooks: import("../../types").CreateActorContextReturnType<import("@ic-reactor/core/dist/types").BaseActor>;
1
+ export declare const ActorHooks: import("../../context/types").CreateActorContextReturnType<import("@ic-reactor/core/dist/types").BaseActor>;
@@ -0,0 +1 @@
1
+ export { useCandidAdapter } from "./useCandidAdapter";
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useCandidAdapter = void 0;
4
+ var useCandidAdapter_1 = require("./useCandidAdapter");
5
+ Object.defineProperty(exports, "useCandidAdapter", { enumerable: true, get: function () { return useCandidAdapter_1.useCandidAdapter; } });
@@ -1,7 +1,3 @@
1
- import { CandidAdapter } from "@ic-reactor/core/dist/classes";
2
- export interface UseCandidAdapterParams {
3
- didjsCanisterId?: string;
4
- }
5
1
  /**
6
2
  * Accesses the `CandidAdapter` to download the actor's Candid interface.
7
3
  *
@@ -24,4 +20,4 @@ export interface UseCandidAdapterParams {
24
20
  * }
25
21
  *```
26
22
  */
27
- export declare const useCandidAdapter: (config?: UseCandidAdapterParams) => CandidAdapter | undefined;
23
+ export declare const useCandidAdapter: () => import("../../context/types").CandidAdapterContextType | null;
@@ -1,9 +1,11 @@
1
1
  "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
3
6
  exports.useCandidAdapter = void 0;
4
- const react_1 = require("react");
5
- const core_1 = require("@ic-reactor/core");
6
- const useAgent_1 = require("./useAgent");
7
+ const react_1 = __importDefault(require("react"));
8
+ const adapter_1 = require("../../context/adapter");
7
9
  /**
8
10
  * Accesses the `CandidAdapter` to download the actor's Candid interface.
9
11
  *
@@ -26,22 +28,8 @@ const useAgent_1 = require("./useAgent");
26
28
  * }
27
29
  *```
28
30
  */
29
- const useCandidAdapter = (config = {}) => {
30
- const [candidAdapter, setCandidAdapter] = (0, react_1.useState)();
31
- const agent = (0, useAgent_1.useAgent)();
32
- (0, react_1.useEffect)(() => {
33
- try {
34
- const candidManager = (0, core_1.createCandidAdapter)({
35
- agent,
36
- didjsCanisterId: config.didjsCanisterId,
37
- });
38
- setCandidAdapter(candidManager);
39
- }
40
- catch (error) {
41
- // eslint-disable-next-line no-console
42
- console.error("Error creating CandidAdapter", error);
43
- }
44
- }, [agent, config.didjsCanisterId]);
31
+ const useCandidAdapter = () => {
32
+ const candidAdapter = react_1.default.useContext(adapter_1.CandidAdapterContext);
45
33
  return candidAdapter;
46
34
  };
47
35
  exports.useCandidAdapter = useCandidAdapter;
@@ -4,4 +4,4 @@ export * from "./useAgentManager";
4
4
  export * from "./useAuth";
5
5
  export * from "./useAuthState";
6
6
  export * from "./useUserPrincipal";
7
- export * from "./useCandidAdapter";
7
+ export * from "../adapter/useCandidAdapter";
@@ -20,4 +20,4 @@ __exportStar(require("./useAgentManager"), exports);
20
20
  __exportStar(require("./useAuth"), exports);
21
21
  __exportStar(require("./useAuthState"), exports);
22
22
  __exportStar(require("./useUserPrincipal"), exports);
23
- __exportStar(require("./useCandidAdapter"), exports);
23
+ __exportStar(require("../adapter/useCandidAdapter"), exports);
@@ -1,9 +1,10 @@
1
1
  import type { IDL } from "@dfinity/candid";
2
2
  import { ActorHooksReturnType, ActorManagerParameters, BaseActor, CanisterId } from "../types";
3
+ export * from "./adapter/useCandidAdapter";
3
4
  export interface UseActorParameters extends Omit<ActorManagerParameters, "idlFactory" | "agentManager" | "canisterId"> {
5
+ candidString?: string;
4
6
  canisterId: CanisterId;
5
7
  idlFactory?: IDL.InterfaceFactory;
6
- didjsCanisterId?: string;
7
8
  }
8
9
  export interface UseActorReturn<A = BaseActor> {
9
10
  hooks: ActorHooksReturnType<A> | null;
@@ -1,2 +1,17 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
2
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./adapter/useCandidAdapter"), exports);
@@ -26,7 +26,7 @@ const react_1 = require("react");
26
26
  const useAgentManager_1 = require("./agent/useAgentManager");
27
27
  const helpers_1 = require("../helpers");
28
28
  const agent_1 = require("./agent");
29
- const useCandidAdapter_1 = require("./agent/useCandidAdapter");
29
+ const useCandidAdapter_1 = require("./adapter/useCandidAdapter");
30
30
  /**
31
31
  * A comprehensive hook that manages both the fetching of Candid interfaces
32
32
  * and the initialization of actor stores for Internet Computer (IC) canisters.
@@ -90,7 +90,7 @@ const useCandidAdapter_1 = require("./agent/useCandidAdapter");
90
90
  * ```
91
91
  */
92
92
  const useActor = (config) => {
93
- const { canisterId, idlFactory: maybeIdlFactory, didjsCanisterId } = config, actorConfig = __rest(config, ["canisterId", "idlFactory", "didjsCanisterId"]);
93
+ const { canisterId, candidString, idlFactory: maybeIdlFactory } = config, actorConfig = __rest(config, ["canisterId", "candidString", "idlFactory"]);
94
94
  if (!canisterId) {
95
95
  throw new Error("canisterId is required");
96
96
  }
@@ -105,12 +105,10 @@ const useActor = (config) => {
105
105
  fetching: false,
106
106
  fetchError: null,
107
107
  });
108
- const candidAdapter = (0, useCandidAdapter_1.useCandidAdapter)({
109
- didjsCanisterId,
110
- });
108
+ const candidAdapter = (0, useCandidAdapter_1.useCandidAdapter)();
111
109
  const authenticating = (0, agent_1.useAuthState)().authenticating;
112
110
  const fetchCandid = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
113
- if (fetching || authenticating || !candidAdapter)
111
+ if (fetching)
114
112
  return;
115
113
  setState({
116
114
  fetching: true,
@@ -132,28 +130,55 @@ const useActor = (config) => {
132
130
  fetching: false,
133
131
  });
134
132
  }
135
- }), [canisterId, candidAdapter, authenticating, didjsCanisterId]);
133
+ }), [canisterId]);
134
+ const evaluateCandid = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
135
+ try {
136
+ const definition = yield candidAdapter.dynamicEvalJs(candidString);
137
+ if (typeof (definition === null || definition === void 0 ? void 0 : definition.idlFactory) !== "function") {
138
+ throw new Error("Error evaluating Candid definition");
139
+ }
140
+ return definition.idlFactory;
141
+ }
142
+ catch (err) {
143
+ // eslint-disable-next-line no-console
144
+ console.error(err);
145
+ setState({
146
+ fetchError: `Error evaluating Candid definition, ${err}`,
147
+ fetching: false,
148
+ });
149
+ }
150
+ }), [candidString]);
136
151
  const agentManager = (0, useAgentManager_1.useAgentManager)();
137
152
  const initialActorManager = (0, react_1.useCallback)((idlFactory) => {
138
- if (authenticating)
153
+ if (authenticating || !idlFactory)
139
154
  return;
140
155
  const actorManager = (0, core_1.createActorManager)(Object.assign({ agentManager,
141
156
  idlFactory,
142
157
  canisterId }, actorConfig));
143
158
  setActorManager(actorManager);
144
159
  }, [canisterId, agentManager, authenticating]);
145
- (0, react_1.useEffect)(() => {
160
+ const handleActorInitialization = (0, react_1.useCallback)(() => __awaiter(void 0, void 0, void 0, function* () {
161
+ if (authenticating)
162
+ return;
146
163
  if (maybeIdlFactory) {
147
164
  initialActorManager(maybeIdlFactory);
165
+ return;
166
+ }
167
+ if (!candidAdapter) {
168
+ throw new Error("CandidAdapter is necessary to fetch the Candid interface. Please ensure your application is wrapped with the CandidAdapterProvider!");
169
+ }
170
+ let idlFactory;
171
+ if (candidString) {
172
+ idlFactory = yield evaluateCandid();
148
173
  }
149
174
  else {
150
- fetchCandid().then((idlFactory) => {
151
- if (!idlFactory)
152
- return;
153
- initialActorManager(idlFactory);
154
- });
175
+ idlFactory = yield fetchCandid();
155
176
  }
156
- }, [fetchCandid, maybeIdlFactory, initialActorManager]);
177
+ initialActorManager(idlFactory);
178
+ }), [fetchCandid, evaluateCandid, maybeIdlFactory, initialActorManager]);
179
+ (0, react_1.useEffect)(() => {
180
+ handleActorInitialization();
181
+ }, [handleActorInitialization]);
157
182
  const hooks = (0, react_1.useMemo)(() => {
158
183
  if (!actorManager)
159
184
  return null;
package/dist/index.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  export * from "./createReactor";
2
- export * from "./context/actor";
3
- export * from "./context/agent";
2
+ export * from "./context";
4
3
  export * from "./provider/actor";
5
4
  export * from "./provider/agent";
5
+ export * from "./provider/adapter";
6
6
  export * from "./hooks";
7
7
  export * as helpers from "./helpers";
8
8
  export * as types from "./types";
package/dist/index.js CHANGED
@@ -28,10 +28,10 @@ var __importStar = (this && this.__importStar) || function (mod) {
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
29
  exports.utils = exports.core = exports.types = exports.helpers = void 0;
30
30
  __exportStar(require("./createReactor"), exports);
31
- __exportStar(require("./context/actor"), exports);
32
- __exportStar(require("./context/agent"), exports);
31
+ __exportStar(require("./context"), exports);
33
32
  __exportStar(require("./provider/actor"), exports);
34
33
  __exportStar(require("./provider/agent"), exports);
34
+ __exportStar(require("./provider/adapter"), exports);
35
35
  __exportStar(require("./hooks"), exports);
36
36
  exports.helpers = __importStar(require("./helpers"));
37
37
  exports.types = __importStar(require("./types"));
@@ -25,4 +25,4 @@
25
25
  * ```
26
26
  * This setup ensures that `YourComponent` and any of its children can interact with the specified IC actor through the context provided by `ActorProvider`.
27
27
  */
28
- export declare const ActorProvider: import("react").FC<import("../types").ActorProviderProps>;
28
+ export declare const ActorProvider: import("react").FC<import("../context/types").ActorProviderProps>;
@@ -0,0 +1,26 @@
1
+ import React from "react";
2
+ import { CandidAdapterProviderProps } from "../context/types";
3
+ /**
4
+ * `CandidAdapterProvider` is a React component that provides the CandidAdapter to its children.
5
+ * It initializes the CandidAdapter with the provided options and makes it available to all children.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * import { AgentProvider, CandidAdapterProvider, ActorProvider } from "@ic-reactor/react"
10
+ *
11
+ * const App = () => (
12
+ * <AgentProvider>
13
+ * <CandidAdapterProvider>
14
+ * Your Actors here, it will able to fetch the Candid interface
15
+ * you dont need to pass the idlFactory to the Actor component
16
+ * e.g.
17
+ * <ActorProvider canisterId="ryjl3-tyaaa-aaaaa-aaaba-cai" />
18
+ * </CandidAdapterProvider>
19
+ * </AgentProvider>
20
+ * )
21
+ *
22
+ * export default App
23
+ * ```
24
+ */
25
+ declare const CandidAdapterProvider: React.FC<CandidAdapterProviderProps>;
26
+ export { CandidAdapterProvider };
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.CandidAdapterProvider = void 0;
18
+ const react_1 = __importDefault(require("react"));
19
+ const core_1 = require("@ic-reactor/core");
20
+ const adapter_1 = require("../context/adapter");
21
+ const hooks_1 = require("../hooks");
22
+ /**
23
+ * `CandidAdapterProvider` is a React component that provides the CandidAdapter to its children.
24
+ * It initializes the CandidAdapter with the provided options and makes it available to all children.
25
+ *
26
+ * @example
27
+ * ```tsx
28
+ * import { AgentProvider, CandidAdapterProvider, ActorProvider } from "@ic-reactor/react"
29
+ *
30
+ * const App = () => (
31
+ * <AgentProvider>
32
+ * <CandidAdapterProvider>
33
+ * Your Actors here, it will able to fetch the Candid interface
34
+ * you dont need to pass the idlFactory to the Actor component
35
+ * e.g.
36
+ * <ActorProvider canisterId="ryjl3-tyaaa-aaaaa-aaaba-cai" />
37
+ * </CandidAdapterProvider>
38
+ * </AgentProvider>
39
+ * )
40
+ *
41
+ * export default App
42
+ * ```
43
+ */
44
+ const CandidAdapterProvider = (_a) => {
45
+ var { children, withParser, loadingComponent = react_1.default.createElement("div", null, "Loading Parser..."), didjsCanisterId } = _a, options = __rest(_a, ["children", "withParser", "loadingComponent", "didjsCanisterId"]);
46
+ const [initalized, setInitialized] = react_1.default.useState(false);
47
+ const agentManager = (0, hooks_1.useAgentManager)();
48
+ const candidAdapter = react_1.default.useMemo(() => (0, core_1.createCandidAdapter)(Object.assign({ agentManager, didjsCanisterId }, options)), [didjsCanisterId, agentManager]);
49
+ react_1.default.useEffect(() => {
50
+ if (withParser) {
51
+ candidAdapter.initializeParser().then(() => setInitialized(true));
52
+ }
53
+ else {
54
+ setInitialized(true);
55
+ }
56
+ }, []);
57
+ return (react_1.default.createElement(adapter_1.CandidAdapterContext.Provider, { value: candidAdapter }, initalized ? children : loadingComponent));
58
+ };
59
+ exports.CandidAdapterProvider = CandidAdapterProvider;
60
+ CandidAdapterProvider.displayName = "CandidAdapterContext";
package/dist/types.d.ts CHANGED
@@ -6,7 +6,7 @@ export interface CreateReactorReturnType<A> extends ActorHooksReturnType<A>, Aut
6
6
  getAgent: () => HttpAgent;
7
7
  getVisitFunction: () => VisitService<A>;
8
8
  }
9
- export * from "./context/types";
9
+ export * from "./context/agent/types";
10
10
  export * from "./helpers/types";
11
11
  export * from "./hooks/types";
12
12
  export * from "@ic-reactor/core/dist/types";
package/dist/types.js CHANGED
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./context/types"), exports);
17
+ __exportStar(require("./context/agent/types"), exports);
18
18
  __exportStar(require("./helpers/types"), exports);
19
19
  __exportStar(require("./hooks/types"), exports);
20
20
  __exportStar(require("@ic-reactor/core/dist/types"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ic-reactor/react",
3
- "version": "1.5.5-beta.2",
3
+ "version": "1.6.0-beta.1",
4
4
  "description": "A React library for interacting with Internet Computer canisters",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -35,7 +35,7 @@
35
35
  "node": ">=10"
36
36
  },
37
37
  "dependencies": {
38
- "@ic-reactor/core": "^1.5.4-beta.2",
38
+ "@ic-reactor/core": "^1.6.0-beta.1",
39
39
  "zustand-utils": "^1.3"
40
40
  },
41
41
  "peerDependencies": {
@@ -47,5 +47,5 @@
47
47
  "react": ">=16.8",
48
48
  "zustand": "4.5"
49
49
  },
50
- "gitHead": "bf632e49a5a4d1128531a6fc50b5c2f97dee58c9"
50
+ "gitHead": "8ca72485b7651d5c8edfdcc9bcd2675f454856f1"
51
51
  }
File without changes