@realsee/vreo 1.0.0-alpha.1 → 1.0.0-alpha.11

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 (115) hide show
  1. package/docs/assets/search.js +1 -1
  2. package/docs/classes/Player.AudioLike.html +6 -6
  3. package/docs/classes/Player.Controller.html +12 -12
  4. package/docs/classes/Player.Player-1.html +11 -11
  5. package/docs/classes/Player.VideoAgentMesh.html +12 -12
  6. package/docs/classes/Player.VideoAgentScene.html +1 -1
  7. package/docs/demo/assets/{AppReact.d0ee843a.js → AppReact.e6e509fc.js} +1 -1
  8. package/docs/demo/assets/default.bc4c715d.css +1 -0
  9. package/docs/demo/assets/default.e9102488.js +3988 -0
  10. package/docs/demo/assets/{dynamic.76506c2c.js → dynamic.0dd42f6c.js} +1 -1
  11. package/docs/demo/assets/{examples.3d8323db.js → examples.e70954e5.js} +1 -1
  12. package/docs/demo/assets/{index.7e31122c.js → index.62e9f091.js} +1 -1
  13. package/docs/demo/assets/{main.79b11b9d.js → main.c6fa1444.js} +1 -1
  14. package/docs/demo/assets/{react.c1c07c14.js → react.89edd358.js} +1 -1
  15. package/docs/demo/examples.html +3 -3
  16. package/docs/demo/index-react-dynamic.html +5 -5
  17. package/docs/demo/index-react.html +5 -5
  18. package/docs/demo/index.html +4 -4
  19. package/docs/enums/Player.InfoPanelStyleEnum.html +1 -1
  20. package/docs/enums/Player.InfoPanelTypeEnum.html +1 -1
  21. package/docs/enums/Player.PanoEffectEnum.html +1 -1
  22. package/docs/enums/Player.PanoTagEnum.html +1 -1
  23. package/docs/enums/Player.PanoTagStyleEnum.html +2 -2
  24. package/docs/enums/Player.VreoKeyframeEnum.html +12 -12
  25. package/docs/enums/fivePlugins.CameraMovementEffect.html +1 -1
  26. package/docs/enums/fivePlugins.Rotation.html +1 -1
  27. package/docs/interfaces/Player.CustomVreoKeyframeProps.html +1 -1
  28. package/docs/interfaces/Player.PlayerConfigs.html +4 -3
  29. package/docs/interfaces/Player.Vertex.html +1 -1
  30. package/docs/interfaces/Player.VideoAgentMeshOptions.html +3 -3
  31. package/docs/interfaces/Player.VreoKeyframe.html +1 -1
  32. package/docs/interfaces/Player.VreoUnit.html +1 -1
  33. package/docs/interfaces/Player.VreoVideo.html +1 -1
  34. package/docs/interfaces/fivePlugins.CSS3DRenderPluginExportType.html +2 -2
  35. package/docs/interfaces/fivePlugins.CameraMovementOptsCallback.html +1 -1
  36. package/docs/interfaces/fivePlugins.CameraMovementPluginExportType.html +2 -2
  37. package/docs/interfaces/fivePlugins.ModelTVVideoPluginData.html +1 -1
  38. package/docs/interfaces/fivePlugins.ModelTVVideoPluginExportType.html +1 -1
  39. package/docs/interfaces/fivePlugins.ModelTVVideoPluginParameterType.html +1 -1
  40. package/docs/interfaces/fivePlugins.Vector3Position.html +1 -1
  41. package/docs/interfaces/react.VreoActionCallbacks.html +6 -6
  42. package/docs/interfaces/react.VreoProviderProps.html +1 -1
  43. package/docs/modules/Player.html +16 -16
  44. package/docs/modules/custom.html +1 -1
  45. package/docs/modules/fivePlugins.html +3 -3
  46. package/docs/modules/react.html +1 -1
  47. package/lib/PlayController/createHTMLAudioElement.js +6 -11
  48. package/lib/PlayController/index.js +16 -82
  49. package/lib/Player/App.js +6 -28
  50. package/lib/Player/Controller.d.ts +27 -8
  51. package/lib/Player/Controller.js +163 -84
  52. package/lib/Player/custom/SpatialScenePanel/index.js +44 -69
  53. package/lib/Player/hooks.js +2 -12
  54. package/lib/Player/index.d.ts +2 -1
  55. package/lib/Player/index.js +63 -108
  56. package/lib/Player/modules/Drawer/index.js +0 -17
  57. package/lib/Player/modules/PopUp/index.js +0 -10
  58. package/lib/Player/modules/ResizeObserver/index.d.ts +2 -0
  59. package/lib/Player/modules/ResizeObserver/index.js +29 -0
  60. package/lib/Player/modules/VideoAgent/VideoAgentMesh.d.ts +1 -1
  61. package/lib/Player/modules/VideoAgent/VideoAgentMesh.js +58 -151
  62. package/lib/Player/modules/VideoAgent/VideoAgentScene.d.ts +3 -7
  63. package/lib/Player/modules/VideoAgent/VideoAgentScene.js +21 -52
  64. package/lib/Player/modules/VideoAgent/index.js +45 -21
  65. package/lib/Player/modules/Wave/index.d.ts +5 -0
  66. package/lib/Player/modules/Wave/index.js +158 -0
  67. package/lib/Player/modules/keyframes/BgMusic/index.js +2 -15
  68. package/lib/Player/modules/keyframes/CameraMovement/index.js +3 -27
  69. package/lib/Player/modules/keyframes/InfoPanel/index.js +28 -33
  70. package/lib/Player/modules/keyframes/ModelVideo/index.js +3 -29
  71. package/lib/Player/modules/keyframes/PanoEffect/index.js +15 -43
  72. package/lib/Player/modules/keyframes/PanoEffect/lineAnime.js +0 -7
  73. package/lib/Player/modules/keyframes/PanoTag/index.d.ts +1 -2
  74. package/lib/Player/modules/keyframes/PanoTag/index.js +74 -144
  75. package/lib/Player/modules/keyframes/PanoTextLabel/index.js +22 -48
  76. package/lib/Player/modules/keyframes/Prompter/index.js +14 -35
  77. package/lib/Player/modules/keyframes/UpdateVRPanorama/index.js +18 -25
  78. package/lib/Player/modules/keyframes/VideoEffect/index.js +12 -47
  79. package/lib/Player/typings.d.ts +9 -2
  80. package/lib/fivePlugins/CSS3DRenderPlugin/centerPoint.js +0 -2
  81. package/lib/fivePlugins/CSS3DRenderPlugin/createResizeObserver.js +0 -1
  82. package/lib/fivePlugins/CSS3DRenderPlugin/evenNumber.js +0 -1
  83. package/lib/fivePlugins/CSS3DRenderPlugin/index.js +19 -60
  84. package/lib/fivePlugins/CSS3DRenderPlugin/transformPositionToVector3.js +2 -5
  85. package/lib/fivePlugins/CameraMovementPlugin/index.js +30 -80
  86. package/lib/fivePlugins/CameraMovementPlugin/typings.js +0 -4
  87. package/lib/fivePlugins/ModelTVVideoPlugin/index.js +11 -60
  88. package/lib/index.js +0 -1
  89. package/lib/react/index.d.ts +2 -2
  90. package/lib/react/index.js +7 -34
  91. package/lib/shared-utils/AduioLike.js +12 -45
  92. package/lib/shared-utils/Preloader.js +0 -7
  93. package/lib/shared-utils/addResizeListener.d.ts +4 -0
  94. package/lib/shared-utils/addResizeListener.js +46 -0
  95. package/lib/shared-utils/animationFrame/BetterTween.js +2 -38
  96. package/lib/shared-utils/animationFrame/index.js +2 -10
  97. package/lib/shared-utils/animationFrame/tween.js +2 -15
  98. package/lib/shared-utils/createTransMatrix.js +2 -17
  99. package/lib/shared-utils/getFileExpandedName.d.ts +1 -0
  100. package/lib/shared-utils/getFileExpandedName.js +12 -0
  101. package/lib/shared-utils/getMediaInfo.d.ts +9 -0
  102. package/lib/shared-utils/getMediaInfo.js +66 -0
  103. package/lib/shared-utils/setElementDataset.d.ts +1 -0
  104. package/lib/shared-utils/setElementDataset.js +22 -0
  105. package/lib/typings/VreoUnit.d.ts +4 -0
  106. package/lib/typings/VreoUnit.js +0 -15
  107. package/package.json +2 -2
  108. package/resources/Player/Controller.ts +4 -7
  109. package/resources/Player/index.tsx +2 -0
  110. package/resources/Player/modules/Wave/index.tsx +133 -12
  111. package/resources/Player/modules/keyframes/PanoTag/index.tsx +1 -2
  112. package/resources/typings/VreoUnit.ts +1 -1
  113. package/stylesheets/default.css +4 -2
  114. package/docs/demo/assets/default.63925584.js +0 -3984
  115. package/docs/demo/assets/default.f3f3ca8c.css +0 -1
@@ -1,18 +1,139 @@
1
- import React from 'react'
2
1
  import { WaveAppearance } from '../../typings'
2
+ import React, { FC, useState, useCallback, useRef, useEffect, ReactNode } from 'react';
3
+
4
+
5
+ const prefix = 'https://vr-public.realsee-cdn.cn/release/static/image/release/'
6
+
7
+ const WAVES = {
8
+ single: {
9
+ width: 766,
10
+ height: 60,
11
+ frames: 20,
12
+ hevc: 'vapor/static/wave-single.140d197f4838c130b69e87dfd0705479.mov',
13
+ vp9: 'vapor/static/wave-single.eda65de390a830193fff40d1f1255555.webm',
14
+ png: 'vapor/static/wave-single.f51aade2a6e1c59211698a1a24e6135f.png',
15
+ },
16
+ double: {
17
+ width: 766,
18
+ height: 60,
19
+ frames: 16,
20
+ hevc: 'vapor/static/wave-double.3e6d73050ee6958cc3060b107ebe5f39.mov',
21
+ vp9: '/vapor/static/wave-double.77dfe8548ebcb3f3d336785d4fe9c7b2.webm',
22
+ png: '/vapor/static/wave-double.ab4fe7d8a70395109ca4f759af7bd53f.png',
23
+ },
24
+ solid: {
25
+ width: 1126,
26
+ height: 90,
27
+ frames: 48,
28
+ hevc: 'vapor/static/wave-solid.cf68912a93275d07aa6b5097ea11fdda.mov',
29
+ vp9: 'vapor/static/wave-solid.64438b63cbb346906d066bb7b8dc3e20.webm',
30
+ png: 'vapor/static/wave-solid.6969d7f3f2f44f7ac1ade30e65660cb1.png',
31
+ },
32
+ swap: {
33
+ width: 2250,
34
+ height: 180,
35
+ frames: 41,
36
+ hevc: 'vapor/static/wave-swap.b38f22e2cf84ee21e9be35f7f56c9cfc.mov',
37
+ vp9: 'vapor/static/wave-swap.c02e4b94cf05aecf6e7a0023bc7bb90f.webm',
38
+ png: 'vapor/static/wave-swap.772ba526a7210dcc01567062c6319545.png',
39
+ },
40
+ expand: {
41
+ width: 2250,
42
+ height: 180,
43
+ frames: 45,
44
+ hevc: 'vapor/static/wave-expand.9529956c5954740cd4c9d07d51e32822.mov',
45
+ vp9: 'vapor/static/wave-expand.a0d2a0074001cd3d4fea56818c6d3c38.webm',
46
+ png: 'vapor/static/wave-expand.62fcf27b445533e6eb1b17bab5eafa0d.png',
47
+ }
48
+ } as const;
49
+
50
+ const userAgent = typeof navigator !== 'undefined' ? navigator.userAgent : '';
51
+ const isAppleDevice = /(iPhone|iPad|iPod)/i.test(userAgent);
52
+ const isSafari = /safari/i.test(userAgent) && !/chrome/i.test(userAgent) && /version/i.test(userAgent);
53
+ const isMicroMessenger = /microMessenger/i.test(userAgent);
54
+ const canPlayHevc = isAppleDevice || isSafari;
55
+ const canPlayVp9 = typeof MediaSource !== 'undefined' && MediaSource.isTypeSupported("video/webm; codecs=vp9");
56
+
3
57
 
4
58
  export function Wave(props?: { appearance?: WaveAppearance }) {
5
- const waveUrl = React.useMemo(() => {
59
+
60
+ const wave = React.useMemo(() => {
6
61
  const appearance = props?.appearance ?? 'solid'
7
- switch (appearance) {
8
- default: return 'https://vr-public.realsee-cdn.cn/release/static/image/release/vapor/static/wave-solid.64438b63cbb346906d066bb7b8dc3e20.webm'
9
- case 'solid': return 'https://vr-public.realsee-cdn.cn/release/static/image/release/vapor/static/wave-solid.64438b63cbb346906d066bb7b8dc3e20.webm'
10
- case 'single': return 'https://vr-public.realsee-cdn.cn/release/static/image/release/vapor/static/wave-single.eda65de390a830193fff40d1f1255555.webm'
11
- case 'double': return 'https://vr-public.realsee-cdn.cn/release/static/image/release/vapor/static/wave-double.77dfe8548ebcb3f3d336785d4fe9c7b2.webm'
12
- case 'swap': return 'https://vr-public.realsee-cdn.cn/release/static/image/release/vapor/static/wave-swap.c02e4b94cf05aecf6e7a0023bc7bb90f.webm'
13
- case 'expand': return 'https://vr-public.realsee-cdn.cn/release/static/image/release/vapor/static/wave-expand.a0d2a0074001cd3d4fea56818c6d3c38.webm'
14
- }
62
+ return WAVES[appearance]
15
63
  }, [props?.appearance])
16
64
 
17
- return <video className='vreo-wave' width="100%" preload="auto" muted autoPlay loop playsInline disablePictureInPicture controls={false} src={waveUrl} />
18
- }
65
+ let content: ReactNode = null;
66
+ if (isMicroMessenger) {
67
+ content = <KeyframeWaveContent wave={wave} />
68
+ } else if (canPlayVp9) {
69
+ content = <VideoWaveContent format="vp9" wave={wave} />
70
+ } else if (canPlayHevc) {
71
+ content = <VideoWaveContent format="hevc" wave={wave} />
72
+ } else {
73
+ content = <KeyframeWaveContent wave={wave} />
74
+ }
75
+
76
+ return <div className="vreo-wave">{content}</div>
77
+ }
78
+
79
+ const VideoWaveContent: FC<{ wave: typeof WAVES[keyof typeof WAVES]; format: 'hevc' | 'vp9' }> = ({
80
+ wave,
81
+ format,
82
+ }) => {
83
+ const videoRef = useRef<HTMLVideoElement>(null);
84
+ const [canPlay, setCanPlay] = useState(false);
85
+ const [errored, setErrored] = useState(false);
86
+ const source = prefix + wave[format];
87
+
88
+ useEffect(() => {
89
+ setCanPlay(false);
90
+ }, [source]);
91
+
92
+ const canPlayHandler = useCallback(() => {
93
+ if (videoRef.current) {
94
+ videoRef.current.play();
95
+ }
96
+ setCanPlay(true);
97
+ }, []);
98
+
99
+ const errorHandler = useCallback(() => {
100
+ setErrored(true);
101
+ }, []);
102
+
103
+ if (errored) {
104
+ return <KeyframeWaveContent wave={wave} />;
105
+ }
106
+
107
+ return <video
108
+ style={{ opacity: canPlay ? 1 : 0 }}
109
+ preload="auto"
110
+ ref={videoRef}
111
+ width="100%"
112
+ height="100%"
113
+ playsInline
114
+ autoPlay
115
+ onCanPlay={canPlayHandler}
116
+ onError={errorHandler}
117
+ muted
118
+ loop
119
+ src={source}
120
+ />;
121
+ };
122
+
123
+ const KeyframeWaveContent: FC<{ wave: typeof WAVES[keyof typeof WAVES] }> = ({
124
+ wave,
125
+ }) => {
126
+ const source = prefix + wave.png;
127
+ return <div
128
+ style={{
129
+ width: "100%",
130
+ height: "100%",
131
+ backgroundImage: `url(${source})`,
132
+ backgroundSize: "100%",
133
+ animationName: `keyframes`,
134
+ animationTimingFunction: `steps(${wave.frames - 1})`,
135
+ animationDuration: `${wave.frames / 25}s`,
136
+ animationIterationCount: 'infinite',
137
+ }}
138
+ />;
139
+ };
@@ -35,7 +35,7 @@ export function PanoTag() {
35
35
 
36
36
  const panoTagData = data as PanoTagData
37
37
 
38
- const id = 'any-id'
38
+ const id = Date.now().toString()
39
39
  const pointType = PointType.PointTag
40
40
  const dimensionType = DimensionType.Two
41
41
  const position = [panoTagData.vertex.x, panoTagData.vertex.y, panoTagData.vertex.z]
@@ -51,7 +51,6 @@ export function PanoTag() {
51
51
  panoTagPlugin.current.load({ tagList: [tag] })
52
52
 
53
53
  timeoutRef.current = setTimeout(() => {
54
- const id = Date.now()
55
54
  // clear
56
55
  const tag = panoTagPlugin.current.getTagById(id)
57
56
  if (tag.state) {
@@ -82,7 +82,7 @@ export interface VreoVideo {
82
82
  end: number
83
83
  url: string
84
84
  avatar?: {
85
- url: string
85
+ url?: string
86
86
  force?: true
87
87
  }
88
88
  }
@@ -107,6 +107,8 @@
107
107
 
108
108
  .vreo-wave {
109
109
  position: absolute;
110
+ background-color: transparent;
111
+ border: none;
110
112
  bottom: 0;
111
113
  }
112
114
 
@@ -855,8 +857,8 @@
855
857
 
856
858
  .vreo-app .vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1,
857
859
  .vreo-app[data-size="S"] .vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1 {
858
- font-size: 20px;
859
- line-height: 28px;
860
+ font-size: 16px;
861
+ line-height: 22px;
860
862
  }
861
863
  .vreo-app[data-size="M"][data-orientation="landscape"] .vreo-PopUp-inner .vreo-infoPanel-title .vreo-infoPanel-t1 {
862
864
  font-size: 14px;