@shijiu/jsview-vue 0.9.502 → 0.9.631

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 (240) 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/target_core_revision.js +4 -3
  4. package/index.js +10 -0
  5. package/package.json +8 -1
  6. package/patches/node_modules/@vue/runtime-core/dist/runtime-core.esm-bundler.js +16 -5
  7. package/samples/AnimPicture/App.vue +89 -106
  8. package/samples/Basic/App.vue +65 -68
  9. package/samples/Basic/components/ContentBlock.vue +31 -36
  10. package/samples/Basic/components/anim/AnimGroup.vue +61 -75
  11. package/samples/Basic/components/anim/AnimKeyframeBasic.vue +54 -43
  12. package/samples/Basic/components/anim/AnimKeyframeComposite.vue +25 -31
  13. package/samples/Basic/components/anim/AnimTransition.vue +142 -105
  14. package/samples/Basic/components/div/DivBackground.vue +38 -16
  15. package/samples/Basic/components/div/DivClip.vue +143 -78
  16. package/samples/Basic/components/div/DivCssScoped.vue +10 -10
  17. package/samples/Basic/components/div/DivCssVar.vue +40 -42
  18. package/samples/Basic/components/div/DivGroup1.vue +45 -39
  19. package/samples/Basic/components/div/DivGroup2.vue +56 -45
  20. package/samples/Basic/components/div/DivLayout.vue +63 -5
  21. package/samples/Basic/components/div/DivRadius.vue +51 -42
  22. package/samples/Basic/components/div/DivTransform.vue +21 -16
  23. package/samples/Basic/components/panel/Panel1.vue +46 -44
  24. package/samples/Basic/components/panel/Panel2.vue +22 -26
  25. package/samples/Basic/components/panel/TitleBar.vue +12 -12
  26. package/samples/Basic/components/text/TextAlign.vue +54 -44
  27. package/samples/Basic/components/text/TextEmoji.vue +16 -20
  28. package/samples/Basic/components/text/TextFontStyle.vue +77 -53
  29. package/samples/Basic/components/text/TextGroup1.vue +46 -38
  30. package/samples/Basic/components/text/TextGroup2.vue +25 -28
  31. package/samples/Basic/components/text/TextOverflow.vue +78 -59
  32. package/samples/BasicFocusControl/App.vue +22 -43
  33. package/samples/BasicFocusControl/components/BaseBlock.vue +42 -43
  34. package/samples/BasicFocusControl/components/MainArea.vue +55 -70
  35. package/samples/BasicFocusControl/components/MainAreaLeftBlock.vue +11 -15
  36. package/samples/BasicFocusControl/components/MainAreaRightBlock.vue +21 -24
  37. package/samples/BasicFocusControl/components/SideBar.vue +32 -47
  38. package/samples/BasicFocusControl/components/SideBarBlock.vue +20 -23
  39. package/samples/Collision/App.vue +452 -0
  40. package/samples/ColorSpace/App.vue +15 -24
  41. package/samples/DemoHomepage/App.vue +7 -11
  42. package/samples/DemoHomepage/components/BodyFrame.vue +21 -9
  43. package/samples/DemoHomepage/components/TabFrame.vue +7 -8
  44. package/samples/DemoHomepage/router.js +52 -33
  45. package/samples/DemoHomepage/views/Homepage.vue +18 -9
  46. package/samples/FilterDemo/AnimatePic.vue +58 -0
  47. package/samples/FilterDemo/App.vue +99 -61
  48. package/samples/FilterDemo/VideoLayer.vue +62 -0
  49. package/samples/FlipCard/App.vue +32 -41
  50. package/samples/FlipCard/FlipCard.vue +48 -54
  51. package/samples/GridDemo/App.vue +109 -77
  52. package/samples/GridDemo/ButtonBlock.vue +50 -49
  53. package/samples/GridDemo/FocusItem.vue +19 -38
  54. package/samples/GridDemo/Item.vue +46 -54
  55. package/samples/HashHistory/App.vue +63 -79
  56. package/samples/HashHistory/components/HorizontalButtonList.vue +72 -95
  57. package/samples/HashHistory/components/Item.vue +42 -56
  58. package/samples/HashHistory/router.js +23 -12
  59. package/samples/HashHistory/views/MainPage.vue +35 -46
  60. package/samples/HashHistory/views/SubPage.vue +34 -47
  61. package/samples/ImpactStop/App.vue +435 -0
  62. package/samples/Input/App.vue +8 -18
  63. package/samples/Input/FullKeyboard.vue +2 -6
  64. package/samples/Input/InputPanel.vue +18 -12
  65. package/samples/Input/KeyboardItem.vue +1 -1
  66. package/samples/LongImage/App.vue +11 -27
  67. package/samples/LongImage/Button.vue +50 -145
  68. package/samples/LongImage/ButtonItem.vue +44 -0
  69. package/samples/LongImage/LongImageScroll.vue +71 -106
  70. package/samples/LongImage/Scroll.vue +7 -9
  71. package/samples/LongText/App.vue +13 -28
  72. package/samples/LongText/Button.vue +43 -145
  73. package/samples/LongText/ButtonItem.vue +44 -0
  74. package/samples/LongText/LongTextScroll.vue +68 -101
  75. package/samples/LongText/Scroll.vue +7 -9
  76. package/samples/Marquee/App.vue +34 -37
  77. package/samples/MaskClip/App.vue +17 -30
  78. package/samples/MetroWidgetDemos/Advanced/App.vue +47 -0
  79. package/samples/MetroWidgetDemos/Advanced/ButtonItem.vue +90 -0
  80. package/samples/MetroWidgetDemos/Advanced/Buttons.vue +70 -0
  81. package/samples/MetroWidgetDemos/Advanced/Mixed.vue +77 -0
  82. package/samples/MetroWidgetDemos/Advanced/Widgets.vue +71 -0
  83. package/samples/MetroWidgetDemos/Item.vue +67 -0
  84. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/App.vue +80 -104
  85. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/Item.vue +7 -0
  86. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/bg.jpg +0 -0
  87. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_content.png +0 -0
  88. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_left.png +0 -0
  89. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_mid.png +0 -0
  90. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_right.png +0 -0
  91. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/focus_border.png +0 -0
  92. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/holder_logo.png +0 -0
  93. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/jrbm.png +0 -0
  94. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_left.png +0 -0
  95. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_mid.png +0 -0
  96. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_right.png +0 -0
  97. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/loading.png +0 -0
  98. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/logo.png +0 -0
  99. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/mcjx.png +0 -0
  100. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/tao.png +0 -0
  101. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/tmall.png +0 -0
  102. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/border.png +0 -0
  103. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/components/ContentItem.vue +60 -86
  104. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/components/MyTab.vue +0 -0
  105. package/samples/MetroWidgetDemos/PerformanceTest/data.js +45 -0
  106. package/samples/MetroWidgetDemos/PingPong/App.vue +135 -0
  107. package/samples/MetroWidgetDemos/PingPong/AppPage.vue +73 -0
  108. package/samples/MetroWidgetDemos/PingPong/AppTab.vue +62 -0
  109. package/samples/MetroWidgetDemos/PingPong/TabItem.vue +84 -0
  110. package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +214 -0
  111. package/samples/MetroWidgetDemos/Simple/AbsoluteTemplate.vue +75 -0
  112. package/samples/MetroWidgetDemos/Simple/App.vue +45 -0
  113. package/samples/MetroWidgetDemos/Simple/RelativeTemplate.vue +111 -0
  114. package/samples/MetroWidgetDemos/WidgetItem.vue +89 -0
  115. package/samples/MetroWidgetDemos/data.js +204 -0
  116. package/samples/NinePatchDemo/App.vue +114 -115
  117. package/samples/NinePatchDemo/Item.vue +7 -8
  118. package/samples/Preload/App.vue +67 -64
  119. package/samples/Preload/Item.vue +21 -29
  120. package/samples/QrcodeDemo/App.vue +24 -29
  121. package/samples/SoundPool/App.vue +77 -106
  122. package/samples/SprayView/App.vue +10 -8
  123. package/samples/SpriteImage/App.vue +1 -2
  124. package/samples/TextBox/App.vue +86 -101
  125. package/samples/TextBox/RenderCenter.vue +1 -1
  126. package/samples/TextBox/RenderLeft.vue +1 -1
  127. package/samples/TextBox/RenderOneLine.vue +1 -1
  128. package/samples/TextBox/RenderRight.vue +1 -1
  129. package/samples/TextShadowDemo/App.vue +1 -2
  130. package/samples/TextureAnimation/App.vue +16 -13
  131. package/samples/TextureAnimation/App2.vue +111 -0
  132. package/samples/TextureAnimation/assets/blackWhiteGrid.png +0 -0
  133. package/samples/TextureAnimation/assets/light.png +0 -0
  134. package/samples/TextureAnimation/assets/light2.png +0 -0
  135. package/samples/TextureAnimation/assets/mask.png +0 -0
  136. package/samples/TextureSize/App.vue +15 -25
  137. package/samples/ThrowMoveDemo/AccelerateDemo.vue +2 -4
  138. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +2 -3
  139. package/samples/ThrowMoveDemo/TargetDemo.vue +3 -4
  140. package/samples/ThrowMoveDemo/UDParabolicDemo.vue +2 -3
  141. package/samples/TouchSample/App.vue +2 -3
  142. package/samples/TouchSample/Item.vue +15 -13
  143. package/samples/TouchSample/MetroWidgetHorizontal.vue +2 -2
  144. package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
  145. package/samples/TouchSample/TouchContainerHorizontal.vue +4 -3
  146. package/samples/TouchSample/TouchContainerVertical.vue +3 -2
  147. package/samples/TransitPage/App.vue +20 -32
  148. package/samples/VideoDemo/App.vue +65 -81
  149. package/samples/VideoDemo/components/Button.vue +41 -52
  150. package/samples/VideoDemo/components/Controllor.vue +171 -169
  151. package/samples/VideoDemo/components/VideoFrame.vue +87 -99
  152. package/samples/VisibleSensorDemo/App.vue +234 -0
  153. package/scripts/jsview-jsmap-serve.js +42 -0
  154. package/scripts/jsview-post-install.js +1 -1
  155. package/tsconfig.json +3 -0
  156. package/utils/JsViewEngineWidget/JsvFocusBlock.vue +204 -193
  157. package/utils/JsViewEngineWidget/JsvFocusManager.js +30 -17
  158. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +1561 -1656
  159. package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.js +136 -0
  160. package/utils/JsViewEngineWidget/MetroWidget/ToolFunctions.js +18 -0
  161. package/utils/JsViewEngineWidget/TemplateParser.js +111 -1
  162. package/utils/JsViewEngineWidget/WidgetCommon.js +8 -2
  163. package/utils/JsViewEngineWidget/index.js +4 -4
  164. package/utils/JsViewPlugin/JsvPlayer/GetVersion.js +1 -1
  165. package/utils/JsViewPlugin/JsvPlayer/JsvMedia.js +301 -58
  166. package/utils/JsViewPlugin/JsvPlayer/JsvPlayer.vue +22 -3
  167. package/utils/JsViewPlugin/JsvPlayer/index.js +8 -1
  168. package/utils/JsViewPlugin/JsvPlayer/version.js +5 -5
  169. package/utils/JsViewVueTools/JsvImpactTracer.js +113 -0
  170. package/utils/JsViewVueTools/JsvRefTaker.js +35 -0
  171. package/utils/JsViewVueTools/index.js +20 -0
  172. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +11 -1
  173. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +8 -4
  174. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserTextureAnim.vue +203 -14
  175. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +2 -2
  176. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +2 -2
  177. package/utils/JsViewVueWidget/JsvFilterView.vue +59 -51
  178. package/utils/JsViewVueWidget/JsvGrid.vue +139 -41
  179. package/utils/JsViewVueWidget/JsvInput/Cursor.vue +4 -2
  180. package/utils/JsViewVueWidget/JsvInput/JsvInput.vue +13 -12
  181. package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +3 -1
  182. package/utils/JsViewVueWidget/JsvNativeSharedDiv.vue +8 -17
  183. package/utils/JsViewVueWidget/JsvNinePatch.vue +1 -1
  184. package/utils/JsViewVueWidget/JsvPosterDiv.vue +37 -7
  185. package/utils/JsViewVueWidget/JsvPosterImage.vue +34 -13
  186. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +39 -53
  187. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +1 -1
  188. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +13 -10
  189. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +282 -285
  190. package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +2 -3
  191. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +6 -1
  192. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +6 -1
  193. package/utils/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue +142 -61
  194. package/utils/JsViewVueWidget/JsvTextureAnim/index.js +9 -5
  195. package/utils/JsViewVueWidget/JsvTransparentDiv.vue +7 -8
  196. package/utils/JsViewVueWidget/JsvVideo.vue +9 -12
  197. package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +141 -0
  198. package/utils/JsViewVueWidget/JsvVisibleSensor/index.js +9 -0
  199. package/utils/JsViewVueWidget/index.js +42 -0
  200. package/samples/AdvanceMetroWidget/App.vue +0 -123
  201. package/samples/AdvanceMetroWidget/Frame.vue +0 -102
  202. package/samples/AdvanceMetroWidget/Item.vue +0 -63
  203. package/samples/AdvanceMetroWidget/data.js +0 -137
  204. package/samples/ClassNameDemo/App.vue +0 -119
  205. package/samples/ClassNameDemo/components/ContentItem.vue +0 -253
  206. package/samples/ClassNameDemo/components/LoadingView.vue +0 -43
  207. package/samples/ClassNameDemo/components/TitleView.vue +0 -24
  208. package/samples/ClassNameDemo/data.js +0 -24
  209. package/samples/FlowMultiWidget/App.vue +0 -91
  210. package/samples/FlowMultiWidget/assets/nine_patch_focus.png +0 -0
  211. package/samples/FlowMultiWidget/components/Block.vue +0 -107
  212. package/samples/FlowMultiWidget/components/FlowPage.vue +0 -60
  213. package/samples/FlowMultiWidget/components/Item.vue +0 -103
  214. package/samples/FlowMultiWidget/components/MenuItem.vue +0 -72
  215. package/samples/FlowMultiWidget/components/MyMenu.vue +0 -90
  216. package/samples/FlowMultiWidget/data.js +0 -446
  217. package/samples/HashHistory/views/BasePage.vue +0 -19
  218. package/samples/HashHistory/views/SubPageFirst.vue +0 -10
  219. package/samples/HashHistory/views/SubPageSecond.vue +0 -10
  220. package/samples/SimpleWidgetDemo/assets/bg.jpg +0 -0
  221. package/samples/SimpleWidgetDemo/assets/coupon_content.png +0 -0
  222. package/samples/SimpleWidgetDemo/assets/coupon_left.png +0 -0
  223. package/samples/SimpleWidgetDemo/assets/coupon_mid.png +0 -0
  224. package/samples/SimpleWidgetDemo/assets/coupon_right.png +0 -0
  225. package/samples/SimpleWidgetDemo/assets/focus_border.png +0 -0
  226. package/samples/SimpleWidgetDemo/assets/holder_logo.png +0 -0
  227. package/samples/SimpleWidgetDemo/assets/jrbm.png +0 -0
  228. package/samples/SimpleWidgetDemo/assets/line_left.png +0 -0
  229. package/samples/SimpleWidgetDemo/assets/line_mid.png +0 -0
  230. package/samples/SimpleWidgetDemo/assets/line_right.png +0 -0
  231. package/samples/SimpleWidgetDemo/assets/loading.png +0 -0
  232. package/samples/SimpleWidgetDemo/assets/logo.png +0 -0
  233. package/samples/SimpleWidgetDemo/assets/mcjx.png +0 -0
  234. package/samples/SimpleWidgetDemo/assets/tao.png +0 -0
  235. package/samples/SimpleWidgetDemo/assets/tmall.png +0 -0
  236. package/samples/SimpleWidgetDemo/data.js +0 -124
  237. package/utils/JsViewEngineWidget/MetroWidget/ContentView.vue +0 -63
  238. package/utils/JsViewEngineWidget/MetroWidget/DivWrapper.vue +0 -51
  239. package/utils/JsViewEngineWidget/MetroWidget/ItemView.vue +0 -213
  240. package/utils/JsViewEngineWidget/MetroWidget/RootView.vue +0 -154
@@ -2,7 +2,7 @@
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2021-10-13 13:14:42
4
4
  * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-04-25 15:37:04
5
+ * @LastEditTime: 2022-08-02 13:35:10
6
6
  * @Description: file content
7
7
  -->
8
8
 
@@ -175,5 +175,5 @@ export default {
175
175
  </script>
176
176
 
177
177
  <template>
178
- <img alt="" ref="element" :src="src" :style="style" />
178
+ <img jsv_disable_apic_autoplay alt="" ref="element" :src="src" :style="style" />
179
179
  </template>
@@ -6,68 +6,76 @@
6
6
  * height {int} 高
7
7
  * left {int} left位置
8
8
  * top {int} top位置
9
- * methods说明:
10
- * enableFilter
11
- @description 开关滤镜
12
- @params {boolean} enable 滤镜是否生效
9
+ * filterType {String} 滤镜设置:
10
+ * null: 无滤镜
11
+ * "gray-down": 黑白滤镜(公祭日滤镜)
13
12
  -->
14
- <script>
13
+ <script setup>
15
14
  import { Forge, ForgeExtension } from "../../dom/jsv-forge-define";
15
+ import { onBeforeUnmount, watchEffect } from "vue";
16
16
 
17
- export default {
18
- props: {
19
- width: {
20
- type: Number,
21
- },
22
- height: {
23
- type: Number,
24
- },
25
- left: {
26
- type: Number,
27
- default: 0,
28
- },
29
- top: {
30
- type: Number,
31
- default: 0,
32
- },
17
+ const props = defineProps({
18
+ width: {
19
+ type: Number,
33
20
  },
34
- setup() {
35
- return {
36
- filterView: null,
37
- };
21
+ height: {
22
+ type: Number,
38
23
  },
39
- created() {
40
- this.filterView = new Forge.FilterView();
41
- const view_store = ForgeExtension.RootActivity
42
- ? ForgeExtension.RootActivity.ViewStore
43
- : Forge.sViewStore;
44
- this.viewId = view_store.add(
45
- new Forge.ViewInfo(this.filterView, {
46
- x: this.left,
47
- y: this.top,
48
- width: this.width,
49
- height: this.height,
50
- })
51
- );
24
+ left: {
25
+ type: Number,
26
+ default: 0,
27
+ },
28
+ top: {
29
+ type: Number,
30
+ default: 0,
52
31
  },
53
- beforeUnmount() {
54
- const view_store = ForgeExtension.RootActivity
32
+ filterType: {
33
+ type: String,
34
+ default: null,
35
+ }
36
+ });
37
+
38
+ let filterView = new Forge.FilterView();
39
+ const view_store = ForgeExtension.RootActivity
40
+ ? ForgeExtension.RootActivity.ViewStore
41
+ : Forge.sViewStore;
42
+
43
+ let viewId = view_store.add(
44
+ new Forge.ViewInfo(filterView)
45
+ );
46
+
47
+ // 监控filter改变
48
+ watchEffect(() => {
49
+ if (filterView) {
50
+ console.log(`filterType change to ${props.filterType}`)
51
+ switch (props.filterType) {
52
+ case "gray-down":
53
+ filterView.FilterSwitch(true);
54
+ break;
55
+ default:
56
+ filterView.FilterSwitch(false);
57
+ }
58
+ }
59
+ });
60
+
61
+ onBeforeUnmount(() => {
62
+ const view_store = ForgeExtension.RootActivity
55
63
  ? ForgeExtension.RootActivity.ViewStore
56
64
  : Forge.sViewStore;
57
- view_store.remove(this.viewId);
58
- },
59
- methods: {
60
- enableFilter(enable) {
61
- if (this.filterView) {
62
- this.filterView.FilterSwitch(enable);
63
- }
64
- },
65
- },
66
- };
65
+ view_store.remove(viewId);
66
+ });
67
+
67
68
  </script>
68
69
 
69
70
  <template>
70
- <div :jsv_innerview="viewId">
71
+ <div
72
+ :style="{
73
+ left: left,
74
+ top: top,
75
+ width: width,
76
+ height: height
77
+ }"
78
+ :jsv_innerview="viewId">
71
79
  <slot></slot>
72
80
  </div>
73
81
  </template>
@@ -17,11 +17,18 @@
17
17
  * gapInfo {Object} 格子间隔设置 {row: 行间距, colum: 列间距}
18
18
  * verticalUpdate {boolean} 是否纵向滚动
19
19
  * columnFirst {boolean} 单页是否列优先排布
20
+ * loopUpdate {boolean} 焦点移动到边界时循环滚动
20
21
  * onEdge {function} 焦点移动到边缘时的回调
21
22
  * @params {object} edgeInfo {
22
23
  "direction": {EdgeDirection}边缘方向,
23
24
  "rect": 到达边缘时的区域{x: 0, y: 0, width: 0,height: 0}
24
25
  }
26
+ * focusMoveType {int} 焦点移动的模式, 可通过 | 运算进行组合
27
+ NO_ADJUST: 无特殊处理
28
+ COLUMN_LOOP: 到达列首/尾后跳转到上/下一列, 只在水平滚动时生效
29
+ ROW_LOOP: 到达行首/尾后跳转到上/下一行, 只在竖直滚动时生效
30
+ COLUMN_FIND_NEAR: 一列中没有下一个元素时是否跳转到相邻列
31
+ ROW_FIND_NEAR: 一行中没有下一个元素时是否跳转到相邻行
25
32
  * methods:
26
33
  getFocusBlockRef
27
34
  @description 获取focusBlock的引用
@@ -38,7 +45,9 @@
38
45
  {
39
46
  dataIndex: {int} 当前格子数据的index,
40
47
  gridIndex: {int} 当前格子的index,
48
+ selected: {boolean} 格子是否选中
41
49
  getCurrentFocusId: {function} 获取widget的当前焦点的dataIndex
50
+ gridCoord: {{row: 0, column: 0}} 获取当前格子的行列坐标
42
51
  }
43
52
  * onAction: 单元格内控件需要通过onAction.register方法注册 item 的回调,回调函数有
44
53
  onFocus, onBlur, onClick
@@ -84,7 +93,15 @@ class LineType extends UpdateType {
84
93
  }
85
94
  }
86
95
 
87
- export { PageType, LineType };
96
+ const FocusMoveType = {
97
+ NO_ADJUST: 0x00000000,
98
+ COLUMN_LOOP: 0x00000001,
99
+ ROW_LOOP: 0x00000001 << 1,
100
+ COLUMN_FIND_NEAR: 0x00000001 << 2,
101
+ ROW_FIND_NEAR: 0x00000001 << 3,
102
+ };
103
+
104
+ export { PageType, LineType, FocusMoveType };
88
105
 
89
106
  export default {
90
107
  props: {
@@ -141,6 +158,14 @@ export default {
141
158
  onEdge: {
142
159
  type: Function,
143
160
  },
161
+ loopUpdate: {
162
+ type: Boolean,
163
+ default: false,
164
+ },
165
+ focusMoveType: {
166
+ type: Number,
167
+ default: FocusMoveType.NO_ADJUST,
168
+ },
144
169
  },
145
170
  setup(props) {
146
171
  return {
@@ -166,6 +191,11 @@ export default {
166
191
  this.focusDataIndex = this._indexConvert(this.initFocusId);
167
192
  }
168
193
  this._updateData(this._getStartIndex(this.focusDataIndex, 1));
194
+ if (this.divInfoList[this._getDivIndex(this.focusDataIndex)]) {
195
+ this.divInfoList[
196
+ this._getDivIndex(this.focusDataIndex)
197
+ ].widgetData.selected = true;
198
+ }
169
199
  },
170
200
  methods: {
171
201
  _getCurrentFocusId() {
@@ -196,6 +226,11 @@ export default {
196
226
  dataIndex: -1,
197
227
  gridIndex: i,
198
228
  getCurrentFocusId: this._getCurrentFocusId,
229
+ gridCoord: {
230
+ column: i % this.column,
231
+ row: Math.floor(i / this.column),
232
+ },
233
+ selected: false,
199
234
  }),
200
235
  userData: reactive({}),
201
236
  };
@@ -218,6 +253,11 @@ export default {
218
253
  dataIndex: -1,
219
254
  gridIndex: i,
220
255
  getCurrentFocusId: this._getCurrentFocusId,
256
+ gridCoord: {
257
+ column: Math.floor(i / this.row),
258
+ row: i % this.row,
259
+ },
260
+ selected: false,
221
261
  }),
222
262
  userData: reactive({}),
223
263
  };
@@ -349,56 +389,86 @@ export default {
349
389
  },
350
390
  _moveTo(hOffset, vOffset) {
351
391
  let nextIndex = -1;
392
+ let mainOffset, subOffset, lineNum, mainFindNear, subFindNear, lineLoop;
352
393
  if (this.verticalUpdate) {
353
- if (hOffset != 0) {
354
- if (
355
- !(this.focusDataIndex % this.column == 0 && hOffset < 0) &&
356
- !(
357
- this.focusDataIndex % this.column == this.column - 1 &&
358
- hOffset > 0
359
- ) &&
360
- this.dataList[this.focusDataIndex + hOffset]
361
- ) {
362
- nextIndex = this.focusDataIndex + hOffset;
363
- }
364
- }
365
- if (vOffset != 0) {
366
- nextIndex = this.focusDataIndex + vOffset * this.column;
367
- if (nextIndex > 0 && !this.dataList[nextIndex]) {
368
- if (nextIndex <= this.dataInfo.endIndex) {
369
- nextIndex--;
370
- while (!this.dataList[nextIndex]) {
371
- nextIndex--;
394
+ mainOffset = vOffset;
395
+ subOffset = hOffset;
396
+ lineNum = this.column;
397
+ mainFindNear = this.focusMoveType & FocusMoveType.COLUMN_FIND_NEAR;
398
+ subFindNear = this.focusMoveType & FocusMoveType.ROW_FIND_NEAR;
399
+ lineLoop = this.focusMoveType & FocusMoveType.ROW_LOOP;
400
+ } else {
401
+ mainOffset = hOffset;
402
+ subOffset = vOffset;
403
+ lineNum = this.row;
404
+ mainFindNear = this.focusMoveType & FocusMoveType.ROW_FIND_NEAR;
405
+ subFindNear = this.focusMoveType & FocusMoveType.COLUMN_FIND_NEAR;
406
+ lineLoop = this.focusMoveType & FocusMoveType.COLUMN_LOOP;
407
+ }
408
+ if (mainOffset != 0) {
409
+ let i = this.focusDataIndex + mainOffset * lineNum;
410
+ if (this.dataList[i]) {
411
+ nextIndex = i;
412
+ } else if (i >= 0) {
413
+ //下一个为null, 找下一行的最后一个
414
+ if (mainFindNear) {
415
+ i = i - (i % this.column);
416
+ if (this.dataList[i]) {
417
+ while (this.dataList[i]) {
418
+ nextIndex = i;
419
+ i++;
372
420
  }
373
- } else {
374
- nextIndex = -1;
375
421
  }
376
422
  }
377
423
  }
378
- } else {
379
- if (vOffset != 0) {
380
- if (
381
- !(this.focusDataIndex % this.row == 0 && vOffset < 0) &&
382
- !(this.focusDataIndex % this.row == this.row - 1 && vOffset > 0) &&
383
- this.dataList[this.focusDataIndex + vOffset]
384
- ) {
385
- nextIndex = this.focusDataIndex + vOffset;
386
- }
387
- }
388
- if (hOffset != 0) {
389
- nextIndex = this.focusDataIndex + hOffset * this.row;
390
- if (nextIndex >= 0 && !this.dataList[nextIndex]) {
391
- if (nextIndex <= this.dataInfo.endIndex) {
392
- nextIndex--;
393
- while (!this.dataList[nextIndex]) {
394
- nextIndex--;
424
+ }
425
+
426
+ if (subOffset != 0) {
427
+ let i = (this.focusDataIndex % lineNum) + subOffset;
428
+ if (
429
+ i >= 0 &&
430
+ i < lineNum &&
431
+ this.dataList[this.focusDataIndex + subOffset]
432
+ ) {
433
+ nextIndex = this.focusDataIndex + subOffset;
434
+ } else {
435
+ if (lineLoop) {
436
+ i =
437
+ this.focusDataIndex +
438
+ subOffset * lineNum -
439
+ (this.focusDataIndex % lineNum);
440
+ if (subOffset < 0) {
441
+ //往前是到上一行末尾
442
+ i = i + lineNum - 1;
443
+ }
444
+ if (this.dataList[i]) {
445
+ nextIndex = i;
446
+ }
447
+ } else if (subFindNear) {
448
+ //只有未到边界时才找临近
449
+ if (i >= 0 && i < lineNum) {
450
+ for (
451
+ i = this.focusDataIndex + subOffset;
452
+ i >= this.startIndex;
453
+ i -= lineNum
454
+ ) {
455
+ if (this.dataList[i]) {
456
+ nextIndex = i;
457
+ break;
458
+ }
395
459
  }
396
- } else {
397
- nextIndex = -1;
398
460
  }
399
461
  }
400
462
  }
401
463
  }
464
+
465
+ if (nextIndex < 0 && this.loopUpdate) {
466
+ if (this.verticalUpdate && vOffset != 0) {
467
+ nextIndex = vOffset > 0 ? 0 : this.dataInfo.endIndex;
468
+ } else if (!this.verticalUpdate && hOffset != 0) {
469
+ nextIndex = hOffset > 0 ? 0 : this.dataInfo.endIndex;
470
+ }
471
+ }
402
472
  if (nextIndex >= 0) {
403
473
  let offset;
404
474
  if (hOffset !== 0) {
@@ -414,10 +484,16 @@ export default {
414
484
  this._getDivIndex(this.preFocusDataIndex)
415
485
  ]?.onAction.onBlur?.();
416
486
  }
487
+ this.divInfoList[
488
+ this._getDivIndex(this.preFocusDataIndex)
489
+ ].widgetData.selected = false;
417
490
  this._updateData(this._getStartIndex(nextIndex, offset));
418
491
  this.divInfoList[
419
492
  this._getDivIndex(this.focusDataIndex)
420
493
  ]?.onAction.onFocus?.();
494
+ this.divInfoList[
495
+ this._getDivIndex(this.focusDataIndex)
496
+ ].widgetData.selected = true;
421
497
  } else {
422
498
  let edgeDirection;
423
499
  if (hOffset > 0) {
@@ -503,12 +579,23 @@ export default {
503
579
  //焦点跳跃时之前的焦点可能不在divInfoList中
504
580
  this.divInfoList[this._getDivIndex(preIndex)]?.onAction.onBlur?.();
505
581
  }
582
+ if (this.divInfoList[this._getDivIndex(preIndex)]) {
583
+ this.divInfoList[
584
+ this._getDivIndex(preIndex)
585
+ ].widgetData.selected = false;
586
+ }
587
+
506
588
  this._updateData(this._getStartIndex(this.focusDataIndex, 1));
507
589
  if (this.focused) {
508
590
  this.divInfoList[
509
591
  this._getDivIndex(this.focusDataIndex)
510
592
  ]?.onAction.onFocus?.();
511
593
  }
594
+ if (this.divInfoList[this._getDivIndex(this.focusDataIndex)]) {
595
+ this.divInfoList[
596
+ this._getDivIndex(this.focusDataIndex)
597
+ ].widgetData.selected = true;
598
+ }
512
599
  }
513
600
  },
514
601
 
@@ -519,6 +606,12 @@ export default {
519
606
  this._getDivIndex(this.focusDataIndex)
520
607
  ]?.onAction.onBlur?.();
521
608
  }
609
+ if (this.divInfoList[this._getDivIndex(this.focusDataIndex)]) {
610
+ this.divInfoList[
611
+ this._getDivIndex(this.focusDataIndex)
612
+ ].widgetData.selected = false;
613
+ }
614
+
522
615
  this._formatData();
523
616
  this.startIndex = -1;
524
617
  this._cleanOldData();
@@ -532,6 +625,11 @@ export default {
532
625
  this._getDivIndex(this.focusDataIndex)
533
626
  ]?.onAction.onFocus?.();
534
627
  }
628
+ if (this.divInfoList[this._getDivIndex(this.focusDataIndex)]) {
629
+ this.divInfoList[
630
+ this._getDivIndex(this.focusDataIndex)
631
+ ].widgetData.selected = true;
632
+ }
535
633
  },
536
634
  },
537
635
  };
@@ -2,7 +2,7 @@
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2022-01-20 10:37:01
4
4
  * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-01-20 17:07:17
5
+ * @LastEditTime: 2022-09-02 13:28:59
6
6
  * @Description: file content
7
7
  -->
8
8
  <script>
@@ -39,7 +39,9 @@ export default {
39
39
  this.visible = show;
40
40
  },
41
41
  },
42
- mounted() {},
42
+ mounted() {
43
+ this.startBlink();
44
+ },
43
45
  beforeUnmount() {
44
46
  this._cleanInterval();
45
47
  },
@@ -2,7 +2,7 @@
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2022-01-20 10:35:56
4
4
  * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-02-21 10:17:42
5
+ * @LastEditTime: 2022-09-02 13:44:56
6
6
  * @Description: file content
7
7
  -->
8
8
  <script>
@@ -228,9 +228,9 @@ export default {
228
228
  !ifDigital(add_text) &&
229
229
  this.type === InputType.NUMBER
230
230
  ) {
231
- console.log(
232
- `onTextChanged add text failed, add_text:${add_text}, when input type is number!`
233
- );
231
+ // console.log(
232
+ // `onTextChanged add text failed, add_text:${add_text}, when input type is number!`
233
+ // );
234
234
  if (this.editControlView) {
235
235
  this.editControlView.updateCursorOffset(
236
236
  this.fullString,
@@ -255,7 +255,7 @@ export default {
255
255
 
256
256
  // 1:shown 0:hidden
257
257
  _onStatusChanged(status) {
258
- console.log("OnStatusChanged status", status);
258
+ // console.log("OnStatusChanged status", status);
259
259
  },
260
260
 
261
261
  _getStringWithFont(str) {
@@ -327,7 +327,7 @@ export default {
327
327
 
328
328
  add(string) {
329
329
  if (this.type === InputType.NUMBER && !ifDigital(string)) {
330
- console.log(`The input data:${string} is not number`);
330
+ // console.log(`The input data:${string} is not number`);
331
331
  return;
332
332
  }
333
333
  const pre_full_str = this.fullString;
@@ -573,8 +573,9 @@ export default {
573
573
  },
574
574
 
575
575
  onFocus() {
576
- console.log("Input Focus");
576
+ // console.log("Input Focus");
577
577
  this.isFocus = true;
578
+ this.$refs.cursor?.startBlink();
578
579
  if (this.editControlView && !this.readonly) {
579
580
  this.editControlView.showIme(
580
581
  this.type,
@@ -586,7 +587,7 @@ export default {
586
587
 
587
588
  onBlur() {
588
589
  this.isFocus = false;
589
- console.log("Input Blur");
590
+ // console.log("Input Blur");
590
591
  if (this.editControlView && !this.readonly) {
591
592
  this.editControlView.hideIme();
592
593
  }
@@ -604,9 +605,7 @@ export default {
604
605
  }
605
606
  this.clearCursorPauseTimer();
606
607
  this.cursorPauseTimeoutToken = setTimeout(() => {
607
- if (this.$refs.cursor) {
608
- this.$refs.cursor?.startBlink();
609
- }
608
+ this.$refs.cursor?.startBlink();
610
609
  }, 500);
611
610
  },
612
611
  onKeyDown(keyEvent) {
@@ -731,7 +730,9 @@ export default {
731
730
  this.textWidth = cur_position > this.width ? cur_position : this.width;
732
731
  this.textLeft = this._calculateSlide("", this.value, this.value.length);
733
732
  },
734
- mounted() {},
733
+ mounted() {
734
+ this.$refs.cursor?.startBlink();
735
+ },
735
736
  beforeUnmount() {
736
737
  if (this.editControlViewId != -1) {
737
738
  const view_store = ForgeExtension.RootActivity
@@ -134,7 +134,7 @@ export default {
134
134
  // 初始化View
135
135
  this.innerView = new Forge.LayoutView();
136
136
  this.innerViewId = ForgeExtension.RootActivity.ViewStore.add(
137
- new Forge.ViewInfo(this.innerView, null)
137
+ new Forge.ViewInfo(this.innerView)
138
138
  );
139
139
  }
140
140
 
@@ -211,6 +211,8 @@ export default {
211
211
  :style="{
212
212
  top: style.top,
213
213
  left: style.left,
214
+ width: style.width,
215
+ height: style.height
214
216
  }"
215
217
  ></div>
216
218
  </template>
@@ -47,19 +47,14 @@ export default {
47
47
  // 通过内置函数构造定制的NativeSharedView
48
48
  this.jsvMainView = new Forge.NativeSharedView(textureSetting);
49
49
  this.innerViewId = ForgeExtension.RootActivity.ViewStore.add(
50
- new Forge.ViewInfo(this.jsvMainView, null)
50
+ new Forge.ViewInfo(this.jsvMainView)
51
51
  );
52
52
 
53
53
  // 更新宽高
54
54
  if(typeof this.jsvMainView!="undefined" && this.jsvMainView){
55
- this.jsvMainView.ResetLayoutParams({
56
- width: this.style.width,
57
- height: this.style.height,
58
- });
59
-
60
55
  if (this.setId) {
61
56
  // 使用设置进来的track id,而非自动生成
62
- this.jsvMainView.SetTrackId();
57
+ this.jsvMainView.SetTrackId(this.setId);
63
58
  }
64
59
 
65
60
  this.getId?.(this.jsvMainView.GetTrackId());
@@ -77,21 +72,17 @@ export default {
77
72
  this.jsvMainView = null;
78
73
  }
79
74
  },
80
- updated() {
81
- // 更新宽高
82
- if(typeof this.jsvMainView!="undefined" && this.jsvMainView){
83
- this.jsvMainView.ResetLayoutParams({
84
- width: this.style.width,
85
- height: this.style.height,
86
- });
87
- }
88
- }
89
75
  };
90
76
  </script>
91
77
 
92
78
  <template>
93
79
  <div v-if="!isBrowserDebug"
94
- :style="{left: style.left, top: style.top}"
80
+ :style="{
81
+ left: style.left,
82
+ top: style.top,
83
+ width: style.width,
84
+ height: style.height
85
+ }"
95
86
  :jsv_innerview="innerViewId"
96
87
  >
97
88
  <slot/>
@@ -12,7 +12,7 @@
12
12
  * 原图中圆弧半径 = (原图宽度 - borderOutset * 2) / 2
13
13
  * 四角为其他形状时,原图.9图的四角区域,缩放到要和显示图形重合后的宽度。
14
14
  * borderOutset {int} (必填)原图信息: 图片边缘到中心内容区域边缘的距离, 快速计算: (原图宽度 - 原图中放内容宽度) / 2
15
- * animTime {int} (必填)缩放动画的时长(单位毫秒)
15
+ * animTime {int} (必填)缩放动画的时长(单位秒)
16
16
  * waitForInit {boolean} (选填)尺寸为0时是否进行描画(例如: 首次显示不展示动画的场合,设置为true),默认值为true
17
17
  -->
18
18
 
@@ -1,17 +1,47 @@
1
1
  <!--
2
2
  * 【模块 export 内容】
3
3
  * JsvPosterDiv:Vue高阶组件,海报描画
4
+ * props说明:
5
+ * style {Object} 包含
6
+ * left/top/width/height
7
+ * border-radius
8
+ * backgroundImage/backgroundColor
9
+ * 的style设置
4
10
  -->
11
+ <script setup>
12
+
13
+ import { reactive, watchEffect } from "vue";
14
+
15
+ const props = defineProps({
16
+ style: Object,
17
+ });
18
+
19
+ let common_style = reactive({});
20
+ let image_style = reactive({});
21
+
22
+ watchEffect(()=>{
23
+ if (props.style) {
24
+ let {left, top, width, height, ...others} = props.style;
25
+
26
+ common_style.left = left;
27
+ common_style.top = top;
28
+
29
+ image_style.width = width;
30
+ image_style.height = height;
31
+ Object.assign(image_style, others)
32
+ }
33
+ })
5
34
 
6
- <script>
7
- export default {
8
- //不让根元素继承style,以导致多画一个图片。同时注意slot和div的位置
9
- inheritAttrs: false,
10
- };
11
35
  </script>
36
+
12
37
  <template>
13
- <div>
38
+ <div :style="common_style">
14
39
  <slot></slot>
15
- <div jsv_enable_fade="true" jsv_poster_on_top="true" v-bind="$attrs" />
40
+ <div
41
+ jsv_enable_fade="true"
42
+ jsv_poster_on_top="true"
43
+ :style="image_style"
44
+ v-bind="$attrs"
45
+ />
16
46
  </div>
17
47
  </template>