@nvwa-app/sdk-web 6.43.0 → 6.45.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/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { NvwaLocalStorage, AuthClient, SocialProviderDescriptor, NvwaFetch, INvwa, NvwaFileStorage, createPostgrestClient, NvwaEdgeFunctions, NvwaHttpClient, IntegrationProvidersConfig, IPaymentLauncher, NvwaAppConfig, PaymentClientContext } from '@nvwa-app/sdk-core';
1
+ import { NvwaLocalStorage, AuthClient, SocialProviderDescriptor, NvwaFetch, INvwa, NvwaFileStorage, createPostgrestClient, NvwaEdgeFunctions, NvwaHttpClient, IntegrationProvidersConfig, IPaymentLauncher, NvwaAppConfig } from '@nvwa-app/sdk-core';
2
2
  import { ReactNode } from 'react';
3
3
 
4
4
  declare class WebNvwaLocalStorage implements NvwaLocalStorage {
@@ -71,7 +71,6 @@ declare class Nvwa implements INvwa {
71
71
  readonly platformType: string;
72
72
  payment: IPaymentLauncher;
73
73
  constructor(init: NvwaWebInit);
74
- preparePaymentContext(): Promise<PaymentClientContext>;
75
74
  }
76
75
 
77
76
  export { type NvwaWebInit, SocialLoginButtons, type WebSocialLoginProps, Nvwa as default, disableIframeHoverInspector, enableIframeHoverInspector, getIframeSourceLocation, localStorage, setupIframeHoverInspector, setupIframeSourceLocationListener, webFetch };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { NvwaLocalStorage, AuthClient, SocialProviderDescriptor, NvwaFetch, INvwa, NvwaFileStorage, createPostgrestClient, NvwaEdgeFunctions, NvwaHttpClient, IntegrationProvidersConfig, IPaymentLauncher, NvwaAppConfig, PaymentClientContext } from '@nvwa-app/sdk-core';
1
+ import { NvwaLocalStorage, AuthClient, SocialProviderDescriptor, NvwaFetch, INvwa, NvwaFileStorage, createPostgrestClient, NvwaEdgeFunctions, NvwaHttpClient, IntegrationProvidersConfig, IPaymentLauncher, NvwaAppConfig } from '@nvwa-app/sdk-core';
2
2
  import { ReactNode } from 'react';
3
3
 
4
4
  declare class WebNvwaLocalStorage implements NvwaLocalStorage {
@@ -71,7 +71,6 @@ declare class Nvwa implements INvwa {
71
71
  readonly platformType: string;
72
72
  payment: IPaymentLauncher;
73
73
  constructor(init: NvwaWebInit);
74
- preparePaymentContext(): Promise<PaymentClientContext>;
75
74
  }
76
75
 
77
76
  export { type NvwaWebInit, SocialLoginButtons, type WebSocialLoginProps, Nvwa as default, disableIframeHoverInspector, enableIframeHoverInspector, getIframeSourceLocation, localStorage, setupIframeHoverInspector, setupIframeSourceLocationListener, webFetch };
package/dist/index.js CHANGED
@@ -33,4 +33,4 @@ ${l.stack}`)}else{var f;n=(f=s?.stack)!==null&&f!==void 0?f:""}let w=this.url.to
33
33
  max-width: 400px;
34
34
  word-break: break-all;
35
35
  }
36
- `,document.head.appendChild(t)}createTooltip(){return this.tooltip?this.tooltip:(this.tooltip=document.createElement("div"),this.tooltip.id="__nvwa-inspector-tooltip",document.body.appendChild(this.tooltip),this.tooltip)}createOverlay(t){let e=document.createElement("div");return e.className=`__nvwa-inspector-overlay __nvwa-inspector-overlay-${t}`,document.body.appendChild(e),e}updateOverlayPosition(t,e){if(!e.isConnected)return;let r=e.getBoundingClientRect(),i=window.scrollX||window.pageXOffset,a=window.scrollY||window.pageYOffset;r.width>0&&r.height>0?(t.style.left=`${r.left+i}px`,t.style.top=`${r.top+a}px`,t.style.width=`${r.width}px`,t.style.height=`${r.height}px`,t.style.display="block"):t.style.display="none"}removeOverlay(t){t&&t.parentNode&&t.parentNode.removeChild(t)}highlightElement(t,e){if(!t.isConnected)return;if(this.hoverElement===t&&this.hoverOverlay){this.updateOverlayPosition(this.hoverOverlay,t);let o=this.createTooltip();e?o.textContent=e:o.textContent=`<${t.tagName.toLowerCase()}> (\u65E0 source location)`,o.style.display="block";let n=t.getBoundingClientRect();o.style.left=`${n.left+window.scrollX}px`,o.style.top=`${n.top+window.scrollY-o.offsetHeight-8}px`,n.top<o.offsetHeight+8&&(o.style.top=`${n.bottom+window.scrollY+8}px`);return}this.hoverOverlay&&(this.removeOverlay(this.hoverOverlay),this.hoverOverlay=null);let r=this.createOverlay("hover");this.updateOverlayPosition(r,t),this.hoverOverlay=r,this.hoverElement=t;let i=()=>{this.hoverOverlay&&this.hoverElement&&this.hoverElement.isConnected&&this.updateOverlayPosition(this.hoverOverlay,this.hoverElement)};this.hoverUpdateHandler&&(window.removeEventListener("scroll",this.hoverUpdateHandler,!0),window.removeEventListener("resize",this.hoverUpdateHandler)),this.hoverUpdateHandler=i,window.addEventListener("scroll",i,!0),window.addEventListener("resize",i);let a=this.createTooltip();e?a.textContent=e:a.textContent=`<${t.tagName.toLowerCase()}> (\u65E0 source location)`,a.style.display="block";let s=t.getBoundingClientRect();a.style.left=`${s.left+window.scrollX}px`,a.style.top=`${s.top+window.scrollY-a.offsetHeight-8}px`,s.top<a.offsetHeight+8&&(a.style.top=`${s.bottom+window.scrollY+8}px`)}selectElement(t,e){if(!t.isConnected)return;if(this.selectedElement===t&&this.selectedOverlay){this.updateOverlayPosition(this.selectedOverlay,t);return}this.selectedOverlay&&(this.removeOverlay(this.selectedOverlay),this.selectedOverlay=null);let r=this.createOverlay("selected");this.updateOverlayPosition(r,t),this.selectedOverlay=r,this.selectedElement=t;let i=()=>{this.selectedOverlay&&this.selectedElement&&this.selectedElement.isConnected&&this.updateOverlayPosition(this.selectedOverlay,this.selectedElement)};this.selectedUpdateHandler&&(window.removeEventListener("scroll",this.selectedUpdateHandler,!0),window.removeEventListener("resize",this.selectedUpdateHandler)),this.selectedUpdateHandler=i,window.addEventListener("scroll",i,!0),window.addEventListener("resize",i)}removeHighlight(){this.hoverOverlay&&(this.removeOverlay(this.hoverOverlay),this.hoverOverlay=null),this.hoverElement&&(this.hoverElement=null),this.tooltip&&(this.tooltip.style.display="none"),this.hoverUpdateHandler&&(window.removeEventListener("scroll",this.hoverUpdateHandler,!0),window.removeEventListener("resize",this.hoverUpdateHandler),this.hoverUpdateHandler=null)}clearSelection(){this.selectedOverlay&&(this.removeOverlay(this.selectedOverlay),this.selectedOverlay=null),this.selectedElement&&(this.selectedElement=null),this.selectedUpdateHandler&&(window.removeEventListener("scroll",this.selectedUpdateHandler,!0),window.removeEventListener("resize",this.selectedUpdateHandler),this.selectedUpdateHandler=null)}cleanup(){this.removeHighlight(),this.clearSelection(),this.tooltip&&this.tooltip.parentNode&&(this.tooltip.parentNode.removeChild(this.tooltip),this.tooltip=null);let t=document.getElementById("__nvwa-inspector-overlay-style");t&&t.parentNode&&t.parentNode.removeChild(t)}};function ee(t="root"){if(typeof document>"u")return null;let e=document.getElementById(t)||document.body;if(!e)return null;let r=e.querySelector("[data-source-location]");if(r){let i=r.getAttribute("data-source-location");if(i)return i}if(e.firstElementChild){let i=e.firstElementChild.getAttribute("data-source-location");if(i)return i}return null}var Ne={"wechat-pay":{id:"wechat-pay",name:"WeChat Pay",description:"WeChat payment for web and miniapp."},"wechat-platform":{id:"wechat-platform",name:"WeChat Partner",description:"WeChat partner merchant onboarding."},"alipay-web":{id:"alipay-web",name:"Alipay Web",description:"Alipay page pay (ISV)."},"alipay-mobile-web":{id:"alipay-mobile-web",name:"Alipay Mobile Web",description:"Alipay WAP pay (ISV)."},"alipay-miniprogram":{id:"alipay-miniprogram",name:"Alipay Mini Program",description:"Alipay mini program payment."},stripe:{id:"stripe",name:"Stripe",description:"Stripe payment."}};function te(t){let e=t;if(typeof e.kind=="string")return e;if(typeof e.tradeNO=="string")return{kind:"alipay_miniprogram",tradeNO:e.tradeNO};if(typeof e.clientSecret=="string")return{kind:"stripe_client_secret",clientSecret:e.clientSecret};if(typeof e.redirectUrl=="string")return{kind:"redirect_url",redirectUrl:e.redirectUrl};if(typeof e.formHtml=="string")return{kind:"alipay_page",formHtml:e.formHtml};if(typeof e.codeUrl=="string")return{kind:"wechat_native_qr",codeUrl:e.codeUrl};let r=e.jsapiPayParams??e;return typeof r.timeStamp=="string"&&typeof r.nonceStr=="string"&&typeof r.package=="string"&&typeof r.paySign=="string"&&typeof r.appId=="string"?{kind:"wechat_jsapi",mode:"jsapi",jsapiPayParams:{appId:r.appId,timeStamp:r.timeStamp,nonceStr:r.nonceStr,package:r.package,signType:r.signType??"RSA",paySign:r.paySign}}:null}async function re(t,e){let r=t.payment?.providers??{};return Object.entries(r).filter(([,i])=>i.enabled).map(([i])=>{let a=Ne[i]??{id:i,name:i,description:""};return{...a,type:a.id}})}function T(t){return t&&typeof t=="object"?t:{}}function xe(t){let e=T(t),r=e.enabled===!0,i=String(e.oauthCredentialSource??"").toLowerCase();return i?{enabled:r,oauthCredentialSource:i==="custom"?"custom":"nvwa_default"}:{enabled:r}}function q(t){let e=T(t),r=T(e.providers),i={};for(let[a,s]of Object.entries(r))i[a]=xe(s);return{providers:i}}function x(t){let e=T(t);return{socialLogin:q(e.socialLogin),payment:q(e.payment)}}var Ue=["DesktopWeb","MobileWeb","AndroidApp","IosApp","HarmonyApp","WechatMiniProgram","AlipayMiniProgram","DouyinMiniProgram"];function ke(t){return Ue.includes(t)}async function ie(t){let{platformType:e,getMiniProgramIdentity:r}=t;if(e!=="WechatMiniProgram"&&e!=="AlipayMiniProgram")return{platformType:e};if(!r)return{platformType:e};let i=await r();return i?{platformType:i.platformType,platformUserId:i.platformUserId,appId:i.appId,unionid:i.unionid}:{platformType:e}}function ae(t){return x(t.integrationProviders??{})}function se(t){let e=t.baseUrl?.trim()??"";if(!e)throw new Error("Nvwa: appConfig.baseUrl is required");let r=t.applicationCode?.trim()??"";if(!r)throw new Error("Nvwa: appConfig.applicationCode is required");let i=t.platformType?.trim()??"";if(!i)throw new Error("Nvwa: appConfig.platformType is required");if(!ke(i))throw new Error("Nvwa: appConfig.platformType is invalid");return{baseUrl:e,applicationCode:r,platformType:i}}var _=class{constructor(){this.prefix="nvwa_"}getKey(e){return`${this.prefix}${e}`}async get(e){try{let r=this.getKey(e),i=localStorage.getItem(r);if(!i)return null;let a=JSON.parse(i);return a.expires&&Date.now()>a.expires?(await this.remove(e),null):a.value}catch(r){return console.error("WebStorageService get error:",r),null}}async set(e,r,i){try{let a=this.getKey(e),s={value:r,expires:i?Date.now()+i*1e3:null,timestamp:Date.now()};localStorage.setItem(a,JSON.stringify(s))}catch(a){throw console.error("WebStorageService set error:",a),a}}async remove(e){try{let r=this.getKey(e);localStorage.removeItem(r)}catch(r){throw console.error("WebStorageService remove error:",r),r}}async clear(){try{Object.keys(localStorage).filter(i=>i.startsWith(this.prefix)).forEach(i=>{localStorage.removeItem(i)})}catch(e){throw console.error("WebStorageService clear error:",e),e}}};var Re=(t,e)=>{let r;if(typeof t=="string")r=t;else if(t&&typeof t.toString=="function")r=t.toString();else if(t?.url)r=t.url;else throw new Error("Invalid input for webFetch");let i;if(e?.headers){let s=e.headers;if(s instanceof y){let o={};s.forEach((n,c)=>{o[c]=n}),i=o}else if(Array.isArray(s)){let o=[];for(let n of s)Array.isArray(n)&&n.length>=2&&o.push([String(n[0]),String(n[1])]);i=o}else typeof s=="object"&&(i=s)}let a={method:e?.method||"GET",headers:i,body:e?.body,credentials:e?.credentials};return e?.signal&&(a.signal=e.signal),globalThis.fetch(r,a).then(async s=>{let o=s.headers.get("content-type")||"",n;if(o.includes("application/json"))n=await s.json();else{let h=await s.text();try{n=JSON.parse(h)}catch{n=h}}let c=new y;return s.headers.forEach((h,l)=>{c.set(l,h)}),new G(n,{status:s.status,statusText:s.statusText,headers:c})})},O=Re;function je(t){return`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(t)}`}var U={async requestPayment(t,e){let r=te(t);if(r?.kind==="redirect_url"){window.location.href=r.redirectUrl;return}if(r?.kind==="wechat_native_qr"){let a=je(r.codeUrl);window.open(a,"_blank","noopener,noreferrer");return}if(r?.kind==="alipay_page"){let a=window.open("","_blank");a&&(a.document.write(r.formHtml),a.document.close());return}let i=new Error("requestPayment: unsupported payParams for Desktop-web");throw e?.onFailure?.(i),i}};function ne(t){let e=async r=>await re(t,r);return{...U,getAvailableProviders:e,getProviders:e}}function He(){if(typeof window>"u"||window===window.parent)return;let t=!1,e=new Z;function r(h){if(!h)return!1;let l=h.toLowerCase();return l.includes("/components/")||l.includes("\\components\\")}function i(h){let l=h,u=null;for(;l;){let d=l.getAttribute("data-source-location");if(d)if(r(d)){u||(u=d),l=l.parentElement;continue}else return d;l=l.parentElement}return u}let a=null;function s(h){t&&(a!==null&&cancelAnimationFrame(a),a=requestAnimationFrame(()=>{let l=h.target;if(!l||l===document.body||l===document.documentElement){e.removeHighlight();return}if(l.tagName.toLowerCase()==="img"){let p=i(l);e.highlightElement(l,p);let f={type:"HOVER_INSPECTOR_ELEMENT_HOVER",sourceLocation:p,elementInfo:{tagName:l.tagName.toLowerCase(),className:l.className||"",id:l.id||""}};window.parent.postMessage(f,"*");return}let u=l,d=i(l);if(!d){let p=l.parentElement;for(;p&&p!==document.body&&p!==document.documentElement;){let f=i(p);if(f){u=p,d=f;break}p=p.parentElement}}e.highlightElement(u,d);let m={type:"HOVER_INSPECTOR_ELEMENT_HOVER",sourceLocation:d,elementInfo:{tagName:u.tagName.toLowerCase(),className:u.className||"",id:u.id||""}};window.parent.postMessage(m,"*")}))}function o(){if(!t)return;e.removeHighlight();let h={type:"HOVER_INSPECTOR_ELEMENT_LEAVE"};window.parent.postMessage(h,"*")}function n(h){if(!t)return;h.preventDefault(),h.stopPropagation();let l=h.target;if(!l||l===document.body||l===document.documentElement)return;let u=i(l);e.selectElement(l,u);let d={type:"HOVER_INSPECTOR_ELEMENT_SELECT",sourceLocation:u,elementInfo:{tagName:l.tagName.toLowerCase(),className:l.className||"",id:l.id||""}};window.parent.postMessage(d,"*")}function c(h){h.data?.type==="HOVER_INSPECTOR_ENABLE"?(t=!0,document.addEventListener("mousemove",s),document.addEventListener("mouseleave",o),document.addEventListener("click",n,!0)):h.data?.type==="HOVER_INSPECTOR_DISABLE"&&(t=!1,document.removeEventListener("mousemove",s),document.removeEventListener("mouseleave",o),document.removeEventListener("click",n,!0),e.removeHighlight(),e.clearSelection())}return window.addEventListener("message",c),()=>{window.removeEventListener("message",c),document.removeEventListener("mousemove",s),document.removeEventListener("mouseleave",o),document.removeEventListener("click",n,!0),e.cleanup()}}function Me(t,e){if(!t||!t.contentWindow)throw new Error("Invalid iframe element");let r={type:"HOVER_INSPECTOR_ENABLE"};t.contentWindow.postMessage(r,e)}function We(t,e){if(!t||!t.contentWindow)return;let r={type:"HOVER_INSPECTOR_DISABLE"};t.contentWindow.postMessage(r,e)}function Fe(t,e,r=5e3){return new Promise((i,a)=>{if(!t||!t.contentWindow){a(new Error("Invalid iframe element"));return}let s=`source-location-${Date.now()}-${Math.random()}`,o=setTimeout(()=>{window.removeEventListener("message",n),a(new Error("Request timeout"))},r),n=h=>{h.origin===e&&h.data?.type==="GET_SOURCE_LOCATION_RESPONSE"&&h.data?.requestId===s&&(clearTimeout(o),window.removeEventListener("message",n),h.data.error?a(new Error(h.data.error)):i(h.data.sourceLocation||null))};window.addEventListener("message",n);let c={type:"GET_SOURCE_LOCATION_REQUEST",requestId:s};try{t.contentWindow.postMessage(c,e)}catch(h){clearTimeout(o),window.removeEventListener("message",n),a(h)}})}function qe(){if(typeof window>"u"||window===window.parent)return;let t=e=>{if(e.data?.type==="GET_SOURCE_LOCATION_REQUEST")try{let i={type:"GET_SOURCE_LOCATION_RESPONSE",sourceLocation:De(),requestId:e.data.requestId};window.parent.postMessage(i,e.origin)}catch(r){let i={type:"GET_SOURCE_LOCATION_RESPONSE",sourceLocation:null,error:r instanceof Error?r.message:"Unknown error",requestId:e.data.requestId};window.parent.postMessage(i,e.origin)}};return window.addEventListener("message",t),()=>{window.removeEventListener("message",t)}}function De(){return ee("root")}var E=require("react"),k=require("react"),Be="nvwa-social-login-list",Ge="nvwa-social-login-button";async function ze(t){return await t.getSocialProviderDescriptors()}function Je(t){return t?.trim()?t.trim():typeof globalThis<"u"&&"location"in globalThis?globalThis.location.href:""}function Ke(t){let[e,r]=(0,E.useState)(t.providers??[]),[i,a]=(0,E.useState)(!t.providers);(0,E.useEffect)(()=>{if(t.providers){r(t.providers),a(!1);return}let n=!1;return a(!0),ze(t.auth).then(c=>{n||r(c)}).catch(c=>{n||t.onError?.(c instanceof Error?c:new Error(String(c)))}).finally(()=>{n||a(!1)}),()=>{n=!0}},[t.auth,t.providers,t.onError]);let s=(0,E.useMemo)(()=>Je(t.returnUrl),[t.returnUrl]),o=(0,E.useMemo)(()=>e.filter(n=>n.loginKind!=="unsupported"),[e]);return i||o.length===0?null:(0,k.createElement)("div",{className:t.className??Be},...o.map(n=>{let c=async()=>{try{t.onBeforeLogin?.(n),await t.auth.startSocialLogin(n.id,{returnUrl:s,applicationCode:t.applicationCode,platformCode:t.platformCode})}catch(l){t.onError?.(l instanceof Error?l:new Error(String(l)))}},h=(0,k.createElement)("button",{key:n.id,type:"button",className:Ge,onClick:c},n.name);return t.onRenderButton?t.onRenderButton(n,h):h}))}var R=new _,$=class{constructor(e){this.payment=U;let{handleUnauthorized:r,appConfig:i,integrationProviders:a}=e,s=se(i);this.applicationCode=s.applicationCode,this.platformType=s.platformType,this.integrationProviders=x(a??ae(i)),this.auth=new K(s.baseUrl,{fetchImpl:O,storage:R,integrationProviders:this.integrationProviders,applicationCode:this.applicationCode,platformType:s.platformType}),this.httpClient=new V(R,O,r),this.fileStorage=new Y(s.baseUrl,this.httpClient),this.entities=X(s.baseUrl,this.httpClient),this.functions=new z(this.httpClient,s.baseUrl),this.payment=ne(this.integrationProviders)}preparePaymentContext(){return ie({platformType:this.platformType,getMiniProgramIdentity:()=>this.auth.getMiniProgramIdentity()})}};0&&(module.exports={SocialLoginButtons,disableIframeHoverInspector,enableIframeHoverInspector,getIframeSourceLocation,localStorage,setupIframeHoverInspector,setupIframeSourceLocationListener,webFetch});
36
+ `,document.head.appendChild(t)}createTooltip(){return this.tooltip?this.tooltip:(this.tooltip=document.createElement("div"),this.tooltip.id="__nvwa-inspector-tooltip",document.body.appendChild(this.tooltip),this.tooltip)}createOverlay(t){let e=document.createElement("div");return e.className=`__nvwa-inspector-overlay __nvwa-inspector-overlay-${t}`,document.body.appendChild(e),e}updateOverlayPosition(t,e){if(!e.isConnected)return;let r=e.getBoundingClientRect(),i=window.scrollX||window.pageXOffset,a=window.scrollY||window.pageYOffset;r.width>0&&r.height>0?(t.style.left=`${r.left+i}px`,t.style.top=`${r.top+a}px`,t.style.width=`${r.width}px`,t.style.height=`${r.height}px`,t.style.display="block"):t.style.display="none"}removeOverlay(t){t&&t.parentNode&&t.parentNode.removeChild(t)}highlightElement(t,e){if(!t.isConnected)return;if(this.hoverElement===t&&this.hoverOverlay){this.updateOverlayPosition(this.hoverOverlay,t);let o=this.createTooltip();e?o.textContent=e:o.textContent=`<${t.tagName.toLowerCase()}> (\u65E0 source location)`,o.style.display="block";let n=t.getBoundingClientRect();o.style.left=`${n.left+window.scrollX}px`,o.style.top=`${n.top+window.scrollY-o.offsetHeight-8}px`,n.top<o.offsetHeight+8&&(o.style.top=`${n.bottom+window.scrollY+8}px`);return}this.hoverOverlay&&(this.removeOverlay(this.hoverOverlay),this.hoverOverlay=null);let r=this.createOverlay("hover");this.updateOverlayPosition(r,t),this.hoverOverlay=r,this.hoverElement=t;let i=()=>{this.hoverOverlay&&this.hoverElement&&this.hoverElement.isConnected&&this.updateOverlayPosition(this.hoverOverlay,this.hoverElement)};this.hoverUpdateHandler&&(window.removeEventListener("scroll",this.hoverUpdateHandler,!0),window.removeEventListener("resize",this.hoverUpdateHandler)),this.hoverUpdateHandler=i,window.addEventListener("scroll",i,!0),window.addEventListener("resize",i);let a=this.createTooltip();e?a.textContent=e:a.textContent=`<${t.tagName.toLowerCase()}> (\u65E0 source location)`,a.style.display="block";let s=t.getBoundingClientRect();a.style.left=`${s.left+window.scrollX}px`,a.style.top=`${s.top+window.scrollY-a.offsetHeight-8}px`,s.top<a.offsetHeight+8&&(a.style.top=`${s.bottom+window.scrollY+8}px`)}selectElement(t,e){if(!t.isConnected)return;if(this.selectedElement===t&&this.selectedOverlay){this.updateOverlayPosition(this.selectedOverlay,t);return}this.selectedOverlay&&(this.removeOverlay(this.selectedOverlay),this.selectedOverlay=null);let r=this.createOverlay("selected");this.updateOverlayPosition(r,t),this.selectedOverlay=r,this.selectedElement=t;let i=()=>{this.selectedOverlay&&this.selectedElement&&this.selectedElement.isConnected&&this.updateOverlayPosition(this.selectedOverlay,this.selectedElement)};this.selectedUpdateHandler&&(window.removeEventListener("scroll",this.selectedUpdateHandler,!0),window.removeEventListener("resize",this.selectedUpdateHandler)),this.selectedUpdateHandler=i,window.addEventListener("scroll",i,!0),window.addEventListener("resize",i)}removeHighlight(){this.hoverOverlay&&(this.removeOverlay(this.hoverOverlay),this.hoverOverlay=null),this.hoverElement&&(this.hoverElement=null),this.tooltip&&(this.tooltip.style.display="none"),this.hoverUpdateHandler&&(window.removeEventListener("scroll",this.hoverUpdateHandler,!0),window.removeEventListener("resize",this.hoverUpdateHandler),this.hoverUpdateHandler=null)}clearSelection(){this.selectedOverlay&&(this.removeOverlay(this.selectedOverlay),this.selectedOverlay=null),this.selectedElement&&(this.selectedElement=null),this.selectedUpdateHandler&&(window.removeEventListener("scroll",this.selectedUpdateHandler,!0),window.removeEventListener("resize",this.selectedUpdateHandler),this.selectedUpdateHandler=null)}cleanup(){this.removeHighlight(),this.clearSelection(),this.tooltip&&this.tooltip.parentNode&&(this.tooltip.parentNode.removeChild(this.tooltip),this.tooltip=null);let t=document.getElementById("__nvwa-inspector-overlay-style");t&&t.parentNode&&t.parentNode.removeChild(t)}};function ee(t="root"){if(typeof document>"u")return null;let e=document.getElementById(t)||document.body;if(!e)return null;let r=e.querySelector("[data-source-location]");if(r){let i=r.getAttribute("data-source-location");if(i)return i}if(e.firstElementChild){let i=e.firstElementChild.getAttribute("data-source-location");if(i)return i}return null}var Ne={"wechat-pay":{id:"wechat-pay",name:"WeChat Pay",description:"WeChat payment for web and miniapp."},"wechat-platform":{id:"wechat-platform",name:"WeChat Partner",description:"WeChat partner merchant onboarding."},"alipay-web":{id:"alipay-web",name:"Alipay Web",description:"Alipay page pay (ISV)."},"alipay-mobile-web":{id:"alipay-mobile-web",name:"Alipay Mobile Web",description:"Alipay WAP pay (ISV)."},"alipay-miniprogram":{id:"alipay-miniprogram",name:"Alipay Mini Program",description:"Alipay mini program payment."},stripe:{id:"stripe",name:"Stripe",description:"Stripe payment."}};function te(t){let e=t;if(typeof e.kind=="string")return e;if(typeof e.tradeNO=="string")return{kind:"alipay_miniprogram",tradeNO:e.tradeNO};if(typeof e.clientSecret=="string")return{kind:"stripe_client_secret",clientSecret:e.clientSecret};if(typeof e.redirectUrl=="string")return{kind:"redirect_url",redirectUrl:e.redirectUrl};if(typeof e.formHtml=="string")return{kind:"alipay_page",formHtml:e.formHtml};if(typeof e.codeUrl=="string")return{kind:"wechat_native_qr",codeUrl:e.codeUrl};let r=e.jsapiPayParams??e;return typeof r.timeStamp=="string"&&typeof r.nonceStr=="string"&&typeof r.package=="string"&&typeof r.paySign=="string"&&typeof r.appId=="string"?{kind:"wechat_jsapi",mode:"jsapi",jsapiPayParams:{appId:r.appId,timeStamp:r.timeStamp,nonceStr:r.nonceStr,package:r.package,signType:r.signType??"RSA",paySign:r.paySign}}:null}async function re(t,e){let r=t.payment?.providers??{};return Object.entries(r).filter(([,i])=>i.enabled).map(([i])=>{let a=Ne[i]??{id:i,name:i,description:""};return{...a,type:a.id}})}function T(t){return t&&typeof t=="object"?t:{}}function xe(t){let e=T(t),r=e.enabled===!0,i=String(e.oauthCredentialSource??"").toLowerCase();return i?{enabled:r,oauthCredentialSource:i==="custom"?"custom":"nvwa_default"}:{enabled:r}}function q(t){let e=T(t),r=T(e.providers),i={};for(let[a,s]of Object.entries(r))i[a]=xe(s);return{providers:i}}function x(t){let e=T(t);return{socialLogin:q(e.socialLogin),payment:q(e.payment)}}var Ue=["DesktopWeb","MobileWeb","AndroidApp","IosApp","HarmonyApp","WechatMiniProgram","AlipayMiniProgram","DouyinMiniProgram"];function ke(t){return Ue.includes(t)}async function ie(t){let{platformType:e,getMiniProgramIdentity:r}=t;if(e!=="WechatMiniProgram"&&e!=="AlipayMiniProgram")return{platformType:e};if(!r)return{platformType:e};let i=await r();return i?{platformType:i.platformType,platformUserId:i.platformUserId,appId:i.appId,unionid:i.unionid}:{platformType:e}}function ae(t){return x(t.integrationProviders??{})}function se(t){let e=t.baseUrl?.trim()??"";if(!e)throw new Error("Nvwa: appConfig.baseUrl is required");let r=t.applicationCode?.trim()??"";if(!r)throw new Error("Nvwa: appConfig.applicationCode is required");let i=t.platformType?.trim()??"";if(!i)throw new Error("Nvwa: appConfig.platformType is required");if(!ke(i))throw new Error("Nvwa: appConfig.platformType is invalid");return{baseUrl:e,applicationCode:r,platformType:i}}var _=class{constructor(){this.prefix="nvwa_"}getKey(e){return`${this.prefix}${e}`}async get(e){try{let r=this.getKey(e),i=localStorage.getItem(r);if(!i)return null;let a=JSON.parse(i);return a.expires&&Date.now()>a.expires?(await this.remove(e),null):a.value}catch(r){return console.error("WebStorageService get error:",r),null}}async set(e,r,i){try{let a=this.getKey(e),s={value:r,expires:i?Date.now()+i*1e3:null,timestamp:Date.now()};localStorage.setItem(a,JSON.stringify(s))}catch(a){throw console.error("WebStorageService set error:",a),a}}async remove(e){try{let r=this.getKey(e);localStorage.removeItem(r)}catch(r){throw console.error("WebStorageService remove error:",r),r}}async clear(){try{Object.keys(localStorage).filter(i=>i.startsWith(this.prefix)).forEach(i=>{localStorage.removeItem(i)})}catch(e){throw console.error("WebStorageService clear error:",e),e}}};var Re=(t,e)=>{let r;if(typeof t=="string")r=t;else if(t&&typeof t.toString=="function")r=t.toString();else if(t?.url)r=t.url;else throw new Error("Invalid input for webFetch");let i;if(e?.headers){let s=e.headers;if(s instanceof y){let o={};s.forEach((n,c)=>{o[c]=n}),i=o}else if(Array.isArray(s)){let o=[];for(let n of s)Array.isArray(n)&&n.length>=2&&o.push([String(n[0]),String(n[1])]);i=o}else typeof s=="object"&&(i=s)}let a={method:e?.method||"GET",headers:i,body:e?.body,credentials:e?.credentials};return e?.signal&&(a.signal=e.signal),globalThis.fetch(r,a).then(async s=>{let o=s.headers.get("content-type")||"",n;if(o.includes("application/json"))n=await s.json();else{let h=await s.text();try{n=JSON.parse(h)}catch{n=h}}let c=new y;return s.headers.forEach((h,l)=>{c.set(l,h)}),new G(n,{status:s.status,statusText:s.statusText,headers:c})})},O=Re;function je(t){return`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(t)}`}var U={async requestPayment(t,e){let r=te(t);if(r?.kind==="redirect_url"){window.location.href=r.redirectUrl;return}if(r?.kind==="wechat_native_qr"){let a=je(r.codeUrl);window.open(a,"_blank","noopener,noreferrer");return}if(r?.kind==="alipay_page"){let a=window.open("","_blank");a&&(a.document.write(r.formHtml),a.document.close());return}let i=new Error("requestPayment: unsupported payParams for Desktop-web");throw e?.onFailure?.(i),i}};function ne(t){let e=async r=>await re(t,r);return{...U,getAvailableProviders:e,getProviders:e}}function He(){if(typeof window>"u"||window===window.parent)return;let t=!1,e=new Z;function r(h){if(!h)return!1;let l=h.toLowerCase();return l.includes("/components/")||l.includes("\\components\\")}function i(h){let l=h,u=null;for(;l;){let d=l.getAttribute("data-source-location");if(d)if(r(d)){u||(u=d),l=l.parentElement;continue}else return d;l=l.parentElement}return u}let a=null;function s(h){t&&(a!==null&&cancelAnimationFrame(a),a=requestAnimationFrame(()=>{let l=h.target;if(!l||l===document.body||l===document.documentElement){e.removeHighlight();return}if(l.tagName.toLowerCase()==="img"){let p=i(l);e.highlightElement(l,p);let f={type:"HOVER_INSPECTOR_ELEMENT_HOVER",sourceLocation:p,elementInfo:{tagName:l.tagName.toLowerCase(),className:l.className||"",id:l.id||""}};window.parent.postMessage(f,"*");return}let u=l,d=i(l);if(!d){let p=l.parentElement;for(;p&&p!==document.body&&p!==document.documentElement;){let f=i(p);if(f){u=p,d=f;break}p=p.parentElement}}e.highlightElement(u,d);let m={type:"HOVER_INSPECTOR_ELEMENT_HOVER",sourceLocation:d,elementInfo:{tagName:u.tagName.toLowerCase(),className:u.className||"",id:u.id||""}};window.parent.postMessage(m,"*")}))}function o(){if(!t)return;e.removeHighlight();let h={type:"HOVER_INSPECTOR_ELEMENT_LEAVE"};window.parent.postMessage(h,"*")}function n(h){if(!t)return;h.preventDefault(),h.stopPropagation();let l=h.target;if(!l||l===document.body||l===document.documentElement)return;let u=i(l);e.selectElement(l,u);let d={type:"HOVER_INSPECTOR_ELEMENT_SELECT",sourceLocation:u,elementInfo:{tagName:l.tagName.toLowerCase(),className:l.className||"",id:l.id||""}};window.parent.postMessage(d,"*")}function c(h){h.data?.type==="HOVER_INSPECTOR_ENABLE"?(t=!0,document.addEventListener("mousemove",s),document.addEventListener("mouseleave",o),document.addEventListener("click",n,!0)):h.data?.type==="HOVER_INSPECTOR_DISABLE"&&(t=!1,document.removeEventListener("mousemove",s),document.removeEventListener("mouseleave",o),document.removeEventListener("click",n,!0),e.removeHighlight(),e.clearSelection())}return window.addEventListener("message",c),()=>{window.removeEventListener("message",c),document.removeEventListener("mousemove",s),document.removeEventListener("mouseleave",o),document.removeEventListener("click",n,!0),e.cleanup()}}function Me(t,e){if(!t||!t.contentWindow)throw new Error("Invalid iframe element");let r={type:"HOVER_INSPECTOR_ENABLE"};t.contentWindow.postMessage(r,e)}function We(t,e){if(!t||!t.contentWindow)return;let r={type:"HOVER_INSPECTOR_DISABLE"};t.contentWindow.postMessage(r,e)}function Fe(t,e,r=5e3){return new Promise((i,a)=>{if(!t||!t.contentWindow){a(new Error("Invalid iframe element"));return}let s=`source-location-${Date.now()}-${Math.random()}`,o=setTimeout(()=>{window.removeEventListener("message",n),a(new Error("Request timeout"))},r),n=h=>{h.origin===e&&h.data?.type==="GET_SOURCE_LOCATION_RESPONSE"&&h.data?.requestId===s&&(clearTimeout(o),window.removeEventListener("message",n),h.data.error?a(new Error(h.data.error)):i(h.data.sourceLocation||null))};window.addEventListener("message",n);let c={type:"GET_SOURCE_LOCATION_REQUEST",requestId:s};try{t.contentWindow.postMessage(c,e)}catch(h){clearTimeout(o),window.removeEventListener("message",n),a(h)}})}function qe(){if(typeof window>"u"||window===window.parent)return;let t=e=>{if(e.data?.type==="GET_SOURCE_LOCATION_REQUEST")try{let i={type:"GET_SOURCE_LOCATION_RESPONSE",sourceLocation:De(),requestId:e.data.requestId};window.parent.postMessage(i,e.origin)}catch(r){let i={type:"GET_SOURCE_LOCATION_RESPONSE",sourceLocation:null,error:r instanceof Error?r.message:"Unknown error",requestId:e.data.requestId};window.parent.postMessage(i,e.origin)}};return window.addEventListener("message",t),()=>{window.removeEventListener("message",t)}}function De(){return ee("root")}var E=require("react"),k=require("react"),Be="nvwa-social-login-list",Ge="nvwa-social-login-button";async function ze(t){return await t.getSocialProviderDescriptors()}function Je(t){return t?.trim()?t.trim():typeof globalThis<"u"&&"location"in globalThis?globalThis.location.href:""}function Ke(t){let[e,r]=(0,E.useState)(t.providers??[]),[i,a]=(0,E.useState)(!t.providers);(0,E.useEffect)(()=>{if(t.providers){r(t.providers),a(!1);return}let n=!1;return a(!0),ze(t.auth).then(c=>{n||r(c)}).catch(c=>{n||t.onError?.(c instanceof Error?c:new Error(String(c)))}).finally(()=>{n||a(!1)}),()=>{n=!0}},[t.auth,t.providers,t.onError]);let s=(0,E.useMemo)(()=>Je(t.returnUrl),[t.returnUrl]),o=(0,E.useMemo)(()=>e.filter(n=>n.loginKind!=="unsupported"),[e]);return i||o.length===0?null:(0,k.createElement)("div",{className:t.className??Be},...o.map(n=>{let c=async()=>{try{t.onBeforeLogin?.(n),await t.auth.startSocialLogin(n.id,{returnUrl:s,applicationCode:t.applicationCode,platformCode:t.platformCode})}catch(l){t.onError?.(l instanceof Error?l:new Error(String(l)))}},h=(0,k.createElement)("button",{key:n.id,type:"button",className:Ge,onClick:c},n.name);return t.onRenderButton?t.onRenderButton(n,h):h}))}var R=new _,$=class{constructor(e){this.payment=U;let{handleUnauthorized:r,appConfig:i,integrationProviders:a}=e,s=se(i);this.applicationCode=s.applicationCode,this.platformType=s.platformType,this.integrationProviders=x(a??ae(i)),this.auth=new K(s.baseUrl,{fetchImpl:O,storage:R,integrationProviders:this.integrationProviders,applicationCode:this.applicationCode,platformType:s.platformType}),this.httpClient=new V(R,O,r),this.fileStorage=new Y(s.baseUrl,this.httpClient),this.entities=X(s.baseUrl,this.httpClient),this.functions=new z(this.httpClient,s.baseUrl);let o=ne(this.integrationProviders);this.payment={...o,collectPaymentClientContext:()=>ie({platformType:this.platformType,getMiniProgramIdentity:()=>this.auth.getMiniProgramIdentity()})}}};0&&(module.exports={SocialLoginButtons,disableIframeHoverInspector,enableIframeHoverInspector,getIframeSourceLocation,localStorage,setupIframeHoverInspector,setupIframeSourceLocationListener,webFetch});
package/dist/index.mjs CHANGED
@@ -33,4 +33,4 @@ ${l.stack}`)}else{var f;n=(f=s?.stack)!==null&&f!==void 0?f:""}let w=this.url.to
33
33
  max-width: 400px;
34
34
  word-break: break-all;
35
35
  }
36
- `,document.head.appendChild(t)}createTooltip(){return this.tooltip?this.tooltip:(this.tooltip=document.createElement("div"),this.tooltip.id="__nvwa-inspector-tooltip",document.body.appendChild(this.tooltip),this.tooltip)}createOverlay(t){let e=document.createElement("div");return e.className=`__nvwa-inspector-overlay __nvwa-inspector-overlay-${t}`,document.body.appendChild(e),e}updateOverlayPosition(t,e){if(!e.isConnected)return;let r=e.getBoundingClientRect(),i=window.scrollX||window.pageXOffset,a=window.scrollY||window.pageYOffset;r.width>0&&r.height>0?(t.style.left=`${r.left+i}px`,t.style.top=`${r.top+a}px`,t.style.width=`${r.width}px`,t.style.height=`${r.height}px`,t.style.display="block"):t.style.display="none"}removeOverlay(t){t&&t.parentNode&&t.parentNode.removeChild(t)}highlightElement(t,e){if(!t.isConnected)return;if(this.hoverElement===t&&this.hoverOverlay){this.updateOverlayPosition(this.hoverOverlay,t);let o=this.createTooltip();e?o.textContent=e:o.textContent=`<${t.tagName.toLowerCase()}> (\u65E0 source location)`,o.style.display="block";let n=t.getBoundingClientRect();o.style.left=`${n.left+window.scrollX}px`,o.style.top=`${n.top+window.scrollY-o.offsetHeight-8}px`,n.top<o.offsetHeight+8&&(o.style.top=`${n.bottom+window.scrollY+8}px`);return}this.hoverOverlay&&(this.removeOverlay(this.hoverOverlay),this.hoverOverlay=null);let r=this.createOverlay("hover");this.updateOverlayPosition(r,t),this.hoverOverlay=r,this.hoverElement=t;let i=()=>{this.hoverOverlay&&this.hoverElement&&this.hoverElement.isConnected&&this.updateOverlayPosition(this.hoverOverlay,this.hoverElement)};this.hoverUpdateHandler&&(window.removeEventListener("scroll",this.hoverUpdateHandler,!0),window.removeEventListener("resize",this.hoverUpdateHandler)),this.hoverUpdateHandler=i,window.addEventListener("scroll",i,!0),window.addEventListener("resize",i);let a=this.createTooltip();e?a.textContent=e:a.textContent=`<${t.tagName.toLowerCase()}> (\u65E0 source location)`,a.style.display="block";let s=t.getBoundingClientRect();a.style.left=`${s.left+window.scrollX}px`,a.style.top=`${s.top+window.scrollY-a.offsetHeight-8}px`,s.top<a.offsetHeight+8&&(a.style.top=`${s.bottom+window.scrollY+8}px`)}selectElement(t,e){if(!t.isConnected)return;if(this.selectedElement===t&&this.selectedOverlay){this.updateOverlayPosition(this.selectedOverlay,t);return}this.selectedOverlay&&(this.removeOverlay(this.selectedOverlay),this.selectedOverlay=null);let r=this.createOverlay("selected");this.updateOverlayPosition(r,t),this.selectedOverlay=r,this.selectedElement=t;let i=()=>{this.selectedOverlay&&this.selectedElement&&this.selectedElement.isConnected&&this.updateOverlayPosition(this.selectedOverlay,this.selectedElement)};this.selectedUpdateHandler&&(window.removeEventListener("scroll",this.selectedUpdateHandler,!0),window.removeEventListener("resize",this.selectedUpdateHandler)),this.selectedUpdateHandler=i,window.addEventListener("scroll",i,!0),window.addEventListener("resize",i)}removeHighlight(){this.hoverOverlay&&(this.removeOverlay(this.hoverOverlay),this.hoverOverlay=null),this.hoverElement&&(this.hoverElement=null),this.tooltip&&(this.tooltip.style.display="none"),this.hoverUpdateHandler&&(window.removeEventListener("scroll",this.hoverUpdateHandler,!0),window.removeEventListener("resize",this.hoverUpdateHandler),this.hoverUpdateHandler=null)}clearSelection(){this.selectedOverlay&&(this.removeOverlay(this.selectedOverlay),this.selectedOverlay=null),this.selectedElement&&(this.selectedElement=null),this.selectedUpdateHandler&&(window.removeEventListener("scroll",this.selectedUpdateHandler,!0),window.removeEventListener("resize",this.selectedUpdateHandler),this.selectedUpdateHandler=null)}cleanup(){this.removeHighlight(),this.clearSelection(),this.tooltip&&this.tooltip.parentNode&&(this.tooltip.parentNode.removeChild(this.tooltip),this.tooltip=null);let t=document.getElementById("__nvwa-inspector-overlay-style");t&&t.parentNode&&t.parentNode.removeChild(t)}};function Q(t="root"){if(typeof document>"u")return null;let e=document.getElementById(t)||document.body;if(!e)return null;let r=e.querySelector("[data-source-location]");if(r){let i=r.getAttribute("data-source-location");if(i)return i}if(e.firstElementChild){let i=e.firstElementChild.getAttribute("data-source-location");if(i)return i}return null}var Te={"wechat-pay":{id:"wechat-pay",name:"WeChat Pay",description:"WeChat payment for web and miniapp."},"wechat-platform":{id:"wechat-platform",name:"WeChat Partner",description:"WeChat partner merchant onboarding."},"alipay-web":{id:"alipay-web",name:"Alipay Web",description:"Alipay page pay (ISV)."},"alipay-mobile-web":{id:"alipay-mobile-web",name:"Alipay Mobile Web",description:"Alipay WAP pay (ISV)."},"alipay-miniprogram":{id:"alipay-miniprogram",name:"Alipay Mini Program",description:"Alipay mini program payment."},stripe:{id:"stripe",name:"Stripe",description:"Stripe payment."}};function X(t){let e=t;if(typeof e.kind=="string")return e;if(typeof e.tradeNO=="string")return{kind:"alipay_miniprogram",tradeNO:e.tradeNO};if(typeof e.clientSecret=="string")return{kind:"stripe_client_secret",clientSecret:e.clientSecret};if(typeof e.redirectUrl=="string")return{kind:"redirect_url",redirectUrl:e.redirectUrl};if(typeof e.formHtml=="string")return{kind:"alipay_page",formHtml:e.formHtml};if(typeof e.codeUrl=="string")return{kind:"wechat_native_qr",codeUrl:e.codeUrl};let r=e.jsapiPayParams??e;return typeof r.timeStamp=="string"&&typeof r.nonceStr=="string"&&typeof r.package=="string"&&typeof r.paySign=="string"&&typeof r.appId=="string"?{kind:"wechat_jsapi",mode:"jsapi",jsapiPayParams:{appId:r.appId,timeStamp:r.timeStamp,nonceStr:r.nonceStr,package:r.package,signType:r.signType??"RSA",paySign:r.paySign}}:null}async function Z(t,e){let r=t.payment?.providers??{};return Object.entries(r).filter(([,i])=>i.enabled).map(([i])=>{let a=Te[i]??{id:i,name:i,description:""};return{...a,type:a.id}})}function C(t){return t&&typeof t=="object"?t:{}}function _e(t){let e=C(t),r=e.enabled===!0,i=String(e.oauthCredentialSource??"").toLowerCase();return i?{enabled:r,oauthCredentialSource:i==="custom"?"custom":"nvwa_default"}:{enabled:r}}function M(t){let e=C(t),r=C(e.providers),i={};for(let[a,s]of Object.entries(r))i[a]=_e(s);return{providers:i}}function A(t){let e=C(t);return{socialLogin:M(e.socialLogin),payment:M(e.payment)}}var $e=["DesktopWeb","MobileWeb","AndroidApp","IosApp","HarmonyApp","WechatMiniProgram","AlipayMiniProgram","DouyinMiniProgram"];function Ie(t){return $e.includes(t)}async function ee(t){let{platformType:e,getMiniProgramIdentity:r}=t;if(e!=="WechatMiniProgram"&&e!=="AlipayMiniProgram")return{platformType:e};if(!r)return{platformType:e};let i=await r();return i?{platformType:i.platformType,platformUserId:i.platformUserId,appId:i.appId,unionid:i.unionid}:{platformType:e}}function te(t){return A(t.integrationProviders??{})}function re(t){let e=t.baseUrl?.trim()??"";if(!e)throw new Error("Nvwa: appConfig.baseUrl is required");let r=t.applicationCode?.trim()??"";if(!r)throw new Error("Nvwa: appConfig.applicationCode is required");let i=t.platformType?.trim()??"";if(!i)throw new Error("Nvwa: appConfig.platformType is required");if(!Ie(i))throw new Error("Nvwa: appConfig.platformType is invalid");return{baseUrl:e,applicationCode:r,platformType:i}}var T=class{constructor(){this.prefix="nvwa_"}getKey(e){return`${this.prefix}${e}`}async get(e){try{let r=this.getKey(e),i=localStorage.getItem(r);if(!i)return null;let a=JSON.parse(i);return a.expires&&Date.now()>a.expires?(await this.remove(e),null):a.value}catch(r){return console.error("WebStorageService get error:",r),null}}async set(e,r,i){try{let a=this.getKey(e),s={value:r,expires:i?Date.now()+i*1e3:null,timestamp:Date.now()};localStorage.setItem(a,JSON.stringify(s))}catch(a){throw console.error("WebStorageService set error:",a),a}}async remove(e){try{let r=this.getKey(e);localStorage.removeItem(r)}catch(r){throw console.error("WebStorageService remove error:",r),r}}async clear(){try{Object.keys(localStorage).filter(i=>i.startsWith(this.prefix)).forEach(i=>{localStorage.removeItem(i)})}catch(e){throw console.error("WebStorageService clear error:",e),e}}};var Ae=(t,e)=>{let r;if(typeof t=="string")r=t;else if(t&&typeof t.toString=="function")r=t.toString();else if(t?.url)r=t.url;else throw new Error("Invalid input for webFetch");let i;if(e?.headers){let s=e.headers;if(s instanceof y){let o={};s.forEach((n,c)=>{o[c]=n}),i=o}else if(Array.isArray(s)){let o=[];for(let n of s)Array.isArray(n)&&n.length>=2&&o.push([String(n[0]),String(n[1])]);i=o}else typeof s=="object"&&(i=s)}let a={method:e?.method||"GET",headers:i,body:e?.body,credentials:e?.credentials};return e?.signal&&(a.signal=e.signal),globalThis.fetch(r,a).then(async s=>{let o=s.headers.get("content-type")||"",n;if(o.includes("application/json"))n=await s.json();else{let h=await s.text();try{n=JSON.parse(h)}catch{n=h}}let c=new y;return s.headers.forEach((h,l)=>{c.set(l,h)}),new q(n,{status:s.status,statusText:s.statusText,headers:c})})},_=Ae;function Ne(t){return`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(t)}`}var N={async requestPayment(t,e){let r=X(t);if(r?.kind==="redirect_url"){window.location.href=r.redirectUrl;return}if(r?.kind==="wechat_native_qr"){let a=Ne(r.codeUrl);window.open(a,"_blank","noopener,noreferrer");return}if(r?.kind==="alipay_page"){let a=window.open("","_blank");a&&(a.document.write(r.formHtml),a.document.close());return}let i=new Error("requestPayment: unsupported payParams for Desktop-web");throw e?.onFailure?.(i),i}};function ie(t){let e=async r=>await Z(t,r);return{...N,getAvailableProviders:e,getProviders:e}}function mt(){if(typeof window>"u"||window===window.parent)return;let t=!1,e=new Y;function r(h){if(!h)return!1;let l=h.toLowerCase();return l.includes("/components/")||l.includes("\\components\\")}function i(h){let l=h,u=null;for(;l;){let d=l.getAttribute("data-source-location");if(d)if(r(d)){u||(u=d),l=l.parentElement;continue}else return d;l=l.parentElement}return u}let a=null;function s(h){t&&(a!==null&&cancelAnimationFrame(a),a=requestAnimationFrame(()=>{let l=h.target;if(!l||l===document.body||l===document.documentElement){e.removeHighlight();return}if(l.tagName.toLowerCase()==="img"){let p=i(l);e.highlightElement(l,p);let f={type:"HOVER_INSPECTOR_ELEMENT_HOVER",sourceLocation:p,elementInfo:{tagName:l.tagName.toLowerCase(),className:l.className||"",id:l.id||""}};window.parent.postMessage(f,"*");return}let u=l,d=i(l);if(!d){let p=l.parentElement;for(;p&&p!==document.body&&p!==document.documentElement;){let f=i(p);if(f){u=p,d=f;break}p=p.parentElement}}e.highlightElement(u,d);let m={type:"HOVER_INSPECTOR_ELEMENT_HOVER",sourceLocation:d,elementInfo:{tagName:u.tagName.toLowerCase(),className:u.className||"",id:u.id||""}};window.parent.postMessage(m,"*")}))}function o(){if(!t)return;e.removeHighlight();let h={type:"HOVER_INSPECTOR_ELEMENT_LEAVE"};window.parent.postMessage(h,"*")}function n(h){if(!t)return;h.preventDefault(),h.stopPropagation();let l=h.target;if(!l||l===document.body||l===document.documentElement)return;let u=i(l);e.selectElement(l,u);let d={type:"HOVER_INSPECTOR_ELEMENT_SELECT",sourceLocation:u,elementInfo:{tagName:l.tagName.toLowerCase(),className:l.className||"",id:l.id||""}};window.parent.postMessage(d,"*")}function c(h){h.data?.type==="HOVER_INSPECTOR_ENABLE"?(t=!0,document.addEventListener("mousemove",s),document.addEventListener("mouseleave",o),document.addEventListener("click",n,!0)):h.data?.type==="HOVER_INSPECTOR_DISABLE"&&(t=!1,document.removeEventListener("mousemove",s),document.removeEventListener("mouseleave",o),document.removeEventListener("click",n,!0),e.removeHighlight(),e.clearSelection())}return window.addEventListener("message",c),()=>{window.removeEventListener("message",c),document.removeEventListener("mousemove",s),document.removeEventListener("mouseleave",o),document.removeEventListener("click",n,!0),e.cleanup()}}function gt(t,e){if(!t||!t.contentWindow)throw new Error("Invalid iframe element");let r={type:"HOVER_INSPECTOR_ENABLE"};t.contentWindow.postMessage(r,e)}function ft(t,e){if(!t||!t.contentWindow)return;let r={type:"HOVER_INSPECTOR_DISABLE"};t.contentWindow.postMessage(r,e)}function yt(t,e,r=5e3){return new Promise((i,a)=>{if(!t||!t.contentWindow){a(new Error("Invalid iframe element"));return}let s=`source-location-${Date.now()}-${Math.random()}`,o=setTimeout(()=>{window.removeEventListener("message",n),a(new Error("Request timeout"))},r),n=h=>{h.origin===e&&h.data?.type==="GET_SOURCE_LOCATION_RESPONSE"&&h.data?.requestId===s&&(clearTimeout(o),window.removeEventListener("message",n),h.data.error?a(new Error(h.data.error)):i(h.data.sourceLocation||null))};window.addEventListener("message",n);let c={type:"GET_SOURCE_LOCATION_REQUEST",requestId:s};try{t.contentWindow.postMessage(c,e)}catch(h){clearTimeout(o),window.removeEventListener("message",n),a(h)}})}function wt(){if(typeof window>"u"||window===window.parent)return;let t=e=>{if(e.data?.type==="GET_SOURCE_LOCATION_REQUEST")try{let i={type:"GET_SOURCE_LOCATION_RESPONSE",sourceLocation:xe(),requestId:e.data.requestId};window.parent.postMessage(i,e.origin)}catch(r){let i={type:"GET_SOURCE_LOCATION_RESPONSE",sourceLocation:null,error:r instanceof Error?r.message:"Unknown error",requestId:e.data.requestId};window.parent.postMessage(i,e.origin)}};return window.addEventListener("message",t),()=>{window.removeEventListener("message",t)}}function xe(){return Q("root")}import{useEffect as Ue,useMemo as ae,useState as se}from"react";import{createElement as ne}from"react";var ke="nvwa-social-login-list",Re="nvwa-social-login-button";async function je(t){return await t.getSocialProviderDescriptors()}function He(t){return t?.trim()?t.trim():typeof globalThis<"u"&&"location"in globalThis?globalThis.location.href:""}function St(t){let[e,r]=se(t.providers??[]),[i,a]=se(!t.providers);Ue(()=>{if(t.providers){r(t.providers),a(!1);return}let n=!1;return a(!0),je(t.auth).then(c=>{n||r(c)}).catch(c=>{n||t.onError?.(c instanceof Error?c:new Error(String(c)))}).finally(()=>{n||a(!1)}),()=>{n=!0}},[t.auth,t.providers,t.onError]);let s=ae(()=>He(t.returnUrl),[t.returnUrl]),o=ae(()=>e.filter(n=>n.loginKind!=="unsupported"),[e]);return i||o.length===0?null:ne("div",{className:t.className??ke},...o.map(n=>{let c=async()=>{try{t.onBeforeLogin?.(n),await t.auth.startSocialLogin(n.id,{returnUrl:s,applicationCode:t.applicationCode,platformCode:t.platformCode})}catch(l){t.onError?.(l instanceof Error?l:new Error(String(l)))}},h=ne("button",{key:n.id,type:"button",className:Re,onClick:c},n.name);return t.onRenderButton?t.onRenderButton(n,h):h}))}var oe=new T,x=class{constructor(e){this.payment=N;let{handleUnauthorized:r,appConfig:i,integrationProviders:a}=e,s=re(i);this.applicationCode=s.applicationCode,this.platformType=s.platformType,this.integrationProviders=A(a??te(i)),this.auth=new G(s.baseUrl,{fetchImpl:_,storage:oe,integrationProviders:this.integrationProviders,applicationCode:this.applicationCode,platformType:s.platformType}),this.httpClient=new z(oe,_,r),this.fileStorage=new J(s.baseUrl,this.httpClient),this.entities=V(s.baseUrl,this.httpClient),this.functions=new D(this.httpClient,s.baseUrl),this.payment=ie(this.integrationProviders)}preparePaymentContext(){return ee({platformType:this.platformType,getMiniProgramIdentity:()=>this.auth.getMiniProgramIdentity()})}};export{St as SocialLoginButtons,x as default,ft as disableIframeHoverInspector,gt as enableIframeHoverInspector,yt as getIframeSourceLocation,oe as localStorage,mt as setupIframeHoverInspector,wt as setupIframeSourceLocationListener,_ as webFetch};
36
+ `,document.head.appendChild(t)}createTooltip(){return this.tooltip?this.tooltip:(this.tooltip=document.createElement("div"),this.tooltip.id="__nvwa-inspector-tooltip",document.body.appendChild(this.tooltip),this.tooltip)}createOverlay(t){let e=document.createElement("div");return e.className=`__nvwa-inspector-overlay __nvwa-inspector-overlay-${t}`,document.body.appendChild(e),e}updateOverlayPosition(t,e){if(!e.isConnected)return;let r=e.getBoundingClientRect(),i=window.scrollX||window.pageXOffset,a=window.scrollY||window.pageYOffset;r.width>0&&r.height>0?(t.style.left=`${r.left+i}px`,t.style.top=`${r.top+a}px`,t.style.width=`${r.width}px`,t.style.height=`${r.height}px`,t.style.display="block"):t.style.display="none"}removeOverlay(t){t&&t.parentNode&&t.parentNode.removeChild(t)}highlightElement(t,e){if(!t.isConnected)return;if(this.hoverElement===t&&this.hoverOverlay){this.updateOverlayPosition(this.hoverOverlay,t);let o=this.createTooltip();e?o.textContent=e:o.textContent=`<${t.tagName.toLowerCase()}> (\u65E0 source location)`,o.style.display="block";let n=t.getBoundingClientRect();o.style.left=`${n.left+window.scrollX}px`,o.style.top=`${n.top+window.scrollY-o.offsetHeight-8}px`,n.top<o.offsetHeight+8&&(o.style.top=`${n.bottom+window.scrollY+8}px`);return}this.hoverOverlay&&(this.removeOverlay(this.hoverOverlay),this.hoverOverlay=null);let r=this.createOverlay("hover");this.updateOverlayPosition(r,t),this.hoverOverlay=r,this.hoverElement=t;let i=()=>{this.hoverOverlay&&this.hoverElement&&this.hoverElement.isConnected&&this.updateOverlayPosition(this.hoverOverlay,this.hoverElement)};this.hoverUpdateHandler&&(window.removeEventListener("scroll",this.hoverUpdateHandler,!0),window.removeEventListener("resize",this.hoverUpdateHandler)),this.hoverUpdateHandler=i,window.addEventListener("scroll",i,!0),window.addEventListener("resize",i);let a=this.createTooltip();e?a.textContent=e:a.textContent=`<${t.tagName.toLowerCase()}> (\u65E0 source location)`,a.style.display="block";let s=t.getBoundingClientRect();a.style.left=`${s.left+window.scrollX}px`,a.style.top=`${s.top+window.scrollY-a.offsetHeight-8}px`,s.top<a.offsetHeight+8&&(a.style.top=`${s.bottom+window.scrollY+8}px`)}selectElement(t,e){if(!t.isConnected)return;if(this.selectedElement===t&&this.selectedOverlay){this.updateOverlayPosition(this.selectedOverlay,t);return}this.selectedOverlay&&(this.removeOverlay(this.selectedOverlay),this.selectedOverlay=null);let r=this.createOverlay("selected");this.updateOverlayPosition(r,t),this.selectedOverlay=r,this.selectedElement=t;let i=()=>{this.selectedOverlay&&this.selectedElement&&this.selectedElement.isConnected&&this.updateOverlayPosition(this.selectedOverlay,this.selectedElement)};this.selectedUpdateHandler&&(window.removeEventListener("scroll",this.selectedUpdateHandler,!0),window.removeEventListener("resize",this.selectedUpdateHandler)),this.selectedUpdateHandler=i,window.addEventListener("scroll",i,!0),window.addEventListener("resize",i)}removeHighlight(){this.hoverOverlay&&(this.removeOverlay(this.hoverOverlay),this.hoverOverlay=null),this.hoverElement&&(this.hoverElement=null),this.tooltip&&(this.tooltip.style.display="none"),this.hoverUpdateHandler&&(window.removeEventListener("scroll",this.hoverUpdateHandler,!0),window.removeEventListener("resize",this.hoverUpdateHandler),this.hoverUpdateHandler=null)}clearSelection(){this.selectedOverlay&&(this.removeOverlay(this.selectedOverlay),this.selectedOverlay=null),this.selectedElement&&(this.selectedElement=null),this.selectedUpdateHandler&&(window.removeEventListener("scroll",this.selectedUpdateHandler,!0),window.removeEventListener("resize",this.selectedUpdateHandler),this.selectedUpdateHandler=null)}cleanup(){this.removeHighlight(),this.clearSelection(),this.tooltip&&this.tooltip.parentNode&&(this.tooltip.parentNode.removeChild(this.tooltip),this.tooltip=null);let t=document.getElementById("__nvwa-inspector-overlay-style");t&&t.parentNode&&t.parentNode.removeChild(t)}};function Q(t="root"){if(typeof document>"u")return null;let e=document.getElementById(t)||document.body;if(!e)return null;let r=e.querySelector("[data-source-location]");if(r){let i=r.getAttribute("data-source-location");if(i)return i}if(e.firstElementChild){let i=e.firstElementChild.getAttribute("data-source-location");if(i)return i}return null}var Te={"wechat-pay":{id:"wechat-pay",name:"WeChat Pay",description:"WeChat payment for web and miniapp."},"wechat-platform":{id:"wechat-platform",name:"WeChat Partner",description:"WeChat partner merchant onboarding."},"alipay-web":{id:"alipay-web",name:"Alipay Web",description:"Alipay page pay (ISV)."},"alipay-mobile-web":{id:"alipay-mobile-web",name:"Alipay Mobile Web",description:"Alipay WAP pay (ISV)."},"alipay-miniprogram":{id:"alipay-miniprogram",name:"Alipay Mini Program",description:"Alipay mini program payment."},stripe:{id:"stripe",name:"Stripe",description:"Stripe payment."}};function X(t){let e=t;if(typeof e.kind=="string")return e;if(typeof e.tradeNO=="string")return{kind:"alipay_miniprogram",tradeNO:e.tradeNO};if(typeof e.clientSecret=="string")return{kind:"stripe_client_secret",clientSecret:e.clientSecret};if(typeof e.redirectUrl=="string")return{kind:"redirect_url",redirectUrl:e.redirectUrl};if(typeof e.formHtml=="string")return{kind:"alipay_page",formHtml:e.formHtml};if(typeof e.codeUrl=="string")return{kind:"wechat_native_qr",codeUrl:e.codeUrl};let r=e.jsapiPayParams??e;return typeof r.timeStamp=="string"&&typeof r.nonceStr=="string"&&typeof r.package=="string"&&typeof r.paySign=="string"&&typeof r.appId=="string"?{kind:"wechat_jsapi",mode:"jsapi",jsapiPayParams:{appId:r.appId,timeStamp:r.timeStamp,nonceStr:r.nonceStr,package:r.package,signType:r.signType??"RSA",paySign:r.paySign}}:null}async function Z(t,e){let r=t.payment?.providers??{};return Object.entries(r).filter(([,i])=>i.enabled).map(([i])=>{let a=Te[i]??{id:i,name:i,description:""};return{...a,type:a.id}})}function C(t){return t&&typeof t=="object"?t:{}}function _e(t){let e=C(t),r=e.enabled===!0,i=String(e.oauthCredentialSource??"").toLowerCase();return i?{enabled:r,oauthCredentialSource:i==="custom"?"custom":"nvwa_default"}:{enabled:r}}function M(t){let e=C(t),r=C(e.providers),i={};for(let[a,s]of Object.entries(r))i[a]=_e(s);return{providers:i}}function A(t){let e=C(t);return{socialLogin:M(e.socialLogin),payment:M(e.payment)}}var $e=["DesktopWeb","MobileWeb","AndroidApp","IosApp","HarmonyApp","WechatMiniProgram","AlipayMiniProgram","DouyinMiniProgram"];function Ie(t){return $e.includes(t)}async function ee(t){let{platformType:e,getMiniProgramIdentity:r}=t;if(e!=="WechatMiniProgram"&&e!=="AlipayMiniProgram")return{platformType:e};if(!r)return{platformType:e};let i=await r();return i?{platformType:i.platformType,platformUserId:i.platformUserId,appId:i.appId,unionid:i.unionid}:{platformType:e}}function te(t){return A(t.integrationProviders??{})}function re(t){let e=t.baseUrl?.trim()??"";if(!e)throw new Error("Nvwa: appConfig.baseUrl is required");let r=t.applicationCode?.trim()??"";if(!r)throw new Error("Nvwa: appConfig.applicationCode is required");let i=t.platformType?.trim()??"";if(!i)throw new Error("Nvwa: appConfig.platformType is required");if(!Ie(i))throw new Error("Nvwa: appConfig.platformType is invalid");return{baseUrl:e,applicationCode:r,platformType:i}}var T=class{constructor(){this.prefix="nvwa_"}getKey(e){return`${this.prefix}${e}`}async get(e){try{let r=this.getKey(e),i=localStorage.getItem(r);if(!i)return null;let a=JSON.parse(i);return a.expires&&Date.now()>a.expires?(await this.remove(e),null):a.value}catch(r){return console.error("WebStorageService get error:",r),null}}async set(e,r,i){try{let a=this.getKey(e),s={value:r,expires:i?Date.now()+i*1e3:null,timestamp:Date.now()};localStorage.setItem(a,JSON.stringify(s))}catch(a){throw console.error("WebStorageService set error:",a),a}}async remove(e){try{let r=this.getKey(e);localStorage.removeItem(r)}catch(r){throw console.error("WebStorageService remove error:",r),r}}async clear(){try{Object.keys(localStorage).filter(i=>i.startsWith(this.prefix)).forEach(i=>{localStorage.removeItem(i)})}catch(e){throw console.error("WebStorageService clear error:",e),e}}};var Ae=(t,e)=>{let r;if(typeof t=="string")r=t;else if(t&&typeof t.toString=="function")r=t.toString();else if(t?.url)r=t.url;else throw new Error("Invalid input for webFetch");let i;if(e?.headers){let s=e.headers;if(s instanceof y){let o={};s.forEach((n,c)=>{o[c]=n}),i=o}else if(Array.isArray(s)){let o=[];for(let n of s)Array.isArray(n)&&n.length>=2&&o.push([String(n[0]),String(n[1])]);i=o}else typeof s=="object"&&(i=s)}let a={method:e?.method||"GET",headers:i,body:e?.body,credentials:e?.credentials};return e?.signal&&(a.signal=e.signal),globalThis.fetch(r,a).then(async s=>{let o=s.headers.get("content-type")||"",n;if(o.includes("application/json"))n=await s.json();else{let h=await s.text();try{n=JSON.parse(h)}catch{n=h}}let c=new y;return s.headers.forEach((h,l)=>{c.set(l,h)}),new q(n,{status:s.status,statusText:s.statusText,headers:c})})},_=Ae;function Ne(t){return`https://api.qrserver.com/v1/create-qr-code/?size=200x200&data=${encodeURIComponent(t)}`}var N={async requestPayment(t,e){let r=X(t);if(r?.kind==="redirect_url"){window.location.href=r.redirectUrl;return}if(r?.kind==="wechat_native_qr"){let a=Ne(r.codeUrl);window.open(a,"_blank","noopener,noreferrer");return}if(r?.kind==="alipay_page"){let a=window.open("","_blank");a&&(a.document.write(r.formHtml),a.document.close());return}let i=new Error("requestPayment: unsupported payParams for Desktop-web");throw e?.onFailure?.(i),i}};function ie(t){let e=async r=>await Z(t,r);return{...N,getAvailableProviders:e,getProviders:e}}function mt(){if(typeof window>"u"||window===window.parent)return;let t=!1,e=new Y;function r(h){if(!h)return!1;let l=h.toLowerCase();return l.includes("/components/")||l.includes("\\components\\")}function i(h){let l=h,u=null;for(;l;){let d=l.getAttribute("data-source-location");if(d)if(r(d)){u||(u=d),l=l.parentElement;continue}else return d;l=l.parentElement}return u}let a=null;function s(h){t&&(a!==null&&cancelAnimationFrame(a),a=requestAnimationFrame(()=>{let l=h.target;if(!l||l===document.body||l===document.documentElement){e.removeHighlight();return}if(l.tagName.toLowerCase()==="img"){let p=i(l);e.highlightElement(l,p);let f={type:"HOVER_INSPECTOR_ELEMENT_HOVER",sourceLocation:p,elementInfo:{tagName:l.tagName.toLowerCase(),className:l.className||"",id:l.id||""}};window.parent.postMessage(f,"*");return}let u=l,d=i(l);if(!d){let p=l.parentElement;for(;p&&p!==document.body&&p!==document.documentElement;){let f=i(p);if(f){u=p,d=f;break}p=p.parentElement}}e.highlightElement(u,d);let m={type:"HOVER_INSPECTOR_ELEMENT_HOVER",sourceLocation:d,elementInfo:{tagName:u.tagName.toLowerCase(),className:u.className||"",id:u.id||""}};window.parent.postMessage(m,"*")}))}function o(){if(!t)return;e.removeHighlight();let h={type:"HOVER_INSPECTOR_ELEMENT_LEAVE"};window.parent.postMessage(h,"*")}function n(h){if(!t)return;h.preventDefault(),h.stopPropagation();let l=h.target;if(!l||l===document.body||l===document.documentElement)return;let u=i(l);e.selectElement(l,u);let d={type:"HOVER_INSPECTOR_ELEMENT_SELECT",sourceLocation:u,elementInfo:{tagName:l.tagName.toLowerCase(),className:l.className||"",id:l.id||""}};window.parent.postMessage(d,"*")}function c(h){h.data?.type==="HOVER_INSPECTOR_ENABLE"?(t=!0,document.addEventListener("mousemove",s),document.addEventListener("mouseleave",o),document.addEventListener("click",n,!0)):h.data?.type==="HOVER_INSPECTOR_DISABLE"&&(t=!1,document.removeEventListener("mousemove",s),document.removeEventListener("mouseleave",o),document.removeEventListener("click",n,!0),e.removeHighlight(),e.clearSelection())}return window.addEventListener("message",c),()=>{window.removeEventListener("message",c),document.removeEventListener("mousemove",s),document.removeEventListener("mouseleave",o),document.removeEventListener("click",n,!0),e.cleanup()}}function gt(t,e){if(!t||!t.contentWindow)throw new Error("Invalid iframe element");let r={type:"HOVER_INSPECTOR_ENABLE"};t.contentWindow.postMessage(r,e)}function ft(t,e){if(!t||!t.contentWindow)return;let r={type:"HOVER_INSPECTOR_DISABLE"};t.contentWindow.postMessage(r,e)}function yt(t,e,r=5e3){return new Promise((i,a)=>{if(!t||!t.contentWindow){a(new Error("Invalid iframe element"));return}let s=`source-location-${Date.now()}-${Math.random()}`,o=setTimeout(()=>{window.removeEventListener("message",n),a(new Error("Request timeout"))},r),n=h=>{h.origin===e&&h.data?.type==="GET_SOURCE_LOCATION_RESPONSE"&&h.data?.requestId===s&&(clearTimeout(o),window.removeEventListener("message",n),h.data.error?a(new Error(h.data.error)):i(h.data.sourceLocation||null))};window.addEventListener("message",n);let c={type:"GET_SOURCE_LOCATION_REQUEST",requestId:s};try{t.contentWindow.postMessage(c,e)}catch(h){clearTimeout(o),window.removeEventListener("message",n),a(h)}})}function wt(){if(typeof window>"u"||window===window.parent)return;let t=e=>{if(e.data?.type==="GET_SOURCE_LOCATION_REQUEST")try{let i={type:"GET_SOURCE_LOCATION_RESPONSE",sourceLocation:xe(),requestId:e.data.requestId};window.parent.postMessage(i,e.origin)}catch(r){let i={type:"GET_SOURCE_LOCATION_RESPONSE",sourceLocation:null,error:r instanceof Error?r.message:"Unknown error",requestId:e.data.requestId};window.parent.postMessage(i,e.origin)}};return window.addEventListener("message",t),()=>{window.removeEventListener("message",t)}}function xe(){return Q("root")}import{useEffect as Ue,useMemo as ae,useState as se}from"react";import{createElement as ne}from"react";var ke="nvwa-social-login-list",Re="nvwa-social-login-button";async function je(t){return await t.getSocialProviderDescriptors()}function He(t){return t?.trim()?t.trim():typeof globalThis<"u"&&"location"in globalThis?globalThis.location.href:""}function St(t){let[e,r]=se(t.providers??[]),[i,a]=se(!t.providers);Ue(()=>{if(t.providers){r(t.providers),a(!1);return}let n=!1;return a(!0),je(t.auth).then(c=>{n||r(c)}).catch(c=>{n||t.onError?.(c instanceof Error?c:new Error(String(c)))}).finally(()=>{n||a(!1)}),()=>{n=!0}},[t.auth,t.providers,t.onError]);let s=ae(()=>He(t.returnUrl),[t.returnUrl]),o=ae(()=>e.filter(n=>n.loginKind!=="unsupported"),[e]);return i||o.length===0?null:ne("div",{className:t.className??ke},...o.map(n=>{let c=async()=>{try{t.onBeforeLogin?.(n),await t.auth.startSocialLogin(n.id,{returnUrl:s,applicationCode:t.applicationCode,platformCode:t.platformCode})}catch(l){t.onError?.(l instanceof Error?l:new Error(String(l)))}},h=ne("button",{key:n.id,type:"button",className:Re,onClick:c},n.name);return t.onRenderButton?t.onRenderButton(n,h):h}))}var oe=new T,x=class{constructor(e){this.payment=N;let{handleUnauthorized:r,appConfig:i,integrationProviders:a}=e,s=re(i);this.applicationCode=s.applicationCode,this.platformType=s.platformType,this.integrationProviders=A(a??te(i)),this.auth=new G(s.baseUrl,{fetchImpl:_,storage:oe,integrationProviders:this.integrationProviders,applicationCode:this.applicationCode,platformType:s.platformType}),this.httpClient=new z(oe,_,r),this.fileStorage=new J(s.baseUrl,this.httpClient),this.entities=V(s.baseUrl,this.httpClient),this.functions=new D(this.httpClient,s.baseUrl);let o=ie(this.integrationProviders);this.payment={...o,collectPaymentClientContext:()=>ee({platformType:this.platformType,getMiniProgramIdentity:()=>this.auth.getMiniProgramIdentity()})}}};export{St as SocialLoginButtons,x as default,ft as disableIframeHoverInspector,gt as enableIframeHoverInspector,yt as getIframeSourceLocation,oe as localStorage,mt as setupIframeHoverInspector,wt as setupIframeSourceLocationListener,_ as webFetch};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nvwa-app/sdk-web",
3
- "version": "6.43.0",
3
+ "version": "6.45.0",
4
4
  "description": "NVWA跨端通用工具类Web端实现",
5
5
  "main": "dist/index.js",
6
6
  "module": "dist/index.mjs",