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

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