@conecli/cone-render 0.10.1-shop3.76 → 0.10.1-shop3.79

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.
@@ -1 +1 @@
1
- import {
2
1
  isApp,
3
2
  isIOS,
4
3
  getAppVersion,
5
4
  version,
6
5
  getUrlQuery,
7
6
  assign,
8
7
  isString,
9
8
  isObject,
10
9
  serialize,
11
10
  isAndroid,
12
11
  versionCompare,
13
12
  isIPad,
14
13
  isTablet,
15
14
  CHANNEL_TYPE,
16
15
  JDShopViewBusinessPathType,
17
16
  SECTION_HOME_TAB_NAME_TYPE,
18
17
  SECTION_HOME_TAB_TYPE,
19
18
  DraBuryPointFlags,
20
19
  MPAAS_CONFIG_APP_VERSION,
21
20
  BUILD_TYPE,
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
  ['pages.jd.com','beta-pages.jd.com'].includes(window?.location?.hostname) && 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
  BUILD_TYPE.PC_CLASSIFY1 === buildType || BUILD_TYPE.PC_CLASSIFY2 === buildType;
130
129
  isTjScence &&
131
130
  isWxMiniH5View &&
132
131
  (urlCookie['wxapp_type'] == '2' ||
133
132
  cookie.get('wxapp_type') == '2' ||
134
133
  parseQueryUrlObj['tjChannel'] === 'jxxcx');
135
134
  isTjScence && isWxMiniH5View && parseQueryUrlObj['sourceApp'] === 'haowujie';
136
135
  isTjScence &&
137
136
  (parseQueryUrlObj['appCode'] === 'ms27cba806' ||
138
137
  document.referrer?.match(/(?:https?:)?\/\/(?:kpl\.m|css|cs)\.jd\.com/i)?.length ||
139
138
  (parseQueryUrlObj['sourceApp'] == 'jsb-m' && parseQueryUrlObj['appCode'] === '') ||
140
139
  parseQueryUrlObj['tjChannel'] === 'tjm');
141
140
  if (isH5AdnJxMini) {
142
141
  return 'jxxcx';
143
142
  } else if (isTJApp) {
144
143
  return 'tjapp';
145
144
  } else if (isTjM) {
146
145
  return 'tjm';
147
146
  } else if (isTjJxM) {
148
147
  return 'jxh5';
149
148
  }
150
149
  return '';
151
150
  START: 'start',
152
151
  MOVE: 'move',
153
152
  END: 'end',
154
153
  x: 0,
155
154
  y: 0,
156
155
  const startX = startPos.x;
157
156
  const startY = startPos.y;
158
157
  const endX = touchEvent.clientX;
159
158
  const endY = touchEvent.clientY;
160
159
  const dy = startY - endY;
161
160
  const dx = endX - startX;
162
161
  let result = 0;
163
162
  if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {
164
163
  return result;
165
164
  }
166
165
  const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
167
166
  if (angle >= -45 && angle < 45) {
168
167
  result = 4;
169
168
  } else if (angle >= 45 && angle < 135) {
170
169
  result = 1;
171
170
  } else if (angle >= -135 && angle < -45) {
172
171
  result = 2;
173
172
  } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
174
173
  result = 3;
175
174
  }
176
175
  return result;
177
176
  e: Event,
178
177
  touchType = TouchType.START,
179
178
  stopTouchDocumentScrollState = false,
180
179
  if (isJdApp && e) {
181
180
  const touchEvent = e?.originalEvent?.targetTouches[0] || e?.targetTouches[0];
182
181
  let _touchState = touchType;
183
182
  let _getDirectionState = false;
184
183
  if (touchType === TouchType.START) {
185
184
  StopNativeScrollEventPos.x = touchEvent.clientX;
186
185
  StopNativeScrollEventPos.y = touchEvent.clientY;
187
186
  } else if (touchType === TouchType.MOVE) {
188
187
  _getDirectionState = [1, 2].includes(
189
188
  touchMoveGetSlideDirection(StopNativeScrollEventPos, touchEvent),
190
189
  );
191
190
  if (_getDirectionState) {
192
191
  _touchState = TouchType.END;
193
192
  }
194
193
  console.log(
195
194
  '对外提供阻止横滑方法,当前touchType为move,设定1、2向上或向下方向,当前计算后的滑动是否为纵向',
196
195
  _getDirectionState,
197
196
  );
198
197
  } else if (touchType === TouchType.END) {
199
198
  StopNativeScrollEventPos.x = 0;
200
199
  StopNativeScrollEventPos.y = 0;
201
200
  }
202
201
  isIosDevice
203
202
  ? iosDeviceStopNativeScrollEvent(e, _touchState, stopTouchDocumentScrollState)
204
203
  : androidDeviceStopNativeScrollEvent(_touchState, stopTouchDocumentScrollState);
205
204
  if (
206
205
  !isAppHomeForMarketPage &&
207
206
  stopTouchDocumentScrollState &&
208
207
  _touchState === TouchType.START
209
208
  ) {
210
209
  rootEleNode && rootEleNode.classList.add('over-hidden');
211
210
  }
212
211
  if (_touchState === TouchType.MOVE && _getDirectionState) {
213
212
  rootEleNode &&
214
213
  rootEleNode.classList.contains('over-hidden') &&
215
214
  rootEleNode.classList.remove('over-hidden');
216
215
  } else if (_touchState === TouchType.END) {
217
216
  setTimeout(
218
217
  () => {
219
218
  rootEleNode &&
220
219
  rootEleNode.classList.contains('over-hidden') &&
221
220
  rootEleNode.classList.remove('over-hidden');
222
221
  },
223
222
  isAppHomeForMarketPage || _getDirectionState ? 0 : 200,
224
223
  );
225
224
  }
226
225
  }
227
226
  touchType = TouchType.START,
228
227
  stopTouchDocumentScrollState = false,
229
228
  isJdApp &&
230
229
  touchType !== TouchType.MOVE &&
231
230
  isAndroidDevice &&
232
231
  window?.JdAndroid &&
233
232
  window?.JdAndroid?.requestEvent &&
234
233
  window.JdAndroid.requestEvent(touchType === TouchType.START);
235
234
  console.log(
236
235
  '对外提供阻止安卓横滑方法,true-禁止外部事件H5可滑动,false-外部拦截h5事件,当前touchType为',
237
236
  touchType,
238
237
  '当前非move触发requestEvent状态为',
239
238
  touchType === TouchType.START,
240
239
  '当前stopTouchDocumentScrollState为',
241
240
  stopTouchDocumentScrollState,
242
241
  );
243
242
  e,
244
243
  touchType = TouchType.START,
245
244
  stopTouchDocumentScrollState = false,
246
245
  e && e.stopPropagation();
247
246
  console.log(
248
247
  '对外提供阻止ios横滑方法,当前touchType为',
249
248
  touchType,
250
249
  '当前stopTouchDocumentScrollState为',
251
250
  stopTouchDocumentScrollState,
252
251
  );
253
252
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage?.({
254
253
  method: 'callRouterModuleWithParams',
255
254
  params: {
256
255
  routerURL: 'router://JDShopModule/processShoph5SlideState',
257
256
  routerParam: {
258
257
  slideDirection: 'horizontal',
259
258
  state: touchType,
260
259
  },
261
260
  callBackId: new Date().getTime(),
262
261
  },
263
262
  });
264
263
  if (isH5AndJdShopView) {
265
264
  return CHANNEL_TYPE[currentChannel] || CHANNEL_TYPE[JDShopViewBusinessPathType.HOME];
266
265
  }
267
266
  return null;
268
267
  isH5 &&
269
268
  isJdApp &&
270
269
  [
271
270
  '/app/home',
272
271
  '/app/homeV2',
273
272
  '/app/classify',
274
273
  '/app/classifyV2',
275
274
  '/member/shopcard',
276
275
  '/favorite/home',
277
276
  ].includes(urlPathname);
278
277
  isH5 && isJdApp && !['/app/home', '/app/homeV2'].includes(urlPathname);
279
278
  ['/app/home', '/app/homeV2'].includes(urlPathname) &&
280
279
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_PROMOTION &&
281
280
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_MEMBER;
282
281
  isAppHomePage && parseQueryUrlObj['source'] === 'app-marketing';
283
282
  isH5 &&
284
283
  isAppHomePage &&
285
284
  versionCompare(jdAppVersion?.full ? jdAppVersion.full : '', isH5AndJdShopViewH5ScrollVersion) >=
286
285
  0;
287
286
  return isJdApp ? versionCompare(nowVersion, compareVersion) : -2;
288
287
  try {
289
288
  await getNewDraSdkReadyPromise();
290
289
  const draBurypointFlag = name ?? DraBuryPointFlags.BUSINESS;
291
290
  const commonObj = {
292
291
  shopId: `${global.info.queryInfo.shopId || ''}`,
293
292
  venderId: `${global.info.queryInfo.venderId || ''}`,
294
293
  taroRenderVersion: window?.taroRenderVersion,
295
294
  environmentType: getEnvironmentType(),
296
295
  pageType: getPageType(),
297
296
  };
298
297
  try {
299
298
  window.dra.sendCustomEvent(
300
299
  {
301
300
  name: draBurypointFlag,
302
301
  metrics: {
303
302
  timeStamp: Date.now(),
304
303
  ...customMetricsObj,
305
304
  },
306
305
  context: {
307
306
  ...commonObj,
308
307
  ...customContextObj,
309
308
  },
310
309
  },
311
310
  true,
312
311
  );
313
312
  } catch (e) {
314
313
  console.info(
315
314
  '当前新版烛龙sdk上报异常, 原始数据为',
316
315
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
317
316
  'e',
318
317
  e,
319
318
  );
320
319
  }
321
320
  } catch (e) {
322
321
  console.info(
323
322
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
324
323
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
325
324
  'e',
326
325
  e,
327
326
  );
328
327
  }
329
328
  try {
330
329
  await getNewDraSdkReadyPromise();
331
330
  const commonObj = {
332
331
  shopId: `${global.info.queryInfo?.shopId || ''}`,
333
332
  venderId: `${global.info.queryInfo?.venderId || ''}`,
334
333
  taroRenderVersion: window?.taroRenderVersion,
335
334
  environmentType: getEnvironmentType(),
336
335
  pageType: getPageType(),
337
336
  url: encodeURIComponent(window?.location?.href),
338
337
  };
339
338
  try {
340
339
  window.dra.sendCustomLogEvent({
341
340
  level,
342
341
  content: logContent || '日志上报',
343
342
  extra: JSON.stringify(commonObj),
344
343
  timeStamp: Date.now(),
345
344
  });
346
345
  } catch (e) {
347
346
  console.info('日志等级', level, '当前新版烛龙sdk上报异常, 原始数据为', logContent, 'e', e);
348
347
  }
349
348
  } catch (e2) {
350
349
  console.info('日志等级', level, '当前新版烛龙sdk上报异常, 原始数据为', logContent, 'e', e2);
351
350
  }
352
351
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.REMOTE);
353
352
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.INTERFACE);
354
353
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.BUSINESS);
355
354
  const deviceRatio = window?.devicePixelRatio ?? 2;
356
355
  if (isJdAndAndroidDevice && typeof displayObj === 'object') {
357
356
  Object.keys(displayObj).forEach((key) => {
358
357
  if (key === 'nativeHeaderHeight') {
359
358
  displayObj[key] = Math.ceil(displayObj[key] / (deviceRatio * deviceRatio) - 2);
360
359
  } else {
361
360
  displayObj[key] = Math.ceil(displayObj[key] / deviceRatio);
362
361
  }
363
362
  });
364
363
  } else if (isJdAndHarmonyDevice && isNewHarmonyShop && typeof displayObj === 'object') {
365
364
  if (displayObj['bottomBarHeight'] && typeof displayObj['bottomBarHeight'] === 'number') {
366
365
  displayObj['bottomBarHeight'] = Math.ceil(displayObj['bottomBarHeight'] / deviceRatio);
367
366
  }
368
367
  }
369
368
  return displayObj;
370
369
  isJdAndAndroidDevice && /TBS\/\d+/.test(window?.navigator?.userAgent);
371
370
  rootEleNode &&
372
371
  !rootEleNode.classList.contains('d-shop-lang-for-en') &&
373
372
  rootEleNode.classList.add('d-shop-lang-for-en');
374
373
  rootEleNode &&
375
374
  !rootEleNode.classList.contains('d-shop-lang-for-hk') &&
376
375
  rootEleNode.classList.add('d-shop-lang-for-hk');
376
+ import {
377
377
  isApp,
378
378
  isIOS,
379
379
  getAppVersion,
380
380
  version,
381
381
  getUrlQuery,
382
382
  assign,
383
383
  isString,
384
384
  isObject,
385
385
  serialize,
386
386
  isAndroid,
387
387
  versionCompare,
388
388
  isIPad,
389
389
  isTablet,
390
390
  CHANNEL_TYPE,
391
391
  JDShopViewBusinessPathType,
392
392
  SECTION_HOME_TAB_NAME_TYPE,
393
393
  SECTION_HOME_TAB_TYPE,
394
394
  DraBuryPointFlags,
395
395
  MPAAS_CONFIG_APP_VERSION,
396
396
  BUILD_TYPE,
397
397
  console.log(message);
398
398
  reject(new Error(message));
399
399
  return ready('dra', 2000)
400
400
  .then(() => {
401
401
  isNewDraSdkReadyError = false;
402
402
  console.log('当前新版烛龙sdk初始化成功');
403
403
  return true;
404
404
  })
405
405
  .catch(() => {
406
406
  isNewDraSdkReadyError = true;
407
407
  throw new Error('当前新版烛龙sdk初始化失败');
408
408
  });
409
409
  return new Promise((resolve, reject) => {
410
410
  if (window?.dra) {
411
411
  resolve(true);
412
412
  } else if (isNewDraSdkReadyError) {
413
413
  logAndReject('当前新版烛龙sdk初始化失败', reject);
414
414
  } else {
415
415
  initializeDraSdk()
416
416
  .then(resolve)
417
417
  .catch((error) => logAndReject(error.message, reject));
418
418
  }
419
419
  });
420
420
  rootEleInitWidth = 0,
421
421
  screenWidth = 0,
422
422
  screenHeight = 0,
423
423
  if (rootEleInitWidth > 0 && screenWidth > 0 && screenHeight > 0) {
424
424
  const isRootEleWidthEqScreenWidth = Math.abs(rootEleInitWidth - screenWidth) < 60;
425
425
  const getThisWinWidth = rootEleInitWidth;
426
426
  const getThisWinHeight = isRootEleWidthEqScreenWidth ? screenHeight : screenWidth;
427
427
  console.info(
428
428
  '通过rootEleInitWidth对比屏幕宽高确认横竖屏幕方式',
429
429
  'rootEleInitWidth',
430
430
  rootEleInitWidth,
431
431
  'screenWidth',
432
432
  screenWidth,
433
433
  'screenHeight',
434
434
  screenHeight,
435
435
  'isRootEleWidthEqScreenWidth(根元素宽度是否与屏幕本身宽度接近,主要是ios屏幕宽高不变)',
436
436
  isRootEleWidthEqScreenWidth,
437
437
  'getThisWinWidth',
438
438
  getThisWinWidth,
439
439
  'getThisWinHeight',
440
440
  getThisWinHeight,
441
441
  '是否是横屏',
442
442
  getThisWinWidth > getThisWinHeight,
443
443
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏,带有landscape为横屏',
444
444
  window.screen?.orientation?.type,
445
445
  );
446
446
  return getThisWinWidth > getThisWinHeight;
447
447
  } else {
448
448
  if (window.screen?.orientation?.type) {
449
449
  console.info(
450
450
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏',
451
451
  window.screen?.orientation?.type,
452
452
  '测试低版本通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
453
453
  window?.orientation,
454
454
  );
455
455
  return /landscape/i.test(window.screen.orientation.type);
456
456
  } else if (window?.orientation) {
457
457
  console.info(
458
458
  '通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
459
459
  window?.orientation,
460
460
  );
461
461
  return [90, -90].includes(window?.orientation);
462
462
  } else {
463
463
  console.info(
464
464
  '通过window.matchMedia((orientation: landscape))?.matches方式获取当前pad屏幕是否是横屏',
465
465
  window.matchMedia('(orientation: landscape)')?.matches,
466
466
  );
467
467
  return window.matchMedia('(orientation: landscape)')?.matches;
468
468
  }
469
469
  }
470
470
  try {
471
471
  return JSON.parse(decodeURIComponent(getUrlQuery('cookie')));
472
472
  } catch (e) {
473
473
  return {};
474
474
  }
475
475
  window.shopGlobalSwitch?.jdAppForNotMainCheckUaList,
476
476
  ? new RegExp(window.shopGlobalSwitch?.jdAppForNotMainCheckUaList.join('|'), 'i')
477
477
  : false
478
478
  isWxMiniH5View && (/wx91d27dbf599dff74/i.test(userAgent) || urlCookie['wxapp_type'] == '1');
479
479
  'harmony' === (userAgent.split(';')[1] || '').toLowerCase() || /arkweb/i.test(userAgent);
480
480
  versionCompare(jdAppVersionStr, window.PAGE_DATA.businessData.jdHarmonyNativeVersion || '') >= 0 && isJdAndHarmonyDevice;
481
481
  ? setJdAppForNotMainUaFilterReg.test(userAgent)
482
482
  : false) || (isJdAndHarmonyDevice && !isNewHarmonyShop));
483
483
  window.shopGlobalSwitch?.isH5AndJdShopViewH5ScrollVersion || '';
484
484
  !!document.getElementById('mallType') &&
485
485
  !!document.getElementById('pageInstance_id') &&
486
486
  !!document.getElementById('pageInstance_appId');
487
487
  BUILD_TYPE.PC_CLASSIFY1 === buildType || BUILD_TYPE.PC_CLASSIFY2 === buildType;
488
488
  isTjScence &&
489
489
  isWxMiniH5View &&
490
490
  (urlCookie['wxapp_type'] == '2' ||
491
491
  cookie.get('wxapp_type') == '2' ||
492
492
  parseQueryUrlObj['tjChannel'] === 'jxxcx');
493
493
  isTjScence && isWxMiniH5View && parseQueryUrlObj['sourceApp'] === 'haowujie';
494
494
  isTjScence &&
495
495
  (parseQueryUrlObj['appCode'] === 'ms27cba806' ||
496
496
  document.referrer?.match(/(?:https?:)?\/\/(?:kpl\.m|css|cs)\.jd\.com/i)?.length ||
497
497
  (parseQueryUrlObj['sourceApp'] == 'jsb-m' && parseQueryUrlObj['appCode'] === '') ||
498
498
  parseQueryUrlObj['tjChannel'] === 'tjm');
499
499
  if (isH5AdnJxMini) {
500
500
  return 'jxxcx';
501
501
  } else if (isTJApp) {
502
502
  return 'tjapp';
503
503
  } else if (isTjM) {
504
504
  return 'tjm';
505
505
  } else if (isTjJxM) {
506
506
  return 'jxh5';
507
507
  }
508
508
  return '';
509
509
  START: 'start',
510
510
  MOVE: 'move',
511
511
  END: 'end',
512
512
  x: 0,
513
513
  y: 0,
514
514
  const startX = startPos.x;
515
515
  const startY = startPos.y;
516
516
  const endX = touchEvent.clientX;
517
517
  const endY = touchEvent.clientY;
518
518
  const dy = startY - endY;
519
519
  const dx = endX - startX;
520
520
  let result = 0;
521
521
  if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {
522
522
  return result;
523
523
  }
524
524
  const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
525
525
  if (angle >= -45 && angle < 45) {
526
526
  result = 4;
527
527
  } else if (angle >= 45 && angle < 135) {
528
528
  result = 1;
529
529
  } else if (angle >= -135 && angle < -45) {
530
530
  result = 2;
531
531
  } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
532
532
  result = 3;
533
533
  }
534
534
  return result;
535
535
  e: Event,
536
536
  touchType = TouchType.START,
537
537
  stopTouchDocumentScrollState = false,
538
538
  if (isJdApp && e) {
539
539
  const touchEvent = e?.originalEvent?.targetTouches[0] || e?.targetTouches[0];
540
540
  let _touchState = touchType;
541
541
  let _getDirectionState = false;
542
542
  if (touchType === TouchType.START) {
543
543
  StopNativeScrollEventPos.x = touchEvent.clientX;
544
544
  StopNativeScrollEventPos.y = touchEvent.clientY;
545
545
  } else if (touchType === TouchType.MOVE) {
546
546
  _getDirectionState = [1, 2].includes(
547
547
  touchMoveGetSlideDirection(StopNativeScrollEventPos, touchEvent),
548
548
  );
549
549
  if (_getDirectionState) {
550
550
  _touchState = TouchType.END;
551
551
  }
552
552
  console.log(
553
553
  '对外提供阻止横滑方法,当前touchType为move,设定1、2向上或向下方向,当前计算后的滑动是否为纵向',
554
554
  _getDirectionState,
555
555
  );
556
556
  } else if (touchType === TouchType.END) {
557
557
  StopNativeScrollEventPos.x = 0;
558
558
  StopNativeScrollEventPos.y = 0;
559
559
  }
560
560
  isIosDevice
561
561
  ? iosDeviceStopNativeScrollEvent(e, _touchState, stopTouchDocumentScrollState)
562
562
  : androidDeviceStopNativeScrollEvent(_touchState, stopTouchDocumentScrollState);
563
563
  if (
564
564
  !isAppHomeForMarketPage &&
565
565
  stopTouchDocumentScrollState &&
566
566
  _touchState === TouchType.START
567
567
  ) {
568
568
  rootEleNode && rootEleNode.classList.add('over-hidden');
569
569
  }
570
570
  if (_touchState === TouchType.MOVE && _getDirectionState) {
571
571
  rootEleNode &&
572
572
  rootEleNode.classList.contains('over-hidden') &&
573
573
  rootEleNode.classList.remove('over-hidden');
574
574
  } else if (_touchState === TouchType.END) {
575
575
  setTimeout(
576
576
  () => {
577
577
  rootEleNode &&
578
578
  rootEleNode.classList.contains('over-hidden') &&
579
579
  rootEleNode.classList.remove('over-hidden');
580
580
  },
581
581
  isAppHomeForMarketPage || _getDirectionState ? 0 : 200,
582
582
  );
583
583
  }
584
584
  }
585
585
  touchType = TouchType.START,
586
586
  stopTouchDocumentScrollState = false,
587
587
  isJdApp &&
588
588
  touchType !== TouchType.MOVE &&
589
589
  isAndroidDevice &&
590
590
  window?.JdAndroid &&
591
591
  window?.JdAndroid?.requestEvent &&
592
592
  window.JdAndroid.requestEvent(touchType === TouchType.START);
593
593
  console.log(
594
594
  '对外提供阻止安卓横滑方法,true-禁止外部事件H5可滑动,false-外部拦截h5事件,当前touchType为',
595
595
  touchType,
596
596
  '当前非move触发requestEvent状态为',
597
597
  touchType === TouchType.START,
598
598
  '当前stopTouchDocumentScrollState为',
599
599
  stopTouchDocumentScrollState,
600
600
  );
601
601
  e,
602
602
  touchType = TouchType.START,
603
603
  stopTouchDocumentScrollState = false,
604
604
  e && e.stopPropagation();
605
605
  console.log(
606
606
  '对外提供阻止ios横滑方法,当前touchType为',
607
607
  touchType,
608
608
  '当前stopTouchDocumentScrollState为',
609
609
  stopTouchDocumentScrollState,
610
610
  );
611
611
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage?.({
612
612
  method: 'callRouterModuleWithParams',
613
613
  params: {
614
614
  routerURL: 'router://JDShopModule/processShoph5SlideState',
615
615
  routerParam: {
616
616
  slideDirection: 'horizontal',
617
617
  state: touchType,
618
618
  },
619
619
  callBackId: new Date().getTime(),
620
620
  },
621
621
  });
622
622
  if (isH5AndJdShopView) {
623
623
  return CHANNEL_TYPE[currentChannel] || CHANNEL_TYPE[JDShopViewBusinessPathType.HOME];
624
624
  }
625
625
  return null;
626
626
  isH5 &&
627
627
  isJdApp &&
628
628
  [
629
629
  '/app/home',
630
630
  '/app/homeV2',
631
631
  '/app/classify',
632
632
  '/app/classifyV2',
633
633
  '/member/shopcard',
634
634
  '/favorite/home',
635
635
  ].includes(urlPathname);
636
636
  isH5 && isJdApp && !['/app/home', '/app/homeV2'].includes(urlPathname);
637
637
  ['/app/home', '/app/homeV2'].includes(urlPathname) &&
638
638
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_PROMOTION &&
639
639
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_MEMBER;
640
640
  isAppHomePage && parseQueryUrlObj['source'] === 'app-marketing';
641
641
  isH5 &&
642
642
  isAppHomePage &&
643
643
  versionCompare(jdAppVersion?.full ? jdAppVersion.full : '', isH5AndJdShopViewH5ScrollVersion) >=
644
644
  0;
645
645
  return isJdApp ? versionCompare(nowVersion, compareVersion) : -2;
646
646
  try {
647
647
  await getNewDraSdkReadyPromise();
648
648
  const draBurypointFlag = name ?? DraBuryPointFlags.BUSINESS;
649
649
  const commonObj = {
650
650
  shopId: `${global.info.queryInfo.shopId || ''}`,
651
651
  venderId: `${global.info.queryInfo.venderId || ''}`,
652
652
  taroRenderVersion: window?.taroRenderVersion,
653
653
  environmentType: getEnvironmentType(),
654
654
  pageType: getPageType(),
655
655
  };
656
656
  try {
657
657
  window.dra.sendCustomEvent(
658
658
  {
659
659
  name: draBurypointFlag,
660
660
  metrics: {
661
661
  timeStamp: Date.now(),
662
662
  ...customMetricsObj,
663
663
  },
664
664
  context: {
665
665
  ...commonObj,
666
666
  ...customContextObj,
667
667
  },
668
668
  },
669
669
  true,
670
670
  );
671
671
  } catch (e) {
672
672
  console.info(
673
673
  '当前新版烛龙sdk上报异常, 原始数据为',
674
674
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
675
675
  'e',
676
676
  e,
677
677
  );
678
678
  }
679
679
  } catch (e) {
680
680
  console.info(
681
681
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
682
682
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
683
683
  'e',
684
684
  e,
685
685
  );
686
686
  }
687
687
  try {
688
688
  await getNewDraSdkReadyPromise();
689
689
  const commonObj = {
690
690
  shopId: `${global.info.queryInfo?.shopId || ''}`,
691
691
  venderId: `${global.info.queryInfo?.venderId || ''}`,
692
692
  taroRenderVersion: window?.taroRenderVersion,
693
693
  environmentType: getEnvironmentType(),
694
694
  pageType: getPageType(),
695
695
  url: encodeURIComponent(window?.location?.href),
696
696
  };
697
697
  try {
698
698
  window.dra.sendCustomLogEvent({
699
699
  level,
700
700
  content: logContent || '日志上报',
701
701
  extra: JSON.stringify(commonObj),
702
702
  timeStamp: Date.now(),
703
703
  });
704
704
  } catch (e) {
705
705
  console.info('日志等级', level, '当前新版烛龙sdk上报异常, 原始数据为', logContent, 'e', e);
706
706
  }
707
707
  } catch (e2) {
708
708
  console.info('日志等级', level, '当前新版烛龙sdk上报异常, 原始数据为', logContent, 'e', e2);
709
709
  }
710
710
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.REMOTE);
711
711
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.INTERFACE);
712
712
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.BUSINESS);
713
713
  const deviceRatio = window?.devicePixelRatio ?? 2;
714
714
  if (isJdAndAndroidDevice && typeof displayObj === 'object') {
715
715
  Object.keys(displayObj).forEach((key) => {
716
716
  if (key === 'nativeHeaderHeight') {
717
717
  displayObj[key] = Math.ceil(displayObj[key] / (deviceRatio * deviceRatio) - 2);
718
718
  } else {
719
719
  displayObj[key] = Math.ceil(displayObj[key] / deviceRatio);
720
720
  }
721
721
  });
722
722
  } else if (isJdAndHarmonyDevice && isNewHarmonyShop && typeof displayObj === 'object') {
723
723
  if (displayObj['bottomBarHeight'] && typeof displayObj['bottomBarHeight'] === 'number') {
724
724
  displayObj['bottomBarHeight'] = Math.ceil(displayObj['bottomBarHeight'] / deviceRatio);
725
725
  }
726
726
  }
727
727
  return displayObj;
728
728
  isJdAndAndroidDevice && /TBS\/\d+/.test(window?.navigator?.userAgent);
729
729
  rootEleNode &&
730
730
  !rootEleNode.classList.contains('d-shop-lang-for-en') &&
731
731
  rootEleNode.classList.add('d-shop-lang-for-en');
732
732
  rootEleNode &&
733
733
  !rootEleNode.classList.contains('d-shop-lang-for-hk') &&
734
734
  rootEleNode.classList.add('d-shop-lang-for-hk');