@shijiu/jsview-vue-samples 2.2.128 → 2.2.373

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 (105) hide show
  1. package/BakeViewDemo/App.vue +6 -1
  2. package/Basic/components/anim/AnimEasingCubicBezier.vue +56 -0
  3. package/Basic/components/anim/AnimGroup2.vue +33 -0
  4. package/Basic/components/panel/Panel2.vue +8 -3
  5. package/CoupletsTest/widget/Banger/Maroon.vue +4 -7
  6. package/CoupletsTest/widget/Fireworks/Fireworks.vue +52 -44
  7. package/CustomShader/App.vue +174 -0
  8. package/CustomShader/gaussianBlur.glsl +27 -0
  9. package/CustomShader/pageFlip.glsl +41 -0
  10. package/CustomShader/sdf.glsl +22 -0
  11. package/CustomShader/test.glsl +8 -0
  12. package/CustomShader/vortex.glsl +38 -0
  13. package/DemoHomepage/App.vue +50 -32
  14. package/DemoHomepage/components/Item.vue +23 -12
  15. package/DemoHomepage/index.d.ts +5 -2
  16. package/DemoHomepage/router.js +105 -72
  17. package/DispersedFocusControl/App.vue +67 -0
  18. package/DispersedFocusControl/Button.vue +76 -0
  19. package/DispersedFocusControl/data.js +44 -0
  20. package/DragBox/App.vue +148 -0
  21. package/DriftScopeTest/App.vue +128 -0
  22. package/FlexCellDemo/App.vue +47 -223
  23. package/FlexCellDemo/TestFrame1.vue +88 -0
  24. package/FlexCellDemo/TestFrame2.vue +100 -0
  25. package/FlexCellDemo/TestFrame3.vue +97 -0
  26. package/FlexCellDemo/TestFrame4.vue +60 -0
  27. package/FlexCellDemo/TestFrame5.vue +60 -0
  28. package/FlexCellDemo/images/6.jpg +0 -0
  29. package/FocusMoveStyle/App.vue +1 -0
  30. package/FocusMoveStyle/CreepFocus.vue +11 -1
  31. package/FocusMoveStyle/FoldableItem.vue +1 -1
  32. package/FreeMove/App.vue +62 -64
  33. package/FreeMoveLink/App.vue +2 -2
  34. package/FullScreenFlex/App.vue +42 -0
  35. package/FullScreenFlex/TestFrame2.vue +107 -0
  36. package/FullScreenFlex/images/1.png +0 -0
  37. package/HashHistory/App.vue +8 -4
  38. package/ImpactStop/App.vue +45 -45
  39. package/Input/App.vue +184 -97
  40. package/Input/InputPanel.vue +98 -82
  41. package/LatexFormula/App.vue +97 -10
  42. package/LongImage/App.vue +1 -2
  43. package/LongText/App.vue +2 -2
  44. package/LongText/LongTextScroll.vue +22 -22
  45. package/LongText/Scroll.vue +28 -9
  46. package/MetroWidgetDemos/RefreshDemo/App.vue +172 -56
  47. package/MetroWidgetDemos/RefreshDemo/ControlItem.vue +45 -0
  48. package/MetroWidgetDemos/RefreshDemo/Item.vue +20 -4
  49. package/MetroWidgetDemos/itemSizeUpdate/backward/Item.vue +1 -1
  50. package/MetroWidgetDemos/routeList.js +17 -17
  51. package/MindMap/App.vue +10 -1
  52. package/MindMap/data.js +34 -8
  53. package/Parkour/appConfig/jsview.config.mjs +0 -4
  54. package/PosterPacker/App.vue +207 -0
  55. package/PosterPacker/images/bg.jpg +0 -0
  56. package/PosterPacker/images/blue.png +0 -0
  57. package/PosterPacker/images/darkGreen.png +0 -0
  58. package/PosterPacker/images/left.png +0 -0
  59. package/PosterPacker/images/orange.png +0 -0
  60. package/PosterPacker/images/pink.png +0 -0
  61. package/PosterPacker/images/purple.png +0 -0
  62. package/PosterPacker/images/red.png +0 -0
  63. package/PosterPacker/images/right.png +0 -0
  64. package/PosterPacker/images/yellowGreen.png +0 -0
  65. package/PosterPacker/tools/geniePakcer/Genie.vue +686 -0
  66. package/PosterPacker/tools/geniePakcer/genieBottom.glsl +49 -0
  67. package/PosterPacker/tools/geniePakcer/genieLeft.glsl +50 -0
  68. package/PosterPacker/tools/geniePakcer/genieRight.glsl +57 -0
  69. package/PosterPacker/tools/geniePakcer/genieTop.glsl +50 -0
  70. package/PosterPacker/tools/particlePacker/Particle.vue +71 -0
  71. package/PosterPacker/tools/vortexPacker/Vortex.vue +135 -0
  72. package/PosterPacker/tools/vortexPacker/vortex.glsl +37 -0
  73. package/Preload/App.vue +1 -1
  74. package/SceneTransition/JsvSceneTransition.vue +30 -42
  75. package/ScrollBoxTest/App.vue +35 -86
  76. package/ScrollBoxTest/ClipBar.vue +154 -0
  77. package/ScrollBoxTest/DrawCircle.ts +25 -0
  78. package/ScrollBoxTest/NinePatchBar.vue +188 -0
  79. package/ScrollBoxTest/NoBackgroundBar.vue +125 -0
  80. package/ScrollBoxTest/SizeDivBar.vue +139 -0
  81. package/SprayMove/App.vue +75 -0
  82. package/SprayMove/SprayMove.vue +173 -0
  83. package/SprayView/App.vue +8 -9
  84. package/TestNativeSharedView/App.vue +6 -4
  85. package/TextShadowDemo/App.vue +3 -3
  86. package/TextureAnimation/App.vue +244 -148
  87. package/TextureAnimation/App2.vue +66 -14
  88. package/TextureAnimation/assets/blackWhiteTurntable.png +0 -0
  89. package/TextureAnimation/assets/circleHaloMask.png +0 -0
  90. package/TombSweepingDayTest/Raining/Rain.vue +8 -8
  91. package/TouchWidget/App.vue +79 -40
  92. package/TouchWidget/Item.vue +15 -3
  93. package/index.d.ts +1 -1
  94. package/package.json +1 -1
  95. package/MetroWidgetDemos/RefreshDemo/data.js +0 -16
  96. package/TextureAnimation/assets/mask.png +0 -0
  97. package/TextureAnimation/assets/php.jpg +0 -0
  98. package/TouchSample/App.vue +0 -136
  99. package/TouchSample/Item.vue +0 -102
  100. package/TouchSample/MetroWidgetHorizontal.vue +0 -144
  101. package/TouchSample/MetroWidgetVertical.vue +0 -144
  102. package/TouchSample/TouchContainerHorizontal.vue +0 -160
  103. package/TouchSample/TouchContainerVertical.vue +0 -160
  104. package/TouchSample/data.js +0 -81
  105. /package/TextureAnimation/assets/{php2.png → borderOpacity.png} +0 -0
@@ -14,357 +14,390 @@ let routeList = [
14
14
  {
15
15
  name: '基础示例合集',
16
16
  path: '/feature/Basic',
17
- component: () => import('jsview-vue-samples/Basic/App.vue'),
17
+ component: () => import('@shijiu/jsview-vue-samples/Basic/App.vue'),
18
18
  },
19
19
  // {
20
20
  // name: 'FreeMoveResize',
21
21
  // path: '/feature/FreeMoveResize',
22
- // component: () => import('jsview-vue-samples/FreeMoveResize/App.vue'),
22
+ // component: () => import('@shijiu/jsview-vue-samples/FreeMoveResize/App.vue'),
23
23
  // },
24
+ {
25
+ name: '烟花行进特效',
26
+ path: '/Operations/SprayMove',
27
+ component: () => import('jsview-vue-samples/SprayMove/App.vue'),
28
+ },
29
+ {
30
+ name: '海报图收放组件',
31
+ path: '/Operations/PosterPacker',
32
+ component: () => import('jsview-vue-samples/PosterPacker/App.vue'),
33
+ },
24
34
  {
25
35
  name: 'div快照功能',
26
36
  path: '/feature/BakeViewDemo',
27
- component: () => import('jsview-vue-samples/BakeViewDemo/App.vue'),
37
+ component: () => import('@shijiu/jsview-vue-samples/BakeViewDemo/App.vue'),
28
38
  },
29
39
  {
30
40
  name: 'FlexDemo',
31
41
  path: '/feature/FlexDemo',
32
- component: () => import('jsview-vue-samples/FlexCellDemo/App.vue')
33
-
42
+ component: () => import('@shijiu/jsview-vue-samples/FlexCellDemo/App.vue')
43
+ },
44
+ {
45
+ name: 'ScreenFlex',
46
+ path: '/feature/ScreenFlex',
47
+ component: () => import('@shijiu/jsview-vue-samples/FullScreenFlex/App.vue')
34
48
  },
35
49
  {
36
50
  name: '连接线Demo',
37
51
  path: '/feature/ConnectLine',
38
- component: () => import('jsview-vue-samples/ConnectLine/App.vue')
39
-
52
+ component: () => import('@shijiu/jsview-vue-samples/ConnectLine/App.vue')
53
+ },
54
+ {
55
+ name: '离散焦点自动处理',
56
+ path: '/feature/DispersedFocusControl',
57
+ component: () => import('@shijiu/jsview-vue-samples/DispersedFocusControl/App.vue'),
40
58
  },
41
59
  {
42
60
  name: '离散焦点分布',
43
61
  path: '/feature/DispersedItemSample',
44
- component: () => import('jsview-vue-samples/DispersedItemSample/DispersedItemSample.vue')
62
+ component: () => import('@shijiu/jsview-vue-samples/DispersedItemSample/DispersedItemSample.vue')
45
63
  },
46
64
  {
47
65
  name: '饼图测试',
48
66
  path: '/feature/SecTorTest',
49
- component: () => import('jsview-vue-samples/SecTorTest/App.vue'),
67
+ component: () => import('@shijiu/jsview-vue-samples/SecTorTest/App.vue'),
50
68
  },
51
69
  {
52
70
  name: 'TextureStore测试',
53
71
  path: '/feature/TextureStoreTest',
54
- component: () => import('jsview-vue-samples/TextureStoreTest/App.vue'),
72
+ component: () => import('@shijiu/jsview-vue-samples/TextureStoreTest/App.vue'),
55
73
  },
56
74
  {
57
75
  name: 'NinePatch对齐测试',
58
76
  path: '/feature/NinePatchTester',
59
- component: () => import('jsview-vue-samples/NinePatchTester/App.vue'),
77
+ component: () => import('@shijiu/jsview-vue-samples/NinePatchTester/App.vue'),
60
78
  },
61
79
  {
62
80
  name: 'NativeSharedView测试',
63
81
  path: '/feature/TestNativeSharedView',
64
- component: () => import('jsview-vue-samples/TestNativeSharedView/App.vue'),
82
+ component: () => import('@shijiu/jsview-vue-samples/TestNativeSharedView/App.vue'),
65
83
  },
66
84
  {
67
85
  name: 'CSS预处理',
68
86
  path: '/feature/CssPreprocessor',
69
- component: () => import('jsview-vue-samples/CssPreprocessor/App.vue'),
87
+ component: () => import('@shijiu/jsview-vue-samples/CssPreprocessor/App.vue'),
70
88
  },
71
89
  {
72
90
  name: '可视化变化通知',
73
91
  path: '/feature/VisibleSensorDemo',
74
- component: () => import('jsview-vue-samples/VisibleSensorDemo/App.vue'),
92
+ component: () => import('@shijiu/jsview-vue-samples/VisibleSensorDemo/App.vue'),
75
93
  },
76
94
  {
77
95
  name: '快速刷新的表格布局组件',
78
96
  path: '/feature/GridDemo',
79
- component: () => import('jsview-vue-samples/GridDemo/App.vue'),
97
+ component: () => import('@shijiu/jsview-vue-samples/GridDemo/App.vue'),
80
98
  },
81
99
  {
82
100
  name: '有命名空间的焦点切换',
83
101
  path: '/feature/BasicFocusControl',
84
- component: () => import('jsview-vue-samples/BasicFocusControl/App.vue'),
102
+ component: () => import('@shijiu/jsview-vue-samples/BasicFocusControl/App.vue'),
85
103
  },
86
104
  {
87
105
  name: 'Hash方式路由切换',
88
106
  path: '/feature/HashHistory',
89
107
  props: { routePath: '/feature/HashHistory' },
90
- component: () => import('jsview-vue-samples/HashHistory/App.vue'),
108
+ component: () => import('@shijiu/jsview-vue-samples/HashHistory/App.vue'),
91
109
  },
92
110
  {
93
111
  name: '翻牌游戏',
94
112
  path: '/Game/FlipCard',
95
- component: () => import('jsview-vue-samples/FlipCard/App.vue'),
113
+ component: () => import('@shijiu/jsview-vue-samples/FlipCard/App.vue'),
96
114
  },
97
115
  {
98
116
  name: '设置颜色空间',
99
117
  path: '/feature/ColorSpace',
100
- component: () => import('jsview-vue-samples/ColorSpace/App.vue'),
118
+ component: () => import('@shijiu/jsview-vue-samples/ColorSpace/App.vue'),
101
119
  },
102
120
  {
103
121
  name: '制定Texture尺寸',
104
122
  path: '/feature/TextureSize',
105
- component: () => import('jsview-vue-samples/TextureSize/App.vue'),
123
+ component: () => import('@shijiu/jsview-vue-samples/TextureSize/App.vue'),
106
124
  },
107
125
  {
108
126
  name: '长文字',
109
127
  path: '/feature/LongText',
110
- component: () => import('jsview-vue-samples/LongText/App.vue'),
128
+ component: () => import('@shijiu/jsview-vue-samples/LongText/App.vue'),
111
129
  },
112
130
  {
113
131
  name: '长文字Latex',
114
132
  path: '/feature/LongTextLatex',
115
- component: () => import('jsview-vue-samples/LongTextLatex/App.vue'),
133
+ component: () => import('@shijiu/jsview-vue-samples/LongTextLatex/App.vue'),
116
134
  },
117
135
  {
118
136
  name: '二维码',
119
137
  path: '/feature/QrcodeDemo',
120
- component: () => import('jsview-vue-samples/QrcodeDemo/App.vue'),
138
+ component: () => import('@shijiu/jsview-vue-samples/QrcodeDemo/App.vue'),
121
139
  },
122
140
  {
123
141
  name: '文字阴影',
124
142
  path: '/feature/TextShadowDemo',
125
- component: () => import('jsview-vue-samples/TextShadowDemo/App.vue'),
143
+ component: () => import('@shijiu/jsview-vue-samples/TextShadowDemo/App.vue'),
126
144
  },
127
145
  {
128
146
  name: '多行文字区域内对齐',
129
147
  path: '/feature/TextBox',
130
- component: () => import('jsview-vue-samples/TextBox/App.vue'),
148
+ component: () => import('@shijiu/jsview-vue-samples/TextBox/App.vue'),
131
149
  },
132
150
  // TODO: 改为FreeMove后再激活
133
151
  // {
134
152
  // name: '抛物运动写法样例',
135
153
  // path: '/Game/ThrowMoveDemo',
136
- // component: () => import('jsview-vue-samples/ThrowMoveDemo/App.vue'),
154
+ // component: () => import('@shijiu/jsview-vue-samples/ThrowMoveDemo/App.vue'),
137
155
  // },
138
156
  {
139
157
  name: '精灵图',
140
158
  path: '/Game/SpriteImage',
141
- component: () => import('jsview-vue-samples/SpriteImage/App.vue'),
159
+ component: () => import('@shijiu/jsview-vue-samples/SpriteImage/App.vue'),
142
160
  },
143
161
  {
144
162
  name: '文字滚动(标题跑马灯)',
145
163
  path: '/feature/Marquee',
146
- component: () => import('jsview-vue-samples/Marquee/App.vue'),
164
+ component: () => import('@shijiu/jsview-vue-samples/Marquee/App.vue'),
147
165
  },
148
166
  {
149
167
  name: '文字输入',
150
168
  path: '/feature/Input',
151
- component: () => import('jsview-vue-samples/Input/App.vue'),
169
+ component: () => import('@shijiu/jsview-vue-samples/Input/App.vue'),
152
170
  },
153
171
  {
154
172
  name: '情景主题效果:雨',
155
173
  path: '/Operations/TombSweepingDayTest',
156
- component: () => import('jsview-vue-samples/TombSweepingDayTest/App.vue'),
174
+ component: () => import('@shijiu/jsview-vue-samples/TombSweepingDayTest/App.vue'),
157
175
  },
158
176
  {
159
177
  name: '.9图焦点框漂移',
160
178
  path: '/Operations/NinePatchDemo',
161
- component: () => import('jsview-vue-samples/NinePatchDemo/App.vue'),
179
+ component: () => import('@shijiu/jsview-vue-samples/NinePatchDemo/App.vue'),
162
180
  },
163
181
  {
164
182
  name: '动图',
165
183
  path: '/Operations/AnimPicture',
166
- component: () => import('jsview-vue-samples/AnimPicture/App.vue'),
184
+ component: () => import('@shijiu/jsview-vue-samples/AnimPicture/App.vue'),
167
185
  },
168
186
  {
169
187
  name: '粒子效果',
170
188
  path: '/Operations/SprayView',
171
- component: () => import('jsview-vue-samples/SprayView/App.vue'),
189
+ component: () => import('@shijiu/jsview-vue-samples/SprayView/App.vue'),
172
190
  },
173
191
  {
174
192
  name: '长图片',
175
193
  path: '/Operations/LongImage',
176
- component: () => import('jsview-vue-samples/LongImage/App.vue'),
194
+ component: () => import('@shijiu/jsview-vue-samples/LongImage/App.vue'),
177
195
  },
178
196
  {
179
197
  name: '拼图demo',
180
198
  path: '/Operations/MaskClip',
181
- component: () => import('jsview-vue-samples/MaskClip/App.vue'),
199
+ component: () => import('@shijiu/jsview-vue-samples/MaskClip/App.vue'),
182
200
  },
183
201
  {
184
202
  name: 'SoundPool',
185
203
  path: '/Game/SoundPool',
186
- component: () => import('jsview-vue-samples/SoundPool/App.vue'),
204
+ component: () => import('@shijiu/jsview-vue-samples/SoundPool/App.vue'),
187
205
  },
188
206
  {
189
207
  name: 'TextureAnimation',
190
208
  path: '/Operations/TextureAnimation',
191
- component: () => import('jsview-vue-samples/TextureAnimation/App.vue'),
209
+ component: () => import('@shijiu/jsview-vue-samples/TextureAnimation/App.vue'),
192
210
  },
193
211
  {
194
212
  name: '焦点框旋转光效果',
195
213
  path: '/Operations/TextureAnimation2',
196
- component: () => import('jsview-vue-samples/TextureAnimation/App2.vue'),
214
+ component: () => import('@shijiu/jsview-vue-samples/TextureAnimation/App2.vue'),
197
215
  },
198
216
  {
199
217
  name: '公祭日黑白效果',
200
218
  path: '/Operations/GrayDown',
201
- component: () => import('jsview-vue-samples/FilterDemo/App.vue'),
219
+ component: () => import('@shijiu/jsview-vue-samples/FilterDemo/App.vue'),
202
220
  },
203
221
  {
204
222
  name: '水波特效',
205
223
  path: '/Operations/Ripple',
206
- component: () => import('jsview-vue-samples/Ripple/App.vue'),
224
+ component: () => import('@shijiu/jsview-vue-samples/Ripple/App.vue'),
207
225
  },
208
226
  {
209
227
  name: '预加载',
210
228
  path: '/feature/Preload',
211
- component: () => import('jsview-vue-samples/Preload/App.vue'),
229
+ component: () => import('@shijiu/jsview-vue-samples/Preload/App.vue'),
212
230
  },
213
231
  {
214
232
  name: '单图片透明',
215
233
  path: '/feature/ViewOpacity',
216
- component: () => import('jsview-vue-samples/ViewOpacity/App.vue'),
234
+ component: () => import('@shijiu/jsview-vue-samples/ViewOpacity/App.vue'),
217
235
  },
218
236
  {
219
237
  name: '图片缩小算法',
220
238
  path: '/feature/ScaleDownNeon',
221
- component: () => import('jsview-vue-samples/ScaleDownNeon/App.vue'),
239
+ component: () => import('@shijiu/jsview-vue-samples/ScaleDownNeon/App.vue'),
222
240
  },
223
241
  {
224
242
  name: '渐变Texture',
225
243
  path: '/feature/GradientTexture',
226
- component: () => import('jsview-vue-samples/GradientTexture/App.vue'),
244
+ component: () => import('@shijiu/jsview-vue-samples/GradientTexture/App.vue'),
227
245
  },
228
246
  {
229
247
  name: '碰撞检测',
230
248
  path: '/Game/Collision',
231
- component: () => import('jsview-vue-samples/Collision/App.vue'),
249
+ component: () => import('@shijiu/jsview-vue-samples/Collision/App.vue'),
232
250
  },
233
251
  {
234
252
  name: '碰撞即停',
235
253
  path: '/Game/ImpactStop',
236
- component: () => import('jsview-vue-samples/ImpactStop/App.vue'),
254
+ component: () => import('@shijiu/jsview-vue-samples/ImpactStop/App.vue'),
237
255
  },
238
256
  {
239
257
  name: '滚动图',
240
258
  path: '/Operations/Swiper',
241
- component: () => import('jsview-vue-samples/Swiper/App.vue'),
259
+ component: () => import('@shijiu/jsview-vue-samples/Swiper/App.vue'),
242
260
  },
243
261
  {
244
262
  name: '下载接口示例',
245
263
  path: '/feature/JsvPreDownloader',
246
- component: () => import('jsview-vue-samples/JsvPreDownloader/App.vue'),
264
+ component: () => import('@shijiu/jsview-vue-samples/JsvPreDownloader/App.vue'),
247
265
  },
248
266
  {
249
267
  name: '焦点移动样式',
250
268
  path: '/Operations/FocusMoveStyle',
251
- component: () => import('jsview-vue-samples/FocusMoveStyle/App.vue'),
269
+ component: () => import('@shijiu/jsview-vue-samples/FocusMoveStyle/App.vue'),
252
270
  },
253
271
  {
254
272
  name: 'Mockjs测试',
255
273
  path: '/feature/MockjsDemo',
256
- component: () => import('jsview-vue-samples/MockjsDemo/App.vue'),
274
+ component: () => import('@shijiu/jsview-vue-samples/MockjsDemo/App.vue'),
257
275
  },
258
276
  {
259
277
  name: '红包雨',
260
278
  path: '/Game/GiftRain',
261
- component: () => import('jsview-vue-samples/GiftRain/App.vue'),
279
+ component: () => import('@shijiu/jsview-vue-samples/GiftRain/App.vue'),
262
280
  },
263
281
  {
264
282
  name: '雷达图',
265
283
  path: '/Game/RadarChart',
266
- component: () => import('jsview-vue-samples/JsvRadarChart/App.vue')
284
+ component: () => import('@shijiu/jsview-vue-samples/JsvRadarChart/App.vue')
267
285
  },
268
286
  // TODO: 等改为对接FreeMoveActor后再恢复
269
287
  // {
270
288
  // name: '跑酷游戏',
271
289
  // path: '/Game/Parkour',
272
- // component: () => import('jsview-vue-samples/Parkour/App.vue')
290
+ // component: () => import('@shijiu/jsview-vue-samples/Parkour/App.vue')
273
291
  // },
274
292
  {
275
293
  name: 'Hash参数',
276
294
  path: '/feature/HashParams',
277
- component: () => import('jsview-vue-samples/HashParams/App.vue'),
295
+ component: () => import('@shijiu/jsview-vue-samples/HashParams/App.vue'),
278
296
  },
279
297
  {
280
298
  name: '按键打断描画',
281
299
  path: '/feature/BreakRender',
282
- component: () => import('jsview-vue-samples/BreakRender/App.vue'),
300
+ component: () => import('@shijiu/jsview-vue-samples/BreakRender/App.vue'),
283
301
  },
284
302
  {
285
303
  name: 'latex示例',
286
304
  path: '/feature/LatexDemo',
287
- component: () => import('jsview-vue-samples/LatexDemo/App.vue'),
305
+ component: () => import('@shijiu/jsview-vue-samples/LatexDemo/App.vue'),
288
306
  },
289
307
  {
290
308
  name: 'GetRect示例',
291
309
  path: '/feature/GetRect',
292
- component: () => import('jsview-vue-samples/GetBoundingClientRect/App.vue'),
310
+ component: () => import('@shijiu/jsview-vue-samples/GetBoundingClientRect/App.vue'),
293
311
  },
294
312
  {
295
313
  name: '动态Class示例',
296
314
  path: '/feature/DynamicClass',
297
- component: () => import('jsview-vue-samples/DynamicClass/App.vue'),
315
+ component: () => import('@shijiu/jsview-vue-samples/DynamicClass/App.vue'),
298
316
  },
299
317
  {
300
318
  name: 'Class动态切换示例',
301
319
  path: '/feature/ClassDynamicSwitching',
302
- component: () => import('jsview-vue-samples/ClassDynamicSwitching/App.vue'),
320
+ component: () => import('@shijiu/jsview-vue-samples/ClassDynamicSwitching/App.vue'),
303
321
  },
304
322
  {
305
323
  name: 'JsvLine示例',
306
324
  path: '/feature/JsvLine',
307
- component: () => import('jsview-vue-samples/JsvLine/App.vue'),
325
+ component: () => import('@shijiu/jsview-vue-samples/JsvLine/App.vue'),
308
326
  },
309
327
  // {
310
328
  // name: 'FreeMove示例',
311
329
  // path: '/feature/FreeMove',
312
- // component: () => import('jsview-vue-samples/FreeMove/App.vue'),
330
+ // component: () => import('@shijiu/jsview-vue-samples/FreeMove/App.vue'),
313
331
  // },
314
332
  {
315
333
  name: '思维导图示例',
316
334
  path: '/feature/MindMap',
317
- component: () => import('jsview-vue-samples/MindMap/App.vue'),
335
+ component: () => import('@shijiu/jsview-vue-samples/MindMap/App.vue'),
318
336
  },
319
337
  {
320
338
  name: 'latex公式',
321
339
  path: '/feature/LatexFormula',
322
- component: () => import('jsview-vue-samples/LatexFormula/App.vue'),
340
+ component: () => import('@shijiu/jsview-vue-samples/LatexFormula/App.vue'),
323
341
  },
324
342
  {
325
343
  name: 'Swiper3dTest',
326
344
  path: '/Operations/Swiper3D',
327
- component: () => import('jsview-vue-samples/SwiperTest/App.vue'),
345
+ component: () => import('@shijiu/jsview-vue-samples/SwiperTest/App.vue'),
328
346
  },
329
347
  {
330
348
  name: '进度条',
331
349
  path: '/Operations/ProgressBar',
332
- component: () => import('jsview-vue-samples/ProgressBar/App.vue'),
350
+ component: () => import('@shijiu/jsview-vue-samples/ProgressBar/App.vue'),
333
351
  },
334
352
  {
335
353
  name: '春联测试',
336
354
  path: '/Operations/CoupletsTest',
337
- component: () => import('jsview-vue-samples/CoupletsTest/App.vue'),
355
+ component: () => import('@shijiu/jsview-vue-samples/CoupletsTest/App.vue'),
338
356
  },
339
357
  {
340
358
  name: '场景过渡',
341
359
  path: '/Operations/SceneTransition',
342
- component: () => import('jsview-vue-samples/SceneTransition/App.vue'),
360
+ component: () => import('@shijiu/jsview-vue-samples/SceneTransition/App.vue'),
343
361
  },
344
362
  {
345
363
  name: '点击Div',
346
364
  path: '/touch/ClickDivDemo',
347
- component: () => import('jsview-vue-samples/ClickDivDemo/App.vue'),
365
+ component: () => import('@shijiu/jsview-vue-samples/ClickDivDemo/App.vue'),
348
366
  },
349
367
  {
350
368
  name: '触控示例',
351
369
  path: '/touch/TouchWidget',
352
- component: () => import('jsview-vue-samples/TouchWidget/App.vue'),
370
+ component: () => import('@shijiu/jsview-vue-samples/TouchWidget/App.vue'),
371
+ },
372
+ {
373
+ name: 'DragBox',
374
+ path: '/touch/Box',
375
+ component: () => import('@shijiu/jsview-vue-samples/DragBox/App.vue'),
353
376
  },
354
377
  // {
355
378
  // name: 'FreeMove触控磁吸',
356
379
  // path: '/touch/FreeMoveChildAttract',
357
- // component: () => import('jsview-vue-samples/FreeMoveChildAttract/App.vue'),
380
+ // component: () => import('@shijiu/jsview-vue-samples/FreeMoveChildAttract/App.vue'),
358
381
  // },
359
382
  // {
360
383
  // name: 'FreeMoveLink',
361
384
  // path: '/touch/FreeMoveLink',
362
- // component: () => import('jsview-vue-samples/FreeMoveLink/App.vue'),
385
+ // component: () => import('@shijiu/jsview-vue-samples/FreeMoveLink/App.vue'),
363
386
  // },
364
387
  {
365
388
  name: '可拖拽进度条',
366
389
  path: '/touch/ScrollBoxTest',
367
- component: () => import('jsview-vue-samples/ScrollBoxTest/App.vue'),
390
+ component: () => import('@shijiu/jsview-vue-samples/ScrollBoxTest/App.vue'),
391
+ },
392
+ // {
393
+ // name: '透视镜效果样例',
394
+ // path: '/Operations/DriftScopeTest',
395
+ // component: () => import('@shijiu/jsview-vue-samples/DriftScopeTest/App.vue'),
396
+ // },
397
+ {
398
+ name: '自定义shader',
399
+ path: '/Operations/CustomShader',
400
+ component: () => import('@shijiu/jsview-vue-samples/CustomShader/App.vue'),
368
401
  },
369
402
  ];
370
403
 
@@ -0,0 +1,67 @@
1
+ <template>
2
+ <div class="root">
3
+ <!-- 提示 -->
4
+ <div class="title">{{ "离散焦点控制" }}</div>
5
+ <div class="prompt">
6
+ {{
7
+ "操作提示:按上下左右键进行焦点切换,\n" +
8
+ "按【OK】键对当前聚焦项进行变色,\n" +
9
+ "按【返回】键退出。"
10
+ }}
11
+ </div>
12
+
13
+ <div class="group">
14
+ <!-- namespace 使用autoFocus有bug, 移动时不能定位currentFocusNode -->
15
+ <!-- <jsv-focus-block namespace="focus-group"> -->
16
+ <Button v-for="(style, index) in data"
17
+ :style="style"
18
+ :auto-focus="index == 0"
19
+ @click="(button) => onClick(button, index)"
20
+ @focus="(button, focused) => onFocusChange(button, focused, index)">
21
+ {{ ` index: ${index}\n pos: ${style.left}/${style.top}\n size: ${style.width}/${style.height}` }}
22
+ </Button>
23
+ <!-- </jsv-focus-block> -->
24
+ </div>
25
+ </div>
26
+ </template>
27
+
28
+ <script setup>
29
+ import { data } from "./data.js";
30
+ import Button from "./Button.vue";
31
+
32
+ const onClick = (button, index) => {
33
+ console.log("onClick triggered. Button " + index);
34
+ }
35
+
36
+ const onFocusChange = (button, focused, index) => {
37
+ console.log("onFocusChange triggered. Button " + index + " change to " + focused);
38
+ }
39
+ </script>
40
+
41
+ <style lang="scss" scoped>
42
+ .root {
43
+ width: 1280;
44
+ height: 720;
45
+ background-color: #007788;
46
+ }
47
+ .title {
48
+ width: 200;
49
+ height: 26;
50
+ font-size: 24;
51
+ color: #ffffff;
52
+ line-height: 26;
53
+ left: 30;
54
+ }
55
+ .prompt {
56
+ width: 500;
57
+ height: 90;
58
+ font-size: 24;
59
+ color: #ffffff;
60
+ line-height: 26;
61
+ top: 40;
62
+ left: 30;
63
+ }
64
+ .group {
65
+ top: 80;
66
+ }
67
+ </style>
@@ -0,0 +1,76 @@
1
+ <template>
2
+ <jsv-focus-block
3
+ :style="style"
4
+ :autoFocus="autoFocus"
5
+ :onAction="onAction">
6
+ <div
7
+ :class="(clicking ? 'clicking' : (focused ? 'focused' : 'normal'))"
8
+ :style="{ ...style,
9
+ left: 0, top: 0,
10
+ }">
11
+ <slot></slot>
12
+ </div>
13
+ </jsv-focus-block>
14
+ </template>
15
+
16
+ <script setup>
17
+ import { getCurrentInstance, shallowRef } from "vue";
18
+
19
+ const props = defineProps({
20
+ style: {},
21
+ autoFocus: false,
22
+ });
23
+
24
+ const self = getCurrentInstance();
25
+ const emit = defineEmits(['click', 'focus']);
26
+
27
+ const focused = shallowRef(false);
28
+ const clicking = shallowRef(false);
29
+
30
+ const onAction = {
31
+ onFocus: () => {
32
+ focused.value = true;
33
+ emit('focus', self, true);
34
+ },
35
+ onBlur: () => {
36
+ focused.value = false;
37
+ emit('focus', self, false);
38
+ },
39
+
40
+ onKeyDown: (ev) => {
41
+ if (ev.keyCode == 13) {
42
+ clicking.value = true;
43
+ emit('click', self);
44
+ return true;
45
+ }
46
+
47
+ return false;
48
+ },
49
+ onKeyUp: (ev) => {
50
+ if (ev.keyCode == 13) {
51
+ clicking.value = false;
52
+ return true;
53
+ }
54
+
55
+ return false;
56
+ }
57
+ }
58
+
59
+ </script>
60
+
61
+ <style scoped>
62
+ .clicking {
63
+ background-color: #00FFFF;
64
+ font-size: 25;
65
+ }
66
+
67
+ .focused {
68
+ background-color: #FF00FF;
69
+ font-size: 25;
70
+ }
71
+
72
+ .normal {
73
+ background-color: #FFFFFF;
74
+ font-size: 20;
75
+ }
76
+ </style>
@@ -0,0 +1,44 @@
1
+ export const data = [
2
+ {
3
+ width: 200,
4
+ height: 100,
5
+ left: 60,
6
+ top: 400,
7
+ },
8
+ {
9
+ width: 200,
10
+ height: 100,
11
+ left: 380,
12
+ top: 420,
13
+ },
14
+ {
15
+ width: 200,
16
+ height: 100,
17
+ left: 700,
18
+ top: 360,
19
+ },
20
+ {
21
+ width: 300,
22
+ height: 200,
23
+ left: 900,
24
+ top: 500,
25
+ },
26
+ {
27
+ width: 200,
28
+ height: 100,
29
+ left: 1060,
30
+ top: 200,
31
+ },
32
+ {
33
+ width: 200,
34
+ height: 100,
35
+ left: 760,
36
+ top: 60,
37
+ },
38
+ {
39
+ width: 200,
40
+ height: 100,
41
+ left: 1060,
42
+ top: 380,
43
+ },
44
+ ];