@realsee/five 5.0.0-alpha.100
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 +362 -0
- package/TERMS.txt +56 -0
- package/docs/.nojekyll +1 -0
- package/docs/assets/highlight.css +134 -0
- package/docs/assets/icons.css +1043 -0
- package/docs/assets/icons.png +0 -0
- package/docs/assets/icons@2x.png +0 -0
- package/docs/assets/main.js +52 -0
- package/docs/assets/search.js +1 -0
- package/docs/assets/style.css +1388 -0
- package/docs/assets/widgets.png +0 -0
- package/docs/assets/widgets@2x.png +0 -0
- package/docs/classes/five.AnimationFrameLoop.html +15 -0
- package/docs/classes/five.BVH.html +10 -0
- package/docs/classes/five.BVHIntersect.html +1 -0
- package/docs/classes/five.BVHNode.html +7 -0
- package/docs/classes/five.BVHVector3.html +1 -0
- package/docs/classes/five.Camera.html +11 -0
- package/docs/classes/five.Five.html +303 -0
- package/docs/classes/five.InternalWebGLRenderer.html +1 -0
- package/docs/classes/five.IntersectMesh.html +1 -0
- package/docs/classes/five.LegacyPanoCircleMesh.html +5 -0
- package/docs/classes/five.Model.html +77 -0
- package/docs/classes/five.NetworkSubscribe.html +50 -0
- package/docs/classes/five.PBMContainer.html +17 -0
- package/docs/classes/five.PBMGroup.html +19 -0
- package/docs/classes/five.PBMMaterial.html +15 -0
- package/docs/classes/five.PBMMesh.html +7 -0
- package/docs/classes/five.PanoCircleMesh.html +7 -0
- package/docs/classes/five.Scene.html +3 -0
- package/docs/classes/five.Subscribe.html +56 -0
- package/docs/classes/five.Work.html +30 -0
- package/docs/classes/gltf_loader.GLTFLoader.html +17 -0
- package/docs/classes/gltf_loader.GLTFObject.html +7 -0
- package/docs/classes/line.Line.html +1 -0
- package/docs/classes/line.LineGeometry.html +1 -0
- package/docs/classes/line.LineMaterial.html +1 -0
- package/docs/classes/line.LineSegmentsGeometry.html +1 -0
- package/docs/classes/line.THREE_Line2.html +1 -0
- package/docs/classes/line.THREE_LineSegments2.html +1 -0
- package/docs/classes/react.Store.html +29 -0
- package/docs/classes/server.BVH.html +10 -0
- package/docs/classes/server.BVHIntersect.html +1 -0
- package/docs/classes/server.BVHNode.html +7 -0
- package/docs/classes/server.BVHVector3.html +1 -0
- package/docs/classes/server.Model.html +63 -0
- package/docs/classes/server.PBMGroup.html +9 -0
- package/docs/classes/server.PBMMesh.html +7 -0
- package/docs/classes/sticker.Sticker.html +32 -0
- package/docs/index.html +182 -0
- package/docs/interfaces/five.AddableObject.html +1 -0
- package/docs/interfaces/five.AnimationFrame.html +1 -0
- package/docs/interfaces/five.CameraPose.html +1 -0
- package/docs/interfaces/five.DepthPanoramaControllerCustomInitArgs.html +28 -0
- package/docs/interfaces/five.EventCallback.html +391 -0
- package/docs/interfaces/five.FiveInitArgs.html +96 -0
- package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +15 -0
- package/docs/interfaces/five.ImageOptions.html +16 -0
- package/docs/interfaces/five.ImageURLOptions.html +1 -0
- package/docs/interfaces/five.IntersectMeshInterface.html +3 -0
- package/docs/interfaces/five.Intersection.html +7 -0
- package/docs/interfaces/five.ModelControllerCustomInitArgs.html +20 -0
- package/docs/interfaces/five.ModelEventCallback.html +22 -0
- package/docs/interfaces/five.MovePanoOptions.html +39 -0
- package/docs/interfaces/five.PBMPanoPicture.html +7 -0
- package/docs/interfaces/five.PBMParameters.html +15 -0
- package/docs/interfaces/five.PanoCircleMeshInterface.html +19 -0
- package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +28 -0
- package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +20 -0
- package/docs/interfaces/five.Pose.html +35 -0
- package/docs/interfaces/five.Scissor.html +14 -0
- package/docs/interfaces/five.State.html +19 -0
- package/docs/interfaces/five.SubscribeMixinType.emit.html +1 -0
- package/docs/interfaces/five.SubscribeMixinType.hasListener.html +1 -0
- package/docs/interfaces/five.SubscribeMixinType.off.html +1 -0
- package/docs/interfaces/five.SubscribeMixinType.on.html +1 -0
- package/docs/interfaces/five.SubscribeMixinType.once.html +1 -0
- package/docs/interfaces/five.TextureOptions.html +18 -0
- package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +7 -0
- package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +24 -0
- package/docs/interfaces/five.WorkCubeImage.html +13 -0
- package/docs/interfaces/five.WorkImage.html +21 -0
- package/docs/interfaces/five.WorkInitial.html +13 -0
- package/docs/interfaces/five.WorkModel.html +11 -0
- package/docs/interfaces/five.WorkObserver.html +25 -0
- package/docs/interfaces/five.WorkTile.html +1 -0
- package/docs/interfaces/five.WorkVideo.html +9 -0
- package/docs/interfaces/gltf_loader.GLTF.html +7 -0
- package/docs/interfaces/react.FiveActionReactCallbacks.html +62 -0
- package/docs/interfaces/react.FiveInjectionTypes.html +191 -0
- package/docs/interfaces/react.PropTypeOfFiveFeatures.html +1 -0
- package/docs/interfaces/server.Intersection.html +7 -0
- package/docs/interfaces/server.ModelEventCallback.html +18 -0
- package/docs/interfaces/sticker.IntersectionLike.html +8 -0
- package/docs/media/coordinate.jpg +0 -0
- package/docs/media/topview.jpg +0 -0
- package/docs/media/typescript.jpg +0 -0
- package/docs/modules/five.SubscribeMixinType.html +1 -0
- package/docs/modules/five.html +481 -0
- package/docs/modules/gltf_loader.html +1 -0
- package/docs/modules/line.html +1 -0
- package/docs/modules/react.html +130 -0
- package/docs/modules/server.html +18 -0
- package/docs/modules/sticker.html +1 -0
- package/docs/modules.html +1 -0
- package/exporters/staticify.js +203 -0
- package/five/index.d.ts +2061 -0
- package/five/index.js +372 -0
- package/gltf-loader/index.d.ts +75 -0
- package/gltf-loader/index.js +260 -0
- package/line/index.d.ts +68 -0
- package/line/index.js +260 -0
- package/package.json +36 -0
- package/react/index.d.ts +812 -0
- package/react/index.js +260 -0
- package/resource/basis/basis_transcoder.js +22 -0
- package/resource/basis/basis_transcoder.wasm +0 -0
- package/resource/gltf/draco_decoder.js +31 -0
- package/resource/gltf/draco_decoder.wasm +0 -0
- package/resource/gltf/draco_wasm_wrapper.js +119 -0
- package/scripts/five-plugin-init.js +83 -0
- package/scripts/five-quick-start-init.js +80 -0
- package/scripts/five-react-component-init.js +83 -0
- package/scripts/five-staticify.js +21 -0
- package/server/index.d.ts +568 -0
- package/server/index.js +367 -0
- package/sticker/index.d.ts +70 -0
- package/sticker/index.js +260 -0
- package/templates/plugin/README.md +38 -0
- package/templates/plugin/devtools/external-five.js +5 -0
- package/templates/plugin/devtools/external-three.js +5 -0
- package/templates/plugin/devtools/tsconfig.build.json +18 -0
- package/templates/plugin/devtools/webpack.bundle.js +44 -0
- package/templates/plugin/devtools/webpack.example.js +39 -0
- package/templates/plugin/docs/.gitkeep +0 -0
- package/templates/plugin/examples/data.json +507 -0
- package/templates/plugin/examples/index.html +28 -0
- package/templates/plugin/examples/index.ts +12 -0
- package/templates/plugin/lib/index.ts +30 -0
- package/templates/plugin/package.json +32 -0
- package/templates/plugin/tsconfig.json +26 -0
- package/templates/quick-start/README.md +47 -0
- package/templates/quick-start/assets/work.json +507 -0
- package/templates/quick-start/index.html +54 -0
- package/templates/quick-start/index.tsx +123 -0
- package/templates/quick-start/package.json +25 -0
- package/templates/quick-start/tsconfig.json +27 -0
- package/templates/quick-start/webpack.config.js +45 -0
- package/templates/quick-start/webpack.production.js +42 -0
- package/templates/react-component/README.md +32 -0
- package/templates/react-component/devtools/external-five.js +5 -0
- package/templates/react-component/devtools/external-react.js +5 -0
- package/templates/react-component/devtools/external-three.js +5 -0
- package/templates/react-component/devtools/tsconfig.build.json +19 -0
- package/templates/react-component/devtools/webpack.bundle.js +44 -0
- package/templates/react-component/devtools/webpack.example.js +39 -0
- package/templates/react-component/docs/.gitkeep +0 -0
- package/templates/react-component/examples/data.json +507 -0
- package/templates/react-component/examples/index.html +17 -0
- package/templates/react-component/examples/index.tsx +62 -0
- package/templates/react-component/lib/index.tsx +157 -0
- package/templates/react-component/package.json +38 -0
- package/templates/react-component/tsconfig.json +27 -0
- package/umd/five-gltf-loader.js +2 -0
- package/umd/five-gltf-loader.js.LICENSE.txt +14 -0
- package/umd/five-line.js +2 -0
- package/umd/five-line.js.LICENSE.txt +14 -0
- package/umd/five-react.js +2 -0
- package/umd/five-react.js.LICENSE.txt +14 -0
- package/umd/five-sticker.js +2 -0
- package/umd/five-sticker.js.LICENSE.txt +14 -0
- package/umd/five.js +2 -0
- package/umd/five.js.LICENSE.txt +116 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
//@ts-nocheck
|
|
2
|
+
|
|
3
|
+
import * as THREE from "three";
|
|
4
|
+
import * as React from "react";
|
|
5
|
+
import { Five } from "@realsee/five";
|
|
6
|
+
import { useFiveState, useFiveEventCallback, useFiveProject2d } from "@realsee/five/react";
|
|
7
|
+
|
|
8
|
+
const TAG_DEFAULT_LABEL = "未命名";
|
|
9
|
+
|
|
10
|
+
const styles: Record<string, React.CSSProperties> = {
|
|
11
|
+
"tag-container": {
|
|
12
|
+
position: "relative",
|
|
13
|
+
pointerEvents: "none",
|
|
14
|
+
overflow: "hidden",
|
|
15
|
+
},
|
|
16
|
+
"tag": {
|
|
17
|
+
pointerEvents: "auto",
|
|
18
|
+
position: "absolute",
|
|
19
|
+
width: 0,
|
|
20
|
+
height: 0,
|
|
21
|
+
transform: "translateZ(0)",
|
|
22
|
+
},
|
|
23
|
+
"tag-pannel": {
|
|
24
|
+
position: "absolute",
|
|
25
|
+
width: 100,
|
|
26
|
+
minHeight: 20,
|
|
27
|
+
transform: "translate(-50%, 0)",
|
|
28
|
+
left: "50%",
|
|
29
|
+
bottom: 10,
|
|
30
|
+
background: "#333",
|
|
31
|
+
color: "#fff",
|
|
32
|
+
borderRadius: 2,
|
|
33
|
+
textAlign: "center",
|
|
34
|
+
lineHeight: "20px",
|
|
35
|
+
padding: 8,
|
|
36
|
+
fontSize: 14,
|
|
37
|
+
},
|
|
38
|
+
"tag-tools": {
|
|
39
|
+
position: "absolute",
|
|
40
|
+
height: 16,
|
|
41
|
+
top: -10,
|
|
42
|
+
right: -7,
|
|
43
|
+
background: "#07a",
|
|
44
|
+
color: "#fff",
|
|
45
|
+
borderRadius: 7,
|
|
46
|
+
textAlign: "center",
|
|
47
|
+
lineHeight: "16px",
|
|
48
|
+
whiteSpace: "nowrap",
|
|
49
|
+
padding: "0 3px"
|
|
50
|
+
},
|
|
51
|
+
"tag-tool-button": {
|
|
52
|
+
border: "none",
|
|
53
|
+
cursor: "pointer",
|
|
54
|
+
background: "transparent",
|
|
55
|
+
color: "inherit",
|
|
56
|
+
fontSize: 12,
|
|
57
|
+
height: 16,
|
|
58
|
+
verticalAlign: "top",
|
|
59
|
+
},
|
|
60
|
+
"tag-arrow": {
|
|
61
|
+
position: "absolute",
|
|
62
|
+
width: 10,
|
|
63
|
+
height: 10,
|
|
64
|
+
left: "50%",
|
|
65
|
+
bottom: -5,
|
|
66
|
+
transform: "translate(-50%, 0) rotate(45deg)",
|
|
67
|
+
background: "#333",
|
|
68
|
+
pointerEvents: "none",
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
type Tag = {
|
|
73
|
+
position: THREE.Vector3,
|
|
74
|
+
label: string,
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
type PropTyps = {
|
|
78
|
+
width: number,
|
|
79
|
+
height: number,
|
|
80
|
+
initialTags: Tag[],
|
|
81
|
+
onChange(tags: Tag[]): void
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
const FiveTagComponent: React.FC<PropTyps> = (props) => {
|
|
85
|
+
const project2d = useFiveProject2d();
|
|
86
|
+
const [{ mode }] = useFiveState();
|
|
87
|
+
const testModel = mode === Five.Mode.Panorama || mode === Five.Mode.Model;
|
|
88
|
+
|
|
89
|
+
const [newTag, setNewTag] = React.useState<Tag | null>(null);
|
|
90
|
+
const [tags, setTags] = React.useState<Tag[]>(() => props.initialTags);
|
|
91
|
+
|
|
92
|
+
const removeTag = React.useCallback((index: number) => {
|
|
93
|
+
const newTags = tags.filter((_tag, index_) => index !== index_);
|
|
94
|
+
setTags(newTags);
|
|
95
|
+
props.onChange(newTags);
|
|
96
|
+
}, [tags]);
|
|
97
|
+
|
|
98
|
+
const editTag = React.useCallback((index: number) => {
|
|
99
|
+
const newLabel = window.prompt("修改标签名称", tags[index].label) || TAG_DEFAULT_LABEL;
|
|
100
|
+
const newTags = tags.map((tag, index_) => {
|
|
101
|
+
if (index_ === index) return { ...tag, label: newLabel };
|
|
102
|
+
return tag;
|
|
103
|
+
});
|
|
104
|
+
setTags(newTags);
|
|
105
|
+
props.onChange(newTags);
|
|
106
|
+
}, [tags]);
|
|
107
|
+
|
|
108
|
+
const addTag = React.useCallback(() => {
|
|
109
|
+
setNewTag({ position: new THREE.Vector3(), label: TAG_DEFAULT_LABEL });
|
|
110
|
+
}, []);
|
|
111
|
+
|
|
112
|
+
useFiveEventCallback("intersectionOnModelUpdate", (intersect) => {
|
|
113
|
+
if (newTag === null) return;
|
|
114
|
+
setNewTag({ ...newTag, position: intersect.point });
|
|
115
|
+
}, [newTag]);
|
|
116
|
+
|
|
117
|
+
useFiveEventCallback("wantsTapGesture", () => {
|
|
118
|
+
if (newTag !== null) {
|
|
119
|
+
const newTags = tags.concat(newTag)
|
|
120
|
+
setTags(newTags);
|
|
121
|
+
props.onChange(newTags);
|
|
122
|
+
setNewTag(null);
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
}, [tags, newTag]);
|
|
126
|
+
|
|
127
|
+
return <div style={{ ...styles["tag-container"], width: props.width, height: props.height }}>
|
|
128
|
+
<button style={{ position: "absolute", right: 0, bottom: 0, pointerEvents: "auto" }} onClick={() => addTag()}>添加标签</button>
|
|
129
|
+
{newTag && (() => {
|
|
130
|
+
const position = project2d(newTag.position, false);
|
|
131
|
+
if (position === null) return;
|
|
132
|
+
return <div style={{ ...styles["tag"], pointerEvents: "none", left: position.x, top: position.y }}>
|
|
133
|
+
<div style={{ ...styles["tag-pannel"] }}>
|
|
134
|
+
<span style={{ ...styles["tag-content"] }}>{newTag.label}</span>
|
|
135
|
+
<div style={{ ...styles["tag-arrow"] }}/>
|
|
136
|
+
</div>
|
|
137
|
+
</div>
|
|
138
|
+
})()}
|
|
139
|
+
{tags.map((tag, index) => {
|
|
140
|
+
const position = project2d(tag.position, testModel);
|
|
141
|
+
if (position === null) return;
|
|
142
|
+
return <div key={index} style={{ ...styles["tag"], left: position.x, top: position.y }}>
|
|
143
|
+
<div style={{ ...styles["tag-pannel"] }}>
|
|
144
|
+
<span style={{ ...styles["tag-content"] }}>{tag.label}</span>
|
|
145
|
+
<div style={{ ...styles["tag-tools"] }}>
|
|
146
|
+
<button style={{ ...styles["tag-tool-button"] }} onClick={() => editTag(index)}>编辑</button>
|
|
147
|
+
<span> | </span>
|
|
148
|
+
<button style={{ ...styles["tag-tool-button"] }} onClick={() => removeTag(index)}>删除</button>
|
|
149
|
+
</div>
|
|
150
|
+
<div style={{ ...styles["tag-arrow"] }}/>
|
|
151
|
+
</div>
|
|
152
|
+
</div>
|
|
153
|
+
}).filter(element => element !== undefined)}
|
|
154
|
+
</div>
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
export { FiveTagComponent, Tag };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "a-five-react-component",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "a-five-react-component",
|
|
5
|
+
"main": "./build/index.js",
|
|
6
|
+
"scripts": {
|
|
7
|
+
"example": "concurrently --names \"http,webpack\" --kill-others \"http-server ./ -p 8080 -c-1 --cors\" \"webpack -w --config ./devtools/webpack.example.js\"",
|
|
8
|
+
"build:example": "webpack --config ./devtools/webpack.example.js",
|
|
9
|
+
"build:doc": "typedoc --hideGenerator --includeVersion --excludeExternals --tsconfig ./devtools/tsconfig.build.json --out ./docs ./lib/index.tsx",
|
|
10
|
+
"build:typescript": "del ./build && tsc --project ./devtools/tsconfig.build.json",
|
|
11
|
+
"build:bundle": "webpack --progress --config ./devtools/webpack.bundle.js",
|
|
12
|
+
"build:all": "npm run build:doc && npm run build:typescript && && npm run build:example && npm run build:bundle"
|
|
13
|
+
},
|
|
14
|
+
"author": "realsee.com",
|
|
15
|
+
"license": "ISC",
|
|
16
|
+
"peerDependencies": {
|
|
17
|
+
"@types/react": "^17.0.14",
|
|
18
|
+
"react": "^17.0.2",
|
|
19
|
+
"three": "^0.117.1",
|
|
20
|
+
"typescript": "^4.3.2"
|
|
21
|
+
},
|
|
22
|
+
"devDependencies": {
|
|
23
|
+
"@types/react": "^17.0.14",
|
|
24
|
+
"@types/react-dom": "^17.0.9",
|
|
25
|
+
"concurrently": "^6.2.0",
|
|
26
|
+
"del-cli": "^4.0.1",
|
|
27
|
+
"glob": "^7.1.6",
|
|
28
|
+
"http-server": "^0.12.1",
|
|
29
|
+
"react": "^17.0.2",
|
|
30
|
+
"react-dom": "^17.0.2",
|
|
31
|
+
"three": "^0.117.1",
|
|
32
|
+
"ts-loader": "^9.1.1",
|
|
33
|
+
"typedoc": "^0.20.36",
|
|
34
|
+
"typescript": "^4.2.4",
|
|
35
|
+
"webpack": "^5.35.1",
|
|
36
|
+
"webpack-cli": "^4.6.0"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{
|
|
2
|
+
"compilerOptions": {
|
|
3
|
+
/* Basic Options */
|
|
4
|
+
"jsx": "react",
|
|
5
|
+
"target": "ES5",
|
|
6
|
+
"lib": ["ES5", "DOM"],
|
|
7
|
+
"declaration": true,
|
|
8
|
+
"sourceMap": true,
|
|
9
|
+
"rootDir": "./",
|
|
10
|
+
|
|
11
|
+
/* Strict Type-Checking Options */
|
|
12
|
+
"strict": true,
|
|
13
|
+
"noImplicitAny": true,
|
|
14
|
+
"strictNullChecks": true,
|
|
15
|
+
"declarationMap": false,
|
|
16
|
+
|
|
17
|
+
/* Module Resolution Options */
|
|
18
|
+
"moduleResolution": "node",
|
|
19
|
+
"baseUrl": "./",
|
|
20
|
+
"esModuleInterop": true,
|
|
21
|
+
"preserveSymlinks": true,
|
|
22
|
+
|
|
23
|
+
/* Experimental Options */
|
|
24
|
+
"experimentalDecorators": true,
|
|
25
|
+
"emitDecoratorMetadata": true
|
|
26
|
+
}
|
|
27
|
+
}
|