@shijiu/jsview-vue 2.1.366-test.0 → 2.1.428

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 (27) hide show
  1. package/bin/jsview-vue.mjs +843 -508
  2. package/package.json +1 -1
  3. package/tools/config/vite.config.ts +1 -0
  4. package/utils/JsViewEngineWidget/MetroWidget/ListWidget.vue +4 -8
  5. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +8 -10
  6. package/utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js +194 -167
  7. package/utils/JsViewEngineWidget/MetroWidget/PageUpdater.ts +7 -3
  8. package/utils/JsViewEngineWidget/MetroWidget/RenderItem.ts +8 -5
  9. package/utils/JsViewEngineWidget/MetroWidget/TaskManager.ts +173 -0
  10. package/utils/JsViewEngineWidget/TemplateParser/ListMetroTemplate.ts +4 -0
  11. package/utils/JsViewVueTools/JsvTextureDefines.ts +11 -0
  12. package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CanvasTexture.ts +27 -3
  13. package/utils/JsViewVueTools/JsvTextureStore/CanvasTexture/CommandList.ts +1 -1
  14. package/utils/JsViewVueTools/JsvTextureStore/JsvTextureStore.ts +0 -28
  15. package/utils/JsViewVueTools/index.js +1 -0
  16. package/utils/JsViewVueWidget/JsvFlexCell/JsvFlexDiv.vue +118 -0
  17. package/utils/JsViewVueWidget/JsvFlexCell/index.js +6 -0
  18. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetCondition.ts +29 -0
  19. package/utils/JsViewVueWidget/JsvFreeMoveActor/SetState.ts +4 -0
  20. package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +26 -25
  21. package/utils/JsViewVueWidget/JsvPieChart.vue +37 -37
  22. package/utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue +29 -9
  23. package/utils/JsViewVueWidget/JsvSceneTransition.vue +174 -0
  24. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +41 -30
  25. package/utils/JsViewVueWidget/JsvTextBox.vue +20 -34
  26. package/utils/JsViewVueWidget/index.js +2 -0
  27. package/utils/JsViewEngineWidget/MetroWidget/AnimationManager.ts +0 -189
@@ -1,8 +1,9 @@
1
- import { ref, computed, toRaw, reactive, nextTick, onMounted, onUpdated, onBeforeUnmount, onBeforeUpdate, openBlock, createElementBlock, renderSlot, shallowRef, resolveComponent, normalizeStyle, createElementVNode, unref, createVNode, withCtx, Fragment, renderList, createCommentVNode, inject, provide, onUnmounted, onActivated, onDeactivated, createBlock, watchEffect, toDisplayString, watch, mergeProps, withDirectives, vShow } from 'vue';
1
+ import { ref, computed, toRaw, reactive, nextTick, onMounted, onUpdated, onBeforeUnmount, onBeforeUpdate, openBlock, createElementBlock, renderSlot, shallowRef, resolveComponent, normalizeStyle, createElementVNode, unref, createVNode, withCtx, Fragment, renderList, createCommentVNode, inject, provide, onUnmounted, onActivated, onDeactivated, createBlock, watchEffect, mergeProps, toDisplayString, watch, shallowReactive, withDirectives, vShow } from 'vue';
2
2
  import { Forge as Forge$1, ForgeExtension } from '@shijiu/jsview/dom/jsv-forge-define';
3
3
  import { L as LoopType } from './jsview-vue-common.mjs';
4
4
  export { A as ApicEndState } from './jsview-vue-common.mjs';
5
5
  import { _ as _export_sfc } from './export-sfc.mjs';
6
+ import { Forge as Forge$2 } from '@shijiu/jsview/dom/jsv-forge-define.mjs';
6
7
  import { createWebHashHistory, createMemoryHistory } from 'vue-router';
7
8
 
8
9
  //!
@@ -2183,6 +2184,10 @@ class ListMetroTemplate extends MetroTemplate {
2183
2184
  return [start, end];
2184
2185
  }
2185
2186
  updateItemSize(index, newSize) {
2187
+ const item = this.templateList[index];
2188
+ if (!item || item.width == newSize.width && item.height == newSize.height) {
2189
+ return;
2190
+ }
2186
2191
  const needChangeList = this.templateList.splice(index);
2187
2192
  needChangeList[0].width = newSize.width;
2188
2193
  needChangeList[0].height = newSize.height;
@@ -2264,11 +2269,14 @@ class PageUpdater {
2264
2269
  this.applyTmp();
2265
2270
  } else {
2266
2271
  }
2272
+ },
2273
+ recover: () => {
2274
+ this.rangeSet = preRangeSet;
2275
+ this.tmpRangeSet = preTmpRangeSet;
2267
2276
  }
2268
2277
  };
2269
2278
  }
2270
2279
  apply() {
2271
- this.tmpRangeSet.clear();
2272
2280
  this.updateFunc(this.rangeSet);
2273
2281
  }
2274
2282
  applyTmp() {
@@ -2289,7 +2297,7 @@ class PageUpdater {
2289
2297
  //!
2290
2298
  ;
2291
2299
  class RenderItem {
2292
- divMountedCallback = [];
2300
+ divMountedCallback = /* @__PURE__ */ new Set();
2293
2301
  customerData;
2294
2302
  templateInfo;
2295
2303
  renderStyle;
@@ -2378,18 +2386,20 @@ class RenderItem {
2378
2386
  }
2379
2387
  }
2380
2388
  addDivMountedListener(cbk) {
2381
- this.divMountedCallback.push(cbk);
2382
- ;
2389
+ this.divMountedCallback.add(cbk);
2390
+ return () => {
2391
+ this.divMountedCallback.delete(cbk);
2392
+ };
2383
2393
  }
2384
2394
  onDivMounted() {
2385
- if (this.divMountedCallback.length > 0) {
2395
+ if (this.divMountedCallback.size > 0) {
2386
2396
  this.divMountedCallback.forEach((cbk) => {
2387
2397
  if (this.rootDiv) {
2388
2398
  cbk(this.rootDiv);
2389
2399
  }
2390
2400
  });
2391
2401
  }
2392
- this.divMountedCallback = [];
2402
+ this.divMountedCallback.clear();
2393
2403
  if (this.enableTap && this.rootDiv) {
2394
2404
  const divView = this.rootDiv.jsvGetProxyView();
2395
2405
  divView.DragEnables?.(1);
@@ -2397,7 +2407,7 @@ class RenderItem {
2397
2407
  }
2398
2408
  onDivUnmounted() {
2399
2409
  this.touchInit = false;
2400
- this.divMountedCallback = [];
2410
+ this.divMountedCallback.clear();
2401
2411
  }
2402
2412
  }
2403
2413
 
@@ -2478,144 +2488,6 @@ class WidgetRectInfo {
2478
2488
  }
2479
2489
  }
2480
2490
 
2481
- //!
2482
- //! utils/JsViewEngineWidget/MetroWidget/AnimationManager.ts;
2483
- //!
2484
- var TaskType = /* @__PURE__ */ ((TaskType2) => {
2485
- TaskType2[TaskType2["RESIZE_ITEM"] = 0] = "RESIZE_ITEM";
2486
- TaskType2[TaskType2["SLIDE"] = 1] = "SLIDE";
2487
- TaskType2[TaskType2["ON_FOCUS_CHANGE"] = 2] = "ON_FOCUS_CHANGE";
2488
- return TaskType2;
2489
- })(TaskType || {});
2490
- class MacroEndTaskManager {
2491
- taskList = [];
2492
- frameCount;
2493
- customerOnFlushTakEnd;
2494
- customerOnBreak;
2495
- mTaskToken = ref(0);
2496
- mToken = 0;
2497
- mFlushedFrameCount = -1;
2498
- constructor(onFlushTask, onBreak) {
2499
- this.customerOnBreak = onBreak;
2500
- this.customerOnFlushTakEnd = onFlushTask;
2501
- }
2502
- getToken() {
2503
- if (this.mToken < Number.MAX_SAFE_INTEGER) {
2504
- ++this.mToken;
2505
- } else {
2506
- this.mToken = 1;
2507
- }
2508
- return this.mToken;
2509
- }
2510
- addTask(type, params) {
2511
- if (this.mFlushedFrameCount == Forge$1.sFrameCount.count) {
2512
- console.log("MetroWidget: tasks in currnet frame flushed. ignore task", type, params);
2513
- return;
2514
- }
2515
- this.taskList.push({
2516
- type,
2517
- params,
2518
- frameCount: Forge$1.sFrameCount.count
2519
- });
2520
- if (this.frameCount !== Forge$1.sFrameCount.count) {
2521
- this.frameCount = Forge$1.sFrameCount.count;
2522
- const breakList = [];
2523
- for (let i = this.taskList.length - 1; i >= 0; --i) {
2524
- if (this.taskList[i].frameCount != this.frameCount) {
2525
- let t = this.taskList.splice(i, 1);
2526
- breakList.push(t[0]);
2527
- }
2528
- }
2529
- this.onBreak(breakList);
2530
- }
2531
- this.mTaskToken.value = this.getToken();
2532
- let selfToken = this.mTaskToken.value;
2533
- Promise.resolve().then(() => {
2534
- if (selfToken == this.mTaskToken.value) {
2535
- this.onFlushTask();
2536
- this.mFlushedFrameCount = this.frameCount;
2537
- Forge$1.sRenderBridge.RequestSwap();
2538
- } else {
2539
- }
2540
- });
2541
- }
2542
- onFlushTask() {
2543
- if (this.taskList.length > 0) {
2544
- this.customerOnFlushTakEnd(this.taskList);
2545
- this.taskList = [];
2546
- }
2547
- }
2548
- onBreak(taskList) {
2549
- this.customerOnBreak(taskList);
2550
- }
2551
- }
2552
- class AnimObject {
2553
- frameCount;
2554
- forgeAnim;
2555
- element;
2556
- animSetting;
2557
- constructor(frameCount, element, from, to, setting) {
2558
- this.frameCount = frameCount;
2559
- this.animSetting = setting;
2560
- this.element = element;
2561
- let duration = 0;
2562
- if (typeof setting.duration == "number") {
2563
- duration = setting.duration;
2564
- } else if (typeof setting.speed == "number") {
2565
- duration = Math.round(Math.max(Math.abs(to[0] - from[0]), Math.abs(to[1] - from[1])) / setting.speed);
2566
- }
2567
- this.forgeAnim = new Forge$1.TranslateAnimation(
2568
- from[0],
2569
- to[0],
2570
- from[1],
2571
- to[1],
2572
- duration,
2573
- setting.easing
2574
- );
2575
- this.forgeAnim.SetAnimationListener(
2576
- new Forge$1.AnimationListener(this.onStart.bind(this), this.onEnd.bind(this), null)
2577
- );
2578
- }
2579
- start() {
2580
- this.element?.jsvGetProxyView(true).StartAnimation(this.forgeAnim);
2581
- }
2582
- stop() {
2583
- this.element?.jsvGetProxyView(true).StopAnimation();
2584
- }
2585
- getFrameCount() {
2586
- return this.frameCount;
2587
- }
2588
- onStart() {
2589
- this.animSetting?.onStart?.();
2590
- }
2591
- onEnd(done) {
2592
- this.animSetting?.onEnd?.(done);
2593
- }
2594
- }
2595
- class AnimationManager {
2596
- animList = [];
2597
- frameCount = 0;
2598
- startSlideAnim(element, from, to, setting) {
2599
- let curFrameCount = Forge$1.sFrameCount.count;
2600
- if (curFrameCount != this.frameCount) {
2601
- this.tryCleanOldAnim();
2602
- this.frameCount = curFrameCount;
2603
- }
2604
- const obj = new AnimObject(curFrameCount, element, from, to, setting);
2605
- this.animList.push(obj);
2606
- obj.start();
2607
- }
2608
- tryCleanOldAnim() {
2609
- for (let i = this.animList.length - 1; i >= 0; --i) {
2610
- const anim = this.animList[i];
2611
- if (anim.getFrameCount() != this.frameCount) {
2612
- this.animList.splice(i, 1);
2613
- anim.stop();
2614
- }
2615
- }
2616
- }
2617
- }
2618
-
2619
2491
  //!
2620
2492
  //! utils/JsViewVueWidget/JsvFreeMoveActor/ForgeTypeDefine.ts;
2621
2493
  //!
@@ -2703,6 +2575,27 @@ class ConditionPackBuilder {
2703
2575
  this._CommonInfoValid = false;
2704
2576
  return this._BuildPack(ConditionSetBuilder.BoxPosition(left, top, right, bottom, this._CommonInfo));
2705
2577
  }
2578
+ offsetPosition(left, top, right, bottom) {
2579
+ if (!this._CheckCommonInfo()) {
2580
+ return null;
2581
+ }
2582
+ this._CommonInfoValid = false;
2583
+ return this._BuildPack(ConditionSetBuilder.OffsetPosition(left, top, right, bottom, this._CommonInfo));
2584
+ }
2585
+ startMove(xEnable, yEnable) {
2586
+ if (!this._CheckCommonInfo()) {
2587
+ return null;
2588
+ }
2589
+ this._CommonInfoValid = false;
2590
+ let direction = 0;
2591
+ if (xEnable) {
2592
+ direction |= 1;
2593
+ }
2594
+ if (yEnable) {
2595
+ direction |= 2;
2596
+ }
2597
+ return this._BuildPack(ConditionSetBuilder.StartMove(direction, this._CommonInfo));
2598
+ }
2706
2599
  /**
2707
2600
  * AcrossPosition
2708
2601
  * 获取 AcrossPosition 的condition
@@ -2814,6 +2707,13 @@ class ConditionPackBuilder {
2814
2707
  this._CommonInfoValid = false;
2815
2708
  return this._BuildPack(ConditionSetBuilder.OnFlingEnd(this._CommonInfo, this._ContorlSlefNexus.token));
2816
2709
  }
2710
+ onFlingCancel() {
2711
+ if (!this._CheckCommonInfo()) {
2712
+ return null;
2713
+ }
2714
+ this._CommonInfoValid = false;
2715
+ return this._BuildPack(ConditionSetBuilder.OnFlingCancel(this._CommonInfo, this._ContorlSlefNexus.token));
2716
+ }
2817
2717
  _CheckCommonInfo() {
2818
2718
  if (!this._CommonInfoValid) {
2819
2719
  console.error("Error: must call from new conditoin()");
@@ -3243,6 +3143,9 @@ class StatePackBuilder {
3243
3143
  setHitWallOverflow() {
3244
3144
  return CmdPackBuilder.InitStateCmdPack(StateCmdBuilder.SetHitWallOverflow());
3245
3145
  }
3146
+ touchLockSwitch(isLock, direction, unlockThreshold = -1) {
3147
+ return CmdPackBuilder.InitStateCmdPack(StateCmdBuilder.TouchLockSwitch(isLock, direction, unlockThreshold));
3148
+ }
3246
3149
  /*
3247
3150
  * fireNexusEvent 发出Nexus event
3248
3151
  */
@@ -3453,6 +3356,137 @@ class ActorControl {
3453
3356
  }
3454
3357
  }
3455
3358
 
3359
+ //!
3360
+ //! utils/JsViewEngineWidget/MetroWidget/TaskManager.ts;
3361
+ //!
3362
+ class SlideAnimWrapper {
3363
+ frameCount;
3364
+ forgeAnim;
3365
+ element;
3366
+ animSetting;
3367
+ constructor(frameCount, element, from, to, setting) {
3368
+ this.frameCount = frameCount;
3369
+ this.animSetting = setting;
3370
+ this.element = element;
3371
+ let duration = 0;
3372
+ if (typeof setting.duration == "number") {
3373
+ duration = setting.duration;
3374
+ } else if (typeof setting.speed == "number") {
3375
+ duration = Math.round(Math.max(Math.abs(to[0] - from[0]), Math.abs(to[1] - from[1])) / setting.speed);
3376
+ }
3377
+ this.forgeAnim = new Forge$1.TranslateAnimation(
3378
+ from[0],
3379
+ to[0],
3380
+ from[1],
3381
+ to[1],
3382
+ duration,
3383
+ setting.easing
3384
+ );
3385
+ this.forgeAnim.SetAnimationListener(
3386
+ new Forge$1.AnimationListener(this.onStart.bind(this), this.onEnd.bind(this), null)
3387
+ );
3388
+ }
3389
+ start() {
3390
+ this.element?.jsvGetProxyView(true).StartAnimation(this.forgeAnim);
3391
+ }
3392
+ removeListener() {
3393
+ this.forgeAnim?.RemoveAnimationListener();
3394
+ }
3395
+ stop() {
3396
+ this.element?.jsvGetProxyView(true).StopAnimation();
3397
+ }
3398
+ getFrameCount() {
3399
+ return this.frameCount;
3400
+ }
3401
+ onStart() {
3402
+ this.animSetting?.onStart?.();
3403
+ }
3404
+ onEnd(done) {
3405
+ this.animSetting?.onEnd?.(done);
3406
+ }
3407
+ }
3408
+ class AnimationManager {
3409
+ animList = [];
3410
+ frameCount = 0;
3411
+ startSlideAnim(element, from, to, setting) {
3412
+ let curFrameCount = Forge$1.sFrameCount.count;
3413
+ if (curFrameCount != this.frameCount) {
3414
+ this.tryCleanOldAnim();
3415
+ this.frameCount = curFrameCount;
3416
+ }
3417
+ const obj = new SlideAnimWrapper(curFrameCount, element, from, to, setting);
3418
+ this.animList.push(obj);
3419
+ obj.start();
3420
+ return () => {
3421
+ if (obj.getFrameCount() == Forge$1.sFrameCount.count) {
3422
+ obj.removeListener();
3423
+ }
3424
+ obj.stop();
3425
+ };
3426
+ }
3427
+ tryCleanOldAnim() {
3428
+ for (let i = this.animList.length - 1; i >= 0; --i) {
3429
+ const anim = this.animList[i];
3430
+ if (anim.getFrameCount() != this.frameCount) {
3431
+ this.animList.splice(i, 1);
3432
+ anim.stop();
3433
+ }
3434
+ }
3435
+ }
3436
+ }
3437
+ class CancellableRunner {
3438
+ cancelHandler = null;
3439
+ runner = null;
3440
+ constructor(r) {
3441
+ this.runner = r;
3442
+ }
3443
+ run() {
3444
+ if (this.runner) {
3445
+ this.cancelHandler = this.runner();
3446
+ }
3447
+ }
3448
+ cancel() {
3449
+ this.cancelHandler?.();
3450
+ this.runner = null;
3451
+ this.cancelHandler = null;
3452
+ }
3453
+ }
3454
+ var TaskType = /* @__PURE__ */ ((TaskType2) => {
3455
+ TaskType2[TaskType2["RESIZE_ITEM"] = 0] = "RESIZE_ITEM";
3456
+ TaskType2[TaskType2["SLIDE"] = 1] = "SLIDE";
3457
+ TaskType2[TaskType2["ON_FOCUS_CHANGE"] = 2] = "ON_FOCUS_CHANGE";
3458
+ return TaskType2;
3459
+ })(TaskType || {});
3460
+ class TaskManager {
3461
+ constructor(onAddTask) {
3462
+ this.onAddTask = onAddTask;
3463
+ }
3464
+ frameCount = -1;
3465
+ widgetTaskCacheList = [];
3466
+ cancellableRunnerList = [];
3467
+ addTask(type, params) {
3468
+ if (this.frameCount != Forge$1.sFrameCount.count) {
3469
+ this.widgetTaskCacheList = [];
3470
+ this.cancellableRunnerList = [];
3471
+ this.frameCount = Forge$1.sFrameCount.count;
3472
+ }
3473
+ this.cancellableRunnerList.forEach((t) => {
3474
+ t.cancel();
3475
+ });
3476
+ this.widgetTaskCacheList.push({
3477
+ type,
3478
+ params,
3479
+ frameCount: Forge$1.sFrameCount.count
3480
+ });
3481
+ this.onAddTask(this.widgetTaskCacheList);
3482
+ }
3483
+ run(func) {
3484
+ const cancellableRunner = new CancellableRunner(func);
3485
+ this.cancellableRunnerList.push(cancellableRunner);
3486
+ cancellableRunner.run();
3487
+ }
3488
+ }
3489
+
3456
3490
  //!
3457
3491
  //! utils/JsViewEngineWidget/MetroWidget/MetroWidgetSetup.js;
3458
3492
  //!
@@ -3510,6 +3544,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3510
3544
  DRAG: 2,
3511
3545
  FLING: 3
3512
3546
  };
3547
+ const modeForExport = ref(FOCUS_MODE);
3513
3548
  const mode = {
3514
3549
  _mode: FOCUS_MODE,
3515
3550
  _touchState: TouchState.IDLE,
@@ -3517,6 +3552,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3517
3552
  _duringFling: false,
3518
3553
  touchStart() {
3519
3554
  this._mode = TOUCH_MODE;
3555
+ modeForExport.value = TOUCH_MODE;
3520
3556
  this._touchState = TouchState.TAP;
3521
3557
  },
3522
3558
  touchEnd() {
@@ -3534,6 +3570,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3534
3570
  },
3535
3571
  keyDown() {
3536
3572
  this._mode = FOCUS_MODE;
3573
+ modeForExport.value = FOCUS_MODE;
3537
3574
  this._touchState = TouchState.IDLE;
3538
3575
  },
3539
3576
  duringFling() {
@@ -3577,13 +3614,14 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3577
3614
  let size_key = vertical ? "height" : "width";
3578
3615
  return item.templateInfo[pos_key] >= visibleInfo.start && item.templateInfo[pos_key] + item.templateInfo[size_key] - 1 < visibleInfo.end;
3579
3616
  };
3580
- const animationManager = new AnimationManager();
3617
+ let templateCacheFrameCount = -1;
3581
3618
  const onMacroTaskEnd = (taskList) => {
3582
3619
  let resizeList = [];
3583
3620
  let resizeTaskMap = {};
3584
3621
  let slideTask = null;
3585
3622
  let minIndex = Infinity;
3586
3623
  let slideInfo = null;
3624
+ let mergeTmp = false;
3587
3625
  let anchorInfo = null;
3588
3626
  let duration = 200;
3589
3627
  let easing = null;
@@ -3591,8 +3629,19 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3591
3629
  let size_key = vertical ? "height" : "width";
3592
3630
  let doAnim = false;
3593
3631
  let existOnFocusChange = false;
3632
+ let targetVisibleStart = visibleInfo.start;
3633
+ taskList.forEach((i) => {
3634
+ if (i.type == TaskType.SLIDE) {
3635
+ slideTask = i;
3636
+ mergeTmp = mergeTmp || i.params?.updateParam?.mergeTmp;
3637
+ if (!isNaN(i.params?.target)) {
3638
+ targetVisibleStart = -i.params.target;
3639
+ }
3640
+ }
3641
+ });
3594
3642
  for (let task of taskList) {
3595
3643
  if (task.type == TaskType.RESIZE_ITEM) {
3644
+ mergeTmp = mergeTmp || task.params?.updateParam?.mergeTmp;
3596
3645
  resizeTaskMap[task.params.index] = task;
3597
3646
  resizeList.push(task);
3598
3647
  const { index, animInfo } = task.params;
@@ -3603,12 +3652,10 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3603
3652
  if (index == id2Index(focusId) && typeof animInfo?.anchor != "undefined") {
3604
3653
  const item = getItemByIndex(index);
3605
3654
  anchorInfo = {
3606
- anchorPosition: item.templateInfo[pos_key] + item.templateInfo[size_key] * animInfo.anchor - 1 - visibleInfo.start,
3655
+ anchorPosition: item.templateInfo[pos_key] + item.templateInfo[size_key] * animInfo.anchor - 1 - targetVisibleStart,
3607
3656
  anchor: animInfo.anchor
3608
3657
  };
3609
3658
  }
3610
- } else if (task.type == TaskType.SLIDE) {
3611
- slideTask = task;
3612
3659
  } else if (task.type == TaskType.ON_FOCUS_CHANGE) {
3613
3660
  existOnFocusChange = true;
3614
3661
  }
@@ -3622,33 +3669,33 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3622
3669
  let existItemResize = false;
3623
3670
  if (resizeList.length > 0) {
3624
3671
  existItemResize = true;
3625
- metroTemplate.cacheLayout(minIndex, minIndex + 20);
3672
+ if (templateCacheFrameCount != Forge$1.sFrameCount.count) {
3673
+ metroTemplate.cacheLayout(minIndex, minIndex + 20);
3674
+ templateCacheFrameCount = Forge$1.sFrameCount.count;
3675
+ }
3626
3676
  resizeList.forEach((task) => {
3627
3677
  metroTemplate.updateItemSize(task.params.index, {
3628
3678
  width: task.params.width,
3629
3679
  height: task.params.height
3630
3680
  });
3631
3681
  });
3632
- let preVisibleStart = visibleInfo.start;
3633
3682
  if (anchorInfo) {
3634
3683
  const focusItem = getItemById(focusId);
3635
3684
  const start = focusItem.templateInfo[pos_key] + focusItem.templateInfo[size_key] * anchorInfo.anchor - 1 - anchorInfo.anchorPosition;
3636
- visibleInfo.start = normalizeVisibleStart(start, focusItem.templateInfo);
3685
+ targetVisibleStart = normalizeVisibleStart(start, focusItem.templateInfo);
3637
3686
  } else {
3638
- visibleInfo.start = _calculateVisibleStart(getItemById(focusId).templateInfo, preSlideDirection);
3687
+ targetVisibleStart = _calculateVisibleStart(getItemById(focusId).templateInfo, preSlideDirection);
3639
3688
  }
3640
- if (preVisibleStart != visibleInfo.start) {
3689
+ if (visibleInfo.start != targetVisibleStart) {
3641
3690
  slideInfo = {
3642
- target: -visibleInfo.start
3691
+ target: -targetVisibleStart
3643
3692
  };
3644
3693
  if (doAnim) {
3645
3694
  slideInfo.animObj = {
3646
3695
  easing: "",
3647
3696
  onStart: null,
3648
3697
  speed: null,
3649
- duration,
3650
- onEnd: (animDone) => {
3651
- }
3698
+ duration
3652
3699
  };
3653
3700
  } else {
3654
3701
  if (slideTask) {
@@ -3665,15 +3712,35 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3665
3712
  }
3666
3713
  }
3667
3714
  }
3668
- const handler = pageUpdater.update(
3715
+ }
3716
+ if (targetVisibleStart != visibleInfo.start) {
3717
+ taskManager.run(() => {
3718
+ const preVisibleStart = visibleInfo.start;
3719
+ visibleInfo.start = targetVisibleStart;
3720
+ return () => {
3721
+ visibleInfo.start = preVisibleStart;
3722
+ };
3723
+ });
3724
+ }
3725
+ let updateHandler;
3726
+ taskManager.run(() => {
3727
+ updateHandler = pageUpdater.update(
3669
3728
  metroTemplate,
3670
- visibleInfo.startWithPadding,
3671
- visibleInfo.endWithPadding,
3729
+ visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
3730
+ Math.min(
3731
+ visibleInfo.startMax + visibleInfo.range + visibleInfo.padding.end - 1,
3732
+ visibleInfo.endWithPadding + props.keepTraceRange * pageRange
3733
+ ),
3672
3734
  focusId,
3673
- true,
3735
+ mergeTmp,
3674
3736
  permanentItemList
3675
3737
  );
3676
- handler.applyTmp();
3738
+ return () => {
3739
+ updateHandler.recover();
3740
+ };
3741
+ });
3742
+ if (resizeList.length > 0) {
3743
+ updateHandler.applyTmp();
3677
3744
  if (doAnim) {
3678
3745
  const visibleIndexList = Array.from(pageUpdater.getTmpRange());
3679
3746
  for (let index of visibleIndexList) {
@@ -3681,21 +3748,27 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3681
3748
  const { left, top } = renderItem.templateInfo;
3682
3749
  if (index >= minIndex) {
3683
3750
  const layoutCache = renderItem.templateInfo.layoutCache;
3684
- if (renderItem.mounted.value) {
3685
- animationManager.startSlideAnim(
3686
- renderItem.rootDiv,
3687
- [layoutCache.left - left, layoutCache.top - top],
3688
- [0, 0],
3689
- resizeTaskMap[index] ? resizeTaskMap[index].params.animInfo : { duration }
3690
- );
3691
- } else {
3692
- renderItem.addDivMountedListener((div) => {
3693
- animationManager.startSlideAnim(
3751
+ const doItemSlide = (div) => {
3752
+ taskManager.run(() => {
3753
+ const cancel = animationManager.startSlideAnim(
3694
3754
  div,
3695
3755
  [layoutCache.left - left, layoutCache.top - top],
3696
3756
  [0, 0],
3697
3757
  resizeTaskMap[index] ? resizeTaskMap[index].params.animInfo : { duration }
3698
3758
  );
3759
+ return () => {
3760
+ cancel();
3761
+ };
3762
+ });
3763
+ };
3764
+ if (renderItem.mounted.value) {
3765
+ doItemSlide(renderItem.rootDiv);
3766
+ } else {
3767
+ taskManager.run(() => {
3768
+ const unregister = renderItem.addDivMountedListener((div) => {
3769
+ doItemSlide(div);
3770
+ });
3771
+ return unregister;
3699
3772
  });
3700
3773
  }
3701
3774
  }
@@ -3704,68 +3777,77 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3704
3777
  }
3705
3778
  let viewSlid = false;
3706
3779
  if (slideInfo) {
3707
- const target = slideInfo.target;
3708
- viewSlid = executeSlide(target, slideInfo);
3780
+ viewSlid = executeSlide(slideInfo, updateHandler);
3709
3781
  }
3710
- if (existItemResize) {
3711
- props.onAllItemResizeDone?.();
3782
+ if (existItemResize && props.onAllItemResizeDone) {
3783
+ taskManager.run(() => {
3784
+ const handler = setTimeout(() => {
3785
+ props.onAllItemResizeDone();
3786
+ }, 0);
3787
+ return () => {
3788
+ clearTimeout(handler);
3789
+ };
3790
+ });
3712
3791
  }
3713
- if (viewSlid || existOnFocusChange) {
3714
- props.onFocusRectChange?.();
3792
+ if ((viewSlid || existOnFocusChange) && props.onFocusRectChange) {
3793
+ taskManager.run(() => {
3794
+ const handler = setTimeout(() => {
3795
+ props.onFocusRectChange();
3796
+ }, 0);
3797
+ return () => {
3798
+ clearTimeout(handler);
3799
+ };
3800
+ });
3715
3801
  }
3716
3802
  };
3717
- const executeSlide = (target, slideInfo) => {
3803
+ const taskManager = new TaskManager(onMacroTaskEnd);
3804
+ const animationManager = new AnimationManager();
3805
+ const executeSlide = (slideInfo, updateHandler) => {
3718
3806
  let preLeft = slideDivLeft.value;
3719
3807
  let preTop = slideDivTop.value;
3720
- slideDivLeft.value = vertical ? 0 : target;
3721
- slideDivTop.value = vertical ? target : 0;
3808
+ taskManager.run(() => {
3809
+ slideDivLeft.value = vertical ? 0 : -visibleInfo.start;
3810
+ slideDivTop.value = vertical ? -visibleInfo.start : 0;
3811
+ return () => {
3812
+ slideDivLeft.value = preLeft;
3813
+ slideDivTop.value = preTop;
3814
+ };
3815
+ });
3722
3816
  let viewSlid = preLeft != slideDivLeft.value || preTop != slideDivTop.value;
3723
- visibleInfo.start = -target;
3724
- const updater2 = pageUpdater.update(
3725
- metroTemplate,
3726
- visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
3727
- Math.min(
3728
- visibleInfo.startMax + visibleInfo.range + visibleInfo.padding.end - 1,
3729
- visibleInfo.endWithPadding + props.keepTraceRange * pageRange
3730
- ),
3731
- focusId,
3732
- true,
3733
- permanentItemList
3734
- );
3735
3817
  if (slideInfo.animObj) {
3736
- updater2.applyTmp();
3737
- animationManager.startSlideAnim(
3738
- slideDiv.value,
3739
- vertical ? [0, preTop - slideDivTop.value] : [preLeft - slideDivLeft.value, 0],
3740
- [0, 0],
3741
- {
3742
- ...slideInfo.animObj,
3743
- onEnd: () => {
3744
- updater2.apply();
3818
+ updateHandler.applyTmp();
3819
+ taskManager.run(() => {
3820
+ const from = vertical ? [0, preTop - slideDivTop.value] : [preLeft - slideDivLeft.value, 0];
3821
+ const cancel = animationManager.startSlideAnim(
3822
+ slideDiv.value,
3823
+ from,
3824
+ [0, 0],
3825
+ {
3826
+ ...slideInfo.animObj,
3827
+ onEnd: () => {
3828
+ updateHandler.apply();
3829
+ }
3745
3830
  }
3746
- }
3747
- );
3831
+ );
3832
+ return () => {
3833
+ cancel();
3834
+ };
3835
+ });
3748
3836
  } else {
3749
- updater2.apply();
3837
+ updateHandler.apply();
3750
3838
  }
3751
- _onScroll();
3839
+ taskManager.run(() => {
3840
+ const handler = setTimeout(() => {
3841
+ _onScroll();
3842
+ }, 0);
3843
+ return () => {
3844
+ clearTimeout(handler);
3845
+ };
3846
+ });
3752
3847
  return viewSlid;
3753
3848
  };
3754
- const onMacroEndTaskBreak = (list) => {
3755
- if (list) {
3756
- list.forEach((task) => {
3757
- if (task.type == TaskType.RESIZE_ITEM) {
3758
- metroTemplate.updateItemSize(task.params.index, {
3759
- width: task.params.width,
3760
- height: task.params.height
3761
- });
3762
- }
3763
- });
3764
- }
3765
- };
3766
- const macroEndTaskManager = new MacroEndTaskManager(onMacroTaskEnd, onMacroEndTaskBreak);
3767
3849
  const updateItemSize = (index, newSize, animInfo) => {
3768
- macroEndTaskManager.addTask(
3850
+ taskManager.addTask(
3769
3851
  TaskType.RESIZE_ITEM,
3770
3852
  {
3771
3853
  index,
@@ -3775,12 +3857,12 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3775
3857
  }
3776
3858
  );
3777
3859
  };
3778
- const _slideTo = (target, animObj) => {
3860
+ const _slideTo = (target, animObj, updateParam = { mergeTmp: false }) => {
3779
3861
  if (slideLock) {
3780
3862
  return;
3781
3863
  }
3782
3864
  ;
3783
- macroEndTaskManager.addTask(TaskType.SLIDE, { target: -target, animObj });
3865
+ taskManager.addTask(TaskType.SLIDE, { target: -target, animObj, updateParam });
3784
3866
  };
3785
3867
  let callFocusAfterUpdate = false;
3786
3868
  const _onFocusChange = (id) => {
@@ -3976,32 +4058,17 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
3976
4058
  };
3977
4059
  const slideTo = (position, doAnim) => {
3978
4060
  templateItemAdder.tryAddItemByPosition(position);
3979
- if (typeof position !== "undefined" && position != null && visibleInfo.start !== position) {
3980
- visibleInfo.start = position;
3981
- const updater2 = pageUpdater.update(
3982
- metroTemplate,
3983
- visibleInfo.startWithPadding,
3984
- visibleInfo.endWithPadding,
3985
- focusId,
3986
- false,
3987
- permanentItemList
3988
- );
4061
+ if (typeof position !== "undefined" && position != null) {
3989
4062
  let animObj = null;
3990
4063
  if (doAnim) {
3991
4064
  animObj = {
3992
4065
  easing: props.slideSetting.Easing,
3993
4066
  onStart: null,
3994
4067
  speed: props.slideSetting.Speed,
3995
- duration: props.slideSetting.Duration,
3996
- onEnd: () => {
3997
- updater2.apply();
3998
- }
4068
+ duration: props.slideSetting.Duration
3999
4069
  };
4000
- pageUpdater.applyTmp();
4001
- } else {
4002
- pageUpdater.apply();
4003
4070
  }
4004
- _slideTo(visibleInfo.start, animObj);
4071
+ _slideTo(position, animObj);
4005
4072
  }
4006
4073
  };
4007
4074
  const setZIndex = (index, normalZIndex, focusZIndex) => {
@@ -4115,7 +4182,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4115
4182
  templateItemAdder.tryAddItemById(focusId);
4116
4183
  }
4117
4184
  }
4118
- const updater2 = pageUpdater.update(
4185
+ const updater = pageUpdater.update(
4119
4186
  metroTemplate,
4120
4187
  visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
4121
4188
  Math.min(
@@ -4126,7 +4193,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4126
4193
  false,
4127
4194
  permanentItemList
4128
4195
  );
4129
- updater2.apply();
4196
+ updater.apply();
4130
4197
  onItemFocus(getItemById(focusId), null);
4131
4198
  slideToItem(id2Index(focusId), false);
4132
4199
  };
@@ -4504,28 +4571,18 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4504
4571
  };
4505
4572
  let cur_slide = _calculateVisibleStart(fakeItem.templateInfo, direction);
4506
4573
  if (cur_slide != visibleInfo.start) {
4507
- visibleInfo.start = cur_slide;
4508
- const updater2 = pageUpdater.update(
4509
- metroTemplate,
4510
- visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
4511
- Math.min(
4512
- visibleInfo.startMax + visibleInfo.range + visibleInfo.padding.end - 1,
4513
- visibleInfo.endWithPadding + props.keepTraceRange * pageRange
4514
- ),
4515
- focusId,
4516
- true,
4517
- permanentItemList
4518
- );
4519
- updater2.applyTmp();
4520
- _slideTo(visibleInfo.start, {
4521
- easing: "",
4522
- onStart: null,
4523
- speed: props.slideSetting.Speed,
4524
- duration: props.slideSetting.Duration,
4525
- onEnd: () => {
4526
- updater2.apply();
4574
+ _slideTo(
4575
+ cur_slide,
4576
+ {
4577
+ easing: "",
4578
+ onStart: null,
4579
+ speed: props.slideSetting.Speed,
4580
+ duration: props.slideSetting.Duration
4581
+ },
4582
+ {
4583
+ mergeTmp: true
4527
4584
  }
4528
- });
4585
+ );
4529
4586
  return true;
4530
4587
  }
4531
4588
  }
@@ -4535,7 +4592,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4535
4592
  preFocusId = cache_pre ? focusId : -1;
4536
4593
  focusId = id;
4537
4594
  currentFocusIndex.value = id2Index(id);
4538
- macroEndTaskManager.addTask(TaskType.ON_FOCUS_CHANGE);
4595
+ taskManager.addTask(TaskType.ON_FOCUS_CHANGE);
4539
4596
  };
4540
4597
  const _bubbleCustomEvent = (event) => {
4541
4598
  if (props.sendFocusRectEvent && event) {
@@ -4612,31 +4669,15 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4612
4669
  let cur_visible_start2 = _calculateVisibleStart(next_focus_item.templateInfo, vertical ? vertical_direction : horizontal_direction);
4613
4670
  if (visibleInfo.start !== cur_visible_start2) {
4614
4671
  if (next_focus_item.itemConfig.itemSlide == METRO_WIDGET.ITEM_SLIDE.ACT_ITEM_FOCUS) {
4615
- visibleInfo.start = cur_visible_start2;
4616
- const updater2 = pageUpdater.update(
4617
- metroTemplate,
4618
- visibleInfo.startWithPadding - props.keepTraceRange * pageRange,
4619
- Math.min(
4620
- visibleInfo.startMax + visibleInfo.range + visibleInfo.padding.end - 1,
4621
- visibleInfo.endWithPadding + props.keepTraceRange * pageRange
4622
- ),
4623
- next_focus_item.id,
4624
- false,
4625
- permanentItemList
4626
- );
4627
- updater2.applyTmp();
4628
4672
  let animObj = {
4629
4673
  easing: "",
4630
4674
  onStart: null,
4631
4675
  speed: props.slideSetting.Speed,
4632
- duration: props.slideSetting.Duration,
4633
- onEnd: (animDone) => {
4634
- updater2.apply();
4635
- }
4676
+ duration: props.slideSetting.Duration
4636
4677
  };
4637
- _slideTo(visibleInfo.start, animObj);
4678
+ _slideTo(cur_visible_start2, animObj, { mergeTmp: false });
4638
4679
  } else {
4639
- const updater2 = pageUpdater.update(
4680
+ const updater = pageUpdater.update(
4640
4681
  metroTemplate,
4641
4682
  cur_visible_start2,
4642
4683
  cur_visible_start2 + visibleInfo.range + visibleInfo.padding.end - 1,
@@ -4644,7 +4685,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4644
4685
  false,
4645
4686
  permanentItemList
4646
4687
  );
4647
- updater2.applyTmp();
4688
+ updater.applyTmp();
4648
4689
  }
4649
4690
  }
4650
4691
  } else {
@@ -4879,11 +4920,16 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4879
4920
  const touchLoadItemRect = visibleInfo.range;
4880
4921
  const reachAnchorGroup = 2;
4881
4922
  const wallConditionGroup = 1;
4923
+ let divPos = -1;
4924
+ let frameCount = -1;
4882
4925
  const getVisibleStart = (moveInfo) => {
4926
+ if (frameCount != Forge$1.sFrameCount.count) {
4927
+ divPos = vertical ? slideDivTop.value : slideDivLeft.value;
4928
+ }
4883
4929
  if (vertical) {
4884
- return -(slideDivTop.value + Math.round(moveInfo.yPos));
4930
+ return -(divPos + Math.round(moveInfo.yPos));
4885
4931
  } else {
4886
- return -(slideDivLeft.value + Math.round(moveInfo.xPos));
4932
+ return -(divPos + Math.round(moveInfo.xPos));
4887
4933
  }
4888
4934
  };
4889
4935
  const mergeTouchSlideToSlideDiv = () => {
@@ -4903,10 +4949,20 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4903
4949
  const onTouchDown = (data) => {
4904
4950
  mode.touchStart();
4905
4951
  mode.flingEnd();
4952
+ const t = 100;
4953
+ const offsetThreshold = {
4954
+ left: vertical ? void 0 : t,
4955
+ right: vertical ? void 0 : t,
4956
+ top: vertical ? t : void 0,
4957
+ bottom: vertical ? t : void 0
4958
+ };
4959
+ actorController.run([
4960
+ actorController.condition(void 0, false).offsetPosition(offsetThreshold.left, offsetThreshold.top, offsetThreshold.right, offsetThreshold.bottom).then([actorController.state().touchLockSwitch(true, vertical ? 1 : 2, t)]),
4961
+ actorController.condition(void 0, false).startMove(true, true).then([onDragStart])
4962
+ ]);
4906
4963
  onItemBlur(getItemById(focusId));
4907
- visibleInfo.start = getVisibleStart(data);
4908
4964
  templateItemAdder.tryAddItemByPosition(visibleInfo.end + visibleInfo.range);
4909
- const updater2 = pageUpdater.update(
4965
+ const updater = pageUpdater.update(
4910
4966
  metroTemplate,
4911
4967
  visibleInfo.startWithPadding - visibleInfo.range,
4912
4968
  visibleInfo.endWithPadding + visibleInfo.range,
@@ -4914,7 +4970,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4914
4970
  false,
4915
4971
  permanentItemList
4916
4972
  );
4917
- updater2.apply();
4973
+ updater.apply();
4918
4974
  const anchorArea = 2 * Forge$1.sRenderBridge.GetScreenInfo().designedWidth;
4919
4975
  let anchorPosList = [];
4920
4976
  let anchorSpacing = visibleInfo.range * 2 / 3;
@@ -4936,7 +4992,6 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4936
4992
  };
4937
4993
  const onTouchRelease = () => {
4938
4994
  if (mode.getTouchState() == TouchState.TAP) {
4939
- mergeTouchSlideToSlideDiv();
4940
4995
  updateRenderItems(false, false);
4941
4996
  mode.touchEnd();
4942
4997
  }
@@ -4991,7 +5046,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4991
5046
  };
4992
5047
  const updateRenderItems = (applyTmp, expand) => {
4993
5048
  templateItemAdder.tryAddItemByPosition(visibleInfo.start + visibleInfo.range);
4994
- const updater2 = pageUpdater.update(
5049
+ const updater = pageUpdater.update(
4995
5050
  metroTemplate,
4996
5051
  expand ? visibleInfo.start - visibleInfo.range : visibleInfo.startWithPadding,
4997
5052
  expand ? visibleInfo.start + 2 * visibleInfo.range : visibleInfo.endWithPadding,
@@ -4999,7 +5054,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
4999
5054
  true,
5000
5055
  permanentItemList
5001
5056
  );
5002
- applyTmp ? updater2.applyTmp() : updater2.apply();
5057
+ applyTmp ? updater.applyTmp() : updater.apply();
5003
5058
  };
5004
5059
  const resetDragRect = () => {
5005
5060
  if (actorController != null) {
@@ -5019,11 +5074,15 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5019
5074
  const walls = getTouchWall();
5020
5075
  actorController.run([
5021
5076
  actorController.condition(void 0, true).onTouchDown().then([onTouchDown]),
5022
- actorController.condition(void 0, true).onDragStart().then([onDragStart]),
5077
+ // actorController
5078
+ // .condition(undefined, true)
5079
+ // .onDragStart()
5080
+ // .then([onDragStart]),
5023
5081
  actorController.condition(void 0, true).onDragEnd().then([onDragEnd]),
5024
5082
  actorController.condition(void 0, true).onFlingStart().then([onFlingStart]),
5025
5083
  actorController.condition(void 0, true).onFlingProgress().then([onFlingProgress]),
5026
5084
  actorController.condition(void 0, true).onFlingEnd().then([onFlingEnd]),
5085
+ actorController.condition(void 0, true).onTouchRelease().then([actorController.state().touchLockSwitch(false, vertical ? 1 : 2)]),
5027
5086
  actorController.condition(wallConditionGroup, true).boxPosition(walls.left, walls.top, walls.right, walls.bottom).then([actorController.state().setHitWallOverflow()])
5028
5087
  //TODO 通过prop设置哪个方向overflow
5029
5088
  ]);
@@ -5064,7 +5123,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5064
5123
  }
5065
5124
  focusId = init_focus_id;
5066
5125
  visibleInfo.start = cur_visible_start;
5067
- const updater = pageUpdater.update(
5126
+ const initUpdater = pageUpdater.update(
5068
5127
  metroTemplate,
5069
5128
  visibleInfo.startWithPadding,
5070
5129
  visibleInfo.endWithPadding,
@@ -5072,7 +5131,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5072
5131
  false,
5073
5132
  permanentItemList
5074
5133
  );
5075
- updater.apply();
5134
+ initUpdater.apply();
5076
5135
  onMounted(() => {
5077
5136
  _changeFocusId(focusId, false);
5078
5137
  mounted = true;
@@ -5087,7 +5146,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5087
5146
  itemRender.value = true;
5088
5147
  });
5089
5148
  }
5090
- if (props.enableTouch) {
5149
+ if (props.touchFlag === 1) {
5091
5150
  initTouch();
5092
5151
  }
5093
5152
  });
@@ -5107,7 +5166,8 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5107
5166
  setZIndex,
5108
5167
  onTouchDown,
5109
5168
  onTouchRelease,
5110
- currentFocusIndex
5169
+ currentFocusIndex,
5170
+ modeForExport
5111
5171
  };
5112
5172
  };
5113
5173
 
@@ -5120,7 +5180,7 @@ const setup = (props, itemRender, locateDiv, renderData, slideDiv, slideDivLeft,
5120
5180
 
5121
5181
 
5122
5182
  */
5123
- const _sfc_main$F = {
5183
+ const _sfc_main$H = {
5124
5184
  __name: "SlotComponent",
5125
5185
  setup(__props) {
5126
5186
  onBeforeUpdate(() => {
@@ -5211,6 +5271,7 @@ const _sfc_main$F = {
5211
5271
  METRO_WIDGET_CONST.ITEM_SLIDE.ACT_FOCUS_RECT_EVENT 按照子组件发送的focusRect事件滚动
5212
5272
  zIndex {int | object}: item的zIndex, 为object时可以分别设置{focus: 0, normal: 0}, 为number时则同时设置获焦和不获焦的zIndex,
5213
5273
  uid {string}: item的uid, 可以通过uid来设置焦点
5274
+ permanent {boolean}: 出去与是否保留
5214
5275
  }
5215
5276
  *
5216
5277
  * onFocus {function} 控件获取焦点的回调
@@ -5379,7 +5440,7 @@ const _sfc_main$F = {
5379
5440
 
5380
5441
 
5381
5442
  */
5382
- const _sfc_main$E = {
5443
+ const _sfc_main$G = {
5383
5444
  __name: "MetroWidget",
5384
5445
  props: {
5385
5446
  padding: {
@@ -5405,10 +5466,6 @@ const _sfc_main$E = {
5405
5466
  type: Number,
5406
5467
  required: true
5407
5468
  },
5408
- loopFocus: {
5409
- type: Boolean,
5410
- default: false
5411
- },
5412
5469
  onEdge: {
5413
5470
  type: Function,
5414
5471
  default: null
@@ -5514,11 +5571,11 @@ const _sfc_main$E = {
5514
5571
  },
5515
5572
  onAllItemResizeDone: {
5516
5573
  type: Function
5574
+ },
5575
+ touchFlag: {
5576
+ type: Number,
5577
+ default: 0
5517
5578
  }
5518
- // enableTouch: {
5519
- // type: Boolean,
5520
- // default: false,
5521
- // },
5522
5579
  },
5523
5580
  setup(__props, { expose }) {
5524
5581
  const props = __props;
@@ -5554,7 +5611,8 @@ const _sfc_main$E = {
5554
5611
  exportObject,
5555
5612
  onTouchDown,
5556
5613
  onTouchRelease,
5557
- currentFocusIndex
5614
+ currentFocusIndex,
5615
+ modeForExport
5558
5616
  } = setup(
5559
5617
  props,
5560
5618
  itemRender,
@@ -5645,7 +5703,7 @@ const _sfc_main$E = {
5645
5703
  ref: item.slotRef,
5646
5704
  id: `${__props.name}_${index}`
5647
5705
  }, [
5648
- createVNode(_sfc_main$F, { key: "__QcodeJsviewFreezeComponent" }, {
5706
+ createVNode(_sfc_main$H, { key: "__QcodeJsviewFreezeComponent" }, {
5649
5707
  default: withCtx(() => [
5650
5708
  renderSlot(_ctx.$slots, "renderItem", {
5651
5709
  data: item.customerData,
@@ -5663,7 +5721,7 @@ const _sfc_main$E = {
5663
5721
  style: normalizeStyle({
5664
5722
  width: item.renderStyle.width - unref(normalizedPlaceHolder).gap,
5665
5723
  height: item.renderStyle.height - unref(normalizedPlaceHolder).gap,
5666
- backgroundColor: unref(currentFocusIndex) == item.index ? unref(normalizedPlaceHolder).focusBackgroundColor : unref(normalizedPlaceHolder).backgroundColor,
5724
+ backgroundColor: unref(currentFocusIndex) == item.index && unref(modeForExport) == 2 ? unref(normalizedPlaceHolder).focusBackgroundColor : unref(normalizedPlaceHolder).backgroundColor,
5667
5725
  borderRadius: unref(normalizedPlaceHolder).borderRadius
5668
5726
  })
5669
5727
  }, null, 4)) : createCommentVNode("", true)
@@ -5694,7 +5752,7 @@ const _sfc_main$E = {
5694
5752
 
5695
5753
 
5696
5754
  */
5697
- const _sfc_main$D = {
5755
+ const _sfc_main$F = {
5698
5756
  __name: "ListWidget",
5699
5757
  props: {
5700
5758
  padding: {
@@ -5720,10 +5778,6 @@ const _sfc_main$D = {
5720
5778
  type: Number,
5721
5779
  required: true
5722
5780
  },
5723
- loopFocus: {
5724
- type: Boolean,
5725
- default: false
5726
- },
5727
5781
  onEdge: {
5728
5782
  type: Function,
5729
5783
  default: null
@@ -5829,11 +5883,11 @@ const _sfc_main$D = {
5829
5883
  },
5830
5884
  onAllItemResizeDone: {
5831
5885
  type: Function
5886
+ },
5887
+ touchFlag: {
5888
+ type: Number,
5889
+ default: 0
5832
5890
  }
5833
- // enableTouch: {
5834
- // type: Boolean,
5835
- // default: false,
5836
- // },
5837
5891
  },
5838
5892
  setup(__props, { expose }) {
5839
5893
  const props = __props;
@@ -6144,7 +6198,7 @@ const HUB_NS_PROVIDE_NAME = "__jsvFocusNameSpace__";
6144
6198
 
6145
6199
 
6146
6200
  */
6147
- const _sfc_main$C = {
6201
+ const _sfc_main$E = {
6148
6202
  __name: "JsvFocusBlock",
6149
6203
  props: {
6150
6204
  name: String,
@@ -6352,7 +6406,7 @@ class JsvFocusManager {
6352
6406
  }
6353
6407
  const doAppMount = this.$_hookMount(app, options[0]);
6354
6408
  app.mount = doAppMount;
6355
- app.component("JsvFocusBlock", _sfc_main$C);
6409
+ app.component("JsvFocusBlock", _sfc_main$E);
6356
6410
  app.config.globalProperties.$jsvFocusManager = this;
6357
6411
  app.provide(HUB_NS_PROVIDE_NAME, null);
6358
6412
  app.provide(ROOT_HUB_PROVIDE_NAME, new JsvFocusHubApi(this.$_topFDiv.getHub()));
@@ -8776,7 +8830,7 @@ class JsvActorMoveControl extends ActorControlBase {
8776
8830
 
8777
8831
 
8778
8832
  */
8779
- const _sfc_main$B = {
8833
+ const _sfc_main$D = {
8780
8834
  __name: "JsvActorMove",
8781
8835
  props: {
8782
8836
  control: {
@@ -8829,7 +8883,7 @@ const _sfc_main$B = {
8829
8883
 
8830
8884
 
8831
8885
  */
8832
- const _sfc_main$A = {
8886
+ const _sfc_main$C = {
8833
8887
  __name: "FreeMoveActor",
8834
8888
  props: {
8835
8889
  // 设置给父节点,动画节点必须top/left为0, 以保证PC端模拟通过style直接获取当前位置信息的逻辑能通过
@@ -8915,7 +8969,7 @@ const KeepFlags = {
8915
8969
 
8916
8970
 
8917
8971
  */
8918
- const _sfc_main$z = {
8972
+ const _sfc_main$B = {
8919
8973
  __name: "JsvEnvBlocker",
8920
8974
  props: {
8921
8975
  // (支持reactive)位置信息
@@ -9025,6 +9079,125 @@ let FreeMoveFunc = {
9025
9079
  newNexus
9026
9080
  };
9027
9081
 
9082
+ //!
9083
+ //! utils/JsViewVueWidget/JsvFlexCell/JsvFlexDiv.vue;
9084
+ //!
9085
+ /*! <!--
9086
+ * @Author: donglin.lu@qcast.cn
9087
+ * @Date: 2024-01-26 17:24:00
9088
+ * @LastEditors: donglin.lu@qcast.cn
9089
+ * @Description: file content
9090
+ -->
9091
+
9092
+ <!--
9093
+ * 【模块 export 内容】
9094
+ * JsvFlexDiv: 包装成一个支持flex属性的div
9095
+ * props说明:
9096
+ * class: 等同于div的class设置(目前未实装,后续支持...)
9097
+ * style: 等同于div的style,关于flex的属性支持如下:
9098
+ * 作为container:
9099
+ * flexDirection: row|row-reverse|column|column-reverse 默认row, 决定主轴为行还是列,正向还是反向
9100
+ * flexWrap: nowrap|wrap 默认nowrap, 主轴方向是否换行
9101
+ * justifyContent: flex-start|flex-end|center 默认flex-start
9102
+ * 主轴对齐方式(与direction相关决定start为左还是右)
9103
+ * alignItems: flex-start|flex-end|center|stretch 默认center
9104
+ * 副轴方向单行内的对齐方式,例如主轴为行时,项目在每行中竖直方向的对齐
9105
+ * alignContent: flex-start|flex-end|center 默认flex-start
9106
+ * 副轴方向多行内容总体的对齐方式,例如主轴为行时,项目在每行中竖直方向的对齐
9107
+ * 作为item(二级container):
9108
+ * alignSelf: auto|flex-start|flex-end|center|stretch 默认auto, 覆盖container的alignItems设置
9109
+ * 特别注意: 这些属性会引起位置对齐问题, 所以会自动去掉: "overflow:hidden"
9110
+ * askSize: boolean 设置会跟进flex的尺寸变化,但会降低性能
9111
+ * onSized: Function 比askSize更进一步,可以通过回调知道尺寸变化后的时机,回调参数(width, height)为flex后的尺寸
9112
+ *
9113
+ * expose说明:
9114
+ * getWidth(): 当askSize或者onSize生效时,获取元素的宽度
9115
+ * getHeight(): 当askSize或者onSize生效时,获取元素的高度
9116
+ *
9117
+ -->
9118
+
9119
+
9120
+
9121
+ */
9122
+ const _sfc_main$A = {
9123
+ __name: "JsvFlexDiv",
9124
+ props: {
9125
+ style: Object,
9126
+ askSize: {
9127
+ type: Boolean,
9128
+ default: false
9129
+ },
9130
+ onSized: {
9131
+ type: Function,
9132
+ default: null
9133
+ }
9134
+ },
9135
+ setup(__props, { expose }) {
9136
+ const props = __props;
9137
+ let config = shallowRef({});
9138
+ config.value["data-jsv-flex-container"] = true;
9139
+ watchEffect(() => {
9140
+ config.value.style = { flexWrap: "nowrap", ...props.style, overflow: "" };
9141
+ });
9142
+ let SizeX = shallowRef(void 0);
9143
+ let SizeY = shallowRef(void 0);
9144
+ let SizeWidth = shallowRef(void 0);
9145
+ let SizeHeight = shallowRef(void 0);
9146
+ let onSizeCallback = (x, y, width, height) => {
9147
+ SizeX.value = x;
9148
+ SizeY.value = y;
9149
+ SizeWidth.value = width;
9150
+ SizeHeight.value = height;
9151
+ if (width != 0 && height != 0) {
9152
+ props.onSized?.(width, height);
9153
+ }
9154
+ };
9155
+ let containerRef = shallowRef(null);
9156
+ let flexCallbackRegisted = false;
9157
+ watchEffect(() => {
9158
+ if ((props.askSize || props.onSized != null) && containerRef.value != null) {
9159
+ if (!flexCallbackRegisted) {
9160
+ containerRef.value.jsvGetProxyView().RegisterFlexAssigned(onSizeCallback);
9161
+ flexCallbackRegisted = true;
9162
+ }
9163
+ } else {
9164
+ if (flexCallbackRegisted) {
9165
+ containerRef.value.jsvGetProxyView().RegisterFlexAssigned(null);
9166
+ flexCallbackRegisted = false;
9167
+ }
9168
+ }
9169
+ });
9170
+ expose({
9171
+ // TODO: PC模拟环境中目前没有浏览器的类似ResizeObserver接口
9172
+ // 可以监听到left/ top变化,所以先关闭Left / Top的获取
9173
+ // getLeft: () => {
9174
+ // return SizeX.value;
9175
+ // },
9176
+ // getTop: () => {
9177
+ // return SizeY.value;
9178
+ // },
9179
+ getWidth: () => {
9180
+ return SizeWidth.value;
9181
+ },
9182
+ getHeight: () => {
9183
+ return SizeHeight.value;
9184
+ }
9185
+ });
9186
+ return (_ctx, _cache) => {
9187
+ return openBlock(), createElementBlock("div", mergeProps({
9188
+ ref_key: "containerRef",
9189
+ ref: containerRef
9190
+ }, { ..._ctx.$attrs, ...unref(config) }), [
9191
+ renderSlot(_ctx.$slots, "default")
9192
+ ], 16);
9193
+ };
9194
+ }
9195
+ };
9196
+
9197
+ //!
9198
+ //! utils/JsViewVueWidget/JsvFlexCell/index.js;
9199
+ //!
9200
+
9028
9201
  //!
9029
9202
  //! utils/JsViewVueTools/ForgeHandles.js;
9030
9203
  //!
@@ -9067,7 +9240,7 @@ window.JsvCode.ForgeHandles.listenToReady(() => {
9067
9240
 
9068
9241
 
9069
9242
  */
9070
- const _sfc_main$y = {
9243
+ const _sfc_main$z = {
9071
9244
  props: {
9072
9245
  src: String,
9073
9246
  style: Object,
@@ -9168,7 +9341,7 @@ function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
9168
9341
  style: normalizeStyle($props.style)
9169
9342
  }, null, 12, ["src"]);
9170
9343
  }
9171
- const JsvApic = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$c]]);
9344
+ const JsvApic = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$c]]);
9172
9345
 
9173
9346
  //!
9174
9347
  //! utils/JsViewVueWidget/JsvApic/JsvApic/index.js;
@@ -9219,7 +9392,7 @@ const _JsvApic$1 = _JsvApic;
9219
9392
 
9220
9393
 
9221
9394
  */
9222
- const _sfc_main$x = {
9395
+ const _sfc_main$y = {
9223
9396
  props: {
9224
9397
  src: String,
9225
9398
  style: Object,
@@ -9317,7 +9490,7 @@ function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
9317
9490
  style: normalizeStyle($props.style)
9318
9491
  }, null, 12, ["src"]);
9319
9492
  }
9320
- const JsvApic2 = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render$b]]);
9493
+ const JsvApic2 = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$b]]);
9321
9494
 
9322
9495
  //!
9323
9496
  //! utils/JsViewVueWidget/JsvApic/JsvApic2/index.js;
@@ -9344,7 +9517,7 @@ const _JsvApic2$1 = _JsvApic2;
9344
9517
 
9345
9518
 
9346
9519
  */
9347
- const _sfc_main$w = {
9520
+ const _sfc_main$x = {
9348
9521
  props: {
9349
9522
  left: {
9350
9523
  type: Number,
@@ -9398,7 +9571,7 @@ function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
9398
9571
  })
9399
9572
  }, null, 4);
9400
9573
  }
9401
- const CursorVue = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render$a]]);
9574
+ const CursorVue = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render$a]]);
9402
9575
 
9403
9576
  //!
9404
9577
  //! utils/JsViewVueWidget/JsvInput/JsvInput.vue;
@@ -9426,7 +9599,7 @@ const edgeMap = {
9426
9599
  40: EdgeDirection.bottom
9427
9600
  };
9428
9601
  const MAX_WIDTH = 1920;
9429
- const _sfc_main$v = {
9602
+ const _sfc_main$w = {
9430
9603
  components: {
9431
9604
  CursorVue
9432
9605
  },
@@ -10029,7 +10202,7 @@ function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
10029
10202
  _: 1
10030
10203
  }, 8, ["name", "onAction", "style"]);
10031
10204
  }
10032
- const JsvInput = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render$9]]);
10205
+ const JsvInput = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render$9]]);
10033
10206
 
10034
10207
  //!
10035
10208
  //! utils/JsViewVueWidget/JsvInput/index.js;
@@ -10100,7 +10273,7 @@ const buildDownloadInfo$1 = (url, net_setting = null, get_image_size) => {
10100
10273
  // 用于格式校验
10101
10274
  };
10102
10275
  };
10103
- const _sfc_main$u = {
10276
+ const _sfc_main$v = {
10104
10277
  __name: "JsvPreload",
10105
10278
  props: {
10106
10279
  preloadList: Object,
@@ -10381,7 +10554,7 @@ const _sfc_main$u = {
10381
10554
  //! 考虑到.vue文件除了export default的component外,还有可能export其他对象,因此使用import * as
10382
10555
  let _JsvPreload;
10383
10556
  if (window.JsView) {
10384
- _JsvPreload = _sfc_main$u;
10557
+ _JsvPreload = _sfc_main$v;
10385
10558
  } else {
10386
10559
  const BrowserPreload = await import('./browser/BrowserPreload.vue.mjs');
10387
10560
  _JsvPreload = BrowserPreload.default;
@@ -10390,6 +10563,15 @@ let buildPreloadInfo = buildPreloadInfo$1;
10390
10563
  let buildDownloadInfo = buildDownloadInfo$1;
10391
10564
  const JsvPreload = _JsvPreload;
10392
10565
 
10566
+ //!
10567
+ //! utils/JsViewVueTools/JsvTextureDefines.ts;
10568
+ //!
10569
+ class TextureInstantType {
10570
+ static Auto = Forge$2.TextureInstantLoad.AUTO;
10571
+ static Sync = Forge$2.TextureInstantLoad.SYNC;
10572
+ static Async = Forge$2.TextureInstantLoad.ASYNC;
10573
+ }
10574
+
10393
10575
  //!
10394
10576
  //! utils/JsViewVueWidget/JsvQrcode/JsvQrcode.vue;
10395
10577
  //!
@@ -10402,6 +10584,8 @@ const JsvPreload = _JsvPreload;
10402
10584
  * fgColor {string} 二维码前景色,默认值"#000000",黑色
10403
10585
  * bgColor {string} 二维码背景色,默认值"#ffffff",白色
10404
10586
  * level {string} 二维码的容错能力,可选值{'L':低, 'M':中, 'H':高, 'Q':最精细},默认值'L'
10587
+ * instant {string} 是否立即加载(auto, sync, async), auto = async
10588
+ * 是否当前帧限制(默认为非当前帧显示,不影响按键响应,但是会闪)
10405
10589
  * imageSettings {Object} 设置中心logo图片,默认值为null,设置格式为:
10406
10590
  * {
10407
10591
  * src {string} logo的url地址
@@ -10409,12 +10593,11 @@ const JsvPreload = _JsvPreload;
10409
10593
  * height {int} logo的高度
10410
10594
  * }
10411
10595
  -->
10412
-
10413
10596
 
10414
-
10597
+
10415
10598
 
10416
10599
  */
10417
- const _sfc_main$t = {
10600
+ const _sfc_main$u = {
10418
10601
  props: {
10419
10602
  value: String,
10420
10603
  size: Number,
@@ -10431,6 +10614,12 @@ const _sfc_main$t = {
10431
10614
  // ,容错级别,分别是L(7%)、M(15%)、Q(25%)、H(30%),
10432
10615
  default: "L"
10433
10616
  },
10617
+ sync: {
10618
+ // 是否当前帧限制(默认为非当前帧显示,不影响按键响应,但是会闪)
10619
+ type: String,
10620
+ default: "auto"
10621
+ // QrCode的 auto = async
10622
+ },
10434
10623
  imageSettings: Object
10435
10624
  },
10436
10625
  methods: {
@@ -10452,10 +10641,23 @@ const _sfc_main$t = {
10452
10641
  let view = null;
10453
10642
  let lp_params = null;
10454
10643
  const texture_manager = handles.TextureManager;
10644
+ let instantLoad;
10645
+ switch (this.sync) {
10646
+ case "sync":
10647
+ instantLoad = TextureInstantType.Sync;
10648
+ break;
10649
+ case "async":
10650
+ instantLoad = TextureInstantType.Async;
10651
+ break;
10652
+ case "auto":
10653
+ default:
10654
+ instantLoad = TextureInstantType.Auto;
10655
+ }
10455
10656
  const qrcode_texture = texture_manager.GetQRCodeTexture(
10456
10657
  this.value,
10457
10658
  this.size,
10458
10659
  this.size,
10660
+ instantLoad,
10459
10661
  Forge$1.QRCodeLevel[this.level],
10460
10662
  this.bgColor,
10461
10663
  this.fgColor
@@ -10530,7 +10732,7 @@ const _sfc_main$t = {
10530
10732
  function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
10531
10733
  return openBlock(), createElementBlock("div", { "data-jsv-vw-innerview": $data.innerViewId }, null, 8, ["data-jsv-vw-innerview"]);
10532
10734
  }
10533
- const JsvQrcode = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render$8]]);
10735
+ const JsvQrcode = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render$8]]);
10534
10736
 
10535
10737
  //!
10536
10738
  //! utils/JsViewVueWidget/JsvQrcode/index.js;
@@ -10658,7 +10860,7 @@ let buildForgeView = (pointRes, sprayStyle, sizeRef, ignoreClip) => {
10658
10860
  sizeRef.height = view_height;
10659
10861
  return Forge$1.sViewStore.add(new Forge$1.ViewInfo(spray_view, null));
10660
10862
  };
10661
- const _sfc_main$s = {
10863
+ const _sfc_main$t = {
10662
10864
  props: {
10663
10865
  pointRes: {
10664
10866
  type: String,
@@ -10717,7 +10919,7 @@ function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
10717
10919
  "data-jsv-vw-innerview": $data.viewId
10718
10920
  }, null, 12, ["data-jsv-vw-innerview"]);
10719
10921
  }
10720
- const JsvSpray = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render$7]]);
10922
+ const JsvSpray = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render$7]]);
10721
10923
 
10722
10924
  //!
10723
10925
  //! utils/JsViewVueWidget/JsvSpray/index.js;
@@ -10988,7 +11190,7 @@ const JsvSpriteAnim_vue_vue_type_style_index_0_scoped_fa78d758_lang = "";
10988
11190
 
10989
11191
 
10990
11192
  */
10991
- const _sfc_main$r = {
11193
+ const _sfc_main$s = {
10992
11194
  __name: "JsvSpriteAnim",
10993
11195
  props: {
10994
11196
  spriteInfo: Object,
@@ -11269,7 +11471,7 @@ const _sfc_main$r = {
11269
11471
  };
11270
11472
  const styleSheetsContent$1 = { "0": { "sprite-tag-fa78d758": "@keyframes sprite-tag-fa78d758 {}" } };
11271
11473
  window.JsvCode.Dom.DeclareStyleSheets(styleSheetsContent$1);
11272
- const JsvSpriteAnim = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "data-v-fa78d758"]]);
11474
+ const JsvSpriteAnim = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["__scopeId", "data-v-fa78d758"]]);
11273
11475
 
11274
11476
  //!
11275
11477
  //! utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteLoader.vue;
@@ -11289,7 +11491,7 @@ const JsvSpriteAnim = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["__scopeId", "d
11289
11491
 
11290
11492
 
11291
11493
  */
11292
- const _sfc_main$q = {
11494
+ const _sfc_main$r = {
11293
11495
  __name: "JsvSpriteLoader",
11294
11496
  props: {
11295
11497
  imageUrl: String,
@@ -11468,7 +11670,7 @@ class SpriteController {
11468
11670
 
11469
11671
 
11470
11672
  */
11471
- const _sfc_main$p = {
11673
+ const _sfc_main$q = {
11472
11674
  __name: "JsvVisibleSensor",
11473
11675
  props: {
11474
11676
  // (支持reactive)可视区域设定
@@ -11591,7 +11793,7 @@ const _sfc_main$p = {
11591
11793
 
11592
11794
  var JsvVisibleSensor$1 = /*#__PURE__*/Object.freeze({
11593
11795
  __proto__: null,
11594
- default: _sfc_main$p
11796
+ default: _sfc_main$q
11595
11797
  });
11596
11798
 
11597
11799
  //!
@@ -11666,8 +11868,8 @@ const keyCode2EdgeDirection = (keyCode) => {
11666
11868
  return null;
11667
11869
  }
11668
11870
  };
11669
- const _sfc_main$o = {
11670
- components: { JsvActorMove: _sfc_main$B, JsvVisibleSensor },
11871
+ const _sfc_main$p = {
11872
+ components: { JsvActorMove: _sfc_main$D, JsvVisibleSensor },
11671
11873
  props: {
11672
11874
  showIndicator: {
11673
11875
  type: Boolean,
@@ -12148,7 +12350,7 @@ function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
12148
12350
  }, 8, ["name", "style", "onAction"])
12149
12351
  ], 64);
12150
12352
  }
12151
- const JsvSwiper = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$6]]);
12353
+ const JsvSwiper = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$6]]);
12152
12354
 
12153
12355
  //!
12154
12356
  //! utils/JsViewVueWidget/JsvSwiper/index.js;
@@ -12181,7 +12383,7 @@ const JsvSwiper = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_rend
12181
12383
 
12182
12384
 
12183
12385
  */
12184
- const _sfc_main$n = {
12386
+ const _sfc_main$o = {
12185
12387
  __name: "JsvSwiper",
12186
12388
  props: {
12187
12389
  dispNumber: { type: Number, require: true },
@@ -12199,14 +12401,18 @@ const _sfc_main$n = {
12199
12401
  },
12200
12402
  setup(__props) {
12201
12403
  const props = __props;
12404
+ let showNumber = props.dispNumber < 3 ? 3 : props.dispNumber;
12405
+ if (showNumber % 2 == 0) {
12406
+ showNumber = showNumber + 1;
12407
+ }
12408
+ let items = shallowReactive(new Array(showNumber + 2));
12202
12409
  let currentId;
12203
12410
  let preFocusedIdx;
12204
12411
  if (props.initIndex == void 0) {
12205
- currentId = Math.floor(props.dispNumber / 2);
12412
+ currentId = Math.floor(showNumber / 2);
12206
12413
  } else {
12207
12414
  currentId = props.initIndex;
12208
12415
  }
12209
- let items = reactive(new Array(props.dispNumber + 2));
12210
12416
  let allItems = [];
12211
12417
  let length = props.ItemArray.length;
12212
12418
  if (length < props.dispNumber) {
@@ -12214,17 +12420,22 @@ const _sfc_main$n = {
12214
12420
  } else {
12215
12421
  for (let i = 0; i < props.ItemArray.length; i++) {
12216
12422
  allItems.push({
12217
- ...props.ItemArray[i],
12218
- dataIndex: i
12423
+ propsItem: props.ItemArray[i],
12424
+ dataIndex: i,
12425
+ defineSize: {
12426
+ top: null,
12427
+ width: null,
12428
+ height: null
12429
+ }
12219
12430
  });
12220
12431
  }
12221
12432
  }
12222
12433
  let space = shallowRef(0);
12223
12434
  let direction = "left";
12224
12435
  let focusedIdx = currentId;
12225
- let prevNumber = Math.floor(props.dispNumber / 2) + 1;
12436
+ let prevNumber = Math.floor(showNumber / 2) + 1;
12226
12437
  const move1 = () => {
12227
- for (let i = 0; i < props.dispNumber + 2; i++) {
12438
+ for (let i = 0; i < showNumber + 2; i++) {
12228
12439
  let itemIdx = focusedIdx - prevNumber + i;
12229
12440
  if (itemIdx < 0) {
12230
12441
  itemIdx += props.ItemArray.length;
@@ -12255,7 +12466,7 @@ const _sfc_main$n = {
12255
12466
  if (index == items.length - 2) {
12256
12467
  let startPosX = props.layoutInfo.width / 2;
12257
12468
  let endPosX = props.layoutInfo.width - width / 2;
12258
- space.value = (endPosX - startPosX) / ((props.dispNumber - 1) / 2);
12469
+ space.value = (endPosX - startPosX) / ((showNumber - 1) / 2);
12259
12470
  }
12260
12471
  leftArray[index] = { index, width };
12261
12472
  }
@@ -12291,12 +12502,12 @@ const _sfc_main$n = {
12291
12502
  if (index == items.length - 2) {
12292
12503
  let startPosX = props.layoutInfo.width / 2;
12293
12504
  let endPosX = props.layoutInfo.width - width / 2;
12294
- space.value = (endPosX - startPosX) / ((props.dispNumber - 1) / 2);
12505
+ space.value = (endPosX - startPosX) / ((showNumber - 1) / 2);
12295
12506
  }
12296
12507
  left = leftArray[index].left;
12297
- items[index].top = top;
12298
- items[index].width = width;
12299
- items[index].height = height;
12508
+ items[index].defineSize.top = top;
12509
+ items[index].defineSize.width = width;
12510
+ items[index].defineSize.height = height;
12300
12511
  return {
12301
12512
  zIndex,
12302
12513
  left,
@@ -12309,10 +12520,8 @@ const _sfc_main$n = {
12309
12520
  const scaleItemStyle = (index) => {
12310
12521
  const currentIndex = Math.abs(index - Math.floor(items.length / 2));
12311
12522
  const scale = 1 - currentIndex * props.sideScale;
12312
- const backgroundImage = items[index].image;
12313
12523
  const width = props.initItemStyle.width * scale;
12314
12524
  const height = props.initItemStyle.height * scale;
12315
- items[index].backgroundImage = backgroundImage;
12316
12525
  if (direction == "left") {
12317
12526
  return {
12318
12527
  width,
@@ -12562,7 +12771,7 @@ const _sfc_main$n = {
12562
12771
  }, [
12563
12772
  (openBlock(true), createElementBlock(Fragment, null, renderList(unref(items), (item, index) => {
12564
12773
  return openBlock(), createElementBlock("div", {
12565
- key: item.image + `${index}`,
12774
+ key: item + `${index}`,
12566
12775
  style: normalizeStyle(getItemStyle(index))
12567
12776
  }, [
12568
12777
  createElementVNode("div", {
@@ -12570,7 +12779,8 @@ const _sfc_main$n = {
12570
12779
  }, [
12571
12780
  renderSlot(_ctx.$slots, "itemView", {
12572
12781
  dataIndex: item.dataIndex,
12573
- item
12782
+ propsItem: item.propsItem,
12783
+ defineSize: item.defineSize
12574
12784
  })
12575
12785
  ], 4)
12576
12786
  ], 4);
@@ -12675,7 +12885,7 @@ const TexAlignAnchor$1 = {
12675
12885
  CENTER_BOTTOM: 8,
12676
12886
  RIGHT_BOTTOM: 9
12677
12887
  };
12678
- const _sfc_main$m = {
12888
+ const _sfc_main$n = {
12679
12889
  props: {
12680
12890
  src: String,
12681
12891
  top: Number,
@@ -12947,7 +13157,7 @@ function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
12947
13157
  "data-jsv-vw-innerview": $setup.innerViewId
12948
13158
  }, null, 12, ["data-jsv-vw-innerview"]);
12949
13159
  }
12950
- const JsvTextureAnim = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$5]]);
13160
+ const JsvTextureAnim = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$5]]);
12951
13161
 
12952
13162
  //!
12953
13163
  //! utils/JsViewVueWidget/JsvTextureAnim/index.js;
@@ -12980,7 +13190,7 @@ const TexAlignAnchor = TexAlignAnchor$1;
12980
13190
 
12981
13191
 
12982
13192
  */
12983
- const _sfc_main$l = {
13193
+ const _sfc_main$m = {
12984
13194
  __name: "JsvFilterView",
12985
13195
  props: {
12986
13196
  width: {
@@ -13133,7 +13343,7 @@ class LineType extends UpdateType {
13133
13343
  this.end = end;
13134
13344
  }
13135
13345
  }
13136
- const _sfc_main$k = {
13346
+ const _sfc_main$l = {
13137
13347
  props: {
13138
13348
  left: {
13139
13349
  type: Number
@@ -13633,7 +13843,7 @@ function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
13633
13843
  _: 3
13634
13844
  }, 8, ["name", "onAction", "style"]);
13635
13845
  }
13636
- const JsvGrid = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$4]]);
13846
+ const JsvGrid = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$4]]);
13637
13847
 
13638
13848
  //!
13639
13849
  //! utils/JsViewVueWidget/JsvNativeSharedDiv.vue;
@@ -13650,7 +13860,7 @@ const JsvGrid = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render
13650
13860
 
13651
13861
 
13652
13862
  */
13653
- const _sfc_main$j = {
13863
+ const _sfc_main$k = {
13654
13864
  props: {
13655
13865
  style: {
13656
13866
  type: Object,
@@ -13727,7 +13937,7 @@ function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
13727
13937
  renderSlot(_ctx.$slots, "default")
13728
13938
  ], 4));
13729
13939
  }
13730
- const JsvNativeSharedDiv = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$3]]);
13940
+ const JsvNativeSharedDiv = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$3]]);
13731
13941
 
13732
13942
  //!
13733
13943
  //! utils/JsViewVueWidget/JsvHole.js;
@@ -15100,7 +15310,7 @@ const CMD_DRAW_CIRCLE_WITH_PAINT = 12;
15100
15310
  const CMD_DRAW_RECT_WITH_PAINT = 13;
15101
15311
  const CMD_DRAW_PATH_WITH_PAINT = 14;
15102
15312
  const CMD_DRAW_LINE = 15;
15103
- const CMD_FILL_LINEAR_GRADIENT = 16;
15313
+ const CMD_DRAW_LINEAR_GRADIENT_RECT = 16;
15104
15314
  //! Path的子命令
15105
15315
  const PATH_CMD_MOVE_TO = 30;
15106
15316
  const PATH_CMD_LINE_TO = 31;
@@ -15289,6 +15499,7 @@ class CanvasTexture extends TextureBase {
15289
15499
  drawCommands = [];
15290
15500
  commited = false;
15291
15501
  // commit只能执行一次, 执行过后无法再更改texture内容
15502
+ instantLoad = TextureInstantType.Sync;
15292
15503
  /**
15293
15504
  * canvasTexture
15294
15505
  *
@@ -15408,9 +15619,13 @@ class CanvasTexture extends TextureBase {
15408
15619
  * @param {Array<String>} colorArray 颜色设定的数组
15409
15620
  * @param {Array<double>} stopsArray 与color数组个数相同,颜色基准点位置
15410
15621
  */
15411
- fillLinearGradient(fromX, fromY, toX, toY, colorArray, stopsArray) {
15622
+ drawLinearGradientRect(fromX, fromY, toX, toY, colorArray, stopsArray) {
15623
+ if (!colorArray || !stopsArray || colorArray.length !== stopsArray.length) {
15624
+ console.error("CanvasTexture error: drawLinearGradientRect colorArray.length must be equal to stopsArray.length. Current array is:", Array.from(colorArray), Array.from(stopsArray));
15625
+ return;
15626
+ }
15412
15627
  this.drawCommands?.push({
15413
- "cmd": CMD_FILL_LINEAR_GRADIENT,
15628
+ "cmd": CMD_DRAW_LINEAR_GRADIENT_RECT,
15414
15629
  "x0": fromX,
15415
15630
  "y0": fromY,
15416
15631
  "x1": toX,
@@ -15419,10 +15634,27 @@ class CanvasTexture extends TextureBase {
15419
15634
  "stops": stopsArray
15420
15635
  });
15421
15636
  }
15637
+ /**
15638
+ * setAsyncLoad
15639
+ * texture异步加载,让界面不会卡顿
15640
+ *
15641
+ * @param {int} fromX 绘制起点X
15642
+ * @param {int} fromY 绘制起点Y
15643
+ * @param {int} toX 绘制终点X
15644
+ * @param {int} toY 绘制终点Y
15645
+ * @param {Array<String>} colorArray 颜色设定的数组
15646
+ * @param {Array<double>} stopsArray 与color数组个数相同,颜色基准点位置
15647
+ */
15648
+ setAsyncLoad() {
15649
+ this.instantLoad = TextureInstantType.Async;
15650
+ }
15422
15651
  // override
15423
15652
  commit() {
15424
15653
  if (!this.commited) {
15425
- this.textureRef = handles.TextureManager.GetCanvasTexture(JSON.stringify(this.drawCommands));
15654
+ this.textureRef = handles.TextureManager.GetCanvasTexture(
15655
+ JSON.stringify(this.drawCommands),
15656
+ this.instantLoad
15657
+ );
15426
15658
  this.addToStore();
15427
15659
  this.commited = true;
15428
15660
  this.drawCommands = null;
@@ -15472,26 +15704,6 @@ let sTextureStoreApi = {
15472
15704
  canvasTexture: (width, height, baseName) => {
15473
15705
  return new CanvasTexture(width, height, baseName);
15474
15706
  },
15475
- /**
15476
- * getLinearGradientTexture
15477
- * 按照要求创建一个绘制渐变色的纹理,
15478
- * 绘制从起始位置到终止位置的一条线,
15479
- * 例如从右边上的中点绘制到上边缘的中点的直线: RIGHT:0.5 -> TOP:0.5
15480
- * 返回值为访问名
15481
- *
15482
- * @param {int} startSide JsvTextureConst的 LEFT/TOP/RIGHT/BOTTOM, 起始位置
15483
- * @param {double} startSidePercent 起始点在所在边的比例位置
15484
- * @param {int} endSide JsvTextureConst的 LEFT/TOP/RIGHT/BOTTOM, 终止位置
15485
- * @param {double} endSidePercent 终止点在所在边的比例位置
15486
- * @param {Array<String>} colorArray 颜色基准点的颜色队列
15487
- * @param {int} stopsDenominator stops信息百分比的分母,值越小其texture越省内存
15488
- * @param {Array<int>} stopsArray 颜色基准点的百分比的分子队列
15489
- *
15490
- * @return {String} 此Texture的访问名,可以在 img.src 或者 div.backgroundImage 通过 "texturestore://访问名"使用
15491
- */
15492
- getLinearGradientTexture: (startSide, startSidePercent, endSide, endSidePercent, colorArray, stopsDenominator, stopsArray) => {
15493
- return "";
15494
- },
15495
15707
  /**
15496
15708
  * deleteTexture
15497
15709
  * 删除commit后的texture
@@ -15532,7 +15744,7 @@ let sTextureStoreApi = {
15532
15744
 
15533
15745
 
15534
15746
  */
15535
- const _sfc_main$i = {
15747
+ const _sfc_main$j = {
15536
15748
  __name: "JsvMarquee",
15537
15749
  props: {
15538
15750
  text: {
@@ -15938,7 +16150,7 @@ const _sfc_main$i = {
15938
16150
 
15939
16151
 
15940
16152
  */
15941
- const _sfc_main$h = {
16153
+ const _sfc_main$i = {
15942
16154
  props: {
15943
16155
  class: {
15944
16156
  type: String
@@ -16025,11 +16237,11 @@ const _sfc_main$h = {
16025
16237
  },
16026
16238
  _initForHtml() {
16027
16239
  let _this = this;
16028
- this.$refs.innerView?.jsvGetProxyView(true).RegisterOnProxyReady(() => {
16240
+ this.$refs.innerViewDiv?.jsvGetProxyView(true).RegisterOnProxyReady(() => {
16029
16241
  const canvas = window.originDocument.createElement("canvas");
16030
16242
  canvas.style.width = _this.style.width + "px";
16031
16243
  canvas.style.height = _this.style.height + "px";
16032
- _this.$refs.innerView?.jsvGetProxyView(true).HtmlGetElement().appendChild(canvas);
16244
+ _this.$refs.innerViewDiv?.jsvGetProxyView(true).HtmlGetElement().appendChild(canvas);
16033
16245
  const clip_image = new Image();
16034
16246
  const bg_image = new Image();
16035
16247
  clip_image.src = _this.maskSrc;
@@ -16097,14 +16309,13 @@ const _sfc_main$h = {
16097
16309
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
16098
16310
  return $setup.html ? (openBlock(), createElementBlock("div", {
16099
16311
  key: 0,
16100
- ref: "innerView",
16312
+ ref: "innerViewDiv",
16101
16313
  style: normalizeStyle({
16102
16314
  top: $props.style.top,
16103
16315
  left: $props.style.left
16104
16316
  })
16105
16317
  }, null, 4)) : (openBlock(), createElementBlock("div", {
16106
16318
  key: 1,
16107
- ref: "innerView",
16108
16319
  "data-jsv-vw-innerview": $setup.innerViewId,
16109
16320
  style: normalizeStyle({
16110
16321
  top: $props.style.top,
@@ -16114,7 +16325,7 @@ function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
16114
16325
  })
16115
16326
  }, null, 12, ["data-jsv-vw-innerview"]));
16116
16327
  }
16117
- const JsvMaskClipDiv = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$2]]);
16328
+ const JsvMaskClipDiv = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$2]]);
16118
16329
 
16119
16330
  //!
16120
16331
  //! utils/JsViewVueWidget/JsvNinePatch.vue;
@@ -16142,7 +16353,7 @@ const JsvMaskClipDiv = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc
16142
16353
 
16143
16354
 
16144
16355
  */
16145
- const _sfc_main$g = {
16356
+ const _sfc_main$h = {
16146
16357
  __name: "JsvNinePatch",
16147
16358
  props: {
16148
16359
  style: {
@@ -16239,7 +16450,7 @@ const _sfc_main$g = {
16239
16450
 
16240
16451
 
16241
16452
  */
16242
- const _sfc_main$f = {
16453
+ const _sfc_main$g = {
16243
16454
  __name: "JsvPosterDiv",
16244
16455
  props: {
16245
16456
  style: Object
@@ -16289,7 +16500,7 @@ const _sfc_main$f = {
16289
16500
 
16290
16501
 
16291
16502
  */
16292
- const _sfc_main$e = {
16503
+ const _sfc_main$f = {
16293
16504
  __name: "JsvPosterImage",
16294
16505
  props: {
16295
16506
  colorSpace: {
@@ -16372,7 +16583,7 @@ const _sfc_main$e = {
16372
16583
 
16373
16584
 
16374
16585
  */
16375
- const _sfc_main$d = {
16586
+ const _sfc_main$e = {
16376
16587
  props: {
16377
16588
  definitionScale: {
16378
16589
  type: String
@@ -16384,7 +16595,7 @@ function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
16384
16595
  renderSlot(_ctx.$slots, "default")
16385
16596
  ], 8, ["data-jsv-vw-text-definition"]);
16386
16597
  }
16387
- const JsvScaleTextBox = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$1]]);
16598
+ const JsvScaleTextBox = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$1]]);
16388
16599
 
16389
16600
  //!
16390
16601
  //! utils/JsViewVueWidget/JsvSoundPool.js;
@@ -16615,7 +16826,7 @@ class JsvSoundPool {
16615
16826
  /*! <!--
16616
16827
  * Created by chunfeng.luo@qcast.cn on 10/13/20.
16617
16828
  */
16618
- const _sfc_main$c = {
16829
+ const _sfc_main$d = {
16619
16830
  __name: "JsvTextBox",
16620
16831
  props: {
16621
16832
  style: Object,
@@ -16636,53 +16847,39 @@ const _sfc_main$c = {
16636
16847
  },
16637
16848
  setup(__props) {
16638
16849
  const props = __props;
16639
- const innerStyle = computed(() => {
16640
- let result = { ...props.style };
16641
- if (!result.verticalAlign) {
16642
- result.verticalAlign = props.verticalAlign;
16643
- }
16644
- if (!result.lineAlign) {
16645
- result.lineAlign = props.lineAlign;
16850
+ const computeAlignItems = computed(() => {
16851
+ switch (props.verticalAlign) {
16852
+ case "top":
16853
+ return "flex-start";
16854
+ case "bottom":
16855
+ return "flex-end";
16856
+ default:
16857
+ case "center":
16858
+ return "center";
16646
16859
  }
16647
- return result;
16648
16860
  });
16649
- const disable = window.JsvDisableReactWrapper;
16650
16861
  return (_ctx, _cache) => {
16651
- return openBlock(), createElementBlock("div", null, [
16652
- unref(disable) ? (openBlock(), createElementBlock("div", {
16653
- key: 0,
16654
- style: normalizeStyle(__props.style)
16655
- }, [
16656
- createElementVNode("div", { style: { position: "static", display: "table" } }, [
16657
- createElementVNode("div", {
16658
- className: __props.className,
16659
- style: normalizeStyle({
16660
- position: "static",
16661
- display: "table-cell",
16662
- width: __props.style.width,
16663
- height: __props.style.height,
16664
- verticalAlign: __props.verticalAlign
16665
- }),
16666
- "jsv-inherit-class": "2"
16667
- }, [
16668
- renderSlot(_ctx.$slots, "default")
16669
- ], 12, ["className"])
16670
- ])
16671
- ], 4)) : (openBlock(), createElementBlock("div", {
16672
- key: 1,
16673
- className: __props.className,
16674
- style: normalizeStyle({
16675
- ...__props.style,
16676
- JsvTextLatex: __props.enableLatex ? 1 : 0,
16677
- JsvTextVerticalAlign: __props.verticalAlign,
16678
- JsvTextLineAlign: __props.lineAlign,
16679
- JsvTextInnerDirection: __props.textDirection
16680
- }),
16681
- "jsv-inherit-class": "1"
16682
- }, [
16683
- renderSlot(_ctx.$slots, "default")
16684
- ], 12, ["className"]))
16685
- ]);
16862
+ return openBlock(), createBlock(unref(_sfc_main$A), {
16863
+ style: normalizeStyle({
16864
+ ...props.style,
16865
+ flexDirection: "row",
16866
+ alignItems: unref(computeAlignItems)
16867
+ })
16868
+ }, {
16869
+ default: withCtx(() => [
16870
+ createElementVNode("div", {
16871
+ style: normalizeStyle({
16872
+ width: props.style.width,
16873
+ JsvTextLatex: __props.enableLatex ? 1 : 0,
16874
+ JsvTextLineAlign: __props.lineAlign,
16875
+ JsvTextInnerDirection: __props.textDirection
16876
+ })
16877
+ }, [
16878
+ renderSlot(_ctx.$slots, "default")
16879
+ ], 4)
16880
+ ]),
16881
+ _: 3
16882
+ }, 8, ["style"]);
16686
16883
  };
16687
16884
  }
16688
16885
  };
@@ -16709,7 +16906,7 @@ const _sfc_main$c = {
16709
16906
  -->
16710
16907
 
16711
16908
  */
16712
- const _sfc_main$b = {
16909
+ const _sfc_main$c = {
16713
16910
  __name: "JsvRadarChart",
16714
16911
  props: {
16715
16912
  style: {
@@ -16953,7 +17150,7 @@ const JsvRippleShape = {
16953
17150
 
16954
17151
 
16955
17152
  */
16956
- const _sfc_main$a = {
17153
+ const _sfc_main$b = {
16957
17154
  __name: "JsvRipple",
16958
17155
  props: {
16959
17156
  width: {
@@ -17127,7 +17324,7 @@ const JsvLine_vue_vue_type_style_index_0_scoped_10b9ebcf_lang = "";
17127
17324
 
17128
17325
 
17129
17326
  */
17130
- const _sfc_main$9 = {
17327
+ const _sfc_main$a = {
17131
17328
  __name: "JsvLine",
17132
17329
  props: {
17133
17330
  startPos: { type: Object, require: true },
@@ -17188,7 +17385,7 @@ const _sfc_main$9 = {
17188
17385
  };
17189
17386
  const styleSheetsContent = { "0": { "fadeIn-10b9ebcf": "@keyframes fadeIn-10b9ebcf {0%{opacity:0;}100%{opacity:1;}}", "fadeOut-10b9ebcf": "@keyframes fadeOut-10b9ebcf {0%{opacity:1;}100%{opacity:0;}}" } };
17190
17387
  window.JsvCode.Dom.DeclareStyleSheets(styleSheetsContent);
17191
- const JsvLine = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-10b9ebcf"]]);
17388
+ const JsvLine = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["__scopeId", "data-v-10b9ebcf"]]);
17192
17389
 
17193
17390
  //!
17194
17391
  //! utils/JsViewVueWidget/JsvLine/index.js;
@@ -17214,7 +17411,7 @@ const JsvLine = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["__scopeId", "data-v-
17214
17411
 
17215
17412
 
17216
17413
  */
17217
- const _sfc_main$8 = {
17414
+ const _sfc_main$9 = {
17218
17415
  __name: "JsvSector",
17219
17416
  props: {
17220
17417
  centerPosition: { type: Object, require: true },
@@ -17328,7 +17525,7 @@ const _sfc_main$8 = {
17328
17525
 
17329
17526
 
17330
17527
  */
17331
- const _sfc_main$7 = {
17528
+ const _sfc_main$8 = {
17332
17529
  __name: "JsvPieChart",
17333
17530
  props: {
17334
17531
  centerPosition: { type: Object, required: true },
@@ -17349,20 +17546,21 @@ const _sfc_main$7 = {
17349
17546
  let totalPercent = 0;
17350
17547
  data.forEach((item) => {
17351
17548
  if (!item.hasOwnProperty("percent")) {
17352
- throw new Error("每一项必须包含percent属性");
17549
+ console.error("每一项必须包含percent属性");
17353
17550
  }
17354
- if (item.percent <= 0 || item.percent > 100) {
17355
- throw new Error("每一项percent必须大于0或者小于等于100!");
17551
+ if (item.percent < 0 || item.percent > 100) {
17552
+ console.error("每一项percent必须大于0或者小于等于100!");
17356
17553
  }
17357
17554
  totalPercent += item.percent;
17358
17555
  });
17359
17556
  if (totalPercent < 99 || totalPercent > 101) {
17360
- throw new Error("percent属性值总和必须等于100!");
17557
+ console.error("percent属性值总和必须等于100!");
17361
17558
  }
17362
17559
  return true;
17363
17560
  };
17364
17561
  CheckData(props.data);
17365
17562
  let finalData = reactive([]);
17563
+ let TempAngleArray = [];
17366
17564
  const filterData = (data) => {
17367
17565
  data.forEach((item, index) => {
17368
17566
  if (item.percent > previousPercent[index]) {
@@ -17372,7 +17570,7 @@ const _sfc_main$7 = {
17372
17570
  } else {
17373
17571
  extraTimeArray[index] = 0;
17374
17572
  }
17375
- item.angle = (item.percent / 100 * 360).toFixed(2);
17573
+ TempAngleArray.push((item.percent / 100 * 360).toFixed(2));
17376
17574
  if (index == 0) {
17377
17575
  finalData.push({
17378
17576
  startAngle: Number(0).toFixed(2),
@@ -17384,54 +17582,50 @@ const _sfc_main$7 = {
17384
17582
  } else {
17385
17583
  finalData.push({
17386
17584
  startAngle: (Number(finalData[index - 1].startAngle) + Number(finalData[index - 1].sweepAngle)).toFixed(2),
17387
- sweepAngle: Number(item.angle).toFixed(2),
17585
+ sweepAngle: Number(TempAngleArray[index]).toFixed(2),
17388
17586
  color: item.color,
17389
17587
  index,
17390
17588
  extraTime: extraTimeArray[index]
17391
17589
  });
17392
17590
  }
17393
17591
  });
17592
+ TempAngleArray = [];
17394
17593
  };
17395
17594
  filterData(myData);
17396
- watch(
17397
- props.data,
17398
- (n, o) => {
17399
- if (CheckData(n)) {
17400
- finalData.splice(0, finalData.length);
17401
- filterData(n);
17402
- myData = n;
17403
- }
17404
- },
17405
- { deep: true }
17406
- );
17407
- watch(myData, (n, o) => {
17408
- previousPercent = [];
17409
- extraTimeArray = [];
17410
- myData.forEach((item, index) => {
17411
- previousPercent.push(item.percent);
17412
- extraTimeArray.push(0);
17413
- });
17414
- n.forEach((item, index) => {
17415
- previousPercent.push(item.percent);
17416
- });
17595
+ watchEffect(() => {
17596
+ if (CheckData(props.data)) {
17597
+ finalData.splice(0, finalData.length);
17598
+ filterData(props.data);
17599
+ myData = props.data;
17600
+ previousPercent = [];
17601
+ extraTimeArray = [];
17602
+ myData.forEach((item, index) => {
17603
+ previousPercent.push(item.percent);
17604
+ extraTimeArray.push(0);
17605
+ });
17606
+ }
17417
17607
  });
17418
17608
  return (_ctx, _cache) => {
17419
- return openBlock(true), createElementBlock(Fragment, null, renderList(unref(finalData).slice().reverse(), (item, index) => {
17420
- return openBlock(), createElementBlock("div", null, [
17421
- createVNode(_sfc_main$8, {
17422
- radius: props.radius,
17423
- config: {
17424
- startAngle: Number(item.startAngle),
17425
- sweepAngle: Number(item.sweepAngle) + 1,
17426
- color: item.color
17427
- },
17428
- id: `indexZ${index}`,
17429
- animationTime: props.animationTime,
17430
- centerPosition: props.centerPosition,
17431
- extraTime: item.extraTime
17432
- }, null, 8, ["radius", "config", "id", "animationTime", "centerPosition", "extraTime"])
17433
- ]);
17434
- }), 256);
17609
+ return openBlock(), createElementBlock("div", {
17610
+ key: "pie-" + unref(finalData).length
17611
+ }, [
17612
+ (openBlock(true), createElementBlock(Fragment, null, renderList(unref(finalData).slice().reverse(), (item, index) => {
17613
+ return openBlock(), createElementBlock("div", null, [
17614
+ (openBlock(), createBlock(_sfc_main$9, {
17615
+ radius: props.radius,
17616
+ config: {
17617
+ startAngle: Number(item.startAngle),
17618
+ sweepAngle: unref(finalData).length == 1 || item.sweepAngle == 360 ? Number(item.sweepAngle) : Number(item.sweepAngle) + 1,
17619
+ color: item.color
17620
+ },
17621
+ key: `indexZ${index}`,
17622
+ animationTime: props.animationTime,
17623
+ centerPosition: props.centerPosition,
17624
+ extraTime: item.extraTime
17625
+ }, null, 8, ["radius", "config", "animationTime", "centerPosition", "extraTime"]))
17626
+ ]);
17627
+ }), 256))
17628
+ ]);
17435
17629
  };
17436
17630
  }
17437
17631
  };
@@ -17525,7 +17719,7 @@ class ConnectLineTexture {
17525
17719
 
17526
17720
 
17527
17721
  */
17528
- const _sfc_main$6 = {
17722
+ const _sfc_main$7 = {
17529
17723
  __name: "JsvConnectLine",
17530
17724
  props: {
17531
17725
  startPos: {
@@ -17793,7 +17987,7 @@ const _sfc_main$6 = {
17793
17987
 
17794
17988
 
17795
17989
  */
17796
- const _sfc_main$5 = {
17990
+ const _sfc_main$6 = {
17797
17991
  __name: "JsvProgressBar",
17798
17992
  props: {
17799
17993
  width: { type: Number, required: true },
@@ -17870,7 +18064,7 @@ const _sfc_main$5 = {
17870
18064
  return openBlock(), createElementBlock(Fragment, null, [
17871
18065
  props.isCanvas ? (openBlock(), createElementBlock("div", { key: 0 }, [
17872
18066
  withDirectives(createElementVNode("div", null, [
17873
- createVNode(_sfc_main$g, {
18067
+ createVNode(_sfc_main$h, {
17874
18068
  style: normalizeStyle({
17875
18069
  left: 0,
17876
18070
  top: 0,
@@ -17912,7 +18106,7 @@ const _sfc_main$5 = {
17912
18106
  }, null, 4)
17913
18107
  ], 4)
17914
18108
  ])),
17915
- createVNode(_sfc_main$g, {
18109
+ createVNode(_sfc_main$h, {
17916
18110
  style: normalizeStyle({
17917
18111
  left: 0,
17918
18112
  top: 0,
@@ -17931,6 +18125,147 @@ const _sfc_main$5 = {
17931
18125
  }
17932
18126
  };
17933
18127
 
18128
+ //!
18129
+ //! utils/JsViewVueWidget/JsvSceneTransition.vue;
18130
+ //!
18131
+ /*! <!--
18132
+ * 【模块 export 内容】
18133
+ * JsvSceneTransition:场景过渡组件。
18134
+ * props说明:
18135
+ * imageUrl {String} (必填) 显示图片的加载地址
18136
+ * displayWidth {Number} (必填) 想要展示的宽度
18137
+ * ArraySet {Array} (必填) 模板配置项,包括:每个模块的width,height,left,top,url
18138
+ * style {Object} (必填) 横纵模板总长度和总宽度。(width,height)
18139
+ * onOff {Boolean} (必填) 组件挂载好后是否立即动画的开关,后续可通过改值为true开启。
18140
+ -->
18141
+
18142
+
18143
+
18144
+
18145
+
18146
+
18147
+ */
18148
+ const _sfc_main$5 = {
18149
+ __name: "JsvSceneTransition",
18150
+ props: {
18151
+ imageUrl: { type: String, require: true },
18152
+ displayWidth: { type: Number, require: true },
18153
+ ArraySet: { type: Array, require: true },
18154
+ style: { type: Object, require: true },
18155
+ onOff: { type: Boolean, require: true }
18156
+ },
18157
+ setup(__props) {
18158
+ const props = __props;
18159
+ const refArray = [];
18160
+ const controlArray = new Array(props.ArraySet.length).fill(null);
18161
+ watch(
18162
+ () => props.onOff,
18163
+ (n, o) => {
18164
+ if (n == true) {
18165
+ MoveFunc();
18166
+ }
18167
+ }
18168
+ );
18169
+ const MoveFunc = () => {
18170
+ controlArray[0].run([
18171
+ controlArray[0].action().setSpdAndAccel(-6, -9, 0, 1, null, null),
18172
+ controlArray[0].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[0].action().stopMoving()])
18173
+ ]);
18174
+ controlArray[1].run([
18175
+ controlArray[1].action().setSpdAndAccel(0, -5, 0, 1, null, null),
18176
+ controlArray[1].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[1].action().stopMoving()])
18177
+ ]);
18178
+ controlArray[2].run([
18179
+ controlArray[2].action().setSpdAndAccel(6, -9, 0, 1, null, null),
18180
+ controlArray[2].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[2].action().stopMoving()])
18181
+ ]);
18182
+ controlArray[3].run([
18183
+ controlArray[3].action().setSpdAndAccel(-6, -7, 0, 1, null, null),
18184
+ controlArray[3].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[3].action().stopMoving()])
18185
+ ]);
18186
+ controlArray[4].run([
18187
+ controlArray[4].action().setSpdAndAccel(0, -8, 0, 1, null, null),
18188
+ controlArray[4].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[4].action().stopMoving()])
18189
+ ]);
18190
+ controlArray[5].run([
18191
+ controlArray[5].action().setSpdAndAccel(6, -7, 0, 1, null, null),
18192
+ controlArray[5].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[5].action().stopMoving()])
18193
+ ]);
18194
+ controlArray[6].run([
18195
+ controlArray[6].action().setSpdAndAccel(-6, -4, 0, 1, null, null),
18196
+ controlArray[6].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[6].action().stopMoving()])
18197
+ ]);
18198
+ controlArray[7].run([
18199
+ controlArray[7].action().setSpdAndAccel(0, -8, 0, 1, null, null),
18200
+ controlArray[7].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[7].action().stopMoving()])
18201
+ ]);
18202
+ controlArray[8].run([
18203
+ controlArray[8].action().setSpdAndAccel(2, -7, 0, 1, null, null),
18204
+ controlArray[8].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[8].action().stopMoving()])
18205
+ ]);
18206
+ controlArray[9].run([
18207
+ controlArray[9].action().setSpdAndAccel(6, -7, 0, 1, null, null),
18208
+ controlArray[9].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[9].action().stopMoving()])
18209
+ ]);
18210
+ controlArray[10].run([
18211
+ controlArray[10].action().setSpdAndAccel(4, -4, 0, 1, null, null),
18212
+ controlArray[10].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[10].action().stopMoving()])
18213
+ ]);
18214
+ controlArray[11].run([
18215
+ controlArray[11].action().setSpdAndAccel(6, -4, 0, 1, null, null),
18216
+ controlArray[11].condition().reachPosition(void 0, props.style.height + 100).then([controlArray[11].action().stopMoving()])
18217
+ ]);
18218
+ };
18219
+ onMounted(() => {
18220
+ for (let i = 0; i < refArray.length; i++) {
18221
+ controlArray[i] = refArray[i].control;
18222
+ }
18223
+ if (props.onOff == true) {
18224
+ MoveFunc();
18225
+ }
18226
+ });
18227
+ return (_ctx, _cache) => {
18228
+ return openBlock(), createElementBlock("div", {
18229
+ style: normalizeStyle({
18230
+ width: 1280,
18231
+ height: 720,
18232
+ transform: `scale3d(${props.displayWidth / 1280},${props.displayWidth / 1280},1)`,
18233
+ transformOrigin: "left top"
18234
+ })
18235
+ }, [
18236
+ (openBlock(true), createElementBlock(Fragment, null, renderList(props.ArraySet, (item, index) => {
18237
+ return openBlock(), createBlock(unref(_sfc_main$C), {
18238
+ ref_for: true,
18239
+ ref: (el) => refArray[index] = el,
18240
+ top: item.top,
18241
+ left: item.left,
18242
+ width: item.width,
18243
+ height: item.height
18244
+ }, {
18245
+ default: withCtx(() => [
18246
+ createVNode(JsvMaskClipDiv, {
18247
+ style: normalizeStyle({
18248
+ top: 0,
18249
+ left: 0,
18250
+ width: item.width,
18251
+ height: item.height
18252
+ }),
18253
+ viewSrc: props.imageUrl,
18254
+ maskSrc: item.url,
18255
+ maskLeft: item.left / props.style.width,
18256
+ maskTop: item.top / props.style.height,
18257
+ maskWidth: item.width / props.style.width,
18258
+ maskHeight: item.height / props.style.height
18259
+ }, null, 8, ["style", "viewSrc", "maskSrc", "maskLeft", "maskTop", "maskWidth", "maskHeight"])
18260
+ ]),
18261
+ _: 2
18262
+ }, 1032, ["top", "left", "width", "height"]);
18263
+ }), 256))
18264
+ ], 4);
18265
+ };
18266
+ }
18267
+ };
18268
+
17934
18269
  //!
17935
18270
  //! utils/JsViewVueWidget/JsvEnableRenderBreak.vue;
17936
18271
  //!
@@ -21206,4 +21541,4 @@ if (!window.JsView) {
21206
21541
  //! utils/index.js;
21207
21542
  //!
21208
21543
 
21209
- export { BaseDispatcher, DECORATE_BORDER_RADIUS, DECORATE_NINEPATCH_ALPHA_MIX, DebugObjectRefer, DebugTools, DebugWrap81ErrorStack, DebugWrap81WarnStack, DefaultKeyCodeMap, EdgeDirection, FixPositionSlide, FocusMoveType, FreeMoveDef, FreeMoveFunc, HORIZONTAL, InputType, instance as JSBridge, JsvAccount, _sfc_main$B as JsvActorMove, JsvActorMoveControl, _JsvApic$1 as JsvApic, _JsvApic2$1 as JsvApic2, _JsvAudio as JsvAudio, _sfc_main$6 as JsvConnectLine, _sfc_main$4 as JsvEnableRenderBreak, _sfc_main$z as JsvEnvBlocker, _sfc_main$l as JsvFilterView, _sfc_main$C as JsvFocusBlock, _sfc_main$A as JsvFreeMoveActor, JsvGrid, JsvNativeSharedDiv as JsvHole, JsvInput, _JsvLatex as JsvLatex, JsvLine, _sfc_main$i as JsvMarquee, JsvMaskClipDiv, _sfc_main$3 as JsvMindMap, JsvNativeSharedDiv, _sfc_main$g as JsvNinePatch, JsvPerformance, _sfc_main$7 as JsvPieChart, _JsvPlayer as JsvPlayer, _sfc_main$f as JsvPosterDiv, _sfc_main$e as JsvPosterImage, exportObj as JsvPreDownloader, JsvPreload, _sfc_main$5 as JsvProgressBar, _JsvQrcode$1 as JsvQrcode, _sfc_main$b as JsvRadarChart, _sfc_main$a as JsvRipple, JsvRippleShape, JsvScaleTextBox, _sfc_main$8 as JsvSector, JsvSoundPool, _JsvSpray$1 as JsvSpray, JsvSpriteAnim, _sfc_main$q as JsvSpriteLoader, JsvStyleClass, JsvStyleSheetsDeclarer, JsvSwiper, _sfc_main$n as JsvSwiper3D, _sfc_main$c as JsvTextBox, JsvTextStyleClass, _JsvTextureAnim$1 as JsvTextureAnim, sJsvTextureConst as JsvTextureConst, sTextureStoreApi as JsvTextureStoreApi, JsvNativeSharedDiv as JsvTransparentDiv, JsvVisibleSensor, LineType, _sfc_main$D as ListWidget, LoopType, METRO_WIDGET, METRO_WIDGET as METRO_WIDGET_CONST, _sfc_main$E as MetroWidget, PageType, RENDER_ITEM_BREAK_KEY, Dispatcher as SWidgetDispatcher, SeamlessSlide, _sfc_main$E as SimpleWidget, SlideSetting, SlideStyle, SpriteController, TexAlignAnchor, TextTools, VERTICAL, WholePageSlide, buildDownloadInfo, buildPreloadInfo, combinedStyles, createImpactAutoFroze, createImpactCallback, createImpactTracer, disableNativeViewListener, enableNativeViewListener, getCssStyleGroup, getJsvPlayerCapabilitySet, getJsvPlayerRunningNum, getKeyFramesGroup, getMeasureObj, getPositionRelativeToView, getTextWidth, globalLoadJsvAudioPlugin, globalLoadJsvLatexPlugin, globalLoadJsvPlayerPlugin, globalLoadSetOperator, globalPreLoadJsvPlayerPlugin, bridge as jJsvRuntimeBridge, jsvCreateFocusManager, jsvCreateHashHistory, numberCheckSet, setJsvPlayerDebugMode, toHtmlBorderSet, toNinePatchForgeViewSet, updateImpactAutoFroze, urlCheckSet, useFocusHub };
21544
+ export { BaseDispatcher, DECORATE_BORDER_RADIUS, DECORATE_NINEPATCH_ALPHA_MIX, DebugObjectRefer, DebugTools, DebugWrap81ErrorStack, DebugWrap81WarnStack, DefaultKeyCodeMap, EdgeDirection, FixPositionSlide, FocusMoveType, FreeMoveDef, FreeMoveFunc, HORIZONTAL, InputType, instance as JSBridge, JsvAccount, _sfc_main$D as JsvActorMove, JsvActorMoveControl, _JsvApic$1 as JsvApic, _JsvApic2$1 as JsvApic2, _JsvAudio as JsvAudio, _sfc_main$7 as JsvConnectLine, _sfc_main$4 as JsvEnableRenderBreak, _sfc_main$B as JsvEnvBlocker, _sfc_main$m as JsvFilterView, _sfc_main$A as JsvFlexDiv, _sfc_main$E as JsvFocusBlock, _sfc_main$C as JsvFreeMoveActor, JsvGrid, JsvNativeSharedDiv as JsvHole, JsvInput, _JsvLatex as JsvLatex, JsvLine, _sfc_main$j as JsvMarquee, JsvMaskClipDiv, _sfc_main$3 as JsvMindMap, JsvNativeSharedDiv, _sfc_main$h as JsvNinePatch, JsvPerformance, _sfc_main$8 as JsvPieChart, _JsvPlayer as JsvPlayer, _sfc_main$g as JsvPosterDiv, _sfc_main$f as JsvPosterImage, exportObj as JsvPreDownloader, JsvPreload, _sfc_main$6 as JsvProgressBar, _JsvQrcode$1 as JsvQrcode, _sfc_main$c as JsvRadarChart, _sfc_main$b as JsvRipple, JsvRippleShape, JsvScaleTextBox, _sfc_main$5 as JsvSceneTransition, _sfc_main$9 as JsvSector, JsvSoundPool, _JsvSpray$1 as JsvSpray, JsvSpriteAnim, _sfc_main$r as JsvSpriteLoader, JsvStyleClass, JsvStyleSheetsDeclarer, JsvSwiper, _sfc_main$o as JsvSwiper3D, _sfc_main$d as JsvTextBox, JsvTextStyleClass, _JsvTextureAnim$1 as JsvTextureAnim, sJsvTextureConst as JsvTextureConst, sTextureStoreApi as JsvTextureStoreApi, JsvNativeSharedDiv as JsvTransparentDiv, JsvVisibleSensor, LineType, _sfc_main$F as ListWidget, LoopType, METRO_WIDGET, METRO_WIDGET as METRO_WIDGET_CONST, _sfc_main$G as MetroWidget, PageType, RENDER_ITEM_BREAK_KEY, Dispatcher as SWidgetDispatcher, SeamlessSlide, _sfc_main$G as SimpleWidget, SlideSetting, SlideStyle, SpriteController, TexAlignAnchor, TextTools, TextureInstantType, VERTICAL, WholePageSlide, buildDownloadInfo, buildPreloadInfo, combinedStyles, createImpactAutoFroze, createImpactCallback, createImpactTracer, disableNativeViewListener, enableNativeViewListener, getCssStyleGroup, getJsvPlayerCapabilitySet, getJsvPlayerRunningNum, getKeyFramesGroup, getMeasureObj, getPositionRelativeToView, getTextWidth, globalLoadJsvAudioPlugin, globalLoadJsvLatexPlugin, globalLoadJsvPlayerPlugin, globalLoadSetOperator, globalPreLoadJsvPlayerPlugin, bridge as jJsvRuntimeBridge, jsvCreateFocusManager, jsvCreateHashHistory, numberCheckSet, setJsvPlayerDebugMode, toHtmlBorderSet, toNinePatchForgeViewSet, updateImpactAutoFroze, urlCheckSet, useFocusHub };