@shijiu/jsview-vue 2.1.25 → 2.1.200

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 (80) hide show
  1. package/package.json +1 -1
  2. package/utils/JsViewEngineWidget/JsvFocusBlock.vue +1 -1
  3. package/utils/JsViewEngineWidget/JsvFocusHub.ts +123 -0
  4. package/utils/JsViewEngineWidget/JsvFocusManager.js +4 -3
  5. package/utils/JsViewEngineWidget/MetroWidget/AnimationManager.ts +145 -51
  6. package/utils/JsViewEngineWidget/MetroWidget/ListWidget.vue +51 -64
  7. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +62 -71
  8. package/utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js +308 -613
  9. package/utils/JsViewEngineWidget/TemplateParser/CommonMetroTemplate.ts +127 -247
  10. package/utils/JsViewEngineWidget/TemplateParser/ListMetroTemplate.ts +1 -0
  11. package/utils/JsViewEngineWidget/TemplateParser/MetroTemplate.ts +36 -2
  12. package/utils/JsViewEngineWidget/WidgetCommon.ts +25 -6
  13. package/utils/JsViewPlugin/JsvAudio/{JsvAudioBrowser.vue → BrowserAudio/BrowserAudio.vue} +1 -1
  14. package/utils/JsViewPlugin/JsvAudio/index.js +1 -1
  15. package/utils/JsViewPlugin/JsvLatex/BrowserDomBuilder.js +37 -0
  16. package/utils/JsViewPlugin/JsvLatex/Color.ts +43 -0
  17. package/utils/JsViewPlugin/JsvLatex/JsvLatex.vue +159 -0
  18. package/utils/JsViewPlugin/JsvLatex/JsvLatexBridgeProxy.js +16 -0
  19. package/utils/JsViewPlugin/JsvLatex/JsvLatexBrowser.vue +59 -0
  20. package/utils/JsViewPlugin/JsvLatex/PluginLoader.js +171 -0
  21. package/utils/JsViewPlugin/JsvLatex/index.js +28 -0
  22. package/utils/JsViewPlugin/JsvLatex/mathjax-tex-svg.txt +1 -0
  23. package/utils/JsViewPlugin/JsvLatex/version.js +24 -0
  24. package/utils/JsViewPlugin/JsvLatex/version.mjs +24 -0
  25. package/utils/JsViewPlugin/index.js +2 -1
  26. package/utils/JsViewVueTools/JsvDynamicCssStyle.js +2 -52
  27. package/utils/JsViewVueTools/JsvPerformance.ts +11 -0
  28. package/utils/JsViewVueTools/JsvPreDownloader.ts +55 -11
  29. package/utils/JsViewVueTools/JsvStyleSheetsDeclarer.js +40 -0
  30. package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CanvasTexture.ts +143 -0
  31. package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CommandList.ts +24 -0
  32. package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/Path.ts +198 -0
  33. package/utils/JsViewVueTools/JsvTextureStore/JsvTextureStore.ts +31 -0
  34. package/utils/JsViewVueTools/JsvTextureStore/Store.ts +32 -0
  35. package/utils/JsViewVueTools/JsvTextureStore/Texture.ts +38 -0
  36. package/utils/JsViewVueTools/index.js +3 -0
  37. package/utils/JsViewVueWidget/JsvEnableRenderBreak.vue +17 -0
  38. package/utils/JsViewVueWidget/JsvFreeMoveActor/ActionRefObject.ts +6 -0
  39. package/utils/JsViewVueWidget/JsvFreeMoveActor/ActorControl.ts +144 -0
  40. package/utils/JsViewVueWidget/JsvFreeMoveActor/ActorState.ts +6 -0
  41. package/utils/JsViewVueWidget/JsvFreeMoveActor/{CallbackManager.js → CallbackManager.ts} +19 -10
  42. package/utils/JsViewVueWidget/JsvFreeMoveActor/ForgeTypeDefine.ts +45 -0
  43. package/utils/JsViewVueWidget/JsvFreeMoveActor/FreeMoveActor.vue +1 -1
  44. package/utils/JsViewVueWidget/JsvFreeMoveActor/JsvEnvBlocker.vue +124 -0
  45. package/utils/JsViewVueWidget/JsvFreeMoveActor/KeepFlags.ts +6 -0
  46. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetAction.ts +553 -0
  47. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetCondition.ts +138 -0
  48. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetState.ts +53 -0
  49. package/utils/JsViewVueWidget/JsvFreeMoveActor/index.js +11 -1
  50. package/utils/JsViewVueWidget/JsvHole.js +1 -1
  51. package/utils/JsViewVueWidget/JsvLine/JsvLine.vue +101 -0
  52. package/utils/JsViewVueWidget/JsvLine/LineManager.js +62 -0
  53. package/utils/JsViewVueWidget/JsvLine/index.js +3 -0
  54. package/utils/JsViewVueWidget/JsvMarquee.vue +316 -139
  55. package/utils/JsViewVueWidget/JsvMindMap/CommonType.ts +1 -0
  56. package/utils/JsViewVueWidget/JsvMindMap/Constant.ts +20 -0
  57. package/utils/JsViewVueWidget/JsvMindMap/DataTree.ts +394 -0
  58. package/utils/JsViewVueWidget/JsvMindMap/Geometry.ts +277 -0
  59. package/utils/JsViewVueWidget/JsvMindMap/JsvMindMap.vue +653 -0
  60. package/utils/JsViewVueWidget/JsvMindMap/index.js +1 -0
  61. package/utils/JsViewVueWidget/JsvMindMap/rtree.js +628 -0
  62. package/utils/JsViewVueWidget/JsvNinePatch.vue +2 -2
  63. package/utils/JsViewVueWidget/JsvPieChart.vue +124 -0
  64. package/utils/JsViewVueWidget/JsvPosterImage.vue +32 -9
  65. package/utils/JsViewVueWidget/JsvPreload/BrowserPreload.vue +135 -133
  66. package/utils/JsViewVueWidget/JsvPreload/JsvPreload.vue +273 -270
  67. package/utils/JsViewVueWidget/JsvSector.vue +107 -0
  68. package/utils/JsViewVueWidget/JsvTextBox.vue +14 -1
  69. package/utils/JsViewVueWidget/JsvTextureAnim/JsvTextureAnim.vue +28 -2
  70. package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +122 -93
  71. package/utils/JsViewVueWidget/index.js +15 -7
  72. package/utils/JsViewVueWidget/JsvFreeMoveActor/ActorControl.js +0 -112
  73. package/utils/JsViewVueWidget/JsvFreeMoveActor/CommonTools.js +0 -18
  74. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetAction.js +0 -216
  75. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetCondition.js +0 -66
  76. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetState.js +0 -38
  77. package/utils/JsViewVueWidget/JsvFreeMoveActor/TypeDefine.js +0 -12
  78. package/utils/JsViewVueWidget/JsvTouchContainer.vue +0 -183
  79. package/utils/JsViewVueWidget/JsvTransparentDiv.vue +0 -87
  80. /package/utils/{JsViewVueWidget → JsViewPlugin/JsvAudio/BrowserAudio}/JsvSystemAudio.vue +0 -0
@@ -27,7 +27,7 @@
27
27
  ROW_LOOP: 到达行首/尾后跳转到上/下一行, 只在竖直滚动时生效
28
28
  COLUMN_FIND_NEAR: 一列中没有下一个元素时是否跳转到相邻列
29
29
  ROW_FIND_NEAR: 一行中没有下一个元素时是否跳转到相邻行
30
-
30
+ * keepTraceRange { number } 可视区域前后多少屏的item在移出可视范围后不释放(默认移出可视区域的item会被释放)
31
31
  * initFocusId {int} 初始焦点,默认为0
32
32
  * slideSetting {SlideSetting} 页面滑动的设置, 目前SlideSetting有三个子类, 具体见 WidgetCommon 中的说明
33
33
  WholePageSlide
@@ -44,6 +44,7 @@
44
44
  * placeHolderSetting {Object} item描画可打断时, 显示的占位符
45
45
  {
46
46
  backgroundColor: 纯色占位符
47
+ focusBackgroundColor: 获焦时的颜色
47
48
  borderRadius: 占位符圆角设置
48
49
  gap: 占位符之间的gap
49
50
  }
@@ -83,7 +84,6 @@
83
84
  visibleRange: 可视区域大小(不含padding)
84
85
  totalSize: 所有item的总长
85
86
  *
86
- * enableTouch {boolean} 支持触控
87
87
  * loadAll {boolean} 加载不显示的view,触控场景使用
88
88
  * flingPageWidth {}
89
89
  * flingPageEdge {}
@@ -172,10 +172,14 @@
172
172
  获取当前焦点信息,id 为在可获得焦点元素列表中的索引,index 为在所有元素列表中的索引
173
173
  slideTo: {Function} (targetPosition : int, doAnim : Boolean) => void
174
174
  滚动到指定位置,注意这个位置是 item 的布局坐标,另外当某些item需要接管滚动时,itemConfig中takeOverSlide要为true。
175
- updateItemSize: {(index: number, newSize: {width: number, height: number}, anchor: number, animInfo: {duration: number, onEnd: Function}) => void} 更新item的尺寸, 目前仅在list模式下可用.
175
+ updateItemSize: {(index: number, newSize: {width: number, height: number}, animInfo: {anchor: number, duration: number, onEnd: Function}) => void} 更新item的尺寸, 目前仅在list模式下可用.
176
176
  params:
177
177
  index: 更新item的index,
178
- anchor: item大小变化时不动点的位置, 值为0-1
178
+ newSize: 新的尺寸
179
+ animInfo: 动画设置
180
+ anchor: 缩放锚点
181
+ duration: 动画时长(毫秒)
182
+ onEnd: 动画结束回调
179
183
 
180
184
  }
181
185
  * onItemEdge: 若单元格内另有可接管按键的控件(如MetroWidget),该控件到达边缘需要通知MetroWidget时的回调
@@ -204,16 +208,19 @@
204
208
  * A: 焦点处理: item内的元素需要在注册的onFocus和onBlue回调中管理焦点. 即在onFocus时把焦点设置到内部的可获焦节点;
205
209
  onBlur时将焦点给回父MetroWidget, 注意此时是焦点树上的子节点往父节点切换, 此时为了把子节点blur掉,
206
210
  requestFocus函数需要传递一个false参数
211
+ * 注意点:
212
+ * 1. MetroWidget中存在一些处理依赖vue的callback执行顺序, 因此涉及更改MetroWidget状态的处理不要在watchPostEffect中调用
207
213
  -->
208
214
 
209
215
  <script setup>
210
216
  import { ref, shallowRef, computed } from "vue";
211
- import { setup, RENDER_ITEM_BREAK_KEY } from "./MetroWidgetSetup";
217
+ import { setup } from "./MetroWidgetSetup";
212
218
  import {
213
219
  VERTICAL,
214
220
  HORIZONTAL,
215
221
  SlideSetting,
216
222
  SeamlessSlide,
223
+ RENDER_ITEM_BREAK_KEY,
217
224
  } from "../WidgetCommon";
218
225
 
219
226
  const props = defineProps({
@@ -260,10 +267,6 @@ const props = defineProps({
260
267
  type: Boolean,
261
268
  default: false,
262
269
  },
263
- enableTouch: {
264
- type: Boolean,
265
- default: false,
266
- },
267
270
  flingPageWidth: {
268
271
  type: Number,
269
272
  default: -1,
@@ -272,9 +275,6 @@ const props = defineProps({
272
275
  type: Number,
273
276
  default: 1 / 4,
274
277
  },
275
- dispatcher: {
276
- type: Object,
277
- },
278
278
  measures: {
279
279
  type: Function,
280
280
  required: true,
@@ -354,20 +354,26 @@ const props = defineProps({
354
354
  });
355
355
 
356
356
  const renderBreakKey = props.enableItemRenderBreak ? RENDER_ITEM_BREAK_KEY : "";
357
- const touchContainerW = ref(0);
358
- const touchContainerH = ref(0);
359
357
  const itemRender = ref(!props.enableItemRenderBreak);
360
358
  const locateDiv = shallowRef(null);
361
359
  const renderData = shallowRef([]);
362
360
  const slideDiv = shallowRef(null);
363
361
  const slideDivLeft = ref(0);
364
362
  const slideDivTop = ref(0);
365
- const itemResizeSlideDiv = shallowRef(null);
366
- const itemResizeSlideLeft = ref(0);
367
- const itemResizeSlideTop = ref(0);
368
363
  const focusNode = shallowRef(null);
369
364
  const pageUpdateToken = ref(0);
370
365
 
366
+ const normalizedPlaceHolder = computed(() => {
367
+ return {
368
+ gap: props.placeHolderSetting.gap ?? 0,
369
+ borderRadius: props.placeHolderSetting.borderRadius ?? 0,
370
+ backgroundColor: props.placeHolderSetting.backgroundColor,
371
+ focusBackgroundColor:
372
+ props.placeHolderSetting.focusBackgroundColor ??
373
+ props.placeHolderSetting.backgroundColor,
374
+ };
375
+ });
376
+
371
377
  const {
372
378
  widgetRectInfo,
373
379
  focusBlockOnFocus,
@@ -378,24 +384,18 @@ const {
378
384
  exportObject,
379
385
  } = setup(
380
386
  props,
381
- touchContainerW,
382
- touchContainerH,
383
387
  itemRender,
384
388
  locateDiv,
385
389
  renderData,
386
390
  slideDiv,
387
391
  slideDivLeft,
388
392
  slideDivTop,
389
- itemResizeSlideDiv,
390
- itemResizeSlideLeft,
391
- itemResizeSlideTop,
392
393
  focusNode,
393
394
  pageUpdateToken,
394
395
  "common"
395
396
  );
396
397
 
397
398
  defineExpose(exportObject);
398
-
399
399
  </script>
400
400
 
401
401
  <template>
@@ -416,15 +416,12 @@ defineExpose(exportObject);
416
416
  >
417
417
  <div
418
418
  id="slideDiv"
419
- key="touchcontainer"
419
+ key="slideDiv"
420
420
  ref="slideDiv"
421
421
  :style="{
422
422
  left: slideDivLeft,
423
423
  top: slideDivTop,
424
- width: touchContainerW,
425
- height: touchContainerH,
426
424
  }"
427
-
428
425
  >
429
426
  <div>
430
427
  <slot name="background"></slot>
@@ -441,56 +438,50 @@ defineExpose(exportObject);
441
438
  }"
442
439
  >
443
440
  <div
444
- id="itemResizeSlide"
445
- key="itemResizeSlide"
446
- ref="itemResizeSlideDiv"
441
+ v-for="(item, index) in renderData"
442
+ :key="pageUpdateToken + '_' + item.index"
443
+ :ref="item.divRef"
447
444
  :style="{
448
- left: itemResizeSlideLeft,
449
- top: itemResizeSlideTop,
445
+ left: item.templateInfo.left,
446
+ top: item.templateInfo.top,
447
+ width: item.templateInfo.width,
448
+ height: item.templateInfo.height,
449
+ zIndex: item.renderStyle.zIndex,
450
450
  }"
451
451
  >
452
452
  <div
453
- v-for="(item, index) in renderData"
454
- :key="pageUpdateToken + '_' + item.index"
455
- :ref="item.divRef"
456
- :style="{
457
- ...item.renderStyle,
458
- }"
453
+ v-if="
454
+ !enableItemRenderBreak || item.mounted.value || itemRender
455
+ "
456
+ :key="renderBreakKey"
457
+ :ref="item.slotRef"
458
+ :id="`${name}_${index}`"
459
459
  >
460
- <div
461
- v-if="!enableItemRenderBreak || item.mounted.value || itemRender"
462
- :key="renderBreakKey"
463
- :ref="item.slotRef"
464
- :id="`${name}_${index}`"
465
- >
466
- <slot
467
- name="renderItem"
468
- :key="renderBreakKey"
469
- :data="item.customerData"
470
- :onEdge="_onFocusableItemEdge"
471
- :onAction="item.registerObj"
472
- :query="item.query"
473
- :onItemEdge="_onFocusableItemEdge"
474
- ></slot>
475
- </div>
476
- <div
477
- v-if="
478
- enableItemRenderBreak &&
479
- placeHolderSetting &&
480
- !item.mounted.value
481
- "
482
- :style="{
483
- width:
484
- item.renderStyle.width -
485
- (placeHolderSetting.gap ? placeHolderSetting.gap : 0),
486
- height:
487
- item.renderStyle.height -
488
- (placeHolderSetting.gap ? placeHolderSetting.gap : 0),
489
- backgroundColor: placeHolderSetting.backgroundColor,
490
- borderRadius: placeHolderSetting.borderRadius,
491
- }"
492
- ></div>
460
+ <slot
461
+ name="renderItem"
462
+ :data="item.customerData"
463
+ :onEdge="_onFocusableItemEdge"
464
+ :onAction="item.registerObj"
465
+ :query="item.query"
466
+ :onItemEdge="_onFocusableItemEdge"
467
+ ></slot>
493
468
  </div>
469
+ <div
470
+ v-if="
471
+ enableItemRenderBreak &&
472
+ placeHolderSetting &&
473
+ !item.mounted.value
474
+ "
475
+ :style="{
476
+ width: item.renderStyle.width - normalizedPlaceHolder.gap,
477
+ height: item.renderStyle.height - normalizedPlaceHolder.gap,
478
+ backgroundColor:
479
+ exportObject.getCurrentFocusIndex() == item.index
480
+ ? normalizedPlaceHolder.focusBackgroundColor
481
+ : normalizedPlaceHolder.backgroundColor,
482
+ borderRadius: normalizedPlaceHolder.borderRadius,
483
+ }"
484
+ ></div>
494
485
  </div>
495
486
  </jsv-focus-block>
496
487
  </div>