@shijiu/jsview-vue 0.0.1-beta.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 (252) hide show
  1. package/docs/IMPORT_CHANGE_LOG.txt +3 -0
  2. package/docs/git_commit.md +15 -0
  3. package/docs/test_version_up.txt +1 -0
  4. package/dom/bin/jsview-dom-1.0.313.tgz +0 -0
  5. package/dom/browser-root-style.css +21 -0
  6. package/dom/jsv-browser-debug-dom.js +8 -0
  7. package/dom/jsv-dom.js +6 -0
  8. package/dom/jsv-forge-define.js +6 -0
  9. package/dom/target_core_revision.js +14 -0
  10. package/load/header_script_loader.js +134 -0
  11. package/load/jsview-main.js +42 -0
  12. package/load/jsview.config.default.js +37 -0
  13. package/load/jsview.default.config.js +37 -0
  14. package/load/loader.js +172 -0
  15. package/load/loader_webkit.js +40 -0
  16. package/package.json +27 -0
  17. package/patch/node_modules/@babel/preset-env/lib/available-plugins.js +219 -0
  18. package/patch/node_modules/@vue/cli-plugin-typescript/index.js +100 -0
  19. package/patch/node_modules/@vue/cli-service/lib/commands/serve.js +395 -0
  20. package/patch/node_modules/@vue/cli-service/lib/config/app.js +272 -0
  21. package/patch/node_modules/@vue/cli-service/lib/config/assets.js +70 -0
  22. package/patch/node_modules/@vue/cli-service/lib/config/base.js +212 -0
  23. package/patch/node_modules/@vue/compiler-sfc/dist/compiler-sfc.cjs.js +2566 -0
  24. package/patch/node_modules/@vue/compiler-sfc/dist/jsview-css-to-js.js +274 -0
  25. package/patch/node_modules/@vue/runtime-dom/dist/runtime-dom.esm-bundler.js +1596 -0
  26. package/patch/node_modules/postcss-js/objectifier.js +90 -0
  27. package/patch/node_modules/vue-loader/dist/resolveScript.js +70 -0
  28. package/patch/package-lock.json +30051 -0
  29. package/samples/AdvanceMetroWidget/App.vue +123 -0
  30. package/samples/AdvanceMetroWidget/Frame.vue +101 -0
  31. package/samples/AdvanceMetroWidget/Item.vue +58 -0
  32. package/samples/AdvanceMetroWidget/data.js +137 -0
  33. package/samples/AnimPicture/App.vue +224 -0
  34. package/samples/AnimPicture/assets/animated_webp.webp +0 -0
  35. package/samples/AnimPicture/assets/ball_3.webp +0 -0
  36. package/samples/AnimPicture/assets/girl_run.gif +0 -0
  37. package/samples/AnimPicture/assets/quan.webp +0 -0
  38. package/samples/Basic/App.vue +129 -0
  39. package/samples/Basic/assets/border.png +0 -0
  40. package/samples/Basic/assets/border2.png +0 -0
  41. package/samples/Basic/assets/icon.png +0 -0
  42. package/samples/Basic/assets/test.jpg +0 -0
  43. package/samples/Basic/components/ContentBlock.vue +36 -0
  44. package/samples/Basic/components/FontStyle.css +10 -0
  45. package/samples/Basic/components/TitleBar.vue +29 -0
  46. package/samples/Basic/components/anim/AnimGroup.vue +68 -0
  47. package/samples/Basic/components/anim/AnimKeyframeBasic.vue +102 -0
  48. package/samples/Basic/components/anim/AnimKeyframeComposite.vue +53 -0
  49. package/samples/Basic/components/anim/AnimTransition.vue +116 -0
  50. package/samples/Basic/components/div/DivBackground.vue +15 -0
  51. package/samples/Basic/components/div/DivClip.vue +81 -0
  52. package/samples/Basic/components/div/DivCssScoped.vue +27 -0
  53. package/samples/Basic/components/div/DivCssVar.vue +50 -0
  54. package/samples/Basic/components/div/DivGroup1.vue +33 -0
  55. package/samples/Basic/components/div/DivGroup2.vue +41 -0
  56. package/samples/Basic/components/div/DivLayout.vue +12 -0
  57. package/samples/Basic/components/div/DivRadius.vue +47 -0
  58. package/samples/Basic/components/text/TextAlign.vue +48 -0
  59. package/samples/Basic/components/text/TextFontStyle.vue +58 -0
  60. package/samples/Basic/components/text/TextGroup.vue +32 -0
  61. package/samples/Basic/components/text/TextOverflow.vue +78 -0
  62. package/samples/BasicFocusControl/App.vue +125 -0
  63. package/samples/BasicFocusControl/components/BaseBlock.vue +51 -0
  64. package/samples/BasicFocusControl/components/MainArea.vue +98 -0
  65. package/samples/BasicFocusControl/components/MainAreaLeftBlock.vue +21 -0
  66. package/samples/BasicFocusControl/components/MainAreaRightBlock.vue +30 -0
  67. package/samples/BasicFocusControl/components/SideBar.vue +73 -0
  68. package/samples/BasicFocusControl/components/SideBarBlock.vue +30 -0
  69. package/samples/ClassNameDemo/App.vue +119 -0
  70. package/samples/ClassNameDemo/assets/bg.jpg +0 -0
  71. package/samples/ClassNameDemo/assets/coupon_content.png +0 -0
  72. package/samples/ClassNameDemo/assets/coupon_left.png +0 -0
  73. package/samples/ClassNameDemo/assets/coupon_mid.png +0 -0
  74. package/samples/ClassNameDemo/assets/coupon_right.png +0 -0
  75. package/samples/ClassNameDemo/assets/focus_border.png +0 -0
  76. package/samples/ClassNameDemo/assets/holder_logo.png +0 -0
  77. package/samples/ClassNameDemo/assets/jrbm.png +0 -0
  78. package/samples/ClassNameDemo/assets/line_left.png +0 -0
  79. package/samples/ClassNameDemo/assets/line_mid.png +0 -0
  80. package/samples/ClassNameDemo/assets/line_right.png +0 -0
  81. package/samples/ClassNameDemo/assets/loading.png +0 -0
  82. package/samples/ClassNameDemo/assets/logo.png +0 -0
  83. package/samples/ClassNameDemo/assets/mcjx.png +0 -0
  84. package/samples/ClassNameDemo/assets/tao.png +0 -0
  85. package/samples/ClassNameDemo/assets/tmall.png +0 -0
  86. package/samples/ClassNameDemo/components/ContentItem.vue +253 -0
  87. package/samples/ClassNameDemo/components/LoadingView.vue +43 -0
  88. package/samples/ClassNameDemo/components/TitleView.vue +24 -0
  89. package/samples/ClassNameDemo/data.js +24 -0
  90. package/samples/ColorSpace/App.vue +135 -0
  91. package/samples/ColorSpace/bmpDemo.bmp +0 -0
  92. package/samples/ColorSpace/jpegDemo.jpeg +0 -0
  93. package/samples/ColorSpace/pngDemo.png +0 -0
  94. package/samples/ColorSpace/pngNoAlphaDemo.png +0 -0
  95. package/samples/DemoHomepage/App.vue +31 -0
  96. package/samples/DemoHomepage/components/BodyFrame.vue +82 -0
  97. package/samples/DemoHomepage/components/Dialog.vue +94 -0
  98. package/samples/DemoHomepage/components/Item.vue +77 -0
  99. package/samples/DemoHomepage/components/TabFrame.vue +86 -0
  100. package/samples/DemoHomepage/router.js +132 -0
  101. package/samples/DemoHomepage/views/Homepage.vue +186 -0
  102. package/samples/FlipCard/App.vue +80 -0
  103. package/samples/FlipCard/FlipCard.vue +124 -0
  104. package/samples/FlipCard/assets/blue_egg.png +0 -0
  105. package/samples/FlipCard/assets/red_egg.png +0 -0
  106. package/samples/FlipCard/data.js +13 -0
  107. package/samples/FlowMultiWidget/App.vue +91 -0
  108. package/samples/FlowMultiWidget/assets/nine_patch_focus.png +0 -0
  109. package/samples/FlowMultiWidget/components/Block.vue +107 -0
  110. package/samples/FlowMultiWidget/components/FlowPage.vue +60 -0
  111. package/samples/FlowMultiWidget/components/Item.vue +103 -0
  112. package/samples/FlowMultiWidget/components/MenuItem.vue +72 -0
  113. package/samples/FlowMultiWidget/components/MyMenu.vue +90 -0
  114. package/samples/FlowMultiWidget/data.js +446 -0
  115. package/samples/HashHistory/App.vue +124 -0
  116. package/samples/HashHistory/components/HorizontalButtonList.vue +114 -0
  117. package/samples/HashHistory/components/Item.vue +74 -0
  118. package/samples/HashHistory/router.js +30 -0
  119. package/samples/HashHistory/views/BasePage.vue +19 -0
  120. package/samples/HashHistory/views/MainPage.vue +68 -0
  121. package/samples/HashHistory/views/SubPage.vue +79 -0
  122. package/samples/HashHistory/views/SubPageFirst.vue +10 -0
  123. package/samples/HashHistory/views/SubPageSecond.vue +10 -0
  124. package/samples/LongImage/App.vue +96 -0
  125. package/samples/LongImage/Button.vue +153 -0
  126. package/samples/LongImage/LongImageScroll.vue +127 -0
  127. package/samples/LongImage/Scroll.vue +16 -0
  128. package/samples/LongImage/assets/1280x7200.jpg +0 -0
  129. package/samples/LongText/App.vue +111 -0
  130. package/samples/LongText/Button.vue +153 -0
  131. package/samples/LongText/LongTextScroll.vue +225 -0
  132. package/samples/LongText/Scroll.vue +16 -0
  133. package/samples/Preload/App.vue +146 -0
  134. package/samples/Preload/data.js +23 -0
  135. package/samples/Preload/images/awesomeface.png +0 -0
  136. package/samples/Preload/images/cat.jpg +0 -0
  137. package/samples/Preload/images/rank.png +0 -0
  138. package/samples/Preload/images/rank_focus.png +0 -0
  139. package/samples/Preload/images/rule.png +0 -0
  140. package/samples/Preload/images/rule_focus.png +0 -0
  141. package/samples/Preload/images/start.png +0 -0
  142. package/samples/Preload/images/start_focus.png +0 -0
  143. package/samples/Preload/preloadItem.vue +22 -0
  144. package/samples/QrcodeDemo/App.vue +73 -0
  145. package/samples/SimpleWidgetDemo/App.vue +204 -0
  146. package/samples/SimpleWidgetDemo/Item.vue +83 -0
  147. package/samples/SimpleWidgetDemo/assets/bg.jpg +0 -0
  148. package/samples/SimpleWidgetDemo/assets/coupon_content.png +0 -0
  149. package/samples/SimpleWidgetDemo/assets/coupon_left.png +0 -0
  150. package/samples/SimpleWidgetDemo/assets/coupon_mid.png +0 -0
  151. package/samples/SimpleWidgetDemo/assets/coupon_right.png +0 -0
  152. package/samples/SimpleWidgetDemo/assets/focus_border.png +0 -0
  153. package/samples/SimpleWidgetDemo/assets/holder_logo.png +0 -0
  154. package/samples/SimpleWidgetDemo/assets/jrbm.png +0 -0
  155. package/samples/SimpleWidgetDemo/assets/line_left.png +0 -0
  156. package/samples/SimpleWidgetDemo/assets/line_mid.png +0 -0
  157. package/samples/SimpleWidgetDemo/assets/line_right.png +0 -0
  158. package/samples/SimpleWidgetDemo/assets/loading.png +0 -0
  159. package/samples/SimpleWidgetDemo/assets/logo.png +0 -0
  160. package/samples/SimpleWidgetDemo/assets/mcjx.png +0 -0
  161. package/samples/SimpleWidgetDemo/assets/tao.png +0 -0
  162. package/samples/SimpleWidgetDemo/assets/tmall.png +0 -0
  163. package/samples/SimpleWidgetDemo/border.png +0 -0
  164. package/samples/SimpleWidgetDemo/components/ContentItem.vue +412 -0
  165. package/samples/SimpleWidgetDemo/components/MyTab.vue +117 -0
  166. package/samples/SimpleWidgetDemo/data.js +110 -0
  167. package/samples/SprayView/App.vue +270 -0
  168. package/samples/SprayView/assets/snow.png +0 -0
  169. package/samples/SpriteImage/App.vue +174 -0
  170. package/samples/SpriteImage/images/cat_run.png +0 -0
  171. package/samples/SpriteImage/images/egg_break.json +116 -0
  172. package/samples/SpriteImage/images/egg_break.png +0 -0
  173. package/samples/SpriteImage/images/sprite.png +0 -0
  174. package/samples/TextBox/App.vue +179 -0
  175. package/samples/TextBox/RenderCenter.vue +109 -0
  176. package/samples/TextBox/RenderLeft.vue +109 -0
  177. package/samples/TextBox/RenderOneLine.vue +120 -0
  178. package/samples/TextBox/RenderRight.vue +107 -0
  179. package/samples/TextShadowDemo/App.vue +98 -0
  180. package/samples/TextureSize/App.vue +142 -0
  181. package/samples/TextureSize/bmpDemo.bmp +0 -0
  182. package/samples/TextureSize/jpegDemo.jpeg +0 -0
  183. package/samples/TextureSize/jpgDemo.jpg +0 -0
  184. package/samples/TextureSize/pngDemo.png +0 -0
  185. package/samples/TextureSize/pngNoAlphaDemo.png +0 -0
  186. package/samples/ThrowMoveDemo/AccelerateDemo.vue +118 -0
  187. package/samples/ThrowMoveDemo/App.vue +114 -0
  188. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +116 -0
  189. package/samples/ThrowMoveDemo/TargetDemo.vue +117 -0
  190. package/samples/ThrowMoveDemo/UDParabolicDemo.vue +122 -0
  191. package/samples/TransitPage/App.vue +41 -0
  192. package/samples/VideoDemo/App.vue +137 -0
  193. package/samples/VideoDemo/components/Button.vue +69 -0
  194. package/samples/VideoDemo/components/Controllor.vue +195 -0
  195. package/samples/VideoDemo/components/VideoFrame.vue +152 -0
  196. package/scripts/git-commit-empty.js +21 -0
  197. package/scripts/install-local-packages.js +121 -0
  198. package/scripts/make-js.sh +181 -0
  199. package/scripts/post-build.js +132 -0
  200. package/scripts/post-install.js +127 -0
  201. package/scripts/pre-pack.js +2 -0
  202. package/scripts/run-android.js +64 -0
  203. package/utils/JsViewEngineWidget/bin/shijiu-jsview-vue-widget-1.0.1.tgz +0 -0
  204. package/utils/JsViewEngineWidget/index.d.ts +32 -0
  205. package/utils/JsViewEngineWidget/index.js +6 -0
  206. package/utils/JsViewVueTools/DebugContentShellJBridge.js +16 -0
  207. package/utils/JsViewVueTools/DebugTool.js +21 -0
  208. package/utils/JsViewVueTools/DefaultKeyMap.js +12 -0
  209. package/utils/JsViewVueTools/JsvDynamicCssStyle.js +73 -0
  210. package/utils/JsViewVueTools/JsvDynamicKeyFrames.js +128 -0
  211. package/utils/JsViewVueTools/JsvHashHistory.js +112 -0
  212. package/utils/JsViewVueTools/JsvRuntimeBridge.js +417 -0
  213. package/utils/JsViewVueTools/JsvStyleClass.js +290 -0
  214. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserPreload.vue +80 -0
  215. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserQrcode.vue +148 -0
  216. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserSpray.vue +55 -0
  217. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/ApicDataBase.js +29 -0
  218. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/BrowserApic.vue +124 -0
  219. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/GifData.js +83 -0
  220. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/LoopToolBase.js +25 -0
  221. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/NormalLoopTool.js +61 -0
  222. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/PartLoopTool.js +119 -0
  223. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/Viewer.js +106 -0
  224. package/utils/JsViewVueWidget/BrowserDebugWidget/JsvApic/WebpData.js +141 -0
  225. package/utils/JsViewVueWidget/BrowserDebugWidget/WidgetLoader.js +20 -0
  226. package/utils/JsViewVueWidget/BrowserDebugWidget/WidgetWrapper.js +11 -0
  227. package/utils/JsViewVueWidget/JsvActorMove/ActorControlBase.js +204 -0
  228. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +64 -0
  229. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMoveControl.js +427 -0
  230. package/utils/JsViewVueWidget/JsvActorMove/index.js +12 -0
  231. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +179 -0
  232. package/utils/JsViewVueWidget/JsvApic/index.js +17 -0
  233. package/utils/JsViewVueWidget/JsvMarquee.vue +197 -0
  234. package/utils/JsViewVueWidget/JsvNativeSharedDiv.vue +92 -0
  235. package/utils/JsViewVueWidget/JsvNinePatch.vue +76 -0
  236. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +351 -0
  237. package/utils/JsViewVueWidget/JsvPreload/index.js +21 -0
  238. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +140 -0
  239. package/utils/JsViewVueWidget/JsvQrcode/index.js +18 -0
  240. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +140 -0
  241. package/utils/JsViewVueWidget/JsvSpray/index.js +15 -0
  242. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +448 -0
  243. package/utils/JsViewVueWidget/JsvSpriteAnim/SpriteController.js +57 -0
  244. package/utils/JsViewVueWidget/JsvSpriteAnim/index.js +6 -0
  245. package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +35 -0
  246. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +495 -0
  247. package/utils/JsViewVueWidget/JsvSwiper/index.js +10 -0
  248. package/utils/JsViewVueWidget/JsvSwiper3D/Indicator.vue +35 -0
  249. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +404 -0
  250. package/utils/JsViewVueWidget/JsvSwiper3D/index.js +10 -0
  251. package/utils/JsViewVueWidget/JsvTextBox.vue +111 -0
  252. package/utils/JsViewVueWidget/JsvVideo.vue +36 -0
@@ -0,0 +1,495 @@
1
+ <!--
2
+ * @Author: ChenChanghua
3
+ * @Date: 2021-11-23 09:42:26
4
+ * @LastEditors: ChenChanghua
5
+ * @LastEditTime: 2021-12-02 15:47:26
6
+ * @Description: file content
7
+ -->
8
+ <script>
9
+ import { Forge } from "../../../dom/jsv-forge-define";
10
+ import JsvActorMove, {
11
+ JsvActorMoveControl,
12
+ } from "jsview/utils/JsViewVueWidget/JsvActorMove";
13
+ import Indicator from "./Indicator.vue";
14
+ import { ref } from "vue";
15
+
16
+ const VIEW_NUM = 3;
17
+
18
+ function modToRange(value, mod, start = 0) {
19
+ let m = value % mod;
20
+ if (m < start) {
21
+ m += mod;
22
+ } else if (m >= start + mod) {
23
+ m -= mod;
24
+ }
25
+ return m;
26
+ }
27
+
28
+ export default {
29
+ components: { Indicator, JsvActorMove },
30
+ props: {
31
+ showIndicator: {
32
+ type: Boolean,
33
+ default: true,
34
+ },
35
+ dotSize: {
36
+ type: Number,
37
+ default: 10,
38
+ },
39
+ dotGap: {
40
+ type: Number,
41
+ default: 10,
42
+ },
43
+ indicatorPos: {
44
+ type: Number,
45
+ default: -1,
46
+ },
47
+ indicatorAlign: {
48
+ type: String,
49
+ default: "middle",
50
+ },
51
+ totalFrame: {
52
+ type: Number,
53
+ require: true,
54
+ },
55
+ firstFrame: {
56
+ type: Number,
57
+ default: 0,
58
+ },
59
+ layoutInfo: {
60
+ type: Object,
61
+ require: true,
62
+ },
63
+ onClick: {
64
+ type: Function,
65
+ },
66
+ onChange: {
67
+ type: Function,
68
+ },
69
+ autoplayInterval: {
70
+ type: Number,
71
+ default: 5000,
72
+ },
73
+ animation: {
74
+ type: Object,
75
+ default() {
76
+ return {
77
+ duration: 200,
78
+ easing: "linear",
79
+ };
80
+ },
81
+ },
82
+ vertical: {
83
+ type: Boolean,
84
+ default: false,
85
+ },
86
+ name: {
87
+ type: String,
88
+ },
89
+ onFocus: {
90
+ type: Function,
91
+ },
92
+ onBlur: {
93
+ type: Function,
94
+ },
95
+ swipeType: {
96
+ type: String,
97
+ default: "translate",
98
+ },
99
+ smoothTranslate: {
100
+ type: Boolean,
101
+ default: false,
102
+ },
103
+ },
104
+ computed: {
105
+ indicatorLayout() {
106
+ let indicatorSize =
107
+ this.totalFrame * (this.dotSize + this.dotGap) - this.dotGap;
108
+ if (this.vertical) {
109
+ let top;
110
+ if (this.indicatorAlign === "start") {
111
+ top = this.dotGap;
112
+ } else if (this.indicatorAlign === "end") {
113
+ top = this.layoutInfo.height - indicatorSize - this.dotGap;
114
+ } else {
115
+ top = (this.layoutInfo.height - indicatorSize) / 2;
116
+ }
117
+ return {
118
+ left:
119
+ this.indicatorPos < 0
120
+ ? this.layoutInfo.width * 0.8
121
+ : this.indicatorPos,
122
+ top,
123
+ zIndex: 1,
124
+ };
125
+ } else {
126
+ let left;
127
+ if (this.indicatorAlign === "start") {
128
+ left = this.dotGap;
129
+ } else if (this.indicatorAlign === "end") {
130
+ left = this.layoutInfo.width - indicatorSize - this.dotGap;
131
+ } else {
132
+ left = (this.layoutInfo.width - indicatorSize) / 2;
133
+ }
134
+ return {
135
+ left,
136
+ top:
137
+ this.indicatorPos < 0
138
+ ? this.layoutInfo.height * 0.8
139
+ : this.indicatorPos,
140
+ zIndex: 1,
141
+ };
142
+ }
143
+ },
144
+ indicatorDotSize() {
145
+ return this.dotSize + this.dotGap;
146
+ },
147
+ currentDataIndex() {
148
+ return modToRange(this.firstFrame + this.offset, this.totalFrame);
149
+ },
150
+ currentViewIndex() {
151
+ return modToRange(this.offset + 1, VIEW_NUM);
152
+ },
153
+ viewInfoList() {
154
+ let styleList = [
155
+ {
156
+ top: 0,
157
+ left: 0,
158
+ width: this.layoutInfo.width,
159
+ height: this.layoutInfo.height,
160
+ },
161
+ {
162
+ top: 0,
163
+ left: 0,
164
+ width: this.layoutInfo.width,
165
+ height: this.layoutInfo.height,
166
+ },
167
+ {
168
+ top: 0,
169
+ left: 0,
170
+ width: this.layoutInfo.width,
171
+ height: this.layoutInfo.height,
172
+ },
173
+ ];
174
+ switch (this.swipeType) {
175
+ case "translate":
176
+ styleList[0].top = this.vertical ? -this.layoutInfo.height : 0;
177
+ styleList[0].left = this.vertical ? 0 : -this.layoutInfo.width;
178
+
179
+ styleList[2].top = this.vertical ? this.layoutInfo.height : 0;
180
+ styleList[2].left = this.vertical ? 0 : this.layoutInfo.width;
181
+ break;
182
+ case "opacity":
183
+ styleList[0].opaticy = 0;
184
+ styleList[1].opaticy = 1;
185
+ styleList[2].opaticy = 0;
186
+ break;
187
+ default:
188
+ break;
189
+ }
190
+
191
+ let viewList = [];
192
+ for (let i = 0; i < VIEW_NUM; i++) {
193
+ viewList.push({
194
+ dataIndex: modToRange(
195
+ this.currentDataIndex +
196
+ modToRange(i - this.currentViewIndex, VIEW_NUM, -1),
197
+ this.totalFrame
198
+ ),
199
+ style: styleList[modToRange(i - this.offset, VIEW_NUM)],
200
+ });
201
+ }
202
+ return viewList;
203
+ },
204
+ },
205
+ setup(props) {
206
+ console.log("setup");
207
+ let controllerList = new Array(VIEW_NUM);
208
+ if (props.smoothTranslate) {
209
+ for (let i = 0; i < controllerList.length; i++) {
210
+ controllerList[i] = new JsvActorMoveControl();
211
+ }
212
+ }
213
+ let preOffset = -1;
214
+ let offset = ref(0);
215
+ let focused = ref(false);
216
+ let timeoutHandler = -1;
217
+ return {
218
+ preOffset,
219
+ offset,
220
+ focused,
221
+ timeoutHandler,
222
+ controllerList,
223
+ };
224
+ },
225
+ watch: {
226
+ offset(newValue) {
227
+ this.onChange?.(modToRange(this.firstFrame + newValue, this.totalFrame));
228
+ },
229
+ },
230
+ methods: {
231
+ stopAutoplay() {
232
+ clearTimeout(this.timeoutHandler);
233
+ this.timeoutHandler = -1;
234
+ },
235
+ startAutoplay() {
236
+ if (this.autoplayInterval > 0) {
237
+ if (this.timeoutHandler > 0) {
238
+ clearTimeout(this.timeoutHandler);
239
+ }
240
+ this.timeoutHandler = setTimeout(() => {
241
+ this._trigger(1);
242
+ }, this.autoplayInterval);
243
+ }
244
+ },
245
+ _onKeyDown(ev) {
246
+ switch (ev.keyCode) {
247
+ case 37:
248
+ if (!this.vertical) {
249
+ this._trigger(-1);
250
+ return true;
251
+ }
252
+ break;
253
+ case 38:
254
+ if (this.vertical) {
255
+ this._trigger(-1);
256
+ return true;
257
+ }
258
+ break;
259
+ case 39:
260
+ if (!this.vertical) {
261
+ this._trigger(1);
262
+ return true;
263
+ }
264
+ break;
265
+ case 40:
266
+ if (this.vertical) {
267
+ this._trigger(1);
268
+ return true;
269
+ }
270
+ break;
271
+ case 13:
272
+ this.onClick?.();
273
+ return true;
274
+ default:
275
+ break;
276
+ }
277
+
278
+ return false;
279
+ },
280
+ _onAnimationEnd() {
281
+ if (this.autoplayInterval > 0 && !this.focused) {
282
+ this.timeoutHandler = setTimeout(() => {
283
+ this._trigger(1);
284
+ }, this.autoplayInterval);
285
+ }
286
+ },
287
+ _onFocus() {
288
+ this.focused = true;
289
+ this.stopAutoplay();
290
+ this.onFocus?.();
291
+ },
292
+ _onBlur() {
293
+ this.focused = false;
294
+ this.startAutoplay();
295
+ this.onBlur?.();
296
+ },
297
+ _startNormalAnimation() {
298
+ let duration = this.animation.duration;
299
+ // let easing = this.animation.easing ? this.animation.easing : "linear";
300
+
301
+ let curViewAnimation;
302
+ let preViewAnimation;
303
+ switch (this.swipeType) {
304
+ case "translate":
305
+ curViewAnimation = new Forge.TranslateAnimation(
306
+ this.vertical ? 0 : this.layoutInfo.width,
307
+ 0,
308
+ this.vertical ? this.layoutInfo.height : 0,
309
+ 0,
310
+ duration,
311
+ null
312
+ );
313
+ preViewAnimation = new Forge.TranslateAnimation(
314
+ this.vertical ? 0 : this.layoutInfo.width,
315
+ 0,
316
+ this.vertical ? this.layoutInfo.height : 0,
317
+ 0,
318
+ duration,
319
+ null
320
+ );
321
+ break;
322
+ case "opacity":
323
+ break;
324
+ default:
325
+ break;
326
+ }
327
+ curViewAnimation.SetAnimationListener(
328
+ new Forge.AnimationListener(null, this._onAnimationEnd, null)
329
+ );
330
+ this.$refs["element" + this.currentViewIndex]?.jsvMaskView.StartAnimation(
331
+ curViewAnimation
332
+ );
333
+ this.$refs[
334
+ "element" + modToRange(this.currentViewIndex - 1, VIEW_NUM)
335
+ ]?.jsvMaskView.StartAnimation(preViewAnimation);
336
+ },
337
+ _startSmoothTranslateAnimation() {
338
+ let curController = this.controllerList[this.currentViewIndex];
339
+ let preController =
340
+ this.controllerList[modToRange(this.currentViewIndex - 1, VIEW_NUM)];
341
+ if (this.vertical) {
342
+ let speed = (this.layoutInfo.height / this.animation.duration) * 1000;
343
+ curController.jumpTo(0, this.layoutInfo.height);
344
+ curController.moveToY(0, speed, this._onAnimationEnd);
345
+ preController.jumpTo(0, this.layoutInfo.height);
346
+ preController.moveToY(0, speed);
347
+ } else {
348
+ let speed = (this.layoutInfo.width / this.animation.duration) * 1000;
349
+ curController.jumpTo(this.layoutInfo.width, 0);
350
+ curController.moveToX(0, speed, this._onAnimationEnd);
351
+ preController.jumpTo(this.layoutInfo.width, 0);
352
+ preController.moveToX(0, speed);
353
+ }
354
+ },
355
+ _startAnimation() {
356
+ if (this.smoothTranslate) {
357
+ this._startSmoothTranslateAnimation();
358
+ } else {
359
+ this._startNormalAnimation();
360
+ }
361
+ },
362
+ _trigger(direction) {
363
+ this.preOffset = this.offset;
364
+ this.offset += direction;
365
+ this._startAnimation();
366
+ },
367
+ },
368
+ mounted() {
369
+ if (!this.focused) {
370
+ this.startAutoplay();
371
+ }
372
+ },
373
+ beforeUnmount() {
374
+ this.stopAutoplay();
375
+ },
376
+ };
377
+ </script>
378
+
379
+ <template>
380
+ <jsv-focus-block
381
+ :name="name"
382
+ :onAction="{
383
+ onFocus: _onFocus,
384
+ onBlur: _onBlur,
385
+ onKeyDown: _onKeyDown,
386
+ }"
387
+ >
388
+ <div
389
+ :style="{
390
+ width: layoutInfo.width,
391
+ height: layoutInfo.height,
392
+ overflow: 'hidden',
393
+ }"
394
+ >
395
+ <div
396
+ :style="{
397
+ zIndex: 0,
398
+ }"
399
+ >
400
+ <div v-if="smoothTranslate">
401
+ <jsv-actor-move
402
+ v-for="(item, index) in viewInfoList"
403
+ :key="index"
404
+ :style="item.style"
405
+ :control="controllerList[index]"
406
+ >
407
+ <!-- 为了保证slot中的页面刷新。不加这个div slot中的img标签不会更新,vue或者是dom的bug? -->
408
+ <div :key="item.dataIndex">
409
+ <slot
410
+ name="itemView"
411
+ :currentIndex="currentDataIndex"
412
+ :dataIndex="item.dataIndex"
413
+ :focused="focused"
414
+ ></slot>
415
+ </div>
416
+
417
+ <!-- <div
418
+ :style="{
419
+ width: 50,
420
+ height: 50,
421
+ top: 200,
422
+ fontSize: '30px',
423
+ }"
424
+ >
425
+ {{ index }}
426
+ </div> -->
427
+ </jsv-actor-move>
428
+ </div>
429
+ <div v-else>
430
+ <div
431
+ v-for="(item, index) in viewInfoList"
432
+ :key="index"
433
+ :style="item.style"
434
+ :ref="'element' + index"
435
+ >
436
+ <!-- 为了保证slot中的页面刷新。不加这个div slot中的img标签不会更新,vue或者是dom的bug? -->
437
+ <div :key="item.dataIndex">
438
+ <slot
439
+ name="itemView"
440
+ :currentIndex="currentDataIndex"
441
+ :dataIndex="item.dataIndex"
442
+ :focused="focused"
443
+ ></slot>
444
+ </div>
445
+
446
+ <!-- <div
447
+ :style="{
448
+ width: 50,
449
+ height: 50,
450
+ top: 200,
451
+ fontSize: '30px',
452
+ }"
453
+ >
454
+ {{ index + " " + item.dataIndex }}
455
+ </div> -->
456
+ </div>
457
+ </div>
458
+ </div>
459
+
460
+ <div v-if="showIndicator" :style="indicatorLayout">
461
+ <indicator
462
+ :number="totalFrame"
463
+ :current="currentDataIndex"
464
+ :itemSize="indicatorDotSize"
465
+ :vertical="vertical"
466
+ >
467
+ <template #current>
468
+ <slot name="indicatorCur">
469
+ <div
470
+ :style="{
471
+ width: 10,
472
+ height: 10,
473
+ backgroundColor: 'rgba(50, 50, 50, 1.0)',
474
+ borderRadius: '5px',
475
+ }"
476
+ ></div>
477
+ </slot>
478
+ </template>
479
+ <template #normal>
480
+ <slot name="indicatorNor">
481
+ <div
482
+ :style="{
483
+ width: 10,
484
+ height: 10,
485
+ backgroundColor: 'rgba(100, 100, 100, 0.7)',
486
+ borderRadius: '5px',
487
+ }"
488
+ ></div>
489
+ </slot>
490
+ </template>
491
+ </indicator>
492
+ </div>
493
+ </div>
494
+ </jsv-focus-block>
495
+ </template>
@@ -0,0 +1,10 @@
1
+ /*
2
+ * @Author: ChenChanghua
3
+ * @Date: 2021-11-23 09:44:31
4
+ * @LastEditors: ChenChanghua
5
+ * @LastEditTime: 2021-11-23 15:42:46
6
+ * @Description: file content
7
+ */
8
+ import JsvSwiper from "./JsvSwiper.vue";
9
+
10
+ export default JsvSwiper;
@@ -0,0 +1,35 @@
1
+ <!--
2
+ * @Author: ChenChanghua
3
+ * @Date: 2021-11-23 09:44:44
4
+ * @LastEditors: ChenChanghua
5
+ * @LastEditTime: 2021-11-23 17:11:08
6
+ * @Description: file content
7
+ -->
8
+ <script>
9
+ export default {
10
+ props: {
11
+ number: Number,
12
+ vertical: Boolean,
13
+ itemSize: Number,
14
+ current: Number,
15
+ },
16
+ computed: {
17
+ indexList() {
18
+ return new Array(this.number).fill(0).map((_, index) => {
19
+ return index;
20
+ });
21
+ },
22
+ },
23
+ };
24
+ </script>
25
+
26
+ <template>
27
+ <div
28
+ v-for="index in indexList"
29
+ :key="index"
30
+ :style="vertical ? { top: itemSize * index } : { left: itemSize * index }"
31
+ >
32
+ <slot v-if="index == current" name="current"></slot>
33
+ <slot v-else name="normal"></slot>
34
+ </div>
35
+ </template>