@shijiu/jsview-vue-samples 2.2.426-test.0 → 2.3.151-test.0

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 (246) hide show
  1. package/BakeViewDemo/AnimatePic.vue +1 -1
  2. package/Basic/components/text/TextDirection.vue +7 -1
  3. package/BasicFocusControl/components/BaseBlock.vue +65 -18
  4. package/BreakRender/assets/imageList.json +235 -235
  5. package/ColorSpace/App.vue +2 -2
  6. package/CoupletsTest/App.vue +1 -1
  7. package/CoupletsTest/widget/Banger/Banger.vue +3 -3
  8. package/CoupletsTest/widget/Banger/MaroonLoader.vue +5 -5
  9. package/CoupletsTest/widget/Couplets/Couplets.vue +4 -4
  10. package/CoupletsTest/widget/Fireworks/Fireworks.vue +13 -13
  11. package/CustomShader/App.vue +4 -4
  12. package/CustomShader/gaussianBlur.glsl +1 -1
  13. package/DashPath/App.vue +80 -0
  14. package/DashPath/AppForOperator.vue +33 -0
  15. package/DemoForOperator/AnimPic/AnimPic.vue +69 -0
  16. package/DemoForOperator/AnimPic/App.vue +28 -0
  17. package/DemoForOperator/Banger/App.vue +26 -0
  18. package/DemoForOperator/Banger/Banger/Banger.vue +316 -0
  19. package/DemoForOperator/Banger/Banger/Maroon.vue +123 -0
  20. package/DemoForOperator/Banger/Banger/MaroonLoader.vue +78 -0
  21. package/DemoForOperator/Banger/Banger/SpriteDeal.js +30 -0
  22. package/DemoForOperator/Blur/Blur.vue +146 -0
  23. package/DemoForOperator/Blur/BlurInOut/BlurInOut.vue +158 -0
  24. package/DemoForOperator/Blur/BlurInOut/StaticBgSlide.vue +162 -0
  25. package/DemoForOperator/Blur/BlurPopup/BlurPopup.vue +113 -0
  26. package/DemoForOperator/BookFlip/App.vue +115 -0
  27. package/DemoForOperator/BookFlip/BookFlip/FlipPage.vue +179 -0
  28. package/DemoForOperator/BookFlip/BookFlip/FlippingBook.vue +310 -0
  29. package/DemoForOperator/BookFlip/BookFlip/flip.glsl +135 -0
  30. package/DemoForOperator/BookFlip/BookPage.vue +82 -0
  31. package/DemoForOperator/Bounce/App.vue +43 -0
  32. package/DemoForOperator/Bounce/Bounce.vue +81 -0
  33. package/DemoForOperator/Bounce/FreeMoveBuilder.js +139 -0
  34. package/DemoForOperator/ChunLian/App.vue +47 -0
  35. package/DemoForOperator/ChunLian/Couplets.vue +291 -0
  36. package/DemoForOperator/ClickSpriteAnim/App.vue +130 -0
  37. package/DemoForOperator/ClickSpriteAnim/Item.vue +74 -0
  38. package/DemoForOperator/DominantColor/App.vue +187 -0
  39. package/DemoForOperator/EpisodeList/App.vue +80 -0
  40. package/DemoForOperator/EpisodeList/EpisodeList/Controller.vue +110 -0
  41. package/DemoForOperator/EpisodeList/EpisodeList/EpisodeList.vue +250 -0
  42. package/DemoForOperator/EpisodeList/GroupItem.vue +65 -0
  43. package/DemoForOperator/EpisodeList/ListItem.vue +48 -0
  44. package/DemoForOperator/Firework1/App.vue +25 -0
  45. package/DemoForOperator/Firework1/Fireworks.vue +397 -0
  46. package/DemoForOperator/Firework1/SpriteDeal.js +30 -0
  47. package/DemoForOperator/FlipPage/App.vue +75 -0
  48. package/DemoForOperator/FlipPage/FlipPage/FlipPage.vue +178 -0
  49. package/DemoForOperator/FlipPage/FlipPage/flipIn.glsl +41 -0
  50. package/DemoForOperator/FlipPage/FlipPage/flipOut.glsl +41 -0
  51. package/DemoForOperator/Focus/Alpha/AlphaFocusBox.vue +95 -0
  52. package/DemoForOperator/Focus/Alpha/AlphaPage.vue +40 -0
  53. package/DemoForOperator/Focus/Alpha/Item.vue +64 -0
  54. package/DemoForOperator/Focus/App.vue +124 -0
  55. package/DemoForOperator/Focus/CommonPageSetting.js +30 -0
  56. package/DemoForOperator/Focus/Item.vue +46 -0
  57. package/DemoForOperator/Focus/Light/Item.vue +67 -0
  58. package/DemoForOperator/Focus/Light/LightFocusBox.vue +87 -0
  59. package/DemoForOperator/Focus/Light/LightPage.vue +43 -0
  60. package/DemoForOperator/Focus/Light/utils/FrameCanvasStore.ts +68 -0
  61. package/DemoForOperator/Focus/Light/utils/RotateFrame.vue +146 -0
  62. package/DemoForOperator/Focus/Light/utils/circleHaloMask.png +0 -0
  63. package/DemoForOperator/Focus/Normal/Item.vue +64 -0
  64. package/DemoForOperator/Focus/Normal/NormalFocusBox.vue +65 -0
  65. package/DemoForOperator/Focus/Normal/NormalPage.vue +41 -0
  66. package/DemoForOperator/Focus/SwipeLight/Item.vue +73 -0
  67. package/DemoForOperator/Focus/SwipeLight/SwipeLightBox.vue +62 -0
  68. package/DemoForOperator/Focus/SwipeLight/SwipeLightPage.vue +44 -0
  69. package/DemoForOperator/FrameShadow/App.vue +193 -0
  70. package/DemoForOperator/FrameShadow/FrameShadow.vue +61 -0
  71. package/DemoForOperator/FullscreenIn/App.vue +105 -0
  72. package/DemoForOperator/FullscreenIn/FullscreenPoster.vue +56 -0
  73. package/DemoForOperator/FullscreenIn/Item.vue +50 -0
  74. package/DemoForOperator/Genie/App.vue +78 -0
  75. package/DemoForOperator/Genie/geniePakcer/Genie.vue +741 -0
  76. package/DemoForOperator/Genie/geniePakcer/genieBottom.glsl +49 -0
  77. package/DemoForOperator/Genie/geniePakcer/genieLeft.glsl +50 -0
  78. package/DemoForOperator/Genie/geniePakcer/genieRight.glsl +57 -0
  79. package/DemoForOperator/Genie/geniePakcer/genieTop.glsl +50 -0
  80. package/DemoForOperator/GrayFilter/App.vue +51 -0
  81. package/DemoForOperator/GrayFilter/GrayFilter.vue +59 -0
  82. package/DemoForOperator/Jigsaw/App.vue +45 -0
  83. package/DemoForOperator/Jigsaw/JigsawFull.vue +142 -0
  84. package/DemoForOperator/Jigsaw/JigsawSingle.vue +118 -0
  85. package/DemoForOperator/LongChatBox/App.vue +36 -0
  86. package/DemoForOperator/LongChatBox/Bubble.vue +104 -0
  87. package/DemoForOperator/LongChatBox/LongChat.vue +173 -0
  88. package/DemoForOperator/LongChatBox/TextManager.ts +147 -0
  89. package/DemoForOperator/LongChatBox/VirtualList.vue +298 -0
  90. package/DemoForOperator/LongChatBox/testData.js +51 -0
  91. package/DemoForOperator/LongChatBox/utile.js +331 -0
  92. package/DemoForOperator/Particle/App.vue +69 -0
  93. package/DemoForOperator/Particle/Drop/DropParticle.vue +208 -0
  94. package/DemoForOperator/Particle/Explode/ExplodeParticle.vue +120 -0
  95. package/DemoForOperator/PosterAnim/App.vue +125 -0
  96. package/DemoForOperator/PosterAnim/Bounce/BouncePage.vue +54 -0
  97. package/DemoForOperator/PosterAnim/Bounce/Item.vue +85 -0
  98. package/DemoForOperator/PosterAnim/Breath/BreathPage.vue +47 -0
  99. package/DemoForOperator/PosterAnim/Breath/Item.vue +58 -0
  100. package/DemoForOperator/PosterAnim/CommonPageSetting.js +30 -0
  101. package/DemoForOperator/PosterAnim/Item.vue +46 -0
  102. package/DemoForOperator/PosterAnim/PosterAnim.js +79 -0
  103. package/DemoForOperator/PosterAnim/Scale/Item.vue +72 -0
  104. package/DemoForOperator/PosterAnim/Scale/ScalePage.vue +48 -0
  105. package/DemoForOperator/PosterAnim/Shake/Item.vue +85 -0
  106. package/DemoForOperator/PosterAnim/Shake/ShakePage.vue +53 -0
  107. package/DemoForOperator/PosterOverflow/App.vue +116 -0
  108. package/DemoForOperator/PosterOverflow/Item.vue +67 -0
  109. package/DemoForOperator/PosterOverflow/PosterOverflow.vue +39 -0
  110. package/DemoForOperator/Resize/App.vue +157 -0
  111. package/DemoForOperator/Resize/Resize/Item.vue +234 -0
  112. package/DemoForOperator/Resize/Resize/Resize.vue +96 -0
  113. package/DemoForOperator/Ripple/App.vue +54 -0
  114. package/DemoForOperator/Ripple/Ripple.vue +65 -0
  115. package/DemoForOperator/ScreenShootScale/App.vue +96 -0
  116. package/DemoForOperator/ScreenShootScale/Back.vue +86 -0
  117. package/DemoForOperator/ScreenShootScale/Front.vue +133 -0
  118. package/DemoForOperator/ScreenShootScale/Item.vue +62 -0
  119. package/DemoForOperator/ScreenShootScale/ScreenShootScale.vue +109 -0
  120. package/DemoForOperator/SmoothSwiper/App.vue +50 -0
  121. package/DemoForOperator/Sound/Bounce/App.vue +56 -0
  122. package/DemoForOperator/Sound/Bounce/Bounce.vue +87 -0
  123. package/DemoForOperator/Sound/Bounce/FreeMoveBuilder.js +146 -0
  124. package/DemoForOperator/Sound/Bounce/bgmusic.mp3 +0 -0
  125. package/DemoForOperator/Sound/Bounce/coin.mp3 +0 -0
  126. package/DemoForOperator/Sound/FocusMove/App.vue +134 -0
  127. package/DemoForOperator/Sound/FocusMove/Item.vue +43 -0
  128. package/DemoForOperator/Sound/FocusMove/move.mp3 +0 -0
  129. package/DemoForOperator/Sound/Rain/App.vue +11 -0
  130. package/DemoForOperator/Sound/Rain/Raining/Rain.vue +69 -0
  131. package/DemoForOperator/Sound/Rain/Raining/RainScene.vue +118 -0
  132. package/DemoForOperator/Sound/Sound/Sound.vue +24 -0
  133. package/DemoForOperator/Sound/Sound/index.js +4 -0
  134. package/DemoForOperator/Sound/Sound/useSound.js +112 -0
  135. package/DemoForOperator/Sprite/App.vue +33 -0
  136. package/DemoForOperator/Sprite/Sprite.vue +147 -0
  137. package/DemoForOperator/Stretch/App.vue +103 -0
  138. package/DemoForOperator/Stretch/Stretch/Item.vue +192 -0
  139. package/DemoForOperator/Stretch/Stretch/Stretch.vue +218 -0
  140. package/DemoForOperator/Swiper/App.vue +101 -0
  141. package/DemoForOperator/Swiper/Item.vue +56 -0
  142. package/DemoForOperator/Swiper/ParallaxSlide.vue +164 -0
  143. package/DemoForOperator/TabContent/App.vue +89 -0
  144. package/DemoForOperator/TabContent/ContentPage.vue +66 -0
  145. package/DemoForOperator/TabContent/Item.vue +85 -0
  146. package/DemoForOperator/TabContent/PageItem.vue +40 -0
  147. package/DemoForOperator/TabContent/TabContent/CreepFocus.vue +160 -0
  148. package/DemoForOperator/TabContent/TabContent/Item.vue +63 -0
  149. package/DemoForOperator/TabContent/TabContent/TabContent.vue +184 -0
  150. package/DemoForOperator/TabContent/TabContent/TabItem.vue +368 -0
  151. package/DemoForOperator/TabContent/TabContent/TabWidget.vue +243 -0
  152. package/DemoForOperator/TabContent/TabContent/Util.js +3 -0
  153. package/DemoForOperator/TabContent/TabContent/ViewSwiper.vue +110 -0
  154. package/DemoForOperator/TabContent/testData.js +241 -0
  155. package/DemoForOperator/TabContentVertical/App.vue +104 -0
  156. package/DemoForOperator/TabContentVertical/ContentPage.vue +67 -0
  157. package/DemoForOperator/TabContentVertical/Item.vue +94 -0
  158. package/DemoForOperator/TabContentVertical/PageItem.vue +40 -0
  159. package/DemoForOperator/TabContentVertical/TabContent/CreepFocus.vue +160 -0
  160. package/DemoForOperator/TabContentVertical/TabContent/Item.vue +63 -0
  161. package/DemoForOperator/TabContentVertical/TabContent/TabContent.vue +184 -0
  162. package/DemoForOperator/TabContentVertical/TabContent/TabItem.vue +368 -0
  163. package/DemoForOperator/TabContentVertical/TabContent/TabWidget.vue +259 -0
  164. package/DemoForOperator/TabContentVertical/TabContent/Util.js +3 -0
  165. package/DemoForOperator/TabContentVertical/TabContent/ViewSwiper.vue +110 -0
  166. package/DemoForOperator/TabContentVertical/assets/children_science.png +0 -0
  167. package/DemoForOperator/TabContentVertical/assets/documentary.png +0 -0
  168. package/DemoForOperator/TabContentVertical/assets/free.png +0 -0
  169. package/DemoForOperator/TabContentVertical/assets/game.png +0 -0
  170. package/DemoForOperator/TabContentVertical/assets/home_selected.png +0 -0
  171. package/DemoForOperator/TabContentVertical/assets/movie_ticket.png +0 -0
  172. package/DemoForOperator/TabContentVertical/assets/my_account.png +0 -0
  173. package/DemoForOperator/TabContentVertical/assets/opera.png +0 -0
  174. package/DemoForOperator/TabContentVertical/assets/sports.png +0 -0
  175. package/DemoForOperator/TabContentVertical/assets/tv_drama.png +0 -0
  176. package/DemoForOperator/TabContentVertical/assets/variety_show.png +0 -0
  177. package/DemoForOperator/TabContentVertical/assets/vip.png +0 -0
  178. package/DemoForOperator/TabContentVertical/testData.js +76 -0
  179. package/DemoForOperator/Vortex/App.vue +78 -0
  180. package/DemoForOperator/Vortex/Vortex/Vortex.vue +180 -0
  181. package/DemoForOperator/Vortex/Vortex/vortexIn.glsl +38 -0
  182. package/DemoForOperator/Vortex/Vortex/vortexOut.glsl +38 -0
  183. package/DemoForOperator/index.js +6 -0
  184. package/DemoForOperator/routeList.js +259 -0
  185. package/DemoHomepage/App.vue +50 -30
  186. package/DemoHomepage/components/Dialog.vue +1 -0
  187. package/DemoHomepage/components/Item.vue +11 -0
  188. package/DemoHomepage/components/TabFrame.vue +7 -0
  189. package/DemoHomepage/router.js +178 -81
  190. package/DemoHomepage/views/Homepage.vue +7 -2
  191. package/DivMetroPerformance/data.js +3 -3
  192. package/DriftScopeTest/App.vue +1 -1
  193. package/FilterDemo/AnimatePic.vue +1 -1
  194. package/FilterDemo/VideoLayer.vue +2 -2
  195. package/FullScreenFlex/TestFrame2.vue +1 -1
  196. package/GiftRain/App.vue +12 -12
  197. package/GiftRain/components/SpriteTranslate.vue +68 -48
  198. package/HashHistory/App.vue +2 -2
  199. package/HashHistory/router.js +1 -1
  200. package/JsvPreDownloader/App.vue +4 -4
  201. package/MediaDemo/components/frames/AudioFrame.vue +1 -1
  202. package/MediaDemo/components/frames/VideoFrame.vue +1 -1
  203. package/MetroWidgetDemos/MassiveItems/ContentItem.vue +1 -1
  204. package/MetroWidgetDemos/MassiveItems/data.js +1 -1
  205. package/MetroWidgetDemos/PerformanceTest/data.js +3 -3
  206. package/MetroWidgetDemos/RefreshDemo/assets/imageList.json +235 -235
  207. package/MetroWidgetDemos/SkeletonDiagram/assets/imageList.json +235 -235
  208. package/MetroWidgetDemos/TripleWidget/App.vue +7 -1
  209. package/MetroWidgetDemos/TripleWidget/Item.vue +16 -2
  210. package/MetroWidgetDemos/TripleWidget/SWidgetItem.vue +7 -1
  211. package/MetroWidgetDemos/TripleWidget/WidgetItem.vue +8 -2
  212. package/MetroWidgetDemos/focusableItemMetroWidget/WidgetItem.vue +3 -1
  213. package/MetroWidgetDemos/routeList.js +34 -17
  214. package/Poster3d/App.vue +69 -0
  215. package/Poster3d/Poster3d.vue +92 -0
  216. package/PosterPacker/App.vue +5 -5
  217. package/PosterPacker/tools/vortexPacker/Vortex.vue +1 -1
  218. package/QrcodeDemo/App.vue +1 -1
  219. package/Ripple/App.vue +1 -1
  220. package/ScaleDownNeon/App.vue +4 -4
  221. package/SceneTransition/App.vue +2 -2
  222. package/SceneTransition/maskConfig/config2.js +12 -12
  223. package/SceneTransition/maskConfig/config3.js +14 -14
  224. package/SprayView/App.vue +96 -51
  225. package/SpringFestival/App.vue +73 -0
  226. package/SpringFestival/SpringFestivalScene/ChunLian.vue +211 -0
  227. package/SpringFestival/SpringFestivalScene/FreeMoveBuilder.js +139 -0
  228. package/SpringFestival/SpringFestivalScene/LanternAnim.js +60 -0
  229. package/SpringFestival/SpringFestivalScene/Rain.vue +137 -0
  230. package/SpringFestival/SpringFestivalScene/Scene.vue +218 -0
  231. package/SpringFestival/SpringFestivalScene/imageConfig.js +87 -0
  232. package/SpringFestival/SpringFestivalScene/index.js +1 -0
  233. package/Swiper/App.vue +28 -29
  234. package/Swiper/Item.vue +19 -0
  235. package/SwiperTest/App.vue +9 -9
  236. package/TestNativeSharedView/AckEventDefine.ts +82 -0
  237. package/TestNativeSharedView/App.vue +4 -6
  238. package/TestNativeSharedView/JsvDemoTester.js +131 -0
  239. package/TextureAnimation/App.vue +16 -6
  240. package/TextureAnimation/App3.vue +100 -0
  241. package/TextureAnimation/utils/FrameCanvasStore.ts +68 -0
  242. package/TextureAnimation/utils/RotateFrame.vue +146 -0
  243. package/TextureAnimation/utils/circleHaloMask.png +0 -0
  244. package/TombSweepingDayTest/Raining/RainScene.vue +4 -4
  245. package/ViewOpacity/App.vue +21 -2
  246. package/package.json +1 -1
@@ -69,7 +69,13 @@ onMounted(() => {
69
69
  >
70
70
  <!-- 重要代码: 为了实现焦点就近移动, 需要传递onItemEdge回调 -->
71
71
  <template #renderItem="{ data, query, onAction, onItemEdge }">
72
- <SWidgetItem :data="data" :onAction="onAction" :onItemEdge="onItemEdge" />
72
+ <SWidgetItem
73
+ :data="data"
74
+ :onAction="onAction"
75
+ :onItemEdge="onItemEdge"
76
+ ,
77
+ :queryInfo="query"
78
+ />
73
79
  <!-- <widget-item
74
80
  v-else
75
81
  :data="data"
@@ -4,11 +4,13 @@
4
4
  * @Description: file content
5
5
  -->
6
6
  <script setup>
7
- import { ref } from "vue";
7
+ import { ref, onMounted, onUnmounted } from "vue";
8
8
 
9
9
  const props = defineProps({
10
10
  data: Object,
11
11
  onAction: Object,
12
+ rowNum: Number,
13
+ queryInfo: Object,
12
14
  });
13
15
 
14
16
  const focused = ref(false);
@@ -28,6 +30,18 @@ const onClick = () => {
28
30
  props.onAction.register("onFocus", onFocus);
29
31
  props.onAction.register("onBlur", onBlur);
30
32
  props.onAction.register("onClick", onClick);
33
+
34
+ onMounted(() => {
35
+ console.log(
36
+ `+++++++++ 加载 item 所在行列: ${props.rowNum} ${props.queryInfo.id}`
37
+ );
38
+ });
39
+
40
+ onUnmounted(() => {
41
+ console.log(
42
+ `---------卸载 item 所在行列: ${props.rowNum} ${props.queryInfo.id}`
43
+ );
44
+ });
31
45
  </script>
32
46
 
33
47
  <template>
@@ -61,4 +75,4 @@ props.onAction.register("onClick", onClick);
61
75
  {{ data.content }}
62
76
  </div>
63
77
  </div>
64
- </template>
78
+ </template>
@@ -7,6 +7,7 @@ const props = defineProps({
7
7
  data: Object,
8
8
  onAction: Object,
9
9
  onItemEdge: Function,
10
+ queryInfo: Object,
10
11
  });
11
12
 
12
13
  const focusHub = useFocusHub();
@@ -87,7 +88,12 @@ props.onAction.register("onFocus", onFocus);
87
88
  >
88
89
  <!-- 重要代码: 为了实现焦点就近移动, 需要传递onItemEdge回调 -->
89
90
  <template #renderItem="{ data, onAction, onItemEdge }">
90
- <widget-item :data="data" :onAction="onAction" :onItemEdge="onItemEdge" />
91
+ <widget-item
92
+ :data="data"
93
+ :onAction="onAction"
94
+ :onItemEdge="onItemEdge"
95
+ :rowNum="props.queryInfo.id"
96
+ />
91
97
  </template>
92
98
  </metro-widget>
93
99
  </template>
@@ -7,6 +7,7 @@ const props = defineProps({
7
7
  data: Object,
8
8
  onItemEdge: Function,
9
9
  onAction: Object,
10
+ rowNum: Object,
10
11
  });
11
12
  const focusHub = useFocusHub();
12
13
  const mwRef = shallowRef(null);
@@ -104,8 +105,13 @@ props.onAction.register("onBlur", onBlur);
104
105
  :onEdge="onItemEdge"
105
106
  :sendFocusRectEvent="true"
106
107
  >
107
- <template #renderItem="{ data, onAction }">
108
- <item :data="data" :onAction="onAction" />
108
+ <template #renderItem="{ data, onAction, query }">
109
+ <item
110
+ :data="data"
111
+ :onAction="onAction"
112
+ :rowNum="props.rowNum"
113
+ :queryInfo="query"
114
+ />
109
115
  </template>
110
116
  </metro-widget>
111
117
  </template>
@@ -40,10 +40,12 @@ const onFocus = (rect) => {
40
40
  * 因此需要调用setEnterFocusRect来设置焦点进入区域, 以寻找最近的焦点
41
41
  */
42
42
  mwRef.value?.setEnterFocusRect(rect);
43
+ /** 重要代码: 子节点的获焦必须在往 onAction 注册的 onFocus中调用, 否则父MetroWidget不知道当前真正获焦的 item 是哪一个
44
+ */
43
45
  focusHub.setFocus(props.data.name);
44
46
  };
45
47
  const onBlur = () => {
46
- //onBlur时需要返还焦点给父MetroWidget
48
+ /** 重要代码: onBlur时需要返还焦点给父MetroWidget */
47
49
  focusHub.returnFocusToParent();
48
50
  };
49
51
 
@@ -5,95 +5,112 @@
5
5
  */
6
6
  export default [
7
7
  {
8
- name: "基础示例",
8
+ meta: { nameText: "基础示例", },
9
+ name: "metroWidget-基础示例",
9
10
  path: "/metroWidget/basic",
10
11
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/basic/App.vue"),
11
12
  },
12
13
  {
13
- name: "direction",
14
+ meta: { nameText: "direction", },
15
+ name: "metroWidget-direction",
14
16
  path: "/metroWidget/direction",
15
17
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/direction/App.vue"),
16
18
  },
17
19
  {
18
- name: "padding",
20
+ meta: { nameText: "padding", },
21
+ name: "metroWidget-padding",
19
22
  path: "/metroWidget/padding",
20
23
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/padding/App.vue"),
21
24
  },
22
25
  {
23
- name: "slideSetting",
26
+ meta: { nameText: "slideSetting", },
27
+ name: "metroWidget-slideSetting",
24
28
  path: "/metroWidget/slideSetting",
25
29
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/slideSetting/App.vue"),
26
30
  },
27
31
  {
28
- name: "layoutType",
32
+ meta: { nameText: "layoutType", },
33
+ name: "metroWidget-layoutType",
29
34
  path: "/metroWidget/layoutType",
30
35
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/layoutType/App.vue"),
31
36
  },
32
37
  {
33
- name: "嵌套(基础)",
38
+ meta: { nameText: "嵌套(基础)", },
39
+ name: "metroWidget-嵌套(基础)",
34
40
  path: "/metroWidget/focusableItemBasic",
35
41
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/focusableItemBasic/App.vue"),
36
42
  },
37
43
  {
38
- name: "嵌套(混合)",
44
+ meta: { nameText: "嵌套(混合)", },
45
+ name: "metroWidget-嵌套(混合)",
39
46
  path: "/metroWidget/focusableItemMix",
40
47
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/focusableItemMix/App.vue"),
41
48
  },
42
49
  {
43
- name: "嵌套(MetroWidget)",
50
+ meta: { nameText: "嵌套(MetroWidget)", },
51
+ name: "metroWidget-嵌套(MetroWidget)",
44
52
  path: "/metroWidget/focusableItemMetroWidget",
45
53
  component: () => import("@shijiu/jsview-vue-samples/MetroWidgetDemos/focusableItemMetroWidget/App.vue"),
46
54
  },
47
55
  {
48
- name: "乒乓模式",
56
+ meta: { nameText: "乒乓模式", },
57
+ name: "metroWidget-乒乓模式",
49
58
  path: "/metroWidget/PingPong",
50
59
  component: () =>
51
60
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/PingPong/App.vue"),
52
61
  },
53
62
  {
54
- name: "性能测试",
63
+ meta: { nameText: "性能测试", },
64
+ name: "metroWidget-性能测试",
55
65
  path: "/metroWidget/PerformanceTest",
56
66
  component: () =>
57
67
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/PerformanceTest/App.vue"),
58
68
  },
59
69
  {
60
- name: "骨架图",
70
+ meta: { nameText: "骨架图", },
71
+ name: "metroWidget-骨架图",
61
72
  path: "/metroWidget/SkeletonDiagram",
62
73
  component: () =>
63
74
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/SkeletonDiagram/App.vue"),
64
75
  },
65
76
  {
66
- name: ".9焦点页面",
77
+ meta: { nameText: ".9焦点页面", },
78
+ name: "metroWidget-.9焦点页面",
67
79
  path: "/metroWidget/ninePatchFocusPage",
68
80
  component: () =>
69
81
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/ninePatchFocusPage/App.vue"),
70
82
  },
71
83
  {
72
- name: "item尺寸更新",
84
+ meta: { nameText: "item尺寸更新", },
85
+ name: "metroWidget-item尺寸更新",
73
86
  path: "/metroWidget/itemSizeUpdate",
74
87
  component: () =>
75
88
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/itemSizeUpdate/App.vue"),
76
89
  },
77
90
  {
78
- name: "三层嵌套",
91
+ meta: { nameText: "三层嵌套", },
92
+ name: "metroWidget-三层嵌套",
79
93
  path: "/metroWidget/TripleWidget",
80
94
  component: () =>
81
95
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/TripleWidget/App.vue"),
82
96
  },
83
97
  {
84
- name: "数据刷新demo",
98
+ meta: { nameText: "数据刷新demo", },
99
+ name: "metroWidget-数据刷新demo",
85
100
  path: "/metroWidget/RefreshDemo",
86
101
  component: () =>
87
102
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/RefreshDemo/App.vue"),
88
103
  },
89
104
  {
90
- name: "剧集翻页",
105
+ meta: { nameText: "剧集翻页", },
106
+ name: "metroWidget-剧集翻页",
91
107
  path: "/metroWidget/SeamlessSlide",
92
108
  component: () =>
93
109
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/SeamlessSlide/App.vue"),
94
110
  },
95
111
  {
96
- name: "多item分段显示",
112
+ meta: { nameText: "多item分段显示", },
113
+ name: "metroWidget-多item分段显示",
97
114
  path: "/metroWidget/MassiveItems",
98
115
  component: () =>
99
116
  import("@shijiu/jsview-vue-samples/MetroWidgetDemos/MassiveItems/App.vue"),
@@ -0,0 +1,69 @@
1
+ <template>
2
+ <Jsv3dStage :style="{ width: 1280, height: 720 }" :perspective="700">
3
+ <Poster3d
4
+ :position="rPosition"
5
+ :style="cStyle"
6
+ :divStyle="{ width: 400, height: 200 }"
7
+ >
8
+ <Jsv3dDiv
9
+ v-for="(item, index) in cSrcImgArray"
10
+ :style="{
11
+ width: 100,
12
+ height: 200,
13
+ left: index * 130 + 20,
14
+ backgroundImage: item,
15
+ }"
16
+ ></Jsv3dDiv>
17
+ </Poster3d>
18
+ </Jsv3dStage>
19
+ </template>
20
+
21
+ <script setup>
22
+ import { Jsv3dStage, Jsv3dDiv } from "jsview";
23
+ import { shallowReactive, onBeforeUnmount } from "vue";
24
+ import Poster3d from "./Poster3d.vue";
25
+
26
+ // 使用到的Jsview组件说明:
27
+ // Jsv3dStage用来创建透视区域,透视区域以中间为3d的消失点, perspective为透视率,默认为1000,约小透视扭曲越明显
28
+ // Jsv3dDiv为解决图片倾斜时的锯齿问题,放入Jsv3dStage的内容,如果可能发生旋转的div请全部使用Jsv3dDiv
29
+ // Jsv3dDiv比div的渲染性能略低, 所以非3d场景,不要习惯性全替换成Jsv3dDiv
30
+
31
+ // Poster3d为应用层样例组件,里面自带类似于tansition的动画功能,可以处理平移和旋转的配置
32
+
33
+ //起始位置和旋转角
34
+ const rPosition = shallowReactive({
35
+ x: 720,
36
+ y: 260,
37
+ rotateY: -30,
38
+ });
39
+ //3d组件的style
40
+ const cStyle = {
41
+ width: 400,
42
+ height: 200,
43
+ };
44
+ //插槽的图片来源数组
45
+ const cSrcImgArray = [
46
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/Poster3d/App/element_228120_img_20230522225739.jpg",
47
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/Poster3d/App/element_228121_img_20230522225750.jpg",
48
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/Poster3d/App/element_228277_img_20230530144223.png",
49
+ ];
50
+ //定时器
51
+ let vTimer = { id: -1 };
52
+ let vTimer1 = { id: -1 };
53
+ vTimer.id = setTimeout(() => {
54
+ rPosition.x = 420;
55
+ rPosition.rotateY = 0;
56
+ }, 3000);
57
+ vTimer1.id = setTimeout(() => {
58
+ rPosition.x = 120;
59
+ rPosition.rotateY = 30;
60
+ }, 6000);
61
+ onBeforeUnmount(() => {
62
+ clearTimeout(vTimer.id);
63
+ clearTimeout(vTimer1.id);
64
+ vTimer.id = -1;
65
+ vTimer1.id = -1;
66
+ });
67
+ </script>
68
+
69
+ <style lang="scss" scoped></style>
@@ -0,0 +1,92 @@
1
+ <script setup>
2
+ /**
3
+ * @file
4
+ *
5
+ * 【模块 export 内容】
6
+ * Poster3D:3d移动动画的组件。
7
+ * props说明:
8
+ * @prop {Object} position 包含x,y,y旋转的初始配置。
9
+ * @prop {Number} animDuration 动画时间,默认1秒
10
+ * @prop {Object} style 组件的width/height
11
+ * @prop {Object} divStyle 提供给jsv3dDiv的宽高
12
+ */
13
+
14
+ import { shallowRef, watch } from "vue";
15
+ import { Jsv3dDiv, getKeyFramesGroup } from "jsview";
16
+ const props = defineProps({
17
+ position: { require: true, type: Object },
18
+ xRotate: { require: true, type: Number },
19
+ animDuration: { type: Number, default: 1 },
20
+ style: { type: Object, require: true },
21
+ divStyle: { type: Object, require: true },
22
+ });
23
+ const myPosition = {
24
+ x: props.position.x,
25
+ y: props.position.y,
26
+ rotateY: props.position?.rotateY,
27
+ };
28
+ let myAnim = shallowRef("");
29
+ const styleShell = getKeyFramesGroup();
30
+ let aniName = "";
31
+ watch(
32
+ () => props.position,
33
+ (newValue, oldValue) => {
34
+ if (newValue.rotateY !== 0) {
35
+ aniName = `@keyframes go
36
+ {
37
+ from { transform: translate3d(${-(
38
+ newValue.x - myPosition.x
39
+ )},0,0) rotate3d(0,1,0,${-newValue.rotateY}deg); }
40
+ to
41
+ { transform: translate3d(0,0,0) rotate3d(0,1,0,${0}deg); } }`;
42
+ myAnim.value = `go ${props.animDuration}s`;
43
+ } else {
44
+ aniName = `@keyframes start
45
+ {
46
+ from { transform: translate3d(${-(
47
+ newValue.x - myPosition.x
48
+ )},0,0) rotate3d(0,1,0,${myPosition.rotateY}deg); }
49
+ to
50
+ { transform: translate3d(0,0,0) rotate3d(0,1,0,${
51
+ newValue.rotateY
52
+ }deg); } }`;
53
+ myAnim.value = `start ${props.animDuration}s`;
54
+ }
55
+ styleShell.insertRule(aniName);
56
+ myPosition.x = newValue.x;
57
+ myPosition.y = newValue.y;
58
+ myPosition.rotateY = newValue?.rotateY;
59
+ },
60
+ { deep: true }
61
+ );
62
+ const myEnd = () => {
63
+ const containsGo = aniName.includes("go");
64
+ if (containsGo) {
65
+ styleShell?.removeRule("go");
66
+ } else {
67
+ styleShell?.removeRule("start");
68
+ }
69
+ myAnim.value = null;
70
+ };
71
+ </script>
72
+ <template>
73
+ <Jsv3dDiv
74
+ :style="{
75
+ width: props.style.width,
76
+ height: props.style.height,
77
+ left: props.position.x,
78
+ top: props.position.y,
79
+ transform: props.position.rotateY
80
+ ? `rotate3d(0,1,0,${props.position.rotateY}deg)`
81
+ : '',
82
+ backgroundColor: '#FF1313',
83
+ animation: myAnim,
84
+ }"
85
+ @animationend="myEnd"
86
+ >
87
+ <Jsv3dDiv :position="props.divStyle">
88
+ <slot></slot>
89
+ </Jsv3dDiv>
90
+ </Jsv3dDiv>
91
+ </template>
92
+ <style scoped></style>
@@ -14,9 +14,9 @@ import purple from "./images/purple.png";
14
14
  const ImgData = [orange, pink, red, yellowGreen, blue, darkGreen, purple];
15
15
 
16
16
  const ImageChinChilla =
17
- "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/BackgroundLongmao.jpg";
18
- const ImageLandscape = "https://oss.image.qcast.cn/ai-draw/landscape.jpeg";
19
- const ImageOwl = "https://oss.image.qcast.cn/ai-draw/owl.jpeg";
17
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/PosterPacker/App/BackgroundLongmao.jpg";
18
+ const ImageLandscape = "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/PosterPacker/App/landscape.jpeg";
19
+ const ImageOwl = "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/PosterPacker/App/owl.jpeg";
20
20
  //旋涡子组件的引用
21
21
  const cChildRef1 = ref(null);
22
22
  //genie子组件的引用
@@ -79,9 +79,9 @@ const onKeyDown = (ev) => {
79
79
  }
80
80
  case 13: {
81
81
  if (rKeyCount.value == 0) {
82
- cChildRef1.value.getRandomDecimal();
82
+ cChildRef1.value?.getRandomDecimal();
83
83
  } else {
84
- cChildRef2.value.switcher();
84
+ cChildRef2.value?.switcher();
85
85
  }
86
86
 
87
87
  return true;
@@ -43,7 +43,7 @@ const props = defineProps({
43
43
  top: { type: Number, default: 0 },
44
44
  });
45
45
  //图片
46
- const ImagePanda = "https://oss.image.qcast.cn/ai-draw/panda.jpeg";
46
+ const ImagePanda = "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/PosterPacker/tools/vortexPacker/Vortex/panda.jpeg";
47
47
  //0-1的x和y的坐标值(初始为x和y的中心点)
48
48
  let myX = 0.5;
49
49
  let myY = 0.5;
@@ -13,7 +13,7 @@ const includeImage = true;
13
13
  const imageH = 64;
14
14
  const imageW = 64;
15
15
  const imageSrc =
16
- "http://oss.image.qcast.cn/homepage/20191224/0fdcdc8b258fe7baac16b73f58f8989d.jpg";
16
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/QrcodeDemo/App/0fdcdc8b258fe7baac16b73f58f8989d.jpg";
17
17
  const tipsInfo = `功能:二维码展示可配置项:
18
18
 
19
19
  1.前景色
package/Ripple/App.vue CHANGED
@@ -20,7 +20,7 @@ import img from "../assets/jpegDemo.jpeg";
20
20
  const rippleViewRef = shallowRef(null);
21
21
 
22
22
  const imgUrl =
23
- "https://qcast-image.oss-cn-qingdao.aliyuncs.com/demo_images/colorful-blocks.jpg";
23
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/Ripple/App/colorful-blocks.jpg";
24
24
 
25
25
  const genSource = () => {
26
26
  return [
@@ -10,13 +10,13 @@ import { useRouter } from "vue-router";
10
10
  const router = useRouter();
11
11
 
12
12
  const test1 =
13
- "url(https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/ScaleDownTest/test_1.jpeg)";
13
+ "url(https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/ScaleDownNeon/App/test_1.jpeg)";
14
14
  const test2 =
15
- "url(https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/ScaleDownTest/test_2.jpeg)";
15
+ "url(https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/ScaleDownNeon/App/test_2.jpeg)";
16
16
  const test3 =
17
- "url(https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/ScaleDownTest/test_3.jpeg)";
17
+ "url(https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/ScaleDownNeon/App/test_3.jpeg)";
18
18
  const test4 =
19
- "url(https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/ScaleDownTest/test_4.jpeg)";
19
+ "url(https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/ScaleDownNeon/App/test_4.jpeg)";
20
20
 
21
21
  const onKeyDown = (ev) => {
22
22
  // 8:Backspace, 27:Escape, 10000:盒子返回键
@@ -74,9 +74,9 @@ import { ArraySet2 } from "./maskConfig/config2";
74
74
  import { ArraySet3 } from "./maskConfig/config3";
75
75
 
76
76
  const fly1 =
77
- "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/fly1.jpg";
77
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/App/fly1.jpg";
78
78
  const fly2 =
79
- "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/fly2.jpg";
79
+ "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/App/fly2.jpg";
80
80
  //预加载数组
81
81
  const preload_info = [buildPreloadInfo(fly1), buildPreloadInfo(fly2)];
82
82
 
@@ -5,84 +5,84 @@ const ArraySet2 = [
5
5
  top: 0,
6
6
  width: 565,
7
7
  height: 395,
8
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/1.png",
8
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/1.png",
9
9
  },
10
10
  {
11
11
  left: 245,
12
12
  top: 0,
13
13
  width: 377,
14
14
  height: 305,
15
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/2.png",
15
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/2.png",
16
16
  },
17
17
  {
18
18
  left: 600,
19
19
  top: 0,
20
20
  width: 236,
21
21
  height: 276,
22
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/3.png",
22
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/3.png",
23
23
  },
24
24
  {
25
25
  left: 719,
26
26
  top: 0,
27
27
  width: 418,
28
28
  height: 306,
29
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/4.png",
29
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/4.png",
30
30
  },
31
31
  {
32
32
  left: 783,
33
33
  top: 0,
34
34
  width: 497,
35
35
  height: 415,
36
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/5.png",
36
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/5.png",
37
37
  },
38
38
  {
39
39
  left: 0,
40
40
  top: 366,
41
41
  width: 531,
42
42
  height: 301,
43
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/6.png",
43
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/6.png",
44
44
  },
45
45
  {
46
46
  left: 494,
47
47
  top: 217,
48
48
  width: 481,
49
49
  height: 340,
50
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/7.png",
50
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/7.png",
51
51
  },
52
52
  {
53
53
  left: 891,
54
54
  top: 332,
55
55
  width: 389,
56
56
  height: 388,
57
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/8.png",
57
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/8.png",
58
58
  },
59
59
  {
60
60
  left: 0,
61
61
  top: 429,
62
62
  width: 601,
63
63
  height: 291,
64
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/9.png",
64
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/9.png",
65
65
  },
66
66
  {
67
67
  left: 364,
68
68
  top: 510,
69
69
  width: 254,
70
70
  height: 210,
71
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/10.png",
71
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/10.png",
72
72
  },
73
73
  {
74
74
  left: 573,
75
75
  top: 447,
76
76
  width: 230,
77
77
  height: 273,
78
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/11.png",
78
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/11.png",
79
79
  },
80
80
  {
81
81
  left: 708,
82
82
  top: 453,
83
83
  width: 474,
84
84
  height: 267,
85
- url: "https://qcast-image.oss-cn-qingdao.aliyuncs.com/JsViewVideo/ImageTestSample/SceneTransition/mask1/12.png",
85
+ url: "https://cdn.release.qcast.cn/JsViewFrameworkTester/JsViewVueSampleResources/SceneTransition/maskConfig/config2/12.png",
86
86
  },
87
87
  ];
88
88
  export { ArraySet2}