@conecli/cone-render 0.10.1-shop-beta.11 → 0.10.1-shop-beta.13

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.
Files changed (78) hide show
  1. package/README.md +1 -1
  2. package/dist/common/const.ts +1 -1
  3. package/dist/common/index.dynamic.ts +1 -0
  4. package/dist/common/index.h5.ts +1 -1
  5. package/dist/common/index.jd.ts +1 -1
  6. package/dist/common/index.ts +1 -1
  7. package/dist/common/index.weapp.ts +1 -1
  8. package/dist/common/jssdk.ts +1 -1
  9. package/dist/common/token/index.h5.ts +1 -1
  10. package/dist/common/wxappApi.ts +1 -1
  11. package/dist/components/base/CommonFloorHead/index.tsx +1 -1
  12. package/dist/components/base/CountDown/index.tsx +1 -1
  13. package/dist/components/base/CustomScrollView/index.tsx +1 -1
  14. package/dist/components/base/Dialog/index.dynamic.module.scss +126 -0
  15. package/dist/components/base/Dialog/index.dynamic.tsx +1 -0
  16. package/dist/components/base/DynamicTest/index.dynamic.module.scss +15 -0
  17. package/dist/components/base/DynamicTest/index.module.scss +16 -0
  18. package/dist/components/base/DynamicTest/index.tsx +1 -0
  19. package/dist/components/base/ExposureSmart/index.tsx +1 -1
  20. package/dist/components/base/ItemViewExposureSmart/index.tsx +1 -1
  21. package/dist/components/base/JdLoading/index.module.scss +2 -0
  22. package/dist/components/base/JdLoading/index.tsx +1 -1
  23. package/dist/components/base/LazyLoadImage/index.tsx +1 -1
  24. package/dist/components/base/NetworkDataError/const.ts +1 -1
  25. package/dist/components/base/NetworkDataError/index.module.scss +116 -70
  26. package/dist/components/base/NetworkDataError/index.tsx +1 -1
  27. package/dist/components/base/Price/Base/index.dynamic.module.scss +63 -0
  28. package/dist/components/base/Price/Base/index.dynamic.tsx +1 -0
  29. package/dist/components/base/Price/Base/index.module.scss +6 -0
  30. package/dist/components/base/Price/Base/index.tsx +1 -1
  31. package/dist/components/base/Price/Double/index.dynamic.module.scss +172 -0
  32. package/dist/components/base/Price/Double/index.dynamic.tsx +1 -0
  33. package/dist/components/base/Price/Double/index.module.scss +6 -0
  34. package/dist/components/base/Price/Double/index.tsx +1 -1
  35. package/dist/components/debug/DebugLayout/index.module.scss +2 -2
  36. package/dist/config/env.ts +1 -1
  37. package/dist/interface/common.ts +1 -1
  38. package/dist/interface/component.ts +1 -1
  39. package/dist/interface/jumpEventReport.ts +1 -1
  40. package/dist/jumpEventReport/const.ts +1 -1
  41. package/dist/jumpEventReport/index.dynamic.ts +1 -0
  42. package/dist/jumpEventReport/index.h5.ts +1 -1
  43. package/dist/jumpEventReport/jdJumpJdApp.ts +1 -1
  44. package/dist/jumpEventReport/jumpUrlConfig/base.ts +1 -1
  45. package/dist/jumpEventReport/logEventConfig.ts +1 -1
  46. package/dist/jumpEventReport/web.base.ts +1 -1
  47. package/dist/jumpEventReport/web.jd.ts +1 -1
  48. package/dist/language/zh_CN.json +162 -0
  49. package/dist/open/api/index.ts +1 -1
  50. package/dist/open/api/shopMember.dynamic.ts +1 -0
  51. package/dist/open/api/shopMember.ts +1 -1
  52. package/dist/open/components/index.dynamic.ts +1 -0
  53. package/dist/open/components/index.ts +1 -1
  54. package/dist/sass/app.dynamic.scss +306 -0
  55. package/dist/service/fetchGateway.h5.ts +1 -0
  56. package/dist/service/fetchGateway.ts +1 -1
  57. package/dist/service/fetchGateway.weapp.ts +1 -1
  58. package/dist/service/fetchJsonp.h5.ts +1 -0
  59. package/dist/service/fetchJsonp.ts +1 -1
  60. package/dist/service/http/colorSign.dynamic.ts +1 -0
  61. package/dist/service/http/http.ts +1 -1
  62. package/dist/service/requestServer.h5.ts +1 -1
  63. package/dist/service/requestServer.ts +1 -1
  64. package/dist/service/requestServer.weapp.ts +1 -1
  65. package/dist/utils/connectNativeJsBridge.dynamic.ts +1 -0
  66. package/dist/utils/connectNativeJsBridge.ts +1 -1
  67. package/dist/utils/h5Utils.ts +1 -1
  68. package/dist/utils/index.h5.ts +1 -1
  69. package/dist/utils/index.ts +1 -1
  70. package/dist/utils/index.weapp.ts +1 -1
  71. package/dist/utils/intersectionObserver.ts +1 -1
  72. package/dist/utils/jumpExtMapUtil.ts +1 -0
  73. package/dist/utils/log.ts +1 -0
  74. package/dist/utils/utils.ts +1 -1
  75. package/dist/wxapp/common/address_api/address_api_v2.js +1 -0
  76. package/dist/wxapp/common/user_info.js +1 -1
  77. package/package.json +51 -31
  78. /package/dist/utils/{jumpExtMapUtil.js → jumpExtMapUtil.h5.ts} +0 -0
@@ -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
  rootEleInitWidth = 0,
444
444
  screenWidth = 0,
445
445
  screenHeight = 0,
446
446
  if (rootEleInitWidth > 0 && screenWidth > 0 && screenHeight > 0) {
447
447
  const isRootEleWidthEqScreenWidth = Math.abs(rootEleInitWidth - screenWidth) < 60;
448
448
  const getThisWinWidth = rootEleInitWidth;
449
449
  const getThisWinHeight = isRootEleWidthEqScreenWidth ? screenHeight : screenWidth;
450
450
  console.info(
451
451
  '通过rootEleInitWidth对比屏幕宽高确认横竖屏幕方式',
452
452
  'rootEleInitWidth',
453
453
  rootEleInitWidth,
454
454
  'screenWidth',
455
455
  screenWidth,
456
456
  'screenHeight',
457
457
  screenHeight,
458
458
  'isRootEleWidthEqScreenWidth(根元素宽度是否与屏幕本身宽度接近,主要是ios屏幕宽高不变)',
459
459
  isRootEleWidthEqScreenWidth,
460
460
  'getThisWinWidth',
461
461
  getThisWinWidth,
462
462
  'getThisWinHeight',
463
463
  getThisWinHeight,
464
464
  '是否是横屏',
465
465
  getThisWinWidth > getThisWinHeight,
466
466
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏,带有landscape为横屏',
467
467
  window.screen?.orientation?.type,
468
468
  );
469
469
  return getThisWinWidth > getThisWinHeight;
470
470
  } else {
471
471
  if (window.screen?.orientation?.type) {
472
472
  console.info(
473
473
  '通过window.screen?.orientation?.type方式获取当前pad屏幕是否是横屏',
474
474
  window.screen?.orientation?.type,
475
475
  '测试低版本通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
476
476
  window?.orientation,
477
477
  );
478
478
  return /landscape/i.test(window.screen.orientation.type);
479
479
  } else if (window?.orientation) {
480
480
  console.info(
481
481
  '通过window?.orientation方式获取当前pad屏幕是否是横屏,角度[90, -90]',
482
482
  window?.orientation,
483
483
  );
484
484
  return [90, -90].includes(window?.orientation);
485
485
  } else {
486
486
  console.info(
487
487
  '通过window.matchMedia((orientation: landscape))?.matches方式获取当前pad屏幕是否是横屏',
488
488
  window.matchMedia('(orientation: landscape)')?.matches,
489
489
  );
490
490
  return window.matchMedia('(orientation: landscape)')?.matches;
491
491
  }
492
492
  }
493
493
  try {
494
494
  return JSON.parse(decodeURIComponent(getUrlQuery('cookie')));
495
495
  } catch (e) {
496
496
  return {};
497
497
  }
498
498
  'harmony' === (userAgent.split(';')[1] || '').toLowerCase() || /arkweb/i.test(userAgent);
499
499
  window?.location?.hostname === 'pages.jd.com' && isJdAndHarmonyDevice;
500
500
  window.shopGlobalSwitch?.isH5AndJdShopViewH5ScrollVersion || '';
501
501
  !!document.getElementById('mallType') &&
502
502
  !!document.getElementById('pageInstance_id') &&
503
503
  !!document.getElementById('pageInstance_appId');
504
504
  isTjScence &&
505
505
  isWxMiniH5View &&
506
506
  (urlCookie['wxapp_type'] == '2' ||
507
507
  cookie.get('wxapp_type') == '2' ||
508
508
  parseQueryUrlObj['tjChannel'] === 'jxxcx');
509
509
  isTjScence && isWxMiniH5View && parseQueryUrlObj['sourceApp'] === 'haowujie';
510
510
  isTjScence &&
511
511
  (parseQueryUrlObj['appCode'] === 'ms27cba806' ||
512
512
  document.referrer?.match(/(?:https?:)?\/\/(?:kpl\.m|css|cs)\.jd\.com/i)?.length ||
513
513
  (parseQueryUrlObj['sourceApp'] == 'jsb-m' && parseQueryUrlObj['appCode'] === '') ||
514
514
  parseQueryUrlObj['tjChannel'] === 'tjm');
515
515
  if (isH5AdnJxMini) {
516
516
  return 'jxxcx';
517
517
  } else if (isTJApp) {
518
518
  return 'tjapp';
519
519
  } else if (isTjM) {
520
520
  return 'tjm';
521
521
  } else if (isTjJxM) {
522
522
  return 'jxh5';
523
523
  }
524
524
  return '';
525
525
  START: 'start',
526
526
  MOVE: 'move',
527
527
  END: 'end',
528
528
  x: 0,
529
529
  y: 0,
530
530
  const startX = startPos.x;
531
531
  const startY = startPos.y;
532
532
  const endX = touchEvent.clientX;
533
533
  const endY = touchEvent.clientY;
534
534
  const dy = startY - endY;
535
535
  const dx = endX - startX;
536
536
  let result = 0;
537
537
  if (Math.abs(dx) < 2 && Math.abs(dy) < 2) {
538
538
  return result;
539
539
  }
540
540
  const angle = (Math.atan2(dy, dx) * 180) / Math.PI;
541
541
  if (angle >= -45 && angle < 45) {
542
542
  result = 4;
543
543
  } else if (angle >= 45 && angle < 135) {
544
544
  result = 1;
545
545
  } else if (angle >= -135 && angle < -45) {
546
546
  result = 2;
547
547
  } else if ((angle >= 135 && angle <= 180) || (angle >= -180 && angle < -135)) {
548
548
  result = 3;
549
549
  }
550
550
  return result;
551
551
  e: Event,
552
552
  touchType = TouchType.START,
553
553
  stopTouchDocumentScrollState = false,
554
554
  if (isJdApp && e) {
555
555
  const touchEvent = e?.originalEvent?.targetTouches[0] || e?.targetTouches[0];
556
556
  let _touchState = touchType;
557
557
  let _getDirectionState = false;
558
558
  if (touchType === TouchType.START) {
559
559
  StopNativeScrollEventPos.x = touchEvent.clientX;
560
560
  StopNativeScrollEventPos.y = touchEvent.clientY;
561
561
  } else if (touchType === TouchType.MOVE) {
562
562
  _getDirectionState = [1, 2].includes(
563
563
  touchMoveGetSlideDirection(StopNativeScrollEventPos, touchEvent),
564
564
  );
565
565
  if (_getDirectionState) {
566
566
  _touchState = TouchType.END;
567
567
  }
568
568
  console.log(
569
569
  '对外提供阻止横滑方法,当前touchType为move,设定1、2向上或向下方向,当前计算后的滑动是否为纵向',
570
570
  _getDirectionState,
571
571
  );
572
572
  } else if (touchType === TouchType.END) {
573
573
  StopNativeScrollEventPos.x = 0;
574
574
  StopNativeScrollEventPos.y = 0;
575
575
  }
576
576
  isIosDevice
577
577
  ? iosDeviceStopNativeScrollEvent(e, _touchState, stopTouchDocumentScrollState)
578
578
  : androidDeviceStopNativeScrollEvent(_touchState, stopTouchDocumentScrollState);
579
579
  if (
580
580
  !isAppHomeForMarketPage &&
581
581
  stopTouchDocumentScrollState &&
582
582
  _touchState === TouchType.START
583
583
  ) {
584
584
  rootEleNode && rootEleNode.classList.add('over-hidden');
585
585
  }
586
586
  if (_touchState === TouchType.MOVE && _getDirectionState) {
587
587
  rootEleNode &&
588
588
  rootEleNode.classList.contains('over-hidden') &&
589
589
  rootEleNode.classList.remove('over-hidden');
590
590
  } else if (_touchState === TouchType.END) {
591
591
  setTimeout(
592
592
  () => {
593
593
  rootEleNode &&
594
594
  rootEleNode.classList.contains('over-hidden') &&
595
595
  rootEleNode.classList.remove('over-hidden');
596
596
  },
597
597
  isAppHomeForMarketPage || _getDirectionState ? 0 : 200,
598
598
  );
599
599
  }
600
600
  }
601
601
  touchType = TouchType.START,
602
602
  stopTouchDocumentScrollState = false,
603
603
  isJdApp &&
604
604
  touchType !== TouchType.MOVE &&
605
605
  isAndroidDevice &&
606
606
  window?.JdAndroid &&
607
607
  window?.JdAndroid?.requestEvent &&
608
608
  window.JdAndroid.requestEvent(touchType === TouchType.START);
609
609
  console.log(
610
610
  '对外提供阻止安卓横滑方法,true-禁止外部事件H5可滑动,false-外部拦截h5事件,当前touchType为',
611
611
  touchType,
612
612
  '当前非move触发requestEvent状态为',
613
613
  touchType === TouchType.START,
614
614
  '当前stopTouchDocumentScrollState为',
615
615
  stopTouchDocumentScrollState,
616
616
  );
617
617
  e,
618
618
  touchType = TouchType.START,
619
619
  stopTouchDocumentScrollState = false,
620
620
  e && e.stopPropagation();
621
621
  console.log(
622
622
  '对外提供阻止ios横滑方法,当前touchType为',
623
623
  touchType,
624
624
  '当前stopTouchDocumentScrollState为',
625
625
  stopTouchDocumentScrollState,
626
626
  );
627
627
  window?.webkit?.messageHandlers?.MobileNavi?.postMessage?.({
628
628
  method: 'callRouterModuleWithParams',
629
629
  params: {
630
630
  routerURL: 'router://JDShopModule/processShoph5SlideState',
631
631
  routerParam: {
632
632
  slideDirection: 'horizontal',
633
633
  state: touchType,
634
634
  },
635
635
  callBackId: new Date().getTime(),
636
636
  },
637
637
  });
638
638
  if (isH5AndJdShopView) {
639
639
  return CHANNEL_TYPE[currentChannel] || CHANNEL_TYPE[JDShopViewBusinessPathType.HOME];
640
640
  }
641
641
  return null;
642
642
  isH5 &&
643
643
  isJdApp &&
644
644
  [
645
645
  '/app/home',
646
646
  '/app/homeV2',
647
647
  '/app/classify',
648
648
  '/app/classifyV2',
649
649
  '/member/shopcard',
650
650
  '/favorite/home',
651
651
  ].includes(urlPathname);
652
652
  isH5 && isJdApp && !['/app/home', '/app/homeV2'].includes(urlPathname);
653
653
  ['/app/home', '/app/homeV2'].includes(urlPathname) &&
654
654
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_PROMOTION &&
655
655
  menuObj.tabActiveType != SECTION_HOME_TAB_TYPE.HOME_MEMBER;
656
656
  isAppHomePage && parseQueryUrlObj['source'] === 'app-marketing';
657
657
  isH5 &&
658
658
  isAppHomePage &&
659
659
  versionCompare(jdAppVersion?.full ? jdAppVersion.full : '', isH5AndJdShopViewH5ScrollVersion) >=
660
660
  0;
661
661
  return isJdApp ? versionCompare(nowVersion, compareVersion) : -2;
662
662
  getSgmReadyPromise()
663
663
  .then(() => {
664
664
  if (
665
665
  customObj.hasOwnProperty('code') &&
666
666
  customObj.code.indexOf(NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG) !== -1
667
667
  ) {
668
668
  const originCode = customObj.code.substring(
669
669
  NO_ENVIRONMENT_AND_PAGE_TYPE_FLAG.length,
670
670
  customObj.code.length,
671
671
  );
672
672
  customObj['code'] = getSgmCustomCode(handleSgmCodeTaroVersion(originCode));
673
673
  }
674
674
  const getCustomObj = {
675
675
  type: 1,
676
676
  code: 'all',
677
677
  cost1: 1,
678
678
  ...customObj,
679
679
  };
680
680
  try {
681
681
  window.__sgm__.custom(getCustomObj, '9HwAEg@fTtWBB3EnwA5VgLT');
682
682
  } catch (e) {
683
683
  console.log('当前sgm上报异常, 原始数据为', JSON.stringify(customObj));
684
684
  }
685
685
  })
686
686
  .catch(() => {
687
687
  console.error('当前页面sgm加载异常,无法进行异常上报, 原始数据为', JSON.stringify(customObj));
688
688
  });
689
689
  try {
690
690
  await getNewDraSdkReadyPromise();
691
691
  const draBurypointFlag = name ?? DraBuryPointFlags.BUSINESS;
692
692
  const commonObj = {
693
693
  shopId: `${global.info.queryInfo.shopId || ''}`,
694
694
  venderId: `${global.info.queryInfo.venderId || ''}`,
695
695
  taroRenderVersion: window?.taroRenderVersion,
696
696
  environmentType: getEnvironmentType(),
697
697
  pageType: getPageType(),
698
698
  };
699
699
  try {
700
700
  window.dra.sendCustomEvent(
701
701
  {
702
702
  name: draBurypointFlag,
703
703
  metrics: {
704
704
  timeStamp: Date.now(),
705
705
  ...customMetricsObj,
706
706
  },
707
707
  context: {
708
708
  ...commonObj,
709
709
  ...customContextObj,
710
710
  },
711
711
  },
712
712
  true,
713
713
  );
714
714
  } catch (e) {
715
715
  console.error(
716
716
  '当前新版烛龙sdk上报异常, 原始数据为',
717
717
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
718
718
  'e',
719
719
  e,
720
720
  );
721
721
  }
722
722
  } catch (e) {
723
723
  console.error(
724
724
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
725
725
  JSON.stringify({ ...customContextObj, ...customMetricsObj }),
726
726
  'e',
727
727
  e,
728
728
  );
729
729
  }
730
730
  try {
731
731
  await getNewDraSdkReadyPromise();
732
732
  const commonObj = {
733
733
  shopId: `${global.info.queryInfo.shopId || ''}`,
734
734
  venderId: `${global.info.queryInfo.venderId || ''}`,
735
735
  taroRenderVersion: window?.taroRenderVersion,
736
736
  environmentType: getEnvironmentType(),
737
737
  pageType: getPageType(),
738
738
  url: encodeURIComponent(window?.location?.href),
739
739
  };
740
740
  try {
741
741
  window.dra.sendCustomLogEvent(
742
742
  {
743
743
  level,
744
744
  content: logContent || "日志上报",
745
745
  extra: JSON.stringify(commonObj),
746
746
  timeStamp: Date.now()
747
747
  },
748
748
  );
749
749
  } catch (e) {
750
750
  console.error(
751
751
  '日志等级',
752
752
  level,
753
753
  '当前新版烛龙sdk上报异常, 原始数据为',
754
754
  logContent,
755
755
  'e',
756
756
  e,
757
757
  );
758
758
  }
759
759
  } catch (e2) {
760
760
  console.error(
761
761
  '日志等级',
762
762
  level,
763
763
  '当前新版烛龙sdk上报异常, 原始数据为',
764
764
  logContent,
765
765
  'e',
766
766
  e2,
767
767
  );
768
768
  }
769
769
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.REMOTE);
770
770
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.INTERFACE);
771
771
  draCustomReport(customContextObj, customMetricsObj, DraBuryPointFlags.BUSINESS);
772
772
  const deviceRatio = window?.devicePixelRatio ?? 2;
773
773
  if (isJdAndAndroidDevice && typeof displayObj === 'object') {
774
774
  Object.keys(displayObj).forEach((key) => {
775
775
  if (key === 'nativeHeaderHeight') {
776
776
  displayObj[key] = Math.ceil(displayObj[key] / (deviceRatio * deviceRatio) - 2);
777
777
  } else {
778
778
  displayObj[key] = Math.ceil(displayObj[key] / deviceRatio);
779
779
  }
780
780
  });
781
781
  } else if (isJdAndHarmonyDevice && isNewHarmonyShop && typeof displayObj === 'object') {
782
782
  if (displayObj['bottomBarHeight'] && typeof displayObj['bottomBarHeight'] === 'number') {
783
783
  displayObj['bottomBarHeight'] = Math.ceil(displayObj['bottomBarHeight'] / deviceRatio);
784
784
  }
785
785
  }
786
786
  return displayObj;
787
787
  isJdAndAndroidDevice && /TBS\/\d+/.test(window?.navigator?.userAgent);
788
788
  rootEleNode &&
789
789
  !rootEleNode.classList.contains('d-shop-lang-for-en') &&
790
790
  rootEleNode.classList.add('d-shop-lang-for-en');
791
791
  rootEleNode &&
792
792
  !rootEleNode.classList.contains('d-shop-lang-for-hk') &&
793
793
  rootEleNode.classList.add('d-shop-lang-for-hk');
794
794
  customContextObj = {},
795
795
  customMetricsObj = {},
796
796
  name?,
797
797
  try {
798
798
  const draBurypointFlag = name ?? DraBuryPointFlags.DECOSDM;
799
799
  try {
800
800
  let dra = null;
801
801
  const iframe = window?.top?.document?.getElementsByTagName('iframe')[0];
802
802
  if (iframe && iframe.contentWindow) {
803
803
  dra = iframe.contentWindow?.dra;
804
804
  }
805
805
  if (window.dra) {
806
806
  dra = window.dra;
807
807
  }
808
808
  dra &&
809
809
  dra.sendCustomEvent(
810
810
  {
811
811
  name: draBurypointFlag,
812
812
  metrics: {
813
813
  timeStamp: Date.now(),
814
814
  },
815
815
  context: {
816
816
  ...customContextObj,
817
817
  },
818
818
  },
819
819
  true,
820
820
  );
821
821
  } catch (e) {
822
822
  console.error(
823
823
  '当前新版烛龙sdk上报异常, 原始数据为',
824
824
  JSON.stringify({ ...customContextObj }),
825
825
  'e',
826
826
  e,
827
827
  );
828
828
  }
829
829
  } catch (e) {
830
830
  console.error(
831
831
  '当前页面新版烛龙sdk加载异常,无法进行异常上报, 原始数据为',
832
832
  JSON.stringify({ ...customContextObj }),
833
833
  'e',
834
834
  e,
835
835
  );
836
836
  }