@conecli/cone-render 0.10.1-shop3.22 → 0.10.1-shop3.24

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