@fencyai/react 0.1.3 → 0.1.5

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/README.md CHANGED
@@ -13,35 +13,31 @@ npm install @fencyai/react
13
13
  ### Basic Usage
14
14
 
15
15
  ```jsx
16
- import { ChatCompletionProvider, useChatCompletion } from '@fencyai/react';
16
+ import { FencyProvider, useFency } from '@fencyai/react';
17
+ import { loadFency } from '@fencyai/js';
18
+
19
+ // Make sure to call `loadFency` outside of a component's render to avoid
20
+ // recreating the Fency object on every render.
21
+ const fencyPromise = loadFency('pk_test_your_publishable_key_here');
17
22
 
18
23
  function App() {
19
24
  return (
20
- <ChatCompletionProvider publishableKey="pk_test_your_publishable_key_here">
21
- <ChatComponent />
22
- </ChatCompletionProvider>
25
+ <FencyProvider fency={fencyPromise}>
26
+ <MyComponent />
27
+ </FencyProvider>
23
28
  );
24
29
  }
25
30
 
26
- function ChatComponent() {
27
- const { fency, loading, error, sendMessage } = useChatCompletion();
31
+ function MyComponent() {
32
+ const { fency, loading, error } = useFency();
28
33
 
29
34
  if (loading) return <div>Loading Fency...</div>;
30
35
  if (error) return <div>Error: {error.message}</div>;
31
36
 
32
- const handleSendMessage = async () => {
33
- try {
34
- await sendMessage("Hello, how are you?");
35
- } catch (err) {
36
- console.error('Failed to send message:', err);
37
- }
38
- };
39
-
40
37
  return (
41
38
  <div>
42
39
  <p>Fency loaded: {fency.publishableKey}</p>
43
40
  <p>Version: {fency.version}</p>
44
- <button onClick={handleSendMessage}>Send Message</button>
45
41
  </div>
46
42
  );
47
43
  }
@@ -0,0 +1,8 @@
1
+ import type { FencyContext, FencyProviderProps } from './types';
2
+ export declare const FencyContextValue: import("react").Context<FencyContext | undefined>;
3
+ /**
4
+ * Provider component that provides Fency instance to child components
5
+ * Expects a promise that resolves to a Fency instance
6
+ */
7
+ export declare function FencyProvider({ fency, options, children }: FencyProviderProps): import("react/jsx-runtime").JSX.Element | null;
8
+ //# sourceMappingURL=FencyProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FencyProvider.d.ts","sourceRoot":"","sources":["../src/FencyProvider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAiB,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAG/E,eAAO,MAAM,iBAAiB,mDAAqD,CAAC;AAEpF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,OAAY,EAAE,QAAQ,EAAE,EAAE,kBAAkB,kDAiClF"}
@@ -0,0 +1,34 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { createContext, useEffect, useState } from 'react';
3
+ // Create the context
4
+ export const FencyContextValue = createContext(undefined);
5
+ /**
6
+ * Provider component that provides Fency instance to child components
7
+ * Expects a promise that resolves to a Fency instance
8
+ */
9
+ export function FencyProvider({ fency, options = {}, children }) {
10
+ const [fencyInstance, setFencyInstance] = useState(null);
11
+ const [loading, setLoading] = useState(true);
12
+ const [error, setError] = useState(null);
13
+ useEffect(() => {
14
+ fency
15
+ .then((instance) => {
16
+ setFencyInstance(instance);
17
+ setLoading(false);
18
+ })
19
+ .catch((err) => {
20
+ setError(err);
21
+ setLoading(false);
22
+ });
23
+ }, [fency]);
24
+ // Only render children and provide context when fency is loaded
25
+ if (!fencyInstance) {
26
+ return null;
27
+ }
28
+ const value = {
29
+ fency: fencyInstance,
30
+ loading,
31
+ error,
32
+ };
33
+ return (_jsx(FencyContextValue.Provider, { value: value, children: children }));
34
+ }
package/dist/index.d.ts CHANGED
@@ -1,51 +1,4 @@
1
- import { FencyInstance, FencyOptions } from '@fencyai/js';
2
- import { ReactNode } from 'react';
3
- /**
4
- * Context for Fency instance
5
- */
6
- interface FencyContext {
7
- fency: FencyInstance | null;
8
- loading: boolean;
9
- error: Error | null;
10
- }
11
- declare const FencyContext: import("react").Context<FencyContext | undefined>;
12
- /**
13
- * Props for FencyProvider
14
- */
15
- interface FencyProviderProps {
16
- publishableKey: string;
17
- options?: Omit<FencyOptions, 'publishableKey'>;
18
- children: ReactNode;
19
- }
20
- /**
21
- * Provider component that loads and provides Fency instance to child components
22
- */
23
- export declare function FencyProvider({ publishableKey, options, children }: FencyProviderProps): import("react/jsx-runtime").JSX.Element;
24
- /**
25
- * Hook to access Fency instance and loading state
26
- */
27
- export declare function useFency(): FencyContext;
28
- /**
29
- * Props for ChatCompletionProvider
30
- */
31
- interface ChatCompletionProviderProps {
32
- publishableKey: string;
33
- options?: Omit<FencyOptions, 'publishableKey'>;
34
- children: ReactNode;
35
- }
36
- /**
37
- * Provider component specifically for chat completion functionality
38
- * This wraps FencyProvider and provides chat-specific context
39
- */
40
- export declare function ChatCompletionProvider({ publishableKey, options, children }: ChatCompletionProviderProps): import("react/jsx-runtime").JSX.Element;
41
- /**
42
- * Hook to access chat completion functionality
43
- */
44
- export declare function useChatCompletion(): {
45
- fency: FencyInstance | null;
46
- loading: boolean;
47
- error: Error | null;
48
- sendMessage: (message: string) => Promise<void>;
49
- };
50
- export type { FencyInstance, FencyOptions } from '@fencyai/js';
1
+ export { FencyProvider } from './FencyProvider';
2
+ export { useFency } from './useFency';
3
+ export type { FencyContext, FencyInstance, FencyOptions, FencyProviderProps } from './types';
51
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAa,MAAM,aAAa,CAAC;AACrE,OAAO,EAAiB,SAAS,EAAmC,MAAM,OAAO,CAAC;AAElF;;GAEG;AACH,UAAU,YAAY;IACpB,KAAK,EAAE,aAAa,GAAG,IAAI,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,QAAA,MAAM,YAAY,mDAAqD,CAAC;AAExE;;GAEG;AACH,UAAU,kBAAkB;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,cAAc,EAAE,OAAY,EAAE,QAAQ,EAAE,EAAE,kBAAkB,2CA8B3F;AAED;;GAEG;AACH,wBAAgB,QAAQ,iBAMvB;AAED;;GAEG;AACH,UAAU,2BAA2B;IACnC,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC/C,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,cAAc,EAAE,OAAY,EAAE,QAAQ,EAAE,EAAE,2BAA2B,2CAM7G;AAED;;GAEG;AACH,wBAAgB,iBAAiB;;;;2BAQA,MAAM;EAQtC;AAGD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- var Y=Object.create;var R=Object.defineProperty;var G=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var X=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var h=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ee=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Q(t))!Z.call(e,o)&&o!==r&&R(e,o,{get:()=>t[o],enumerable:!(n=G(t,o))||n.enumerable});return e};var S=(e,t,r)=>(r=e!=null?Y(X(e)):{},ee(t||!e||!e.__esModule?R(r,"default",{value:e,enumerable:!0}):r,e));var M=h(u=>{"use strict";var d=Symbol.for("react.element"),te=Symbol.for("react.portal"),re=Symbol.for("react.fragment"),ne=Symbol.for("react.strict_mode"),oe=Symbol.for("react.profiler"),ue=Symbol.for("react.provider"),ie=Symbol.for("react.context"),se=Symbol.for("react.forward_ref"),ce=Symbol.for("react.suspense"),le=Symbol.for("react.memo"),fe=Symbol.for("react.lazy"),j=Symbol.iterator;function ae(e){return e===null||typeof e!="object"?null:(e=j&&e[j]||e["@@iterator"],typeof e=="function"?e:null)}var T={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},A=Object.assign,q={};function y(e,t,r){this.props=e,this.context=t,this.refs=q,this.updater=r||T}y.prototype.isReactComponent={};y.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function V(){}V.prototype=y.prototype;function F(e,t,r){this.props=e,this.context=t,this.refs=q,this.updater=r||T}var P=F.prototype=new V;P.constructor=F;A(P,y.prototype);P.isPureReactComponent=!0;var I=Array.isArray,D=Object.prototype.hasOwnProperty,g={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};function U(e,t,r){var n,o={},i=null,s=null;if(t!=null)for(n in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(i=""+t.key),t)D.call(t,n)&&!L.hasOwnProperty(n)&&(o[n]=t[n]);var l=arguments.length-2;if(l===1)o.children=r;else if(1<l){for(var c=Array(l),a=0;a<l;a++)c[a]=arguments[a+2];o.children=c}if(e&&e.defaultProps)for(n in l=e.defaultProps,l)o[n]===void 0&&(o[n]=l[n]);return{$$typeof:d,type:e,key:i,ref:s,props:o,_owner:g.current}}function pe(e,t){return{$$typeof:d,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function C(e){return typeof e=="object"&&e!==null&&e.$$typeof===d}function ye(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var N=/\/+/g;function E(e,t){return typeof e=="object"&&e!==null&&e.key!=null?ye(""+e.key):t.toString(36)}function v(e,t,r,n,o){var i=typeof e;(i==="undefined"||i==="boolean")&&(e=null);var s=!1;if(e===null)s=!0;else switch(i){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case d:case te:s=!0}}if(s)return s=e,o=o(s),e=n===""?"."+E(s,0):n,I(o)?(r="",e!=null&&(r=e.replace(N,"$&/")+"/"),v(o,t,r,"",function(a){return a})):o!=null&&(C(o)&&(o=pe(o,r+(!o.key||s&&s.key===o.key?"":(""+o.key).replace(N,"$&/")+"/")+e)),t.push(o)),1;if(s=0,n=n===""?".":n+":",I(e))for(var l=0;l<e.length;l++){i=e[l];var c=n+E(i,l);s+=v(i,t,r,c,o)}else if(c=ae(e),typeof c=="function")for(e=c.call(e),l=0;!(i=e.next()).done;)i=i.value,c=n+E(i,l++),s+=v(i,t,r,c,o);else if(i==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function m(e,t,r){if(e==null)return e;var n=[],o=0;return v(e,n,"","",function(i){return t.call(r,i,o++)}),n}function de(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(r){(e._status===0||e._status===-1)&&(e._status=1,e._result=r)},function(r){(e._status===0||e._status===-1)&&(e._status=2,e._result=r)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var f={current:null},_={transition:null},he={ReactCurrentDispatcher:f,ReactCurrentBatchConfig:_,ReactCurrentOwner:g};function K(){throw Error("act(...) is not supported in production builds of React.")}u.Children={map:m,forEach:function(e,t,r){m(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return m(e,function(){t++}),t},toArray:function(e){return m(e,function(t){return t})||[]},only:function(e){if(!C(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};u.Component=y;u.Fragment=re;u.Profiler=oe;u.PureComponent=F;u.StrictMode=ne;u.Suspense=ce;u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=he;u.act=K;u.cloneElement=function(e,t,r){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var n=A({},e.props),o=e.key,i=e.ref,s=e._owner;if(t!=null){if(t.ref!==void 0&&(i=t.ref,s=g.current),t.key!==void 0&&(o=""+t.key),e.type&&e.type.defaultProps)var l=e.type.defaultProps;for(c in t)D.call(t,c)&&!L.hasOwnProperty(c)&&(n[c]=t[c]===void 0&&l!==void 0?l[c]:t[c])}var c=arguments.length-2;if(c===1)n.children=r;else if(1<c){l=Array(c);for(var a=0;a<c;a++)l[a]=arguments[a+2];n.children=l}return{$$typeof:d,type:e.type,key:o,ref:i,props:n,_owner:s}};u.createContext=function(e){return e={$$typeof:ie,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:ue,_context:e},e.Consumer=e};u.createElement=U;u.createFactory=function(e){var t=U.bind(null,e);return t.type=e,t};u.createRef=function(){return{current:null}};u.forwardRef=function(e){return{$$typeof:se,render:e}};u.isValidElement=C;u.lazy=function(e){return{$$typeof:fe,_payload:{_status:-1,_result:e},_init:de}};u.memo=function(e,t){return{$$typeof:le,type:e,compare:t===void 0?null:t}};u.startTransition=function(e){var t=_.transition;_.transition={};try{e()}finally{_.transition=t}};u.unstable_act=K;u.useCallback=function(e,t){return f.current.useCallback(e,t)};u.useContext=function(e){return f.current.useContext(e)};u.useDebugValue=function(){};u.useDeferredValue=function(e){return f.current.useDeferredValue(e)};u.useEffect=function(e,t){return f.current.useEffect(e,t)};u.useId=function(){return f.current.useId()};u.useImperativeHandle=function(e,t,r){return f.current.useImperativeHandle(e,t,r)};u.useInsertionEffect=function(e,t){return f.current.useInsertionEffect(e,t)};u.useLayoutEffect=function(e,t){return f.current.useLayoutEffect(e,t)};u.useMemo=function(e,t){return f.current.useMemo(e,t)};u.useReducer=function(e,t,r){return f.current.useReducer(e,t,r)};u.useRef=function(e){return f.current.useRef(e)};u.useState=function(e){return f.current.useState(e)};u.useSyncExternalStore=function(e,t,r){return f.current.useSyncExternalStore(e,t,r)};u.useTransition=function(){return f.current.useTransition()};u.version="18.3.1"});var k=h((Oe,B)=>{"use strict";B.exports=M()});var J=h(w=>{"use strict";var me=k(),ve=Symbol.for("react.element"),_e=Symbol.for("react.fragment"),we=Object.prototype.hasOwnProperty,be=me.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,Se={key:!0,ref:!0,__self:!0,__source:!0};function H(e,t,r){var n,o={},i=null,s=null;r!==void 0&&(i=""+r),t.key!==void 0&&(i=""+t.key),t.ref!==void 0&&(s=t.ref);for(n in t)we.call(t,n)&&!Se.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps,t)o[n]===void 0&&(o[n]=t[n]);return{$$typeof:ve,type:e,key:i,ref:s,props:o,_owner:be.current}}w.Fragment=_e;w.jsx=H;w.jsxs=H});var O=h((Re,W)=>{"use strict";W.exports=J()});function $(e,t={}){return new Promise((r,n)=>{if(!e||typeof e!="string"){n(new Error("Fency: A valid publishable key is required."));return}if(!e.startsWith("pk_")){n(new Error('Fency: Invalid publishable key format. Keys should start with "pk_".'));return}let o={publishableKey:e,config:{apiVersion:t.config?.apiVersion||"2024-01-01",endpoint:t.config?.endpoint||"https://api.fency.ai"},version:"0.1.1"};setTimeout(()=>{r(o)},0)})}var p=S(k(),1),x=S(O(),1),z=(0,p.createContext)(void 0);function Ee({publishableKey:e,options:t={},children:r}){let[n,o]=(0,p.useState)(null),[i,s]=(0,p.useState)(!0),[l,c]=(0,p.useState)(null);(0,p.useEffect)(()=>{$(e,t).then(b=>{o(b),s(!1)}).catch(b=>{c(b),s(!1)})},[e,JSON.stringify(t)]);let a={fency:n,loading:i,error:l};return(0,x.jsx)(z.Provider,{value:a,children:r})}function Fe(){let e=(0,p.useContext)(z);if(e===void 0)throw new Error("useFency must be used within a FencyProvider");return e}function Te({publishableKey:e,options:t={},children:r}){return(0,x.jsx)(Ee,{publishableKey:e,options:t,children:r})}function Ae(){let{fency:e,loading:t,error:r}=Fe();return{fency:e,loading:t,error:r,sendMessage:async n=>{if(!e)throw new Error("Fency not loaded");console.log("Sending message:",n)}}}export{Te as ChatCompletionProvider,Ee as FencyProvider,Ae as useChatCompletion,Fe as useFency};
1
+ var J=Object.create;var $=Object.defineProperty;var K=Object.getOwnPropertyDescriptor;var Q=Object.getOwnPropertyNames;var X=Object.getPrototypeOf,Z=Object.prototype.hasOwnProperty;var _=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var ee=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Q(t))!Z.call(e,o)&&o!==r&&$(e,o,{get:()=>t[o],enumerable:!(n=K(t,o))||n.enumerable});return e};var m=(e,t,r)=>(r=e!=null?J(X(e)):{},ee(t||!e||!e.__esModule?$(r,"default",{value:e,enumerable:!0}):r,e));var M=_(u=>{"use strict";var d=Symbol.for("react.element"),te=Symbol.for("react.portal"),re=Symbol.for("react.fragment"),ne=Symbol.for("react.strict_mode"),oe=Symbol.for("react.profiler"),ue=Symbol.for("react.provider"),ce=Symbol.for("react.context"),se=Symbol.for("react.forward_ref"),ie=Symbol.for("react.suspense"),fe=Symbol.for("react.memo"),le=Symbol.for("react.lazy"),j=Symbol.iterator;function pe(e){return e===null||typeof e!="object"?null:(e=j&&e[j]||e["@@iterator"],typeof e=="function"?e:null)}var V={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},q=Object.assign,N={};function y(e,t,r){this.props=e,this.context=t,this.refs=N,this.updater=r||V}y.prototype.isReactComponent={};y.prototype.setState=function(e,t){if(typeof e!="object"&&typeof e!="function"&&e!=null)throw Error("setState(...): takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")};y.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")};function D(){}D.prototype=y.prototype;function w(e,t,r){this.props=e,this.context=t,this.refs=N,this.updater=r||V}var k=w.prototype=new D;k.constructor=w;q(k,y.prototype);k.isPureReactComponent=!0;var I=Array.isArray,T=Object.prototype.hasOwnProperty,P={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};function U(e,t,r){var n,o={},c=null,s=null;if(t!=null)for(n in t.ref!==void 0&&(s=t.ref),t.key!==void 0&&(c=""+t.key),t)T.call(t,n)&&!L.hasOwnProperty(n)&&(o[n]=t[n]);var f=arguments.length-2;if(f===1)o.children=r;else if(1<f){for(var i=Array(f),p=0;p<f;p++)i[p]=arguments[p+2];o.children=i}if(e&&e.defaultProps)for(n in f=e.defaultProps,f)o[n]===void 0&&(o[n]=f[n]);return{$$typeof:d,type:e,key:c,ref:s,props:o,_owner:P.current}}function ae(e,t){return{$$typeof:d,type:e.type,key:t,ref:e.ref,props:e.props,_owner:e._owner}}function R(e){return typeof e=="object"&&e!==null&&e.$$typeof===d}function ye(e){var t={"=":"=0",":":"=2"};return"$"+e.replace(/[=:]/g,function(r){return t[r]})}var g=/\/+/g;function F(e,t){return typeof e=="object"&&e!==null&&e.key!=null?ye(""+e.key):t.toString(36)}function h(e,t,r,n,o){var c=typeof e;(c==="undefined"||c==="boolean")&&(e=null);var s=!1;if(e===null)s=!0;else switch(c){case"string":case"number":s=!0;break;case"object":switch(e.$$typeof){case d:case te:s=!0}}if(s)return s=e,o=o(s),e=n===""?"."+F(s,0):n,I(o)?(r="",e!=null&&(r=e.replace(g,"$&/")+"/"),h(o,t,r,"",function(p){return p})):o!=null&&(R(o)&&(o=ae(o,r+(!o.key||s&&s.key===o.key?"":(""+o.key).replace(g,"$&/")+"/")+e)),t.push(o)),1;if(s=0,n=n===""?".":n+":",I(e))for(var f=0;f<e.length;f++){c=e[f];var i=n+F(c,f);s+=h(c,t,r,i,o)}else if(i=pe(e),typeof i=="function")for(e=i.call(e),f=0;!(c=e.next()).done;)c=c.value,i=n+F(c,f++),s+=h(c,t,r,i,o);else if(c==="object")throw t=String(e),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(e).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.");return s}function v(e,t,r){if(e==null)return e;var n=[],o=0;return h(e,n,"","",function(c){return t.call(r,c,o++)}),n}function de(e){if(e._status===-1){var t=e._result;t=t(),t.then(function(r){(e._status===0||e._status===-1)&&(e._status=1,e._result=r)},function(r){(e._status===0||e._status===-1)&&(e._status=2,e._result=r)}),e._status===-1&&(e._status=0,e._result=t)}if(e._status===1)return e._result.default;throw e._result}var l={current:null},E={transition:null},_e={ReactCurrentDispatcher:l,ReactCurrentBatchConfig:E,ReactCurrentOwner:P};function A(){throw Error("act(...) is not supported in production builds of React.")}u.Children={map:v,forEach:function(e,t,r){v(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return v(e,function(){t++}),t},toArray:function(e){return v(e,function(t){return t})||[]},only:function(e){if(!R(e))throw Error("React.Children.only expected to receive a single React element child.");return e}};u.Component=y;u.Fragment=re;u.Profiler=oe;u.PureComponent=w;u.StrictMode=ne;u.Suspense=ie;u.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=_e;u.act=A;u.cloneElement=function(e,t,r){if(e==null)throw Error("React.cloneElement(...): The argument must be a React element, but you passed "+e+".");var n=q({},e.props),o=e.key,c=e.ref,s=e._owner;if(t!=null){if(t.ref!==void 0&&(c=t.ref,s=P.current),t.key!==void 0&&(o=""+t.key),e.type&&e.type.defaultProps)var f=e.type.defaultProps;for(i in t)T.call(t,i)&&!L.hasOwnProperty(i)&&(n[i]=t[i]===void 0&&f!==void 0?f[i]:t[i])}var i=arguments.length-2;if(i===1)n.children=r;else if(1<i){f=Array(i);for(var p=0;p<i;p++)f[p]=arguments[p+2];n.children=f}return{$$typeof:d,type:e.type,key:o,ref:c,props:n,_owner:s}};u.createContext=function(e){return e={$$typeof:ce,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null},e.Provider={$$typeof:ue,_context:e},e.Consumer=e};u.createElement=U;u.createFactory=function(e){var t=U.bind(null,e);return t.type=e,t};u.createRef=function(){return{current:null}};u.forwardRef=function(e){return{$$typeof:se,render:e}};u.isValidElement=R;u.lazy=function(e){return{$$typeof:le,_payload:{_status:-1,_result:e},_init:de}};u.memo=function(e,t){return{$$typeof:fe,type:e,compare:t===void 0?null:t}};u.startTransition=function(e){var t=E.transition;E.transition={};try{e()}finally{E.transition=t}};u.unstable_act=A;u.useCallback=function(e,t){return l.current.useCallback(e,t)};u.useContext=function(e){return l.current.useContext(e)};u.useDebugValue=function(){};u.useDeferredValue=function(e){return l.current.useDeferredValue(e)};u.useEffect=function(e,t){return l.current.useEffect(e,t)};u.useId=function(){return l.current.useId()};u.useImperativeHandle=function(e,t,r){return l.current.useImperativeHandle(e,t,r)};u.useInsertionEffect=function(e,t){return l.current.useInsertionEffect(e,t)};u.useLayoutEffect=function(e,t){return l.current.useLayoutEffect(e,t)};u.useMemo=function(e,t){return l.current.useMemo(e,t)};u.useReducer=function(e,t,r){return l.current.useReducer(e,t,r)};u.useRef=function(e){return l.current.useRef(e)};u.useState=function(e){return l.current.useState(e)};u.useSyncExternalStore=function(e,t,r){return l.current.useSyncExternalStore(e,t,r)};u.useTransition=function(){return l.current.useTransition()};u.version="18.3.1"});var S=_((Pe,B)=>{"use strict";B.exports=M()});var H=_(x=>{"use strict";var me=S(),ve=Symbol.for("react.element"),he=Symbol.for("react.fragment"),Ee=Object.prototype.hasOwnProperty,Se=me.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,xe={key:!0,ref:!0,__self:!0,__source:!0};function z(e,t,r){var n,o={},c=null,s=null;r!==void 0&&(c=""+r),t.key!==void 0&&(c=""+t.key),t.ref!==void 0&&(s=t.ref);for(n in t)Ee.call(t,n)&&!xe.hasOwnProperty(n)&&(o[n]=t[n]);if(e&&e.defaultProps)for(n in t=e.defaultProps,t)o[n]===void 0&&(o[n]=t[n]);return{$$typeof:ve,type:e,key:c,ref:s,props:o,_owner:Se.current}}x.Fragment=he;x.jsx=z;x.jsxs=z});var b=_((be,W)=>{"use strict";W.exports=H()});var a=m(S(),1),Y=m(b(),1),O=(0,a.createContext)(void 0);function Ce({fency:e,options:t={},children:r}){let[n,o]=(0,a.useState)(null),[c,s]=(0,a.useState)(!0),[f,i]=(0,a.useState)(null);if((0,a.useEffect)(()=>{e.then(C=>{o(C),s(!1)}).catch(C=>{i(C),s(!1)})},[e]),!n)return null;let p={fency:n,loading:c,error:f};return(0,Y.jsx)(O.Provider,{value:p,children:r})}var G=m(S(),1);function Fe(){let e=(0,G.useContext)(O);if(e===void 0)throw new Error("useFency must be used within a FencyProvider");return e}export{Ce as FencyProvider,Fe as useFency};
2
2
  /*! Bundled license information:
3
3
 
4
4
  react/cjs/react.production.min.js:
@@ -0,0 +1,32 @@
1
+ export interface FencyInstance {
2
+ publishableKey: string;
3
+ config: {
4
+ apiVersion: string;
5
+ endpoint: string;
6
+ };
7
+ version: string;
8
+ }
9
+ export interface FencyOptions {
10
+ publishableKey: string;
11
+ config?: {
12
+ apiVersion?: string;
13
+ endpoint?: string;
14
+ };
15
+ }
16
+ /**
17
+ * Context for Fency instance
18
+ */
19
+ export interface FencyContext {
20
+ fency: FencyInstance;
21
+ loading: boolean;
22
+ error: Error | null;
23
+ }
24
+ /**
25
+ * Props for FencyProvider
26
+ */
27
+ export interface FencyProviderProps {
28
+ fency: Promise<FencyInstance>;
29
+ options?: Omit<FencyOptions, 'publishableKey'>;
30
+ children: React.ReactNode;
31
+ }
32
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE;QACN,UAAU,EAAE,MAAM,CAAC;QACnB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE;QACP,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,CAAC;IAC/C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B"}
package/dist/types.js ADDED
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import type { FencyContext } from './types';
2
+ /**
3
+ * Hook to access Fency instance and loading state
4
+ */
5
+ export declare function useFency(): FencyContext;
6
+ //# sourceMappingURL=useFency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFency.d.ts","sourceRoot":"","sources":["../src/useFency.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C;;GAEG;AACH,wBAAgB,QAAQ,IAAI,YAAY,CAMvC"}
@@ -0,0 +1,12 @@
1
+ import { useContext } from 'react';
2
+ import { FencyContextValue } from './FencyProvider';
3
+ /**
4
+ * Hook to access Fency instance and loading state
5
+ */
6
+ export function useFency() {
7
+ const context = useContext(FencyContextValue);
8
+ if (context === undefined) {
9
+ throw new Error('useFency must be used within a FencyProvider');
10
+ }
11
+ return context;
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fencyai/react",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "React components for Fency integration",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -44,16 +44,14 @@
44
44
  "author": "",
45
45
  "license": "MIT",
46
46
  "peerDependencies": {
47
- "react": "^18.0.0",
48
- "@fencyai/js": "^0.1.2"
47
+ "react": "^18.0.0"
49
48
  },
50
49
  "devDependencies": {
51
50
  "@types/node": "^20.10.0",
52
51
  "@types/react": "^18.0.0",
53
52
  "esbuild": "^0.19.0",
54
- "typescript": "^5.3.0",
55
53
  "react": "^18.0.0",
56
- "@fencyai/js": "^0.1.3"
54
+ "typescript": "^5.3.0"
57
55
  },
58
56
  "engines": {
59
57
  "node": ">=16.0.0"