{"version":3,"sources":["../../src/wallet/session.tsx"],"sourcesContent":["\"use client\";\n\nimport type {\n\tWalletSessionOptions,\n\tWalletSession as WalletSessionType,\n} from \"@whop/embedded-components-vanilla-js/types\";\nimport type { PropsWithChildren } from \"react\";\n\nimport React, {\n\tcreateContext,\n\tuseContext,\n\tuseEffect,\n\tuseImperativeHandle,\n\tuseMemo,\n} from \"react\";\nimport { useElements } from \"../provider\";\n\ninterface ContextState {\n\twalletSession: WalletSessionType | null;\n}\n\nconst WalletSessionContext = createContext<ContextState | null>(null);\n\nexport function WalletSession({\n\tchildren,\n\ttoken,\n\tcompanyId,\n\tcurrency,\n\tref,\n}: PropsWithChildren<\n\tWalletSessionOptions & {\n\t\tref?: React.RefObject<{\n\t\t\twalletSession: WalletSessionType | null;\n\t\t} | null>;\n\t}\n>) {\n\tconst elements = useElements();\n\n\tconst walletSession = useMemo(() => {\n\t\tif (!elements) return null;\n\t\treturn elements.createWalletSession({ token, companyId, currency });\n\t\t// eslint-disable-next-line react-hooks/exhaustive-deps -- session created once per elements instance\n\t}, [elements]);\n\n\tuseEffect(() => {\n\t\tif (!walletSession) return;\n\t\twalletSession.updateOptions({ token, companyId, currency });\n\t}, [walletSession, token, companyId, currency]);\n\n\tconst value: ContextState = useMemo(\n\t\t() => ({\n\t\t\twalletSession,\n\t\t}),\n\t\t[walletSession],\n\t);\n\n\tuseImperativeHandle(ref, () => ({ walletSession }), [walletSession]);\n\n\treturn (\n\t\t<WalletSessionContext.Provider value={value}>\n\t\t\t{children}\n\t\t</WalletSessionContext.Provider>\n\t);\n}\n\nexport function useWalletSession() {\n\tconst ctx = useContext(WalletSessionContext);\n\tif (!ctx) {\n\t\tthrow new Error(\n\t\t\t\"useWalletSession must be used within a WalletSessionProvider\",\n\t\t);\n\t}\n\treturn ctx.walletSession;\n}\n"],"mappings":";;AAQA,OAAO;AAAA,EACN;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,mBAAmB;AAM5B,MAAM,uBAAuB,cAAmC,IAAI;AAE7D,SAAS,cAAc;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAMG;AACF,QAAM,WAAW,YAAY;AAE7B,QAAM,gBAAgB,QAAQ,MAAM;AACnC,QAAI,CAAC,SAAU,QAAO;AACtB,WAAO,SAAS,oBAAoB,EAAE,OAAO,WAAW,SAAS,CAAC;AAAA,EAEnE,GAAG,CAAC,QAAQ,CAAC;AAEb,YAAU,MAAM;AACf,QAAI,CAAC,cAAe;AACpB,kBAAc,cAAc,EAAE,OAAO,WAAW,SAAS,CAAC;AAAA,EAC3D,GAAG,CAAC,eAAe,OAAO,WAAW,QAAQ,CAAC;AAE9C,QAAM,QAAsB;AAAA,IAC3B,OAAO;AAAA,MACN;AAAA,IACD;AAAA,IACA,CAAC,aAAa;AAAA,EACf;AAEA,sBAAoB,KAAK,OAAO,EAAE,cAAc,IAAI,CAAC,aAAa,CAAC;AAEnE,SACC,oCAAC,qBAAqB,UAArB,EAA8B,SAC7B,QACF;AAEF;AAEO,SAAS,mBAAmB;AAClC,QAAM,MAAM,WAAW,oBAAoB;AAC3C,MAAI,CAAC,KAAK;AACT,UAAM,IAAI;AAAA,MACT;AAAA,IACD;AAAA,EACD;AACA,SAAO,IAAI;AACZ;","names":[]}