@shijiu/jsview-vue 0.9.684 → 0.9.783

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 (154) hide show
  1. package/dom/bin/jsview-browser-debug-dom.min.js +1 -1
  2. package/dom/bin/jsview-dom.min.js +1 -1
  3. package/dom/bin/jsview-engine-js-browser.min.js +1 -1
  4. package/dom/bin/jsview-forge-define.min.js +1 -1
  5. package/dom/jsv-engine-js-browser.js +6 -0
  6. package/dom/target_core_revision.js +4 -4
  7. package/loader/loader.js +4 -0
  8. package/package.json +1 -1
  9. package/patches/node_modules/@vue/cli-service/lib/config/base.js +1 -1
  10. package/samples/AnimPicture/App.vue +5 -5
  11. package/samples/Basic/components/div/DivLayout.vue +1 -1
  12. package/samples/Basic/components/img/ImageGroup.vue +2 -2
  13. package/samples/Basic/components/img/ImgLayout.vue +79 -15
  14. package/samples/Basic/components/text/TextDirection.vue +104 -0
  15. package/samples/Basic/components/text/TextEmoji.vue +1 -1
  16. package/samples/Basic/components/text/TextGroup1.vue +1 -1
  17. package/samples/Basic/components/text/TextGroup2.vue +11 -1
  18. package/samples/BasicFocusControl/components/BaseBlock.vue +2 -2
  19. package/samples/Collision/App.vue +11 -11
  20. package/samples/DemoHomepage/App.vue +67 -8
  21. package/samples/DemoHomepage/components/TabFrame.vue +7 -0
  22. package/samples/DemoHomepage/router.js +27 -26
  23. package/samples/DemoHomepage/views/Homepage.vue +89 -98
  24. package/samples/FilterDemo/App.vue +1 -1
  25. package/samples/FlipCard/App.vue +2 -2
  26. package/samples/FlipCard/FlipCard.vue +3 -3
  27. package/samples/FocusBlockDemos/AutoFocus/App.vue +51 -0
  28. package/samples/FocusBlockDemos/AutoFocus/BaseBlock.vue +82 -0
  29. package/samples/FocusBlockDemos/AutoFocus/DialogBlock.vue +89 -0
  30. package/samples/FocusBlockDemos/AutoFocus/DialogContorls.js +42 -0
  31. package/samples/FocusBlockDemos/AutoFocus/FocusNamesDefine.js +9 -0
  32. package/samples/FocusBlockDemos/AutoFocus/PlaneBlock.vue +71 -0
  33. package/samples/FocusBlockDemos/ProgressiveFocusControl/App.vue +78 -0
  34. package/samples/FocusBlockDemos/ProgressiveFocusControl/BaseBlock.vue +77 -0
  35. package/samples/FocusBlockDemos/ProgressiveFocusControl/DownPlaneBlock.vue +83 -0
  36. package/samples/FocusBlockDemos/ProgressiveFocusControl/FocusNamesDefine.js +12 -0
  37. package/samples/FocusBlockDemos/ProgressiveFocusControl/UpPlaneBlock.vue +83 -0
  38. package/samples/GridDemo/App.vue +3 -3
  39. package/samples/GridDemo/ButtonBlock.vue +2 -2
  40. package/samples/GridDemo/FocusItem.vue +2 -2
  41. package/samples/GridDemo/Item.vue +1 -1
  42. package/samples/HashHistory/App.vue +10 -3
  43. package/samples/HashHistory/components/Item.vue +1 -1
  44. package/samples/ImpactStop/App.vue +15 -11
  45. package/samples/Input/InputPanel.vue +1 -1
  46. package/samples/LongImage/Button.vue +1 -1
  47. package/samples/LongImage/ButtonItem.vue +1 -1
  48. package/samples/LongImage/LongImageScroll.vue +2 -2
  49. package/samples/LongText/App.vue +1 -1
  50. package/samples/LongText/Button.vue +1 -1
  51. package/samples/LongText/ButtonItem.vue +1 -1
  52. package/samples/LongText/LongTextScroll.vue +3 -3
  53. package/samples/Marquee/App.vue +34 -3
  54. package/samples/Marquee/longText.js +2 -2
  55. package/samples/MetroWidgetDemos/PerformanceTest/App.vue +4 -4
  56. package/samples/MetroWidgetDemos/PerformanceTest/components/ContentItem.vue +1 -1
  57. package/samples/MetroWidgetDemos/PerformanceTest/components/MyTab.vue +3 -3
  58. package/samples/MetroWidgetDemos/PingPong/App.vue +22 -11
  59. package/samples/MetroWidgetDemos/PingPong/AppPage.vue +5 -5
  60. package/samples/MetroWidgetDemos/{Item.vue → PingPong/Item.vue} +3 -21
  61. package/samples/MetroWidgetDemos/PingPong/TabItem.vue +1 -1
  62. package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +5 -5
  63. package/samples/MetroWidgetDemos/{WidgetItem.vue → PingPong/WidgetItem.vue} +8 -4
  64. package/samples/MetroWidgetDemos/basic/App.vue +162 -0
  65. package/samples/MetroWidgetDemos/basic/Item.vue +43 -0
  66. package/samples/MetroWidgetDemos/direction/App.vue +158 -0
  67. package/samples/MetroWidgetDemos/direction/Item.vue +45 -0
  68. package/samples/MetroWidgetDemos/focusableItemBasic/App.vue +67 -0
  69. package/samples/MetroWidgetDemos/{Advanced → focusableItemBasic}/ButtonItem.vue +17 -21
  70. package/samples/MetroWidgetDemos/focusableItemMetroWidget/App.vue +74 -0
  71. package/samples/MetroWidgetDemos/{Advanced/widgets → focusableItemMetroWidget}/Item.vue +13 -32
  72. package/samples/MetroWidgetDemos/{Advanced/widgets → focusableItemMetroWidget}/WidgetItem.vue +12 -12
  73. package/samples/MetroWidgetDemos/focusableItemMix/App.vue +88 -0
  74. package/samples/MetroWidgetDemos/focusableItemMix/ButtonItem.vue +86 -0
  75. package/samples/MetroWidgetDemos/focusableItemMix/Item.vue +43 -0
  76. package/samples/MetroWidgetDemos/index.js +6 -0
  77. package/samples/MetroWidgetDemos/layoutType/App.vue +180 -0
  78. package/samples/MetroWidgetDemos/layoutType/Item.vue +45 -0
  79. package/samples/MetroWidgetDemos/padding/App.vue +222 -0
  80. package/samples/MetroWidgetDemos/padding/Item.vue +64 -0
  81. package/samples/MetroWidgetDemos/routeList.js +64 -0
  82. package/samples/MetroWidgetDemos/slideSetting/App.vue +225 -0
  83. package/samples/MetroWidgetDemos/slideSetting/Item.vue +45 -0
  84. package/samples/NinePatchDemo/App.vue +78 -122
  85. package/samples/NinePatchDemo/Item.vue +29 -27
  86. package/samples/Preload/App.vue +1 -1
  87. package/samples/Preload/Item.vue +1 -1
  88. package/samples/QrcodeDemo/App.vue +1 -1
  89. package/samples/SoundPool/App.vue +3 -3
  90. package/samples/SpriteImage/App.vue +5 -0
  91. package/samples/Swiper/App.vue +148 -0
  92. package/samples/TextBox/App.vue +2 -1
  93. package/samples/TextureAnimation/App2.vue +1 -1
  94. package/samples/ThrowMoveDemo/LRParabolicDemo.vue +33 -47
  95. package/samples/TouchSample/MetroWidgetHorizontal.vue +1 -1
  96. package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
  97. package/samples/TransitPage/App.vue +1 -1
  98. package/samples/VideoDemo/App.vue +8 -8
  99. package/samples/VideoDemo/components/Button.vue +1 -1
  100. package/samples/VideoDemo/components/Controllor.vue +1 -1
  101. package/samples/VisibleSensorDemo/App.vue +3 -3
  102. package/scripts/jsview-run-android.js +5 -4
  103. package/utils/JsViewEngineWidget/JsvFocusBlock.vue +4 -4
  104. package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +79 -50
  105. package/utils/JsViewEngineWidget/TemplateParser.js +144 -147
  106. package/utils/JsViewEngineWidget/WidgetCommon.js +12 -3
  107. package/utils/JsViewPlugin/BrowserPluginLoader.js +4 -2
  108. package/utils/JsViewPlugin/JsvAudio/AudioProxy.js +302 -0
  109. package/utils/JsViewPlugin/JsvAudio/CheckType.js +68 -0
  110. package/utils/JsViewPlugin/JsvAudio/Events.js +17 -0
  111. package/utils/JsViewPlugin/JsvAudio/JsvAudio.vue +176 -0
  112. package/utils/JsViewPlugin/JsvAudio/JsvAudioBridgeProxy.js +40 -0
  113. package/utils/JsViewPlugin/JsvAudio/JsvAudioBrowser.vue +46 -0
  114. package/utils/JsViewPlugin/JsvAudio/PluginLoader.js +140 -0
  115. package/utils/JsViewPlugin/JsvAudio/index.js +26 -0
  116. package/utils/JsViewPlugin/JsvAudio/version.js +24 -0
  117. package/utils/JsViewPlugin/JsvPlayer/index.js +1 -1
  118. package/utils/JsViewPlugin/JsvPlayer/version.js +5 -5
  119. package/utils/JsViewVueTools/JsvHashHistory.js +34 -8
  120. package/utils/JsViewVueTools/JsvImpactTracer.js +2 -2
  121. package/utils/JsViewVueTools/JsvRuntimeBridge.js +46 -8
  122. package/utils/JsViewVueTools/JsvStyleClass.js +9 -0
  123. package/utils/{JsViewVueWidget/utils/text.js → JsViewVueTools/JsvTextTools.js} +24 -4
  124. package/utils/JsViewVueTools/TypeCheckAndSet.js +3 -3
  125. package/utils/JsViewVueTools/index.js +2 -1
  126. package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserTextureAnim.vue +5 -7
  127. package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +20 -22
  128. package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +4 -4
  129. package/utils/JsViewVueWidget/JsvGrid.vue +1 -9
  130. package/utils/JsViewVueWidget/JsvInput/Cursor.vue +1 -1
  131. package/utils/JsViewVueWidget/JsvMarquee.vue +91 -20
  132. package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +1 -1
  133. package/utils/JsViewVueWidget/JsvNinePatch.vue +63 -53
  134. package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +10 -5
  135. package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +2 -2
  136. package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +116 -80
  137. package/utils/JsViewVueWidget/JsvSwiper/index.js +3 -2
  138. package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +1 -1
  139. package/utils/JsViewVueWidget/JsvTextBox.vue +11 -31
  140. package/utils/JsViewVueWidget/JsvTouchContainer.vue +2 -2
  141. package/utils/JsViewVueWidget/JsvTransparentDiv.vue +1 -1
  142. package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +5 -5
  143. package/utils/JsViewVueWidget/index.js +8 -8
  144. package/samples/MetroWidgetDemos/Advanced/App.vue +0 -46
  145. package/samples/MetroWidgetDemos/Advanced/Buttons.vue +0 -70
  146. package/samples/MetroWidgetDemos/Advanced/Mixed.vue +0 -77
  147. package/samples/MetroWidgetDemos/Advanced/widgets/Widgets.vue +0 -116
  148. package/samples/MetroWidgetDemos/Advanced/widgets/focus1.png +0 -0
  149. package/samples/MetroWidgetDemos/Simple/AbsoluteTemplate.vue +0 -75
  150. package/samples/MetroWidgetDemos/Simple/App.vue +0 -45
  151. package/samples/MetroWidgetDemos/Simple/RelativeTemplate.vue +0 -111
  152. package/samples/MetroWidgetDemos/data.js +0 -205
  153. package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +0 -35
  154. package/utils/JsViewVueWidget/utils/index.js +0 -8
@@ -0,0 +1,77 @@
1
+ <script setup>
2
+ import { shallowRef } from "vue";
3
+ import { DefaultKeyCodeMap } from "jsview"
4
+
5
+ const props = defineProps({
6
+ name: String,
7
+ style: {
8
+ type: Object,
9
+ default: {},
10
+ },
11
+ onLeftRight: Function,
12
+ });
13
+
14
+ const hasFocused = shallowRef(false);
15
+
16
+ const onFocusFunc = () => {
17
+ console.log(`子节点 ${props.name} 获得焦点`);
18
+ hasFocused.value = true;
19
+ };
20
+
21
+ const onBlurFunc = () => {
22
+ console.log(`子节点 ${props.name} 失去焦点`);
23
+ hasFocused.value = false;
24
+ };
25
+
26
+ const onDispatchKeyDownFunc = (ev)=>{
27
+ console.log(`子节点 ${props.name} 收到下发按键 code=${ev.keyCode}`);
28
+ return false;
29
+ }
30
+
31
+ const onKeyDownFunc = (ev)=>{
32
+ console.log(`子节点 ${props.name} 收到回流按键 code=${ev.keyCode}`);
33
+
34
+ // 将按键转化为left/right指令
35
+ let keyConsumed = true;
36
+ switch(ev.keyCode) {
37
+ case DefaultKeyCodeMap.Left:
38
+ props.onLeftRight?.("left");
39
+ break;
40
+ case DefaultKeyCodeMap.Right:
41
+ props.onLeftRight?.("right");
42
+ break;
43
+ default:
44
+ keyConsumed = false;
45
+ }
46
+
47
+ if (keyConsumed) {
48
+ console.log(`子节点 ${props.name} 截断按键回流处理`)
49
+ }
50
+ return keyConsumed;
51
+ }
52
+
53
+ </script>
54
+
55
+ <template>
56
+ <jsv-focus-block
57
+ :name="name"
58
+ :onAction="{
59
+ onDispatchKeyDown: onDispatchKeyDownFunc,
60
+ onKeyDown: onKeyDownFunc,
61
+ onFocus: onFocusFunc,
62
+ onBlur: onBlurFunc,
63
+ }"
64
+ >
65
+ <div
66
+ :style="{
67
+ ...props.style,
68
+ width: 100,
69
+ height: 100,
70
+ fontSize: 35,
71
+ backgroundColor: hasFocused ? 'rgba(255,0,0,1)' : 'rgba(0,255,0,1)',
72
+ }"
73
+ >
74
+ {{ props.name }}
75
+ </div>
76
+ </jsv-focus-block>
77
+ </template>
@@ -0,0 +1,83 @@
1
+ <script setup>
2
+ import { inject } from "vue"
3
+ import { useFocusHub } from "jsview"
4
+ import BaseBlock from "./BaseBlock.vue";
5
+ import FocusNames from "./FocusNamesDefine"
6
+
7
+ const props = defineProps({
8
+ style: {
9
+ type: Object,
10
+ default: {},
11
+ },
12
+ });
13
+
14
+ let focusHub = useFocusHub();
15
+ let ChildBlockNames = [FocusNames.Box1, FocusNames.Box2, FocusNames.Box3];
16
+ let globalColumn = inject("globalColumn"); // 从App获取的全局coloumn信息
17
+ let lastIndex = 0;
18
+ let planeName = FocusNames.DownPlane;
19
+
20
+ const onFocusFunc = () => {
21
+ console.log(`父节点 ${planeName} 获得焦点`);
22
+
23
+ // 让子焦点获焦
24
+ lastIndex = globalColumn.index; // 同步全局节点信息
25
+ focusHub.setFocus(ChildBlockNames[lastIndex]);
26
+ };
27
+
28
+ const onBlurFunc = () => {
29
+ console.log(`父节点 ${planeName} 失去焦点`);
30
+ };
31
+
32
+ const onDispatchKeyDownFunc = (ev)=>{
33
+ console.log(`父节点 ${planeName} 收到下发按键 code=${ev.keyCode}`);
34
+ return false;
35
+ }
36
+
37
+ const onKeyDownFunc = (ev)=>{
38
+ console.log(`父节点 ${planeName} 收到回流按键 code=${ev.keyCode}`);
39
+ return false;
40
+ }
41
+
42
+ const leftRightFunc = (action)=>{
43
+ let indexChanged = false;
44
+
45
+ if (action == "left") {
46
+ if (lastIndex >= 0) {
47
+ lastIndex--;
48
+ indexChanged = true;
49
+ console.log(`父节点 ${planeName} 收到left指令 切换子节点到${ChildBlockNames[lastIndex]}`);
50
+ focusHub.setFocus(ChildBlockNames[lastIndex]);
51
+ }
52
+ } else if (action = "right") {
53
+ if (lastIndex < ChildBlockNames.length - 1) {
54
+ lastIndex++;
55
+ indexChanged = true;
56
+ console.log(`父节点 ${planeName} 收到left指令 切换子节点到${ChildBlockNames[lastIndex]}`);
57
+ focusHub.setFocus(ChildBlockNames[lastIndex]);
58
+ }
59
+ }
60
+
61
+ if (indexChanged) {
62
+ // 回传lastIndex columen, 以方便Plane切换后保持column
63
+ globalColumn.index = lastIndex;
64
+ }
65
+ }
66
+ </script>
67
+
68
+ <template>
69
+ <jsv-focus-block
70
+ :name="planeName"
71
+ :onAction="{
72
+ onDispatchKeyDown: onDispatchKeyDownFunc,
73
+ onKeyDown: onKeyDownFunc,
74
+ onFocus: onFocusFunc,
75
+ onBlur: onBlurFunc,
76
+ }"
77
+ :style="props.style"
78
+ >
79
+ <base-block :name="ChildBlockNames[0]" :style="{left:150 * 1}" :onLeftRight="leftRightFunc" />
80
+ <base-block :name="ChildBlockNames[1]" :style="{left:150 * 2}" :onLeftRight="leftRightFunc" />
81
+ <base-block :name="ChildBlockNames[2]" :style="{left:150 * 3}" :onLeftRight="leftRightFunc" />
82
+ </jsv-focus-block>
83
+ </template>
@@ -0,0 +1,12 @@
1
+ const FocusNames = {
2
+ UpPlane: "UpPlane",
3
+ DownPlane: "DownPlane",
4
+ BoxA: "A",
5
+ BoxB: "B",
6
+ BoxC: "C",
7
+ Box1: "1",
8
+ Box2: "2",
9
+ Box3: "3",
10
+ }
11
+
12
+ export default FocusNames;
@@ -0,0 +1,83 @@
1
+ <script setup>
2
+ import { inject } from "vue"
3
+ import { useFocusHub } from "jsview"
4
+ import BaseBlock from "./BaseBlock.vue";
5
+ import FocusNames from "./FocusNamesDefine"
6
+
7
+ const props = defineProps({
8
+ style: {
9
+ type: Object,
10
+ default: {},
11
+ },
12
+ });
13
+
14
+ let focusHub = useFocusHub();
15
+ let ChildBlockNames = [FocusNames.BoxA, FocusNames.BoxB, FocusNames.BoxC];
16
+ let globalColumn = inject("globalColumn"); // 从App获取的全局coloumn信息
17
+ let lastIndex = 0;
18
+ let planeName = FocusNames.UpPlane;
19
+
20
+ const onFocusFunc = () => {
21
+ console.log(`父节点 ${planeName} 获得焦点`);
22
+
23
+ // 让子焦点获焦
24
+ lastIndex = globalColumn.index; // 同步全局节点信息
25
+ focusHub.setFocus(ChildBlockNames[lastIndex]);
26
+ };
27
+
28
+ const onBlurFunc = () => {
29
+ console.log(`父节点 ${planeName} 失去焦点`);
30
+ };
31
+
32
+ const onDispatchKeyDownFunc = (ev)=>{
33
+ console.log(`父节点 ${planeName} 收到下发按键 code=${ev.keyCode}`);
34
+ return false;
35
+ }
36
+
37
+ const onKeyDownFunc = (ev)=>{
38
+ console.log(`父节点 ${planeName} 收到回流按键 code=${ev.keyCode}`);
39
+ return false;
40
+ }
41
+
42
+ const leftRightFunc = (action)=>{
43
+ let indexChanged = false;
44
+
45
+ if (action == "left") {
46
+ if (lastIndex >= 0) {
47
+ lastIndex--;
48
+ indexChanged = true;
49
+ console.log(`父节点 ${planeName} 收到left指令 切换子节点到${ChildBlockNames[lastIndex]}`);
50
+ focusHub.setFocus(ChildBlockNames[lastIndex]);
51
+ }
52
+ } else if (action = "right") {
53
+ if (lastIndex < ChildBlockNames.length - 1) {
54
+ lastIndex++;
55
+ indexChanged = true;
56
+ console.log(`父节点 ${planeName} 收到left指令 切换子节点到${ChildBlockNames[lastIndex]}`);
57
+ focusHub.setFocus(ChildBlockNames[lastIndex]);
58
+ }
59
+ }
60
+
61
+ if (indexChanged) {
62
+ // 回传lastIndex columen, 以方便Plane切换后保持column
63
+ globalColumn.index = lastIndex;
64
+ }
65
+ }
66
+ </script>
67
+
68
+ <template>
69
+ <jsv-focus-block
70
+ :name="planeName"
71
+ :onAction="{
72
+ onDispatchKeyDown: onDispatchKeyDownFunc,
73
+ onKeyDown: onKeyDownFunc,
74
+ onFocus: onFocusFunc,
75
+ onBlur: onBlurFunc,
76
+ }"
77
+ :style="props.style"
78
+ >
79
+ <base-block :name="ChildBlockNames[0]" :style="{left:150 * 1}" :onLeftRight="leftRightFunc" />
80
+ <base-block :name="ChildBlockNames[1]" :style="{left:150 * 2}" :onLeftRight="leftRightFunc" />
81
+ <base-block :name="ChildBlockNames[2]" :style="{left:150 * 3}" :onLeftRight="leftRightFunc" />
82
+ </jsv-focus-block>
83
+ </template>
@@ -7,15 +7,15 @@
7
7
  -->
8
8
  <script setup>
9
9
  import { jJsvRuntimeBridge, JsvGrid, LineType, EdgeDirection } from "jsview";
10
- import { reactive, ref, onMounted } from "vue";
10
+ import { reactive, ref, shallowRef, onMounted } from "vue";
11
11
  import { useRouter } from "vue-router";
12
12
  import ItemVue from "./Item.vue";
13
13
  import FocusItem from "./FocusItem.vue";
14
14
  const lineType = new LineType(1, 3);
15
15
  const name1 = "updatePage1";
16
16
  const name2 = "updatePage2";
17
- const widget1 = ref(null);
18
- const widget2 = ref(null);
17
+ const widget1 = shallowRef(null);
18
+ const widget2 = shallowRef(null);
19
19
  const router = useRouter();
20
20
  const _provideData1 = () => {
21
21
  let data = [];
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
9
- import { ref } from "vue";
9
+ import { ref, shallowRef } from "vue";
10
10
  const props = defineProps({
11
11
  userData: Object,
12
12
  name: String,
@@ -15,7 +15,7 @@ const props = defineProps({
15
15
  let focusIndex = ref(0);
16
16
  let focused = ref(false);
17
17
  let divNumber = new Array(25);
18
- let focusBlock = ref(null);
18
+ let focusBlock = shallowRef(null);
19
19
 
20
20
  const _onFocus = () => {
21
21
  console.log("button onfocus", props.userData);
@@ -7,7 +7,7 @@
7
7
  -->
8
8
  <script setup>
9
9
  import ButtonBlock from "./ButtonBlock.vue";
10
- import { ref } from "vue";
10
+ import { ref, shallowRef } from "vue";
11
11
 
12
12
  const props = defineProps({
13
13
  userData: Object,
@@ -16,7 +16,7 @@ const props = defineProps({
16
16
  });
17
17
  const focused = ref(false);
18
18
  const divNumber = new Array(50);
19
- const button = ref(null);
19
+ const button = shallowRef(null);
20
20
  const onFocus = () => {
21
21
  button.value
22
22
  .getFocusBlock()
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
9
- import { ref, onUpdated, onMounted } from "vue";
9
+ import { ref, shallowRef, onUpdated, onMounted } from "vue";
10
10
 
11
11
  const props = defineProps({
12
12
  userData: Object,
@@ -1,16 +1,23 @@
1
+ <script>
2
+ import { router, routeList } from "./router.js";
3
+ export default {
4
+ Router: router,
5
+ };
6
+ </script>
7
+
1
8
  <script setup>
2
9
  import { jJsvRuntimeBridge } from "jsview";
3
10
  import { router, routeList } from "./router.js";
4
11
  import { useRouter, useRoute } from "vue-router";
5
- import { onMounted, ref } from "vue";
12
+ import { onMounted, ref, shallowRef } from "vue";
6
13
 
7
14
  const props = defineProps({
8
15
  routePath: String,
9
16
  });
10
17
 
11
18
  const displayUrl = ref("");
12
- let topRef = ref(null);
13
- let routePage = ref(null);
19
+ let topRef = shallowRef(null);
20
+ let routePage = shallowRef(null);
14
21
  let currentRouter;
15
22
  if (props.routePath) {
16
23
  const currentRoute = useRoute();
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { ref } from "vue";
2
+ import { ref, shallowRef } from "vue";
3
3
  const props = defineProps({
4
4
  style: Object,
5
5
  name: String,
@@ -6,6 +6,7 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
9
+ import { jJsvRuntimeBridge } from "@shijiu/jsview-vue/utils/JsViewVueTools/JsvRuntimeBridge";
9
10
  import {
10
11
  JsvActorMoveControl,
11
12
  JsvActorMove,
@@ -13,7 +14,7 @@ import {
13
14
  createImpactCallback,
14
15
  createImpactAutoFroze,
15
16
  } from "jsview";
16
- import { ref, computed, onMounted, onBeforeUnmount } from "vue";
17
+ import { ref, shallowRef, computed, onMounted, onBeforeUnmount } from "vue";
17
18
  import { useRouter } from "vue-router";
18
19
  const router = useRouter();
19
20
  const CONST_BOARD_LEFT = 0;
@@ -25,12 +26,13 @@ const CONST_BOX_HEIGHT = 30;
25
26
 
26
27
  const horizontalControl = new JsvActorMoveControl();
27
28
  const verticalControl = new JsvActorMoveControl();
28
- const boxLeft = ref(null);
29
- const boxMid = ref(null);
30
- const boxRight = ref(null);
31
- const actorVertical = { current: null };
32
- const actorHorizontal = { current: null };
33
- const actor = ref(null);
29
+ const boxLeft = shallowRef(null);
30
+ const boxMid = shallowRef(null);
31
+ const boxRight = shallowRef(null);
32
+ const actor = shallowRef(null);
33
+
34
+ let actorVertical = shallowRef(null);
35
+ let actorHorizontal = shallowRef(null);
34
36
 
35
37
  let viewsAutoFroze = null;
36
38
  let sensorList = [];
@@ -195,7 +197,7 @@ onMounted(() => {
195
197
 
196
198
  /* 将碰撞发生后要停止动画的元素打包 */
197
199
  viewsAutoFroze = createImpactAutoFroze(
198
- [actorVertical.current, actorHorizontal.current],
200
+ [actorVertical.value.mainDiv, actorHorizontal.value.mainDiv],
199
201
  null
200
202
  ); // 此句柄最好保留,未来可以通过此句柄统一进行views list更新
201
203
 
@@ -236,6 +238,8 @@ onMounted(() => {
236
238
  );
237
239
 
238
240
  reset();
241
+
242
+ jJsvRuntimeBridge.notifyPageLoaded();
239
243
  });
240
244
 
241
245
  onBeforeUnmount(() => {
@@ -379,12 +383,12 @@ onBeforeUnmount(() => {
379
383
  <div key="actor" :style="{ top: 520 - CONST_BOX_HEIGHT - 2, left: 40 }">
380
384
  <jsv-actor-move
381
385
  key="horizontal"
382
- :refDefine="actorHorizontal"
386
+ ref="actorHorizontal"
383
387
  :control="horizontalControl"
384
388
  >
385
389
  <jsv-actor-move
386
390
  key="vertical"
387
- :refDefine="actorVertical"
391
+ ref="actorVertical"
388
392
  :control="verticalControl"
389
393
  >
390
394
  <div
@@ -432,4 +436,4 @@ onBeforeUnmount(() => {
432
436
  text-overflow: ellipsis;
433
437
  text-align: center;
434
438
  }
435
- </style>
439
+ </style>
@@ -8,7 +8,7 @@
8
8
  <script>
9
9
  import FullKeyboard from "./FullKeyboard.vue";
10
10
  import { EdgeDirection, JsvInput, useFocusHub } from "jsview";
11
- import { ref } from "vue";
11
+ import { ref, shallowRef } from "vue";
12
12
 
13
13
  const blurColor = "#AAAAAA";
14
14
  const focusColor = "#FFFF00";
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
9
- import { ref } from "vue";
9
+ import { ref, shallowRef } from "vue";
10
10
  import { HORIZONTAL, MetroWidget, EdgeDirection, useFocusHub } from "jsview";
11
11
  import ButtonItem from "./ButtonItem.vue";
12
12
 
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
9
- import { ref } from "vue";
9
+ import { ref, shallowRef } from "vue";
10
10
 
11
11
  const props = defineProps({
12
12
  data: Object,
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import Scroll from "./Scroll.vue";
3
- import { ref, onMounted } from "vue";
3
+ import { ref, shallowRef, onMounted } from "vue";
4
4
  import { useFocusHub } from "jsview";
5
5
 
6
6
  const props = defineProps({
@@ -12,7 +12,7 @@ const props = defineProps({
12
12
  });
13
13
 
14
14
  const focusHub = useFocusHub();
15
- const element = ref(null);
15
+ const element = shallowRef(null);
16
16
  const scrollY = ref(0);
17
17
  const textY = ref(0);
18
18
  const onAction = {
@@ -27,7 +27,7 @@
27
27
  import LongTextScroll from "./LongTextScroll.vue";
28
28
  import Button from "./Button.vue";
29
29
  import { jJsvRuntimeBridge } from "jsview";
30
- import { onMounted, ref } from "vue";
30
+ import { onMounted, ref, shallowRef } from "vue";
31
31
  import { useRouter } from "vue-router";
32
32
 
33
33
  const router = useRouter();
@@ -1,5 +1,5 @@
1
1
  <script setup>
2
- import { ref } from "vue";
2
+ import { ref, shallowRef } from "vue";
3
3
  import { HORIZONTAL, MetroWidget, EdgeDirection, useFocusHub } from "jsview";
4
4
  import ButtonItem from "./ButtonItem.vue";
5
5
 
@@ -6,7 +6,7 @@
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
9
- import { ref } from "vue";
9
+ import { ref, shallowRef } from "vue";
10
10
 
11
11
  const props = defineProps({
12
12
  data: Object,
@@ -1,6 +1,6 @@
1
1
  <script setup>
2
2
  import Scroll from "./Scroll.vue";
3
- import { ref, onMounted } from "vue";
3
+ import { ref, shallowRef, onMounted } from "vue";
4
4
 
5
5
  const props = defineProps({
6
6
  step: Number,
@@ -10,8 +10,8 @@ const props = defineProps({
10
10
  textStyle: Object,
11
11
  });
12
12
 
13
- const rootRef = ref(null);
14
- const element = ref(null);
13
+ const rootRef = shallowRef(null);
14
+ const element = shallowRef(null);
15
15
  const scrollY = ref(0);
16
16
  const textY = ref(0);
17
17
 
@@ -1,8 +1,8 @@
1
1
  <!--
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2022-01-18 18:24:18
4
- * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-11-10 15:29:12
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2023-03-09 13:43:43
6
6
  * @Description: file content
7
7
  -->
8
8
  <script setup>
@@ -168,7 +168,6 @@ onMounted(() => {
168
168
  lineHeight: 70,
169
169
  fontSize: 50,
170
170
  color: '#000000',
171
- direction: 'rtl',
172
171
  }"
173
172
  text="انجليزي"
174
173
  :slideSpeed="slideSpeed"
@@ -243,5 +242,37 @@ onMounted(() => {
243
242
  超长rtl文字
244
243
  </div>
245
244
  </div>
245
+ <div
246
+ :style="{
247
+ left: 50,
248
+ top: 610,
249
+ width: width,
250
+ height: height,
251
+ backgroundColor: '#FFFFFF',
252
+ }"
253
+ >
254
+ <jsv-marquee
255
+ :style="{
256
+ width,
257
+ height,
258
+ lineHeight: 70,
259
+ fontSize: 50,
260
+ color: '#000000',
261
+ }"
262
+ text="测试文字"
263
+ :forceSlide="true"
264
+ :slideSpeed="slideSpeed"
265
+ slideDirection="ets"
266
+ />
267
+ <div :style="{
268
+ left: width + 20,
269
+ height: height,
270
+ color: '#ffffff',
271
+ fontSize: 50,
272
+ lineHeight: 50,
273
+ }">
274
+ 反向滚动示例
275
+ </div>
276
+ </div>
246
277
  </jsv-focus-block>
247
278
  </template>
@@ -2,13 +2,13 @@
2
2
  * @Author: ChenChanghua
3
3
  * @Date: 2022-11-10 15:08:28
4
4
  * @LastEditors: ChenChanghua
5
- * @LastEditTime: 2022-11-10 15:21:11
5
+ * @LastEditTime: 2022-11-21 17:47:57
6
6
  * @Description: file content
7
7
  */
8
8
  const longLongText =
9
9
  "艾因小萌班用户服务协议及隐私权保护政策特别提示:欢迎您使用“艾因小萌班”。本用户服务协议及隐私权保护政策(下称“本协议”)是您与运营方之间订立的具有法律效力的合同。请您仔细阅读并充分理解本协议各条款内容,特别是涉及免除或者限制责任的条款、权利许可和信息使用的条款、同意开通和使用特殊单项服务的条款、法律适用和争议解决条款等。其中,免除或者限制责任条款等重要内容可能以下划线/加粗进行提示您,您应重点阅读。未成年人用户请在法定监护人陪同下仔细阅读并充分理解本协议,并征得法定监护人的同意后使用“艾因小萌班”。除非您完全接受本协议的全部内容,否则您无权下载、注册、登录、使用(以下统称“使用”)“艾因小萌班”,或者通过任何方式使用“艾因小萌班”服务,或者获得“艾因小萌班”提供的任何服务(本协议中统称“使用”)。若您使用“艾因小萌班”及相关服务,则视为您已充分理解本协议并承诺作为本协议的一方当事人接受协议的约束,您不得以未仔细阅读、未充分理解等理由拒绝接受本协议的约束。本协议内容或不能保证完全符合未来业务发展需求。为此,您同意运营方保留随时修改本协议的权利。本协议条款修改后,运营方将及时公布,您同意予以密切关注。如果您继续使用艾因小萌班,即视为您完全接受修改后的协议。如果您不接受修改后的协议,请立即停止使用艾因小萌班。关于艾因小萌班的使用您使用“艾因小萌班”及相关服务,登录后,系统将为您自动匹配一个不可更改的用户ID,您应妥善保管该用户ID并对以您用户ID所进行的所有活动负法律责任。";
10
10
 
11
11
  const rtlLongLongText =
12
- "مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم مرحبا بالعالم ";
12
+ "نحن لا نضع أي فرضيات مسبقة عن التكنولوجيا الأخرى التي تستخدمها، فلهذا يمكنك تطوير ميزات و إضافات باستخدام دون الحاجة الى إعادة كتابة أي شيفرة مكتوبة سابقاً الواجهات المُعرّفة (التصريحية)، تجعل الشيفرة الخاصة بالبرنامج سهلة التوقع عند تنفيذها و سهلة التصحيح في حالة وجود أخطاء للغاية، يجب عليك سوى أن تصمم واجهة بسيطة لكل حالة من حالات التطبيق و بعدها React يتكفل وبفاعلية بتحديث و إعادة رسم المكّون المعني بالتحديث فقط عند تغيُّر البيانات تُدير حالتها الخاصّة، ومن ثمّ تُركِّب هذه المكوّنات مع بعضها لإنشاء واجهات مستخدم مُعقّدة نحن لا نضع أي فرضيات مسبقة عن التكنولوجيا الأخرى التي تستخدمها، فلهذا يمكنك تطوير ميزات و إضافات باستخدام";
13
13
 
14
14
  export { longLongText, rtlLongLongText };
@@ -76,7 +76,7 @@ import { data1, data2, data3 } from "./data";
76
76
  import borderImgPath from "./border.png";
77
77
  import Item from "./components/ContentItem.vue";
78
78
  import MyTab from "./components/MyTab.vue";
79
- import { ref, onMounted, onBeforeUnmount } from "vue";
79
+ import { ref, shallowRef, onMounted, onBeforeUnmount } from "vue";
80
80
  import { useRouter } from "vue-router";
81
81
  import {
82
82
  VERTICAL,
@@ -90,7 +90,7 @@ const router = useRouter();
90
90
  const focusHub = useFocusHub();
91
91
  let contentData = data1;
92
92
  let requestDataTime = 0;
93
- const mwRef = ref(null);
93
+ const mwRef = shallowRef(null);
94
94
 
95
95
  const onKeyDown = (ev) => {
96
96
  // 8:Backspace, 27:Escape, 10000:盒子返回键
@@ -127,7 +127,7 @@ const onItemFocus = (id) => {
127
127
  clearTimeout(requestDataTime);
128
128
  requestDataTime = 0;
129
129
  }
130
- requestDataTime = setTimeout(() => {
130
+ // requestDataTime = setTimeout(() => {
131
131
  switch (id) {
132
132
  case 0:
133
133
  contentData = data1;
@@ -140,7 +140,7 @@ const onItemFocus = (id) => {
140
140
  break;
141
141
  }
142
142
  mwRef.value?.refreshData(true);
143
- }, 0);
143
+ // }, 0);
144
144
  };
145
145
 
146
146
  onBeforeUnmount(() => {
@@ -13,7 +13,7 @@ import couponMid from "../assets/coupon_mid.png";
13
13
  import borderLeft from "../assets/line_left.png";
14
14
  import borderMid from "../assets/line_mid.png";
15
15
  import borderRight from "../assets/line_right.png";
16
- import { ref, computed } from "vue";
16
+ import { ref, shallowRef, computed } from "vue";
17
17
 
18
18
  const props = defineProps({
19
19
  data: Object,