@conecli/cone-render 0.10.1-shop3.46 → 0.10.1-shop3.48

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.
Files changed (36) hide show
  1. package/dist/common/index.h5.ts +1 -1
  2. package/dist/common/index.jd.ts +1 -1
  3. package/dist/common/index.ts +1 -1
  4. package/dist/common/index.weapp.ts +1 -1
  5. package/dist/common/jdplayerSdk.weapp.tsx +1 -0
  6. package/dist/common/jssdk.weapp.ts +1 -0
  7. package/dist/components/ErrorBoundary.tsx +1 -1
  8. package/dist/components/base/CustomVideo/index.weapp.tsx +1 -0
  9. package/dist/components/base/InOrOutViewObserver/index.weapp.tsx +1 -0
  10. package/dist/components/base/LazyLayoutLoad/index.tsx +1 -1
  11. package/dist/components/base/MobileCommonHeader/index.weapp.tsx +1 -0
  12. package/dist/interface/component.ts +1 -1
  13. package/dist/jumpEventReport/logEventConfig.h5.ts +1 -0
  14. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  15. package/dist/language/en_US.json +136 -83
  16. package/dist/language/zh_CN.json +135 -82
  17. package/dist/language/zh_HK.json +135 -82
  18. package/dist/libs/taroAppReport.js +2 -2
  19. package/dist/modules/DecorateContainerFloorList/index.weapp.tsx +1 -0
  20. package/dist/open/api/shopMember.weapp.ts +1 -0
  21. package/dist/open/index.ts +1 -1
  22. package/dist/service/fetchGateway.weapp.ts +1 -1
  23. package/dist/service/fetchJsonp.weapp.ts +1 -0
  24. package/dist/service/http/httpInterceptors.weapp.ts +1 -0
  25. package/dist/service/requestServer.h5.ts +1 -1
  26. package/dist/service/requestServer.ts +1 -1
  27. package/dist/service/requestServer.weapp.ts +1 -1
  28. package/dist/utils/connectNativeJsBridge.ts +1 -1
  29. package/dist/utils/h5Utils.ts +1 -1
  30. package/dist/utils/harmonyCallRouter.h5.ts +1 -0
  31. package/dist/utils/harmonyCallRouter.ts +0 -0
  32. package/dist/utils/sColor.weapp.ts +1 -0
  33. package/package.json +3 -2
  34. package/dist/jumpEventReport/web/wqshop.report.ts +0 -1
  35. package/dist/utils/priceUtils.js +0 -1
  36. /package/dist/utils/{sColor.js → sColor.ts} +0 -0
@@ -1 +1 @@
1
- import {
2
1
  isApp,
3
2
  isIOS,
4
3
  getAppVersion,
5
4
  version,
6
5
  getUUID,
7
6
  getUrlQuery,
8
7
  assign,
9
8
  isString,
10
9
  isObject,
11
10
  serialize,
12
11
  isAndroid,
13
12
  versionCompare,
14
13
  isIPad,
15
14
  isTablet,
16
15
  CHANNEL_TYPE,
17
16
  JDShopViewBusinessPathType,
18
17
  SECTION_HOME_TAB_NAME_TYPE,
19
18
  SECTION_HOME_TAB_TYPE,
20
19
  DraBuryPointFlags,
21
20
  MPAAS_CONFIG_APP_VERSION,
22
21
  new Promise((resolve, reject) => {
23
22
  if (window?.__sgm__) {
24
23
  resolve(true);
25
24
  } else {
26
25
  if (isSgmReadyError) {
27
26
  console.log('当前sgm初始化失败');
28
27
  reject(false);
29
28
  } else {
30
29
  ready('__sgm__', 2000)
31
30
  .then(() => {
32
31
  isSgmReadyError = false;
33
32
  console.log('当前sgm初始化成功');
34
33
  resolve(true);
35
34
  })
36
35
  .catch(() => {
37
36
  isSgmReadyError = true;
38
37
  console.log('当前sgm初始化失败');
39
38
  reject(false);
40
39
  });
41
40
  }
42
41
  }
43
42
  });
44
43
  console.log(message);
45
44
  reject(new Error(message));
46
45
  return ready('dra', 2000)
47
46
  .then(() => {
48
47
  isNewDraSdkReadyError = false;
49
48
  console.log('当前新版烛龙sdk初始化成功');
50
49
  return true;
51
50
  })
52
51
  .catch(() => {
53
52
  isNewDraSdkReadyError = true;
54
53
  throw new Error('当前新版烛龙sdk初始化失败');
55
54
  });
56
55
  return new Promise((resolve, reject) => {
57
56
  if (window?.dra) {
58
57
  resolve(true);
59
58
  } else if (isNewDraSdkReadyError) {
60
59
  logAndReject('当前新版烛龙sdk初始化失败', reject);
61
60
  } else {
62
61
  initializeDraSdk()
63
62
  .then(resolve)
64
63
  .catch((error) => logAndReject(error.message, reject));
65
64
  }
66
65
  });
67
66
  rootEleInitWidth = 0,
68
67
  screenWidth = 0,
69
68
  screenHeight = 0,
70
69
  if (rootEleInitWidth > 0 && screenWidth > 0 && screenHeight > 0) {
71
70
  const isRootEleWidthEqScreenWidth = Math.abs(rootEleInitWidth - screenWidth) < 60;
72
71
  const getThisWinWidth = rootEleInitWidth;
73
72
  const getThisWinHeight = isRootEleWidthEqScreenWidth ? screenHeight : screenWidth;
74
73
  console.info(
75
74
  '通过rootEleInitWidth对比屏幕宽高确认横竖屏幕方式',
76
75
  'rootEleInitWidth',
77
76
  rootEleInitWidth,
78
77
  'screenWidth',
79
78
  screenWidth,
80
79
  'screenHeight',
81
80
  screenHeight,
82
81
  'isRootEleWidthEqScreenWidth(根元素宽度是否与屏幕本身宽度接近,主要是ios屏幕宽高不变)',
83
82
  isRootEleWidthEqScreenWidth,
84
83
  'getThisWinWidth',
85
84
  getThisWinWidth,
86
85
  'getThisWinHeight',
87
86
  getThisWinHeight,
88
87
  '是否是横屏',
89
88
  getThisWinWidth > getThisWinHeight,
90
89
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏,带有landscape为横屏',
91
90
  window.screen?.orientation?.type,
92
91
  );
93
92
  return getThisWinWidth > getThisWinHeight;
94
93
  } else {
95
94
  if (window.screen?.orientation?.type) {
96
95
  console.info(
97
96
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏',
98
97
  window.screen?.orientation?.type,
99
98
  '测试低版本通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
100
99
  window?.orientation,
101
100
  );
102
101
  return /landscape/i.test(window.screen.orientation.type);
103
102
  } else if (window?.orientation) {
104
103
  console.info(
105
104
  '通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
106
105
  window?.orientation,
107
106
  );
108
107
  return [90, -90].includes(window?.orientation);
109
108
  } else {
110
109
  console.info(
111
110
  '通过window.matchMedia((orientation: landscape))?.matches方式获取当前pad屏幕是否是横屏',
112
111
  window.matchMedia('(orientation: landscape)')?.matches,
113
112
  );
114
113
  return window.matchMedia('(orientation: landscape)')?.matches;
115
114
  }
116
115
  }
117
116
  try {
118
117
  return JSON.parse(decodeURIComponent(getUrlQuery('cookie')));
119
118
  } catch (e) {
120
119
  return {};
121
120
  }
122
121
  isWxMiniH5View && (/wx91d27dbf599dff74/i.test(userAgent) || urlCookie['wxapp_type'] == '1');
123
122
  'harmony' === (userAgent.split(';')[1] || '').toLowerCase() || /arkweb/i.test(userAgent);
124
123
  window?.location?.hostname === 'pages.jd.com' && isJdAndHarmonyDevice;
125
124
  window.shopGlobalSwitch?.isH5AndJdShopViewH5ScrollVersion || '';
126
125
  !!document.getElementById('mallType') &&
127
126
  !!document.getElementById('pageInstance_id') &&
128
127
  !!document.getElementById('pageInstance_appId');
129
128
  isTjScence &&
130
129
  isWxMiniH5View &&
131
130
  (urlCookie['wxapp_type'] == '2' ||
132
131
  cookie.get('wxapp_type') == '2' ||
133
132
  parseQueryUrlObj['tjChannel'] === 'jxxcx');
134
133
  isTjScence && isWxMiniH5View && parseQueryUrlObj['sourceApp'] === 'haowujie';
135
134
  isTjScence &&
136
135
  (parseQueryUrlObj['appCode'] === 'ms27cba806' ||
137
136
  document.referrer?.match(/(?:https?:)?\/\/(?:kpl\.m|css|cs)\.jd\.com/i)?.length ||
138
137
  (parseQueryUrlObj['sourceApp'] == 'jsb-m' && parseQueryUrlObj['appCode'] === '') ||
139
138
  parseQueryUrlObj['tjChannel'] === 'tjm');
140
139
  if (isH5AdnJxMini) {
141
140
  return 'jxxcx';
142
141
  } else if (isTJApp) {
143
142
  return 'tjapp';
144
143
  } else if (isTjM) {
145
144
  return 'tjm';
146
145
  } else if (isTjJxM) {
147
146
  return 'jxh5';
148
147
  }
149
148
  return '';
150
149
  START: 'start',
151
150
  MOVE: 'move',
152
151
  END: 'end',
153
152
  x: 0,
154
153
  y: 0,
155
154
  const startX = startPos.x;
156
155
  const startY = startPos.y;
157
156
  const endX = touchEvent.clientX;
158
157
  const endY = touchEvent.clientY;
159
158
  const dy = startY - endY;
160
159
  const dx = endX - startX;
161
160
  let result = 0;
162
161
  if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {
163
162
  return result;
164
163
  }
165
164
  const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
166
165
  if (angle >= -45 && angle < 45) {
167
166
  result = 4;
168
167
  } else if (angle >= 45 && angle < 135) {
169
168
  result = 1;
170
169
  } else if (angle >= -135 && angle < -45) {
171
170
  result = 2;
172
171
  } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
173
172
  result = 3;
174
173
  }
175
174
  return result;
176
175
  e: Event,
177
176
  touchType = TouchType.START,
178
177
  stopTouchDocumentScrollState = false,
179
178
  if (isJdApp && e) {
180
179
  const touchEvent = e?.originalEvent?.targetTouches[0] || e?.targetTouches[0];
181
180
  let _touchState = touchType;
182
181
  let _getDirectionState = false;
183
182
  if (touchType === TouchType.START) {
184
183
  StopNativeScrollEventPos.x = touchEvent.clientX;
185
184
  StopNativeScrollEventPos.y = touchEvent.clientY;
186
185
  } else if (touchType === TouchType.MOVE) {
187
186
  _getDirectionState = [1, 2].includes(
188
187
  touchMoveGetSlideDirection(StopNativeScrollEventPos, touchEvent),
189
188
  );
190
189
  if (_getDirectionState) {
191
190
  _touchState = TouchType.END;
192
191
  }
193
192
  console.log(
194
193
  '对外提供阻止横滑方法,当前touchType为move,设定1、2向上或向下方向,当前计算后的滑动是否为纵向',
195
194
  _getDirectionState,
196
195
  );
197
196
  } else if (touchType === TouchType.END) {
198
197
  StopNativeScrollEventPos.x = 0;
199
198
  StopNativeScrollEventPos.y = 0;
200
199
  }
201
200
  isIosDevice
202
201
  ? iosDeviceStopNativeScrollEvent(e, _touchState, stopTouchDocumentScrollState)
203
202
  : androidDeviceStopNativeScrollEvent(_touchState, stopTouchDocumentScrollState);
204
203
  if (
205
204
  !isAppHomeForMarketPage &&
206
205
  stopTouchDocumentScrollState &&
207
206
  _touchState === TouchType.START
208
207
  ) {
209
208
  rootEleNode && rootEleNode.classList.add('over-hidden');
210
209
  }
211
210
  if (_touchState === TouchType.MOVE && _getDirectionState) {
212
211
  rootEleNode &&
213
212
  rootEleNode.classList.contains('over-hidden') &&
214
213
  rootEleNode.classList.remove('over-hidden');
215
214
  } else if (_touchState === TouchType.END) {
216
215
  setTimeout(
217
216
  () => {
218
217
  rootEleNode &&
219
218
  rootEleNode.classList.contains('over-hidden') &&
220
219
  rootEleNode.classList.remove('over-hidden');
221
220
  },
222
221
  isAppHomeForMarketPage || _getDirectionState ? 0 : 200,
223
222
  );
224
223
  }
225
224
  }
226
225
  touchType = TouchType.START,
227
226
  stopTouchDocumentScrollState = false,
228
227
  isJdApp &&
229
228
  touchType !== TouchType.MOVE &&
230
229
  isAndroidDevice &&
231
230
  window?.JdAndroid &&
232
231
  window?.JdAndroid?.requestEvent &&
233
232
  window.JdAndroid.requestEvent(touchType === TouchType.START);
234
233
  console.log(
235
234
  '对外提供阻止安卓横滑方法,true-禁止外部事件H5可滑动,false-外部拦截h5事件,当前touchType为',
236
235
  touchType,
237
236
  '当前非move触发requestEvent状态为',
238
237
  touchType === TouchType.START,
239
238
  '当前stopTouchDocumentScrollState为',
240
239
  stopTouchDocumentScrollState,
241
240
  );
242
241
  e,
243
242
  touchType = TouchType.START,
244
243
  stopTouchDocumentScrollState = false,
245
244
  e && e.stopPropagation();
246
245
  console.log(
247
246
  '对外提供阻止ios横滑方法,当前touchType为',
248
247
  touchType,
249
248
  '当前stopTouchDocumentScrollState为',
250
249
  stopTouchDocumentScrollState,
251
250
  );
252
251
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage?.({
253
252
  method: 'callRouterModuleWithParams',
254
253
  params: {
255
254
  routerURL: 'router://JDShopModule/processShoph5SlideState',
256
255
  routerParam: {
257
256
  slideDirection: 'horizontal',
258
257
  state: touchType,
259
258
  },
260
259
  callBackId: new Date().getTime(),
261
260
  },
262
261
  });
263
262
  if (isH5AndJdShopView) {
264
263
  return CHANNEL_TYPE[currentChannel] || CHANNEL_TYPE[JDShopViewBusinessPathType.HOME];
265
264
  }
266
265
  return null;
267
266
  isH5 &&
268
267
  isJdApp &&
269
268
  [
270
269
  '/app/home',
271
270
  '/app/homeV2',
272
271
  '/app/classify',
273
272
  '/app/classifyV2',
274
273
  '/member/shopcard',
275
274
  '/favorite/home',
276
275
  ].includes(urlPathname);
277
276
  isH5 && isJdApp && !['/app/home', '/app/homeV2'].includes(urlPathname);
278
277
  ['/app/home', '/app/homeV2'].includes(urlPathname) &&
279
278
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_PROMOTION &&
280
279
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_MEMBER;
281
280
  isAppHomePage && parseQueryUrlObj['source'] === 'app-marketing';
282
281
  isH5 &&
283
282
  isAppHomePage &&
284
283
  versionCompare(jdAppVersion?.full ? jdAppVersion.full : '', isH5AndJdShopViewH5ScrollVersion) >=
285
284
  0;
286
285
  return isJdApp ? versionCompare(nowVersion, compareVersion) : -2;
287
286
  getSgmReadyPromise()
288
287
  .then(() => {
289
288
  if (
290
289
  customObj.hasOwnProperty('code') &&
291
290
  customObj.code.indexOf(NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG) !== -1
292
291
  ) {
293
292
  const originCode = customObj.code.substring(
294
293
  NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG.length,
295
294
  customObj.code.length,
296
295
  );
297
296
  customObj['code'] = getSgmCustomCode(handleSgmCodeTaroVersion(originCode));
298
297
  }
299
298
  const getCustomObj = {
300
299
  type: 1,
301
300
  code: 'all',
302
301
  cost1: 1,
303
302
  ...customObj,
304
303
  };
305
304
  try {
306
305
  window.__sgm__.custom(getCustomObj, '9HwAEg@fTtWBB3EnwA5VgLT');
307
306
  } catch (e) {
308
307
  console.log('当前sgm上报异常, 原始数据为', JSON.stringify(customObj));
309
308
  }
310
309
  })
311
310
  .catch(() => {
312
311
  console.error('当前页面sgm加载异常,无法进行异常上报, 原始数据为', JSON.stringify(customObj));
313
312
  });
314
313
  try {
315
314
  await getNewDraSdkReadyPromise();
316
315
  const draBurypointFlag = name ?? DraBuryPointFlags.BUSINESS;
317
316
  const commonObj = {
318
317
  shopId: `${global.info.queryInfo.shopId || ''}`,
319
318
  venderId: `${global.info.queryInfo.venderId || ''}`,
320
319
  taroRenderVersion: window?.taroRenderVersion,
321
320
  environmentType: getEnvironmentType(),
322
321
  pageType: getPageType(),
323
322
  };
324
323
  try {
325
324
  window.dra.sendCustomEvent(
326
325
  {
327
326
  name: draBurypointFlag,
328
327
  metrics: {
329
328
  timeStamp: Date.now(),
330
329
  ...customMetricsObj,
331
330
  },
332
331
  context: {
333
332
  ...commonObj,
334
333
  ...customContextObj,
335
334
  },
336
335
  },
337
336
  true,
338
337
  );
339
338
  } catch (e) {
340
339
  console.error(
341
340
  '当前新版烛龙sdk上报异常, 原始数据为',
342
341
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
343
342
  'e',
344
343
  e,
345
344
  );
346
345
  }
347
346
  } catch (e) {
348
347
  console.error(
349
348
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
350
349
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
351
350
  'e',
352
351
  e,
353
352
  );
354
353
  }
355
354
  try {
356
355
  await getNewDraSdkReadyPromise();
357
356
  const commonObj = {
358
357
  shopId: `${global.info.queryInfo.shopId || ''}`,
359
358
  venderId: `${global.info.queryInfo.venderId || ''}`,
360
359
  taroRenderVersion: window?.taroRenderVersion,
361
360
  environmentType: getEnvironmentType(),
362
361
  pageType: getPageType(),
363
362
  url: encodeURIComponent(window?.location?.href),
364
363
  };
365
364
  try {
366
365
  window.dra.sendCustomLogEvent({
367
366
  level,
368
367
  content: logContent || '日志上报',
369
368
  extra: JSON.stringify(commonObj),
370
369
  timeStamp: Date.now(),
371
370
  });
372
371
  } catch (e) {
373
372
  console.error('日志等级', level, '当前新版烛龙sdk上报异常, 原始数据为', logContent, 'e', e);
374
373
  }
375
374
  } catch (e2) {
376
375
  console.error('日志等级', level, '当前新版烛龙sdk上报异常, 原始数据为', logContent, 'e', e2);
377
376
  }
378
377
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.REMOTE);
379
378
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.INTERFACE);
380
379
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.BUSINESS);
381
380
  const deviceRatio = window?.devicePixelRatio ?? 2;
382
381
  if (isJdAndAndroidDevice && typeof displayObj === 'object') {
383
382
  Object.keys(displayObj).forEach((key) => {
384
383
  if (key === 'nativeHeaderHeight') {
385
384
  displayObj[key] = Math.ceil(displayObj[key] / (deviceRatio * deviceRatio) - 2);
386
385
  } else {
387
386
  displayObj[key] = Math.ceil(displayObj[key] / deviceRatio);
388
387
  }
389
388
  });
390
389
  } else if (isJdAndHarmonyDevice && isNewHarmonyShop && typeof displayObj === 'object') {
391
390
  if (displayObj['bottomBarHeight'] && typeof displayObj['bottomBarHeight'] === 'number') {
392
391
  displayObj['bottomBarHeight'] = Math.ceil(displayObj['bottomBarHeight'] / deviceRatio);
393
392
  }
394
393
  }
395
394
  return displayObj;
396
395
  isJdAndAndroidDevice && /TBS\/\d+/.test(window?.navigator?.userAgent);
397
396
  rootEleNode &&
398
397
  !rootEleNode.classList.contains('d-shop-lang-for-en') &&
399
398
  rootEleNode.classList.add('d-shop-lang-for-en');
400
399
  rootEleNode &&
401
400
  !rootEleNode.classList.contains('d-shop-lang-for-hk') &&
402
401
  rootEleNode.classList.add('d-shop-lang-for-hk');
403
402
  customContextObj = {},
404
403
  customMetricsObj = {},
405
404
  name?,
406
405
  try {
407
406
  const draBurypointFlag = name ?? DraBuryPointFlags.DECOSDM;
408
407
  try {
409
408
  let dra = null;
410
409
  const iframe = window?.top?.document?.getElementsByTagName('iframe')[0];
411
410
  if (iframe && iframe.contentWindow) {
412
411
  dra = iframe.contentWindow?.dra;
413
412
  }
414
413
  if (window.dra) {
415
414
  dra = window.dra;
416
415
  }
417
416
  dra &&
418
417
  dra.sendCustomEvent(
419
418
  {
420
419
  name: draBurypointFlag,
421
420
  metrics: {
422
421
  timeStamp: Date.now(),
423
422
  },
424
423
  context: {
425
424
  ...customContextObj,
426
425
  },
427
426
  },
428
427
  true,
429
428
  );
430
429
  } catch (e) {
431
430
  console.error(
432
431
  '当前新版烛龙sdk上报异常, 原始数据为',
433
432
  JSON.stringify({ ...customContextObj }),
434
433
  'e',
435
434
  e,
436
435
  );
437
436
  }
438
437
  } catch (e) {
439
438
  console.error(
440
439
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
441
440
  JSON.stringify({ ...customContextObj }),
442
441
  'e',
443
442
  e,
444
443
  );
445
444
  }
445
+ import {
446
446
  isApp,
447
447
  isIOS,
448
448
  getAppVersion,
449
449
  version,
450
450
  getUUID,
451
451
  getUrlQuery,
452
452
  assign,
453
453
  isString,
454
454
  isObject,
455
455
  serialize,
456
456
  isAndroid,
457
457
  versionCompare,
458
458
  isIPad,
459
459
  isTablet,
460
460
  CHANNEL_TYPE,
461
461
  JDShopViewBusinessPathType,
462
462
  SECTION_HOME_TAB_NAME_TYPE,
463
463
  SECTION_HOME_TAB_TYPE,
464
464
  DraBuryPointFlags,
465
465
  MPAAS_CONFIG_APP_VERSION,
466
466
  new Promise((resolve, reject) => {
467
467
  if (window?.__sgm__) {
468
468
  resolve(true);
469
469
  } else {
470
470
  if (isSgmReadyError) {
471
471
  console.log('当前sgm初始化失败');
472
472
  reject(false);
473
473
  } else {
474
474
  ready('__sgm__', 2000)
475
475
  .then(() => {
476
476
  isSgmReadyError = false;
477
477
  console.log('当前sgm初始化成功');
478
478
  resolve(true);
479
479
  })
480
480
  .catch(() => {
481
481
  isSgmReadyError = true;
482
482
  console.log('当前sgm初始化失败');
483
483
  reject(false);
484
484
  });
485
485
  }
486
486
  }
487
487
  });
488
488
  console.log(message);
489
489
  reject(new Error(message));
490
490
  return ready('dra', 2000)
491
491
  .then(() => {
492
492
  isNewDraSdkReadyError = false;
493
493
  console.log('当前新版烛龙sdk初始化成功');
494
494
  return true;
495
495
  })
496
496
  .catch(() => {
497
497
  isNewDraSdkReadyError = true;
498
498
  throw new Error('当前新版烛龙sdk初始化失败');
499
499
  });
500
500
  return new Promise((resolve, reject) => {
501
501
  if (window?.dra) {
502
502
  resolve(true);
503
503
  } else if (isNewDraSdkReadyError) {
504
504
  logAndReject('当前新版烛龙sdk初始化失败', reject);
505
505
  } else {
506
506
  initializeDraSdk()
507
507
  .then(resolve)
508
508
  .catch((error) => logAndReject(error.message, reject));
509
509
  }
510
510
  });
511
511
  rootEleInitWidth = 0,
512
512
  screenWidth = 0,
513
513
  screenHeight = 0,
514
514
  if (rootEleInitWidth > 0 && screenWidth > 0 && screenHeight > 0) {
515
515
  const isRootEleWidthEqScreenWidth = Math.abs(rootEleInitWidth - screenWidth) < 60;
516
516
  const getThisWinWidth = rootEleInitWidth;
517
517
  const getThisWinHeight = isRootEleWidthEqScreenWidth ? screenHeight : screenWidth;
518
518
  console.info(
519
519
  '通过rootEleInitWidth对比屏幕宽高确认横竖屏幕方式',
520
520
  'rootEleInitWidth',
521
521
  rootEleInitWidth,
522
522
  'screenWidth',
523
523
  screenWidth,
524
524
  'screenHeight',
525
525
  screenHeight,
526
526
  'isRootEleWidthEqScreenWidth(根元素宽度是否与屏幕本身宽度接近,主要是ios屏幕宽高不变)',
527
527
  isRootEleWidthEqScreenWidth,
528
528
  'getThisWinWidth',
529
529
  getThisWinWidth,
530
530
  'getThisWinHeight',
531
531
  getThisWinHeight,
532
532
  '是否是横屏',
533
533
  getThisWinWidth > getThisWinHeight,
534
534
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏,带有landscape为横屏',
535
535
  window.screen?.orientation?.type,
536
536
  );
537
537
  return getThisWinWidth > getThisWinHeight;
538
538
  } else {
539
539
  if (window.screen?.orientation?.type) {
540
540
  console.info(
541
541
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏',
542
542
  window.screen?.orientation?.type,
543
543
  '测试低版本通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
544
544
  window?.orientation,
545
545
  );
546
546
  return /landscape/i.test(window.screen.orientation.type);
547
547
  } else if (window?.orientation) {
548
548
  console.info(
549
549
  '通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
550
550
  window?.orientation,
551
551
  );
552
552
  return [90, -90].includes(window?.orientation);
553
553
  } else {
554
554
  console.info(
555
555
  '通过window.matchMedia((orientation: landscape))?.matches方式获取当前pad屏幕是否是横屏',
556
556
  window.matchMedia('(orientation: landscape)')?.matches,
557
557
  );
558
558
  return window.matchMedia('(orientation: landscape)')?.matches;
559
559
  }
560
560
  }
561
561
  try {
562
562
  return JSON.parse(decodeURIComponent(getUrlQuery('cookie')));
563
563
  } catch (e) {
564
564
  return {};
565
565
  }
566
566
  isWxMiniH5View && (/wx91d27dbf599dff74/i.test(userAgent) || urlCookie['wxapp_type'] == '1');
567
567
  'harmony' === (userAgent.split(';')[1] || '').toLowerCase() || /arkweb/i.test(userAgent);
568
568
  window?.location?.hostname === 'pages.jd.com' && isJdAndHarmonyDevice;
569
569
  window.shopGlobalSwitch?.isH5AndJdShopViewH5ScrollVersion || '';
570
570
  !!document.getElementById('mallType') &&
571
571
  !!document.getElementById('pageInstance_id') &&
572
572
  !!document.getElementById('pageInstance_appId');
573
573
  isTjScence &&
574
574
  isWxMiniH5View &&
575
575
  (urlCookie['wxapp_type'] == '2' ||
576
576
  cookie.get('wxapp_type') == '2' ||
577
577
  parseQueryUrlObj['tjChannel'] === 'jxxcx');
578
578
  isTjScence && isWxMiniH5View && parseQueryUrlObj['sourceApp'] === 'haowujie';
579
579
  isTjScence &&
580
580
  (parseQueryUrlObj['appCode'] === 'ms27cba806' ||
581
581
  document.referrer?.match(/(?:https?:)?\/\/(?:kpl\.m|css|cs)\.jd\.com/i)?.length ||
582
582
  (parseQueryUrlObj['sourceApp'] == 'jsb-m' && parseQueryUrlObj['appCode'] === '') ||
583
583
  parseQueryUrlObj['tjChannel'] === 'tjm');
584
584
  if (isH5AdnJxMini) {
585
585
  return 'jxxcx';
586
586
  } else if (isTJApp) {
587
587
  return 'tjapp';
588
588
  } else if (isTjM) {
589
589
  return 'tjm';
590
590
  } else if (isTjJxM) {
591
591
  return 'jxh5';
592
592
  }
593
593
  return '';
594
594
  START: 'start',
595
595
  MOVE: 'move',
596
596
  END: 'end',
597
597
  x: 0,
598
598
  y: 0,
599
599
  const startX = startPos.x;
600
600
  const startY = startPos.y;
601
601
  const endX = touchEvent.clientX;
602
602
  const endY = touchEvent.clientY;
603
603
  const dy = startY - endY;
604
604
  const dx = endX - startX;
605
605
  let result = 0;
606
606
  if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {
607
607
  return result;
608
608
  }
609
609
  const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
610
610
  if (angle >= -45 && angle < 45) {
611
611
  result = 4;
612
612
  } else if (angle >= 45 && angle < 135) {
613
613
  result = 1;
614
614
  } else if (angle >= -135 && angle < -45) {
615
615
  result = 2;
616
616
  } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
617
617
  result = 3;
618
618
  }
619
619
  return result;
620
620
  e: Event,
621
621
  touchType = TouchType.START,
622
622
  stopTouchDocumentScrollState = false,
623
623
  if (isJdApp && e) {
624
624
  const touchEvent = e?.originalEvent?.targetTouches[0] || e?.targetTouches[0];
625
625
  let _touchState = touchType;
626
626
  let _getDirectionState = false;
627
627
  if (touchType === TouchType.START) {
628
628
  StopNativeScrollEventPos.x = touchEvent.clientX;
629
629
  StopNativeScrollEventPos.y = touchEvent.clientY;
630
630
  } else if (touchType === TouchType.MOVE) {
631
631
  _getDirectionState = [1, 2].includes(
632
632
  touchMoveGetSlideDirection(StopNativeScrollEventPos, touchEvent),
633
633
  );
634
634
  if (_getDirectionState) {
635
635
  _touchState = TouchType.END;
636
636
  }
637
637
  console.log(
638
638
  '对外提供阻止横滑方法,当前touchType为move,设定1、2向上或向下方向,当前计算后的滑动是否为纵向',
639
639
  _getDirectionState,
640
640
  );
641
641
  } else if (touchType === TouchType.END) {
642
642
  StopNativeScrollEventPos.x = 0;
643
643
  StopNativeScrollEventPos.y = 0;
644
644
  }
645
645
  isIosDevice
646
646
  ? iosDeviceStopNativeScrollEvent(e, _touchState, stopTouchDocumentScrollState)
647
647
  : androidDeviceStopNativeScrollEvent(_touchState, stopTouchDocumentScrollState);
648
648
  if (
649
649
  !isAppHomeForMarketPage &&
650
650
  stopTouchDocumentScrollState &&
651
651
  _touchState === TouchType.START
652
652
  ) {
653
653
  rootEleNode && rootEleNode.classList.add('over-hidden');
654
654
  }
655
655
  if (_touchState === TouchType.MOVE && _getDirectionState) {
656
656
  rootEleNode &&
657
657
  rootEleNode.classList.contains('over-hidden') &&
658
658
  rootEleNode.classList.remove('over-hidden');
659
659
  } else if (_touchState === TouchType.END) {
660
660
  setTimeout(
661
661
  () => {
662
662
  rootEleNode &&
663
663
  rootEleNode.classList.contains('over-hidden') &&
664
664
  rootEleNode.classList.remove('over-hidden');
665
665
  },
666
666
  isAppHomeForMarketPage || _getDirectionState ? 0 : 200,
667
667
  );
668
668
  }
669
669
  }
670
670
  touchType = TouchType.START,
671
671
  stopTouchDocumentScrollState = false,
672
672
  isJdApp &&
673
673
  touchType !== TouchType.MOVE &&
674
674
  isAndroidDevice &&
675
675
  window?.JdAndroid &&
676
676
  window?.JdAndroid?.requestEvent &&
677
677
  window.JdAndroid.requestEvent(touchType === TouchType.START);
678
678
  console.log(
679
679
  '对外提供阻止安卓横滑方法,true-禁止外部事件H5可滑动,false-外部拦截h5事件,当前touchType为',
680
680
  touchType,
681
681
  '当前非move触发requestEvent状态为',
682
682
  touchType === TouchType.START,
683
683
  '当前stopTouchDocumentScrollState为',
684
684
  stopTouchDocumentScrollState,
685
685
  );
686
686
  e,
687
687
  touchType = TouchType.START,
688
688
  stopTouchDocumentScrollState = false,
689
689
  e && e.stopPropagation();
690
690
  console.log(
691
691
  '对外提供阻止ios横滑方法,当前touchType为',
692
692
  touchType,
693
693
  '当前stopTouchDocumentScrollState为',
694
694
  stopTouchDocumentScrollState,
695
695
  );
696
696
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage?.({
697
697
  method: 'callRouterModuleWithParams',
698
698
  params: {
699
699
  routerURL: 'router://JDShopModule/processShoph5SlideState',
700
700
  routerParam: {
701
701
  slideDirection: 'horizontal',
702
702
  state: touchType,
703
703
  },
704
704
  callBackId: new Date().getTime(),
705
705
  },
706
706
  });
707
707
  if (isH5AndJdShopView) {
708
708
  return CHANNEL_TYPE[currentChannel] || CHANNEL_TYPE[JDShopViewBusinessPathType.HOME];
709
709
  }
710
710
  return null;
711
711
  isH5 &&
712
712
  isJdApp &&
713
713
  [
714
714
  '/app/home',
715
715
  '/app/homeV2',
716
716
  '/app/classify',
717
717
  '/app/classifyV2',
718
718
  '/member/shopcard',
719
719
  '/favorite/home',
720
720
  ].includes(urlPathname);
721
721
  isH5 && isJdApp && !['/app/home', '/app/homeV2'].includes(urlPathname);
722
722
  ['/app/home', '/app/homeV2'].includes(urlPathname) &&
723
723
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_PROMOTION &&
724
724
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_MEMBER;
725
725
  isAppHomePage && parseQueryUrlObj['source'] === 'app-marketing';
726
726
  isH5 &&
727
727
  isAppHomePage &&
728
728
  versionCompare(jdAppVersion?.full ? jdAppVersion.full : '', isH5AndJdShopViewH5ScrollVersion) >=
729
729
  0;
730
730
  return isJdApp ? versionCompare(nowVersion, compareVersion) : -2;
731
731
  getSgmReadyPromise()
732
732
  .then(() => {
733
733
  if (
734
734
  customObj.hasOwnProperty('code') &&
735
735
  customObj.code.indexOf(NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG) !== -1
736
736
  ) {
737
737
  const originCode = customObj.code.substring(
738
738
  NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG.length,
739
739
  customObj.code.length,
740
740
  );
741
741
  customObj['code'] = getSgmCustomCode(handleSgmCodeTaroVersion(originCode));
742
742
  }
743
743
  const getCustomObj = {
744
744
  type: 1,
745
745
  code: 'all',
746
746
  cost1: 1,
747
747
  ...customObj,
748
748
  };
749
749
  try {
750
750
  window.__sgm__.custom(getCustomObj, '9HwAEg@fTtWBB3EnwA5VgLT');
751
751
  } catch (e) {
752
752
  console.log('当前sgm上报异常, 原始数据为', JSON.stringify(customObj));
753
753
  }
754
754
  })
755
755
  .catch(() => {
756
756
  console.error('当前页面sgm加载异常,无法进行异常上报, 原始数据为', JSON.stringify(customObj));
757
757
  });
758
758
  try {
759
759
  await getNewDraSdkReadyPromise();
760
760
  const draBurypointFlag = name ?? DraBuryPointFlags.BUSINESS;
761
761
  const commonObj = {
762
762
  shopId: `${global.info.queryInfo.shopId || ''}`,
763
763
  venderId: `${global.info.queryInfo.venderId || ''}`,
764
764
  taroRenderVersion: window?.taroRenderVersion,
765
765
  environmentType: getEnvironmentType(),
766
766
  pageType: getPageType(),
767
767
  };
768
768
  try {
769
769
  window.dra.sendCustomEvent(
770
770
  {
771
771
  name: draBurypointFlag,
772
772
  metrics: {
773
773
  timeStamp: Date.now(),
774
774
  ...customMetricsObj,
775
775
  },
776
776
  context: {
777
777
  ...commonObj,
778
778
  ...customContextObj,
779
779
  },
780
780
  },
781
781
  true,
782
782
  );
783
783
  } catch (e) {
784
784
  console.info(
785
785
  '当前新版烛龙sdk上报异常, 原始数据为',
786
786
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
787
787
  'e',
788
788
  e,
789
789
  );
790
790
  }
791
791
  } catch (e) {
792
792
  console.info(
793
793
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
794
794
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
795
795
  'e',
796
796
  e,
797
797
  );
798
798
  }
799
799
  try {
800
800
  await getNewDraSdkReadyPromise();
801
801
  const commonObj = {
802
802
  shopId: `${global.info.queryInfo.shopId || ''}`,
803
803
  venderId: `${global.info.queryInfo.venderId || ''}`,
804
804
  taroRenderVersion: window?.taroRenderVersion,
805
805
  environmentType: getEnvironmentType(),
806
806
  pageType: getPageType(),
807
807
  url: encodeURIComponent(window?.location?.href),
808
808
  };
809
809
  try {
810
810
  window.dra.sendCustomLogEvent({
811
811
  level,
812
812
  content: logContent || '日志上报',
813
813
  extra: JSON.stringify(commonObj),
814
814
  timeStamp: Date.now(),
815
815
  });
816
816
  } catch (e) {
817
817
  console.info('日志等级', level, '当前新版烛龙sdk上报异常, 原始数据为', logContent, 'e', e);
818
818
  }
819
819
  } catch (e2) {
820
820
  console.info('日志等级', level, '当前新版烛龙sdk上报异常, 原始数据为', logContent, 'e', e2);
821
821
  }
822
822
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.REMOTE);
823
823
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.INTERFACE);
824
824
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.BUSINESS);
825
825
  const deviceRatio = window?.devicePixelRatio ?? 2;
826
826
  if (isJdAndAndroidDevice && typeof displayObj === 'object') {
827
827
  Object.keys(displayObj).forEach((key) => {
828
828
  if (key === 'nativeHeaderHeight') {
829
829
  displayObj[key] = Math.ceil(displayObj[key] / (deviceRatio * deviceRatio) - 2);
830
830
  } else {
831
831
  displayObj[key] = Math.ceil(displayObj[key] / deviceRatio);
832
832
  }
833
833
  });
834
834
  } else if (isJdAndHarmonyDevice && isNewHarmonyShop && typeof displayObj === 'object') {
835
835
  if (displayObj['bottomBarHeight'] && typeof displayObj['bottomBarHeight'] === 'number') {
836
836
  displayObj['bottomBarHeight'] = Math.ceil(displayObj['bottomBarHeight'] / deviceRatio);
837
837
  }
838
838
  }
839
839
  return displayObj;
840
840
  isJdAndAndroidDevice && /TBS\/\d+/.test(window?.navigator?.userAgent);
841
841
  rootEleNode &&
842
842
  !rootEleNode.classList.contains('d-shop-lang-for-en') &&
843
843
  rootEleNode.classList.add('d-shop-lang-for-en');
844
844
  rootEleNode &&
845
845
  !rootEleNode.classList.contains('d-shop-lang-for-hk') &&
846
846
  rootEleNode.classList.add('d-shop-lang-for-hk');
847
847
  customContextObj = {},
848
848
  customMetricsObj = {},
849
849
  name?,
850
850
  try {
851
851
  const draBurypointFlag = name ?? DraBuryPointFlags.DECOSDM;
852
852
  try {
853
853
  let dra = null;
854
854
  const iframe = window?.top?.document?.getElementsByTagName('iframe')[0];
855
855
  if (iframe && iframe.contentWindow) {
856
856
  dra = iframe.contentWindow?.dra;
857
857
  }
858
858
  if (window.dra) {
859
859
  dra = window.dra;
860
860
  }
861
861
  dra &&
862
862
  dra.sendCustomEvent(
863
863
  {
864
864
  name: draBurypointFlag,
865
865
  metrics: {
866
866
  timeStamp: Date.now(),
867
867
  },
868
868
  context: {
869
869
  ...customContextObj,
870
870
  },
871
871
  },
872
872
  true,
873
873
  );
874
874
  } catch (e) {
875
875
  console.info(
876
876
  '当前新版烛龙sdk上报异常, 原始数据为',
877
877
  JSON.stringify({ ...customContextObj }),
878
878
  'e',
879
879
  e,
880
880
  );
881
881
  }
882
882
  } catch (e) {
883
883
  console.info(
884
884
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
885
885
  JSON.stringify({ ...customContextObj }),
886
886
  'e',
887
887
  e,
888
888
  );
889
889
  }