@conecli/cone-render 0.10.1-shop3.14 → 0.10.1-shop3.16

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