@shijiu/jsview-vue 0.9.684 → 0.9.783

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 (154) hide show
  1. package/dom/bin/jsview-browser-debug-dom.min.js +1 -1
  2. package/dom/bin/jsview-dom.min.js +1 -1
  3. package/dom/bin/jsview-engine-js-browser.min.js +1 -1
  4. package/dom/bin/jsview-forge-define.min.js +1 -1
  5. package/dom/jsv-engine-js-browser.js +6 -0
  6. package/dom/target_core_revision.js +4 -4
  7. package/loader/loader.js +4 -0
  8. package/package.json +1 -1
  9. package/patches/node_modules/@vue/cli-service/lib/config/base.js +1 -1
  10. package/samples/AnimPicture/App.vue +5 -5
  11. package/samples/Basic/components/div/DivLayout.vue +1 -1
  12. package/samples/Basic/components/img/ImageGroup.vue +2 -2
  13. package/samples/Basic/components/img/ImgLayout.vue +79 -15
  14. package/samples/Basic/components/text/TextDirection.vue +104 -0
  15. package/samples/Basic/components/text/TextEmoji.vue +1 -1
  16. package/samples/Basic/components/text/TextGroup1.vue +1 -1
  17. package/samples/Basic/components/text/TextGroup2.vue +11 -1
  18. package/samples/BasicFocusControl/components/BaseBlock.vue +2 -2
  19. package/samples/Collision/App.vue +11 -11
  20. package/samples/DemoHomepage/App.vue +67 -8
  21. package/samples/DemoHomepage/components/TabFrame.vue +7 -0
  22. package/samples/DemoHomepage/router.js +27 -26
  23. package/samples/DemoHomepage/views/Homepage.vue +89 -98
  24. package/samples/FilterDemo/App.vue +1 -1
  25. package/samples/FlipCard/App.vue +2 -2
  26. package/samples/FlipCard/FlipCard.vue +3 -3
  27. package/samples/FocusBlockDemos/AutoFocus/App.vue +51 -0
  28. package/samples/FocusBlockDemos/AutoFocus/BaseBlock.vue +82 -0
  29. package/samples/FocusBlockDemos/AutoFocus/DialogBlock.vue +89 -0
  30. package/samples/FocusBlockDemos/AutoFocus/DialogContorls.js +42 -0
  31. package/samples/FocusBlockDemos/AutoFocus/FocusNamesDefine.js +9 -0
  32. package/samples/FocusBlockDemos/AutoFocus/PlaneBlock.vue +71 -0
  33. package/samples/FocusBlockDemos/ProgressiveFocusControl/App.vue +78 -0
  34. package/samples/FocusBlockDemos/ProgressiveFocusControl/BaseBlock.vue +77 -0
  35. package/samples/FocusBlockDemos/ProgressiveFocusControl/DownPlaneBlock.vue +83 -0
  36. package/samples/FocusBlockDemos/ProgressiveFocusControl/FocusNamesDefine.js +12 -0
  37. package/samples/FocusBlockDemos/ProgressiveFocusControl/UpPlaneBlock.vue +83 -0
  38. package/samples/GridDemo/App.vue +3 -3
  39. package/samples/GridDemo/ButtonBlock.vue +2 -2
  40. package/samples/GridDemo/FocusItem.vue +2 -2
  41. package/samples/GridDemo/Item.vue +1 -1
  42. package/samples/HashHistory/App.vue +10 -3
  43. package/samples/HashHistory/components/Item.vue +1 -1
  44. package/samples/ImpactStop/App.vue +15 -11
  45. package/samples/Input/InputPanel.vue +1 -1
  46. package/samples/LongImage/Button.vue +1 -1
  47. package/samples/LongImage/ButtonItem.vue +1 -1
  48. package/samples/LongImage/LongImageScroll.vue +2 -2
  49. package/samples/LongText/App.vue +1 -1
  50. package/samples/LongText/Button.vue +1 -1
  51. package/samples/LongText/ButtonItem.vue +1 -1
  52. package/samples/LongText/LongTextScroll.vue +3 -3
  53. package/samples/Marquee/App.vue +34 -3
  54. package/samples/Marquee/longText.js +2 -2
  55. package/samples/MetroWidgetDemos/PerformanceTest/App.vue +4 -4
  56. package/samples/MetroWidgetDemos/PerformanceTest/components/ContentItem.vue +1 -1
  57. package/samples/MetroWidgetDemos/PerformanceTest/components/MyTab.vue +3 -3
  58. package/samples/MetroWidgetDemos/PingPong/App.vue +22 -11
  59. package/samples/MetroWidgetDemos/PingPong/AppPage.vue +5 -5
  60. package/samples/MetroWidgetDemos/{Item.vue → PingPong/Item.vue} +3 -21
  61. package/samples/MetroWidgetDemos/PingPong/TabItem.vue +1 -1
  62. package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +5 -5
  63. package/samples/MetroWidgetDemos/{WidgetItem.vue → PingPong/WidgetItem.vue} +8 -4
  64. package/samples/MetroWidgetDemos/basic/App.vue +162 -0
  65. package/samples/MetroWidgetDemos/basic/Item.vue +43 -0
  66. package/samples/MetroWidgetDemos/direction/App.vue +158 -0
  67. package/samples/MetroWidgetDemos/direction/Item.vue +45 -0
  68. package/samples/MetroWidgetDemos/focusableItemBasic/App.vue +67 -0
  69. package/samples/MetroWidgetDemos/{Advanced → focusableItemBasic}/ButtonItem.vue +17 -21
  70. package/samples/MetroWidgetDemos/focusableItemMetroWidget/App.vue +74 -0
  71. package/samples/MetroWidgetDemos/{Advanced/widgets → focusableItemMetroWidget}/Item.vue +13 -32
  72. package/samples/MetroWidgetDemos/{Advanced/widgets → focusableItemMetroWidget}/WidgetItem.vue +12 -12
  73. package/samples/MetroWidgetDemos/focusableItemMix/App.vue +88 -0
  74. package/samples/MetroWidgetDemos/focusableItemMix/ButtonItem.vue +86 -0
  75. package/samples/MetroWidgetDemos/focusableItemMix/Item.vue +43 -0
  76. package/samples/MetroWidgetDemos/index.js +6 -0
  77. package/samples/MetroWidgetDemos/layoutType/App.vue +180 -0
  78. package/samples/MetroWidgetDemos/layoutType/Item.vue +45 -0
  79. package/samples/MetroWidgetDemos/padding/App.vue +222 -0
  80. package/samples/MetroWidgetDemos/padding/Item.vue +64 -0
  81. package/samples/MetroWidgetDemos/routeList.js +64 -0
  82. package/samples/MetroWidgetDemos/slideSetting/App.vue +225 -0
  83. package/samples/MetroWidgetDemos/slideSetting/Item.vue +45 -0
  84. package/samples/NinePatchDemo/App.vue +78 -122
  85. package/samples/NinePatchDemo/Item.vue +29 -27
  86. package/samples/Preload/App.vue +1 -1
  87. package/samples/Preload/Item.vue +1 -1
  88. package/samples/QrcodeDemo/App.vue +1 -1
  89. package/samples/SoundPool/App.vue +3 -3
  90. package/samples/SpriteImage/App.vue +5 -0
  91. package/samples/Swiper/App.vue +148 -0
  92. package/samples/TextBox/App.vue +2 -1
  93. package/samples/TextureAnimation/App2.vue +1 -1
  94. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +33 -47
  95. package/samples/TouchSample/MetroWidgetHorizontal.vue +1 -1
  96. package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
  97. package/samples/TransitPage/App.vue +1 -1
  98. package/samples/VideoDemo/App.vue +8 -8
  99. package/samples/VideoDemo/components/Button.vue +1 -1
  100. package/samples/VideoDemo/components/Controllor.vue +1 -1
  101. package/samples/VisibleSensorDemo/App.vue +3 -3
  102. package/scripts/jsview-run-android.js +5 -4
  103. package/utils/JsViewEngineWidget/JsvFocusBlock.vue +4 -4
  104. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +79 -50
  105. package/utils/JsViewEngineWidget/TemplateParser.js +144 -147
  106. package/utils/JsViewEngineWidget/WidgetCommon.js +12 -3
  107. package/utils/JsViewPlugin/BrowserPluginLoader.js +4 -2
  108. package/utils/JsViewPlugin/JsvAudio/AudioProxy.js +302 -0
  109. package/utils/JsViewPlugin/JsvAudio/CheckType.js +68 -0
  110. package/utils/JsViewPlugin/JsvAudio/Events.js +17 -0
  111. package/utils/JsViewPlugin/JsvAudio/JsvAudio.vue +176 -0
  112. package/utils/JsViewPlugin/JsvAudio/JsvAudioBridgeProxy.js +40 -0
  113. package/utils/JsViewPlugin/JsvAudio/JsvAudioBrowser.vue +46 -0
  114. package/utils/JsViewPlugin/JsvAudio/PluginLoader.js +140 -0
  115. package/utils/JsViewPlugin/JsvAudio/index.js +26 -0
  116. package/utils/JsViewPlugin/JsvAudio/version.js +24 -0
  117. package/utils/JsViewPlugin/JsvPlayer/index.js +1 -1
  118. package/utils/JsViewPlugin/JsvPlayer/version.js +5 -5
  119. package/utils/JsViewVueTools/JsvHashHistory.js +34 -8
  120. package/utils/JsViewVueTools/JsvImpactTracer.js +2 -2
  121. package/utils/JsViewVueTools/JsvRuntimeBridge.js +46 -8
  122. package/utils/JsViewVueTools/JsvStyleClass.js +9 -0
  123. package/utils/{JsViewVueWidget/utils/text.js → JsViewVueTools/JsvTextTools.js} +24 -4
  124. package/utils/JsViewVueTools/TypeCheckAndSet.js +3 -3
  125. package/utils/JsViewVueTools/index.js +2 -1
  126. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserTextureAnim.vue +5 -7
  127. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +20 -22
  128. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +4 -4
  129. package/utils/JsViewVueWidget/JsvGrid.vue +1 -9
  130. package/utils/JsViewVueWidget/JsvInput/Cursor.vue +1 -1
  131. package/utils/JsViewVueWidget/JsvMarquee.vue +91 -20
  132. package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +1 -1
  133. package/utils/JsViewVueWidget/JsvNinePatch.vue +63 -53
  134. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +10 -5
  135. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +2 -2
  136. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +116 -80
  137. package/utils/JsViewVueWidget/JsvSwiper/index.js +3 -2
  138. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +1 -1
  139. package/utils/JsViewVueWidget/JsvTextBox.vue +11 -31
  140. package/utils/JsViewVueWidget/JsvTouchContainer.vue +2 -2
  141. package/utils/JsViewVueWidget/JsvTransparentDiv.vue +1 -1
  142. package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +5 -5
  143. package/utils/JsViewVueWidget/index.js +8 -8
  144. package/samples/MetroWidgetDemos/Advanced/App.vue +0 -46
  145. package/samples/MetroWidgetDemos/Advanced/Buttons.vue +0 -70
  146. package/samples/MetroWidgetDemos/Advanced/Mixed.vue +0 -77
  147. package/samples/MetroWidgetDemos/Advanced/widgets/Widgets.vue +0 -116
  148. package/samples/MetroWidgetDemos/Advanced/widgets/focus1.png +0 -0
  149. package/samples/MetroWidgetDemos/Simple/AbsoluteTemplate.vue +0 -75
  150. package/samples/MetroWidgetDemos/Simple/App.vue +0 -45
  151. package/samples/MetroWidgetDemos/Simple/RelativeTemplate.vue +0 -111
  152. package/samples/MetroWidgetDemos/data.js +0 -205
  153. package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +0 -35
  154. package/utils/JsViewVueWidget/utils/index.js +0 -8
@@ -1,8 +1,8 @@
1
1
  <!--
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2021-09-22 16:08:58
4
- * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-11-07 15:51:14
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2023-03-09 11:17:00
6
6
  * @Description: file content
7
7
  -->
8
8
 
@@ -23,14 +23,20 @@
23
23
  * name {string} 用于设置焦点的名称
24
24
  * padding {object} 控件内边距, 默认为{left: 0, right: 0, top: 0, bottom: 0}
25
25
  * direction {enum} (必选)控件方向 HORIZONTAL/VERTICAL
26
- * loopFocus {boolean} 焦点到边界后自动转到下一行,默认false
26
+ * focusMoveType {int} 焦点移动的模式, 可通过 | 运算进行组合
27
+ NO_ADJUST: 无特殊处理
28
+ COLUMN_LOOP: 到达列首/尾后跳转到上/下一列, 只在水平滚动时生效
29
+ ROW_LOOP: 到达行首/尾后跳转到上/下一行, 只在竖直滚动时生效
30
+ COLUMN_FIND_NEAR: 一列中没有下一个元素时是否跳转到相邻列
31
+ ROW_FIND_NEAR: 一行中没有下一个元素时是否跳转到相邻行
32
+
27
33
  * initFocusId {int} 初始焦点,默认为0
28
34
  * slideSetting {SlideSetting} 页面滑动的设置, 目前SlideSetting有三个子类, 具体见 WidgetCommon 中的说明
29
35
  WholePageSlide
30
36
  @description 整页滚动的设置类
31
37
  @constructor {Object} {speed, easing, boundProtect}
32
38
  SeamlessSlide
33
- @description 平滑滚动的设置类
39
+ @description 无缝滚动的设置类
34
40
  @constructor {Object} {startPercent, endPercent, speed, easing, boundProtect}
35
41
  FixPositionSlide
36
42
  @description 固定位置滚动的设置类
@@ -80,6 +86,7 @@
80
86
  * loadAll {boolean} 加载不显示的view,触控场景使用
81
87
  * flingPageWidth {}
82
88
  * flingPageEdge {}
89
+ * disableClip {boolean} 取消显示范围的clipView
83
90
  * methods:
84
91
  getFocusBlockRef 获取此MetroWidget的 jsv-focus-block句柄,可以使用requestFocus完成获焦
85
92
 
@@ -364,7 +371,7 @@ const props = defineProps({
364
371
  slideSetting: {
365
372
  type: SlideSetting,
366
373
  default() {
367
- return new SeamlessSlide(0.2, 0.8);
374
+ return new SeamlessSlide({ startPercent: 0.2, endPercent: 0.8 });
368
375
  },
369
376
  },
370
377
  layoutType: {
@@ -397,6 +404,14 @@ const props = defineProps({
397
404
  onScroll: {
398
405
  type: Function,
399
406
  },
407
+ focusMoveType: {
408
+ type: Number,
409
+ default: 0,
410
+ },
411
+ disableClip: {
412
+ type: Boolean,
413
+ default: false,
414
+ },
400
415
  });
401
416
 
402
417
  let dataUpdateToken = ref(0);
@@ -423,7 +438,7 @@ let itemRender = ref(!props.enableItemRenderBreak);
423
438
  let permanentItemList = [];
424
439
  let preUpdateVisibleStart = 0;
425
440
  let mounted = false;
426
- let focusNode = ref(null);
441
+ let focusNode = shallowRef(null);
427
442
  let pageRange = vertical ? props.height : props.width;
428
443
 
429
444
  let slideLock = false;
@@ -464,8 +479,8 @@ let visibleInfo = {
464
479
  },
465
480
  };
466
481
 
467
- let locateDiv = ref(null);
468
- let slideDiv = ref(null);
482
+ let locateDiv = shallowRef(null);
483
+ let slideDiv = shallowRef(null);
469
484
  let renderData = shallowRef([]);
470
485
  let slideDivLeft = ref(0);
471
486
  let slideDivTop = ref(0);
@@ -483,7 +498,7 @@ const _onFocusChange = (id) => {
483
498
  const _getCurrentId = () => {
484
499
  return {
485
500
  id: focusId,
486
- index: templateParser.FocusIdToIndex(focusId),
501
+ index: templateParser.IdToIndex(focusId),
487
502
  };
488
503
  };
489
504
 
@@ -533,24 +548,26 @@ const _dispatchEvent = (event) => {
533
548
  };
534
549
 
535
550
  const onItemClick = (index) => {
536
- if (isFocus && innerData[index].callbacks.callable("onClick")) {
551
+ if (isFocus && innerData[index]?.callbacks.callable("onClick")) {
537
552
  innerData[index].callbacks.onClick();
538
553
  }
539
554
  };
540
555
 
541
556
  const onItemBlur = (index) => {
542
- if (isFocus && innerData[index].callbacks.callable("onBlur")) {
557
+ if (isFocus && innerData[index]?.callbacks.callable("onBlur")) {
543
558
  innerData[index].callbacks.onBlur();
544
559
  }
545
560
  };
546
561
 
547
562
  const onItemFocus = (index, rect) => {
548
563
  if (isFocus) {
549
- _itemOnFocusSideEffect(innerData[index], rect);
550
- if (innerData[index].callbacks.callable("onFocus")) {
551
- innerData[index].callbacks.onFocus(rect);
552
- } else {
553
- callFocusAfterUpdate = true;
564
+ if (innerData[index]) {
565
+ _itemOnFocusSideEffect(innerData[index], rect);
566
+ if (innerData[index].callbacks.callable("onFocus")) {
567
+ innerData[index].callbacks.onFocus(rect);
568
+ } else {
569
+ callFocusAfterUpdate = true;
570
+ }
554
571
  }
555
572
  }
556
573
  };
@@ -563,7 +580,7 @@ const setFocusId = (id, needSlide = true, doAnim = false, extraSetting) => {
563
580
  let next_focus_item = templateParser.GetItemById(id);
564
581
  if (next_focus_item) {
565
582
  if (needSlide) {
566
- slideToItem(templateParser.FocusIdToIndex(id), doAnim);
583
+ slideToItem(templateParser.IdToIndex(id), doAnim);
567
584
  }
568
585
  let unlock = null;
569
586
  if (extraSetting) {
@@ -589,8 +606,8 @@ const setFocusId = (id, needSlide = true, doAnim = false, extraSetting) => {
589
606
  };
590
607
  _updateBlurItem();
591
608
  _updateFocusItem();
592
- onItemBlur(templateParser.FocusIdToIndex(preFocusId));
593
- onItemFocus(templateParser.FocusIdToIndex(focusId), preEdgeRect);
609
+ onItemBlur(templateParser.IdToIndex(preFocusId));
610
+ onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
594
611
  unlock?.();
595
612
  }
596
613
  };
@@ -797,7 +814,7 @@ const refreshData = (force_update) => {
797
814
  dataUpdateToken.value++;
798
815
  pageUpdater.apply();
799
816
  _updateFocusItem();
800
- onItemFocus(templateParser.FocusIdToIndex(focusId), null);
817
+ onItemFocus(templateParser.IdToIndex(focusId), null);
801
818
  if (needSlide) {
802
819
  _slideTo(visibleInfo.start, null);
803
820
  } else if (need_update_content) {
@@ -1053,7 +1070,7 @@ const onKeyDown = (ev) => {
1053
1070
  _moveToNext(horizontal_direction, vertical_direction);
1054
1071
  break;
1055
1072
  case 13:
1056
- onItemClick(templateParser.FocusIdToIndex(focusId));
1073
+ onItemClick(templateParser.IdToIndex(focusId));
1057
1074
  break;
1058
1075
  default:
1059
1076
  //只接受上下左右确定键
@@ -1093,7 +1110,7 @@ const _onTemplateAdd = (item) => {
1093
1110
  this.slotMounted.value = true;
1094
1111
  if (callFocusAfterUpdate && this.data.id === focusId) {
1095
1112
  nextTick(() => {
1096
- onItemFocus(templateParser.FocusIdToIndex(focusId), preEdgeRect);
1113
+ onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
1097
1114
  });
1098
1115
  callFocusAfterUpdate = false;
1099
1116
  }
@@ -1198,7 +1215,9 @@ const _onCustomerEvent = (ev) => {
1198
1215
  yPos: item_layout.top,
1199
1216
  width: item_layout.width,
1200
1217
  height: item_layout.height,
1201
- index: templateParser.FocusIdToIndex(focusId),
1218
+ centerYPos: Math.floor(item_layout.top + item_layout.height / 2),
1219
+ centerXPos: Math.floor(item_layout.left + item_layout.width / 2),
1220
+ index: templateParser.IdToIndex(focusId),
1202
1221
  };
1203
1222
 
1204
1223
  let cur_slide = _calculateVisibleStart(obj, direction);
@@ -1244,15 +1263,14 @@ const _moveToNext = (
1244
1263
  item_edge_rect
1245
1264
  ) => {
1246
1265
  let cur_focus_item = templateParser.GetItemById(focusId);
1247
- let next_item_id = templateParser.GetNextItem(
1266
+ let next_focus_item = templateParser.GetNextItem(
1248
1267
  focusId,
1249
1268
  vertical_direction,
1250
1269
  horizontal_direction,
1251
- props.loopFocus
1270
+ props.focusMoveType
1252
1271
  );
1253
- if (next_item_id >= 0) {
1272
+ if (next_focus_item !== null) {
1254
1273
  preFocusId = focusId;
1255
- let next_focus_item = templateParser.GetItemById(next_item_id);
1256
1274
  templateItemAdder.tryAddItem(next_focus_item, 1);
1257
1275
  focusId = next_focus_item.id;
1258
1276
 
@@ -1261,8 +1279,7 @@ const _moveToNext = (
1261
1279
 
1262
1280
  let cur_visible_start = _calculateVisibleStart(next_focus_item, direction);
1263
1281
  if (
1264
- !innerData[templateParser.FocusIdToIndex(next_item_id)].itemConfig
1265
- ?.takeOverSlide &&
1282
+ !innerData[templateParser.IdToIndex(focusId)].itemConfig?.takeOverSlide &&
1266
1283
  visibleInfo.start !== cur_visible_start
1267
1284
  ) {
1268
1285
  if (next_focus_item.doSlide) {
@@ -1284,7 +1301,7 @@ const _moveToNext = (
1284
1301
  1,
1285
1302
  visibleInfo.endWithPadding + props.keepTraceRange * pageRange
1286
1303
  ),
1287
- next_item_id,
1304
+ next_focus_item.id,
1288
1305
  false,
1289
1306
  permanentItemList
1290
1307
  );
@@ -1294,7 +1311,7 @@ const _moveToNext = (
1294
1311
  templateParser,
1295
1312
  cur_visible_start,
1296
1313
  cur_visible_start + visibleInfo.range + visibleInfo.padding.end - 1,
1297
- next_item_id,
1314
+ next_focus_item.id,
1298
1315
  false,
1299
1316
  permanentItemList
1300
1317
  );
@@ -1305,7 +1322,7 @@ const _moveToNext = (
1305
1322
  let rect;
1306
1323
  let x_off_set = cur_focus_item.xPos - next_focus_item.xPos;
1307
1324
  let y_off_set = cur_focus_item.yPos - next_focus_item.yPos;
1308
- if (item_edge_rect) {
1325
+ if (item_edge_rect && item_edge_rect.rect) {
1309
1326
  item_edge_rect.rect.x += x_off_set;
1310
1327
  item_edge_rect.rect.y += y_off_set;
1311
1328
  rect = item_edge_rect;
@@ -1333,8 +1350,8 @@ const _moveToNext = (
1333
1350
  preEdgeRect = rect;
1334
1351
  _updateBlurItem();
1335
1352
  _updateFocusItem();
1336
- onItemBlur(templateParser.FocusIdToIndex(preFocusId));
1337
- onItemFocus(templateParser.FocusIdToIndex(focusId), preEdgeRect);
1353
+ onItemBlur(templateParser.IdToIndex(preFocusId));
1354
+ onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
1338
1355
  } else {
1339
1356
  let x_off_set = props.direction === VERTICAL ? 0 : visibleInfo.start;
1340
1357
  let y_off_set = props.direction === VERTICAL ? visibleInfo.start : 0;
@@ -1358,7 +1375,7 @@ const _moveToNext = (
1358
1375
  height: cur_focus_item.height,
1359
1376
  };
1360
1377
  props.onEdge?.({ direction: edge, rect: rect });
1361
- innerData[templateParser.FocusIdToIndex(focusId)].callbacks.onWidgetEdge?.({
1378
+ innerData[templateParser.IdToIndex(focusId)].callbacks.onWidgetEdge?.({
1362
1379
  direction: edge,
1363
1380
  });
1364
1381
  }
@@ -1384,9 +1401,17 @@ const _calculateVisibleStart = (target_item, direction) => {
1384
1401
  );
1385
1402
  break;
1386
1403
  case SlideSetting.Type.WHOLE_PAGE:
1387
- new_visible_start = templateParser.GetItem(target_item.pageHeadIndex)[
1388
- pos_key
1389
- ];
1404
+ if (typeof target_item.pageHeadIndex == "undefined") {
1405
+ //TODO 子控制滚动时whole page滚动
1406
+ console.error(
1407
+ "child controlled whole page slide type is not supported."
1408
+ );
1409
+ } else {
1410
+ new_visible_start = templateParser.GetItem(target_item.pageHeadIndex)[
1411
+ pos_key
1412
+ ];
1413
+ }
1414
+
1390
1415
  break;
1391
1416
  case SlideSetting.Type.SEAMLESS:
1392
1417
  if (
@@ -1528,12 +1553,13 @@ const _onFocus = (params) => {
1528
1553
  focus_id = _ifValidEnterRect(enterFocusRect)
1529
1554
  ? _calculateNearestItemByRect(pageUpdater.getRange(), enterFocusRect)
1530
1555
  : focus_id;
1556
+
1531
1557
  preEdgeRect = enterFocusRect;
1532
1558
  focusId = focus_id;
1533
1559
  enterFocusId = -1;
1534
1560
  enterFocusRect = null;
1535
1561
  _updateFocusItem();
1536
- onItemFocus(templateParser.FocusIdToIndex(focusId), preEdgeRect);
1562
+ onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
1537
1563
  props.onFocus?.();
1538
1564
  };
1539
1565
 
@@ -1547,7 +1573,7 @@ const _onBlur = () => {
1547
1573
  }
1548
1574
  preFocusId = focusId;
1549
1575
  _updateBlurItem();
1550
- innerData[templateParser.FocusIdToIndex(preFocusId)].callbacks.onBlur();
1576
+ innerData[templateParser.IdToIndex(preFocusId)].callbacks.onBlur();
1551
1577
 
1552
1578
  props.onBlur?.();
1553
1579
  };
@@ -1560,11 +1586,11 @@ const _onSlideEnd = (event) => {
1560
1586
  };
1561
1587
 
1562
1588
  const _updateFocusItem = () => {
1563
- _setZIndex(templateParser.FocusIdToIndex(focusId), innerData.length, true);
1589
+ _setZIndex(templateParser.IdToIndex(focusId), innerData.length, true);
1564
1590
  };
1565
1591
 
1566
1592
  const _updateBlurItem = () => {
1567
- _setZIndex(templateParser.FocusIdToIndex(preFocusId), 0, false);
1593
+ _setZIndex(templateParser.IdToIndex(preFocusId), 0, false);
1568
1594
  };
1569
1595
 
1570
1596
  const _updateFocusByDragInfo = (viewX, viewY) => {
@@ -1712,8 +1738,8 @@ const _onScroll = () => {
1712
1738
  const _updatePosition = (x, y, anim_info) => {
1713
1739
  if (slideLock) return;
1714
1740
  if (toRaw(slideDiv.value)) {
1715
- let pre_left = toRaw(slideDiv.value).style.left,
1716
- pre_top = toRaw(slideDiv.value).style.top;
1741
+ let pre_left = slideDivLeft.value,
1742
+ pre_top = slideDivTop.value;
1717
1743
  //jsvMaskView的位置更新时会被设置位0,因此不能通过ResetLayoutParams设置位置
1718
1744
  slideDivLeft.value = x;
1719
1745
  slideDivTop.value = y;
@@ -1734,7 +1760,9 @@ const _updatePosition = (x, y, anim_info) => {
1734
1760
  slide_animation.SetAnimationListener(
1735
1761
  new Forge.AnimationListener(anim_info.onstart, anim_info.onend, null)
1736
1762
  );
1737
- toRaw(slideDiv.value).jsvMaskView.StartAnimation(slide_animation);
1763
+ toRaw(slideDiv.value)
1764
+ .jsvGetProxyView(true)
1765
+ .StartAnimation(slide_animation);
1738
1766
  }
1739
1767
  _onScroll();
1740
1768
  }
@@ -1742,7 +1770,7 @@ const _updatePosition = (x, y, anim_info) => {
1742
1770
 
1743
1771
  const _initRootTouch = () => {
1744
1772
  if (props.enableTouch && toRaw(slideDiv.value)) {
1745
- let view = toRaw(slideDiv.value).jsvMaskView;
1773
+ let view = toRaw(slideDiv.value).jsvGetProxyView(true);
1746
1774
  var drag_setting = new Forge.DragSetting(
1747
1775
  dragDirection,
1748
1776
  20,
@@ -1759,7 +1787,7 @@ const _initItemViewTouch = (itemDivRef, index) => {
1759
1787
  if (props.enableTouch) {
1760
1788
  if (itemDivRef) {
1761
1789
  // 为view添加触控处理
1762
- let view = itemDivRef.jsvMaskView;
1790
+ let view = itemDivRef.jsvGetProxyView(true);
1763
1791
  let dragSetting = new Forge.DragSetting(
1764
1792
  Forge.DragSetting.DIRECTION_DISABLE,
1765
1793
  20,
@@ -1808,6 +1836,7 @@ templateParser = _getTemplateParser(
1808
1836
  props.supportHistoryPath,
1809
1837
  props.layoutType
1810
1838
  );
1839
+
1811
1840
  templateItemAdder = new TemplateItemAdder(
1812
1841
  templateParser,
1813
1842
  dataList,
@@ -1846,7 +1875,7 @@ slidePile = new Forge.RectArea(
1846
1875
  let init_focus_id = 0;
1847
1876
  let cur_visible_start = 0;
1848
1877
 
1849
- if (typeof props.initFocusId == 'number') {
1878
+ if (typeof props.initFocusId == "number") {
1850
1879
  templateItemAdder.tryAddItemById(props.initFocusId);
1851
1880
  const item = templateParser.GetItemById(props.initFocusId);
1852
1881
  if (item) {
@@ -1884,7 +1913,7 @@ onMounted(() => {
1884
1913
  _slideTo(visibleInfo.start, null);
1885
1914
  }
1886
1915
 
1887
- onItemFocus(templateParser.FocusIdToIndex(focusId), preEdgeRect);
1916
+ onItemFocus(templateParser.IdToIndex(focusId), preEdgeRect);
1888
1917
 
1889
1918
  if (props.enableItemRenderBreak) {
1890
1919
  nextTick(() => {
@@ -1918,7 +1947,7 @@ defineExpose(exportObject);
1918
1947
  top: top,
1919
1948
  width: width,
1920
1949
  height: height,
1921
- overflow: 'hidden',
1950
+ overflow: disableClip ? null : 'hidden',
1922
1951
  }"
1923
1952
  >
1924
1953
  <div :style="{ left: innerPadding.left, top: innerPadding.top }">