@remoteoss/remote-flows 1.32.0 → 1.33.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/README.md +83 -10
- package/dist/{chunk-7A3IHNJF.js → chunk-5X6JMXP6.js} +2 -2
- package/dist/{chunk-QGQSTK73.js → chunk-CBPV2QLT.js} +2 -2
- package/dist/{chunk-HIWYDAQU.js → chunk-CKJF6K4L.js} +2 -2
- package/dist/chunk-DN6BXTAC.js +2 -0
- package/dist/{chunk-STJW643Y.js → chunk-GCQYAEZT.js} +2 -2
- package/dist/{chunk-GPJIEBUC.js → chunk-I66TFXX4.js} +2 -2
- package/dist/{chunk-NEKE5PRJ.js → chunk-IF42CZJH.js} +2 -2
- package/dist/{chunk-VZLUAWY5.js → chunk-J4ALYQ36.js} +2 -2
- package/dist/{chunk-I5NOEJSP.js → chunk-JQHOMFXA.js} +2 -2
- package/dist/{chunk-VATDEWMF.js → chunk-LDSS6RYC.js} +2 -2
- package/dist/{chunk-NKTGQNE2.js → chunk-WSARYSM5.js} +2 -2
- package/dist/{chunk-TLQYNJBC.js → chunk-Y5JFBXNR.js} +2 -2
- package/dist/{chunk-H4B2NWIZ.js → chunk-ZWH34WQJ.js} +2 -2
- package/dist/default-components.d.ts +2 -2
- package/dist/flows/ContractAmendment/ContractAmendmentConfirmationForm.d.ts +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.d.ts +3 -3
- package/dist/flows/ContractAmendment/ContractAmendmentFlow.js +1 -1
- package/dist/flows/ContractAmendment/ContractAmendmentForm.d.ts +1 -1
- package/dist/flows/ContractAmendment/context.d.ts +3 -3
- package/dist/flows/ContractAmendment/hooks.d.ts +3 -3
- package/dist/flows/ContractAmendment/hooks.js +1 -1
- package/dist/flows/ContractAmendment/index.d.ts +3 -3
- package/dist/flows/ContractAmendment/index.js +1 -1
- package/dist/flows/ContractAmendment/types.d.ts +2 -2
- package/dist/flows/ContractAmendment/utils.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/ContractorOnboarding.js +1 -1
- package/dist/flows/ContractorOnboarding/api.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/components/BasicInformationStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractDetailsStep.js +1 -1
- package/dist/flows/ContractorOnboarding/components/ContractPreviewHeader.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStatement.d.ts +2 -2
- package/dist/flows/ContractorOnboarding/components/ContractPreviewStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/ContractorOnboardingForm.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/EligibilityQuestionnaireStep.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/OnboardingInvite.d.ts +3 -3
- package/dist/flows/ContractorOnboarding/components/PricingPlan.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/components/SaveDraftButton.d.ts +3 -3
- package/dist/flows/ContractorOnboarding/components/SelectCountryStep.d.ts +4 -4
- package/dist/flows/ContractorOnboarding/context.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/hooks.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/hooks.js +1 -1
- package/dist/flows/ContractorOnboarding/index.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/index.js +1 -1
- package/dist/flows/ContractorOnboarding/jsfModify.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/types.d.ts +5 -5
- package/dist/flows/ContractorOnboarding/utils.d.ts +4 -4
- package/dist/flows/CostCalculator/CostCalculatorFlow.d.ts +3 -3
- package/dist/flows/CostCalculator/CostCalculatorFlow.js +1 -1
- package/dist/flows/CostCalculator/CostCalculatorForm.d.ts +3 -3
- package/dist/flows/CostCalculator/EstimationResults/EstimationResults.d.ts +2 -2
- package/dist/flows/CostCalculator/SummaryResults/SummaryResults.d.ts +2 -2
- package/dist/flows/CostCalculator/api.d.ts +2 -2
- package/dist/flows/CostCalculator/components/SalaryField.d.ts +2 -2
- package/dist/flows/CostCalculator/context.d.ts +3 -3
- package/dist/flows/CostCalculator/hooks.d.ts +3 -3
- package/dist/flows/CostCalculator/hooks.js +1 -1
- package/dist/flows/CostCalculator/index.d.ts +3 -3
- package/dist/flows/CostCalculator/index.js +1 -1
- package/dist/flows/CostCalculator/types.d.ts +2 -2
- package/dist/flows/CostCalculator/utils.d.ts +3 -3
- package/dist/flows/CostCalculator/utils.js +1 -1
- package/dist/flows/CreateCompany/CreateCompany.d.ts +4 -4
- package/dist/flows/CreateCompany/CreateCompany.js +1 -1
- package/dist/flows/CreateCompany/api.d.ts +2 -2
- package/dist/flows/CreateCompany/components/AddressDetailsStep.d.ts +4 -4
- package/dist/flows/CreateCompany/components/CompanyBasicInformationStep.d.ts +4 -4
- package/dist/flows/CreateCompany/components/CreateCompanyForm.d.ts +2 -2
- package/dist/flows/CreateCompany/context.d.ts +4 -4
- package/dist/flows/CreateCompany/hooks.d.ts +4 -4
- package/dist/flows/CreateCompany/index.d.ts +4 -4
- package/dist/flows/CreateCompany/index.js +1 -1
- package/dist/flows/CreateCompany/types.d.ts +4 -4
- package/dist/flows/Onboarding/OnboardingFlow.d.ts +4 -4
- package/dist/flows/Onboarding/OnboardingFlow.js +1 -1
- package/dist/flows/Onboarding/api.d.ts +4 -4
- package/dist/flows/Onboarding/components/AnnualGrossSalary.d.ts +2 -2
- package/dist/flows/Onboarding/components/BasicInformationStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/BenefitsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/ContractDetailsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/EngagementAgreementDetailsStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/OnboardingForm.d.ts +4 -4
- package/dist/flows/Onboarding/components/OnboardingInvite.d.ts +3 -3
- package/dist/flows/Onboarding/components/ReviewStep.d.ts +4 -4
- package/dist/flows/Onboarding/components/SaveDraftButton.d.ts +3 -3
- package/dist/flows/Onboarding/components/SelectCountryStep.d.ts +4 -4
- package/dist/flows/Onboarding/context.d.ts +4 -4
- package/dist/flows/Onboarding/hooks.d.ts +4 -4
- package/dist/flows/Onboarding/index.d.ts +4 -4
- package/dist/flows/Onboarding/index.js +1 -1
- package/dist/flows/Onboarding/types.d.ts +4 -4
- package/dist/flows/Onboarding/utils.d.ts +4 -4
- package/dist/flows/Termination/AdditionalDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/EmployeeComunicationForm.d.ts +4 -4
- package/dist/flows/Termination/PaidTimeOffForm.d.ts +4 -4
- package/dist/flows/Termination/TerminationDetailsForm.d.ts +4 -4
- package/dist/flows/Termination/TerminationFlow.d.ts +4 -4
- package/dist/flows/Termination/TerminationFlow.js +1 -1
- package/dist/flows/Termination/TerminationForm.d.ts +4 -4
- package/dist/flows/Termination/api.d.ts +5 -5
- package/dist/flows/Termination/api.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOff.d.ts +6 -6
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.d.ts +6 -6
- package/dist/flows/Termination/components/PaidTimeOff/PaidTimeOffContainer.js +1 -1
- package/dist/flows/Termination/components/PaidTimeOff/types.d.ts +6 -6
- package/dist/flows/Termination/context.d.ts +4 -4
- package/dist/flows/Termination/hooks.d.ts +4 -4
- package/dist/flows/Termination/hooks.js +1 -1
- package/dist/flows/Termination/index.d.ts +6 -6
- package/dist/flows/Termination/index.js +1 -1
- package/dist/flows/Termination/json-schemas/jsonSchema.js +1 -1
- package/dist/flows/Termination/json-schemas/schema.d.ts +4 -4
- package/dist/flows/Termination/json-schemas/schema.js +1 -1
- package/dist/flows/Termination/types.d.ts +4 -4
- package/dist/flows/Termination/utils.d.ts +4 -4
- package/dist/flows/types.d.ts +2 -2
- package/dist/flows/utils.d.ts +2 -2
- package/dist/index.css +1 -1
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +12 -12
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/internals.d.ts +3 -3
- package/dist/{mutations-DWtiVhzX.d.ts → mutations-DTK4GE8r.d.ts} +1 -1
- package/dist/{remoteFlows-HrHOVYvy.d.ts → remoteFlows-n8r_cW0z.d.ts} +44 -1
- package/dist/styles.css +1 -1
- package/dist/styles.css.map +1 -1
- package/dist/{types-VL8cVbKj.d.ts → types-BD0b8UuQ.d.ts} +2 -2
- package/dist/{types-C4xgDVL5.d.ts → types-BJ9gyvly.d.ts} +4 -4
- package/dist/{types-DF7KVwR4.d.ts → types-BY3BtHb6.d.ts} +1 -1
- package/dist/{types-xGK_68j9.d.ts → types-BiMfLZYw.d.ts} +3 -3
- package/dist/{types-BBoweHNn.d.ts → types-Cd5_2FHQ.d.ts} +3 -3
- package/dist/{types.gen-C1H9Wowh.d.ts → types.gen-DPZBntYq.d.ts} +1 -1
- package/dist/{utils-C2a483TA.d.ts → utils-C5lwjSxr.d.ts} +1 -1
- package/package.json +3 -1
- package/dist/chunk-SC7YWKOW.js +0 -2
- /package/dist/{chunk-7A3IHNJF.js.map → chunk-5X6JMXP6.js.map} +0 -0
- /package/dist/{chunk-QGQSTK73.js.map → chunk-CBPV2QLT.js.map} +0 -0
- /package/dist/{chunk-HIWYDAQU.js.map → chunk-CKJF6K4L.js.map} +0 -0
- /package/dist/{chunk-SC7YWKOW.js.map → chunk-DN6BXTAC.js.map} +0 -0
- /package/dist/{chunk-STJW643Y.js.map → chunk-GCQYAEZT.js.map} +0 -0
- /package/dist/{chunk-GPJIEBUC.js.map → chunk-I66TFXX4.js.map} +0 -0
- /package/dist/{chunk-NEKE5PRJ.js.map → chunk-IF42CZJH.js.map} +0 -0
- /package/dist/{chunk-VZLUAWY5.js.map → chunk-J4ALYQ36.js.map} +0 -0
- /package/dist/{chunk-I5NOEJSP.js.map → chunk-JQHOMFXA.js.map} +0 -0
- /package/dist/{chunk-VATDEWMF.js.map → chunk-LDSS6RYC.js.map} +0 -0
- /package/dist/{chunk-NKTGQNE2.js.map → chunk-WSARYSM5.js.map} +0 -0
- /package/dist/{chunk-TLQYNJBC.js.map → chunk-Y5JFBXNR.js.map} +0 -0
- /package/dist/{chunk-H4B2NWIZ.js.map → chunk-ZWH34WQJ.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import"./chunk-FZ7FWFJX.js";import{a as
|
|
1
|
+
import"./chunk-FZ7FWFJX.js";import{a as Pe}from"./chunk-ZHDES3J6.js";import{a as ye}from"./chunk-3ZGDRCSS.js";import{a as Ce}from"./chunk-JQHOMFXA.js";import"./chunk-OMLHAQQX.js";import"./chunk-SLEK47CR.js";import"./chunk-Y5JFBXNR.js";import"./chunk-4YCBOVSQ.js";import"./chunk-GCQYAEZT.js";import"./chunk-6DHV4GT6.js";import"./chunk-AWQU5AAN.js";import"./chunk-SYXJTCKS.js";import"./chunk-5WFWHEXV.js";import"./chunk-IF42CZJH.js";import"./chunk-LG5NFDID.js";import{a as ue,b as fe,c as ge}from"./chunk-5X6JMXP6.js";import"./chunk-XFD3ULUF.js";import"./chunk-DN6BXTAC.js";import"./chunk-LMYJ6V44.js";import"./chunk-TC7EQZJK.js";import"./chunk-NX7MM6XR.js";import"./chunk-ZXGAFQXW.js";import"./chunk-DFJNVGK4.js";import"./chunk-SGE4DLC3.js";import"./chunk-GULCZWSK.js";import"./chunk-3JPDFNNH.js";import"./chunk-45RIDSO6.js";import"./chunk-K5TZIA6W.js";import"./chunk-GVPB75PC.js";import"./chunk-YUNA3QKT.js";import"./chunk-MRYRNB7Y.js";import"./chunk-FGBEOUQK.js";import{a as ne}from"./chunk-QYNWADPG.js";import{a as se}from"./chunk-234SEE75.js";import"./chunk-CNMNJMOT.js";import{a as he}from"./chunk-J4ALYQ36.js";import"./chunk-2WOUKCSC.js";import"./chunk-RXSGIEA5.js";import"./chunk-B7BJXPGT.js";import"./chunk-77WJNWIC.js";import"./chunk-G6F6ZZES.js";import"./chunk-FHYOWPXB.js";import"./chunk-QXW2MAFG.js";import"./chunk-F7PE3VRK.js";import"./chunk-PFQTTYVH.js";import"./chunk-5FHDUZCG.js";import"./chunk-OPM4YQGQ.js";import{a as S,b as k}from"./chunk-HUAPBLSQ.js";import"./chunk-VAIBLWOY.js";import"./chunk-3UDWOREZ.js";import"./chunk-PGWKJ6FK.js";import{a as ee}from"./chunk-4RF6I3TT.js";import{b as X,d as j}from"./chunk-AZZUFPQM.js";import"./chunk-2P2OJKD4.js";import"./chunk-VFRHMNLJ.js";import"./chunk-E3WR4SVV.js";import{a as re}from"./chunk-DKLTO4XS.js";import{a as te}from"./chunk-PBWF2VXG.js";import{a as oe}from"./chunk-BCCIFJSO.js";import{d as Y,e as q}from"./chunk-PIGJNWPB.js";import"./chunk-HN5HLFTB.js";import"./chunk-KSHK3ZPX.js";import"./chunk-5KMUUL7U.js";import{a as Te}from"./chunk-CKJF6K4L.js";import"./chunk-3OU6XE7X.js";import"./chunk-N5XWRUYE.js";import"./chunk-TVF4JOK2.js";import"./chunk-IFIJ7OVJ.js";import"./chunk-76ZDXC2T.js";import"./chunk-IOVRTUOC.js";import"./chunk-TXSUZLOI.js";import"./chunk-A3LRPGV3.js";import"./chunk-LANAT75E.js";import"./chunk-5WIBTOCI.js";import"./chunk-UYUPSPOE.js";import{a as be}from"./chunk-WSARYSM5.js";import"./chunk-6S66UQ2X.js";import"./chunk-CW7CHRMN.js";import"./chunk-75MI3G5H.js";import"./chunk-DB4JHJ3Z.js";import"./chunk-FHW5CMN5.js";import"./chunk-KVUKJU5U.js";import"./chunk-H4S6LSDA.js";import"./chunk-ZSMILHO4.js";import"./chunk-ZWH34WQJ.js";import"./chunk-HZ2BCB3U.js";import"./chunk-WJ64Q54L.js";import"./chunk-ZANINDSC.js";import"./chunk-B6YWTMGV.js";import"./chunk-OL5C4QEH.js";import"./chunk-ID66NML3.js";import"./chunk-Q3ALCPJN.js";import"./chunk-I66TFXX4.js";import"./chunk-4QVFKKVN.js";import"./chunk-AP56UUME.js";import"./chunk-IJCTN52C.js";import"./chunk-7GDMMNJT.js";import"./chunk-3UDRMQNE.js";import"./chunk-FKELI7OS.js";import"./chunk-JLUYUNSV.js";import"./chunk-VDRNNOVA.js";import"./chunk-AHRG5QCS.js";import{a as Ee,b as Re,c as Fe,d as we,k as xe,l as ve}from"./chunk-PX5PE6GX.js";import"./chunk-A7ZJQCNU.js";import{a as de}from"./chunk-LDSS6RYC.js";import{a as ae}from"./chunk-HVI5GHIV.js";import{a as ie}from"./chunk-DCPBAFIN.js";import"./chunk-KFYWUBRS.js";import{a as le}from"./chunk-H66IKMI4.js";import{a as pe}from"./chunk-CBPV2QLT.js";import"./chunk-DIZ5Z4MN.js";import{a as me,b as ce}from"./chunk-RWXZG4KO.js";import"./chunk-KAHAW4HH.js";import"./chunk-NRNLLJCB.js";import"./chunk-TSWZPJNS.js";import"./chunk-TVBZT6FA.js";import"./chunk-WVJDCDGZ.js";import"./chunk-MKUSE7JK.js";import"./chunk-AVVDKCFO.js";import"./chunk-WUSKSXW2.js";import"./chunk-PR6I3UYE.js";import"./chunk-K2SHDZBB.js";import"./chunk-ZYN3TAUB.js";import"./chunk-WZHTDLX6.js";import"./chunk-NDZIQGDE.js";import"./chunk-X66NETZL.js";import"./chunk-3EUYWSSZ.js";import"./chunk-T5HMFMXH.js";import"./chunk-LWQLNGOH.js";import"./chunk-J2QQLYVY.js";import"./chunk-2A4DCZTX.js";import"./chunk-ZQNYASQ3.js";import"./chunk-GUO7UC4X.js";import"./chunk-3SIHU3EE.js";import"./chunk-AYYYRHO3.js";import"./chunk-U5T77DSF.js";import{a as Z,b as J}from"./chunk-BZ232WZD.js";import"./chunk-XG6ASTX5.js";import{a as x,b as v,l as b,u as T}from"./chunk-TNQKP2XT.js";import{f as $,o as H,p as E}from"./chunk-RZCU2MT3.js";import"./chunk-LWGSXQKI.js";import"./chunk-TSPDJUGG.js";import"./chunk-626FTNKA.js";import"./chunk-SWCZJY6I.js";import"./chunk-TVZAFTPT.js";import{a as R,d as F,e as w}from"./chunk-H2O4CVKF.js";import{a as o}from"./chunk-P37U34EQ.js";import{useMutation as Se}from"@tanstack/react-query";var ke=o(()=>{let{client:e}=w();return Se({mutationFn:o(r=>T({client:e,headers:{Authorization:""},body:r}),"mutationFn")})},"useMagicLink");import{QueryClientProvider as or}from"@tanstack/react-query";import{useMemo as G,Suspense as tr,useRef as nr}from"react";function u(e){let r=document.documentElement;Object.keys(e).forEach(t=>{let n=e[t];n&&r.style.setProperty(t,n)})}o(u,"setCssProperties");function De(e){let r={};return Object.keys(e).forEach(t=>{r[`--${t}`]=e[t]}),r}o(De,"mapThemeColors");function Ne(e){return{"--spacing":e}}o(Ne,"mapThemeSpacing");function Oe(e){return{"--radius":e}}o(Oe,"mapThemeBorderRadius");function Me(e){return{"--fontSizeBase":e.fontSizeBase}}o(Me,"mapThemeFont");function D(e){e?.colors&&u(De(e.colors)),e?.spacing&&u(Ne(e.spacing)),e?.borderRadius&&u(Oe(e.borderRadius)),e?.font&&u(Me(e.font))}o(D,"applyTheme");import{createContext as Ae,useEffect as Be,useMemo as Ie}from"react";import{jsx as Le}from"react/jsx-runtime";var Ve=Ae({theme:{}});function N(e){Be(()=>{e.theme&&Object.keys(e.theme).length>0&&D(e.theme)},[e.theme]);let r=Ie(()=>({theme:e.theme}),[e.theme]);return Le(Ve.Provider,{value:r,children:e.children})}o(N,"ThemeProvider");var O={local:"http://localhost:4000/api/eor",partners:"https://gateway.partners.remote-sandbox.com",production:"https://gateway.remote.com",sandbox:"https://gateway.remote-sandbox.com",staging:"https://gateway.niceremote.com"},P="production";var p="1.33.0";function _e(e){try{return new URL(e),!0}catch{return!1}}o(_e,"isValidUrl");function M(e,r){let t={current:null},n=r?.environment?O[r?.environment]:"https://gateway.remote.com",s=v.getConfig();r?.environment&&r?.environment!=="production"&&E(p);let l=!!r?.proxy&&_e(r.proxy.url);return r?.proxy&&!l&&console.error("Invalid proxy URL provided. Using default base URL."),x({...s,...r?.credentials&&{credentials:r.credentials},headers:{...s.headers,...l?r?.proxy?.headers:{},"X-Client-Name":"remote-flows-sdk","X-Client-Version":p},baseUrl:l?r.proxy?.url:n,auth:o(async()=>{if(!e)return;function m(a){return!a||Date.now()+6e4>a}if(o(m,"hasTokenExpired"),!t.current||m(t.current.expiresAt))try{let a=await e();t.current={accessToken:a.accessToken,expiresAt:Date.now()+a.expiresIn*1e3}}catch(a){console.error("Failed to fetch auth token:",a);return}return t.current?.accessToken},"auth")})}o(M,"createClient");import{Component as Ze}from"react";var A=[{category:"RENDER_ERROR",severity:"critical",messagePatterns:["element type is invalid","hydration","rendered more hooks","rendered fewer hooks"],namePatterns:["invariantviolation"]},{category:"HOOK_ERROR",severity:"critical",messagePatterns:["hook","useeffect","usestate","usecontext"],namePatterns:[]},{category:"STATE_ERROR",severity:"error",messagePatterns:["state","context","provider"],namePatterns:[]},{category:"RENDER_ERROR",severity:"critical",messagePatterns:["render","component"],namePatterns:[]},{category:"RUNTIME_ERROR",severity:"critical",messagePatterns:[],namePatterns:["typeerror","referenceerror"]},{category:"RUNTIME_ERROR",severity:"error",messagePatterns:[],namePatterns:["rangeerror"]}],Ue=["cannot read property","is not a function","is not defined"],B=["warning","deprecated"],I=o(e=>{let r=e.message.toLowerCase(),t=e.name.toLowerCase();if(B.some(n=>r.includes(n)))return"UNKNOWN_ERROR";for(let n of A){let s=n.messagePatterns.some(m=>r.includes(m)),l=n.namePatterns.some(m=>t.includes(m));if(s||l)return n.category}return"UNKNOWN_ERROR"},"categorizeError"),V=o((e,r)=>{let t=e.message.toLowerCase(),n=e.name.toLowerCase();if(B.some(s=>t.includes(s)))return"warning";if(Ue.some(s=>t.includes(s)))return"critical";for(let s of A){if(s.category!==r)continue;let l=s.messagePatterns.some(a=>t.includes(a)),m=s.namePatterns.some(a=>n.includes(a));if(l||m)return s.severity}return"error"},"determineErrorSeverity");var d=new Map,L=100;function We(e){return`${e.name}:${e.message}:${e.stack?.substring(0,100)||""}`}o(We,"getErrorSignature");function Ke(e){let r=We(e),t=d.get(r),n=Date.now();if(t&&n-t<L)return!0;if(d.set(r,n),d.size>100)for(let[s,l]of d.entries())n-l>L&&d.delete(s);return!1}o(Ke,"wasRecentlyReported");var ze=o((e,r)=>{if(!r)return;let t={critical:"\u{1F534}",error:"\u{1F7E0}",warning:"\u{1F7E1}",info:"\u{1F535}"};console.group("\u{1F4EE} [RemoteFlows] Error Report (Debug Mode)"),console.log("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),console.log("\u274C Error:",e.error.message),console.log("\u{1F4DB} Name:",e.error.name),console.log(`${t[e.error.severity]} Severity:`,e.error.severity.toUpperCase()),console.log("\u{1F3F7}\uFE0F Category:",e.error.category),e.context?.flow&&console.log("\u{1F504} Flow:",e.context.flow),e.context?.step!==void 0&&console.log("\u{1F4CD} Step:",e.context.step),e.context?.metadata&&console.log("\u{1F4DD} Context Metadata:",e.context.metadata),console.log("\u23F0 Timestamp:",e.metadata.timestamp),console.log("\u{1F310} URL:",e.metadata.url),console.log("\u{1F4E6} SDK Version:",e.metadata.sdk_version),e.error.stack&&(console.log(`
|
|
2
2
|
\u{1F4DA} Stack Trace:`),console.log(e.error.stack)),console.log(`
|
|
3
|
-
\u{1F4CB} Full Payload (would be sent to telemetry):`),console.log(JSON.stringify(e,null,2)),console.log("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),console.groupEnd()},"logDebugPayload"),
|
|
3
|
+
\u{1F4CB} Full Payload (would be sent to telemetry):`),console.log(JSON.stringify(e,null,2)),console.log("\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500"),console.groupEnd()},"logDebugPayload"),Qe=o(()=>typeof window<"u"?window.location.href:"unknown","getUrl"),Ge=o(e=>e?btoa(e):"","encodeStack");function $e(e,r,t,n){let s=I(e),l=V(e,s),m=Qe(),a=Ge(e.stack);return{error:{message:e.message,stack:a,name:e.name,category:s,severity:l},context:n,metadata:{sdk_version:r,timestamp:new Date().toISOString(),url:m,user_agent:typeof navigator<"u"?navigator.userAgent:"unknown",environment:t}}}o($e,"buildErrorPayload");function He(e,r){let t=e==="local",n=r.includes("localhost")||r.includes("127.0.0.1");return t===n}o(He,"shouldSendTelemetry");function _(e,r,t={debugMode:!1}){let{error:n,sdkVersion:s,client:l,environment:m}=e;if(Ke(n)){t.debugMode&&console.log("[RemoteFlows] Skipping duplicate error report");return}let a=$e(n,s,m??P,r);if(t.debugMode&&ze(a,!!t.debugMode),!He(m??P,a.metadata.url)){t.debugMode&&console.log("[RemoteFlows] Skipping telemetry API call (local environment)");return}b({client:l,body:a}).catch(y=>{t.debugMode&&console.warn("[RemoteFlows] Failed to report error telemetry:",y)})}o(_,"reportTelemetryError");import{jsx as U}from"react/jsx-runtime";var Je=o(()=>U("div",{style:{padding:"20px",border:"1px solid #dc2626",borderRadius:"4px",backgroundColor:"#fef2f2",color:"#991b1b"},children:"Something went wrong in RemoteFlows. Please refresh the page."}),"FallbackErrorBoundary"),f=class extends Ze{static{o(this,"RemoteFlowsErrorBoundary")}constructor(r){super(r),this.state={hasError:!1,error:null}}static getDerivedStateFromError(r){return{hasError:!0,error:r}}static contextType=S;componentDidCatch(r,t){console.error("[RemoteFlows] Error caught:",r,t);let n=this.context?.errorContextRef.current,s={error:r,sdkVersion:p,client:this.props.client,environment:this.props.environment};if(_(s,n,{debugMode:this.props.debug}),this.props.errorBoundary?.useParentErrorBoundary)throw r}render(){return this.state.hasError&&this.state.error?this.props.errorBoundary?.fallback?typeof this.props.errorBoundary?.fallback=="function"?this.props.errorBoundary?.fallback(this.state.error):this.props.errorBoundary?.fallback:U(Je,{}):this.props.children}};import{lazy as i}from"react";var W={button:i(()=>import("./ButtonDefault-OMZEWLEI.js").then(e=>({default:e.ButtonDefault}))),checkbox:i(()=>import("./CheckboxFieldDefault-AGW42RDY.js").then(e=>({default:e.CheckboxFieldDefault}))),countries:i(()=>import("./CountryFieldDefault-24T4C7OU.js").then(e=>({default:e.CountryFieldDefault}))),date:i(()=>import("./DatePickerFieldDefault-BG4KM2EG.js").then(e=>({default:e.DatePickerFieldDefault}))),drawer:i(()=>import("./DrawerDefault-64GMPAIH.js").then(e=>({default:e.DrawerDefault}))),email:i(()=>import("./EmailFieldDefault-UPDZNN2F.js").then(e=>({default:e.EmailFieldDefault}))),fieldsetToggle:i(()=>import("./FieldsetToggleButtonDefault-BOYDY7VX.js").then(e=>({default:e.FieldsetToggleButtonDefault}))),file:i(()=>import("./FileUploadFieldDefault-KFTIOHEJ.js").then(e=>({default:e.FileUploadFieldDefault}))),"multi-select":i(()=>import("./MultiSelectFieldDefault-ALM76UQ5.js").then(e=>({default:e.MultiSelectFieldDefault}))),number:i(()=>import("./NumberFieldDefault-OXSEX3HX.js").then(e=>({default:e.NumberFieldDefault}))),radio:i(()=>import("./RadioGroupFieldDefault-55336PG5.js").then(e=>({default:e.RadioGroupFieldDefault}))),select:i(()=>import("./SelectFieldDefault-ARANC6QX.js").then(e=>({default:e.SelectFieldDefault}))),statement:i(()=>import("./StatementDefault-BMPIWUGF.js").then(e=>({default:e.StatementDefault}))),textarea:i(()=>import("./TextAreaFieldDefault-3C6UZXHV.js").then(e=>({default:e.TextAreaFieldDefault}))),tel:i(()=>import("./TelFieldDefault-RFAYBPGK.js").then(e=>({default:e.TelFieldDefault}))),text:i(()=>import("./TextFieldDefault-UQ23EIHH.js").then(e=>({default:e.TextFieldDefault}))),zendeskDrawer:i(()=>import("./ZendeskDrawerDefault-JEHYLRHU.js").then(e=>({default:e.ZendeskDrawerDefault}))),table:i(()=>import("./TableFieldDefault-2FLJU7TJ.js").then(e=>({default:e.TableFieldDefault}))),"work-schedule":i(()=>import("./WorkScheduleFieldDefault-CGU2T6HY.js").then(e=>({default:e.WorkScheduleFieldDefault}))),pdfViewer:i(()=>import("./PDFPreviewDefault-HSSMYKV5.js").then(e=>({default:e.PDFPreviewDefault})))};import{jsx as g,jsxs as Xe}from"react/jsx-runtime";function K(){return Xe("div",{className:"animate-pulse space-y-4 p-4",children:[g("div",{className:"h-4 bg-gray-200 rounded w-1/4"}),g("div",{className:"h-10 bg-gray-200 rounded"}),g("div",{className:"h-4 bg-gray-200 rounded w-1/4"}),g("div",{className:"h-10 bg-gray-200 rounded"})]})}o(K,"FormLoadingFallback");import{useState as Ye,useEffect as qe}from"react";import{Fragment as je,jsx as er}from"react/jsx-runtime";function z({fallback:e,delay:r=200}){let[t,n]=Ye(!1);return qe(()=>{let s=setTimeout(()=>{n(!0)},r);return()=>clearTimeout(s)},[r]),t?er(je,{children:e}):null}o(z,"DelayedFallback");import{QueryClient as rr}from"@tanstack/react-query";var Q=o(()=>new rr,"getQueryClient");import{jsx as c}from"react/jsx-runtime";function sr({children:e,client:r}){return c(F.Provider,{value:{client:r},children:e})}o(sr,"RemoteFlowContextWrapper");function ar({children:e,components:r={},transformHtmlToComponents:t}){let n=G(()=>({...W,...r}),[r]),s=G(()=>({components:n,transformHtmlToComponents:t}),[n,t]);return c(R.Provider,{value:s,children:c(tr,{fallback:c(z,{fallback:c(K,{}),delay:200}),children:e})})}o(ar,"FormFieldsProvider");var ir=Q();function lr({auth:e,children:r,components:t,theme:n,proxy:s,environment:l,errorBoundary:m={useParentErrorBoundary:!0},debug:a=!1,credentials:C,transformHtmlToComponents:y}){let h=nr(M(e,{proxy:s,environment:l,credentials:C})).current;return c(k,{children:c(f,{errorBoundary:m,debug:a,environment:l,client:h,children:c(or,{client:ir,children:c(ar,{components:t,transformHtmlToComponents:y,children:c(sr,{environment:l,debug:a,client:h,children:c(N,{theme:n,children:r})})})})})})}o(lr,"RemoteFlows");export{ae as ContractAmendmentConfirmationForm,de as ContractAmendmentFlow,ie as ContractAmendmentForm,le as ContractAmendmentSubmit,be as ContractorOnboardingFlow,ee as CostCalculatorFlow,re as CostCalculatorForm,te as CostCalculatorResetButton,oe as CostCalculatorSubmitButton,Te as CreateCompanyFlow,ne as EstimationResults,he as OnboardingFlow,lr as RemoteFlows,se as SummaryResults,Pe as TerminationDialogInfoContent,Ce as TerminationFlow,ye as TerminationReasonsDetailContent,J as ZendeskTriggerButton,X as buildCostCalculatorEstimationPayload,Re as contractorPlusProductIdentifier,Ee as contractorStandardProductIdentifier,$ as convertFromCents,Fe as corProductIdentifier,we as eorProductIdentifier,xe as onboardingWorkflows,ve as pricingPlanDetails,H as transformYupErrorsIntoObject,pe as useContractAmendment,j as useCostCalculator,q as useCostCalculatorEstimationCsv,Y as useCostCalculatorEstimationPdf,ce as useDiscardEmploymentMutation,me as useEmploymentQuery,ke as useMagicLink,fe as usePaidTimeoffBreakdownQuery,ge as useTimeOffLeavePoliciesSummaryQuery,ue as useTimeOffQuery,Z as zendeskArticles};
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/common/api/index.ts","../src/RemoteFlowsProvider.tsx","../src/lib/applyTheme.ts","../src/theme.tsx","../src/environments.ts","../src/lib/version.ts","../src/auth/createClient.ts","../src/components/error-handling/RemoteFlowsErrorBoundary.tsx","../src/components/error-handling/utils.ts","../src/components/error-handling/telemetryService.ts","../src/lazy-default-components.ts","../src/components/form/FormLoadingFallback.tsx","../src/components/form/DelayedFallback.tsx","../src/queryConfig.ts"],"sourcesContent":["import { useMutation } from '@tanstack/react-query';\nimport { MagicLinkParams, postGenerateMagicLink } from '@/src/client';\nimport { useClient } from '@/src/context';\n\nimport { Client } from '@/src/client/client';\n\nexport const useMagicLink = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (params: MagicLinkParams) => {\n return postGenerateMagicLink({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: params,\n });\n },\n });\n};\n","import { QueryClientProvider } from '@tanstack/react-query';\nimport type { PropsWithChildren } from 'react';\nimport React, { useMemo, Suspense, useRef } from 'react';\n\nimport { ThemeProvider } from '@/src/theme';\nimport { FormFieldsContext, RemoteFlowContext } from './context';\nimport { Components, RemoteFlowsSDKProps } from './types/remoteFlows';\nimport { createClient } from '@/src/auth/createClient';\nimport { Client } from '@/src/client/client';\nimport { RemoteFlowsErrorBoundary } from '@/src/components/error-handling/RemoteFlowsErrorBoundary';\nimport { lazyDefaultComponents } from './lazy-default-components';\nimport { FormLoadingFallback } from '@/src/components/form/FormLoadingFallback';\nimport { DelayedFallback } from '@/src/components/form/DelayedFallback';\nimport { getQueryClient } from '@/src/queryConfig';\nimport { ErrorContextProvider } from '@/src/components/error-handling/ErrorContext';\n\ntype RemoteFlowContextWrapperProps = {\n children: React.ReactNode;\n environment?: RemoteFlowsSDKProps['environment'];\n debug?: RemoteFlowsSDKProps['debug'];\n client: Client;\n};\n\nfunction RemoteFlowContextWrapper({\n children,\n client,\n}: RemoteFlowContextWrapperProps) {\n return (\n <RemoteFlowContext.Provider value={{ client }}>\n {children}\n </RemoteFlowContext.Provider>\n );\n}\n\nexport function FormFieldsProvider({\n children,\n components: userComponents = {},\n}: PropsWithChildren<{\n components?: Components;\n}>) {\n // Merge user components with lazy defaults\n // User-provided components take precedence, lazy defaults are only used as fallback\n const resolvedComponents = useMemo(() => {\n // Spread lazy defaults first, then override with user components\n return {\n ...lazyDefaultComponents,\n ...userComponents,\n } as Components;\n }, [userComponents]);\n\n return (\n <FormFieldsContext.Provider value={{ components: resolvedComponents }}>\n <Suspense\n fallback={\n <DelayedFallback fallback={<FormLoadingFallback />} delay={200} />\n }\n >\n {children}\n </Suspense>\n </FormFieldsContext.Provider>\n );\n}\n\nconst queryClient = getQueryClient();\n\nexport function RemoteFlows({\n auth,\n children,\n components,\n theme,\n proxy,\n environment,\n errorBoundary = { useParentErrorBoundary: true },\n debug = false,\n credentials,\n}: PropsWithChildren<RemoteFlowsSDKProps>) {\n // WE NEED TO FIX: react-hooks/refs - Cannot access refs during render\n // eslint-disable-next-line react-hooks/refs\n const remoteApiClient = useRef(\n createClient(auth, { proxy, environment, credentials }),\n ).current;\n\n return (\n <ErrorContextProvider>\n <RemoteFlowsErrorBoundary\n errorBoundary={errorBoundary}\n debug={debug}\n environment={environment}\n client={remoteApiClient}\n >\n <QueryClientProvider client={queryClient}>\n <FormFieldsProvider components={components}>\n <RemoteFlowContextWrapper\n environment={environment}\n debug={debug}\n client={remoteApiClient}\n >\n <ThemeProvider theme={theme}>{children}</ThemeProvider>\n </RemoteFlowContextWrapper>\n </FormFieldsProvider>\n </QueryClientProvider>\n </RemoteFlowsErrorBoundary>\n </ErrorContextProvider>\n );\n}\n","import {\n CssThemeBorder,\n CssThemeColors,\n CssThemeFont,\n CssThemeSpacing,\n ThemeColors,\n ThemeFont,\n ThemeProviderProps,\n} from '@/src/types/theme';\n\nfunction setCssProperties(variables: Record<string, string>) {\n const root = document.documentElement;\n Object.keys(variables).forEach((v) => {\n const propertyVal = variables[v];\n if (propertyVal) {\n root.style.setProperty(v, propertyVal);\n }\n });\n}\n\nfunction mapThemeColors(colors: ThemeColors): CssThemeColors {\n const result: CssThemeColors = {};\n Object.keys(colors).forEach((key) => {\n result[`--${key}` as keyof CssThemeColors] =\n colors[key as keyof ThemeColors];\n });\n return result;\n}\n\nfunction mapThemeSpacing(spacing: string): CssThemeSpacing {\n return {\n '--spacing': spacing,\n };\n}\n\nfunction mapThemeBorderRadius(borderRadius: string): CssThemeBorder {\n return {\n '--radius': borderRadius,\n };\n}\n\nfunction mapThemeFont(font: ThemeFont): CssThemeFont {\n return {\n '--fontSizeBase': font.fontSizeBase,\n };\n}\n\nexport function applyTheme(theme: ThemeProviderProps['theme']) {\n if (theme?.colors) {\n setCssProperties(mapThemeColors(theme.colors));\n }\n\n if (theme?.spacing) {\n setCssProperties(mapThemeSpacing(theme.spacing));\n }\n\n if (theme?.borderRadius) {\n setCssProperties(mapThemeBorderRadius(theme.borderRadius));\n }\n\n if (theme?.font) {\n setCssProperties(mapThemeFont(theme.font));\n }\n}\n","import { applyTheme } from '@/src/lib/applyTheme';\nimport { createContext, useEffect, useMemo } from 'react';\nimport { ThemeProviderProps } from './types/theme';\n\nconst ThemeContext = createContext<Omit<ThemeProviderProps, 'children'>>({\n theme: {},\n});\n\nexport function ThemeProvider(props: ThemeProviderProps) {\n useEffect(() => {\n if (props.theme && Object.keys(props.theme).length > 0) {\n applyTheme(props.theme);\n }\n }, [props.theme]);\n\n const value = useMemo(() => {\n return { theme: props.theme };\n }, [props.theme]);\n\n return (\n <ThemeContext.Provider value={value}>\n {props.children}\n </ThemeContext.Provider>\n );\n}\n","export type Environment =\n | 'local'\n | 'partners'\n | 'production'\n | 'sandbox'\n | 'staging';\n\nexport const ENVIRONMENTS: Record<Environment, string> = {\n local: 'http://localhost:4000/api/eor',\n partners: 'https://gateway.partners.remote-sandbox.com',\n production: 'https://gateway.remote.com',\n sandbox: 'https://gateway.remote-sandbox.com',\n staging: 'https://gateway.niceremote.com',\n};\n\nexport const defaultEnvironment: Environment = 'production';\n","/**\n * SDK version constant\n * Retrieved from package.json at build time\n * Falls back to 'unknown' if VERSION env var is not set\n */\nexport const npmPackageVersion = process.env.VERSION || 'unknown';\n","import { createClient as createHeyApiClient } from '@/src/client/client';\nimport { client } from '@/src/client/client.gen';\nimport { ENVIRONMENTS } from '@/src/environments';\nimport { npmPackageVersion } from '@/src/lib/version';\nimport { RemoteFlowsSDKProps } from '@/src/types/remoteFlows';\nimport { debug } from '@/src/lib/utils';\n\ntype AuthResponse = {\n accessToken: string;\n expiresIn: number;\n};\n\ntype Options = Partial<{\n environment: keyof typeof ENVIRONMENTS;\n proxy: RemoteFlowsSDKProps['proxy'];\n credentials: RemoteFlowsSDKProps['credentials'];\n}>;\n\nfunction isValidUrl(url: string) {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function createClient(\n auth?: () => Promise<AuthResponse>,\n options?: Options,\n) {\n const sessionRef = {\n current: null as { accessToken: string; expiresAt: number } | null,\n };\n\n const baseUrl = options?.environment\n ? ENVIRONMENTS[options?.environment]\n : process.env.REMOTE_GATEWAY_URL;\n\n const clientConfig = client.getConfig();\n\n if (options?.environment && options?.environment !== 'production') {\n debug(npmPackageVersion);\n }\n\n const isValidProxy = !!options?.proxy && isValidUrl(options.proxy.url);\n\n if (options?.proxy && !isValidProxy) {\n console.error('Invalid proxy URL provided. Using default base URL.');\n }\n\n return createHeyApiClient({\n ...clientConfig,\n ...(options?.credentials && { credentials: options.credentials }),\n headers: {\n ...clientConfig.headers,\n ...(isValidProxy ? options?.proxy?.headers : {}),\n 'X-Client-Name': 'remote-flows-sdk',\n 'X-Client-Version': npmPackageVersion,\n },\n baseUrl: isValidProxy ? options.proxy?.url : baseUrl,\n auth: async () => {\n if (!auth) {\n return undefined;\n }\n\n function hasTokenExpired(expiresAt: number | undefined) {\n return !expiresAt || Date.now() + 60000 > expiresAt;\n }\n\n if (\n !sessionRef.current ||\n hasTokenExpired(sessionRef.current.expiresAt)\n ) {\n try {\n const data = await auth();\n sessionRef.current = {\n accessToken: data.accessToken,\n expiresAt: Date.now() + data.expiresIn * 1000,\n };\n } catch (error) {\n console.error('Failed to fetch auth token:', error);\n return undefined;\n }\n }\n\n return sessionRef.current?.accessToken;\n },\n });\n}\n","import { Component, ErrorInfo, ReactNode } from 'react';\nimport { reportTelemetryError } from '@/src/components/error-handling/telemetryService';\nimport { npmPackageVersion } from '@/src/lib/version';\nimport {\n ErrorContext,\n ErrorContextValue,\n} from '@/src/components/error-handling/ErrorContext';\nimport { Environment } from '@/src/environments';\nimport { Client } from '@/src/client/client';\n\ntype ErrorBoundaryState = {\n hasError: boolean;\n error: Error | null;\n};\n\ninterface RemoteFlowsErrorBoundaryProps {\n children: ReactNode;\n /**\n * Debug mode to enable logging of errors to the console.\n * @default false\n */\n debug: boolean;\n /**\n * Environment to use for API calls.\n * If not provided, the SDK will use production environment.\n */\n environment?: Environment;\n\n /**\n * Client to use for API calls.\n * If not provided, the SDK will crash\n */\n client: Client;\n /**\n * Error boundary configuration.\n */\n errorBoundary?: {\n /**\n * If true, re-throws errors to parent error boundary.\n * If false, shows fallback UI to prevent crashes.\n * @default false\n */\n useParentErrorBoundary?: boolean;\n /**\n * Custom fallback UI to show when an error occurs.\n * fallback only works when rethrow is false.\n * If not provided, shows default error message.\n */\n fallback?: ReactNode | ((error: Error) => ReactNode);\n };\n}\n\nexport const FallbackErrorBoundary = () => {\n return (\n <div\n style={{\n padding: '20px',\n border: '1px solid #dc2626',\n borderRadius: '4px',\n backgroundColor: '#fef2f2',\n color: '#991b1b',\n }}\n >\n Something went wrong in RemoteFlows. Please refresh the page.\n </div>\n );\n};\n\nexport class RemoteFlowsErrorBoundary extends Component<\n RemoteFlowsErrorBoundaryProps,\n ErrorBoundaryState\n> {\n constructor(props: RemoteFlowsErrorBoundaryProps) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return {\n hasError: true,\n error,\n };\n }\n\n static contextType = ErrorContext;\n declare context: ErrorContextValue | undefined;\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n console.error('[RemoteFlows] Error caught:', error, errorInfo);\n\n const errorContext = this.context?.errorContextRef.current;\n const params = {\n error,\n sdkVersion: npmPackageVersion,\n client: this.props.client,\n environment: this.props.environment,\n };\n\n reportTelemetryError(params, errorContext, {\n debugMode: this.props.debug,\n });\n\n if (this.props.errorBoundary?.useParentErrorBoundary) {\n throw error;\n }\n }\n\n render(): ReactNode {\n if (this.state.hasError && this.state.error) {\n // If custom fallback provided, use it\n if (this.props.errorBoundary?.fallback) {\n return typeof this.props.errorBoundary?.fallback === 'function'\n ? this.props.errorBoundary?.fallback(this.state.error)\n : this.props.errorBoundary?.fallback;\n }\n\n // Default fallback\n return <FallbackErrorBoundary />;\n }\n\n return this.props.children;\n }\n}\n","import {\n ErrorCategory,\n ErrorSeverity,\n} from '@/src/components/error-handling/types';\n\n/**\n * Error pattern matching configuration\n * Patterns are checked in order - first match wins\n */\ntype ErrorPattern = {\n category: ErrorCategory;\n severity: ErrorSeverity;\n messagePatterns: string[];\n namePatterns: string[];\n};\n\n/**\n * Configuration for error categorization and severity determination\n * Order matters - patterns are checked from top to bottom\n */\nconst ERROR_PATTERNS: readonly ErrorPattern[] = [\n // Priority 1: React rendering errors (most critical)\n {\n category: 'RENDER_ERROR',\n severity: 'critical',\n messagePatterns: [\n 'element type is invalid',\n 'hydration',\n 'rendered more hooks',\n 'rendered fewer hooks',\n ],\n namePatterns: ['invariantviolation'],\n },\n\n // Priority 2: Hook errors (critical React violations)\n {\n category: 'HOOK_ERROR',\n severity: 'critical',\n messagePatterns: ['hook', 'useeffect', 'usestate', 'usecontext'],\n namePatterns: [],\n },\n\n // Priority 4: State errors (must come before render to avoid \"render\" keyword collision)\n {\n category: 'STATE_ERROR',\n severity: 'error',\n messagePatterns: ['state', 'context', 'provider'],\n namePatterns: [],\n },\n\n // Priority 6: Lower priority render errors\n {\n category: 'RENDER_ERROR',\n severity: 'critical',\n messagePatterns: ['render', 'component'],\n namePatterns: [],\n },\n\n // Priority 7: Runtime errors (critical TypeErrors and ReferenceErrors)\n {\n category: 'RUNTIME_ERROR',\n severity: 'critical',\n messagePatterns: [],\n namePatterns: ['typeerror', 'referenceerror'],\n },\n\n // Priority 8: Range errors (non-critical runtime errors)\n {\n category: 'RUNTIME_ERROR',\n severity: 'error',\n messagePatterns: [],\n namePatterns: ['rangeerror'],\n },\n] as const;\n\n/**\n * Additional severity patterns that override category-based severity\n */\nconst CRITICAL_MESSAGE_PATTERNS = [\n 'cannot read property',\n 'is not a function',\n 'is not defined',\n] as const;\n\nconst WARNING_MESSAGE_PATTERNS = ['warning', 'deprecated'] as const;\n\n/**\n * Categorizes error based on error message and name using pattern matching\n */\nexport const categorizeError = (error: Error): ErrorCategory => {\n const message = error.message.toLowerCase();\n const name = error.name.toLowerCase();\n\n // Early return for warnings to prevent categorization as other error types\n if (WARNING_MESSAGE_PATTERNS.some((p) => message.includes(p))) {\n return 'UNKNOWN_ERROR';\n }\n\n // Check each pattern in priority order\n for (const pattern of ERROR_PATTERNS) {\n const matchesMessage = pattern.messagePatterns.some((p) =>\n message.includes(p),\n );\n const matchesName = pattern.namePatterns.some((p) => name.includes(p));\n\n if (matchesMessage || matchesName) {\n return pattern.category;\n }\n }\n\n return 'UNKNOWN_ERROR';\n};\n\n/**\n * Determines error severity based on category and message patterns\n */\nexport const determineErrorSeverity = (\n error: Error,\n category: ErrorCategory,\n): ErrorSeverity => {\n const message = error.message.toLowerCase();\n const name = error.name.toLowerCase();\n\n // Check for warning patterns first\n if (WARNING_MESSAGE_PATTERNS.some((p) => message.includes(p))) {\n return 'warning';\n }\n\n // Check for critical message patterns that override category\n if (CRITICAL_MESSAGE_PATTERNS.some((p) => message.includes(p))) {\n return 'critical';\n }\n\n // Find the exact pattern that matched this error\n // We need to re-match to get the correct severity for errors with multiple patterns\n for (const pattern of ERROR_PATTERNS) {\n if (pattern.category !== category) continue;\n\n const matchesMessage = pattern.messagePatterns.some((p) =>\n message.includes(p),\n );\n const matchesName = pattern.namePatterns.some((p) => name.includes(p));\n\n if (matchesMessage || matchesName) {\n return pattern.severity;\n }\n }\n\n // Default to error for unknown categories\n return 'error';\n};\n","import { Client } from '@/src/client/client';\nimport {\n ErrorContextData,\n ErrorPayload,\n} from '@/src/components/error-handling/types';\nimport {\n categorizeError,\n determineErrorSeverity,\n} from '@/src/components/error-handling/utils';\nimport { defaultEnvironment, Environment } from '@/src/environments';\nimport { postReportErrorsTelemetry } from '@/src/client/sdk.gen';\n\nconst recentlyReported = new Map<string, number>();\nconst DEDUPE_WINDOW_MS = 100; // 100ms should catch Strict Mode double-invokes\n\nfunction getErrorSignature(error: Error): string {\n return `${error.name}:${error.message}:${error.stack?.substring(0, 100) || ''}`;\n}\n\n/**\n * Checks if the error has been reported recently to avoid duplicate reports\n * This is caused by React Strict Mode double-invoking the error boundary.\n * @param error - The error to check\n * @returns True if the error has been reported recently, false otherwise\n */\nfunction wasRecentlyReported(error: Error): boolean {\n const signature = getErrorSignature(error);\n const lastReported = recentlyReported.get(signature);\n const now = Date.now();\n\n if (lastReported && now - lastReported < DEDUPE_WINDOW_MS) {\n return true;\n }\n\n recentlyReported.set(signature, now);\n\n // Cleanup old entries periodically\n if (recentlyReported.size > 100) {\n for (const [sig, timestamp] of recentlyReported.entries()) {\n if (now - timestamp > DEDUPE_WINDOW_MS) {\n recentlyReported.delete(sig);\n }\n }\n }\n\n return false;\n}\n\n/**\n * Logs error payload to console in debug mode\n * Shows what would be sent to telemetry API\n */\nexport const logDebugPayload = (\n payload: ErrorPayload,\n debugMode: boolean,\n): void => {\n if (!debugMode) return;\n\n const severityEmoji = {\n critical: '🔴',\n error: '🟠',\n warning: '🟡',\n info: '🔵',\n };\n\n console.group('📮 [RemoteFlows] Error Report (Debug Mode)');\n console.log('─────────────────────────────────────────');\n console.log('❌ Error:', payload.error.message);\n console.log('📛 Name:', payload.error.name);\n console.log(\n `${severityEmoji[payload.error.severity]} Severity:`,\n payload.error.severity.toUpperCase(),\n );\n console.log('🏷️ Category:', payload.error.category);\n\n if (payload.context?.flow) {\n console.log('🔄 Flow:', payload.context.flow);\n }\n\n if (payload.context?.step !== undefined) {\n console.log('📍 Step:', payload.context.step);\n }\n\n if (payload.context?.metadata) {\n console.log('📝 Context Metadata:', payload.context.metadata);\n }\n\n console.log('⏰ Timestamp:', payload.metadata.timestamp);\n console.log('🌐 URL:', payload.metadata.url);\n console.log('📦 SDK Version:', payload.metadata.sdk_version);\n\n if (payload.error.stack) {\n console.log('\\n📚 Stack Trace:');\n console.log(payload.error.stack);\n }\n\n console.log('\\n📋 Full Payload (would be sent to telemetry):');\n console.log(JSON.stringify(payload, null, 2));\n console.log('─────────────────────────────────────────');\n console.groupEnd();\n};\n\nconst getUrl = () => {\n if (typeof window !== 'undefined') {\n return window.location.href;\n }\n return 'unknown';\n};\n\nconst encodeStack = (stack?: string) => {\n return stack ? btoa(stack) : '';\n};\n\nexport function buildErrorPayload(\n error: Error,\n sdkVersion: string,\n environment: Environment,\n context?: ErrorContextData,\n): ErrorPayload {\n const category = categorizeError(error);\n const severity = determineErrorSeverity(error, category);\n const url = getUrl();\n const encodedStack = encodeStack(error.stack);\n\n const payload: ErrorPayload = {\n error: {\n message: error.message,\n stack: encodedStack,\n name: error.name,\n category,\n severity,\n },\n context,\n metadata: {\n sdk_version: sdkVersion,\n timestamp: new Date().toISOString(),\n url,\n user_agent:\n typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',\n environment: environment,\n },\n };\n\n return payload;\n}\n\n/**\n * Determines if telemetry should be sent based on environment and URL\n * Send telemetry when environment and URL \"match\":\n * - local env + localhost URL → send (local testing)\n * - production env + production URL → send (real errors)\n * - local env + production URL → skip (edge case)\n * - production env + localhost URL → skip (edge case)\n */\nfunction shouldSendTelemetry(environment: Environment, url: string): boolean {\n const isLocalEnv = environment === 'local';\n const isLocalhostUrl = url.includes('localhost') || url.includes('127.0.0.1');\n\n // Send when both are local OR both are production\n return isLocalEnv === isLocalhostUrl;\n}\n\nexport function reportTelemetryError(\n params: {\n error: Error;\n sdkVersion: string;\n client: Client;\n environment?: Environment;\n },\n context?: ErrorContextData,\n options: {\n debugMode?: boolean;\n } = {\n debugMode: false,\n },\n): void {\n const { error, sdkVersion, client, environment } = params;\n if (wasRecentlyReported(error)) {\n if (options.debugMode) {\n console.log('[RemoteFlows] Skipping duplicate error report');\n }\n return;\n }\n\n const payload: ErrorPayload = buildErrorPayload(\n error,\n sdkVersion,\n environment ?? defaultEnvironment,\n context,\n );\n\n // Log to console in debug mode\n if (options.debugMode) {\n logDebugPayload(payload, Boolean(options.debugMode));\n }\n\n const shouldSend = shouldSendTelemetry(\n environment ?? defaultEnvironment,\n payload.metadata.url,\n );\n\n if (!shouldSend) {\n if (options.debugMode) {\n console.log(\n '[RemoteFlows] Skipping telemetry API call (local environment)',\n );\n }\n return;\n }\n\n postReportErrorsTelemetry({\n client,\n body: payload,\n }).catch((err) => {\n // Silently fail - don't crash if telemetry reporting fails\n if (options.debugMode) {\n console.warn('[RemoteFlows] Failed to report error telemetry:', err);\n }\n });\n}\n","import { lazy } from 'react';\nimport type { Components } from './types/remoteFlows';\n\n/**\n * Lazy-loaded default field components for RemoteFlows.\n *\n * These components are loaded on-demand using React.lazy() and code-splitting.\n * Only components that are not provided by the user will be loaded.\n *\n * This reduces the initial bundle size for users who provide custom components.\n */\nexport const lazyDefaultComponents: Components = {\n button: lazy(() =>\n import('./components/form/fields/default/ButtonDefault').then((m) => ({\n default: m.ButtonDefault,\n })),\n ),\n checkbox: lazy(() =>\n import('./components/form/fields/default/CheckboxFieldDefault').then(\n (m) => ({\n default: m.CheckboxFieldDefault,\n }),\n ),\n ),\n countries: lazy(() =>\n import('./components/form/fields/default/CountryFieldDefault').then(\n (m) => ({\n default: m.CountryFieldDefault,\n }),\n ),\n ),\n date: lazy(() =>\n import('./components/form/fields/default/DatePickerFieldDefault').then(\n (m) => ({\n default: m.DatePickerFieldDefault,\n }),\n ),\n ),\n drawer: lazy(() =>\n import('./components/shared/drawer/DrawerDefault').then((m) => ({\n default: m.DrawerDefault,\n })),\n ),\n email: lazy(() =>\n import('./components/form/fields/default/EmailFieldDefault').then((m) => ({\n default: m.EmailFieldDefault,\n })),\n ),\n fieldsetToggle: lazy(() =>\n import('./components/form/fields/default/FieldsetToggleButtonDefault').then(\n (m) => ({\n default: m.FieldsetToggleButtonDefault,\n }),\n ),\n ),\n file: lazy(() =>\n import('./components/form/fields/default/FileUploadFieldDefault').then(\n (m) => ({\n default: m.FileUploadFieldDefault,\n }),\n ),\n ),\n 'multi-select': lazy(() =>\n import('./components/form/fields/default/MultiSelectFieldDefault').then(\n (m) => ({\n default: m.MultiSelectFieldDefault,\n }),\n ),\n ),\n number: lazy(() =>\n import('./components/form/fields/default/NumberFieldDefault').then((m) => ({\n default: m.NumberFieldDefault,\n })),\n ),\n radio: lazy(() =>\n import('./components/form/fields/default/RadioGroupFieldDefault').then(\n (m) => ({\n default: m.RadioGroupFieldDefault,\n }),\n ),\n ),\n select: lazy(() =>\n import('./components/form/fields/default/SelectFieldDefault').then((m) => ({\n default: m.SelectFieldDefault,\n })),\n ),\n statement: lazy(() =>\n import('./components/form/fields/default/StatementDefault').then((m) => ({\n default: m.StatementDefault,\n })),\n ),\n textarea: lazy(() =>\n import('./components/form/fields/default/TextAreaFieldDefault').then(\n (m) => ({\n default: m.TextAreaFieldDefault,\n }),\n ),\n ),\n tel: lazy(() =>\n import('./components/form/fields/default/TelFieldDefault').then((m) => ({\n default: m.TelFieldDefault,\n })),\n ),\n text: lazy(() =>\n import('./components/form/fields/default/TextFieldDefault').then((m) => ({\n default: m.TextFieldDefault,\n })),\n ),\n zendeskDrawer: lazy(() =>\n import('./components/shared/zendesk-drawer/ZendeskDrawerDefault').then(\n (m) => ({\n default: m.ZendeskDrawerDefault,\n }),\n ),\n ),\n table: lazy(() =>\n import('./components/shared/table/TableFieldDefault').then((m) => ({\n default: m.TableFieldDefault,\n })),\n ),\n 'work-schedule': lazy(() =>\n import('./components/form/fields/default/WorkScheduleFieldDefault').then(\n (m) => ({\n default: m.WorkScheduleFieldDefault,\n }),\n ),\n ),\n pdfViewer: lazy(() =>\n import('./components/shared/pdf-preview/PDFPreviewDefault').then((m) => ({\n default: m.PDFPreviewDefault,\n })),\n ),\n};\n","/**\n * Loading fallback component shown while lazy-loaded form components are being fetched.\n *\n * This component displays a skeleton loading state using pulse animation\n * while React Suspense loads the default field components.\n */\nexport function FormLoadingFallback() {\n return (\n <div className='animate-pulse space-y-4 p-4'>\n <div className='h-4 bg-gray-200 rounded w-1/4' />\n <div className='h-10 bg-gray-200 rounded' />\n <div className='h-4 bg-gray-200 rounded w-1/4' />\n <div className='h-10 bg-gray-200 rounded' />\n </div>\n );\n}\n","import { useState, useEffect, ReactNode } from 'react';\n\ntype DelayedFallbackProps = {\n /** The fallback component to show after the delay */\n fallback: ReactNode;\n /** Delay in milliseconds before showing the fallback (default: 200ms) */\n delay?: number;\n};\n\n/**\n * A wrapper component that delays showing a fallback for a specified time.\n *\n * This prevents UI flashing when lazy-loaded components resolve quickly.\n * If the component loads within the delay period, no fallback is shown at all.\n *\n * @example\n * <Suspense fallback={<DelayedFallback fallback={<LoadingSkeleton />} />}>\n * <LazyComponent />\n * </Suspense>\n */\nexport function DelayedFallback({\n fallback,\n delay = 200,\n}: DelayedFallbackProps) {\n const [showFallback, setShowFallback] = useState(false);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setShowFallback(true);\n }, delay);\n\n return () => clearTimeout(timer);\n }, [delay]);\n\n return showFallback ? <>{fallback}</> : null;\n}\n","import { QueryClient } from '@tanstack/react-query';\n\nexport const getQueryClient = () => new QueryClient();\n"],"mappings":"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","names":["useMutation","useMagicLink","__name","client","useClient","useMutation","params","postGenerateMagicLink","QueryClientProvider","useMemo","Suspense","useRef","setCssProperties","variables","root","v","propertyVal","__name","mapThemeColors","colors","result","key","mapThemeSpacing","spacing","mapThemeBorderRadius","borderRadius","mapThemeFont","font","applyTheme","theme","createContext","useEffect","useMemo","jsx","ThemeContext","createContext","ThemeProvider","props","useEffect","applyTheme","value","useMemo","__name","ENVIRONMENTS","defaultEnvironment","npmPackageVersion","isValidUrl","url","__name","createClient","auth","options","sessionRef","baseUrl","ENVIRONMENTS","clientConfig","client","debug","npmPackageVersion","isValidProxy","hasTokenExpired","expiresAt","data","error","Component","ERROR_PATTERNS","CRITICAL_MESSAGE_PATTERNS","WARNING_MESSAGE_PATTERNS","categorizeError","__name","error","message","name","p","pattern","matchesMessage","matchesName","determineErrorSeverity","category","recentlyReported","DEDUPE_WINDOW_MS","getErrorSignature","error","__name","wasRecentlyReported","signature","lastReported","now","sig","timestamp","logDebugPayload","payload","debugMode","severityEmoji","getUrl","encodeStack","stack","buildErrorPayload","sdkVersion","environment","context","category","categorizeError","severity","determineErrorSeverity","url","encodedStack","shouldSendTelemetry","isLocalEnv","isLocalhostUrl","reportTelemetryError","params","options","client","defaultEnvironment","postReportErrorsTelemetry","err","jsx","FallbackErrorBoundary","__name","RemoteFlowsErrorBoundary","Component","props","error","ErrorContext","errorInfo","errorContext","params","npmPackageVersion","reportTelemetryError","lazy","lazyDefaultComponents","m","jsx","jsxs","FormLoadingFallback","__name","useState","useEffect","Fragment","jsx","DelayedFallback","fallback","delay","showFallback","setShowFallback","useState","useEffect","timer","__name","QueryClient","getQueryClient","__name","QueryClient","jsx","RemoteFlowContextWrapper","children","client","RemoteFlowContext","__name","FormFieldsProvider","userComponents","resolvedComponents","useMemo","lazyDefaultComponents","FormFieldsContext","Suspense","DelayedFallback","FormLoadingFallback","queryClient","getQueryClient","RemoteFlows","auth","components","theme","proxy","environment","errorBoundary","debug","credentials","remoteApiClient","useRef","createClient","ErrorContextProvider","RemoteFlowsErrorBoundary","QueryClientProvider","ThemeProvider"]}
|
|
1
|
+
{"version":3,"sources":["../src/common/api/index.ts","../src/RemoteFlowsProvider.tsx","../src/lib/applyTheme.ts","../src/theme.tsx","../src/environments.ts","../src/lib/version.ts","../src/auth/createClient.ts","../src/components/error-handling/RemoteFlowsErrorBoundary.tsx","../src/components/error-handling/utils.ts","../src/components/error-handling/telemetryService.ts","../src/lazy-default-components.ts","../src/components/form/FormLoadingFallback.tsx","../src/components/form/DelayedFallback.tsx","../src/queryConfig.ts"],"sourcesContent":["import { useMutation } from '@tanstack/react-query';\nimport { MagicLinkParams, postGenerateMagicLink } from '@/src/client';\nimport { useClient } from '@/src/context';\n\nimport { Client } from '@/src/client/client';\n\nexport const useMagicLink = () => {\n const { client } = useClient();\n return useMutation({\n mutationFn: (params: MagicLinkParams) => {\n return postGenerateMagicLink({\n client: client as Client,\n headers: {\n Authorization: ``,\n },\n body: params,\n });\n },\n });\n};\n","import { QueryClientProvider } from '@tanstack/react-query';\nimport type { PropsWithChildren } from 'react';\nimport React, { useMemo, Suspense, useRef } from 'react';\n\nimport { ThemeProvider } from '@/src/theme';\nimport { FormFieldsContext, RemoteFlowContext } from './context';\nimport { Components, RemoteFlowsSDKProps } from './types/remoteFlows';\nimport { createClient } from '@/src/auth/createClient';\nimport { Client } from '@/src/client/client';\nimport { RemoteFlowsErrorBoundary } from '@/src/components/error-handling/RemoteFlowsErrorBoundary';\nimport { lazyDefaultComponents } from './lazy-default-components';\nimport { FormLoadingFallback } from '@/src/components/form/FormLoadingFallback';\nimport { DelayedFallback } from '@/src/components/form/DelayedFallback';\nimport { getQueryClient } from '@/src/queryConfig';\nimport { ErrorContextProvider } from '@/src/components/error-handling/ErrorContext';\n\ntype RemoteFlowContextWrapperProps = {\n children: React.ReactNode;\n environment?: RemoteFlowsSDKProps['environment'];\n debug?: RemoteFlowsSDKProps['debug'];\n client: Client;\n};\n\nfunction RemoteFlowContextWrapper({\n children,\n client,\n}: RemoteFlowContextWrapperProps) {\n return (\n <RemoteFlowContext.Provider value={{ client }}>\n {children}\n </RemoteFlowContext.Provider>\n );\n}\n\nexport function FormFieldsProvider({\n children,\n components: userComponents = {},\n transformHtmlToComponents,\n}: PropsWithChildren<{\n components?: Components;\n transformHtmlToComponents?: RemoteFlowsSDKProps['transformHtmlToComponents'];\n}>) {\n // Merge user components with lazy defaults\n // User-provided components take precedence, lazy defaults are only used as fallback\n const resolvedComponents = useMemo(() => {\n // Spread lazy defaults first, then override with user components\n return {\n ...lazyDefaultComponents,\n ...userComponents,\n } as Components;\n }, [userComponents]);\n\n // Memoize the context value to avoid unnecessary re-renders\n const contextValue = useMemo(\n () => ({\n components: resolvedComponents,\n transformHtmlToComponents,\n }),\n [resolvedComponents, transformHtmlToComponents],\n );\n\n return (\n <FormFieldsContext.Provider value={contextValue}>\n <Suspense\n fallback={\n <DelayedFallback fallback={<FormLoadingFallback />} delay={200} />\n }\n >\n {children}\n </Suspense>\n </FormFieldsContext.Provider>\n );\n}\n\nconst queryClient = getQueryClient();\n\nexport function RemoteFlows({\n auth,\n children,\n components,\n theme,\n proxy,\n environment,\n errorBoundary = { useParentErrorBoundary: true },\n debug = false,\n credentials,\n transformHtmlToComponents,\n}: PropsWithChildren<RemoteFlowsSDKProps>) {\n // WE NEED TO FIX: react-hooks/refs - Cannot access refs during render\n // eslint-disable-next-line react-hooks/refs\n const remoteApiClient = useRef(\n createClient(auth, { proxy, environment, credentials }),\n ).current;\n\n return (\n <ErrorContextProvider>\n <RemoteFlowsErrorBoundary\n errorBoundary={errorBoundary}\n debug={debug}\n environment={environment}\n client={remoteApiClient}\n >\n <QueryClientProvider client={queryClient}>\n <FormFieldsProvider\n components={components}\n transformHtmlToComponents={transformHtmlToComponents}\n >\n <RemoteFlowContextWrapper\n environment={environment}\n debug={debug}\n client={remoteApiClient}\n >\n <ThemeProvider theme={theme}>{children}</ThemeProvider>\n </RemoteFlowContextWrapper>\n </FormFieldsProvider>\n </QueryClientProvider>\n </RemoteFlowsErrorBoundary>\n </ErrorContextProvider>\n );\n}\n","import {\n CssThemeBorder,\n CssThemeColors,\n CssThemeFont,\n CssThemeSpacing,\n ThemeColors,\n ThemeFont,\n ThemeProviderProps,\n} from '@/src/types/theme';\n\nfunction setCssProperties(variables: Record<string, string>) {\n const root = document.documentElement;\n Object.keys(variables).forEach((v) => {\n const propertyVal = variables[v];\n if (propertyVal) {\n root.style.setProperty(v, propertyVal);\n }\n });\n}\n\nfunction mapThemeColors(colors: ThemeColors): CssThemeColors {\n const result: CssThemeColors = {};\n Object.keys(colors).forEach((key) => {\n result[`--${key}` as keyof CssThemeColors] =\n colors[key as keyof ThemeColors];\n });\n return result;\n}\n\nfunction mapThemeSpacing(spacing: string): CssThemeSpacing {\n return {\n '--spacing': spacing,\n };\n}\n\nfunction mapThemeBorderRadius(borderRadius: string): CssThemeBorder {\n return {\n '--radius': borderRadius,\n };\n}\n\nfunction mapThemeFont(font: ThemeFont): CssThemeFont {\n return {\n '--fontSizeBase': font.fontSizeBase,\n };\n}\n\nexport function applyTheme(theme: ThemeProviderProps['theme']) {\n if (theme?.colors) {\n setCssProperties(mapThemeColors(theme.colors));\n }\n\n if (theme?.spacing) {\n setCssProperties(mapThemeSpacing(theme.spacing));\n }\n\n if (theme?.borderRadius) {\n setCssProperties(mapThemeBorderRadius(theme.borderRadius));\n }\n\n if (theme?.font) {\n setCssProperties(mapThemeFont(theme.font));\n }\n}\n","import { applyTheme } from '@/src/lib/applyTheme';\nimport { createContext, useEffect, useMemo } from 'react';\nimport { ThemeProviderProps } from './types/theme';\n\nconst ThemeContext = createContext<Omit<ThemeProviderProps, 'children'>>({\n theme: {},\n});\n\nexport function ThemeProvider(props: ThemeProviderProps) {\n useEffect(() => {\n if (props.theme && Object.keys(props.theme).length > 0) {\n applyTheme(props.theme);\n }\n }, [props.theme]);\n\n const value = useMemo(() => {\n return { theme: props.theme };\n }, [props.theme]);\n\n return (\n <ThemeContext.Provider value={value}>\n {props.children}\n </ThemeContext.Provider>\n );\n}\n","export type Environment =\n | 'local'\n | 'partners'\n | 'production'\n | 'sandbox'\n | 'staging';\n\nexport const ENVIRONMENTS: Record<Environment, string> = {\n local: 'http://localhost:4000/api/eor',\n partners: 'https://gateway.partners.remote-sandbox.com',\n production: 'https://gateway.remote.com',\n sandbox: 'https://gateway.remote-sandbox.com',\n staging: 'https://gateway.niceremote.com',\n};\n\nexport const defaultEnvironment: Environment = 'production';\n","/**\n * SDK version constant\n * Retrieved from package.json at build time\n * Falls back to 'unknown' if VERSION env var is not set\n */\nexport const npmPackageVersion = process.env.VERSION || 'unknown';\n","import { createClient as createHeyApiClient } from '@/src/client/client';\nimport { client } from '@/src/client/client.gen';\nimport { ENVIRONMENTS } from '@/src/environments';\nimport { npmPackageVersion } from '@/src/lib/version';\nimport { RemoteFlowsSDKProps } from '@/src/types/remoteFlows';\nimport { debug } from '@/src/lib/utils';\n\ntype AuthResponse = {\n accessToken: string;\n expiresIn: number;\n};\n\ntype Options = Partial<{\n environment: keyof typeof ENVIRONMENTS;\n proxy: RemoteFlowsSDKProps['proxy'];\n credentials: RemoteFlowsSDKProps['credentials'];\n}>;\n\nfunction isValidUrl(url: string) {\n try {\n new URL(url);\n return true;\n } catch {\n return false;\n }\n}\n\nexport function createClient(\n auth?: () => Promise<AuthResponse>,\n options?: Options,\n) {\n const sessionRef = {\n current: null as { accessToken: string; expiresAt: number } | null,\n };\n\n const baseUrl = options?.environment\n ? ENVIRONMENTS[options?.environment]\n : process.env.REMOTE_GATEWAY_URL;\n\n const clientConfig = client.getConfig();\n\n if (options?.environment && options?.environment !== 'production') {\n debug(npmPackageVersion);\n }\n\n const isValidProxy = !!options?.proxy && isValidUrl(options.proxy.url);\n\n if (options?.proxy && !isValidProxy) {\n console.error('Invalid proxy URL provided. Using default base URL.');\n }\n\n return createHeyApiClient({\n ...clientConfig,\n ...(options?.credentials && { credentials: options.credentials }),\n headers: {\n ...clientConfig.headers,\n ...(isValidProxy ? options?.proxy?.headers : {}),\n 'X-Client-Name': 'remote-flows-sdk',\n 'X-Client-Version': npmPackageVersion,\n },\n baseUrl: isValidProxy ? options.proxy?.url : baseUrl,\n auth: async () => {\n if (!auth) {\n return undefined;\n }\n\n function hasTokenExpired(expiresAt: number | undefined) {\n return !expiresAt || Date.now() + 60000 > expiresAt;\n }\n\n if (\n !sessionRef.current ||\n hasTokenExpired(sessionRef.current.expiresAt)\n ) {\n try {\n const data = await auth();\n sessionRef.current = {\n accessToken: data.accessToken,\n expiresAt: Date.now() + data.expiresIn * 1000,\n };\n } catch (error) {\n console.error('Failed to fetch auth token:', error);\n return undefined;\n }\n }\n\n return sessionRef.current?.accessToken;\n },\n });\n}\n","import { Component, ErrorInfo, ReactNode } from 'react';\nimport { reportTelemetryError } from '@/src/components/error-handling/telemetryService';\nimport { npmPackageVersion } from '@/src/lib/version';\nimport {\n ErrorContext,\n ErrorContextValue,\n} from '@/src/components/error-handling/ErrorContext';\nimport { Environment } from '@/src/environments';\nimport { Client } from '@/src/client/client';\n\ntype ErrorBoundaryState = {\n hasError: boolean;\n error: Error | null;\n};\n\ninterface RemoteFlowsErrorBoundaryProps {\n children: ReactNode;\n /**\n * Debug mode to enable logging of errors to the console.\n * @default false\n */\n debug: boolean;\n /**\n * Environment to use for API calls.\n * If not provided, the SDK will use production environment.\n */\n environment?: Environment;\n\n /**\n * Client to use for API calls.\n * If not provided, the SDK will crash\n */\n client: Client;\n /**\n * Error boundary configuration.\n */\n errorBoundary?: {\n /**\n * If true, re-throws errors to parent error boundary.\n * If false, shows fallback UI to prevent crashes.\n * @default false\n */\n useParentErrorBoundary?: boolean;\n /**\n * Custom fallback UI to show when an error occurs.\n * fallback only works when rethrow is false.\n * If not provided, shows default error message.\n */\n fallback?: ReactNode | ((error: Error) => ReactNode);\n };\n}\n\nexport const FallbackErrorBoundary = () => {\n return (\n <div\n style={{\n padding: '20px',\n border: '1px solid #dc2626',\n borderRadius: '4px',\n backgroundColor: '#fef2f2',\n color: '#991b1b',\n }}\n >\n Something went wrong in RemoteFlows. Please refresh the page.\n </div>\n );\n};\n\nexport class RemoteFlowsErrorBoundary extends Component<\n RemoteFlowsErrorBoundaryProps,\n ErrorBoundaryState\n> {\n constructor(props: RemoteFlowsErrorBoundaryProps) {\n super(props);\n this.state = {\n hasError: false,\n error: null,\n };\n }\n\n static getDerivedStateFromError(error: Error): ErrorBoundaryState {\n return {\n hasError: true,\n error,\n };\n }\n\n static contextType = ErrorContext;\n declare context: ErrorContextValue | undefined;\n\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\n console.error('[RemoteFlows] Error caught:', error, errorInfo);\n\n const errorContext = this.context?.errorContextRef.current;\n const params = {\n error,\n sdkVersion: npmPackageVersion,\n client: this.props.client,\n environment: this.props.environment,\n };\n\n reportTelemetryError(params, errorContext, {\n debugMode: this.props.debug,\n });\n\n if (this.props.errorBoundary?.useParentErrorBoundary) {\n throw error;\n }\n }\n\n render(): ReactNode {\n if (this.state.hasError && this.state.error) {\n // If custom fallback provided, use it\n if (this.props.errorBoundary?.fallback) {\n return typeof this.props.errorBoundary?.fallback === 'function'\n ? this.props.errorBoundary?.fallback(this.state.error)\n : this.props.errorBoundary?.fallback;\n }\n\n // Default fallback\n return <FallbackErrorBoundary />;\n }\n\n return this.props.children;\n }\n}\n","import {\n ErrorCategory,\n ErrorSeverity,\n} from '@/src/components/error-handling/types';\n\n/**\n * Error pattern matching configuration\n * Patterns are checked in order - first match wins\n */\ntype ErrorPattern = {\n category: ErrorCategory;\n severity: ErrorSeverity;\n messagePatterns: string[];\n namePatterns: string[];\n};\n\n/**\n * Configuration for error categorization and severity determination\n * Order matters - patterns are checked from top to bottom\n */\nconst ERROR_PATTERNS: readonly ErrorPattern[] = [\n // Priority 1: React rendering errors (most critical)\n {\n category: 'RENDER_ERROR',\n severity: 'critical',\n messagePatterns: [\n 'element type is invalid',\n 'hydration',\n 'rendered more hooks',\n 'rendered fewer hooks',\n ],\n namePatterns: ['invariantviolation'],\n },\n\n // Priority 2: Hook errors (critical React violations)\n {\n category: 'HOOK_ERROR',\n severity: 'critical',\n messagePatterns: ['hook', 'useeffect', 'usestate', 'usecontext'],\n namePatterns: [],\n },\n\n // Priority 4: State errors (must come before render to avoid \"render\" keyword collision)\n {\n category: 'STATE_ERROR',\n severity: 'error',\n messagePatterns: ['state', 'context', 'provider'],\n namePatterns: [],\n },\n\n // Priority 6: Lower priority render errors\n {\n category: 'RENDER_ERROR',\n severity: 'critical',\n messagePatterns: ['render', 'component'],\n namePatterns: [],\n },\n\n // Priority 7: Runtime errors (critical TypeErrors and ReferenceErrors)\n {\n category: 'RUNTIME_ERROR',\n severity: 'critical',\n messagePatterns: [],\n namePatterns: ['typeerror', 'referenceerror'],\n },\n\n // Priority 8: Range errors (non-critical runtime errors)\n {\n category: 'RUNTIME_ERROR',\n severity: 'error',\n messagePatterns: [],\n namePatterns: ['rangeerror'],\n },\n] as const;\n\n/**\n * Additional severity patterns that override category-based severity\n */\nconst CRITICAL_MESSAGE_PATTERNS = [\n 'cannot read property',\n 'is not a function',\n 'is not defined',\n] as const;\n\nconst WARNING_MESSAGE_PATTERNS = ['warning', 'deprecated'] as const;\n\n/**\n * Categorizes error based on error message and name using pattern matching\n */\nexport const categorizeError = (error: Error): ErrorCategory => {\n const message = error.message.toLowerCase();\n const name = error.name.toLowerCase();\n\n // Early return for warnings to prevent categorization as other error types\n if (WARNING_MESSAGE_PATTERNS.some((p) => message.includes(p))) {\n return 'UNKNOWN_ERROR';\n }\n\n // Check each pattern in priority order\n for (const pattern of ERROR_PATTERNS) {\n const matchesMessage = pattern.messagePatterns.some((p) =>\n message.includes(p),\n );\n const matchesName = pattern.namePatterns.some((p) => name.includes(p));\n\n if (matchesMessage || matchesName) {\n return pattern.category;\n }\n }\n\n return 'UNKNOWN_ERROR';\n};\n\n/**\n * Determines error severity based on category and message patterns\n */\nexport const determineErrorSeverity = (\n error: Error,\n category: ErrorCategory,\n): ErrorSeverity => {\n const message = error.message.toLowerCase();\n const name = error.name.toLowerCase();\n\n // Check for warning patterns first\n if (WARNING_MESSAGE_PATTERNS.some((p) => message.includes(p))) {\n return 'warning';\n }\n\n // Check for critical message patterns that override category\n if (CRITICAL_MESSAGE_PATTERNS.some((p) => message.includes(p))) {\n return 'critical';\n }\n\n // Find the exact pattern that matched this error\n // We need to re-match to get the correct severity for errors with multiple patterns\n for (const pattern of ERROR_PATTERNS) {\n if (pattern.category !== category) continue;\n\n const matchesMessage = pattern.messagePatterns.some((p) =>\n message.includes(p),\n );\n const matchesName = pattern.namePatterns.some((p) => name.includes(p));\n\n if (matchesMessage || matchesName) {\n return pattern.severity;\n }\n }\n\n // Default to error for unknown categories\n return 'error';\n};\n","import { Client } from '@/src/client/client';\nimport {\n ErrorContextData,\n ErrorPayload,\n} from '@/src/components/error-handling/types';\nimport {\n categorizeError,\n determineErrorSeverity,\n} from '@/src/components/error-handling/utils';\nimport { defaultEnvironment, Environment } from '@/src/environments';\nimport { postReportErrorsTelemetry } from '@/src/client/sdk.gen';\n\nconst recentlyReported = new Map<string, number>();\nconst DEDUPE_WINDOW_MS = 100; // 100ms should catch Strict Mode double-invokes\n\nfunction getErrorSignature(error: Error): string {\n return `${error.name}:${error.message}:${error.stack?.substring(0, 100) || ''}`;\n}\n\n/**\n * Checks if the error has been reported recently to avoid duplicate reports\n * This is caused by React Strict Mode double-invoking the error boundary.\n * @param error - The error to check\n * @returns True if the error has been reported recently, false otherwise\n */\nfunction wasRecentlyReported(error: Error): boolean {\n const signature = getErrorSignature(error);\n const lastReported = recentlyReported.get(signature);\n const now = Date.now();\n\n if (lastReported && now - lastReported < DEDUPE_WINDOW_MS) {\n return true;\n }\n\n recentlyReported.set(signature, now);\n\n // Cleanup old entries periodically\n if (recentlyReported.size > 100) {\n for (const [sig, timestamp] of recentlyReported.entries()) {\n if (now - timestamp > DEDUPE_WINDOW_MS) {\n recentlyReported.delete(sig);\n }\n }\n }\n\n return false;\n}\n\n/**\n * Logs error payload to console in debug mode\n * Shows what would be sent to telemetry API\n */\nexport const logDebugPayload = (\n payload: ErrorPayload,\n debugMode: boolean,\n): void => {\n if (!debugMode) return;\n\n const severityEmoji = {\n critical: '🔴',\n error: '🟠',\n warning: '🟡',\n info: '🔵',\n };\n\n console.group('📮 [RemoteFlows] Error Report (Debug Mode)');\n console.log('─────────────────────────────────────────');\n console.log('❌ Error:', payload.error.message);\n console.log('📛 Name:', payload.error.name);\n console.log(\n `${severityEmoji[payload.error.severity]} Severity:`,\n payload.error.severity.toUpperCase(),\n );\n console.log('🏷️ Category:', payload.error.category);\n\n if (payload.context?.flow) {\n console.log('🔄 Flow:', payload.context.flow);\n }\n\n if (payload.context?.step !== undefined) {\n console.log('📍 Step:', payload.context.step);\n }\n\n if (payload.context?.metadata) {\n console.log('📝 Context Metadata:', payload.context.metadata);\n }\n\n console.log('⏰ Timestamp:', payload.metadata.timestamp);\n console.log('🌐 URL:', payload.metadata.url);\n console.log('📦 SDK Version:', payload.metadata.sdk_version);\n\n if (payload.error.stack) {\n console.log('\\n📚 Stack Trace:');\n console.log(payload.error.stack);\n }\n\n console.log('\\n📋 Full Payload (would be sent to telemetry):');\n console.log(JSON.stringify(payload, null, 2));\n console.log('─────────────────────────────────────────');\n console.groupEnd();\n};\n\nconst getUrl = () => {\n if (typeof window !== 'undefined') {\n return window.location.href;\n }\n return 'unknown';\n};\n\nconst encodeStack = (stack?: string) => {\n return stack ? btoa(stack) : '';\n};\n\nexport function buildErrorPayload(\n error: Error,\n sdkVersion: string,\n environment: Environment,\n context?: ErrorContextData,\n): ErrorPayload {\n const category = categorizeError(error);\n const severity = determineErrorSeverity(error, category);\n const url = getUrl();\n const encodedStack = encodeStack(error.stack);\n\n const payload: ErrorPayload = {\n error: {\n message: error.message,\n stack: encodedStack,\n name: error.name,\n category,\n severity,\n },\n context,\n metadata: {\n sdk_version: sdkVersion,\n timestamp: new Date().toISOString(),\n url,\n user_agent:\n typeof navigator !== 'undefined' ? navigator.userAgent : 'unknown',\n environment: environment,\n },\n };\n\n return payload;\n}\n\n/**\n * Determines if telemetry should be sent based on environment and URL\n * Send telemetry when environment and URL \"match\":\n * - local env + localhost URL → send (local testing)\n * - production env + production URL → send (real errors)\n * - local env + production URL → skip (edge case)\n * - production env + localhost URL → skip (edge case)\n */\nfunction shouldSendTelemetry(environment: Environment, url: string): boolean {\n const isLocalEnv = environment === 'local';\n const isLocalhostUrl = url.includes('localhost') || url.includes('127.0.0.1');\n\n // Send when both are local OR both are production\n return isLocalEnv === isLocalhostUrl;\n}\n\nexport function reportTelemetryError(\n params: {\n error: Error;\n sdkVersion: string;\n client: Client;\n environment?: Environment;\n },\n context?: ErrorContextData,\n options: {\n debugMode?: boolean;\n } = {\n debugMode: false,\n },\n): void {\n const { error, sdkVersion, client, environment } = params;\n if (wasRecentlyReported(error)) {\n if (options.debugMode) {\n console.log('[RemoteFlows] Skipping duplicate error report');\n }\n return;\n }\n\n const payload: ErrorPayload = buildErrorPayload(\n error,\n sdkVersion,\n environment ?? defaultEnvironment,\n context,\n );\n\n // Log to console in debug mode\n if (options.debugMode) {\n logDebugPayload(payload, Boolean(options.debugMode));\n }\n\n const shouldSend = shouldSendTelemetry(\n environment ?? defaultEnvironment,\n payload.metadata.url,\n );\n\n if (!shouldSend) {\n if (options.debugMode) {\n console.log(\n '[RemoteFlows] Skipping telemetry API call (local environment)',\n );\n }\n return;\n }\n\n postReportErrorsTelemetry({\n client,\n body: payload,\n }).catch((err) => {\n // Silently fail - don't crash if telemetry reporting fails\n if (options.debugMode) {\n console.warn('[RemoteFlows] Failed to report error telemetry:', err);\n }\n });\n}\n","import { lazy } from 'react';\nimport type { Components } from './types/remoteFlows';\n\n/**\n * Lazy-loaded default field components for RemoteFlows.\n *\n * These components are loaded on-demand using React.lazy() and code-splitting.\n * Only components that are not provided by the user will be loaded.\n *\n * This reduces the initial bundle size for users who provide custom components.\n */\nexport const lazyDefaultComponents: Components = {\n button: lazy(() =>\n import('./components/form/fields/default/ButtonDefault').then((m) => ({\n default: m.ButtonDefault,\n })),\n ),\n checkbox: lazy(() =>\n import('./components/form/fields/default/CheckboxFieldDefault').then(\n (m) => ({\n default: m.CheckboxFieldDefault,\n }),\n ),\n ),\n countries: lazy(() =>\n import('./components/form/fields/default/CountryFieldDefault').then(\n (m) => ({\n default: m.CountryFieldDefault,\n }),\n ),\n ),\n date: lazy(() =>\n import('./components/form/fields/default/DatePickerFieldDefault').then(\n (m) => ({\n default: m.DatePickerFieldDefault,\n }),\n ),\n ),\n drawer: lazy(() =>\n import('./components/shared/drawer/DrawerDefault').then((m) => ({\n default: m.DrawerDefault,\n })),\n ),\n email: lazy(() =>\n import('./components/form/fields/default/EmailFieldDefault').then((m) => ({\n default: m.EmailFieldDefault,\n })),\n ),\n fieldsetToggle: lazy(() =>\n import('./components/form/fields/default/FieldsetToggleButtonDefault').then(\n (m) => ({\n default: m.FieldsetToggleButtonDefault,\n }),\n ),\n ),\n file: lazy(() =>\n import('./components/form/fields/default/FileUploadFieldDefault').then(\n (m) => ({\n default: m.FileUploadFieldDefault,\n }),\n ),\n ),\n 'multi-select': lazy(() =>\n import('./components/form/fields/default/MultiSelectFieldDefault').then(\n (m) => ({\n default: m.MultiSelectFieldDefault,\n }),\n ),\n ),\n number: lazy(() =>\n import('./components/form/fields/default/NumberFieldDefault').then((m) => ({\n default: m.NumberFieldDefault,\n })),\n ),\n radio: lazy(() =>\n import('./components/form/fields/default/RadioGroupFieldDefault').then(\n (m) => ({\n default: m.RadioGroupFieldDefault,\n }),\n ),\n ),\n select: lazy(() =>\n import('./components/form/fields/default/SelectFieldDefault').then((m) => ({\n default: m.SelectFieldDefault,\n })),\n ),\n statement: lazy(() =>\n import('./components/form/fields/default/StatementDefault').then((m) => ({\n default: m.StatementDefault,\n })),\n ),\n textarea: lazy(() =>\n import('./components/form/fields/default/TextAreaFieldDefault').then(\n (m) => ({\n default: m.TextAreaFieldDefault,\n }),\n ),\n ),\n tel: lazy(() =>\n import('./components/form/fields/default/TelFieldDefault').then((m) => ({\n default: m.TelFieldDefault,\n })),\n ),\n text: lazy(() =>\n import('./components/form/fields/default/TextFieldDefault').then((m) => ({\n default: m.TextFieldDefault,\n })),\n ),\n zendeskDrawer: lazy(() =>\n import('./components/shared/zendesk-drawer/ZendeskDrawerDefault').then(\n (m) => ({\n default: m.ZendeskDrawerDefault,\n }),\n ),\n ),\n table: lazy(() =>\n import('./components/shared/table/TableFieldDefault').then((m) => ({\n default: m.TableFieldDefault,\n })),\n ),\n 'work-schedule': lazy(() =>\n import('./components/form/fields/default/WorkScheduleFieldDefault').then(\n (m) => ({\n default: m.WorkScheduleFieldDefault,\n }),\n ),\n ),\n pdfViewer: lazy(() =>\n import('./components/shared/pdf-preview/PDFPreviewDefault').then((m) => ({\n default: m.PDFPreviewDefault,\n })),\n ),\n};\n","/**\n * Loading fallback component shown while lazy-loaded form components are being fetched.\n *\n * This component displays a skeleton loading state using pulse animation\n * while React Suspense loads the default field components.\n */\nexport function FormLoadingFallback() {\n return (\n <div className='animate-pulse space-y-4 p-4'>\n <div className='h-4 bg-gray-200 rounded w-1/4' />\n <div className='h-10 bg-gray-200 rounded' />\n <div className='h-4 bg-gray-200 rounded w-1/4' />\n <div className='h-10 bg-gray-200 rounded' />\n </div>\n );\n}\n","import { useState, useEffect, ReactNode } from 'react';\n\ntype DelayedFallbackProps = {\n /** The fallback component to show after the delay */\n fallback: ReactNode;\n /** Delay in milliseconds before showing the fallback (default: 200ms) */\n delay?: number;\n};\n\n/**\n * A wrapper component that delays showing a fallback for a specified time.\n *\n * This prevents UI flashing when lazy-loaded components resolve quickly.\n * If the component loads within the delay period, no fallback is shown at all.\n *\n * @example\n * <Suspense fallback={<DelayedFallback fallback={<LoadingSkeleton />} />}>\n * <LazyComponent />\n * </Suspense>\n */\nexport function DelayedFallback({\n fallback,\n delay = 200,\n}: DelayedFallbackProps) {\n const [showFallback, setShowFallback] = useState(false);\n\n useEffect(() => {\n const timer = setTimeout(() => {\n setShowFallback(true);\n }, delay);\n\n return () => clearTimeout(timer);\n }, [delay]);\n\n return showFallback ? <>{fallback}</> : null;\n}\n","import { QueryClient } from '@tanstack/react-query';\n\nexport const getQueryClient = () => new QueryClient();\n"],"mappings":"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","names":["useMutation","useMagicLink","__name","client","useClient","useMutation","params","postGenerateMagicLink","QueryClientProvider","useMemo","Suspense","useRef","setCssProperties","variables","root","v","propertyVal","__name","mapThemeColors","colors","result","key","mapThemeSpacing","spacing","mapThemeBorderRadius","borderRadius","mapThemeFont","font","applyTheme","theme","createContext","useEffect","useMemo","jsx","ThemeContext","createContext","ThemeProvider","props","useEffect","applyTheme","value","useMemo","__name","ENVIRONMENTS","defaultEnvironment","npmPackageVersion","isValidUrl","url","__name","createClient","auth","options","sessionRef","baseUrl","ENVIRONMENTS","clientConfig","client","debug","npmPackageVersion","isValidProxy","hasTokenExpired","expiresAt","data","error","Component","ERROR_PATTERNS","CRITICAL_MESSAGE_PATTERNS","WARNING_MESSAGE_PATTERNS","categorizeError","__name","error","message","name","p","pattern","matchesMessage","matchesName","determineErrorSeverity","category","recentlyReported","DEDUPE_WINDOW_MS","getErrorSignature","error","__name","wasRecentlyReported","signature","lastReported","now","sig","timestamp","logDebugPayload","payload","debugMode","severityEmoji","getUrl","encodeStack","stack","buildErrorPayload","sdkVersion","environment","context","category","categorizeError","severity","determineErrorSeverity","url","encodedStack","shouldSendTelemetry","isLocalEnv","isLocalhostUrl","reportTelemetryError","params","options","client","defaultEnvironment","postReportErrorsTelemetry","err","jsx","FallbackErrorBoundary","__name","RemoteFlowsErrorBoundary","Component","props","error","ErrorContext","errorInfo","errorContext","params","npmPackageVersion","reportTelemetryError","lazy","lazyDefaultComponents","m","jsx","jsxs","FormLoadingFallback","__name","useState","useEffect","Fragment","jsx","DelayedFallback","fallback","delay","showFallback","setShowFallback","useState","useEffect","timer","__name","QueryClient","getQueryClient","__name","QueryClient","jsx","RemoteFlowContextWrapper","children","client","RemoteFlowContext","__name","FormFieldsProvider","userComponents","transformHtmlToComponents","resolvedComponents","useMemo","lazyDefaultComponents","contextValue","FormFieldsContext","Suspense","DelayedFallback","FormLoadingFallback","queryClient","getQueryClient","RemoteFlows","auth","components","theme","proxy","environment","errorBoundary","debug","credentials","remoteApiClient","useRef","createClient","ErrorContextProvider","RemoteFlowsErrorBoundary","QueryClientProvider","ThemeProvider"]}
|
package/dist/internals.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { c as cn, s as sanitizeHtml } from './utils-
|
|
1
|
+
export { c as cn, s as sanitizeHtml } from './utils-C5lwjSxr.js';
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
3
|
import * as class_variance_authority_types from 'class-variance-authority/types';
|
|
4
4
|
import { VariantProps } from 'class-variance-authority';
|
|
@@ -13,8 +13,8 @@ import * as SelectPrimitive from '@radix-ui/react-select';
|
|
|
13
13
|
import * as ScrollAreaPrimitive from '@radix-ui/react-scroll-area';
|
|
14
14
|
import 'clsx';
|
|
15
15
|
import 'yup';
|
|
16
|
-
import './remoteFlows-
|
|
17
|
-
import './types.gen-
|
|
16
|
+
import './remoteFlows-n8r_cW0z.js';
|
|
17
|
+
import './types.gen-DPZBntYq.js';
|
|
18
18
|
import 'react-hook-form';
|
|
19
19
|
|
|
20
20
|
declare const buttonVariants: (props?: ({
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PropsWithChildren, ReactNode } from 'react';
|
|
2
2
|
import { AnySchema } from 'yup';
|
|
3
|
-
import { ae as HelpCenterArticle } from './types.gen-
|
|
3
|
+
import { ae as HelpCenterArticle } from './types.gen-DPZBntYq.js';
|
|
4
4
|
import { ControllerRenderProps, FieldValues, ControllerFieldState } from 'react-hook-form';
|
|
5
5
|
|
|
6
6
|
type ThemeProviderProps = PropsWithChildren<{
|
|
@@ -108,6 +108,23 @@ type FieldDataProps = Partial<JSFField> & {
|
|
|
108
108
|
/**
|
|
109
109
|
* Optional HTML transformer function passed from RemoteFlows context.
|
|
110
110
|
* Use this in custom field components to transform HTML descriptions into React components.
|
|
111
|
+
* @example
|
|
112
|
+
* ```tsx
|
|
113
|
+
* const CustomInput = ({ fieldData }: FieldComponentProps) => {
|
|
114
|
+
* const renderDescription = (desc: string) => {
|
|
115
|
+
* if (fieldData.transformHtml) {
|
|
116
|
+
* return fieldData.transformHtml(desc);
|
|
117
|
+
* }
|
|
118
|
+
* return <div>{desc}</div>;
|
|
119
|
+
* };
|
|
120
|
+
* return (
|
|
121
|
+
* <div>
|
|
122
|
+
* <input />
|
|
123
|
+
* {fieldData.description && renderDescription(fieldData.description)}
|
|
124
|
+
* </div>
|
|
125
|
+
* );
|
|
126
|
+
* };
|
|
127
|
+
* ```
|
|
111
128
|
*/
|
|
112
129
|
transformHtml?: (html: string) => React.ReactNode;
|
|
113
130
|
};
|
|
@@ -398,6 +415,32 @@ type RemoteFlowsSDKProps = Omit<ThemeProviderProps, 'children'> & {
|
|
|
398
415
|
* @default undefined (credentials not included)
|
|
399
416
|
*/
|
|
400
417
|
credentials?: RequestCredentials;
|
|
418
|
+
/**
|
|
419
|
+
* Optional function to transform HTML strings into React components.
|
|
420
|
+
* Allows partners to replace specific HTML patterns (e.g., <details data-component="Accordion">)
|
|
421
|
+
* with custom React components.
|
|
422
|
+
*
|
|
423
|
+
* @param htmlContent - The raw HTML string to transform (unsanitized)
|
|
424
|
+
* @returns React elements or the original HTML
|
|
425
|
+
*
|
|
426
|
+
* @remarks
|
|
427
|
+
* Security: This function receives UNSANITIZED HTML. If you're using html-react-parser,
|
|
428
|
+
* note that it does NOT sanitize HTML by default. You are responsible for sanitizing
|
|
429
|
+
* untrusted HTML before parsing. Consider using DOMPurify or sanitize-html.
|
|
430
|
+
*
|
|
431
|
+
* @example
|
|
432
|
+
* ```tsx
|
|
433
|
+
* import parse, { domToReact } from 'html-react-parser';
|
|
434
|
+
* import DOMPurify from 'dompurify';
|
|
435
|
+
*
|
|
436
|
+
* function transformHtmlToComponents(htmlContent: string) {
|
|
437
|
+
* // Sanitize first (recommended)
|
|
438
|
+
* const clean = DOMPurify.sanitize(htmlContent);
|
|
439
|
+
* return parse(clean, parseOptions);
|
|
440
|
+
* }
|
|
441
|
+
* ```
|
|
442
|
+
*/
|
|
443
|
+
transformHtmlToComponents?: (htmlContent: string) => ReactNode;
|
|
401
444
|
};
|
|
402
445
|
type $TSFixMe = any;
|
|
403
446
|
declare global {
|