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

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
  if (window.screen?.orientation?.type) {
452
452
  console.info(
453
453
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏',
454
454
  window.screen?.orientation?.type,
455
455
  '测试低版本通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
456
456
  window?.orientation,
457
457
  );
458
458
  return /landscape/i.test(window.screen.orientation.type);
459
459
  } else if (window?.orientation) {
460
460
  console.info(
461
461
  '通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
462
462
  window?.orientation,
463
463
  );
464
464
  return [90, -90].includes(window?.orientation);
465
465
  } else {
466
466
  console.info(
467
467
  '通过window.matchMedia((orientation: landscape))?.matches方式获取当前pad屏幕是否是横屏',
468
468
  window.matchMedia('(orientation: landscape)')?.matches,
469
469
  );
470
470
  return window.matchMedia('(orientation: landscape)')?.matches;
471
471
  }
472
472
  try {
473
473
  return JSON.parse(decodeURIComponent(getUrlQuery('cookie')));
474
474
  } catch (e) {
475
475
  return {};
476
476
  }
477
477
  'harmony' === (userAgent.split(';')[1] || '').toLowerCase() || /arkweb/i.test(userAgent);
478
478
  window?.location?.hostname === 'pages.jd.com' && isJdAndHarmonyDevice;
479
479
  window.shopGlobalSwitch?.isH5AndJdShopViewH5ScrollVersion || '';
480
480
  !!document.getElementById('mallType') &&
481
481
  !!document.getElementById('pageInstance_id') &&
482
482
  !!document.getElementById('pageInstance_appId');
483
483
  isTjScence &&
484
484
  isWxMiniH5View &&
485
485
  (urlCookie['wxapp_type'] == '2' ||
486
486
  cookie.get('wxapp_type') == '2' ||
487
487
  parseQueryUrlObj['tjChannel'] === 'jxxcx');
488
488
  isTjScence && isWxMiniH5View && parseQueryUrlObj['sourceApp'] === 'haowujie';
489
489
  isTjScence &&
490
490
  (parseQueryUrlObj['appCode'] === 'ms27cba806' ||
491
491
  document.referrer?.match(/(?:https?:)?\/\/(?:kpl\.m|css|cs)\.jd\.com/i)?.length ||
492
492
  (parseQueryUrlObj['sourceApp'] == 'jsb-m' && parseQueryUrlObj['appCode'] === '') ||
493
493
  parseQueryUrlObj['tjChannel'] === 'tjm');
494
494
  if (isH5AdnJxMini) {
495
495
  return 'jxxcx';
496
496
  } else if (isTJApp) {
497
497
  return 'tjapp';
498
498
  } else if (isTjM) {
499
499
  return 'tjm';
500
500
  } else if (isTjJxM) {
501
501
  return 'jxh5';
502
502
  }
503
503
  return '';
504
504
  START: 'start',
505
505
  MOVE: 'move',
506
506
  END: 'end',
507
507
  x: 0,
508
508
  y: 0,
509
509
  const startX = startPos.x;
510
510
  const startY = startPos.y;
511
511
  const endX = touchEvent.clientX;
512
512
  const endY = touchEvent.clientY;
513
513
  const dy = startY - endY;
514
514
  const dx = endX - startX;
515
515
  let result = 0;
516
516
  if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {
517
517
  return result;
518
518
  }
519
519
  const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
520
520
  if (angle >= -45 && angle < 45) {
521
521
  result = 4;
522
522
  } else if (angle >= 45 && angle < 135) {
523
523
  result = 1;
524
524
  } else if (angle >= -135 && angle < -45) {
525
525
  result = 2;
526
526
  } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
527
527
  result = 3;
528
528
  }
529
529
  return result;
530
530
  e: Event,
531
531
  touchType = TouchType.START,
532
532
  stopTouchDocumentScrollState = false,
533
533
  if (isJdApp && e) {
534
534
  const touchEvent = e?.originalEvent?.targetTouches[0] || e?.targetTouches[0];
535
535
  let _touchState = touchType;
536
536
  let _getDirectionState = false;
537
537
  if (touchType === TouchType.START) {
538
538
  StopNativeScrollEventPos.x = touchEvent.clientX;
539
539
  StopNativeScrollEventPos.y = touchEvent.clientY;
540
540
  } else if (touchType === TouchType.MOVE) {
541
541
  _getDirectionState = [1, 2].includes(
542
542
  touchMoveGetSlideDirection(StopNativeScrollEventPos, touchEvent),
543
543
  );
544
544
  if (_getDirectionState) {
545
545
  _touchState = TouchType.END;
546
546
  }
547
547
  console.log(
548
548
  '对外提供阻止横滑方法,当前touchType为move,设定1、2向上或向下方向,当前计算后的滑动是否为纵向',
549
549
  _getDirectionState,
550
550
  );
551
551
  } else if (touchType === TouchType.END) {
552
552
  StopNativeScrollEventPos.x = 0;
553
553
  StopNativeScrollEventPos.y = 0;
554
554
  }
555
555
  isIosDevice
556
556
  ? iosDeviceStopNativeScrollEvent(e, _touchState, stopTouchDocumentScrollState)
557
557
  : androidDeviceStopNativeScrollEvent(_touchState, stopTouchDocumentScrollState);
558
558
  if (
559
559
  !isAppHomeForMarketPage &&
560
560
  stopTouchDocumentScrollState &&
561
561
  _touchState === TouchType.START
562
562
  ) {
563
563
  rootEleNode && rootEleNode.classList.add('over-hidden');
564
564
  }
565
565
  if (_touchState === TouchType.MOVE && _getDirectionState) {
566
566
  rootEleNode &&
567
567
  rootEleNode.classList.contains('over-hidden') &&
568
568
  rootEleNode.classList.remove('over-hidden');
569
569
  } else if (_touchState === TouchType.END) {
570
570
  setTimeout(
571
571
  () => {
572
572
  rootEleNode &&
573
573
  rootEleNode.classList.contains('over-hidden') &&
574
574
  rootEleNode.classList.remove('over-hidden');
575
575
  },
576
576
  isAppHomeForMarketPage || _getDirectionState ? 0 : 200,
577
577
  );
578
578
  }
579
579
  }
580
580
  touchType = TouchType.START,
581
581
  stopTouchDocumentScrollState = false,
582
582
  isJdApp &&
583
583
  touchType !== TouchType.MOVE &&
584
584
  isAndroidDevice &&
585
585
  window?.JdAndroid &&
586
586
  window?.JdAndroid?.requestEvent &&
587
587
  window.JdAndroid.requestEvent(touchType === TouchType.START);
588
588
  console.log(
589
589
  '对外提供阻止安卓横滑方法,true-禁止外部事件H5可滑动,false-外部拦截h5事件,当前touchType为',
590
590
  touchType,
591
591
  '当前非move触发requestEvent状态为',
592
592
  touchType === TouchType.START,
593
593
  '当前stopTouchDocumentScrollState为',
594
594
  stopTouchDocumentScrollState,
595
595
  );
596
596
  e,
597
597
  touchType = TouchType.START,
598
598
  stopTouchDocumentScrollState = false,
599
599
  e && e.stopPropagation();
600
600
  console.log(
601
601
  '对外提供阻止ios横滑方法,当前touchType为',
602
602
  touchType,
603
603
  '当前stopTouchDocumentScrollState为',
604
604
  stopTouchDocumentScrollState,
605
605
  );
606
606
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage?.({
607
607
  method: 'callRouterModuleWithParams',
608
608
  params: {
609
609
  routerURL: 'router://JDShopModule/processShoph5SlideState',
610
610
  routerParam: {
611
611
  slideDirection: 'horizontal',
612
612
  state: touchType,
613
613
  },
614
614
  callBackId: new Date().getTime(),
615
615
  },
616
616
  });
617
617
  if (isH5AndJdShopView) {
618
618
  return CHANNEL_TYPE[currentChannel] || CHANNEL_TYPE[JDShopViewBusinessPathType.HOME];
619
619
  }
620
620
  return null;
621
621
  isH5 &&
622
622
  isJdApp &&
623
623
  [
624
624
  '/app/home',
625
625
  '/app/homeV2',
626
626
  '/app/classify',
627
627
  '/app/classifyV2',
628
628
  '/member/shopcard',
629
629
  '/favorite/home',
630
630
  ].includes(urlPathname);
631
631
  isH5 && isJdApp && !['/app/home', '/app/homeV2'].includes(urlPathname);
632
632
  ['/app/home', '/app/homeV2'].includes(urlPathname) &&
633
633
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_PROMOTION &&
634
634
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_MEMBER;
635
635
  isAppHomePage && parseQueryUrlObj['source'] === 'app-marketing';
636
636
  isH5 &&
637
637
  isAppHomePage &&
638
638
  versionCompare(jdAppVersion?.full ? jdAppVersion.full : '', isH5AndJdShopViewH5ScrollVersion) >=
639
639
  0;
640
640
  return isJdApp ? versionCompare(nowVersion, compareVersion) : -2;
641
641
  getSgmReadyPromise()
642
642
  .then(() => {
643
643
  if (
644
644
  customObj.hasOwnProperty('code') &&
645
645
  customObj.code.indexOf(NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG) !== -1
646
646
  ) {
647
647
  const originCode = customObj.code.substring(
648
648
  NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG.length,
649
649
  customObj.code.length,
650
650
  );
651
651
  customObj['code'] = getSgmCustomCode(handleSgmCodeTaroVersion(originCode));
652
652
  }
653
653
  const getCustomObj = {
654
654
  type: 1,
655
655
  code: 'all',
656
656
  cost1: 1,
657
657
  ...customObj,
658
658
  };
659
659
  try {
660
660
  window.__sgm__.custom(getCustomObj, '9HwAEg@fTtWBB3EnwA5VgLT');
661
661
  } catch (e) {
662
662
  console.log('当前sgm上报异常, 原始数据为', JSON.stringify(customObj));
663
663
  }
664
664
  })
665
665
  .catch(() => {
666
666
  console.error('当前页面sgm加载异常,无法进行异常上报, 原始数据为', JSON.stringify(customObj));
667
667
  });
668
668
  try {
669
669
  await getNewDraSdkReadyPromise();
670
670
  const draBurypointFlag = name ?? DraBuryPointFlags.BUSINESS;
671
671
  const commonObj = {
672
672
  shopId: `${global.info.queryInfo.shopId || ''}`,
673
673
  venderId: `${global.info.queryInfo.venderId || ''}`,
674
674
  taroRenderVersion: window?.taroRenderVersion,
675
675
  environmentType: getEnvironmentType(),
676
676
  pageType: getPageType(),
677
677
  };
678
678
  try {
679
679
  window.dra.sendCustomEvent(
680
680
  {
681
681
  name: draBurypointFlag,
682
682
  metrics: {
683
683
  timeStamp: Date.now(),
684
684
  ...customMetricsObj,
685
685
  },
686
686
  context: {
687
687
  ...commonObj,
688
688
  ...customContextObj,
689
689
  },
690
690
  },
691
691
  true,
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
  } catch (e) {
702
702
  console.error(
703
703
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
704
704
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
705
705
  'e',
706
706
  e,
707
707
  );
708
708
  }
709
709
  try {
710
710
  await getNewDraSdkReadyPromise();
711
711
  const commonObj = {
712
712
  shopId: `${global.info.queryInfo.shopId || ''}`,
713
713
  venderId: `${global.info.queryInfo.venderId || ''}`,
714
714
  taroRenderVersion: window?.taroRenderVersion,
715
715
  environmentType: getEnvironmentType(),
716
716
  pageType: getPageType(),
717
717
  url: encodeURIComponent(window?.location?.href),
718
718
  };
719
719
  try {
720
720
  window.dra.sendCustomLogEvent(
721
721
  {
722
722
  level,
723
723
  content: logContent || "日志上报",
724
724
  extra: JSON.stringify(commonObj),
725
725
  timeStamp: Date.now()
726
726
  },
727
727
  );
728
728
  } catch (e) {
729
729
  console.error(
730
730
  '日志等级',
731
731
  level,
732
732
  '当前新版烛龙sdk上报异常, 原始数据为',
733
733
  logContent,
734
734
  'e',
735
735
  e,
736
736
  );
737
737
  }
738
738
  } catch (e2) {
739
739
  console.error(
740
740
  '日志等级',
741
741
  level,
742
742
  '当前新版烛龙sdk上报异常, 原始数据为',
743
743
  logContent,
744
744
  'e',
745
745
  e2,
746
746
  );
747
747
  }
748
748
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.REMOTE);
749
749
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.INTERFACE);
750
750
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.BUSINESS);
751
751
  const deviceRatio = window?.devicePixelRatio ?? 2;
752
752
  if (isJdAndAndroidDevice && typeof displayObj === 'object') {
753
753
  Object.keys(displayObj).forEach((key) => {
754
754
  if (key === 'nativeHeaderHeight') {
755
755
  displayObj[key] = Math.ceil(displayObj[key] / (deviceRatio * deviceRatio) - 2);
756
756
  } else {
757
757
  displayObj[key] = Math.ceil(displayObj[key] / deviceRatio);
758
758
  }
759
759
  });
760
760
  } else if (isJdAndHarmonyDevice && isNewHarmonyShop && typeof displayObj === 'object') {
761
761
  if (displayObj['bottomBarHeight'] && typeof displayObj['bottomBarHeight'] === 'number') {
762
762
  displayObj['bottomBarHeight'] = Math.ceil(displayObj['bottomBarHeight'] / deviceRatio);
763
763
  }
764
764
  }
765
765
  return displayObj;
766
766
  isJdAndAndroidDevice && /TBS\/\d+/.test(window?.navigator?.userAgent);
767
767
  rootEleNode &&
768
768
  !rootEleNode.classList.contains('d-shop-lang-for-en') &&
769
769
  rootEleNode.classList.add('d-shop-lang-for-en');
770
770
  customContextObj = {},
771
771
  customMetricsObj = {},
772
772
  name?,
773
773
  try {
774
774
  const draBurypointFlag = name ?? DraBuryPointFlags.DECOSDM;
775
775
  try {
776
776
  let dra = null;
777
777
  const iframe = window?.top?.document?.getElementsByTagName('iframe')[0];
778
778
  if (iframe && iframe.contentWindow) {
779
779
  dra = iframe.contentWindow?.dra;
780
780
  }
781
781
  if (window.dra) {
782
782
  dra = window.dra;
783
783
  }
784
784
  dra &&
785
785
  dra.sendCustomEvent(
786
786
  {
787
787
  name: draBurypointFlag,
788
788
  metrics: {
789
789
  timeStamp: Date.now(),
790
790
  },
791
791
  context: {
792
792
  ...customContextObj,
793
793
  },
794
794
  },
795
795
  true,
796
796
  );
797
797
  } catch (e) {
798
798
  console.error(
799
799
  '当前新版烛龙sdk上报异常, 原始数据为',
800
800
  JSON.stringify({ ...customContextObj }),
801
801
  'e',
802
802
  e,
803
803
  );
804
804
  }
805
805
  } catch (e) {
806
806
  console.error(
807
807
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
808
808
  JSON.stringify({ ...customContextObj }),
809
809
  'e',
810
810
  e,
811
811
  );
812
812
  }