@shijiu/jsview-vue 0.9.502 → 0.9.590

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 (215) 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 +34 -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 +76 -57
  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/ColorSpace/App.vue +15 -24
  40. package/samples/DemoHomepage/App.vue +7 -11
  41. package/samples/DemoHomepage/components/BodyFrame.vue +19 -9
  42. package/samples/DemoHomepage/components/TabFrame.vue +7 -8
  43. package/samples/DemoHomepage/router.js +32 -33
  44. package/samples/DemoHomepage/views/Homepage.vue +24 -8
  45. package/samples/FilterDemo/AnimatePic.vue +58 -0
  46. package/samples/FilterDemo/App.vue +99 -61
  47. package/samples/FilterDemo/VideoLayer.vue +62 -0
  48. package/samples/FlipCard/App.vue +32 -41
  49. package/samples/FlipCard/FlipCard.vue +48 -54
  50. package/samples/GridDemo/App.vue +109 -77
  51. package/samples/GridDemo/ButtonBlock.vue +50 -49
  52. package/samples/GridDemo/FocusItem.vue +19 -38
  53. package/samples/GridDemo/Item.vue +46 -54
  54. package/samples/HashHistory/App.vue +63 -79
  55. package/samples/HashHistory/components/HorizontalButtonList.vue +72 -95
  56. package/samples/HashHistory/components/Item.vue +42 -56
  57. package/samples/HashHistory/router.js +23 -12
  58. package/samples/HashHistory/views/MainPage.vue +35 -46
  59. package/samples/HashHistory/views/SubPage.vue +34 -47
  60. package/samples/Input/App.vue +2 -3
  61. package/samples/Input/FullKeyboard.vue +2 -6
  62. package/samples/Input/InputPanel.vue +2 -3
  63. package/samples/Input/KeyboardItem.vue +1 -1
  64. package/samples/LongImage/App.vue +11 -27
  65. package/samples/LongImage/Button.vue +50 -145
  66. package/samples/LongImage/ButtonItem.vue +44 -0
  67. package/samples/LongImage/LongImageScroll.vue +71 -106
  68. package/samples/LongImage/Scroll.vue +7 -9
  69. package/samples/LongText/App.vue +13 -28
  70. package/samples/LongText/Button.vue +43 -145
  71. package/samples/LongText/ButtonItem.vue +44 -0
  72. package/samples/LongText/LongTextScroll.vue +68 -101
  73. package/samples/LongText/Scroll.vue +7 -9
  74. package/samples/Marquee/App.vue +34 -37
  75. package/samples/MaskClip/App.vue +17 -30
  76. package/samples/MetroWidgetDemos/Advanced/App.vue +211 -0
  77. package/samples/MetroWidgetDemos/Advanced/ButtonItem.vue +90 -0
  78. package/samples/MetroWidgetDemos/Item.vue +67 -0
  79. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/App.vue +80 -104
  80. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/Item.vue +7 -0
  81. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/bg.jpg +0 -0
  82. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_content.png +0 -0
  83. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_left.png +0 -0
  84. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_mid.png +0 -0
  85. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/coupon_right.png +0 -0
  86. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/focus_border.png +0 -0
  87. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/holder_logo.png +0 -0
  88. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/jrbm.png +0 -0
  89. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_left.png +0 -0
  90. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_mid.png +0 -0
  91. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/line_right.png +0 -0
  92. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/loading.png +0 -0
  93. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/logo.png +0 -0
  94. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/mcjx.png +0 -0
  95. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/tao.png +0 -0
  96. package/samples/{ClassNameDemo → MetroWidgetDemos/PerformanceTest}/assets/tmall.png +0 -0
  97. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/border.png +0 -0
  98. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/components/ContentItem.vue +60 -86
  99. package/samples/{SimpleWidgetDemo → MetroWidgetDemos/PerformanceTest}/components/MyTab.vue +0 -0
  100. package/samples/MetroWidgetDemos/PerformanceTest/data.js +45 -0
  101. package/samples/MetroWidgetDemos/PingPong/App.vue +135 -0
  102. package/samples/MetroWidgetDemos/PingPong/AppPage.vue +58 -0
  103. package/samples/MetroWidgetDemos/PingPong/AppTab.vue +69 -0
  104. package/samples/MetroWidgetDemos/PingPong/Item.vue +92 -0
  105. package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +214 -0
  106. package/samples/MetroWidgetDemos/Simple/App.vue +194 -0
  107. package/samples/MetroWidgetDemos/WidgetItem.vue +89 -0
  108. package/samples/MetroWidgetDemos/data.js +204 -0
  109. package/samples/NinePatchDemo/App.vue +114 -115
  110. package/samples/NinePatchDemo/Item.vue +7 -8
  111. package/samples/Preload/App.vue +61 -63
  112. package/samples/Preload/Item.vue +21 -29
  113. package/samples/QrcodeDemo/App.vue +24 -29
  114. package/samples/SoundPool/App.vue +77 -106
  115. package/samples/SprayView/App.vue +10 -8
  116. package/samples/SpriteImage/App.vue +1 -2
  117. package/samples/TextBox/App.vue +86 -101
  118. package/samples/TextBox/RenderCenter.vue +1 -1
  119. package/samples/TextBox/RenderLeft.vue +1 -1
  120. package/samples/TextBox/RenderOneLine.vue +1 -1
  121. package/samples/TextBox/RenderRight.vue +1 -1
  122. package/samples/TextShadowDemo/App.vue +1 -2
  123. package/samples/TextureAnimation/App.vue +16 -13
  124. package/samples/TextureSize/App.vue +15 -25
  125. package/samples/ThrowMoveDemo/AccelerateDemo.vue +2 -4
  126. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +2 -3
  127. package/samples/ThrowMoveDemo/TargetDemo.vue +3 -4
  128. package/samples/ThrowMoveDemo/UDParabolicDemo.vue +2 -3
  129. package/samples/TouchSample/App.vue +2 -3
  130. package/samples/TouchSample/Item.vue +15 -13
  131. package/samples/TouchSample/MetroWidgetHorizontal.vue +2 -2
  132. package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
  133. package/samples/TouchSample/TouchContainerHorizontal.vue +4 -3
  134. package/samples/TouchSample/TouchContainerVertical.vue +3 -2
  135. package/samples/TransitPage/App.vue +20 -32
  136. package/samples/VideoDemo/App.vue +65 -81
  137. package/samples/VideoDemo/components/Button.vue +41 -52
  138. package/samples/VideoDemo/components/Controllor.vue +171 -169
  139. package/samples/VideoDemo/components/VideoFrame.vue +87 -99
  140. package/samples/VisibleSensorDemo/App.vue +167 -0
  141. package/scripts/jsview-jsmap-serve.js +42 -0
  142. package/scripts/jsview-post-install.js +1 -1
  143. package/tsconfig.json +3 -0
  144. package/utils/JsViewEngineWidget/JsvFocusBlock.vue +204 -193
  145. package/utils/JsViewEngineWidget/JsvFocusManager.js +30 -17
  146. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +1555 -1656
  147. package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.js +136 -0
  148. package/utils/JsViewEngineWidget/MetroWidget/ToolFunctions.js +18 -0
  149. package/utils/JsViewEngineWidget/TemplateParser.js +111 -1
  150. package/utils/JsViewEngineWidget/WidgetCommon.js +8 -2
  151. package/utils/JsViewEngineWidget/index.js +4 -4
  152. package/utils/JsViewPlugin/JsvPlayer/GetVersion.js +1 -1
  153. package/utils/JsViewPlugin/JsvPlayer/JsvMedia.js +264 -54
  154. package/utils/JsViewPlugin/JsvPlayer/JsvPlayer.vue +5 -1
  155. package/utils/JsViewPlugin/JsvPlayer/version.js +5 -5
  156. package/utils/JsViewVueTools/JsvRefTaker.js +35 -0
  157. package/utils/JsViewVueTools/index.js +19 -0
  158. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +8 -4
  159. package/utils/JsViewVueWidget/JsvFilterView.vue +59 -51
  160. package/utils/JsViewVueWidget/JsvGrid.vue +139 -41
  161. package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +3 -1
  162. package/utils/JsViewVueWidget/JsvNativeSharedDiv.vue +8 -17
  163. package/utils/JsViewVueWidget/JsvNinePatch.vue +1 -1
  164. package/utils/JsViewVueWidget/JsvPosterDiv.vue +37 -7
  165. package/utils/JsViewVueWidget/JsvPosterImage.vue +34 -13
  166. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +2 -12
  167. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +1 -1
  168. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +13 -10
  169. package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +2 -3
  170. package/utils/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue +25 -21
  171. package/utils/JsViewVueWidget/JsvTransparentDiv.vue +7 -8
  172. package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +141 -0
  173. package/utils/JsViewVueWidget/JsvVisibleSensor/index.js +9 -0
  174. package/utils/JsViewVueWidget/index.js +42 -0
  175. package/samples/AdvanceMetroWidget/App.vue +0 -123
  176. package/samples/AdvanceMetroWidget/Frame.vue +0 -102
  177. package/samples/AdvanceMetroWidget/Item.vue +0 -63
  178. package/samples/AdvanceMetroWidget/data.js +0 -137
  179. package/samples/ClassNameDemo/App.vue +0 -119
  180. package/samples/ClassNameDemo/components/ContentItem.vue +0 -253
  181. package/samples/ClassNameDemo/components/LoadingView.vue +0 -43
  182. package/samples/ClassNameDemo/components/TitleView.vue +0 -24
  183. package/samples/ClassNameDemo/data.js +0 -24
  184. package/samples/FlowMultiWidget/App.vue +0 -91
  185. package/samples/FlowMultiWidget/assets/nine_patch_focus.png +0 -0
  186. package/samples/FlowMultiWidget/components/Block.vue +0 -107
  187. package/samples/FlowMultiWidget/components/FlowPage.vue +0 -60
  188. package/samples/FlowMultiWidget/components/Item.vue +0 -103
  189. package/samples/FlowMultiWidget/components/MenuItem.vue +0 -72
  190. package/samples/FlowMultiWidget/components/MyMenu.vue +0 -90
  191. package/samples/FlowMultiWidget/data.js +0 -446
  192. package/samples/HashHistory/views/BasePage.vue +0 -19
  193. package/samples/HashHistory/views/SubPageFirst.vue +0 -10
  194. package/samples/HashHistory/views/SubPageSecond.vue +0 -10
  195. package/samples/SimpleWidgetDemo/assets/bg.jpg +0 -0
  196. package/samples/SimpleWidgetDemo/assets/coupon_content.png +0 -0
  197. package/samples/SimpleWidgetDemo/assets/coupon_left.png +0 -0
  198. package/samples/SimpleWidgetDemo/assets/coupon_mid.png +0 -0
  199. package/samples/SimpleWidgetDemo/assets/coupon_right.png +0 -0
  200. package/samples/SimpleWidgetDemo/assets/focus_border.png +0 -0
  201. package/samples/SimpleWidgetDemo/assets/holder_logo.png +0 -0
  202. package/samples/SimpleWidgetDemo/assets/jrbm.png +0 -0
  203. package/samples/SimpleWidgetDemo/assets/line_left.png +0 -0
  204. package/samples/SimpleWidgetDemo/assets/line_mid.png +0 -0
  205. package/samples/SimpleWidgetDemo/assets/line_right.png +0 -0
  206. package/samples/SimpleWidgetDemo/assets/loading.png +0 -0
  207. package/samples/SimpleWidgetDemo/assets/logo.png +0 -0
  208. package/samples/SimpleWidgetDemo/assets/mcjx.png +0 -0
  209. package/samples/SimpleWidgetDemo/assets/tao.png +0 -0
  210. package/samples/SimpleWidgetDemo/assets/tmall.png +0 -0
  211. package/samples/SimpleWidgetDemo/data.js +0 -124
  212. package/utils/JsViewEngineWidget/MetroWidget/ContentView.vue +0 -63
  213. package/utils/JsViewEngineWidget/MetroWidget/DivWrapper.vue +0 -51
  214. package/utils/JsViewEngineWidget/MetroWidget/ItemView.vue +0 -213
  215. package/utils/JsViewEngineWidget/MetroWidget/RootView.vue +0 -154
@@ -1,30 +1,27 @@
1
- <script lang="ts">
2
- import { JsvFocusEvent } from "jsview/utils/JsViewEngineWidget";
3
- import { Options, Vue } from "vue-class-component";
4
- import BaseBlock from "./BaseBlock.vue"
5
-
6
- @Options({
7
- props: {
8
- name: String,
9
- style: { type:Object, default: {}},
1
+ <script setup>
2
+ import BaseBlock from "./BaseBlock.vue";
3
+ import { useFocusHub } from "jsview";
4
+ defineProps({
5
+ name: String,
6
+ style: {
7
+ type: Object,
8
+ default() {
9
+ return {};
10
+ },
10
11
  },
11
- components: {
12
- BaseBlock
13
- }
14
- })
15
- export default
16
- class MainAreaRightBlock extends Vue {
17
- onKeyDown(ev: JsvFocusEvent) {
18
- if (ev.keyCode === 39) { // Right key
19
- (this.$root as any).changeFocusInDemoSpace('sideBarR0C0');
20
- return true;
21
- }
22
- return false;
12
+ });
13
+
14
+ const focusHub = useFocusHub();
15
+ const onKeyDown = (ev) => {
16
+ if (ev.keyCode === 39) {
17
+ // Right key
18
+ focusHub.setFocus("sideBarR0C0");
19
+ return true;
23
20
  }
24
- }
21
+ return false;
22
+ };
25
23
  </script>
26
24
 
27
25
  <template>
28
- <BaseBlock :name="$props.name" :style="$props.style"
29
- :onKeyDown="onKeyDown"/>
26
+ <BaseBlock :name="name" :style="style" :onKeyDown="onKeyDown" />
30
27
  </template>
@@ -1,56 +1,41 @@
1
- <script lang="ts">
2
- import { JsvFocusEvent } from "jsview/utils/JsViewEngineWidget";
3
- import { Options, Vue } from "vue-class-component";
4
- // import { globalStore } from "../GlobalStore"
5
- import SideBarBlock from "./SideBarBlock.vue"
6
-
7
- @Options({
8
- components: {
9
- SideBarBlock,
10
- }
11
- })
12
- export default
13
- class SideBar extends Vue {
14
- constructor(props: object) {
15
- super(props);
1
+ <script setup>
2
+ import SideBarBlock from "./SideBarBlock.vue";
3
+ import { useFocusHub } from "jsview";
4
+ let focusRow = 0;
5
+ const focusHub = useFocusHub();
6
+
7
+ const onKeyDown = (ev) => {
8
+ // 子节点未处理的按键事件会流向此节点
9
+ let keyUsed = true;
10
+ switch (ev.keyCode) {
11
+ case 38: // Up
12
+ focusRow = 0;
13
+ break;
14
+ case 40: // Down
15
+ focusRow = 1;
16
+ break;
17
+ default:
18
+ keyUsed = false;
16
19
  }
17
20
 
18
- private onKeyDown(ev: JsvFocusEvent) {
19
- // console.warn("xxxx", globalStore.focusBaseName)
20
- // 子节点未处理的按键事件会流向此节点
21
- let keyUsed = true;
22
- switch (ev.keyCode) {
23
- case 38: // Up
24
- this.focusRow = 0;
25
- break;
26
- case 40: // Down
27
- this.focusRow = 1;
28
- break;
29
- default:
30
- keyUsed = false;
31
- }
32
-
33
- if (keyUsed) {
34
- // 焦点与之前相同时也可以重复调用,焦点管理系统内容有是否变更的判断处理
35
- const name = `sideBarR${this.focusRow}C0`;
36
- ev.ownerNode.findBlockByName(name)?.requestFocus();
37
- }
38
-
39
- return keyUsed;
21
+ if (keyUsed) {
22
+ // 焦点与之前相同时也可以重复调用,焦点管理系统内容有是否变更的判断处理
23
+ const name = `sideBarR${focusRow}C0`;
24
+ focusHub.setFocus(name);
40
25
  }
41
26
 
42
- private focusRow: number = 0;
43
- }
27
+ return keyUsed;
28
+ };
44
29
  </script>
45
30
 
46
31
  <template>
47
- <div>
48
- <!--jsv-focus-block是非可描画节点,所以如果想接收style等属性,不要放在顶级-->
49
- <jsv-focus-block :onKeyDown="onKeyDown">
50
- <SideBarBlock name="sideBarR0C0" :style="{ left: 0, top: 0 }" />
51
- <SideBarBlock name="sideBarR1C0" :style="{ left: 0, top: 120 }" />
52
- </jsv-focus-block>
53
- </div>
32
+ <div>
33
+ <!--jsv-focus-block是非可描画节点,所以如果想接收style等属性,不要放在顶级-->
34
+ <jsv-focus-block :onKeyDown="onKeyDown">
35
+ <SideBarBlock name="sideBarR0C0" :style="{ left: 0, top: 0 }" />
36
+ <SideBarBlock name="sideBarR1C0" :style="{ left: 0, top: 120 }" />
37
+ </jsv-focus-block>
38
+ </div>
54
39
  </template>
55
40
 
56
41
  <style scoped>
@@ -63,7 +48,7 @@ class SideBar extends Vue {
63
48
  top: 50;
64
49
  width: 400;
65
50
  height: 50;
66
- background-color: rgba(27,38,151,0.8);
51
+ background-color: rgba(27, 38, 151, 0.8);
67
52
  }
68
53
 
69
54
  .body {
@@ -1,30 +1,27 @@
1
- <script lang="ts">
2
- import { JsvFocusEvent } from "jsview/utils/JsViewEngineWidget";
3
- import { Options, Vue } from "vue-class-component";
4
- import BaseBlock from "./BaseBlock.vue"
1
+ <script setup>
2
+ import BaseBlock from "./BaseBlock.vue";
3
+ import { useFocusHub } from "jsview";
5
4
 
6
- @Options({
7
- props: {
8
- name: String,
9
- style: { type:Object, default: {}},
5
+ defineProps({
6
+ name: String,
7
+ style: {
8
+ type: Object,
9
+ default() {
10
+ return {};
11
+ },
10
12
  },
11
- components: {
12
- BaseBlock
13
+ });
14
+ const focusHub = useFocusHub();
15
+ const onKeyDown = (ev) => {
16
+ if (ev.keyCode === 37) {
17
+ // Right key
18
+ focusHub.setFocus("main");
19
+ return true;
13
20
  }
14
- })
15
- export default
16
- class SideBarBlock extends Vue {
17
- onKeyDown(ev: JsvFocusEvent) {
18
- if (ev.keyCode === 37) { // Left key
19
- (this.$root as any).changeFocusInDemoSpace('main');
20
- return true;
21
- }
22
- return false;
23
- }
24
- }
21
+ return false;
22
+ };
25
23
  </script>
26
24
 
27
25
  <template>
28
- <BaseBlock :name="$props.name" :style="$props.style"
29
- :onKeyDown="onKeyDown"/>
26
+ <BaseBlock :name="name" :style="style" :onKeyDown="onKeyDown" />
30
27
  </template>
@@ -1,36 +1,27 @@
1
- <script>
2
- import { Vue } from "vue-class-component";
1
+ <script setup>
3
2
  import jpegDemo from "../assets/jpegDemo.jpeg";
4
3
  import pngDemo from "../assets/pngDemo.png";
5
4
  import pngNoAlphaDemo from "../assets/pngNoAlphaDemo.png";
6
5
  import bmpDemo from "../assets/bmpDemo.bmp";
6
+ import { useRouter } from "vue-router";
7
7
 
8
- class App extends Vue {
9
- constructor(props) {
10
- super(props);
8
+ const router = useRouter();
11
9
 
12
- this.jpegDemo = jpegDemo;
13
- this.pngDemo = pngDemo;
14
- this.pngNoAlphaDemo = pngNoAlphaDemo;
15
- this.bmpDemo = bmpDemo;
16
- }
17
-
18
- onKeyDown(ev) {
19
- // 8:Backspace, 27:Escape, 10000:盒子返回键
20
- if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
21
- window.JsView?.setGlobalConfig({
22
- texCache: -1,
23
- });
24
-
25
- this.$router?.go(-1); // 有router时,是从DemoHomepage进入,回退
26
- return true;
27
- }
10
+ const onKeyDown = (ev) => {
11
+ // 8:Backspace, 27:Escape, 10000:盒子返回键
12
+ if (ev.keyCode == 8 || ev.keyCode == 27 || ev.keyCode == 10000) {
13
+ window.JsView?.setGlobalConfig({
14
+ texCache: -1,
15
+ });
28
16
 
29
- return false;
17
+ router.go(-1); // 有router时,是从DemoHomepage进入,回退
18
+ return true;
30
19
  }
31
- }
32
- export default App;
20
+
21
+ return false;
22
+ };
33
23
  </script>
24
+
34
25
  <template>
35
26
  <jsv-focus-block autoFocus :onKeyDown="onKeyDown">
36
27
  <div class="allBgc">
@@ -2,23 +2,19 @@
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2021-06-02 13:31:00
4
4
  * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2021-10-14 17:21:34
5
+ * @LastEditTime: 2022-07-12 13:40:15
6
6
  * @Description: file content
7
7
  -->
8
- <script lang="ts">
9
- import { Vue } from "vue-class-component";
8
+ <script>
10
9
  import { router } from "./router.js";
11
- import { jJsvRuntimeBridge } from "jsview/utils/JsViewVueTools/JsvRuntimeBridge";
12
-
13
- class App extends Vue {
14
- static Router = router;
10
+ import { jJsvRuntimeBridge } from "jsview";
15
11
 
12
+ export default {
13
+ Router: router,
16
14
  mounted() {
17
15
  jJsvRuntimeBridge.notifyPageLoaded();
18
- }
19
- }
20
-
21
- export default App;
16
+ },
17
+ };
22
18
  </script>
23
19
 
24
20
  <template>
@@ -1,14 +1,12 @@
1
1
  <script>
2
- import {
3
- SimpleWidget,
4
- VERTICAL,
5
- } from "jsview/utils/JsViewEngineWidget";
2
+ import { watch } from "vue";
3
+ import { MetroWidget, VERTICAL } from "jsview";
6
4
  import Item from "./Item.vue";
7
5
 
8
6
  export default {
9
7
  components: {
10
8
  Item,
11
- SimpleWidget,
9
+ MetroWidget,
12
10
  },
13
11
  props: {
14
12
  data: Array,
@@ -20,7 +18,7 @@ export default {
20
18
  direction: VERTICAL,
21
19
  width: 1280,
22
20
  height: 600,
23
- initFoucsId: 0,
21
+ initFocusId: 0,
24
22
  };
25
23
  },
26
24
  methods: {
@@ -39,23 +37,35 @@ export default {
39
37
  this.$router.push(data.path);
40
38
  localStorage.curFocusId = index;
41
39
  },
40
+ _provideData() {
41
+ return this.data;
42
+ },
42
43
  },
43
44
  beforeCreate() {
44
45
  if (typeof localStorage.curFocusId !== "undefined") {
45
46
  this.initFocusId = parseInt(localStorage.curFocusId);
46
47
  }
47
48
  localStorage.curFocusId = 0;
49
+ watch(
50
+ () => {
51
+ return this.data;
52
+ },
53
+ () => {
54
+ this.$refs.mw?.refreshData(true);
55
+ }
56
+ );
48
57
  },
49
58
  };
50
59
  </script>
51
60
 
52
61
  <template>
53
- <simple-widget
62
+ <metro-widget
63
+ ref="mw"
54
64
  :name="name"
55
65
  :width="width"
56
66
  :height="height"
57
67
  :direction="direction"
58
- :data="data"
68
+ :provideData="_provideData"
59
69
  :enableTouch="true"
60
70
  :measures="measures"
61
71
  :padding="{ left: 10, top: 10, right: 10, bottom: 10 }"
@@ -79,5 +89,5 @@ export default {
79
89
  {{ data.name }}
80
90
  </Item>
81
91
  </template>
82
- </simple-widget>
92
+ </metro-widget>
83
93
  </template>
@@ -1,8 +1,5 @@
1
1
  <script>
2
- import {
3
- SimpleWidget,
4
- VERTICAL,
5
- } from "jsview/utils/JsViewEngineWidget";
2
+ import { MetroWidget, VERTICAL } from "jsview";
6
3
  import Item from "./Item.vue";
7
4
 
8
5
  const measures = (item) => {
@@ -15,13 +12,14 @@ const measures = (item) => {
15
12
 
16
13
  export default {
17
14
  components: {
18
- SimpleWidget,
15
+ MetroWidget,
19
16
  Item,
20
17
  },
21
18
  props: {
22
19
  name: String,
23
20
  itemFocus: Function,
24
21
  onEdge: Function,
22
+ initId: Number,
25
23
  },
26
24
  setup() {
27
25
  const width = 1280;
@@ -37,7 +35,7 @@ export default {
37
35
  {
38
36
  width: 200,
39
37
  height: 50,
40
- name: "场景实例",
38
+ name: "MetroWidget",
41
39
  focusable: true,
42
40
  id: 1,
43
41
  },
@@ -55,7 +53,7 @@ export default {
55
53
  </script>
56
54
 
57
55
  <template>
58
- <simple-widget
56
+ <metro-widget
59
57
  :name="name"
60
58
  :width="width"
61
59
  :height="height"
@@ -64,6 +62,7 @@ export default {
64
62
  :measures="measures"
65
63
  :padding="{ left: 10, top: 10, right: 10, bottom: 10 }"
66
64
  :onEdge="onEdge"
65
+ :initFocusId="initId"
67
66
  >
68
67
  <template #renderItem="{ data, query, onEdge, onAction }">
69
68
  <Item
@@ -82,5 +81,5 @@ export default {
82
81
  {{ data.name }}
83
82
  </Item>
84
83
  </template>
85
- </simple-widget>
84
+ </metro-widget>
86
85
  </template>
@@ -1,5 +1,5 @@
1
1
  import { createRouter } from "vue-router";
2
- import { createJsvHashHistory } from "jsview/utils/JsViewVueTools/JsvHashHistory";
2
+ import { createJsvHashHistory } from "jsview";
3
3
 
4
4
  const routeList = [
5
5
  // 功能实例
@@ -8,6 +8,16 @@ const routeList = [
8
8
  path: "/",
9
9
  component: () => import("./views/Homepage"),
10
10
  },
11
+ {
12
+ name: "基础示例合集",
13
+ path: "/feature/Basic",
14
+ component: () => import("jsview/samples/Basic/App"),
15
+ },
16
+ {
17
+ name: "可视化变化通知",
18
+ path: "/feature/VisibleSensorDemo",
19
+ component: () => import("jsview/samples/VisibleSensorDemo/App"),
20
+ },
11
21
  {
12
22
  name: "快速刷新的表格布局组件",
13
23
  path: "/feature/GridDemo",
@@ -18,21 +28,6 @@ const routeList = [
18
28
  path: "/feature/NinePatchDemo",
19
29
  component: () => import("jsview/samples/NinePatchDemo/App"),
20
30
  },
21
- {
22
- name: "基础示例合集",
23
- path: "/feature/Basic",
24
- component: () => import("jsview/samples/Basic/App"),
25
- },
26
- {
27
- name: "SimpleWidget",
28
- path: "/feature/SimpleWidgetDemo",
29
- component: () => import("jsview/samples/SimpleWidgetDemo/App"),
30
- },
31
- {
32
- name: "SimpleWidget(进阶)",
33
- path: "/feature/AdvanceMetroWidget",
34
- component: () => import("jsview/samples/AdvanceMetroWidget/App"),
35
- },
36
31
  {
37
32
  name: "视频",
38
33
  path: "/feature/VideoDemo",
@@ -49,12 +44,6 @@ const routeList = [
49
44
  props: { routePath: "/feature/HashHistory" },
50
45
  component: () => import("jsview/samples/HashHistory/App"),
51
46
  },
52
- //TODO MetroPage未完成
53
- // {
54
- // name: "ClassName写法样例",
55
- // path: "/feature/ClassNameDemo",
56
- // component: () => import("jsview/samples/ClassNameDemo/App"),
57
- // },
58
47
  {
59
48
  name: "翻牌游戏",
60
49
  path: "/feature/FlipCard",
@@ -70,11 +59,6 @@ const routeList = [
70
59
  path: "/feature/TextureSize",
71
60
  component: () => import("jsview/samples/TextureSize/App"),
72
61
  },
73
- {
74
- name: "橱窗",
75
- path: "/feature/FlowMultiWidget",
76
- component: () => import("jsview/samples/FlowMultiWidget/App"),
77
- },
78
62
  {
79
63
  name: "动图",
80
64
  path: "/feature/AnimPicture",
@@ -85,13 +69,11 @@ const routeList = [
85
69
  path: "/feature/SprayView",
86
70
  component: () => import("jsview/samples/SprayView/App"),
87
71
  },
88
- //TODO 代码需要优化
89
72
  {
90
73
  name: "长文字",
91
74
  path: "/feature/LongText",
92
75
  component: () => import("jsview/samples/LongText/App"),
93
76
  },
94
- //TODO 代码需要优化
95
77
  {
96
78
  name: "长图片",
97
79
  path: "/feature/LongImage",
@@ -153,11 +135,28 @@ const routeList = [
153
135
  component: () => import("jsview/samples/FilterDemo/App"),
154
136
  },
155
137
 
156
- // 场景实例
138
+ // MetroWidget示例
139
+ {
140
+ name: "简单示例",
141
+ path: "/metroWidget/Simple",
142
+ component: () => import("jsview/samples/MetroWidgetDemos/Simple/App"),
143
+ },
144
+ {
145
+ name: "嵌套示例",
146
+ path: "/metroWidget/Advanced",
147
+ component: () => import("jsview/samples/MetroWidgetDemos/Advanced/App"),
148
+ },
149
+ {
150
+ name: "性能测试",
151
+ path: "/metroWidget/PerformanceTest",
152
+ component: () =>
153
+ import("jsview/samples/MetroWidgetDemos/PerformanceTest/App"),
154
+ },
157
155
  {
158
- name: "直播间(TBD)",
159
- path: "/scene/LiveRoom",
160
- // component: () => import("jsview/samples/Basic/App"),
156
+ name: "乒乓模式",
157
+ path: "/metroWidget/PingPong",
158
+ component: () =>
159
+ import("jsview/samples/MetroWidgetDemos/PingPong/App"),
161
160
  },
162
161
  ];
163
162
 
@@ -1,6 +1,5 @@
1
1
  <script>
2
- import { jJsvRuntimeBridge } from "jsview/utils/JsViewVueTools/JsvRuntimeBridge";
3
- import { EdgeDirection } from "jsview/utils/JsViewEngineWidget";
2
+ import { jJsvRuntimeBridge, EdgeDirection } from "jsview";
4
3
  import TabFrame from "../components/TabFrame.vue";
5
4
  import BodyFrame from "../components/BodyFrame.vue";
6
5
  import Dialog from "../components/Dialog.vue";
@@ -9,7 +8,7 @@ import { routeList } from "../router.js";
9
8
  const colorTemplete = ["#89BEB2", "#C9BA83", "#DED38C", "#DE9C53"];
10
9
 
11
10
  const featureData = [];
12
- const sceneData = [];
11
+ const metroWidgetData = [];
13
12
  for (let item of routeList) {
14
13
  let obj = {
15
14
  name: item.name,
@@ -21,12 +20,12 @@ for (let item of routeList) {
21
20
  if (item.path.indexOf("feature") >= 0) {
22
21
  obj.backgroundColor = colorTemplete[featureData.length % 4];
23
22
  featureData.push(obj);
24
- } else if (item.path.indexOf("scene") >= 0) {
25
- obj.backgroundColor = colorTemplete[sceneData.length % 4];
26
- sceneData.push(obj);
23
+ } else if (item.path.indexOf("metroWidget") >= 0) {
24
+ obj.backgroundColor = colorTemplete[metroWidgetData.length % 4];
25
+ metroWidgetData.push(obj);
27
26
  }
28
27
  }
29
- const dataList = [featureData, sceneData];
28
+ const dataList = [featureData, metroWidgetData];
30
29
 
31
30
  export default {
32
31
  components: {
@@ -90,9 +89,11 @@ export default {
90
89
  }
91
90
  },
92
91
  tabItemFocus(data) {
92
+ console.log("cchtest tabItemFocus");
93
93
  if (data.id != this.tabId) {
94
94
  this.tabId = data.id;
95
95
  this.contentData = dataList[this.tabId];
96
+ localStorage.curTab = this.tabId;
96
97
  }
97
98
  },
98
99
  onDialogAction(msg) {
@@ -113,6 +114,20 @@ export default {
113
114
  }
114
115
  },
115
116
  },
117
+ created() {
118
+ console.log("cchtest homepage beforeCreated", localStorage.curTab);
119
+ if (typeof localStorage.curTab !== "undefined") {
120
+ this.tabId = parseInt(localStorage.curTab);
121
+ }
122
+ localStorage.curTab = 0;
123
+ this.contentData = dataList[this.tabId];
124
+ },
125
+ mounted() {
126
+ console.log("cchtest homepage mounted", localStorage.curTab);
127
+ },
128
+ beforeUnmount() {
129
+ console.log("cchtest homePage beforeUnmount");
130
+ },
116
131
  };
117
132
  </script>
118
133
 
@@ -136,6 +151,7 @@ export default {
136
151
  :name="name + '/tabFrame'"
137
152
  :onEdge="onTabEdge"
138
153
  :itemFocus="tabItemFocus"
154
+ :initId="tabId"
139
155
  />
140
156
  </div>
141
157
 
@@ -156,7 +172,7 @@ export default {
156
172
  v-if="showExitDialog"
157
173
  :name="name + '/exitDialog'"
158
174
  :onAction="onDialogAction"
159
- />
175
+ ></Dialog>
160
176
  </jsv-focus-block>
161
177
  </div>
162
178
  </template>
@@ -0,0 +1,58 @@
1
+ <script setup>
2
+ const item_url =
3
+ "http://oss.image.51vtv.cn/homepage/20210209/27bda620942566673ab449a3ef765321.png";
4
+ </script>
5
+
6
+ <template>
7
+ <div
8
+ className="blockStyle"
9
+ :style="{
10
+ backgroundColor: '#0000FF',
11
+ animation: 'opacityDemo_CompositeNoOpacity 3s infinite',
12
+ }"
13
+ />
14
+ <img
15
+ className="blockStyle"
16
+ :style="{
17
+ objectFit: 'contain',
18
+ animation: 'opacityDemo_CompositeOpacity 3s infinite',
19
+ }"
20
+ :src="item_url"
21
+ />
22
+ </template>
23
+
24
+ <style scoped>
25
+ .blockStyle {
26
+ top: 50;
27
+ left: 50;
28
+ width: 150;
29
+ height: 150;
30
+ }
31
+
32
+ .picTitleTextClass {
33
+ font-size: 25;
34
+ height: 68;
35
+ line-height: 34;
36
+ color: "#000000";
37
+ text-align: "center";
38
+ }
39
+
40
+ @keyframes opacityDemo_CompositeOpacity {
41
+ from {
42
+ transform: translate3d(50%, 30px, 0) scale3d(1.5, 1.5, 1)
43
+ rotate3d(1.5, 1, 0, 90deg) skew(30deg, 45deg);
44
+ opacity: 0.1;
45
+ }
46
+ to {
47
+ }
48
+ }
49
+
50
+ @keyframes opacityDemo_CompositeNoOpacity {
51
+ from {
52
+ transform: translate3d(50%, 30px, 0) scale3d(1.5, 1.5, 1)
53
+ rotate3d(1.5, 1, 0, 90deg) skew(30deg, 45deg);
54
+ }
55
+ to {
56
+ }
57
+ } ;
58
+ </style>