@realsee/vreo 0.2.0-alpha.5 → 0.2.0-alpha.6
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/README.md +20 -3
- package/docs/assets/custom.css +2 -2
- package/docs/assets/search.js +1 -1
- package/docs/classes/Player.Controller.html +3 -3
- package/docs/classes/Player.Player-1.html +3 -3
- package/docs/classes/Player.VideoAgentMesh.html +11 -11
- package/docs/classes/Player.VideoAgentScene.html +1 -1
- package/docs/enums/Player.InfoPanelStyleEnum.html +1 -0
- package/docs/enums/Player.InfoPanelTypeEnum.html +1 -1
- package/docs/enums/Player.PanoEffectEnum.html +1 -1
- package/docs/enums/Player.PanoTagEnum.html +1 -1
- package/docs/enums/Player.VreoKeyframeEnum.html +12 -12
- package/docs/enums/fivePlugins.CameraMovementEffect.html +1 -1
- package/docs/enums/fivePlugins.Rotation.html +1 -1
- package/docs/index.html +6 -2
- package/docs/interfaces/Player.CustomVreoKeyframeProps.html +1 -1
- package/docs/interfaces/Player.PlayerConfigs.html +2 -2
- package/docs/interfaces/Player.Vertex.html +1 -1
- package/docs/interfaces/Player.VideoAgentMeshOptions.html +1 -1
- package/docs/interfaces/Player.VreoKeyframe.html +1 -1
- package/docs/interfaces/Player.VreoUnit.html +1 -1
- package/docs/interfaces/Player.VreoVideo.html +1 -1
- package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +1 -1
- package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +2 -2
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +1 -1
- package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +1 -1
- package/docs/interfaces/react.VreoActionCallbacks.html +6 -6
- package/docs/interfaces/react.VreoProviderProps.html +1 -1
- package/docs/modules/Player.html +13 -13
- package/docs/modules/custom.html +1 -1
- package/docs/modules/fivePlugins.html +2 -2
- package/docs/modules/react.html +1 -1
- package/lib/Player/Controller.d.ts +2 -0
- package/lib/Player/Controller.js +14 -0
- package/lib/Player/custom/SpatialScenePanel/index.d.ts +2 -2
- package/lib/Player/custom/SpatialScenePanel/index.js +14 -5
- package/lib/Player/index.js +3 -1
- package/lib/Player/modules/PopUp/index.d.ts +2 -0
- package/lib/Player/modules/PopUp/index.js +43 -0
- package/lib/Player/modules/keyframes/InfoPanel/index.js +73 -35
- package/lib/typings/VreoUnit.d.ts +5 -0
- package/lib/typings/VreoUnit.js +14 -6
- package/package.json +1 -1
- package/resources/Player/Controller.ts +12 -0
- package/resources/Player/custom/SpatialScenePanel/index.tsx +64 -31
- package/resources/Player/index.tsx +2 -0
- package/resources/Player/modules/PopUp/index.tsx +26 -0
- package/resources/Player/modules/keyframes/InfoPanel/index.tsx +79 -34
- package/resources/typings/VreoUnit.ts +6 -0
- package/stylesheets/default.css +66 -0
|
@@ -210,11 +210,16 @@ export declare enum InfoPanelTypeEnum {
|
|
|
210
210
|
Image = "Image",
|
|
211
211
|
Video = "Video"
|
|
212
212
|
}
|
|
213
|
+
export declare enum InfoPanelStyleEnum {
|
|
214
|
+
Drawer = "Drawer",
|
|
215
|
+
PopUp = "PopUp"
|
|
216
|
+
}
|
|
213
217
|
/**
|
|
214
218
|
* 信息面板
|
|
215
219
|
*/
|
|
216
220
|
export declare type InfoPanelData = {
|
|
217
221
|
type: InfoPanelTypeEnum;
|
|
222
|
+
style?: InfoPanelStyleEnum;
|
|
218
223
|
url: string;
|
|
219
224
|
title?: string;
|
|
220
225
|
subTitle?: string;
|
package/lib/typings/VreoUnit.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.VreoKeyframeEnum = exports.PanoTagEnum = exports.PanoEffectEnum = exports.InfoPanelTypeEnum = void 0;
|
|
6
|
+
exports.VreoKeyframeEnum = exports.PanoTagEnum = exports.PanoEffectEnum = exports.InfoPanelTypeEnum = exports.InfoPanelStyleEnum = void 0;
|
|
7
7
|
var VreoKeyframeEnum;
|
|
8
8
|
/**
|
|
9
9
|
* 支持自定义剧本关键帧配置项
|
|
@@ -55,13 +55,21 @@ exports.PanoEffectEnum = PanoEffectEnum;
|
|
|
55
55
|
* 信息面板类型枚举
|
|
56
56
|
*/
|
|
57
57
|
var InfoPanelTypeEnum;
|
|
58
|
-
/**
|
|
59
|
-
* 信息面板
|
|
60
|
-
*/
|
|
61
|
-
|
|
62
58
|
exports.InfoPanelTypeEnum = InfoPanelTypeEnum;
|
|
63
59
|
|
|
64
60
|
(function (InfoPanelTypeEnum) {
|
|
65
61
|
InfoPanelTypeEnum["Image"] = "Image";
|
|
66
62
|
InfoPanelTypeEnum["Video"] = "Video";
|
|
67
|
-
})(InfoPanelTypeEnum || (exports.InfoPanelTypeEnum = InfoPanelTypeEnum = {}));
|
|
63
|
+
})(InfoPanelTypeEnum || (exports.InfoPanelTypeEnum = InfoPanelTypeEnum = {}));
|
|
64
|
+
|
|
65
|
+
var InfoPanelStyleEnum;
|
|
66
|
+
/**
|
|
67
|
+
* 信息面板
|
|
68
|
+
*/
|
|
69
|
+
|
|
70
|
+
exports.InfoPanelStyleEnum = InfoPanelStyleEnum;
|
|
71
|
+
|
|
72
|
+
(function (InfoPanelStyleEnum) {
|
|
73
|
+
InfoPanelStyleEnum["Drawer"] = "Drawer";
|
|
74
|
+
InfoPanelStyleEnum["PopUp"] = "PopUp";
|
|
75
|
+
})(InfoPanelStyleEnum || (exports.InfoPanelStyleEnum = InfoPanelStyleEnum = {}));
|
package/package.json
CHANGED
|
@@ -24,6 +24,16 @@ export class Controller extends Subscribe<VreoKeyframeEvent> {
|
|
|
24
24
|
return !this.videoAgentScene?.videoAgentMesh.videoUrl?.endsWith('.mp4')
|
|
25
25
|
}
|
|
26
26
|
|
|
27
|
+
popUp: string | JSX.Element | null = null
|
|
28
|
+
|
|
29
|
+
openPopUp(popUp: string | JSX.Element | false) {
|
|
30
|
+
if (!popUp) {
|
|
31
|
+
this.popUp = null
|
|
32
|
+
return
|
|
33
|
+
}
|
|
34
|
+
this.popUp = popUp
|
|
35
|
+
}
|
|
36
|
+
|
|
27
37
|
drawerConfig: {
|
|
28
38
|
content: string | JSX.Element
|
|
29
39
|
height?: number | string
|
|
@@ -57,6 +67,8 @@ export class Controller extends Subscribe<VreoKeyframeEvent> {
|
|
|
57
67
|
setVisible: action,
|
|
58
68
|
playing: observable,
|
|
59
69
|
setPlaying: action,
|
|
70
|
+
popUp: observable.ref,
|
|
71
|
+
openPopUp: action,
|
|
60
72
|
drawerConfig: observable.ref,
|
|
61
73
|
openDrawer: action,
|
|
62
74
|
})
|
|
@@ -8,6 +8,29 @@ import { CSS3DRenderPlugin, CSS3DRenderPluginExportType } from '@realsee/dnaloge
|
|
|
8
8
|
import { VreoKeyframe, VreoKeyframeEnum } from '../../../typings/VreoUnit'
|
|
9
9
|
import { CustomVreoKeyframeProps } from '../../typings'
|
|
10
10
|
|
|
11
|
+
// const mockData: SpatialScenePanelData = {
|
|
12
|
+
// customType: 'SpatialScenePanel',
|
|
13
|
+
// "stateList": [
|
|
14
|
+
// {
|
|
15
|
+
// "icon": "http://vrlab-public.ljcdn.com/release/seesay/tools/___fc42f951076607a22fd5c54f005ba553.png",
|
|
16
|
+
// "text": "窗帘关闭"
|
|
17
|
+
// },
|
|
18
|
+
// {
|
|
19
|
+
// "icon": "http://vrlab-public.ljcdn.com/release/seesay/tools/___b331e7ad732debc07250a169a3393b13.png",
|
|
20
|
+
// "text": "摄像头休眠"
|
|
21
|
+
// },
|
|
22
|
+
// {
|
|
23
|
+
// "icon": "http://vrlab-public.ljcdn.com/release/seesay/tools/___2e425a81ac0ad88232d50d4e52a9abfa.png",
|
|
24
|
+
// "text": "氛围音乐"
|
|
25
|
+
// },
|
|
26
|
+
// {
|
|
27
|
+
// "icon": "http://vrlab-public.ljcdn.com/release/seesay/tools/___bff48bb81cde37aa6a319d6f5d56e3a4.png",
|
|
28
|
+
// "text": "空调打开"
|
|
29
|
+
// }
|
|
30
|
+
// ],
|
|
31
|
+
// "temperature": "27",
|
|
32
|
+
// "title": "沉浸式回家"
|
|
33
|
+
// }
|
|
11
34
|
export interface SpatialScenePanelData {
|
|
12
35
|
customType: 'SpatialScenePanel'
|
|
13
36
|
title: string
|
|
@@ -16,8 +39,8 @@ export interface SpatialScenePanelData {
|
|
|
16
39
|
text: string
|
|
17
40
|
icon: string
|
|
18
41
|
}[]
|
|
19
|
-
position
|
|
20
|
-
quaternion
|
|
42
|
+
position?: { x: number; y: number; z: number }
|
|
43
|
+
quaternion?: [number, number, number, number]
|
|
21
44
|
}
|
|
22
45
|
|
|
23
46
|
interface SearchParams {
|
|
@@ -25,9 +48,17 @@ interface SearchParams {
|
|
|
25
48
|
// position: Vector3
|
|
26
49
|
// rotation?: Vector3
|
|
27
50
|
// quaternion: [number, number, number, number]
|
|
28
|
-
dom: HTMLDivElement
|
|
51
|
+
dom: HTMLDivElement
|
|
29
52
|
}
|
|
30
53
|
|
|
54
|
+
// const getSphere = (position: Vector3, color = 0xffff00) => {
|
|
55
|
+
// const geometry = new SphereGeometry(0.05, 32, 16)
|
|
56
|
+
// const material = new MeshBasicMaterial({ color })
|
|
57
|
+
// const sphere = new Mesh(geometry, material)
|
|
58
|
+
// sphere.position.copy(position)
|
|
59
|
+
// return sphere
|
|
60
|
+
// }
|
|
61
|
+
|
|
31
62
|
const searchV1 = ({ five, dom }: SearchParams) => {
|
|
32
63
|
const cameraDirection = new Vector3()
|
|
33
64
|
five.camera.getWorldDirection(cameraDirection)
|
|
@@ -48,16 +79,17 @@ const searchV1 = ({ five, dom }: SearchParams) => {
|
|
|
48
79
|
const rightBottom = new Vector3(right, bottom)
|
|
49
80
|
|
|
50
81
|
const points = [leftBottom, rightBottom, rightTop, leftTop].map((point) => {
|
|
51
|
-
point.setX((point.x / window.innerWidth) * 2 -
|
|
82
|
+
point.setX((point.x / window.innerWidth) * 2 - 1.25)
|
|
52
83
|
point.setY(-(point.y / window.innerHeight) * 2 + 1)
|
|
53
84
|
point.setZ(0.5)
|
|
54
85
|
return point.unproject(five.camera).addScaledVector(cameraDirection, 0.2)
|
|
55
86
|
})
|
|
56
87
|
|
|
88
|
+
// __debug__
|
|
57
89
|
// const colors = [0xdc143c, 0xffff00, 0x0000ff, 0x008000]
|
|
58
90
|
// points.forEach((p, index) => five.scene.add(getSphere(p, colors[index])))
|
|
59
91
|
|
|
60
|
-
const ratio = leftBottom.distanceTo(rightBottom) /
|
|
92
|
+
const ratio = leftBottom.distanceTo(rightBottom) / 150
|
|
61
93
|
return { points, ratio }
|
|
62
94
|
}
|
|
63
95
|
|
|
@@ -71,7 +103,6 @@ export function SpatialScenePanel(props: CustomVreoKeyframeProps) {
|
|
|
71
103
|
const rendererRef = React.useRef<CSS3DRenderPluginExportType>(CSS3DRenderPlugin(props.five))
|
|
72
104
|
|
|
73
105
|
React.useEffect(() => {
|
|
74
|
-
|
|
75
106
|
if (!ref.current) {
|
|
76
107
|
return
|
|
77
108
|
}
|
|
@@ -83,9 +114,10 @@ export function SpatialScenePanel(props: CustomVreoKeyframeProps) {
|
|
|
83
114
|
|
|
84
115
|
const data = keyframe.data as SpatialScenePanelData
|
|
85
116
|
|
|
117
|
+
// const data = mockData
|
|
86
118
|
const { points, ratio } = searchV1({
|
|
87
119
|
five: props.five,
|
|
88
|
-
dom: ref.current
|
|
120
|
+
dom: ref.current!,
|
|
89
121
|
})
|
|
90
122
|
|
|
91
123
|
const { container, dispose, css3DObject, render } =
|
|
@@ -93,32 +125,33 @@ export function SpatialScenePanel(props: CustomVreoKeyframeProps) {
|
|
|
93
125
|
|
|
94
126
|
if (!container) return
|
|
95
127
|
|
|
96
|
-
|
|
97
128
|
ReactDOM.render(<Panel ref={(ref) => (panelRef.current = ref)} data={data} />, container)
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
129
|
+
const startRotateY = -(Math.PI * 2) / 9
|
|
130
|
+
let lastRotateY = 0
|
|
131
|
+
tweenProgress(1000)
|
|
132
|
+
.onUpdate(({ progress }) => {
|
|
133
|
+
const needRotateY = (Math.PI / 90) * 11 * progress
|
|
134
|
+
const rotateY = needRotateY - lastRotateY
|
|
135
|
+
css3DObject?.rotateY(rotateY)
|
|
136
|
+
lastRotateY = needRotateY
|
|
137
|
+
})
|
|
138
|
+
.onStart(() => {
|
|
139
|
+
css3DObject?.rotateY(startRotateY)
|
|
140
|
+
render!()
|
|
141
|
+
})
|
|
142
|
+
.onDispose(() => {
|
|
143
|
+
panelRef.current?.classList.add('show')
|
|
144
|
+
})
|
|
145
|
+
.play()
|
|
146
|
+
const { start, end } = keyframe
|
|
147
|
+
|
|
148
|
+
setTimeout(() => {
|
|
149
|
+
panelRef.current?.classList.add('hide')
|
|
150
|
+
setTimeout(() => dispose?.(), 1500)
|
|
151
|
+
}, end - start)
|
|
120
152
|
}
|
|
121
153
|
|
|
154
|
+
// Object.assign(window, { $callback: callback })
|
|
122
155
|
props.subscribe.on(VreoKeyframeEnum.Custom, callback)
|
|
123
156
|
|
|
124
157
|
return () => {
|
|
@@ -151,5 +184,5 @@ const Panel = React.forwardRef(
|
|
|
151
184
|
|
|
152
185
|
<div className="SpatialScenePanel-disappear-area"></div>
|
|
153
186
|
</div>
|
|
154
|
-
)
|
|
187
|
+
)
|
|
155
188
|
)
|
|
@@ -8,6 +8,7 @@ import { VreoKeyframeEvent, VreoUnit } from '../typings/VreoUnit'
|
|
|
8
8
|
import { reaction } from 'mobx'
|
|
9
9
|
import { Drawer } from './modules/Drawer'
|
|
10
10
|
import { PlayerConfigs } from './typings'
|
|
11
|
+
import { PopUp } from './modules/PopUp'
|
|
11
12
|
|
|
12
13
|
export class Player extends Subscribe<VreoKeyframeEvent> {
|
|
13
14
|
$five: Five
|
|
@@ -42,6 +43,7 @@ export class Player extends Subscribe<VreoKeyframeEvent> {
|
|
|
42
43
|
<ControllerContext.Provider value={this.controller}>
|
|
43
44
|
<App></App>
|
|
44
45
|
<Drawer />
|
|
46
|
+
<PopUp />
|
|
45
47
|
{this.configs.customKeyframes &&
|
|
46
48
|
this.configs.customKeyframes.map((CustomCmpt, key) => (
|
|
47
49
|
<CustomCmpt
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as React from 'react'
|
|
2
|
+
import classNames from 'classnames'
|
|
3
|
+
import { observer } from 'mobx-react'
|
|
4
|
+
import { Controller } from '../../Controller'
|
|
5
|
+
import { useController } from '../../hooks'
|
|
6
|
+
|
|
7
|
+
const PopUpView = observer(({ controller }: { controller: Controller }) => {
|
|
8
|
+
|
|
9
|
+
return (
|
|
10
|
+
<div
|
|
11
|
+
className={classNames('vreo-PopUp', {
|
|
12
|
+
'vreo-PopUp-visible': controller.popUp,
|
|
13
|
+
})}
|
|
14
|
+
onClick={() => controller.openPopUp(false)}
|
|
15
|
+
>
|
|
16
|
+
<div className="vreo-PopUp-inner">
|
|
17
|
+
{controller.popUp || ''}
|
|
18
|
+
</div>
|
|
19
|
+
</div>
|
|
20
|
+
)
|
|
21
|
+
})
|
|
22
|
+
|
|
23
|
+
export function PopUp() {
|
|
24
|
+
const controller = useController()
|
|
25
|
+
return <PopUpView controller={controller} />
|
|
26
|
+
}
|
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import * as React from 'react'
|
|
2
2
|
import { ReactNode } from 'react'
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
InfoPanelData,
|
|
5
|
+
InfoPanelStyleEnum,
|
|
6
|
+
InfoPanelTypeEnum,
|
|
7
|
+
VreoKeyframe,
|
|
8
|
+
VreoKeyframeEnum,
|
|
9
|
+
} from '../../../../typings/VreoUnit'
|
|
4
10
|
import { useController } from '../../../hooks'
|
|
5
11
|
|
|
6
12
|
function InfoPanelImg({ url, children }: { url: string; children?: ReactNode }) {
|
|
@@ -16,7 +22,9 @@ function InfoPanelVideo({ url, children }: { url: string; children?: ReactNode }
|
|
|
16
22
|
return (
|
|
17
23
|
<div className="vreo-infoPanel vreo-infoPanel--video">
|
|
18
24
|
{children}
|
|
19
|
-
<div className="vreo-infoPanelWrapper"
|
|
25
|
+
<div className="vreo-infoPanelWrapper">
|
|
26
|
+
<video playsInline autoPlay className="vreo-infoPanelVideo" src={url} />
|
|
27
|
+
</div>
|
|
20
28
|
</div>
|
|
21
29
|
)
|
|
22
30
|
}
|
|
@@ -47,49 +55,86 @@ export function InfoPanel() {
|
|
|
47
55
|
if (controller.configs?.keyframeMap.InfoPanel === false) {
|
|
48
56
|
return
|
|
49
57
|
}
|
|
58
|
+
|
|
50
59
|
const callback = (keyframe: VreoKeyframe) => {
|
|
51
60
|
const { start, end, data } = keyframe
|
|
52
61
|
|
|
53
62
|
const infoPanelData = data as InfoPanelData
|
|
54
63
|
|
|
55
|
-
const { title, subTitle } = infoPanelData
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
<
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
64
|
+
const { title, subTitle, style } = infoPanelData
|
|
65
|
+
do {
|
|
66
|
+
if (style === InfoPanelStyleEnum.PopUp) {
|
|
67
|
+
if (infoPanelData.type === InfoPanelTypeEnum.Image) {
|
|
68
|
+
controller.openPopUp(
|
|
69
|
+
<InfoPanelImg url={infoPanelData.url}>
|
|
70
|
+
<Title title={title} subTitle={subTitle} />
|
|
71
|
+
</InfoPanelImg>
|
|
72
|
+
)
|
|
73
|
+
} else if (infoPanelData.type === InfoPanelTypeEnum.Video) {
|
|
74
|
+
controller.openPopUp(
|
|
75
|
+
<InfoPanelVideo url={infoPanelData.url}>
|
|
76
|
+
<Title title={title} subTitle={subTitle} />
|
|
77
|
+
</InfoPanelVideo>
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
break
|
|
81
|
+
}
|
|
82
|
+
if (infoPanelData.type === InfoPanelTypeEnum.Image) {
|
|
83
|
+
controller.openDrawer({
|
|
84
|
+
content: (
|
|
85
|
+
<InfoPanelImg url={infoPanelData.url}>
|
|
86
|
+
<Title title={title} subTitle={subTitle} />
|
|
87
|
+
</InfoPanelImg>
|
|
88
|
+
),
|
|
89
|
+
height: '60vh',
|
|
90
|
+
})
|
|
91
|
+
} else if (infoPanelData.type === InfoPanelTypeEnum.Video) {
|
|
92
|
+
controller.openDrawer({
|
|
93
|
+
content: (
|
|
94
|
+
<InfoPanelVideo url={infoPanelData.url}>
|
|
95
|
+
<Title title={title} subTitle={subTitle} />
|
|
96
|
+
</InfoPanelVideo>
|
|
97
|
+
),
|
|
98
|
+
height: '60vh',
|
|
99
|
+
})
|
|
100
|
+
}
|
|
101
|
+
} while (false)
|
|
102
|
+
|
|
103
|
+
timeoutRef.current = setTimeout(() => {
|
|
104
|
+
controller.openDrawer(false)
|
|
105
|
+
controller.openPopUp(false)
|
|
106
|
+
}, end - start)
|
|
76
107
|
}
|
|
77
108
|
controller.on(VreoKeyframeEnum.InfoPanel, callback)
|
|
78
109
|
|
|
79
110
|
// Object.assign(window, {
|
|
80
111
|
// $setInfoPanel: () => {
|
|
81
|
-
// controller.
|
|
82
|
-
//
|
|
83
|
-
//
|
|
84
|
-
//
|
|
85
|
-
//
|
|
86
|
-
//
|
|
87
|
-
// <InfoPanelVideo url="//vrlab-public.ljcdn.com/release/seesay/tools/2022011713142___b320f74a5e1b5ad4bb46b4dc69d73ecc.mp4">
|
|
112
|
+
// controller.openPopUp(
|
|
113
|
+
// // <InfoPanelImg url='//vrlab-static.ljcdn.com/release/web/psq/a.8e868cb2.gif' />
|
|
114
|
+
// // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/web/psq/b.f9a1ed52.png' />
|
|
115
|
+
// // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/web/psq/c.4f88c112.png' />
|
|
116
|
+
// // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/seesay/tools/cat_music___f68fb9bbe1f7cd6d00a16456dd0b09ad.gif' />
|
|
117
|
+
// <InfoPanelImg url="http://vrlab-public.ljcdn.com/common/images/web/d94e1bd7-0311-4b20-9c41-a1294fe43554.png">
|
|
88
118
|
// <Title title="场景联动抓拍图片" subTitle={'2022.02.17 14:00'} />
|
|
89
|
-
// </
|
|
90
|
-
//
|
|
91
|
-
//
|
|
92
|
-
//
|
|
119
|
+
// </InfoPanelImg>
|
|
120
|
+
// // <InfoPanelVideo url="//vrlab-public.ljcdn.com/release/seesay/tools/2022011713142___b320f74a5e1b5ad4bb46b4dc69d73ecc.mp4">
|
|
121
|
+
// // <Title title="场景联动抓拍图片" subTitle={'2022.02.17 14:00'} />
|
|
122
|
+
// // </InfoPanelVideo>
|
|
123
|
+
// )
|
|
124
|
+
// },
|
|
125
|
+
// $setInfoPanel2: () => {
|
|
126
|
+
// controller.openPopUp(
|
|
127
|
+
// <InfoPanelImg url='//vrlab-static.ljcdn.com/release/web/psq/a.8e868cb2.gif' />
|
|
128
|
+
// // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/web/psq/b.f9a1ed52.png' />
|
|
129
|
+
// // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/web/psq/c.4f88c112.png' />
|
|
130
|
+
// // <InfoPanelImg url='//vrlab-public.ljcdn.com/release/seesay/tools/cat_music___f68fb9bbe1f7cd6d00a16456dd0b09ad.gif' />
|
|
131
|
+
// // <InfoPanelImg url="http://vrlab-public.ljcdn.com/common/images/web/d94e1bd7-0311-4b20-9c41-a1294fe43554.png">
|
|
132
|
+
// // <Title title="场景联动抓拍图片" subTitle={'2022.02.17 14:00'} />
|
|
133
|
+
// // </InfoPanelImg>
|
|
134
|
+
// // <InfoPanelVideo url="//vrlab-public.ljcdn.com/release/seesay/tools/2022011713142___b320f74a5e1b5ad4bb46b4dc69d73ecc.mp4">
|
|
135
|
+
// // <Title title="场景联动抓拍图片" subTitle={'2022.02.17 14:00'} />
|
|
136
|
+
// // </InfoPanelVideo>
|
|
137
|
+
// )
|
|
93
138
|
// },
|
|
94
139
|
// })
|
|
95
140
|
|
|
@@ -235,11 +235,17 @@ export enum InfoPanelTypeEnum {
|
|
|
235
235
|
Video = 'Video',
|
|
236
236
|
}
|
|
237
237
|
|
|
238
|
+
export enum InfoPanelStyleEnum {
|
|
239
|
+
Drawer = 'Drawer',
|
|
240
|
+
PopUp = 'PopUp',
|
|
241
|
+
}
|
|
242
|
+
|
|
238
243
|
/**
|
|
239
244
|
* 信息面板
|
|
240
245
|
*/
|
|
241
246
|
export type InfoPanelData = {
|
|
242
247
|
type: InfoPanelTypeEnum
|
|
248
|
+
style?: InfoPanelStyleEnum
|
|
243
249
|
url: string
|
|
244
250
|
// 标题
|
|
245
251
|
title?: string
|
package/stylesheets/default.css
CHANGED
|
@@ -547,3 +547,69 @@
|
|
|
547
547
|
opacity: 0;
|
|
548
548
|
transition: opacity 0.45s;
|
|
549
549
|
}
|
|
550
|
+
|
|
551
|
+
.vreo-PopUp {
|
|
552
|
+
position: absolute;
|
|
553
|
+
left: 0;
|
|
554
|
+
top: 0;
|
|
555
|
+
width: 100%;
|
|
556
|
+
height: 100%;
|
|
557
|
+
pointer-events: none;
|
|
558
|
+
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.7) 65%);
|
|
559
|
+
opacity: 0;
|
|
560
|
+
transition: opacity .45s;
|
|
561
|
+
display: flex;
|
|
562
|
+
justify-content: center;
|
|
563
|
+
align-items: center;
|
|
564
|
+
}
|
|
565
|
+
|
|
566
|
+
.vreo-PopUp.vreo-PopUp-visible {
|
|
567
|
+
opacity: 1;
|
|
568
|
+
pointer-events: all;
|
|
569
|
+
}
|
|
570
|
+
|
|
571
|
+
.vreo-PopUp-inner {
|
|
572
|
+
width: 339px;
|
|
573
|
+
height: 425px;
|
|
574
|
+
position: relative;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
@media only screen and (min-width: 960px) {
|
|
578
|
+
.vreo-PopUp-inner {
|
|
579
|
+
width: 678px;
|
|
580
|
+
height: 620px;
|
|
581
|
+
position: relative;
|
|
582
|
+
}
|
|
583
|
+
.vreo-infoPanelVideo {
|
|
584
|
+
max-width: 100%;
|
|
585
|
+
}
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
.vreo-PopUp-inner .vreo-infoPanel {
|
|
589
|
+
background-color: initial;
|
|
590
|
+
justify-content: center;
|
|
591
|
+
}
|
|
592
|
+
|
|
593
|
+
.vreo-PopUp-inner .vreo-infoPanel-title {
|
|
594
|
+
position: absolute;
|
|
595
|
+
bottom: 32px;
|
|
596
|
+
left: 0;
|
|
597
|
+
z-index: 1;
|
|
598
|
+
flex-direction: column;
|
|
599
|
+
justify-content: end;
|
|
600
|
+
height: 200px;
|
|
601
|
+
background-image: linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 0.8));
|
|
602
|
+
}
|
|
603
|
+
|
|
604
|
+
.vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1 {
|
|
605
|
+
padding-left: 0;
|
|
606
|
+
font-size: 20px;
|
|
607
|
+
font-weight: 600;
|
|
608
|
+
padding-bottom: 14px;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
.vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t2 {
|
|
612
|
+
padding: 0 0 24px 0;
|
|
613
|
+
font-size: 14px;
|
|
614
|
+
opacity: 0.85;
|
|
615
|
+
}
|