@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.
Files changed (173) hide show
  1. package/README.md +362 -0
  2. package/TERMS.txt +56 -0
  3. package/docs/.nojekyll +1 -0
  4. package/docs/assets/highlight.css +134 -0
  5. package/docs/assets/icons.css +1043 -0
  6. package/docs/assets/icons.png +0 -0
  7. package/docs/assets/icons@2x.png +0 -0
  8. package/docs/assets/main.js +52 -0
  9. package/docs/assets/search.js +1 -0
  10. package/docs/assets/style.css +1388 -0
  11. package/docs/assets/widgets.png +0 -0
  12. package/docs/assets/widgets@2x.png +0 -0
  13. package/docs/classes/five.AnimationFrameLoop.html +15 -0
  14. package/docs/classes/five.BVH.html +10 -0
  15. package/docs/classes/five.BVHIntersect.html +1 -0
  16. package/docs/classes/five.BVHNode.html +7 -0
  17. package/docs/classes/five.BVHVector3.html +1 -0
  18. package/docs/classes/five.Camera.html +11 -0
  19. package/docs/classes/five.Five.html +303 -0
  20. package/docs/classes/five.InternalWebGLRenderer.html +1 -0
  21. package/docs/classes/five.IntersectMesh.html +1 -0
  22. package/docs/classes/five.LegacyPanoCircleMesh.html +5 -0
  23. package/docs/classes/five.Model.html +77 -0
  24. package/docs/classes/five.NetworkSubscribe.html +50 -0
  25. package/docs/classes/five.PBMContainer.html +17 -0
  26. package/docs/classes/five.PBMGroup.html +19 -0
  27. package/docs/classes/five.PBMMaterial.html +15 -0
  28. package/docs/classes/five.PBMMesh.html +7 -0
  29. package/docs/classes/five.PanoCircleMesh.html +7 -0
  30. package/docs/classes/five.Scene.html +3 -0
  31. package/docs/classes/five.Subscribe.html +56 -0
  32. package/docs/classes/five.Work.html +30 -0
  33. package/docs/classes/gltf_loader.GLTFLoader.html +17 -0
  34. package/docs/classes/gltf_loader.GLTFObject.html +7 -0
  35. package/docs/classes/line.Line.html +1 -0
  36. package/docs/classes/line.LineGeometry.html +1 -0
  37. package/docs/classes/line.LineMaterial.html +1 -0
  38. package/docs/classes/line.LineSegmentsGeometry.html +1 -0
  39. package/docs/classes/line.THREE_Line2.html +1 -0
  40. package/docs/classes/line.THREE_LineSegments2.html +1 -0
  41. package/docs/classes/react.Store.html +29 -0
  42. package/docs/classes/server.BVH.html +10 -0
  43. package/docs/classes/server.BVHIntersect.html +1 -0
  44. package/docs/classes/server.BVHNode.html +7 -0
  45. package/docs/classes/server.BVHVector3.html +1 -0
  46. package/docs/classes/server.Model.html +63 -0
  47. package/docs/classes/server.PBMGroup.html +9 -0
  48. package/docs/classes/server.PBMMesh.html +7 -0
  49. package/docs/classes/sticker.Sticker.html +32 -0
  50. package/docs/index.html +182 -0
  51. package/docs/interfaces/five.AddableObject.html +1 -0
  52. package/docs/interfaces/five.AnimationFrame.html +1 -0
  53. package/docs/interfaces/five.CameraPose.html +1 -0
  54. package/docs/interfaces/five.DepthPanoramaControllerCustomInitArgs.html +28 -0
  55. package/docs/interfaces/five.EventCallback.html +391 -0
  56. package/docs/interfaces/five.FiveInitArgs.html +96 -0
  57. package/docs/interfaces/five.FloorplanControllerCustomInitArgs.html +15 -0
  58. package/docs/interfaces/five.ImageOptions.html +16 -0
  59. package/docs/interfaces/five.ImageURLOptions.html +1 -0
  60. package/docs/interfaces/five.IntersectMeshInterface.html +3 -0
  61. package/docs/interfaces/five.Intersection.html +7 -0
  62. package/docs/interfaces/five.ModelControllerCustomInitArgs.html +20 -0
  63. package/docs/interfaces/five.ModelEventCallback.html +22 -0
  64. package/docs/interfaces/five.MovePanoOptions.html +39 -0
  65. package/docs/interfaces/five.PBMPanoPicture.html +7 -0
  66. package/docs/interfaces/five.PBMParameters.html +15 -0
  67. package/docs/interfaces/five.PanoCircleMeshInterface.html +19 -0
  68. package/docs/interfaces/five.PanoramaControllerCustomInitArgs.html +28 -0
  69. package/docs/interfaces/five.PanoramaLikeControllerCustomInitArgs.html +20 -0
  70. package/docs/interfaces/five.Pose.html +35 -0
  71. package/docs/interfaces/five.Scissor.html +14 -0
  72. package/docs/interfaces/five.State.html +19 -0
  73. package/docs/interfaces/five.SubscribeMixinType.emit.html +1 -0
  74. package/docs/interfaces/five.SubscribeMixinType.hasListener.html +1 -0
  75. package/docs/interfaces/five.SubscribeMixinType.off.html +1 -0
  76. package/docs/interfaces/five.SubscribeMixinType.on.html +1 -0
  77. package/docs/interfaces/five.SubscribeMixinType.once.html +1 -0
  78. package/docs/interfaces/five.TextureOptions.html +18 -0
  79. package/docs/interfaces/five.TopviewControllerCustomInitArgs.html +7 -0
  80. package/docs/interfaces/five.VRPanoramaControllerCustomInitArgs.html +24 -0
  81. package/docs/interfaces/five.WorkCubeImage.html +13 -0
  82. package/docs/interfaces/five.WorkImage.html +21 -0
  83. package/docs/interfaces/five.WorkInitial.html +13 -0
  84. package/docs/interfaces/five.WorkModel.html +11 -0
  85. package/docs/interfaces/five.WorkObserver.html +25 -0
  86. package/docs/interfaces/five.WorkTile.html +1 -0
  87. package/docs/interfaces/five.WorkVideo.html +9 -0
  88. package/docs/interfaces/gltf_loader.GLTF.html +7 -0
  89. package/docs/interfaces/react.FiveActionReactCallbacks.html +62 -0
  90. package/docs/interfaces/react.FiveInjectionTypes.html +191 -0
  91. package/docs/interfaces/react.PropTypeOfFiveFeatures.html +1 -0
  92. package/docs/interfaces/server.Intersection.html +7 -0
  93. package/docs/interfaces/server.ModelEventCallback.html +18 -0
  94. package/docs/interfaces/sticker.IntersectionLike.html +8 -0
  95. package/docs/media/coordinate.jpg +0 -0
  96. package/docs/media/topview.jpg +0 -0
  97. package/docs/media/typescript.jpg +0 -0
  98. package/docs/modules/five.SubscribeMixinType.html +1 -0
  99. package/docs/modules/five.html +481 -0
  100. package/docs/modules/gltf_loader.html +1 -0
  101. package/docs/modules/line.html +1 -0
  102. package/docs/modules/react.html +130 -0
  103. package/docs/modules/server.html +18 -0
  104. package/docs/modules/sticker.html +1 -0
  105. package/docs/modules.html +1 -0
  106. package/exporters/staticify.js +203 -0
  107. package/five/index.d.ts +2061 -0
  108. package/five/index.js +372 -0
  109. package/gltf-loader/index.d.ts +75 -0
  110. package/gltf-loader/index.js +260 -0
  111. package/line/index.d.ts +68 -0
  112. package/line/index.js +260 -0
  113. package/package.json +36 -0
  114. package/react/index.d.ts +812 -0
  115. package/react/index.js +260 -0
  116. package/resource/basis/basis_transcoder.js +22 -0
  117. package/resource/basis/basis_transcoder.wasm +0 -0
  118. package/resource/gltf/draco_decoder.js +31 -0
  119. package/resource/gltf/draco_decoder.wasm +0 -0
  120. package/resource/gltf/draco_wasm_wrapper.js +119 -0
  121. package/scripts/five-plugin-init.js +83 -0
  122. package/scripts/five-quick-start-init.js +80 -0
  123. package/scripts/five-react-component-init.js +83 -0
  124. package/scripts/five-staticify.js +21 -0
  125. package/server/index.d.ts +568 -0
  126. package/server/index.js +367 -0
  127. package/sticker/index.d.ts +70 -0
  128. package/sticker/index.js +260 -0
  129. package/templates/plugin/README.md +38 -0
  130. package/templates/plugin/devtools/external-five.js +5 -0
  131. package/templates/plugin/devtools/external-three.js +5 -0
  132. package/templates/plugin/devtools/tsconfig.build.json +18 -0
  133. package/templates/plugin/devtools/webpack.bundle.js +44 -0
  134. package/templates/plugin/devtools/webpack.example.js +39 -0
  135. package/templates/plugin/docs/.gitkeep +0 -0
  136. package/templates/plugin/examples/data.json +507 -0
  137. package/templates/plugin/examples/index.html +28 -0
  138. package/templates/plugin/examples/index.ts +12 -0
  139. package/templates/plugin/lib/index.ts +30 -0
  140. package/templates/plugin/package.json +32 -0
  141. package/templates/plugin/tsconfig.json +26 -0
  142. package/templates/quick-start/README.md +47 -0
  143. package/templates/quick-start/assets/work.json +507 -0
  144. package/templates/quick-start/index.html +54 -0
  145. package/templates/quick-start/index.tsx +123 -0
  146. package/templates/quick-start/package.json +25 -0
  147. package/templates/quick-start/tsconfig.json +27 -0
  148. package/templates/quick-start/webpack.config.js +45 -0
  149. package/templates/quick-start/webpack.production.js +42 -0
  150. package/templates/react-component/README.md +32 -0
  151. package/templates/react-component/devtools/external-five.js +5 -0
  152. package/templates/react-component/devtools/external-react.js +5 -0
  153. package/templates/react-component/devtools/external-three.js +5 -0
  154. package/templates/react-component/devtools/tsconfig.build.json +19 -0
  155. package/templates/react-component/devtools/webpack.bundle.js +44 -0
  156. package/templates/react-component/devtools/webpack.example.js +39 -0
  157. package/templates/react-component/docs/.gitkeep +0 -0
  158. package/templates/react-component/examples/data.json +507 -0
  159. package/templates/react-component/examples/index.html +17 -0
  160. package/templates/react-component/examples/index.tsx +62 -0
  161. package/templates/react-component/lib/index.tsx +157 -0
  162. package/templates/react-component/package.json +38 -0
  163. package/templates/react-component/tsconfig.json +27 -0
  164. package/umd/five-gltf-loader.js +2 -0
  165. package/umd/five-gltf-loader.js.LICENSE.txt +14 -0
  166. package/umd/five-line.js +2 -0
  167. package/umd/five-line.js.LICENSE.txt +14 -0
  168. package/umd/five-react.js +2 -0
  169. package/umd/five-react.js.LICENSE.txt +14 -0
  170. package/umd/five-sticker.js +2 -0
  171. package/umd/five-sticker.js.LICENSE.txt +14 -0
  172. package/umd/five.js +2 -0
  173. 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
+ }