@polyv/utils 2.19.0-beta.2 → 2.19.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/cjs/external-link.d.ts +6 -0
- package/cjs/external-link.js +1 -1
- package/es/external-link.d.ts +6 -0
- package/es/external-link.js +1 -1
- package/package.json +1 -1
package/cjs/external-link.d.ts
CHANGED
|
@@ -115,6 +115,10 @@ export interface NavigateToLinkOptions {
|
|
|
115
115
|
isWxMiniProgramEnv?: () => Promise<boolean | undefined>;
|
|
116
116
|
/** 跳转微信小程序 */
|
|
117
117
|
toWxMiniProgram?: (link: string) => void;
|
|
118
|
+
/** 跳转失败回调 */
|
|
119
|
+
failCallback?: () => void;
|
|
120
|
+
/** app 标识 */
|
|
121
|
+
getIsApp?: () => string | undefined;
|
|
118
122
|
}
|
|
119
123
|
/**
|
|
120
124
|
* 检测自定义环境 UA 配置
|
|
@@ -130,6 +134,8 @@ export declare function openAppWithFallback(options: {
|
|
|
130
134
|
fallbackUrl: string;
|
|
131
135
|
jumpWay: LinkJumpWay;
|
|
132
136
|
openLink: (url: string, jumpWay: LinkJumpWay) => void;
|
|
137
|
+
failCallback?: () => void;
|
|
138
|
+
getIsApp?: () => string | undefined;
|
|
133
139
|
}): void;
|
|
134
140
|
/**
|
|
135
141
|
* 格式化链接地址
|
package/cjs/external-link.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __awaiter=this&&this.__awaiter||function(i,n,o
|
|
1
|
+
"use strict";var __awaiter=this&&this.__awaiter||function(i,n,e,o){return new(e||(e=Promise))((function(r,t){function a(i){try{s(o.next(i))}catch(i){t(i)}}function l(i){try{s(o.throw(i))}catch(i){t(i)}}function s(i){var n;i.done?r(i.value):(n=i.value,n instanceof e?n:new e((function(i){i(n)}))).then(a,l)}s((o=o.apply(i,n||[])).next())}))},__generator=this&&this.__generator||function(i,n){var e,o,r,t,a={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return t={next:l(0),throw:l(1),return:l(2)},"function"==typeof Symbol&&(t[Symbol.iterator]=function(){return this}),t;function l(l){return function(s){return function(l){if(e)throw new TypeError("Generator is already executing.");for(;t&&(t=0,l[0]&&(a=0)),a;)try{if(e=1,o&&(r=2&l[0]?o.return:l[0]?o.throw||((r=o.return)&&r.call(o),0):o.next)&&!(r=r.call(o,l[1])).done)return r;switch(o=0,r&&(l=[2&l[0],r.value]),l[0]){case 0:case 1:r=l;break;case 4:return a.label++,{value:l[1],done:!1};case 5:a.label++,o=l[1],l=[0];continue;case 7:l=a.ops.pop(),a.trys.pop();continue;default:if(!(r=a.trys,(r=r.length>0&&r[r.length-1])||6!==l[0]&&2!==l[0])){a=0;continue}if(3===l[0]&&(!r||l[1]>r[0]&&l[1]<r[3])){a.label=l[1];break}if(6===l[0]&&a.label<r[1]){a.label=r[1],r=l;break}if(r&&a.label<r[2]){a.label=r[2],a.ops.push(l);break}r[2]&&a.ops.pop(),a.trys.pop();continue}l=n.call(i,a)}catch(i){l=[6,i],o=0}finally{e=r=0}if(5&l[0])throw l[1];return{value:l[0]?l[1]:void 0,done:!0}}([l,s])}}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.LinkJumpWay=exports.isPortable=exports.isHarmony=exports.isIOS=exports.isAndroid=void 0,exports.isCustomUA=isCustomUA,exports.openAppWithFallback=openAppWithFallback,exports.formatLink=formatLink,exports.navigateToLink=navigateToLink;var LinkJumpWay,ua_info_1=require("@just4/ua-info"),querystring_1=require("@just4/querystring"),uaInfo=(0,ua_info_1.getCurrentUAInfo)();function isCustomUA(i){var n=navigator.userAgent.toLowerCase();return!!i.length&&i.some((function(i){return n.includes(i.toLowerCase())}))}function openAppWithFallback(i){var n=i.iosLink,e=i.androidLink,o=i.harmonyLink,r=i.fallbackUrl,t=i.jumpWay,a=i.openLink,l=i.failCallback,s=i.getIsApp,u=Date.now(),c=null==s?void 0:s();console.info("isApp \u6807\u8bc6",c);var f,p=!1,k=function(){p=!0,window.removeEventListener("blur",k)};if(window.addEventListener("blur",k),console.info("ios\uff1a".concat(exports.isIOS,"\uff0cAndroid\uff1a").concat(exports.isAndroid,"\uff0charmony\uff1a").concat(exports.isHarmony)),exports.isIOS?(console.info("iOSLink",n),f=n):exports.isAndroid?(console.info("Android link",e),f=e):exports.isHarmony&&(console.info("harmony link",o),f=o),!f)return console.info("\u6ca1\u6709\u914d\u7f6e\u591a\u5e73\u53f0\u94fe\u63a5\uff0c\u4f7f\u7528\u964d\u7ea7\u94fe\u63a5",r),r?void a(r,t):void(null==l||l());window.location.href=f,setTimeout((function(){if(console.info("\u8fdb\u5165\u5230\u964d\u7ea7\u903b\u8f91\u4e86\uff0c\u662f\u5426\u79bb\u5f00\u9875\u9762",p),window.removeEventListener("blur",k),"1"!==c){var i=Date.now()-u;if(!p&&i<3700){if(console.info("\u964d\u7ea7\u7684 url",r,t),!r)return void(null==l||l());a(r,t)}}else console.info("\u5b58\u5728 isApp \u6807\u8bc6\u4e0d\u505a\u964d\u7ea7")}),3500)}function toPlvWebviewBridge(i){return __awaiter(this,void 0,void 0,(function(){var n,e,o,r;return __generator(this,(function(t){switch(t.label){case 0:return n=i.getPlvWebviewSmallWindowSize,e=i.getPlvWebviewBridge,o=(null==n?void 0:n())||{width:90,height:160},[4,null==e?void 0:e()];case 1:return(r=t.sent())?(r.sendData("clickProduct",{width:o.width,height:o.height,newPage:!0,link:i.link,data:i.data}),[2]):[2]}}))}))}function toMultiPlatformLink(i){return __awaiter(this,void 0,void 0,(function(){var n,e,o,r,t,a,l,s,u,c,f,p,k,d,v,m,b,L,w;return __generator(this,(function(g){switch(g.label){case 0:n=i.linkData,e=i.isWxMiniProgramEnv,o=i.toWxMiniProgram,r=i.openLink,t=i.getLinkParams,a=i.isMobile,l=i.failCallback,s=i.getIsApp,u=n.wxMiniprogramLink,c=n.pcLink,f=n.iosLink,p=n.androidLink,k=n.harmonyLink,d=n.link,v=n.jumpWay,m=n.mobileAppLink,b=(null==a?void 0:a())||exports.isPortable,console.info("\u8df3\u8f6c\u51fd\u6570\u6536\u5230\u7684\u6570\u636e",n),L=!1,g.label=1;case 1:return g.trys.push([1,3,,4]),[4,null==e?void 0:e()];case 2:return L=g.sent()||!1,[3,4];case 3:return g.sent(),L=!1,[3,4];case 4:if(L&&o){if(console.info("\u8fdb\u5165\u5230\u5c0f\u7a0b\u5e8f webview \u73af\u5883 wxMiniprogramLink & link",u,d),u)o(formatLink(u,t));else{if(!d)return null==l||l(),[2];r(formatLink(d,t),v)}return[2]}return b?uaInfo.client.isWx||uaInfo.client.isWxWork||uaInfo.client.isDing||uaInfo.client.isQQ||uaInfo.client.isWeibo||uaInfo.client.isBaiduApp?d?(r(formatLink(d,t),v),[2]):(null==l||l(),[2]):(console.info("\u6536\u5230 getLinkParams \u53c2\u6570",t),openAppWithFallback({iosLink:f,androidLink:p,harmonyLink:k,fallbackUrl:formatLink(m||d,t),jumpWay:v,openLink:r,failCallback:l,getIsApp:s}),[2]):(w=c||d)?(r(formatLink(w,t),v),[2]):(null==l||l(),[2])}}))}))}function formatLink(i,n){if(!i)return i;var e={};if(n){var o=n(i);console.info("\u5e26\u7684\u53c2\u6570",o),e=Object.assign({},e,o)}return console.info("\u6700\u7ec8\u62fc\u63a5\u7684\u5b57\u7b26\u4e32",(0,querystring_1.concat)(i,e)),(0,querystring_1.concat)(i,e)}function navigateToLink(i){var n=i.linkData,e=i.usePlvWebviewBridge,o=i.openLink,r=i.isPlvWebview,t=i.getPlvWebviewSmallWindowSize,a=i.getPlvWebviewBridge,l=i.isWxMiniProgramEnv,s=i.toWxMiniProgram,u=i.getLinkParams,c=i.isMobile,f=i.failCallback,p=i.getIsApp,k=(null==r?void 0:r())||!1;if(console.info("\u662f\u5426\u4fdd\u5229\u5a01 webview \u73af\u5883",k),k){var d=n.link,v=n.iosLink,m=n.androidLink,b=n.harmonyLink,L=n.mobileAppLink,w=n.wxMiniprogramOriginalId,g=n.wxMiniprogramLink,h=n.jumpWay,W=L||d;console.info("\u4fdd\u5229\u5a01 webview \u4e0b\u7684 mobileAppLink\uff0clink",L,d),console.info("\u4fdd\u5229\u5a01 webview \u4e0b usePlvWebviewBridge",e);var y={mobileLink:formatLink(d,u),wxMiniprogramOriginalId:w,wxMiniprogramLink:formatLink(g,u),mobileAppLink:formatLink(L,u)};return e?W?void toPlvWebviewBridge({link:formatLink(W,u),data:y,getPlvWebviewSmallWindowSize:t,getPlvWebviewBridge:a}):void(null==f||f()):void openAppWithFallback({iosLink:v,androidLink:m,harmonyLink:b,fallbackUrl:formatLink(L||d,u),jumpWay:h,openLink:o,failCallback:f,getIsApp:p})}toMultiPlatformLink({linkData:n,getLinkParams:u,isWxMiniProgramEnv:l,toWxMiniProgram:s,openLink:o,isMobile:c,failCallback:f,getIsApp:p})}exports.isAndroid=uaInfo.os.isAndroid,exports.isIOS=uaInfo.os.isIOS,exports.isHarmony=uaInfo.os.isOpenHarmony,exports.isPortable=uaInfo.isPortable,function(i){i.PopUp="POP_UP",i.NewWindow="NEW_WINDOW",i.CurrentWindow="CURRENT_WINDOW"}(LinkJumpWay||(exports.LinkJumpWay=LinkJumpWay={}));
|
package/es/external-link.d.ts
CHANGED
|
@@ -115,6 +115,10 @@ export interface NavigateToLinkOptions {
|
|
|
115
115
|
isWxMiniProgramEnv?: () => Promise<boolean | undefined>;
|
|
116
116
|
/** 跳转微信小程序 */
|
|
117
117
|
toWxMiniProgram?: (link: string) => void;
|
|
118
|
+
/** 跳转失败回调 */
|
|
119
|
+
failCallback?: () => void;
|
|
120
|
+
/** app 标识 */
|
|
121
|
+
getIsApp?: () => string | undefined;
|
|
118
122
|
}
|
|
119
123
|
/**
|
|
120
124
|
* 检测自定义环境 UA 配置
|
|
@@ -130,6 +134,8 @@ export declare function openAppWithFallback(options: {
|
|
|
130
134
|
fallbackUrl: string;
|
|
131
135
|
jumpWay: LinkJumpWay;
|
|
132
136
|
openLink: (url: string, jumpWay: LinkJumpWay) => void;
|
|
137
|
+
failCallback?: () => void;
|
|
138
|
+
getIsApp?: () => string | undefined;
|
|
133
139
|
}): void;
|
|
134
140
|
/**
|
|
135
141
|
* 格式化链接地址
|
package/es/external-link.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var __awaiter=this&&this.__awaiter||function(i,n,o,e){return new(o||(o=Promise))((function(t,
|
|
1
|
+
var __awaiter=this&&this.__awaiter||function(i,n,o,e){return new(o||(o=Promise))((function(t,a){function r(i){try{s(e.next(i))}catch(i){a(i)}}function l(i){try{s(e.throw(i))}catch(i){a(i)}}function s(i){var n;i.done?t(i.value):(n=i.value,n instanceof o?n:new o((function(i){i(n)}))).then(r,l)}s((e=e.apply(i,n||[])).next())}))};import{getCurrentUAInfo}from"@just4/ua-info";import{concat}from"@just4/querystring";const uaInfo=getCurrentUAInfo();export const isAndroid=uaInfo.os.isAndroid;export const isIOS=uaInfo.os.isIOS;export const isHarmony=uaInfo.os.isOpenHarmony;export const isPortable=uaInfo.isPortable;export var LinkJumpWay;!function(i){i.PopUp="POP_UP",i.NewWindow="NEW_WINDOW",i.CurrentWindow="CURRENT_WINDOW"}(LinkJumpWay||(LinkJumpWay={}));export function isCustomUA(i){const n=navigator.userAgent.toLowerCase();return!!i.length&&i.some((i=>n.includes(i.toLowerCase())))}export function openAppWithFallback(i){const{iosLink:n,androidLink:o,harmonyLink:e,fallbackUrl:t,jumpWay:a,openLink:r,failCallback:l,getIsApp:s}=i,c=Date.now(),f=null==s?void 0:s();console.info("isApp \u6807\u8bc6",f);let u=!1;const k=()=>{u=!0,window.removeEventListener("blur",k)};let d;if(window.addEventListener("blur",k),console.info(`ios\uff1a${isIOS}\uff0cAndroid\uff1a${isAndroid}\uff0charmony\uff1a${isHarmony}`),isIOS?(console.info("iOSLink",n),d=n):isAndroid?(console.info("Android link",o),d=o):isHarmony&&(console.info("harmony link",e),d=e),!d)return console.info("\u6ca1\u6709\u914d\u7f6e\u591a\u5e73\u53f0\u94fe\u63a5\uff0c\u4f7f\u7528\u964d\u7ea7\u94fe\u63a5",t),t?void r(t,a):void(null==l||l());window.location.href=d,setTimeout((()=>{if(console.info("\u8fdb\u5165\u5230\u964d\u7ea7\u903b\u8f91\u4e86\uff0c\u662f\u5426\u79bb\u5f00\u9875\u9762",u),window.removeEventListener("blur",k),"1"===f)return void console.info("\u5b58\u5728 isApp \u6807\u8bc6\u4e0d\u505a\u964d\u7ea7");const i=Date.now()-c;if(!u&&i<3700){if(console.info("\u964d\u7ea7\u7684 url",t,a),!t)return void(null==l||l());r(t,a)}}),3500)}function toPlvWebviewBridge(i){return __awaiter(this,void 0,void 0,(function*(){const{getPlvWebviewSmallWindowSize:n,getPlvWebviewBridge:o}=i,e=(null==n?void 0:n())||{width:90,height:160},t=yield null==o?void 0:o();t&&t.sendData("clickProduct",{width:e.width,height:e.height,newPage:!0,link:i.link,data:i.data})}))}function toMultiPlatformLink(i){return __awaiter(this,void 0,void 0,(function*(){const{linkData:n,isWxMiniProgramEnv:o,toWxMiniProgram:e,openLink:t,getLinkParams:a,isMobile:r,failCallback:l,getIsApp:s}=i,{wxMiniprogramLink:c,pcLink:f,iosLink:u,androidLink:k,harmonyLink:d,link:p,jumpWay:m,mobileAppLink:v}=n,L=(null==r?void 0:r())||isPortable;console.info("\u8df3\u8f6c\u51fd\u6570\u6536\u5230\u7684\u6570\u636e",n);let w=!1;try{w=(yield null==o?void 0:o())||!1}catch(i){w=!1}if(w&&e)if(console.info("\u8fdb\u5165\u5230\u5c0f\u7a0b\u5e8f webview \u73af\u5883 wxMiniprogramLink & link",c,p),c)e(formatLink(c,a));else{if(!p)return void(null==l||l());t(formatLink(p,a),m)}else{if(!L){const i=f||p;return i?void t(formatLink(i,a),m):void(null==l||l())}if(uaInfo.client.isWx||uaInfo.client.isWxWork||uaInfo.client.isDing||uaInfo.client.isQQ||uaInfo.client.isWeibo||uaInfo.client.isBaiduApp)return p?void t(formatLink(p,a),m):void(null==l||l());console.info("\u6536\u5230 getLinkParams \u53c2\u6570",a),openAppWithFallback({iosLink:u,androidLink:k,harmonyLink:d,fallbackUrl:formatLink(v||p,a),jumpWay:m,openLink:t,failCallback:l,getIsApp:s})}}))}export function formatLink(i,n){if(!i)return i;let o={};if(n){const e=n(i);console.info("\u5e26\u7684\u53c2\u6570",e),o=Object.assign({},o,e)}return console.info("\u6700\u7ec8\u62fc\u63a5\u7684\u5b57\u7b26\u4e32",concat(i,o)),concat(i,o)}export function navigateToLink(i){const{linkData:n,usePlvWebviewBridge:o,openLink:e,isPlvWebview:t,getPlvWebviewSmallWindowSize:a,getPlvWebviewBridge:r,isWxMiniProgramEnv:l,toWxMiniProgram:s,getLinkParams:c,isMobile:f,failCallback:u,getIsApp:k}=i,d=(null==t?void 0:t())||!1;if(console.info("\u662f\u5426\u4fdd\u5229\u5a01 webview \u73af\u5883",d),d){const{link:i,iosLink:t,androidLink:l,harmonyLink:s,mobileAppLink:f,wxMiniprogramOriginalId:d,wxMiniprogramLink:p,jumpWay:m}=n,v=f||i;console.info("\u4fdd\u5229\u5a01 webview \u4e0b\u7684 mobileAppLink\uff0clink",f,i),console.info("\u4fdd\u5229\u5a01 webview \u4e0b usePlvWebviewBridge",o);const L={mobileLink:formatLink(i,c),wxMiniprogramOriginalId:d,wxMiniprogramLink:formatLink(p,c),mobileAppLink:formatLink(f,c)};return o?v?void toPlvWebviewBridge({link:formatLink(v,c),data:L,getPlvWebviewSmallWindowSize:a,getPlvWebviewBridge:r}):void(null==u||u()):void openAppWithFallback({iosLink:t,androidLink:l,harmonyLink:s,fallbackUrl:formatLink(f||i,c),jumpWay:m,openLink:e,failCallback:u,getIsApp:k})}toMultiPlatformLink({linkData:n,getLinkParams:c,isWxMiniProgramEnv:l,toWxMiniProgram:s,openLink:e,isMobile:f,failCallback:u,getIsApp:k})}
|