@shijiu/jsview-vue 2.1.482-test.0 → 2.2.35

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 (192) hide show
  1. package/bin/browser/BrowserTextureAnim.vue.mjs +8 -1
  2. package/bin/jsview-vue.mjs +274 -119
  3. package/bin/types/JsViewEngineWidget/CheckType.d.ts +3 -0
  4. package/bin/types/JsViewEngineWidget/JsvFocus/JsvFocusBlock.vue.d.ts +102 -0
  5. package/bin/types/JsViewEngineWidget/JsvFocus/JsvFocusHub.d.ts +88 -0
  6. package/bin/types/JsViewEngineWidget/JsvFocus/JsvFocusManager.d.ts +10 -0
  7. package/bin/types/JsViewEngineWidget/MetroWidget/Const.d.ts +16 -0
  8. package/bin/types/JsViewEngineWidget/MetroWidget/Dispatcher.d.ts +14 -0
  9. package/bin/types/JsViewEngineWidget/MetroWidget/ListWidget.vue.d.ts +158 -0
  10. package/bin/types/JsViewEngineWidget/MetroWidget/MetroWidget.vue.d.ts +158 -0
  11. package/bin/types/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.d.ts +46 -0
  12. package/bin/types/JsViewEngineWidget/MetroWidget/PageUpdater.d.ts +21 -0
  13. package/bin/types/JsViewEngineWidget/MetroWidget/RenderItem.d.ts +46 -0
  14. package/bin/types/JsViewEngineWidget/MetroWidget/SlotComponent.vue.d.ts +48 -0
  15. package/bin/types/JsViewEngineWidget/MetroWidget/VisibleInfo.d.ts +16 -0
  16. package/bin/types/JsViewEngineWidget/MetroWidget/WidgetRectInfo.d.ts +17 -0
  17. package/bin/types/JsViewEngineWidget/RangeModel.d.ts +162 -0
  18. package/bin/types/JsViewEngineWidget/TemplateParser/CommonMetroTemplate.d.ts +37 -0
  19. package/bin/types/JsViewEngineWidget/TemplateParser/Fence.d.ts +58 -0
  20. package/bin/types/JsViewEngineWidget/TemplateParser/ListMetroTemplate.d.ts +15 -0
  21. package/bin/types/JsViewEngineWidget/TemplateParser/MetroTemplate.d.ts +97 -0
  22. package/bin/types/JsViewEngineWidget/TemplateParser/TemplateItemAdder.d.ts +22 -0
  23. package/bin/types/JsViewEngineWidget/TemplateParser/index.d.ts +4 -0
  24. package/bin/types/JsViewEngineWidget/WidgetCommon.d.ts +137 -0
  25. package/bin/types/JsViewEngineWidget/index.d.ts +6 -0
  26. package/bin/types/JsViewPlugin/JsvAccount/JsvAccount.d.ts +42 -0
  27. package/bin/types/JsViewPlugin/JsvAudio/AudioProxy.d.ts +2 -0
  28. package/bin/types/JsViewPlugin/JsvAudio/BrowserAudio/BrowserAudio.vue.d.ts +18 -0
  29. package/bin/types/JsViewPlugin/JsvAudio/BrowserAudio/JsvSystemAudio.vue.d.ts +208 -0
  30. package/bin/types/JsViewPlugin/JsvAudio/CheckType.d.ts +2 -0
  31. package/bin/types/JsViewPlugin/JsvAudio/Events.d.ts +13 -0
  32. package/bin/types/JsViewPlugin/JsvAudio/JsvAudio.vue.d.ts +18 -0
  33. package/bin/types/JsViewPlugin/JsvAudio/JsvAudioBridgeProxy.d.ts +8 -0
  34. package/bin/types/JsViewPlugin/JsvAudio/JsvAudioProxy.vue.d.ts +2 -0
  35. package/bin/types/JsViewPlugin/JsvAudio/PluginLoader.d.ts +1 -0
  36. package/bin/types/JsViewPlugin/JsvAudio/ScreenLockManager.d.ts +5 -0
  37. package/bin/types/JsViewPlugin/JsvAudio/index.d.ts +3 -0
  38. package/bin/types/JsViewPlugin/JsvAudio/version.d.ts +10 -0
  39. package/bin/types/JsViewPlugin/JsvLatex/BrowserDomBuilder.d.ts +1 -0
  40. package/bin/types/JsViewPlugin/JsvLatex/BrowserJsvLatex.vue.d.ts +13 -0
  41. package/bin/types/JsViewPlugin/JsvLatex/Color.d.ts +1 -0
  42. package/bin/types/JsViewPlugin/JsvLatex/JsvLatex.vue.d.ts +17 -0
  43. package/bin/types/JsViewPlugin/JsvLatex/JsvLatexBridgeProxy.d.ts +3 -0
  44. package/bin/types/JsViewPlugin/JsvLatex/JsvLatexProxy.vue.d.ts +2 -0
  45. package/bin/types/JsViewPlugin/JsvLatex/PluginLoader.d.ts +1 -0
  46. package/bin/types/JsViewPlugin/JsvLatex/index.d.ts +3 -0
  47. package/bin/types/JsViewPlugin/JsvLatex/version.d.ts +10 -0
  48. package/bin/types/JsViewPlugin/index.d.ts +3 -0
  49. package/bin/types/JsViewVueTools/DebugContentShellJBridge.d.ts +6 -0
  50. package/bin/types/JsViewVueTools/DebugTool.d.ts +8 -0
  51. package/bin/types/JsViewVueTools/DefaultKeyMap.d.ts +10 -0
  52. package/bin/types/JsViewVueTools/ForgeHandles.d.ts +6 -0
  53. package/bin/types/JsViewVueTools/JsvDemoTester.d.ts +2 -0
  54. package/bin/types/JsViewVueTools/JsvDynamicCssStyle.d.ts +14 -0
  55. package/bin/types/JsViewVueTools/JsvDynamicKeyFrames.d.ts +21 -0
  56. package/bin/types/JsViewVueTools/JsvHashHistory.d.ts +16 -0
  57. package/bin/types/JsViewVueTools/JsvImpactTracer.d.ts +40 -0
  58. package/bin/types/JsViewVueTools/JsvRefTaker.d.ts +27 -0
  59. package/bin/types/JsViewVueTools/JsvRuntimeBridge.d.ts +223 -0
  60. package/bin/types/JsViewVueTools/JsvStyleClass.d.ts +31 -0
  61. package/bin/types/JsViewVueTools/JsvStyleSheetsDeclarer.d.ts +15 -0
  62. package/bin/types/JsViewVueTools/JsvTextTools.d.ts +37 -0
  63. package/bin/types/JsViewVueTools/JsvTextureDefines.d.ts +6 -0
  64. package/bin/types/JsViewVueTools/JsvTextureStore/CanvasTexture/CanvasTexture.d.ts +95 -0
  65. package/bin/types/JsViewVueTools/JsvTextureStore/CanvasTexture/CommandList.d.ts +15 -0
  66. package/bin/types/JsViewVueTools/JsvTextureStore/CanvasTexture/Path.d.ts +75 -0
  67. package/bin/types/JsViewVueTools/JsvTextureStore/JsvTextureStore.d.ts +24 -0
  68. package/bin/types/JsViewVueTools/JsvTextureStore/Store.d.ts +10 -0
  69. package/bin/types/JsViewVueTools/JsvTextureStore/Texture.d.ts +15 -0
  70. package/bin/types/JsViewVueTools/NinePatchHelper.d.ts +21 -0
  71. package/bin/types/JsViewVueTools/TypeCheckAndSet.d.ts +2 -0
  72. package/bin/types/JsViewVueTools/index.d.ts +14 -0
  73. package/bin/types/JsViewVueWidget/JsvActorMove/ActorControlBase.d.ts +31 -0
  74. package/bin/types/JsViewVueWidget/JsvActorMove/JsvActorMove.vue.d.ts +64 -0
  75. package/bin/types/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.d.ts +33 -0
  76. package/bin/types/JsViewVueWidget/JsvActorMove/index.d.ts +4 -0
  77. package/bin/types/JsViewVueWidget/JsvApic/JsvApic/BrowserApic.vue.d.ts +15 -0
  78. package/bin/types/JsViewVueWidget/JsvApic/JsvApic/JsvApic.vue.d.ts +50 -0
  79. package/bin/types/JsViewVueWidget/JsvApic/JsvApic/index.d.ts +2 -0
  80. package/bin/types/JsViewVueWidget/JsvApic/JsvApic2/BrowserApic2.vue.d.ts +13 -0
  81. package/bin/types/JsViewVueWidget/JsvApic/JsvApic2/JsvApic2.vue.d.ts +23 -0
  82. package/bin/types/JsViewVueWidget/JsvApic/JsvApic2/index.d.ts +2 -0
  83. package/bin/types/JsViewVueWidget/JsvApic/JsvBrowserApicLib/ApicDataBase.d.ts +13 -0
  84. package/bin/types/JsViewVueWidget/JsvApic/JsvBrowserApicLib/BrowserApicLib.d.ts +3 -0
  85. package/bin/types/JsViewVueWidget/JsvApic/JsvBrowserApicLib/GifData.d.ts +5 -0
  86. package/bin/types/JsViewVueWidget/JsvApic/JsvBrowserApicLib/NormalLoopTool.d.ts +7 -0
  87. package/bin/types/JsViewVueWidget/JsvApic/JsvBrowserApicLib/PartLoopTool.d.ts +12 -0
  88. package/bin/types/JsViewVueWidget/JsvApic/JsvBrowserApicLib/SingleLoopTool.d.ts +5 -0
  89. package/bin/types/JsViewVueWidget/JsvApic/JsvBrowserApicLib/Viewer.d.ts +19 -0
  90. package/bin/types/JsViewVueWidget/JsvApic/JsvBrowserApicLib/WebpData.d.ts +5 -0
  91. package/bin/types/{jsview-vue-common.d.mts → JsViewVueWidget/JsvApic/JsvCommonLoopToolBase.d.ts} +12 -13
  92. package/bin/types/JsViewVueWidget/JsvConnectLine/ArcLineManager.d.ts +1 -0
  93. package/bin/types/JsViewVueWidget/JsvConnectLine/JsvConnectLine.vue.d.ts +13 -0
  94. package/bin/types/JsViewVueWidget/JsvConnectLine/index.d.ts +2 -0
  95. package/bin/types/JsViewVueWidget/JsvEnableRenderBreak.vue.d.ts +51 -0
  96. package/bin/types/JsViewVueWidget/JsvFilterView.vue.d.ts +72 -0
  97. package/bin/types/JsViewVueWidget/JsvFlexCell/JsvFlexDiv.vue.d.ts +72 -0
  98. package/bin/types/JsViewVueWidget/JsvFlexCell/index.d.ts +2 -0
  99. package/bin/types/JsViewVueWidget/JsvFreeMoveActor/FreeMoveActor.vue.d.ts +72 -0
  100. package/bin/types/JsViewVueWidget/JsvFreeMoveActor/JsvEnvBlocker.vue.d.ts +84 -0
  101. package/bin/types/JsViewVueWidget/JsvFreeMoveActor/NexusNode.d.ts +6 -0
  102. package/bin/types/JsViewVueWidget/JsvFreeMoveActor/index.d.ts +11 -0
  103. package/bin/types/JsViewVueWidget/JsvGrid.vue.d.ts +168 -0
  104. package/bin/types/JsViewVueWidget/JsvHole.d.ts +2 -0
  105. package/bin/types/JsViewVueWidget/JsvInput/Cursor.vue.d.ts +36 -0
  106. package/bin/types/JsViewVueWidget/JsvInput/JsvInput.vue.d.ts +210 -0
  107. package/bin/types/JsViewVueWidget/JsvInput/index.d.ts +4 -0
  108. package/bin/types/JsViewVueWidget/JsvLine/JsvLine.vue.d.ts +12 -0
  109. package/bin/types/JsViewVueWidget/JsvLine/LineManager.d.ts +1 -0
  110. package/bin/types/JsViewVueWidget/JsvLine/index.d.ts +2 -0
  111. package/bin/types/JsViewVueWidget/JsvMarquee.vue.d.ts +12 -0
  112. package/bin/types/JsViewVueWidget/JsvMaskClipDiv.vue.d.ts +83 -0
  113. package/bin/types/JsViewVueWidget/JsvMindMap/CommonType.d.ts +1 -0
  114. package/bin/types/JsViewVueWidget/JsvMindMap/Constant.d.ts +9 -0
  115. package/bin/types/JsViewVueWidget/JsvMindMap/DataTree.d.ts +69 -0
  116. package/bin/types/JsViewVueWidget/JsvMindMap/Geometry.d.ts +68 -0
  117. package/bin/types/JsViewVueWidget/JsvMindMap/JsvMindMap.vue.d.ts +145 -0
  118. package/bin/types/JsViewVueWidget/JsvMindMap/index.d.ts +1 -0
  119. package/bin/types/JsViewVueWidget/JsvMindMap/rtree.d.ts +40 -0
  120. package/bin/types/JsViewVueWidget/JsvNativeSharedDiv.vue.d.ts +31 -0
  121. package/bin/types/JsViewVueWidget/JsvNinePatch.vue.d.ts +18 -0
  122. package/bin/types/JsViewVueWidget/JsvPieChart.vue.d.ts +9 -0
  123. package/bin/types/JsViewVueWidget/JsvPosterDiv.vue.d.ts +60 -0
  124. package/bin/types/JsViewVueWidget/JsvPosterImage.vue.d.ts +75 -0
  125. package/bin/types/JsViewVueWidget/JsvPreload/BrowserPreload.vue.d.ts +10 -0
  126. package/bin/types/JsViewVueWidget/JsvPreload/JsvPreload.vue.d.ts +25 -0
  127. package/bin/types/JsViewVueWidget/JsvPreload/index.d.ts +17 -0
  128. package/bin/types/JsViewVueWidget/JsvProgressBar.vue.d.ts +12 -0
  129. package/bin/types/JsViewVueWidget/JsvQrcode/BrowserQrcode.vue.d.ts +11 -0
  130. package/bin/types/JsViewVueWidget/JsvQrcode/JsvQrcode.vue.d.ts +60 -0
  131. package/bin/types/JsViewVueWidget/JsvQrcode/index.d.ts +2 -0
  132. package/bin/types/JsViewVueWidget/JsvRadarChart.vue.d.ts +13 -0
  133. package/bin/types/JsViewVueWidget/JsvRipple/Constant.d.ts +4 -0
  134. package/bin/types/JsViewVueWidget/JsvRipple/JsvRipple.vue.d.ts +84 -0
  135. package/bin/types/JsViewVueWidget/JsvRipple/index.d.ts +3 -0
  136. package/bin/types/JsViewVueWidget/JsvScaleTextBox.vue.d.ts +10 -0
  137. package/bin/types/JsViewVueWidget/JsvSector.vue.d.ts +10 -0
  138. package/bin/types/JsViewVueWidget/JsvSoundPool.d.ts +84 -0
  139. package/bin/types/JsViewVueWidget/JsvSpray/BrowserSpray.vue.d.ts +25 -0
  140. package/bin/types/JsViewVueWidget/JsvSpray/JsvSpray.vue.d.ts +38 -0
  141. package/bin/types/JsViewVueWidget/JsvSpray/index.d.ts +2 -0
  142. package/bin/types/JsViewVueWidget/JsvSpriteAnim/FrameBuidler.d.ts +14 -0
  143. package/bin/types/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue.d.ts +18 -0
  144. package/bin/types/JsViewVueWidget/JsvSpriteAnim/JsvSpriteLoader.vue.d.ts +69 -0
  145. package/bin/types/JsViewVueWidget/JsvSpriteAnim/JsvSpriteTools.d.ts +11 -0
  146. package/bin/types/JsViewVueWidget/JsvSpriteAnim/SpriteController.d.ts +17 -0
  147. package/bin/types/JsViewVueWidget/JsvSpriteAnim/index.d.ts +5 -0
  148. package/bin/types/JsViewVueWidget/JsvSpriteAnim/sAnimationToken.d.ts +2 -0
  149. package/bin/types/JsViewVueWidget/JsvSwiper/JsvSwiper.vue.d.ts +209 -0
  150. package/bin/types/JsViewVueWidget/JsvSwiper/index.d.ts +2 -0
  151. package/bin/types/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue.d.ts +97 -0
  152. package/bin/types/JsViewVueWidget/JsvSwiper3D/index.d.ts +2 -0
  153. package/bin/types/JsViewVueWidget/JsvTextBox.vue.d.ts +75 -0
  154. package/bin/types/JsViewVueWidget/JsvTextureAnim/BrowserTextureAnim.vue.d.ts +151 -0
  155. package/bin/types/JsViewVueWidget/JsvTextureAnim/CommonType.d.ts +2 -0
  156. package/bin/types/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue.d.ts +107 -0
  157. package/bin/types/JsViewVueWidget/JsvTextureAnim/index.d.ts +14 -0
  158. package/bin/types/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue.d.ts +84 -0
  159. package/bin/types/JsViewVueWidget/JsvVisibleSensor/index.d.ts +84 -0
  160. package/bin/types/JsViewVueWidget/index.d.ts +37 -0
  161. package/bin/types/index.d.ts +4 -0
  162. package/index.d.ts +1 -1
  163. package/package.json +1 -1
  164. package/tools/config/tsconfig.json +6 -6
  165. package/tools/jsview-vue-build.mjs +13 -4
  166. package/utils/JsViewEngineWidget/MetroWidget/ListWidget.vue +7 -4
  167. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +18 -5
  168. package/utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js +255 -145
  169. package/utils/JsViewEngineWidget/MetroWidget/RenderItem.ts +2 -2
  170. package/utils/JsViewEngineWidget/MetroWidget/VisibleInfo.ts +1 -1
  171. package/utils/JsViewEngineWidget/TemplateParser/CommonMetroTemplate.ts +21 -21
  172. package/utils/JsViewEngineWidget/TemplateParser/ListMetroTemplate.ts +4 -4
  173. package/utils/JsViewEngineWidget/TemplateParser/MetroTemplate.ts +10 -10
  174. package/utils/JsViewEngineWidget/TemplateParser/TemplateItemAdder.ts +6 -6
  175. package/utils/JsViewEngineWidget/WidgetCommon.ts +18 -2
  176. package/utils/JsViewVueTools/JsvRuntimeBridge.js +2 -6
  177. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetCondition.ts +8 -0
  178. package/utils/JsViewVueWidget/JsvMindMap/JsvMindMap.vue +1 -1
  179. package/utils/JsViewVueWidget/JsvMindMap/rtree.js +1 -1
  180. package/utils/JsViewVueWidget/JsvTextBox.vue +14 -2
  181. package/utils/JsViewVueWidget/JsvTextureAnim/BrowserTextureAnim.vue +18 -3
  182. package/bin/types/browser/BrowserApic.vue.d.mts +0 -33
  183. package/bin/types/browser/BrowserApic2.vue.d.mts +0 -16
  184. package/bin/types/browser/BrowserApicLib.d.mts +0 -56
  185. package/bin/types/browser/BrowserAudio.vue.d.mts +0 -2
  186. package/bin/types/browser/BrowserJsvLatex.vue.d.mts +0 -55
  187. package/bin/types/browser/BrowserPreload.vue.d.mts +0 -14
  188. package/bin/types/browser/BrowserQrcode.vue.d.mts +0 -29
  189. package/bin/types/browser/BrowserSpray.vue.d.mts +0 -2
  190. package/bin/types/browser/BrowserTextureAnim.vue.d.mts +0 -2
  191. package/bin/types/export-sfc.d.mts +0 -2
  192. package/bin/types/jsview-vue.d.mts +0 -2511
@@ -1,4 +1,4 @@
1
- import { ref, computed, toRaw, reactive, nextTick, onMounted, onUpdated, onBeforeUnmount, onBeforeUpdate, openBlock, createElementBlock, renderSlot, shallowRef, resolveComponent, normalizeStyle, createElementVNode, unref, createVNode, withCtx, Fragment, renderList, createCommentVNode, inject, provide, onUnmounted, onActivated, onDeactivated, createBlock, defineAsyncComponent, normalizeProps, guardReactiveProps, watchEffect, mergeProps, toDisplayString, watch, shallowReactive, withDirectives, vShow } from 'vue';
1
+ import { ref, computed, toRaw, reactive, nextTick, onMounted, onUpdated, onBeforeUnmount, onBeforeUpdate, openBlock, createElementBlock, renderSlot, shallowRef, resolveComponent, normalizeStyle, createElementVNode, unref, mergeProps, toHandlers, createVNode, withCtx, Fragment, renderList, createCommentVNode, inject, provide, onUnmounted, onActivated, onDeactivated, createBlock, defineAsyncComponent, normalizeProps, guardReactiveProps, watchEffect, toDisplayString, watch, shallowReactive, withDirectives, vShow } from 'vue';
2
2
  import { Forge as Forge$1, ForgeExtension } from '@shijiu/jsview/dom/jsv-forge-define';
3
3
  import { createWebHashHistory, createMemoryHistory } from 'vue-router';
4
4
  import { Forge as Forge$2 } from '@shijiu/jsview/dom/jsv-forge-define.mjs';
@@ -132,6 +132,8 @@ class SeamlessSlide extends SlideSetting {
132
132
  constructor({
133
133
  startPercent = 0.2,
134
134
  endPercent = 0.8,
135
+ headRange = void 0,
136
+ tailRange = void 0,
135
137
  speed = defaultSpeed,
136
138
  duration = null,
137
139
  easing = defaultEasing,
@@ -141,6 +143,17 @@ class SeamlessSlide extends SlideSetting {
141
143
  super(SlideSetting.Type.SEAMLESS, speed, duration, easing, boundaryProtect);
142
144
  this.StartPercent = startPercent;
143
145
  this.EndPercent = endPercent;
146
+ if (typeof headRange !== "undefined") {
147
+ this.StartPercent = headRange;
148
+ }
149
+ if (typeof tailRange !== "undefined") {
150
+ this.EndPercent = tailRange;
151
+ }
152
+ if (this.StartPercent < 0 || this.StartPercent > 1 || this.EndPercent < 0 || this.EndPercent > 1) {
153
+ console.error(`SeamlessSlideSetting error: invalide value, startPercent(${this.StartPercent}) and endPercent(${this.EndPercent}) must between 0 and 1.`);
154
+ this.StartPercent = 0.2;
155
+ this.EndPercent = 0.8;
156
+ }
144
157
  this.FixFirstPage = fixFirstPage;
145
158
  }
146
159
  }
@@ -2417,7 +2430,10 @@ class RenderItem {
2417
2430
  class VisibleInfo {
2418
2431
  _start = 0;
2419
2432
  range = 0;
2420
- padding;
2433
+ padding = {
2434
+ start: 0,
2435
+ end: 0
2436
+ };
2421
2437
  _startMax = 0;
2422
2438
  set start(value) {
2423
2439
  this._start = value;
@@ -2722,6 +2738,13 @@ class ConditionPackBuilder {
2722
2738
  this._CommonInfoValid = false;
2723
2739
  return this._BuildPack(ConditionSetBuilder.OnFlingCancel(this._CommonInfo, this._ContorlSlefNexus.token));
2724
2740
  }
2741
+ onFlingDrop() {
2742
+ if (!this._CheckCommonInfo()) {
2743
+ return null;
2744
+ }
2745
+ this._CommonInfoValid = false;
2746
+ return this._BuildPack(ConditionSetBuilder.OnFlingDrop(this._CommonInfo, this._ContorlSlefNexus.token));
2747
+ }
2725
2748
  touchCount(count) {
2726
2749
  if (!this._CheckCommonInfo()) {
2727
2750
  return null;
@@ -3564,6 +3587,16 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3564
3587
  DRAG: 2,
3565
3588
  FLING: 3
3566
3589
  };
3590
+ let innerKeepTraceRange = 0;
3591
+ if (typeof props.keepTraceRange > 0) {
3592
+ innerKeepTraceRange = props.keepTraceRange;
3593
+ } else {
3594
+ if (props.touchFlag > 0) {
3595
+ innerKeepTraceRange = 3;
3596
+ } else {
3597
+ innerKeepTraceRange = 0;
3598
+ }
3599
+ }
3567
3600
  const modeForExport = ref(FOCUS_MODE);
3568
3601
  const mode = {
3569
3602
  _mode: FOCUS_MODE,
@@ -3627,6 +3660,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3627
3660
  let visibleInfo = new VisibleInfo();
3628
3661
  let preSlideDirection = 0;
3629
3662
  let alreadyCallItemFocus = false;
3663
+ let innerSlideSetting = props.slideSetting;
3630
3664
  const currentFocusIndex = ref(0);
3631
3665
  const DEFAULT_ANIMATION_DURATION = 200;
3632
3666
  const isItemVisible = (item) => {
@@ -3726,8 +3760,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3726
3760
  easing: "",
3727
3761
  onStart: null,
3728
3762
  onEnd: null,
3729
- speed: props.slideSetting.Speed,
3730
- duration: props.slideSetting.Duration
3763
+ speed: innerSlideSetting.Speed,
3764
+ duration: innerSlideSetting.Duration
3731
3765
  };
3732
3766
  }
3733
3767
  }
@@ -3746,8 +3780,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3746
3780
  taskManager.run(() => {
3747
3781
  updateHandler = pageUpdater.update(
3748
3782
  metroTemplate,
3749
- visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
3750
- visibleInfo.endWithPadding + props.keepTraceRange * pageRange,
3783
+ visibleInfo.startWithPadding - innerKeepTraceRange * pageRange,
3784
+ visibleInfo.endWithPadding + innerKeepTraceRange * pageRange,
3751
3785
  focusId,
3752
3786
  mergeTmp,
3753
3787
  permanentItemList
@@ -3875,7 +3909,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3875
3909
  );
3876
3910
  };
3877
3911
  const _slideTo = (target, animObj, updateParam = { mergeTmp: false }) => {
3878
- if (slideLock) {
3912
+ if (slideLock || target == visibleInfo.start) {
3879
3913
  return;
3880
3914
  }
3881
3915
  ;
@@ -4081,10 +4115,10 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4081
4115
  let animObj = null;
4082
4116
  if (doAnim) {
4083
4117
  animObj = {
4084
- easing: props.slideSetting.Easing,
4118
+ easing: innerSlideSetting.Easing,
4085
4119
  onStart: null,
4086
- speed: props.slideSetting.Speed,
4087
- duration: props.slideSetting.Duration
4120
+ speed: innerSlideSetting.Speed,
4121
+ duration: innerSlideSetting.Duration
4088
4122
  };
4089
4123
  }
4090
4124
  _slideTo(position, animObj);
@@ -4130,8 +4164,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4130
4164
  _slideTo(cur_slide, doAnim ? {
4131
4165
  easing: "",
4132
4166
  onStart: null,
4133
- speed: props.slideSetting.Speed,
4134
- duration: props.slideSetting.Duration,
4167
+ speed: innerSlideSetting.Speed,
4168
+ duration: innerSlideSetting.Duration,
4135
4169
  onEnd: null
4136
4170
  } : null);
4137
4171
  }
@@ -4204,8 +4238,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4204
4238
  }
4205
4239
  const updater = pageUpdater.update(
4206
4240
  metroTemplate,
4207
- visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
4208
- visibleInfo.endWithPadding + props.keepTraceRange * pageRange,
4241
+ visibleInfo.startWithPadding - innerKeepTraceRange * pageRange,
4242
+ visibleInfo.endWithPadding + innerKeepTraceRange * pageRange,
4209
4243
  focusId,
4210
4244
  false,
4211
4245
  permanentItemList
@@ -4213,6 +4247,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4213
4247
  updater.apply();
4214
4248
  onItemFocus(getItemById(focusId), null);
4215
4249
  slideToItem(id2Index(focusId), false);
4250
+ updateTouchBoxCondition();
4216
4251
  };
4217
4252
  const getVisibleItems = () => {
4218
4253
  const [visibleStart, visibleEnd] = metroTemplate.getVisibleItemList(
@@ -4258,6 +4293,13 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4258
4293
  const unlockSlide = () => {
4259
4294
  slideLock = false;
4260
4295
  };
4296
+ const setSlideSetting = (setting) => {
4297
+ if (!setting) {
4298
+ innerSlideSetting = props.slideSetting;
4299
+ } else {
4300
+ innerSlideSetting = setting;
4301
+ }
4302
+ };
4261
4303
  const exportObject = {
4262
4304
  lockSlide,
4263
4305
  unlockSlide,
@@ -4278,7 +4320,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4278
4320
  getCustomerDataSize,
4279
4321
  getCurrentFocusIndex,
4280
4322
  getCurMode,
4281
- getTemplatePosition
4323
+ getTemplatePosition,
4324
+ setSlideSetting
4282
4325
  };
4283
4326
  const _calculateNearestItemByRect = (visibleSet, enter_rect_info) => {
4284
4327
  let edge_direction = enter_rect_info.direction;
@@ -4466,6 +4509,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4466
4509
  metroTemplate.getTailItemIndex()
4467
4510
  )?.templateInfo;
4468
4511
  if (lastTemplateInfo) {
4512
+ let preTouchW = touchDivSize.width;
4513
+ let preTouchH = touchDivSize.height;
4469
4514
  if (vertical) {
4470
4515
  touchDivSize.width = props.width;
4471
4516
  touchDivSize.height = lastTemplateInfo.top + lastTemplateInfo.height - 1;
@@ -4473,7 +4518,9 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4473
4518
  touchDivSize.width = lastTemplateInfo.left + lastTemplateInfo.width - 1;
4474
4519
  touchDivSize.height = props.height;
4475
4520
  }
4476
- resetDragRect(touchDivSize.width, touchDivSize.height);
4521
+ if (preTouchW !== touchDivSize.width || preTouchH !== touchDivSize.height) {
4522
+ updateTouchBoxCondition();
4523
+ }
4477
4524
  }
4478
4525
  };
4479
4526
  const _onTemplateItemAdd = (customerData, templateItem, measuresObj) => {
@@ -4595,8 +4642,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4595
4642
  {
4596
4643
  easing: "",
4597
4644
  onStart: null,
4598
- speed: props.slideSetting.Speed,
4599
- duration: props.slideSetting.Duration
4645
+ speed: innerSlideSetting.Speed,
4646
+ duration: innerSlideSetting.Duration
4600
4647
  },
4601
4648
  {
4602
4649
  mergeTmp: true
@@ -4685,27 +4732,31 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4685
4732
  }
4686
4733
  onItemBlur(preFocusItem);
4687
4734
  onItemFocus(next_focus_item, preEdgeRect);
4688
- let cur_visible_start2 = _calculateVisibleStart(next_focus_item.templateInfo, vertical ? vertical_direction : horizontal_direction);
4689
- if (visibleInfo.start !== cur_visible_start2) {
4690
- if (next_focus_item.itemConfig.itemSlide == METRO_WIDGET.ITEM_SLIDE.ACT_ITEM_FOCUS) {
4735
+ if (next_focus_item.itemConfig.itemSlide == METRO_WIDGET.ITEM_SLIDE.ACT_ITEM_FOCUS) {
4736
+ let cur_visible_start2 = _calculateVisibleStart(
4737
+ next_focus_item.templateInfo,
4738
+ vertical ? vertical_direction : horizontal_direction,
4739
+ preFocusItem.templateInfo
4740
+ );
4741
+ if (visibleInfo.start !== cur_visible_start2) {
4691
4742
  let animObj = {
4692
4743
  easing: "",
4693
4744
  onStart: null,
4694
- speed: props.slideSetting.Speed,
4695
- duration: props.slideSetting.Duration
4745
+ speed: innerSlideSetting.Speed,
4746
+ duration: innerSlideSetting.Duration
4696
4747
  };
4697
4748
  _slideTo(cur_visible_start2, animObj, { mergeTmp: false });
4698
- } else {
4699
- const updater = pageUpdater.update(
4700
- metroTemplate,
4701
- visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
4702
- visibleInfo.endWithPadding + props.keepTraceRange * pageRange,
4703
- next_focus_item.id,
4704
- false,
4705
- permanentItemList
4706
- );
4707
- updater.applyTmp();
4708
4749
  }
4750
+ } else {
4751
+ const updater = pageUpdater.update(
4752
+ metroTemplate,
4753
+ visibleInfo.startWithPadding - innerKeepTraceRange * pageRange,
4754
+ visibleInfo.endWithPadding + innerKeepTraceRange * pageRange,
4755
+ next_focus_item.id,
4756
+ false,
4757
+ permanentItemList
4758
+ );
4759
+ updater.applyTmp();
4709
4760
  }
4710
4761
  } else {
4711
4762
  let x_off_set = vertical ? 0 : visibleInfo.start;
@@ -4753,32 +4804,44 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4753
4804
  const normalizeVisibleStart = (origin, targetItem = null) => {
4754
4805
  let pos_key = vertical ? "top" : "left";
4755
4806
  let size_key = vertical ? "height" : "width";
4756
- let visible_start = origin;
4757
- if ((props.slideSetting.BoundaryProtect & SlideSetting.START_PROTECT) > 0) {
4758
- let boundary = 0;
4759
- const headTemplateInfo = getItemByIndex(0).templateInfo;
4760
- if (targetItem && (!headTemplateInfo.focusable || targetItem.index == headTemplateInfo.index) && targetItem[pos_key] + targetItem[size_key] <= visibleInfo.range) {
4761
- boundary = headTemplateInfo[size_key];
4807
+ let visibleStart = origin;
4808
+ if ((innerSlideSetting.BoundaryProtect & SlideSetting.START_PROTECT) > 0) {
4809
+ if (visibleInfo.start >= 0) {
4810
+ let boundary = 0;
4811
+ const headTemplateInfo = getItemByIndex(0).templateInfo;
4812
+ if (targetItem && (!headTemplateInfo.focusable || targetItem.index == headTemplateInfo.index) && targetItem[pos_key] + targetItem[size_key] <= visibleInfo.range) {
4813
+ boundary = headTemplateInfo[size_key];
4814
+ }
4815
+ visibleStart = visibleStart < boundary ? 0 : visibleStart;
4816
+ } else {
4817
+ visibleStart = visibleStart < visibleInfo.start ? visibleInfo.start : visibleStart;
4762
4818
  }
4763
- visible_start = visible_start < boundary ? 0 : visible_start;
4764
4819
  }
4765
- if ((props.slideSetting.BoundaryProtect & SlideSetting.END_PROTECT) > 0) {
4820
+ if ((innerSlideSetting.BoundaryProtect & SlideSetting.END_PROTECT) > 0) {
4766
4821
  let lastTemplateInfo = getItemByIndex(metroTemplate.getTailItemIndex()).templateInfo;
4767
- let last_visible_start = lastTemplateInfo[pos_key] + lastTemplateInfo[size_key] - visibleInfo.range;
4768
- last_visible_start = last_visible_start < 0 ? 0 : last_visible_start;
4769
- let boundary = last_visible_start;
4770
- if (targetItem && (!lastTemplateInfo.focusable || targetItem.index == lastTemplateInfo.index) && targetItem[pos_key] - last_visible_start >= 0) {
4771
- boundary = lastTemplateInfo[pos_key] - visibleInfo.range;
4822
+ const lastEnd = lastTemplateInfo[pos_key] + lastTemplateInfo[size_key];
4823
+ const lastVisibleStart = Math.max(lastEnd - visibleInfo.range, 0);
4824
+ if (visibleInfo.end <= lastEnd) {
4825
+ let boundary = lastVisibleStart;
4826
+ if (targetItem && (!lastTemplateInfo.focusable || targetItem.index == lastTemplateInfo.index) && targetItem[pos_key] - lastVisibleStart >= 0) {
4827
+ boundary = lastTemplateInfo[pos_key] - visibleInfo.range;
4828
+ }
4829
+ visibleStart = visibleStart > boundary ? lastVisibleStart : visibleStart;
4830
+ } else {
4831
+ visibleStart = visibleStart > visibleInfo.start ? visibleInfo.start : visibleStart;
4772
4832
  }
4773
- visible_start = visible_start > boundary ? last_visible_start : visible_start;
4774
4833
  }
4775
- return visible_start;
4834
+ return visibleStart;
4776
4835
  };
4777
- const _calculateVisibleStart = (targetTemplateInfo, direction) => {
4836
+ let preTemplateInfo = null;
4837
+ const _calculateVisibleStart = (targetTemplateInfo, direction, preInfo = null) => {
4778
4838
  if (!targetTemplateInfo) {
4779
4839
  console.error("MetroWidget: _calculateVisibleStart target item is null");
4780
4840
  return 0;
4781
4841
  }
4842
+ if (preInfo) {
4843
+ preTemplateInfo = preInfo;
4844
+ }
4782
4845
  preSlideDirection = direction;
4783
4846
  preAnchorItemIndex = targetTemplateInfo.index;
4784
4847
  let pos_key = vertical ? "top" : "left";
@@ -4786,9 +4849,9 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4786
4849
  let center_key = vertical ? "centerYPos" : "centerXPos";
4787
4850
  let new_visible_start = visibleInfo.start;
4788
4851
  let needCalculate = true;
4789
- switch (props.slideSetting.Type) {
4852
+ switch (innerSlideSetting.Type) {
4790
4853
  case SlideSetting.Type.FIX_POSITION:
4791
- if (props.slideSetting.FixFirstPage) {
4854
+ if (innerSlideSetting.FixFirstPage) {
4792
4855
  if (targetTemplateInfo[pos_key] + targetTemplateInfo[size_key] - 1 < visibleInfo.range) {
4793
4856
  new_visible_start = 0;
4794
4857
  needCalculate = false;
@@ -4796,7 +4859,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4796
4859
  }
4797
4860
  if (needCalculate) {
4798
4861
  new_visible_start = Math.ceil(
4799
- targetTemplateInfo[center_key] - visibleInfo.range * props.slideSetting.FixPercent
4862
+ targetTemplateInfo[center_key] - visibleInfo.range * innerSlideSetting.FixPercent
4800
4863
  );
4801
4864
  }
4802
4865
  break;
@@ -4810,40 +4873,77 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4810
4873
  }
4811
4874
  break;
4812
4875
  case SlideSetting.Type.SEAMLESS:
4813
- if (props.slideSetting.FixFirstPage) {
4876
+ if (innerSlideSetting.FixFirstPage) {
4814
4877
  if (targetTemplateInfo[pos_key] + targetTemplateInfo[size_key] - 1 < visibleInfo.range) {
4815
4878
  new_visible_start = 0;
4816
4879
  needCalculate = false;
4817
4880
  }
4818
4881
  }
4819
4882
  if (needCalculate) {
4820
- if (targetTemplateInfo[size_key] >= visibleInfo.range * (props.slideSetting.EndPercent - props.slideSetting.StartPercent)) {
4821
- new_visible_start = targetTemplateInfo[center_key] - visibleInfo.range * 0.5;
4883
+ const rect0Start = visibleInfo.start;
4884
+ const rect0End = visibleInfo.start + visibleInfo.range * innerSlideSetting.StartPercent;
4885
+ const rect1Start = visibleInfo.start + visibleInfo.range * innerSlideSetting.EndPercent;
4886
+ const rect1End = visibleInfo.end;
4887
+ const itemStart = targetTemplateInfo[pos_key];
4888
+ const itemEnd = targetTemplateInfo[pos_key] + targetTemplateInfo[size_key] - 1;
4889
+ let targetStart;
4890
+ let targetEnd;
4891
+ if (preTemplateInfo != null) {
4892
+ targetStart = preTemplateInfo[pos_key];
4893
+ targetEnd = preTemplateInfo[pos_key] + preTemplateInfo[size_key] - 1;
4822
4894
  } else {
4823
- if (direction > 0) {
4824
- if (targetTemplateInfo[pos_key] + targetTemplateInfo[size_key] > visibleInfo.start + visibleInfo.range * props.slideSetting.EndPercent) {
4825
- new_visible_start = targetTemplateInfo[pos_key] + targetTemplateInfo[size_key] - visibleInfo.range * props.slideSetting.EndPercent;
4826
- }
4827
- } else if (direction < 0) {
4828
- if (targetTemplateInfo[pos_key] < visibleInfo.start + visibleInfo.range * props.slideSetting.StartPercent) {
4829
- new_visible_start = targetTemplateInfo[pos_key] - visibleInfo.range * props.slideSetting.StartPercent;
4895
+ targetStart = rect0End;
4896
+ targetEnd = rect1Start;
4897
+ }
4898
+ let rect0Result = void 0;
4899
+ let rect1Result = void 0;
4900
+ if (itemStart < rect0End) {
4901
+ if (targetStart < rect0Start) {
4902
+ rect0Result = itemStart;
4903
+ } else {
4904
+ if (direction <= 0) {
4905
+ let pre;
4906
+ if (targetStart < rect0End) {
4907
+ pre = targetStart;
4908
+ } else {
4909
+ pre = rect0End;
4910
+ }
4911
+ rect0Result = visibleInfo.start + (itemStart - pre);
4830
4912
  }
4913
+ }
4914
+ }
4915
+ if (itemEnd > rect1Start) {
4916
+ if (targetEnd > rect1End) {
4917
+ rect1Result = itemEnd - visibleInfo.range;
4831
4918
  } else {
4832
- if (targetTemplateInfo[pos_key] < visibleInfo.start) {
4833
- new_visible_start = targetTemplateInfo[pos_key] - visibleInfo.range * props.slideSetting.StartPercent;
4834
- } else if (targetTemplateInfo[pos_key] + targetTemplateInfo[size_key] > visibleInfo.end) {
4835
- new_visible_start = targetTemplateInfo[pos_key] + targetTemplateInfo[size_key] - visibleInfo.range * props.slideSetting.EndPercent;
4919
+ let pre;
4920
+ if (targetEnd > rect1Start) {
4921
+ pre = targetEnd;
4922
+ } else {
4923
+ pre = rect1Start;
4924
+ }
4925
+ if (direction >= 0) {
4926
+ rect1Result = visibleInfo.start + (itemEnd - pre);
4836
4927
  }
4837
4928
  }
4929
+ } else {
4930
+ }
4931
+ if (typeof rect0Result !== "undefined" && typeof rect1Result !== "undefined") {
4932
+ new_visible_start = rect0Result;
4933
+ } else if (typeof rect0Result !== "undefined") {
4934
+ new_visible_start = rect0Result;
4935
+ } else if (typeof rect1Result !== "undefined") {
4936
+ new_visible_start = rect1Result;
4838
4937
  }
4839
4938
  }
4840
4939
  break;
4841
4940
  default:
4842
4941
  console.error(
4843
4942
  "MetroWidget: undefined slide type",
4844
- props.slideSetting.Type
4943
+ innerSlideSetting.Type
4845
4944
  );
4846
4945
  }
4946
+ preTemplateInfo = targetTemplateInfo;
4847
4947
  new_visible_start = normalizeVisibleStart(new_visible_start, targetTemplateInfo);
4848
4948
  return Math.round(new_visible_start);
4849
4949
  };
@@ -4952,6 +5052,17 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4952
5052
  return -(divPos + Math.round(moveInfo.xPos));
4953
5053
  }
4954
5054
  };
5055
+ const getTouchCount = (nexusCustomData) => {
5056
+ let touchCount = -1;
5057
+ if (nexusCustomData) {
5058
+ try {
5059
+ touchCount = JSON.parse(nexusCustomData).tc;
5060
+ } catch (e) {
5061
+ touchCount = -1;
5062
+ }
5063
+ }
5064
+ return touchCount;
5065
+ };
4955
5066
  const mergeTouchSlideToSlideDiv = (touchCount) => {
4956
5067
  if (vertical) {
4957
5068
  slideDivTop.value = -visibleInfo.start;
@@ -4974,6 +5085,12 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4974
5085
  ]);
4975
5086
  };
4976
5087
  const onTouchDown = (data, customData, nexusCustomData) => {
5088
+ touchRecorder.reset();
5089
+ let touchCount = getTouchCount(nexusCustomData);
5090
+ touchRecorder.setTouchCount(touchCount);
5091
+ if (mode.getMode() == FOCUS_MODE) {
5092
+ updateTouchBoxCondition();
5093
+ }
4977
5094
  mode.touchStart();
4978
5095
  mode.flingEnd();
4979
5096
  const t = 100;
@@ -4991,8 +5108,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4991
5108
  templateItemAdder.tryAddItemByPosition(visibleInfo.end + visibleInfo.range);
4992
5109
  const updater = pageUpdater.update(
4993
5110
  metroTemplate,
4994
- visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
4995
- visibleInfo.endWithPadding + props.keepTraceRange * pageRange,
5111
+ visibleInfo.startWithPadding - innerKeepTraceRange * pageRange,
5112
+ visibleInfo.endWithPadding + innerKeepTraceRange * pageRange,
4996
5113
  0,
4997
5114
  false,
4998
5115
  permanentItemList
@@ -5021,9 +5138,17 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5021
5138
  if (mode.getTouchState() == TouchState.TAP) {
5022
5139
  updateRenderItems(false, false);
5023
5140
  mode.touchEnd();
5141
+ } else {
5142
+ if (touchRecorder.moved && !mode.duringFling()) {
5143
+ mergeTouchSlideToSlideDiv(touchRecorder.touchCount);
5144
+ updateRenderItems(false, false);
5145
+ mode.touchEnd();
5146
+ }
5024
5147
  }
5025
5148
  };
5149
+ const exportOnTouchRelease = props.touchFlag > 0 ? onTouchRelease : void 0;
5026
5150
  const onDragStart = (data, customData, nexusCustomData) => {
5151
+ touchRecorder.move();
5027
5152
  mode.dragStart();
5028
5153
  visibleInfo.start = getVisibleStart(data);
5029
5154
  };
@@ -5032,19 +5157,9 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5032
5157
  actorController.run([
5033
5158
  actorController.state().removeConditionByGroup(reachAnchorGroup)
5034
5159
  ]);
5035
- let touchCount = -1;
5036
- if (nexusCustomData) {
5037
- try {
5038
- touchCount = JSON.parse(nexusCustomData).tc;
5039
- } catch (e) {
5040
- touchCount = -1;
5041
- }
5042
- }
5043
- mergeTouchSlideToSlideDiv(touchCount);
5044
- updateRenderItems(false, false);
5045
- mode.touchEnd();
5046
5160
  };
5047
5161
  const onFlingStart = (data, customData, nexusCustomData) => {
5162
+ touchRecorder.move();
5048
5163
  mode.flingStart();
5049
5164
  visibleInfo.start = getVisibleStart(data);
5050
5165
  updateRenderItems(true, true);
@@ -5056,20 +5171,16 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5056
5171
  const onFlingEnd = (data, customData, nexusCustomData) => {
5057
5172
  visibleInfo.start = getVisibleStart(data);
5058
5173
  if (mode.duringFling()) {
5059
- let touchCount = -1;
5060
- if (nexusCustomData) {
5061
- try {
5062
- touchCount = JSON.parse(nexusCustomData).tc;
5063
- } catch (e) {
5064
- touchCount = -1;
5065
- }
5066
- }
5174
+ let touchCount = getTouchCount(nexusCustomData);
5067
5175
  mergeTouchSlideToSlideDiv(touchCount);
5068
5176
  updateRenderItems(false, false);
5069
5177
  mode.flingEnd();
5070
5178
  mode.touchEnd();
5071
5179
  }
5072
5180
  };
5181
+ const onFlingDrop = (data, customData, nexusCustomData) => {
5182
+ visibleInfo.start = getVisibleStart(data);
5183
+ };
5073
5184
  const getTouchWall = () => {
5074
5185
  const boxSize = metroTemplate.getBoundingBoxSize();
5075
5186
  let wall = {
@@ -5081,9 +5192,15 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5081
5192
  if (vertical) {
5082
5193
  wall.top = -boxSize.height + props.height - slideDivTop.value;
5083
5194
  wall.bottom = -slideDivTop.value;
5195
+ if (wall.top > wall.bottom) {
5196
+ wall.top = wall.bottom;
5197
+ }
5084
5198
  } else {
5085
5199
  wall.left = -boxSize.width + props.width - slideDivLeft.value;
5086
5200
  wall.right = -slideDivLeft.value;
5201
+ if (wall.left > wall.right) {
5202
+ wall.left = wall.right;
5203
+ }
5087
5204
  }
5088
5205
  return wall;
5089
5206
  };
@@ -5091,15 +5208,15 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5091
5208
  templateItemAdder.tryAddItemByPosition(visibleInfo.start + visibleInfo.range);
5092
5209
  const updater = pageUpdater.update(
5093
5210
  metroTemplate,
5094
- visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
5095
- visibleInfo.endWithPadding + props.keepTraceRange * pageRange,
5211
+ visibleInfo.startWithPadding - innerKeepTraceRange * pageRange,
5212
+ visibleInfo.endWithPadding + innerKeepTraceRange * pageRange,
5096
5213
  0,
5097
5214
  true,
5098
5215
  permanentItemList
5099
5216
  );
5100
5217
  applyTmp ? updater.applyTmp() : updater.apply();
5101
5218
  };
5102
- const resetDragRect = () => {
5219
+ const updateTouchBoxCondition = () => {
5103
5220
  if (actorController != null) {
5104
5221
  const walls = getTouchWall();
5105
5222
  actorController.run([
@@ -5109,6 +5226,20 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5109
5226
  ]);
5110
5227
  }
5111
5228
  };
5229
+ const touchRecorder = {
5230
+ moved: false,
5231
+ touchCount: -1,
5232
+ reset: function() {
5233
+ this.moved = false;
5234
+ this.touchCount = -1;
5235
+ },
5236
+ move: function() {
5237
+ this.moved = true;
5238
+ },
5239
+ setTouchCount: function(count) {
5240
+ this.touchCount = count;
5241
+ }
5242
+ };
5112
5243
  const initTouch = () => {
5113
5244
  actorController = new ActorControl();
5114
5245
  const divView = touchDiv.value.jsvGetProxyView();
@@ -5117,14 +5248,12 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5117
5248
  const walls = getTouchWall();
5118
5249
  actorController.run([
5119
5250
  actorController.condition(void 0, true).onTouchDown().then([onTouchDown]),
5120
- // actorController
5121
- // .condition(undefined, true)
5122
- // .onDragStart()
5123
- // .then([onDragStart]),
5251
+ actorController.condition(void 0, true).onDragStart().then([onDragStart]),
5124
5252
  actorController.condition(void 0, true).onDragEnd().then([onDragEnd]),
5125
5253
  actorController.condition(void 0, true).onFlingStart().then([onFlingStart]),
5126
5254
  actorController.condition(void 0, true).onFlingProgress().then([onFlingProgress]),
5127
5255
  actorController.condition(void 0, true).onFlingEnd().then([onFlingEnd]),
5256
+ actorController.condition(void 0, true).onFlingDrop().then([onFlingDrop]),
5128
5257
  actorController.condition(void 0, true).onTouchRelease().then([actorController.state().touchLockSwitch(false, vertical ? 1 : 2)]),
5129
5258
  actorController.condition(wallConditionGroup, true).boxPosition(walls.left, walls.top, walls.right, walls.bottom).then([actorController.state().setHitWallOverflow()])
5130
5259
  //TODO 通过prop设置哪个方向overflow
@@ -5160,7 +5289,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5160
5289
  if (item) {
5161
5290
  init_focus_id = props.initFocusId;
5162
5291
  if (item.itemConfig.itemSlide == METRO_WIDGET.ITEM_SLIDE.ACT_ITEM_FOCUS) {
5163
- cur_visible_start = _calculateVisibleStart(item.templateInfo, 1);
5292
+ cur_visible_start = _calculateVisibleStart(item.templateInfo, 0);
5164
5293
  }
5165
5294
  }
5166
5295
  }
@@ -5178,8 +5307,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5178
5307
  const delayLoadHandler = setTimeout(() => {
5179
5308
  const updateHandler = pageUpdater.update(
5180
5309
  metroTemplate,
5181
- visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
5182
- visibleInfo.endWithPadding + props.keepTraceRange * pageRange,
5310
+ visibleInfo.startWithPadding - innerKeepTraceRange * pageRange,
5311
+ visibleInfo.endWithPadding + innerKeepTraceRange * pageRange,
5183
5312
  focusId,
5184
5313
  false,
5185
5314
  permanentItemList
@@ -5223,7 +5352,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5223
5352
  exportObject,
5224
5353
  setZIndex,
5225
5354
  onTouchDown,
5226
- onTouchRelease,
5355
+ onTouchRelease: exportOnTouchRelease,
5227
5356
  currentFocusIndex,
5228
5357
  modeForExport
5229
5358
  };
@@ -5329,6 +5458,7 @@ const _sfc_main$H = {
5329
5458
  zIndex {int | object}: item的zIndex, 为object时可以分别设置{focus: 0, normal: 0}, 为number时则同时设置获焦和不获焦的zIndex,
5330
5459
  uid {string}: item的uid, 可以通过uid来设置焦点
5331
5460
  permanent {boolean}: 出去与是否保留
5461
+ enableTap {boolean}: 是否接受触控tap
5332
5462
  }
5333
5463
  *
5334
5464
  * onFocus {function} 控件获取焦点的回调
@@ -5339,6 +5469,10 @@ const _sfc_main$H = {
5339
5469
  "rect": 到达边缘时的区域{x: 0, y: 0, width: 0,height: 0}
5340
5470
  }
5341
5471
  onScroll {function} 滚动时的回调 (visibleStart, visibleRange, totalSize) => {}
5472
+ (TBD:
5473
+ 当前版本暂时不支持触控过程的实时回调,
5474
+ 由于回调js会严重拖慢性能,所以也不会设计实时回调,
5475
+ 关于边缘的拖动进度展示,将来会有额外组件支撑)
5342
5476
  visibleStart: 可视区域的起点
5343
5477
  visibleRange: 可视区域大小(不含padding)
5344
5478
  totalSize: 所有item的总长
@@ -5348,6 +5482,7 @@ const _sfc_main$H = {
5348
5482
  * flingPageWidth {}
5349
5483
  * flingPageEdge {}
5350
5484
  * disableClip {boolean} 取消显示范围的clipView
5485
+ * touchFlag {int} 触控的开关, 0:关闭, 1:打开. 打开后支持drag, fling; item的tap则由measuresObject的enableTap控制
5351
5486
 
5352
5487
  * methods:
5353
5488
  getFocusBlockRef 获取此MetroWidget的 jsv-focus-block句柄,可以使用requestFocus完成获焦
@@ -5434,6 +5569,9 @@ const _sfc_main$H = {
5434
5569
  @description 锁定滚动
5435
5570
  unlockSlide
5436
5571
  @description 取消锁定
5572
+ setSlideSetting
5573
+ @description 设置slideSetting
5574
+ @params { SlideSetting | null } setting 滚动设置, 为null时使用props.slideSetting
5437
5575
 
5438
5576
  slots:
5439
5577
  renderItem: 该slot用于描画每个单元格
@@ -5610,7 +5748,7 @@ const _sfc_main$G = {
5610
5748
  },
5611
5749
  keepTraceRange: {
5612
5750
  type: Number,
5613
- default: 3
5751
+ default: -1
5614
5752
  },
5615
5753
  onScroll: {
5616
5754
  type: Function
@@ -5684,6 +5822,10 @@ const _sfc_main$G = {
5684
5822
  touchDivSize,
5685
5823
  "common"
5686
5824
  );
5825
+ let touchDivVOn = {};
5826
+ if (onTouchRelease) {
5827
+ touchDivVOn["jsv-touchend"] = onTouchRelease;
5828
+ }
5687
5829
  expose(exportObject);
5688
5830
  return (_ctx, _cache) => {
5689
5831
  const _component_jsv_focus_block = resolveComponent("jsv-focus-block");
@@ -5712,15 +5854,14 @@ const _sfc_main$G = {
5712
5854
  top: slideDivTop.value
5713
5855
  })
5714
5856
  }, [
5715
- createElementVNode("div", {
5857
+ createElementVNode("div", mergeProps({
5716
5858
  ref_key: "touchDiv",
5717
5859
  ref: touchDiv,
5718
- style: normalizeStyle({
5860
+ style: {
5719
5861
  width: touchDivSize.width,
5720
5862
  height: touchDivSize.height
5721
- }),
5722
- onJsvTouchend: _cache[0] || (_cache[0] = (...args) => unref(onTouchRelease) && unref(onTouchRelease)(...args))
5723
- }, [
5863
+ }
5864
+ }, toHandlers(unref(touchDivVOn), true)), [
5724
5865
  createElementVNode("div", null, [
5725
5866
  renderSlot(_ctx.$slots, "background")
5726
5867
  ]),
@@ -5789,7 +5930,7 @@ const _sfc_main$G = {
5789
5930
  _: 3
5790
5931
  }, 8, ["name", "onAction"])
5791
5932
  ], 512)
5792
- ], 36),
5933
+ ], 16),
5793
5934
  createElementVNode("div", null, [
5794
5935
  renderSlot(_ctx.$slots, "foreground")
5795
5936
  ])
@@ -5923,7 +6064,7 @@ const _sfc_main$F = {
5923
6064
  },
5924
6065
  keepTraceRange: {
5925
6066
  type: Number,
5926
- default: 3
6067
+ default: -1
5927
6068
  },
5928
6069
  onScroll: {
5929
6070
  type: Function
@@ -5996,6 +6137,10 @@ const _sfc_main$F = {
5996
6137
  touchDivSize,
5997
6138
  "list"
5998
6139
  );
6140
+ let touchDivVOn = {};
6141
+ if (onTouchRelease) {
6142
+ touchDivVOn["jsv-touchend"] = onTouchRelease;
6143
+ }
5999
6144
  expose(exportObject);
6000
6145
  return (_ctx, _cache) => {
6001
6146
  const _component_jsv_focus_block = resolveComponent("jsv-focus-block");
@@ -6024,15 +6169,14 @@ const _sfc_main$F = {
6024
6169
  top: slideDivTop.value
6025
6170
  })
6026
6171
  }, [
6027
- createElementVNode("div", {
6172
+ createElementVNode("div", mergeProps({
6028
6173
  ref_key: "touchDiv",
6029
6174
  ref: touchDiv,
6030
- style: normalizeStyle({
6175
+ style: {
6031
6176
  width: touchDivSize.width,
6032
6177
  height: touchDivSize.height
6033
- }),
6034
- onJsvTouchend: _cache[0] || (_cache[0] = (...args) => unref(onTouchRelease) && unref(onTouchRelease)(...args))
6035
- }, [
6178
+ }
6179
+ }, toHandlers(unref(touchDivVOn), true)), [
6036
6180
  createElementVNode("div", null, [
6037
6181
  renderSlot(_ctx.$slots, "background")
6038
6182
  ]),
@@ -6096,7 +6240,7 @@ const _sfc_main$F = {
6096
6240
  _: 3
6097
6241
  }, 8, ["name", "onAction"])
6098
6242
  ], 512)
6099
- ], 36),
6243
+ ], 16),
6100
6244
  createElementVNode("div", null, [
6101
6245
  renderSlot(_ctx.$slots, "foreground")
6102
6246
  ])
@@ -8474,7 +8618,7 @@ function preDownloadSdk(core_version) {
8474
8618
  return direct_call("preDownloadSdk", core_version);
8475
8619
  }
8476
8620
  // 显示声明,可以提高执行速度和利用上编辑器的成员名提示功能
8477
- const bridge = {
8621
+ const jJsvRuntimeBridge = {
8478
8622
  getMac,
8479
8623
  getWireMac,
8480
8624
  getWifiMac,
@@ -16644,6 +16788,16 @@ const _sfc_main$9 = {
16644
16788
  return "center";
16645
16789
  }
16646
16790
  });
16791
+ const textWidth = computed(() => {
16792
+ let w = props.style?.width;
16793
+ if (typeof w == "undefined") {
16794
+ w = 0;
16795
+ }
16796
+ return w;
16797
+ });
16798
+ const jsvTextLatexValue = computed(() => {
16799
+ return props.enableLatex ? 1 : 0;
16800
+ });
16647
16801
  return (_ctx, _cache) => {
16648
16802
  return openBlock(), createBlock(unref(_sfc_main$w), {
16649
16803
  style: normalizeStyle({
@@ -16655,8 +16809,8 @@ const _sfc_main$9 = {
16655
16809
  default: withCtx(() => [
16656
16810
  createElementVNode("div", {
16657
16811
  style: normalizeStyle({
16658
- width: props.style.width,
16659
- JsvTextLatex: __props.enableLatex ? 1 : 0,
16812
+ width: unref(textWidth),
16813
+ JsvTextLatex: unref(jsvTextLatexValue),
16660
16814
  JsvTextLineAlign: __props.lineAlign,
16661
16815
  JsvTextInnerDirection: __props.textDirection
16662
16816
  })
@@ -18618,13 +18772,14 @@ function swap(arr, i, j) {
18618
18772
  function defaultCompare(a, b) {
18619
18773
  return a < b ? -1 : a > b ? 1 : 0;
18620
18774
  }
18621
- var RBush = function RBush2(maxEntries) {
18775
+ function RBush(maxEntries) {
18622
18776
  if (maxEntries === void 0)
18623
18777
  maxEntries = 9;
18624
18778
  this._maxEntries = Math.max(4, maxEntries);
18625
18779
  this._minEntries = Math.max(2, Math.ceil(this._maxEntries * 0.4));
18626
18780
  this.clear();
18627
- };
18781
+ }
18782
+ ;
18628
18783
  RBush.prototype.all = function all() {
18629
18784
  return this._all(this.data, []);
18630
18785
  };
@@ -19631,4 +19786,4 @@ const _sfc_main = {
19631
19786
  // utils/index.js;
19632
19787
  //
19633
19788
 
19634
- export { BaseDispatcher, DECORATE_BORDER_RADIUS, DECORATE_NINEPATCH_ALPHA_MIX, DebugObjectRefer, DebugTools, DebugWrap81ErrorStack, DebugWrap81WarnStack, DefaultKeyCodeMap, EdgeDirection, FixPositionSlide, FocusMoveType, FreeMoveDef, FreeMoveFunc, HORIZONTAL, InputType, instance as JSBridge, JsvAccount, _sfc_main$z as JsvActorMove, JsvActorMoveControl, _JsvApic$1 as JsvApic, _JsvApic2$1 as JsvApic2, _sfc_main$C as JsvAudio, _sfc_main$3 as JsvConnectLine, _sfc_main$1 as JsvEnableRenderBreak, _sfc_main$x as JsvEnvBlocker, JsvFederationTools, _sfc_main$i as JsvFilterView, _sfc_main$w as JsvFlexDiv, _sfc_main$E as JsvFocusBlock, _sfc_main$y as JsvFreeMoveActor, JsvGrid, JsvTransparentDiv as JsvHole, JsvInput, _sfc_main$A as JsvLatex, JsvLine, _sfc_main$f as JsvMarquee, JsvMaskClipDiv, _sfc_main as JsvMindMap, JsvTransparentDiv as JsvNativeSharedDiv, _sfc_main$d as JsvNinePatch, JsvPerformance, _sfc_main$4 as JsvPieChart, _sfc_main$c as JsvPosterDiv, _sfc_main$b as JsvPosterImage, exportObj as JsvPreDownloader, JsvPreload, _sfc_main$2 as JsvProgressBar, _JsvQrcode$1 as JsvQrcode, _sfc_main$8 as JsvRadarChart, _sfc_main$7 as JsvRipple, JsvRippleShape, JsvScaleTextBox, _sfc_main$5 as JsvSector, JsvSoundPool, _JsvSpray$1 as JsvSpray, JsvSpriteAnim, _sfc_main$n as JsvSpriteLoader, JsvSpriteAnim as JsvSpriteStatic, JsvSpriteTools, JsvStyleClass, JsvStyleSheetsDeclarer, JsvSwiper, _sfc_main$k as JsvSwiper3D, _sfc_main$9 as JsvTextBox, JsvTextStyleClass, _JsvTextureAnim$1 as JsvTextureAnim, sJsvTextureConst as JsvTextureConst, sTextureStoreApi as JsvTextureStoreApi, JsvTransparentDiv, JsvVisibleSensor, LineType, _sfc_main$F as ListWidget, LoopType, METRO_WIDGET, METRO_WIDGET as METRO_WIDGET_CONST, _sfc_main$G as MetroWidget, PageType, RENDER_ITEM_BREAK_KEY, Dispatcher as SWidgetDispatcher, SeamlessSlide, _sfc_main$G as SimpleWidget, SlideSetting, SlideStyle, SpriteController, TexAlignAnchor, TextTools, TextureInstantType, VERTICAL, WholePageSlide, buildDownloadInfo, buildPreloadInfo, combinedStyles, createImpactAutoFroze, createImpactCallback, createImpactTracer, disableNativeViewListener, enableNativeViewListener, getCssStyleGroup, getKeyFramesGroup, getMeasureObj, getPositionRelativeToView, getTextWidth, globalLoadJsvAudioPlugin, globalLoadJsvLatexPlugin, bridge as jJsvRuntimeBridge, jsvCreateFocusManager, jsvCreateHashHistory, numberCheckSet, toHtmlBorderSet, toNinePatchForgeViewSet, updateImpactAutoFroze, urlCheckSet, useFocusHub };
19789
+ export { BaseDispatcher, DECORATE_BORDER_RADIUS, DECORATE_NINEPATCH_ALPHA_MIX, DebugObjectRefer, DebugTools, DebugWrap81ErrorStack, DebugWrap81WarnStack, DefaultKeyCodeMap, EdgeDirection, FixPositionSlide, FocusMoveType, FreeMoveDef, FreeMoveFunc, HORIZONTAL, InputType, instance as JSBridge, JsvAccount, _sfc_main$z as JsvActorMove, JsvActorMoveControl, _JsvApic$1 as JsvApic, _JsvApic2$1 as JsvApic2, _sfc_main$C as JsvAudio, _sfc_main$3 as JsvConnectLine, _sfc_main$1 as JsvEnableRenderBreak, _sfc_main$x as JsvEnvBlocker, JsvFederationTools, _sfc_main$i as JsvFilterView, _sfc_main$w as JsvFlexDiv, _sfc_main$E as JsvFocusBlock, _sfc_main$y as JsvFreeMoveActor, JsvGrid, JsvTransparentDiv as JsvHole, JsvInput, _sfc_main$A as JsvLatex, JsvLine, _sfc_main$f as JsvMarquee, JsvMaskClipDiv, _sfc_main as JsvMindMap, JsvTransparentDiv as JsvNativeSharedDiv, _sfc_main$d as JsvNinePatch, JsvPerformance, _sfc_main$4 as JsvPieChart, _sfc_main$c as JsvPosterDiv, _sfc_main$b as JsvPosterImage, exportObj as JsvPreDownloader, JsvPreload, _sfc_main$2 as JsvProgressBar, _JsvQrcode$1 as JsvQrcode, _sfc_main$8 as JsvRadarChart, _sfc_main$7 as JsvRipple, JsvRippleShape, JsvScaleTextBox, _sfc_main$5 as JsvSector, JsvSoundPool, _JsvSpray$1 as JsvSpray, JsvSpriteAnim, _sfc_main$n as JsvSpriteLoader, JsvSpriteAnim as JsvSpriteStatic, JsvSpriteTools, JsvStyleClass, JsvStyleSheetsDeclarer, JsvSwiper, _sfc_main$k as JsvSwiper3D, _sfc_main$9 as JsvTextBox, JsvTextStyleClass, _JsvTextureAnim$1 as JsvTextureAnim, sJsvTextureConst as JsvTextureConst, sTextureStoreApi as JsvTextureStoreApi, JsvTransparentDiv, JsvVisibleSensor, LineType, _sfc_main$F as ListWidget, LoopType, METRO_WIDGET, METRO_WIDGET as METRO_WIDGET_CONST, _sfc_main$G as MetroWidget, PageType, RENDER_ITEM_BREAK_KEY, Dispatcher as SWidgetDispatcher, SeamlessSlide, _sfc_main$G as SimpleWidget, SlideSetting, SlideStyle, SpriteController, TexAlignAnchor, TextTools, TextureInstantType, VERTICAL, WholePageSlide, buildDownloadInfo, buildPreloadInfo, combinedStyles, createImpactAutoFroze, createImpactCallback, createImpactTracer, disableNativeViewListener, enableNativeViewListener, getCssStyleGroup, getKeyFramesGroup, getMeasureObj, getPositionRelativeToView, getTextWidth, globalLoadJsvAudioPlugin, globalLoadJsvLatexPlugin, jJsvRuntimeBridge, jsvCreateFocusManager, jsvCreateHashHistory, numberCheckSet, toHtmlBorderSet, toNinePatchForgeViewSet, updateImpactAutoFroze, urlCheckSet, useFocusHub };