@sunggang/ui-lib 0.4.58 → 0.4.59

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.
@@ -453,6 +453,115 @@ function _ts_generator(thisArg, body) {
453
453
  }
454
454
  }
455
455
  var LiffContext = /*#__PURE__*/ React.createContext(undefined);
456
+ // 外部可直接 import 的 helper:嘗試由 getLiff helper 或 dynamic import 取得 SDK,並在必要時啟動 init
457
+ function fetchLiffSdk(liffId) {
458
+ return _fetchLiffSdk.apply(this, arguments);
459
+ }
460
+ function _fetchLiffSdk() {
461
+ _fetchLiffSdk = _async_to_generator(function(liffId) {
462
+ var sdk, mod, e, e1, e2;
463
+ return _ts_generator(this, function(_state) {
464
+ switch(_state.label){
465
+ case 0:
466
+ if (typeof window === "undefined") return [
467
+ 2,
468
+ null
469
+ ];
470
+ _state.label = 1;
471
+ case 1:
472
+ _state.trys.push([
473
+ 1,
474
+ 10,
475
+ ,
476
+ 11
477
+ ]);
478
+ sdk = null;
479
+ _state.label = 2;
480
+ case 2:
481
+ _state.trys.push([
482
+ 2,
483
+ 4,
484
+ ,
485
+ 5
486
+ ]);
487
+ return [
488
+ 4,
489
+ Promise.resolve().then(function () { return require('./index.cjs3.js'); })
490
+ ];
491
+ case 3:
492
+ mod = _state.sent();
493
+ sdk = mod && (mod.default || mod.liff) ? mod.default || mod.liff : mod;
494
+ return [
495
+ 3,
496
+ 5
497
+ ];
498
+ case 4:
499
+ e = _state.sent();
500
+ console.warn("dynamic import @line/liff failed", e);
501
+ sdk = null;
502
+ return [
503
+ 3,
504
+ 5
505
+ ];
506
+ case 5:
507
+ if (!sdk) return [
508
+ 2,
509
+ null
510
+ ];
511
+ if (!(typeof sdk.init === "function" && !sdk._initialized && liffId)) return [
512
+ 3,
513
+ 9
514
+ ];
515
+ _state.label = 6;
516
+ case 6:
517
+ _state.trys.push([
518
+ 6,
519
+ 8,
520
+ ,
521
+ 9
522
+ ]);
523
+ return [
524
+ 4,
525
+ sdk.init({
526
+ liffId: liffId,
527
+ withLoginOnExternalBrowser: false
528
+ })
529
+ ];
530
+ case 7:
531
+ _state.sent();
532
+ sdk._initialized = true;
533
+ return [
534
+ 3,
535
+ 9
536
+ ];
537
+ case 8:
538
+ e1 = _state.sent();
539
+ console.warn("liff.init failed or already initialized", e1);
540
+ return [
541
+ 3,
542
+ 9
543
+ ];
544
+ case 9:
545
+ return [
546
+ 2,
547
+ sdk
548
+ ];
549
+ case 10:
550
+ e2 = _state.sent();
551
+ console.warn("fetchLiffSdk error", e2);
552
+ return [
553
+ 2,
554
+ null
555
+ ];
556
+ case 11:
557
+ return [
558
+ 2
559
+ ];
560
+ }
561
+ });
562
+ });
563
+ return _fetchLiffSdk.apply(this, arguments);
564
+ }
456
565
  var LiffProvider = function(param) {
457
566
  var children = param.children, liffId = param.liffId, _param_localStorageKey = param.localStorageKey, localStorageKey = _param_localStorageKey === void 0 ? "one-gobo-global-login" : _param_localStorageKey, checkTokenUrl = param.checkTokenUrl, loginUrl = param.loginUrl, accountLoginUrl = param.accountLoginUrl, memberInfoUrl = param.memberInfoUrl, _param_openInApp = param.openInApp, openInApp = _param_openInApp === void 0 ? false : _param_openInApp, _param_ignoreCheckAddFriend = param.ignoreCheckAddFriend, ignoreCheckAddFriend = _param_ignoreCheckAddFriend === void 0 ? false : _param_ignoreCheckAddFriend, _param_ignoreRoute = param.ignoreRoute, ignoreRoute = _param_ignoreRoute === void 0 ? false : _param_ignoreRoute, _param_loginByUser = param.loginByUser, loginByUser = _param_loginByUser === void 0 ? false : _param_loginByUser, _param_liffLogin = param.liffLogin, liffLogin = _param_liffLogin === void 0 ? false : _param_liffLogin, customerRedirectUrl = param.customerRedirectUrl, inviteCode = param.inviteCode, handleLoginError = param.handleLoginError;
458
567
  var _useState = _sliced_to_array(React.useState(null), 2), liffObject = _useState[0], setLiffObject = _useState[1];
@@ -1096,6 +1205,56 @@ var LiffProvider = function(param) {
1096
1205
  var trimmed = token.trim();
1097
1206
  return trimmed.toLowerCase().startsWith("bearer ") ? trimmed : "Bearer ".concat(trimmed);
1098
1207
  };
1208
+ // 提供給 context 的 lazy-load 函式(會嘗試回傳已存在的 liffObject,否則 dynamic import)
1209
+ var getLiff = React.useCallback(/*#__PURE__*/ _async_to_generator(function() {
1210
+ var mod, sdk, e;
1211
+ return _ts_generator(this, function(_state) {
1212
+ switch(_state.label){
1213
+ case 0:
1214
+ if (liffObject) return [
1215
+ 2,
1216
+ liffObject
1217
+ ];
1218
+ if (typeof window === "undefined") return [
1219
+ 2,
1220
+ null
1221
+ ];
1222
+ _state.label = 1;
1223
+ case 1:
1224
+ _state.trys.push([
1225
+ 1,
1226
+ 3,
1227
+ ,
1228
+ 4
1229
+ ]);
1230
+ return [
1231
+ 4,
1232
+ Promise.resolve().then(function () { return require('./index.cjs3.js'); })
1233
+ ];
1234
+ case 2:
1235
+ mod = _state.sent();
1236
+ sdk = mod && (mod.default || mod.liff) ? mod.default || mod.liff : mod;
1237
+ if (sdk) setLiffObject(sdk);
1238
+ return [
1239
+ 2,
1240
+ sdk || null
1241
+ ];
1242
+ case 3:
1243
+ e = _state.sent();
1244
+ console.error("lazy import @line/liff failed", e);
1245
+ return [
1246
+ 2,
1247
+ null
1248
+ ];
1249
+ case 4:
1250
+ return [
1251
+ 2
1252
+ ];
1253
+ }
1254
+ });
1255
+ }), [
1256
+ liffObject
1257
+ ]);
1099
1258
  var searchParams = typeof window !== "undefined" ? new URLSearchParams(window.location.search) : null;
1100
1259
  // 初始載入時從 localStorage 載入
1101
1260
  React.useEffect(function() {
@@ -1181,56 +1340,12 @@ var LiffProvider = function(param) {
1181
1340
  var contextValue = React.useMemo(function() {
1182
1341
  return {
1183
1342
  liffObject: liffObject,
1184
- // 為相容性保留 liffObject,另提供 liff 屬性(直接暴露 SDK 物件)
1185
- liff: liffObject,
1186
1343
  // 非同步取得 LIFF SDK 的 helper(lazy-load),使用時可以呼叫 `await getLiff()`
1187
- getLiff: /*#__PURE__*/ _async_to_generator(function() {
1188
- var mod, sdk, e;
1189
- return _ts_generator(this, function(_state) {
1190
- switch(_state.label){
1191
- case 0:
1192
- if (liffObject) return [
1193
- 2,
1194
- liffObject
1195
- ];
1196
- if (typeof window === "undefined") return [
1197
- 2,
1198
- null
1199
- ];
1200
- _state.label = 1;
1201
- case 1:
1202
- _state.trys.push([
1203
- 1,
1204
- 3,
1205
- ,
1206
- 4
1207
- ]);
1208
- return [
1209
- 4,
1210
- Promise.resolve().then(function () { return require('./index.cjs3.js'); })
1211
- ];
1212
- case 2:
1213
- mod = _state.sent();
1214
- sdk = mod === null || mod === void 0 ? void 0 : mod.liff;
1215
- if (sdk) setLiffObject(sdk);
1216
- return [
1217
- 2,
1218
- sdk || null
1219
- ];
1220
- case 3:
1221
- e = _state.sent();
1222
- console.error("lazy import @line/liff failed", e);
1223
- return [
1224
- 2,
1225
- null
1226
- ];
1227
- case 4:
1228
- return [
1229
- 2
1230
- ];
1231
- }
1232
- });
1233
- }),
1344
+ getLiff: getLiff,
1345
+ // helper:透過 fetchLiffSdk 執行更完整的 fetch + optional init
1346
+ fetchLiffSdk: function(liffId) {
1347
+ return fetchLiffSdk(liffId);
1348
+ },
1234
1349
  loginData: loginData,
1235
1350
  userInfo: userInfo,
1236
1351
  accessToken: accessToken,
@@ -1270,4 +1385,5 @@ var useLiffContext = function() {
1270
1385
 
1271
1386
  exports.LiffContext = LiffContext;
1272
1387
  exports.LiffProvider = LiffProvider;
1388
+ exports.fetchLiffSdk = fetchLiffSdk;
1273
1389
  exports.useLiffContext = useLiffContext;
@@ -449,6 +449,115 @@ function _ts_generator(thisArg, body) {
449
449
  }
450
450
  }
451
451
  var LiffContext = /*#__PURE__*/ createContext(undefined);
452
+ // 外部可直接 import 的 helper:嘗試由 getLiff helper 或 dynamic import 取得 SDK,並在必要時啟動 init
453
+ function fetchLiffSdk(liffId) {
454
+ return _fetchLiffSdk.apply(this, arguments);
455
+ }
456
+ function _fetchLiffSdk() {
457
+ _fetchLiffSdk = _async_to_generator(function(liffId) {
458
+ var sdk, mod, e, e1, e2;
459
+ return _ts_generator(this, function(_state) {
460
+ switch(_state.label){
461
+ case 0:
462
+ if (typeof window === "undefined") return [
463
+ 2,
464
+ null
465
+ ];
466
+ _state.label = 1;
467
+ case 1:
468
+ _state.trys.push([
469
+ 1,
470
+ 10,
471
+ ,
472
+ 11
473
+ ]);
474
+ sdk = null;
475
+ _state.label = 2;
476
+ case 2:
477
+ _state.trys.push([
478
+ 2,
479
+ 4,
480
+ ,
481
+ 5
482
+ ]);
483
+ return [
484
+ 4,
485
+ import('./index.esm3.js')
486
+ ];
487
+ case 3:
488
+ mod = _state.sent();
489
+ sdk = mod && (mod.default || mod.liff) ? mod.default || mod.liff : mod;
490
+ return [
491
+ 3,
492
+ 5
493
+ ];
494
+ case 4:
495
+ e = _state.sent();
496
+ console.warn("dynamic import @line/liff failed", e);
497
+ sdk = null;
498
+ return [
499
+ 3,
500
+ 5
501
+ ];
502
+ case 5:
503
+ if (!sdk) return [
504
+ 2,
505
+ null
506
+ ];
507
+ if (!(typeof sdk.init === "function" && !sdk._initialized && liffId)) return [
508
+ 3,
509
+ 9
510
+ ];
511
+ _state.label = 6;
512
+ case 6:
513
+ _state.trys.push([
514
+ 6,
515
+ 8,
516
+ ,
517
+ 9
518
+ ]);
519
+ return [
520
+ 4,
521
+ sdk.init({
522
+ liffId: liffId,
523
+ withLoginOnExternalBrowser: false
524
+ })
525
+ ];
526
+ case 7:
527
+ _state.sent();
528
+ sdk._initialized = true;
529
+ return [
530
+ 3,
531
+ 9
532
+ ];
533
+ case 8:
534
+ e1 = _state.sent();
535
+ console.warn("liff.init failed or already initialized", e1);
536
+ return [
537
+ 3,
538
+ 9
539
+ ];
540
+ case 9:
541
+ return [
542
+ 2,
543
+ sdk
544
+ ];
545
+ case 10:
546
+ e2 = _state.sent();
547
+ console.warn("fetchLiffSdk error", e2);
548
+ return [
549
+ 2,
550
+ null
551
+ ];
552
+ case 11:
553
+ return [
554
+ 2
555
+ ];
556
+ }
557
+ });
558
+ });
559
+ return _fetchLiffSdk.apply(this, arguments);
560
+ }
452
561
  var LiffProvider = function(param) {
453
562
  var children = param.children, liffId = param.liffId, _param_localStorageKey = param.localStorageKey, localStorageKey = _param_localStorageKey === void 0 ? "one-gobo-global-login" : _param_localStorageKey, checkTokenUrl = param.checkTokenUrl, loginUrl = param.loginUrl, accountLoginUrl = param.accountLoginUrl, memberInfoUrl = param.memberInfoUrl, _param_openInApp = param.openInApp, openInApp = _param_openInApp === void 0 ? false : _param_openInApp, _param_ignoreCheckAddFriend = param.ignoreCheckAddFriend, ignoreCheckAddFriend = _param_ignoreCheckAddFriend === void 0 ? false : _param_ignoreCheckAddFriend, _param_ignoreRoute = param.ignoreRoute, ignoreRoute = _param_ignoreRoute === void 0 ? false : _param_ignoreRoute, _param_loginByUser = param.loginByUser, loginByUser = _param_loginByUser === void 0 ? false : _param_loginByUser, _param_liffLogin = param.liffLogin, liffLogin = _param_liffLogin === void 0 ? false : _param_liffLogin, customerRedirectUrl = param.customerRedirectUrl, inviteCode = param.inviteCode, handleLoginError = param.handleLoginError;
454
563
  var _useState = _sliced_to_array(useState(null), 2), liffObject = _useState[0], setLiffObject = _useState[1];
@@ -1092,6 +1201,56 @@ var LiffProvider = function(param) {
1092
1201
  var trimmed = token.trim();
1093
1202
  return trimmed.toLowerCase().startsWith("bearer ") ? trimmed : "Bearer ".concat(trimmed);
1094
1203
  };
1204
+ // 提供給 context 的 lazy-load 函式(會嘗試回傳已存在的 liffObject,否則 dynamic import)
1205
+ var getLiff = useCallback(/*#__PURE__*/ _async_to_generator(function() {
1206
+ var mod, sdk, e;
1207
+ return _ts_generator(this, function(_state) {
1208
+ switch(_state.label){
1209
+ case 0:
1210
+ if (liffObject) return [
1211
+ 2,
1212
+ liffObject
1213
+ ];
1214
+ if (typeof window === "undefined") return [
1215
+ 2,
1216
+ null
1217
+ ];
1218
+ _state.label = 1;
1219
+ case 1:
1220
+ _state.trys.push([
1221
+ 1,
1222
+ 3,
1223
+ ,
1224
+ 4
1225
+ ]);
1226
+ return [
1227
+ 4,
1228
+ import('./index.esm3.js')
1229
+ ];
1230
+ case 2:
1231
+ mod = _state.sent();
1232
+ sdk = mod && (mod.default || mod.liff) ? mod.default || mod.liff : mod;
1233
+ if (sdk) setLiffObject(sdk);
1234
+ return [
1235
+ 2,
1236
+ sdk || null
1237
+ ];
1238
+ case 3:
1239
+ e = _state.sent();
1240
+ console.error("lazy import @line/liff failed", e);
1241
+ return [
1242
+ 2,
1243
+ null
1244
+ ];
1245
+ case 4:
1246
+ return [
1247
+ 2
1248
+ ];
1249
+ }
1250
+ });
1251
+ }), [
1252
+ liffObject
1253
+ ]);
1095
1254
  var searchParams = typeof window !== "undefined" ? new URLSearchParams(window.location.search) : null;
1096
1255
  // 初始載入時從 localStorage 載入
1097
1256
  useEffect(function() {
@@ -1177,56 +1336,12 @@ var LiffProvider = function(param) {
1177
1336
  var contextValue = useMemo(function() {
1178
1337
  return {
1179
1338
  liffObject: liffObject,
1180
- // 為相容性保留 liffObject,另提供 liff 屬性(直接暴露 SDK 物件)
1181
- liff: liffObject,
1182
1339
  // 非同步取得 LIFF SDK 的 helper(lazy-load),使用時可以呼叫 `await getLiff()`
1183
- getLiff: /*#__PURE__*/ _async_to_generator(function() {
1184
- var mod, sdk, e;
1185
- return _ts_generator(this, function(_state) {
1186
- switch(_state.label){
1187
- case 0:
1188
- if (liffObject) return [
1189
- 2,
1190
- liffObject
1191
- ];
1192
- if (typeof window === "undefined") return [
1193
- 2,
1194
- null
1195
- ];
1196
- _state.label = 1;
1197
- case 1:
1198
- _state.trys.push([
1199
- 1,
1200
- 3,
1201
- ,
1202
- 4
1203
- ]);
1204
- return [
1205
- 4,
1206
- import('./index.esm3.js')
1207
- ];
1208
- case 2:
1209
- mod = _state.sent();
1210
- sdk = mod === null || mod === void 0 ? void 0 : mod.liff;
1211
- if (sdk) setLiffObject(sdk);
1212
- return [
1213
- 2,
1214
- sdk || null
1215
- ];
1216
- case 3:
1217
- e = _state.sent();
1218
- console.error("lazy import @line/liff failed", e);
1219
- return [
1220
- 2,
1221
- null
1222
- ];
1223
- case 4:
1224
- return [
1225
- 2
1226
- ];
1227
- }
1228
- });
1229
- }),
1340
+ getLiff: getLiff,
1341
+ // helper:透過 fetchLiffSdk 執行更完整的 fetch + optional init
1342
+ fetchLiffSdk: function(liffId) {
1343
+ return fetchLiffSdk(liffId);
1344
+ },
1230
1345
  loginData: loginData,
1231
1346
  userInfo: userInfo,
1232
1347
  accessToken: accessToken,
@@ -1264,4 +1379,4 @@ var useLiffContext = function() {
1264
1379
  return context;
1265
1380
  };
1266
1381
 
1267
- export { LiffContext, LiffProvider, useLiffContext };
1382
+ export { LiffContext, LiffProvider, fetchLiffSdk, useLiffContext };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sunggang/ui-lib",
3
- "version": "0.4.58",
3
+ "version": "0.4.59",
4
4
  "sideEffects": [
5
5
  "*.css",
6
6
  "./src/style.css",
@@ -1,6 +1,7 @@
1
1
  import React from 'react';
2
2
  type LiffContextType = {
3
- getLiff: any;
3
+ getLiff: () => Promise<any>;
4
+ fetchLiffSdk?: (liffId: string) => Promise<any>;
4
5
  liffObject: any;
5
6
  loginData: any;
6
7
  userInfo?: any;
@@ -14,6 +15,7 @@ type LiffContextType = {
14
15
  accountLogin: (username: string, password: string) => Promise<void>;
15
16
  };
16
17
  export declare const LiffContext: React.Context<LiffContextType | undefined>;
18
+ export declare function fetchLiffSdk(liffId?: string): Promise<any>;
17
19
  export declare const LiffProvider: ({ children, liffId, localStorageKey, checkTokenUrl, loginUrl, accountLoginUrl, memberInfoUrl, openInApp, ignoreCheckAddFriend, ignoreRoute, loginByUser, liffLogin, customerRedirectUrl, inviteCode, handleLoginError, }: {
18
20
  children: React.ReactNode;
19
21
  liffId: string;