@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.
- package/dom/bin/jsview-browser-debug-dom.min.js +1 -1
- package/dom/bin/jsview-dom.min.js +1 -1
- package/dom/bin/jsview-engine-js-browser.min.js +1 -1
- package/dom/bin/jsview-forge-define.min.js +1 -1
- package/dom/jsv-engine-js-browser.js +6 -0
- package/dom/target_core_revision.js +4 -4
- package/loader/loader.js +4 -0
- package/package.json +1 -1
- package/patches/node_modules/@vue/cli-service/lib/config/base.js +1 -1
- package/samples/AnimPicture/App.vue +5 -5
- package/samples/Basic/components/div/DivLayout.vue +1 -1
- package/samples/Basic/components/img/ImageGroup.vue +2 -2
- package/samples/Basic/components/img/ImgLayout.vue +79 -15
- package/samples/Basic/components/text/TextDirection.vue +104 -0
- package/samples/Basic/components/text/TextEmoji.vue +1 -1
- package/samples/Basic/components/text/TextGroup1.vue +1 -1
- package/samples/Basic/components/text/TextGroup2.vue +11 -1
- package/samples/BasicFocusControl/components/BaseBlock.vue +2 -2
- package/samples/Collision/App.vue +11 -11
- package/samples/DemoHomepage/App.vue +67 -8
- package/samples/DemoHomepage/components/TabFrame.vue +7 -0
- package/samples/DemoHomepage/router.js +27 -26
- package/samples/DemoHomepage/views/Homepage.vue +89 -98
- package/samples/FilterDemo/App.vue +1 -1
- package/samples/FlipCard/App.vue +2 -2
- package/samples/FlipCard/FlipCard.vue +3 -3
- package/samples/FocusBlockDemos/AutoFocus/App.vue +51 -0
- package/samples/FocusBlockDemos/AutoFocus/BaseBlock.vue +82 -0
- package/samples/FocusBlockDemos/AutoFocus/DialogBlock.vue +89 -0
- package/samples/FocusBlockDemos/AutoFocus/DialogContorls.js +42 -0
- package/samples/FocusBlockDemos/AutoFocus/FocusNamesDefine.js +9 -0
- package/samples/FocusBlockDemos/AutoFocus/PlaneBlock.vue +71 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/App.vue +78 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/BaseBlock.vue +77 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/DownPlaneBlock.vue +83 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/FocusNamesDefine.js +12 -0
- package/samples/FocusBlockDemos/ProgressiveFocusControl/UpPlaneBlock.vue +83 -0
- package/samples/GridDemo/App.vue +3 -3
- package/samples/GridDemo/ButtonBlock.vue +2 -2
- package/samples/GridDemo/FocusItem.vue +2 -2
- package/samples/GridDemo/Item.vue +1 -1
- package/samples/HashHistory/App.vue +10 -3
- package/samples/HashHistory/components/Item.vue +1 -1
- package/samples/ImpactStop/App.vue +15 -11
- package/samples/Input/InputPanel.vue +1 -1
- package/samples/LongImage/Button.vue +1 -1
- package/samples/LongImage/ButtonItem.vue +1 -1
- package/samples/LongImage/LongImageScroll.vue +2 -2
- package/samples/LongText/App.vue +1 -1
- package/samples/LongText/Button.vue +1 -1
- package/samples/LongText/ButtonItem.vue +1 -1
- package/samples/LongText/LongTextScroll.vue +3 -3
- package/samples/Marquee/App.vue +34 -3
- package/samples/Marquee/longText.js +2 -2
- package/samples/MetroWidgetDemos/PerformanceTest/App.vue +4 -4
- package/samples/MetroWidgetDemos/PerformanceTest/components/ContentItem.vue +1 -1
- package/samples/MetroWidgetDemos/PerformanceTest/components/MyTab.vue +3 -3
- package/samples/MetroWidgetDemos/PingPong/App.vue +22 -11
- package/samples/MetroWidgetDemos/PingPong/AppPage.vue +5 -5
- package/samples/MetroWidgetDemos/{Item.vue → PingPong/Item.vue} +3 -21
- package/samples/MetroWidgetDemos/PingPong/TabItem.vue +1 -1
- package/samples/MetroWidgetDemos/PingPong/ViewSwiper.vue +5 -5
- package/samples/MetroWidgetDemos/{WidgetItem.vue → PingPong/WidgetItem.vue} +8 -4
- package/samples/MetroWidgetDemos/basic/App.vue +162 -0
- package/samples/MetroWidgetDemos/basic/Item.vue +43 -0
- package/samples/MetroWidgetDemos/direction/App.vue +158 -0
- package/samples/MetroWidgetDemos/direction/Item.vue +45 -0
- package/samples/MetroWidgetDemos/focusableItemBasic/App.vue +67 -0
- package/samples/MetroWidgetDemos/{Advanced → focusableItemBasic}/ButtonItem.vue +17 -21
- package/samples/MetroWidgetDemos/focusableItemMetroWidget/App.vue +74 -0
- package/samples/MetroWidgetDemos/{Advanced/widgets → focusableItemMetroWidget}/Item.vue +13 -32
- package/samples/MetroWidgetDemos/{Advanced/widgets → focusableItemMetroWidget}/WidgetItem.vue +12 -12
- package/samples/MetroWidgetDemos/focusableItemMix/App.vue +88 -0
- package/samples/MetroWidgetDemos/focusableItemMix/ButtonItem.vue +86 -0
- package/samples/MetroWidgetDemos/focusableItemMix/Item.vue +43 -0
- package/samples/MetroWidgetDemos/index.js +6 -0
- package/samples/MetroWidgetDemos/layoutType/App.vue +180 -0
- package/samples/MetroWidgetDemos/layoutType/Item.vue +45 -0
- package/samples/MetroWidgetDemos/padding/App.vue +222 -0
- package/samples/MetroWidgetDemos/padding/Item.vue +64 -0
- package/samples/MetroWidgetDemos/routeList.js +64 -0
- package/samples/MetroWidgetDemos/slideSetting/App.vue +225 -0
- package/samples/MetroWidgetDemos/slideSetting/Item.vue +45 -0
- package/samples/NinePatchDemo/App.vue +78 -122
- package/samples/NinePatchDemo/Item.vue +29 -27
- package/samples/Preload/App.vue +1 -1
- package/samples/Preload/Item.vue +1 -1
- package/samples/QrcodeDemo/App.vue +1 -1
- package/samples/SoundPool/App.vue +3 -3
- package/samples/SpriteImage/App.vue +5 -0
- package/samples/Swiper/App.vue +148 -0
- package/samples/TextBox/App.vue +2 -1
- package/samples/TextureAnimation/App2.vue +1 -1
- package/samples/ThrowMoveDemo/LRParabolicDemo.vue +33 -47
- package/samples/TouchSample/MetroWidgetHorizontal.vue +1 -1
- package/samples/TouchSample/MetroWidgetVertical.vue +1 -1
- package/samples/TransitPage/App.vue +1 -1
- package/samples/VideoDemo/App.vue +8 -8
- package/samples/VideoDemo/components/Button.vue +1 -1
- package/samples/VideoDemo/components/Controllor.vue +1 -1
- package/samples/VisibleSensorDemo/App.vue +3 -3
- package/scripts/jsview-run-android.js +5 -4
- package/utils/JsViewEngineWidget/JsvFocusBlock.vue +4 -4
- package/utils/JsViewEngineWidget/MetroWidget/MetroWidget.vue +79 -50
- package/utils/JsViewEngineWidget/TemplateParser.js +144 -147
- package/utils/JsViewEngineWidget/WidgetCommon.js +12 -3
- package/utils/JsViewPlugin/BrowserPluginLoader.js +4 -2
- package/utils/JsViewPlugin/JsvAudio/AudioProxy.js +302 -0
- package/utils/JsViewPlugin/JsvAudio/CheckType.js +68 -0
- package/utils/JsViewPlugin/JsvAudio/Events.js +17 -0
- package/utils/JsViewPlugin/JsvAudio/JsvAudio.vue +176 -0
- package/utils/JsViewPlugin/JsvAudio/JsvAudioBridgeProxy.js +40 -0
- package/utils/JsViewPlugin/JsvAudio/JsvAudioBrowser.vue +46 -0
- package/utils/JsViewPlugin/JsvAudio/PluginLoader.js +140 -0
- package/utils/JsViewPlugin/JsvAudio/index.js +26 -0
- package/utils/JsViewPlugin/JsvAudio/version.js +24 -0
- package/utils/JsViewPlugin/JsvPlayer/index.js +1 -1
- package/utils/JsViewPlugin/JsvPlayer/version.js +5 -5
- package/utils/JsViewVueTools/JsvHashHistory.js +34 -8
- package/utils/JsViewVueTools/JsvImpactTracer.js +2 -2
- package/utils/JsViewVueTools/JsvRuntimeBridge.js +46 -8
- package/utils/JsViewVueTools/JsvStyleClass.js +9 -0
- package/utils/{JsViewVueWidget/utils/text.js → JsViewVueTools/JsvTextTools.js} +24 -4
- package/utils/JsViewVueTools/TypeCheckAndSet.js +3 -3
- package/utils/JsViewVueTools/index.js +2 -1
- package/utils/JsViewVueWidget/BrowserDebugWidget/BrowserTextureAnim.vue +5 -7
- package/utils/JsViewVueWidget/JsvActorMove/JsvActorMove.vue +20 -22
- package/utils/JsViewVueWidget/JsvApic/JsvApic.vue +4 -4
- package/utils/JsViewVueWidget/JsvGrid.vue +1 -9
- package/utils/JsViewVueWidget/JsvInput/Cursor.vue +1 -1
- package/utils/JsViewVueWidget/JsvMarquee.vue +91 -20
- package/utils/JsViewVueWidget/JsvMaskClipDiv.vue +1 -1
- package/utils/JsViewVueWidget/JsvNinePatch.vue +63 -53
- package/utils/JsViewVueWidget/JsvSpray/JsvSpray.vue +10 -5
- package/utils/JsViewVueWidget/JsvSpriteAnim/JsvSpriteAnim.vue +2 -2
- package/utils/JsViewVueWidget/JsvSwiper/JsvSwiper.vue +116 -80
- package/utils/JsViewVueWidget/JsvSwiper/index.js +3 -2
- package/utils/JsViewVueWidget/JsvSwiper3D/JsvSwiper.vue +1 -1
- package/utils/JsViewVueWidget/JsvTextBox.vue +11 -31
- package/utils/JsViewVueWidget/JsvTouchContainer.vue +2 -2
- package/utils/JsViewVueWidget/JsvTransparentDiv.vue +1 -1
- package/utils/JsViewVueWidget/JsvVisibleSensor/JsvVisibleSensor.vue +5 -5
- package/utils/JsViewVueWidget/index.js +8 -8
- package/samples/MetroWidgetDemos/Advanced/App.vue +0 -46
- package/samples/MetroWidgetDemos/Advanced/Buttons.vue +0 -70
- package/samples/MetroWidgetDemos/Advanced/Mixed.vue +0 -77
- package/samples/MetroWidgetDemos/Advanced/widgets/Widgets.vue +0 -116
- package/samples/MetroWidgetDemos/Advanced/widgets/focus1.png +0 -0
- package/samples/MetroWidgetDemos/Simple/AbsoluteTemplate.vue +0 -75
- package/samples/MetroWidgetDemos/Simple/App.vue +0 -45
- package/samples/MetroWidgetDemos/Simple/RelativeTemplate.vue +0 -111
- package/samples/MetroWidgetDemos/data.js +0 -205
- package/utils/JsViewVueWidget/JsvSwiper/Indicator.vue +0 -35
- 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,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>
|
package/samples/GridDemo/App.vue
CHANGED
|
@@ -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 =
|
|
18
|
-
const widget2 =
|
|
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 =
|
|
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 =
|
|
19
|
+
const button = shallowRef(null);
|
|
20
20
|
const onFocus = () => {
|
|
21
21
|
button.value
|
|
22
22
|
.getFocusBlock()
|
|
@@ -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 =
|
|
13
|
-
let routePage =
|
|
19
|
+
let topRef = shallowRef(null);
|
|
20
|
+
let routePage = shallowRef(null);
|
|
14
21
|
let currentRouter;
|
|
15
22
|
if (props.routePath) {
|
|
16
23
|
const currentRoute = useRoute();
|
|
@@ -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 =
|
|
29
|
-
const boxMid =
|
|
30
|
-
const boxRight =
|
|
31
|
-
const
|
|
32
|
-
|
|
33
|
-
|
|
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.
|
|
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
|
-
|
|
386
|
+
ref="actorHorizontal"
|
|
383
387
|
:control="horizontalControl"
|
|
384
388
|
>
|
|
385
389
|
<jsv-actor-move
|
|
386
390
|
key="vertical"
|
|
387
|
-
|
|
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";
|
|
@@ -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 =
|
|
15
|
+
const element = shallowRef(null);
|
|
16
16
|
const scrollY = ref(0);
|
|
17
17
|
const textY = ref(0);
|
|
18
18
|
const onAction = {
|
package/samples/LongText/App.vue
CHANGED
|
@@ -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,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 =
|
|
14
|
-
const element =
|
|
13
|
+
const rootRef = shallowRef(null);
|
|
14
|
+
const element = shallowRef(null);
|
|
15
15
|
const scrollY = ref(0);
|
|
16
16
|
const textY = ref(0);
|
|
17
17
|
|
package/samples/Marquee/App.vue
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
<!--
|
|
2
2
|
* @Author: ChenChanghua
|
|
3
3
|
* @Date: 2022-01-18 18:24:18
|
|
4
|
-
* @LastEditors:
|
|
5
|
-
* @LastEditTime:
|
|
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-
|
|
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 =
|
|
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,
|