@conecli/cone-render 0.8.20-shop.229 → 0.8.20-shop.231

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