hart-estate-widget 0.0.9 → 0.0.10
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 +1 -0
- package/build/assets/img/grass.png +0 -0
- package/build/assets/sass/components/model.sass +14 -0
- package/build/assets/sass/components/panorama.sass +1 -1
- package/build/assets/sass/index.sass +1 -0
- package/build/components/Application.js +5 -1
- package/build/components/ModelTab.js +115 -0
- package/build/components/PanoramaTab.js +5 -3
- package/build/index.css +1 -1
- package/build/index.css.map +1 -1
- package/build/index.js +16 -0
- package/build/utils/modelHelpers.js +81 -0
- package/build/utils/{helpers.js → panoramaHelpers.js} +4 -0
- package/package.json +12 -2
package/README.md
CHANGED
Binary file
|
@@ -21,6 +21,8 @@ var _RotationTab = _interopRequireDefault(require("./RotationTab"));
|
|
21
21
|
|
22
22
|
var _PanoramaTab = _interopRequireDefault(require("./PanoramaTab"));
|
23
23
|
|
24
|
+
var _ModelTab = _interopRequireDefault(require("./ModelTab"));
|
25
|
+
|
24
26
|
var _TabWrapper = _interopRequireDefault(require("./TabWrapper"));
|
25
27
|
|
26
28
|
var _D = _interopRequireDefault(require("../assets/img/3D.jpg"));
|
@@ -82,7 +84,9 @@ const Application = (0, _mobxReactLite.observer)(_ref => {
|
|
82
84
|
title: "3D Model",
|
83
85
|
text: ['Use mouse to rotate', 'Use the right mouse button to move'],
|
84
86
|
onStart: hideTabPanes
|
85
|
-
}, /*#__PURE__*/_react.default.createElement(
|
87
|
+
}, /*#__PURE__*/_react.default.createElement(_ModelTab.default, {
|
88
|
+
json: config.json
|
89
|
+
}))
|
86
90
|
};
|
87
91
|
const appStyle = {
|
88
92
|
width,
|
@@ -0,0 +1,115 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.default = void 0;
|
7
|
+
|
8
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
9
|
+
|
10
|
+
var _react = _interopRequireWildcard(require("react"));
|
11
|
+
|
12
|
+
var THREE = _interopRequireWildcard(require("three"));
|
13
|
+
|
14
|
+
var _cameraControls = _interopRequireDefault(require("camera-controls"));
|
15
|
+
|
16
|
+
var _modelHelpers = require("../utils/modelHelpers");
|
17
|
+
|
18
|
+
var _grass = _interopRequireDefault(require("../assets/img/grass.png"));
|
19
|
+
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
|
+
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
23
|
+
|
24
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
25
|
+
|
26
|
+
_cameraControls.default.install({
|
27
|
+
THREE: THREE
|
28
|
+
});
|
29
|
+
|
30
|
+
const textureLoader = new THREE.TextureLoader();
|
31
|
+
|
32
|
+
const createScene = () => {
|
33
|
+
const scene = new THREE.Scene();
|
34
|
+
const light = new THREE.AmbientLight(0xffffff);
|
35
|
+
scene.background = new THREE.Color('#FAFAFA');
|
36
|
+
scene.add(light);
|
37
|
+
createGround(scene);
|
38
|
+
return scene;
|
39
|
+
};
|
40
|
+
|
41
|
+
const createCamera = renderer => {
|
42
|
+
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
|
43
|
+
camera.position.set(0, 0, 0);
|
44
|
+
window.addEventListener('resize', () => {
|
45
|
+
camera.aspect = window.innerWidth / window.innerHeight;
|
46
|
+
camera.updateProjectionMatrix();
|
47
|
+
renderer.setSize(window.innerWidth, window.innerHeight);
|
48
|
+
});
|
49
|
+
return camera;
|
50
|
+
};
|
51
|
+
|
52
|
+
const createRenderer = () => {
|
53
|
+
const renderer = new THREE.WebGLRenderer();
|
54
|
+
renderer.setPixelRatio(window.devicePixelRatio);
|
55
|
+
renderer.setSize(window.innerWidth, window.innerHeight);
|
56
|
+
renderer.localClippingEnabled = true;
|
57
|
+
return renderer;
|
58
|
+
};
|
59
|
+
|
60
|
+
const createControls = (clock, camera, scene, renderer) => {
|
61
|
+
const controls = new _cameraControls.default(camera, renderer.domElement);
|
62
|
+
controls.minDistance = 0.5;
|
63
|
+
controls.maxDistance = 180;
|
64
|
+
controls.maxPolarAngle = Math.PI / 2.1;
|
65
|
+
(0, _modelHelpers.setDefaultControls)(controls, Math.PI / 4);
|
66
|
+
controls.verticalDragToForward = true;
|
67
|
+
(0, _modelHelpers.addKeyboardControls)(controls);
|
68
|
+
|
69
|
+
const animate = () => {
|
70
|
+
controls.update(clock.getDelta());
|
71
|
+
window.requestAnimationFrame(animate);
|
72
|
+
renderer.render(scene, camera);
|
73
|
+
};
|
74
|
+
|
75
|
+
animate();
|
76
|
+
return controls;
|
77
|
+
};
|
78
|
+
|
79
|
+
const createGround = scene => {
|
80
|
+
textureLoader.load(_grass.default, grassTexture => {
|
81
|
+
grassTexture.wrapS = grassTexture.wrapT = THREE.RepeatWrapping;
|
82
|
+
grassTexture.repeat.set(70, 70);
|
83
|
+
let groundMaterial = new THREE.MeshBasicMaterial({
|
84
|
+
map: grassTexture,
|
85
|
+
color: 'rgb(255,255,255)'
|
86
|
+
});
|
87
|
+
let groundMesh = new THREE.Mesh(new THREE.PlaneBufferGeometry(500, 500), groundMaterial);
|
88
|
+
groundMesh.rotation.x = -Math.PI / 2;
|
89
|
+
scene.add(groundMesh);
|
90
|
+
});
|
91
|
+
};
|
92
|
+
|
93
|
+
const ModelTab = _ref => {
|
94
|
+
let {
|
95
|
+
json
|
96
|
+
} = _ref;
|
97
|
+
const [clock] = (0, _react.useState)(new THREE.Clock());
|
98
|
+
const [scene] = (0, _react.useState)(createScene());
|
99
|
+
const [renderer] = (0, _react.useState)(createRenderer());
|
100
|
+
const [camera] = (0, _react.useState)(createCamera(renderer));
|
101
|
+
const [controls] = (0, _react.useState)(createControls(clock, camera, scene, renderer));
|
102
|
+
(0, _react.useEffect)(() => {
|
103
|
+
const container = document.querySelector('.widget-tab__model-scene');
|
104
|
+
if (container.children.length !== 0) return;
|
105
|
+
container.appendChild(renderer.domElement);
|
106
|
+
}, [renderer]);
|
107
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
108
|
+
className: "widget-tab__model"
|
109
|
+
}, /*#__PURE__*/_react.default.createElement("div", {
|
110
|
+
className: "widget-tab__model-scene"
|
111
|
+
}));
|
112
|
+
};
|
113
|
+
|
114
|
+
var _default = ModelTab;
|
115
|
+
exports.default = _default;
|
@@ -21,7 +21,7 @@ var _threeDeviceOrientation = _interopRequireDefault(require("three-device-orien
|
|
21
21
|
|
22
22
|
var _Loader = _interopRequireDefault(require("./Loader"));
|
23
23
|
|
24
|
-
var
|
24
|
+
var _panoramaHelpers = require("../utils/panoramaHelpers");
|
25
25
|
|
26
26
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
27
27
|
|
@@ -68,7 +68,7 @@ const getPanoramaRooms = (json, panoramas) => {
|
|
68
68
|
const {
|
69
69
|
left,
|
70
70
|
top
|
71
|
-
} = (0,
|
71
|
+
} = (0, _panoramaHelpers.findRoomCenter)(currentRoom, Walls, Vertices);
|
72
72
|
return {
|
73
73
|
type: currentRoom.Type,
|
74
74
|
id: index,
|
@@ -92,6 +92,8 @@ const initPanorama = () => {
|
|
92
92
|
controls.update();
|
93
93
|
};
|
94
94
|
|
95
|
+
animate();
|
96
|
+
|
95
97
|
if (DeviceOrientationEvent.requestPermission) {
|
96
98
|
DeviceOrientationEvent.requestPermission().catch(() => console.log('Device motion not allowed'));
|
97
99
|
}
|
@@ -147,7 +149,7 @@ const PanoramaTab = _ref => {
|
|
147
149
|
|
148
150
|
const setScale = () => {
|
149
151
|
const image = document.querySelector('.widget-tab__panorama-map img');
|
150
|
-
setPlanScale((0,
|
152
|
+
setPlanScale((0, _panoramaHelpers.getScale)(image, json));
|
151
153
|
};
|
152
154
|
|
153
155
|
const getDotClassName = index => {
|
package/build/index.css
CHANGED
@@ -1 +1 @@
|
|
1
|
-
*,*:before,*:after{box-sizing:border-box;-webkit-box-sizing:border-box;margin:0;padding:0}html,body{font-size:20px}.widget-application{--vh: 100vh;width:100%;height:calc(100*var(--vh));overflow:hidden;position:relative;z-index:1}.widget-application *,.widget-application *:before,.widget-application *:after{font-family:"Lato",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;outline:none;font-weight:400;text-decoration:none}.widget-application .widget-close{position:absolute;display:flex;align-items:center;justify-content:center;z-index:3;right:15px;top:15px;color:#000;background-color:#fad436;padding:5px 15px;border-radius:10px;font-size:.8rem;border:none;cursor:pointer}.widget-application .widget-close:hover{box-shadow:1px 1px 10px rgba(0,0,0,.15)}.widget-application .widget-tab{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:60px 30px 125px 30px}@media(max-width: 630px){.widget-application .widget-tab{padding:60px 15px 90px 15px}}.widget-application .widget-tab--panes-hidden{padding:60px 30px}.widget-application .widget-tab__image{max-width:100%;max-height:100%;object-fit:contain;display:block}.widget-application .widget-tab__threesixty{width:100%;height:100%;touch-action:none;-webkit-touch-action:none}.widget-application .widget-tab__threesixty-container{width:100% !important;height:100% !important;position:relative;cursor:move;background-image:none !important}.widget-application .widget-tab__threesixty-container img{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);max-width:100%;max-height:100%;object-fit:contain;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab--panorama .widget-tab__image,.widget-application .widget-tab--model .widget-tab__image{position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;object-fit:cover}.widget-application .widget-tab-panes{position:absolute;z-index:3;left:50%;bottom:5px;max-width:100%;padding:0 30px 15px 30px;transform:translateX(-50%);display:flex;align-items:center;justify-content:flex-start;overflow-x:auto}@media(max-width: 630px){.widget-application .widget-tab-panes{padding:0 15px 15px 15px}}.widget-application .widget-tab-panes .widget-tab-pane{width:85px;height:85px;border-radius:5px;margin:0 10px;background-color:#f4f7f7;cursor:pointer;border-width:3px;border-style:solid;border-color:#f4f7f7;overflow:hidden;display:flex;align-items:center;justify-content:center;flex:none;transition:border .3s ease;position:relative;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}@media(max-width: 630px){.widget-application .widget-tab-panes .widget-tab-pane{width:50px;height:50px;margin:0 5px}}.widget-application .widget-tab-panes .widget-tab-pane::before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;box-shadow:inset 1px 1px 10px rgba(0,0,0,.3)}.widget-application .widget-tab-panes .widget-tab-pane--active,.widget-application .widget-tab-panes .widget-tab-pane:hover{border-color:#fad436}.widget-application .widget-tab-panes .widget-tab-pane__image{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.widget-application .widget-tab-panes .widget-tab-pane__icon{width:16px;height:16px;object-fit:contain;object-position:center;display:block;position:absolute;left:10px;bottom:8px}@media(max-width: 630px){.widget-application .widget-tab-panes .widget-tab-pane__icon{width:12px;height:12px;left:5px;bottom:3px}}.widget-application .widget-instructions{position:absolute;z-index:2;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.3)}.widget-application .widget-instructions__content{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;background-color:#fff;box-shadow:1px 1px 10px rgba(0,0,0,.5);border-radius:5px;overflow:hidden;width:350px}.widget-application .widget-instructions__head{width:100%;padding:10px;border-bottom:1px solid #d1d1d1;color:rgba(74,74,74,.7);text-align:center;font-size:.8rem}.widget-application .widget-instructions__body{width:100%;padding:10px;text-align:center;font-size:.7rem}.widget-application .widget-instructions__body p{margin:10px 0}.widget-application .widget-instructions__footer{width:100%}.widget-application .widget-instructions__footer button{width:100%;background-color:#fad436;font-size:.8rem;font-weight:500;text-align:center;color:#000;cursor:pointer;border:none;padding:10px 5px}/*# sourceMappingURL=index.css.map */
|
1
|
+
*,*:before,*:after{box-sizing:border-box;-webkit-box-sizing:border-box;margin:0;padding:0}html,body{font-size:20px}.widget-application{--vh: 100vh;width:100%;height:calc(100*var(--vh));overflow:hidden;position:relative;z-index:1}.widget-application *,.widget-application *:before,.widget-application *:after{font-family:"Lato",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;outline:none;font-weight:400;text-decoration:none}.widget-application .widget-close{position:absolute;display:flex;align-items:center;justify-content:center;z-index:3;right:15px;top:15px;color:#000;background-color:#fad436;padding:5px 15px;border-radius:10px;font-size:.8rem;border:none;cursor:pointer}.widget-application .widget-close:hover{box-shadow:1px 1px 10px rgba(0,0,0,.15)}.widget-application .widget-tab{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:60px 30px 125px 30px}@media(max-width: 630px){.widget-application .widget-tab{padding:60px 15px 90px 15px}}.widget-application .widget-tab--panes-hidden{padding:60px 30px}.widget-application .widget-tab__image{max-width:100%;max-height:100%;object-fit:contain;display:block}.widget-application .widget-tab__threesixty{width:100%;height:100%;touch-action:none;-webkit-touch-action:none}.widget-application .widget-tab__threesixty-container{width:100% !important;height:100% !important;position:relative;cursor:move;background-image:none !important}.widget-application .widget-tab__threesixty-container img{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%);max-width:100%;max-height:100%;object-fit:contain;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab--panorama .widget-tab__image,.widget-application .widget-tab--model .widget-tab__image{position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;object-fit:cover}.widget-application .widget-tab-panes{position:absolute;z-index:3;left:50%;bottom:5px;max-width:100%;padding:0 30px 15px 30px;transform:translateX(-50%);display:flex;align-items:center;justify-content:flex-start;overflow-x:auto}@media(max-width: 630px){.widget-application .widget-tab-panes{padding:0 15px 15px 15px}}.widget-application .widget-tab-panes .widget-tab-pane{width:85px;height:85px;border-radius:5px;margin:0 10px;background-color:#f4f7f7;cursor:pointer;border-width:3px;border-style:solid;border-color:#f4f7f7;overflow:hidden;display:flex;align-items:center;justify-content:center;flex:none;transition:border .3s ease;position:relative;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}@media(max-width: 630px){.widget-application .widget-tab-panes .widget-tab-pane{width:50px;height:50px;margin:0 5px}}.widget-application .widget-tab-panes .widget-tab-pane::before{content:"";position:absolute;left:0;top:0;width:100%;height:100%;box-shadow:inset 1px 1px 10px rgba(0,0,0,.3)}.widget-application .widget-tab-panes .widget-tab-pane--active,.widget-application .widget-tab-panes .widget-tab-pane:hover{border-color:#fad436}.widget-application .widget-tab-panes .widget-tab-pane__image{width:100%;height:100%;object-fit:cover;object-position:center;display:block}.widget-application .widget-tab-panes .widget-tab-pane__icon{width:16px;height:16px;object-fit:contain;object-position:center;display:block;position:absolute;left:10px;bottom:8px}@media(max-width: 630px){.widget-application .widget-tab-panes .widget-tab-pane__icon{width:12px;height:12px;left:5px;bottom:3px}}.widget-application .widget-instructions{position:absolute;z-index:2;left:0;top:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;background-color:rgba(0,0,0,.3)}.widget-application .widget-instructions__content{display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;background-color:#fff;box-shadow:1px 1px 10px rgba(0,0,0,.5);border-radius:5px;overflow:hidden;width:350px}.widget-application .widget-instructions__head{width:100%;padding:10px;border-bottom:1px solid #d1d1d1;color:rgba(74,74,74,.7);text-align:center;font-size:.8rem}.widget-application .widget-instructions__body{width:100%;padding:10px;text-align:center;font-size:.7rem}.widget-application .widget-instructions__body p{margin:10px 0}.widget-application .widget-instructions__footer{width:100%}.widget-application .widget-instructions__footer button{width:100%;background-color:#fad436;font-size:.8rem;font-weight:500;text-align:center;color:#000;cursor:pointer;border:none;padding:10px 5px}.widget-application .widget-tab__panorama{width:100%;height:100%;position:absolute;left:0;top:0}.widget-application .widget-tab__panorama-overlay{width:100%;height:100%;overflow:hidden}.widget-application .widget-tab__panorama-mode,.widget-application .widget-tab__panorama-standart{position:absolute;right:15px;bottom:20px;color:#000;background-color:#fad436;padding:5px 15px;border-radius:10px;font-size:1rem;font-weight:bold;border:none;cursor:pointer;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab__panorama-mode:hover,.widget-application .widget-tab__panorama-standart:hover{box-shadow:1px 1px 10px rgba(0,0,0,.15)}.widget-application .widget-tab__panorama-standart{right:100px}.widget-application .widget-tab__panorama-map{position:absolute;right:15px;bottom:70px;z-index:10000}.widget-application .widget-tab__panorama-map img{width:100px;border-radius:10px}.widget-application .widget-tab__panorama-map img.active{width:240px}.widget-application .widget-tab__panorama-map img:hover{box-shadow:1px 1px 10px rgba(0,0,0,.15)}.widget-application .widget-tab__panorama-map__dot{position:absolute;left:0;top:0;transform:translate(-50%, -50%);width:5px;height:5px;background-color:#fad436;border-radius:50%;cursor:pointer;z-index:10}.widget-application .widget-tab__panorama-map__dot--big{border:2px solid #fad436;box-shadow:inset 0 0 0 2px #fff;width:15px;height:15px}.widget-application .widget-tab__panorama-map__dot--active{background-color:red;border:2px solid red}.widget-application .widget-tab__panorama-menu{position:absolute;z-index:3;left:15px;top:15px;max-height:100%;overflow-y:auto;padding-bottom:30px}.widget-application .widget-tab__panorama-menu ul{list-style-type:none}.widget-application .widget-tab__panorama-menu ul li{color:#000;background-color:#fad436;padding:5px 15px;border-radius:10px;font-size:.8rem;border:none;cursor:pointer;margin-bottom:15px;width:150px;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab__panorama-menu ul li:hover{box-shadow:1px 1px 10px rgba(0,0,0,.15)}.widget-application .widget-tab__panorama-menu ul li:nth-child(1){position:relative}.widget-application .widget-tab__panorama-menu ul li:nth-child(1)::after{content:"|||";transform:translateY(-50%) rotate(90deg);font-size:20px;line-height:20px;margin-left:10px;display:block;position:absolute;right:10px;top:50%}.widget-loader{display:block;position:relative;width:80px;height:80px}.widget-loader--absolute{position:absolute;left:50%;top:50%;transform:translate(-50%, -50%)}.widget-loader div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:#fad436;animation-timing-function:cubic-bezier(0, 1, 1, 0)}.widget-loader div:nth-child(1){left:8px;animation:widget-loader-1 .6s infinite}.widget-loader div:nth-child(2){left:8px;animation:widget-loader-2 .6s infinite}.widget-loader div:nth-child(3){left:32px;animation:widget-loader-2 .6s infinite}.widget-loader div:nth-child(4){left:56px;animation:widget-loader-3 .6s infinite}@keyframes widget-loader-1{0%{transform:scale(0)}100%{transform:scale(1)}}@keyframes widget-loader-3{0%{transform:scale(1)}100%{transform:scale(0)}}@keyframes widget-loader-2{0%{transform:translate(0, 0)}100%{transform:translate(24px, 0)}}.widget-application .widget-tab__model{width:100%;height:100%;position:absolute;left:0;top:0}.widget-application .widget-tab__model-scene{width:100%;height:100%;display:block}/*# sourceMappingURL=index.css.map */
|
package/build/index.css.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../src/assets/sass/index.sass","../src/assets/sass/vars.sass","../src/assets/sass/components/tabs.sass","../src/assets/sass/components/instructions.sass"],"names":[],"mappings":"AAEA,mBACE,sBACA,8BACA,SACA,UAEF,UACE,eAEF,oBACE,YAEA,WACA,2BACA,gBACA,kBACA,UAEA,+EACE,8BACA,mCACA,kCACA,aACA,gBACA,qBAEF,kCACE,kBACA,aACA,mBACA,uBACA,UACA,WACA,SACA,MC9BI,KD+BJ,iBC7BQ,QD8BR,iBACA,mBACA,gBACA,YACA,eACA,wCACE,wCEzCJ,gCACE,WACA,YACA,aACA,mBACA,uBACA,6BACA,yBAPF,gCAQI,6BACF,8CACE,kBACF,uCACE,eACA,gBACA,mBACA,cACF,4CACE,WACA,YACA,kBACA,0BACA,sDACE,sBACA,uBACA,kBACA,YACA,iCACA,0DACE,kBACA,SACA,QACA,gCACA,eACA,gBACA,mBD1BR,iBACA,yBACA,eACA,uBC2BI,uHACE,kBACA,UACA,OACA,MACA,WACA,YACA,iBAEN,sCACE,kBACA,UACA,SACA,WACA,eACA,yBACA,2BACA,aACA,mBACA,2BACA,gBACA,yBAZF,sCAaI,0BACF,uDACE,WACA,YACA,kBACA,cACA,iBD9DM,QC+DN,eACA,iBACA,mBACA,aDlEM,QCmEN,gBACA,aACA,mBACA,uBACA,UACA,2BACA,kBDrEJ,iBACA,yBACA,eACA,uBCoEI,yBAlBF,uDAmBI,WACA,YACA,cACF,+DACE,WACA,kBACA,OACA,MACA,WACA,YACA,6CACF,4HAEE,aDxFI,QCyFN,8DACE,WACA,YACA,iBACA,uBACA,cACF,6DACE,WACA,YACA,mBACA,uBACA,cACA,kBACA,UACA,WACA,yBATF,6DAUI,WACA,YACA,SACA,YCjHR,yCACE,kBACA,UACA,OACA,MACA,WACA,YACA,aACA,mBACA,uBACA,gCACA,kDACE,aACA,sBACA,uBACA,2BACA,iBFdE,KEeF,uCACA,kBACA,gBACA,YACF,+CACE,WACA,aACA,gCACA,wBACA,kBACA,gBACF,+CACE,WACA,aACA,kBACA,gBACA,iDACE,cACJ,iDACE,WACA,wDACE,WACA,iBFlCI,QEmCJ,gBACA,gBACA,kBACA,WACA,eACA,YACA","file":"index.css"}
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../src/assets/sass/index.sass","../src/assets/sass/vars.sass","../src/assets/sass/components/tabs.sass","../src/assets/sass/components/instructions.sass","../src/assets/sass/components/panorama.sass","../src/assets/sass/components/loader.sass","../src/assets/sass/components/model.sass"],"names":[],"mappings":"AAEA,mBACE,sBACA,8BACA,SACA,UAEF,UACE,eAEF,oBACE,YAEA,WACA,2BACA,gBACA,kBACA,UAEA,+EACE,8BACA,mCACA,kCACA,aACA,gBACA,qBAEF,kCACE,kBACA,aACA,mBACA,uBACA,UACA,WACA,SACA,MC9BI,KD+BJ,iBC7BQ,QD8BR,iBACA,mBACA,gBACA,YACA,eACA,wCACE,wCEzCJ,gCACE,WACA,YACA,aACA,mBACA,uBACA,6BACA,yBAPF,gCAQI,6BACF,8CACE,kBACF,uCACE,eACA,gBACA,mBACA,cACF,4CACE,WACA,YACA,kBACA,0BACA,sDACE,sBACA,uBACA,kBACA,YACA,iCACA,0DACE,kBACA,SACA,QACA,gCACA,eACA,gBACA,mBD1BR,iBACA,yBACA,eACA,uBC2BI,uHACE,kBACA,UACA,OACA,MACA,WACA,YACA,iBAEN,sCACE,kBACA,UACA,SACA,WACA,eACA,yBACA,2BACA,aACA,mBACA,2BACA,gBACA,yBAZF,sCAaI,0BACF,uDACE,WACA,YACA,kBACA,cACA,iBD9DM,QC+DN,eACA,iBACA,mBACA,aDlEM,QCmEN,gBACA,aACA,mBACA,uBACA,UACA,2BACA,kBDrEJ,iBACA,yBACA,eACA,uBCoEI,yBAlBF,uDAmBI,WACA,YACA,cACF,+DACE,WACA,kBACA,OACA,MACA,WACA,YACA,6CACF,4HAEE,aDxFI,QCyFN,8DACE,WACA,YACA,iBACA,uBACA,cACF,6DACE,WACA,YACA,mBACA,uBACA,cACA,kBACA,UACA,WACA,yBATF,6DAUI,WACA,YACA,SACA,YCjHR,yCACE,kBACA,UACA,OACA,MACA,WACA,YACA,aACA,mBACA,uBACA,gCACA,kDACE,aACA,sBACA,uBACA,2BACA,iBFdE,KEeF,uCACA,kBACA,gBACA,YACF,+CACE,WACA,aACA,gCACA,wBACA,kBACA,gBACF,+CACE,WACA,aACA,kBACA,gBACA,iDACE,cACJ,iDACE,WACA,wDACE,WACA,iBFlCI,QEmCJ,gBACA,gBACA,kBACA,WACA,eACA,YACA,iBC7CJ,0CACE,WACA,YACA,kBACA,OACA,MACA,kDACE,WACA,YACA,gBACF,kGAEE,kBACA,WACA,YACA,MHbA,KGcA,iBHZI,QGaJ,iBACA,mBACA,eACA,iBACA,YACA,eHfN,iBACA,yBACA,eACA,uBGcM,8GACE,wCACJ,mDACE,YACF,8CACE,kBACA,WACA,YACA,cACA,kDACE,YACA,mBACA,yDACE,YACF,wDACE,wCACJ,mDACE,kBACA,OACA,MACA,gCACA,UACA,WACA,iBH3CE,QG4CF,kBACA,eACA,WACA,wDACE,yBACA,gCACA,WACA,YACF,2DACE,qBACA,qBACN,+CACE,kBACA,UACA,UACA,SACA,gBACA,gBACA,oBACA,kDACE,qBACA,qDACE,MHpEJ,KGqEI,iBHnEA,QGoEA,iBACA,mBACA,gBACA,YACA,eACA,mBACA,YHvEV,iBACA,yBACA,eACA,uBGsEU,2DACE,wCACF,kEACE,kBACA,yEACE,cACA,yCACA,eACA,iBACA,iBACA,cACA,kBACA,WACA,QC/FhB,eACE,cACA,kBACA,WACA,YACA,yBACE,kBACA,SACA,QACA,gCACF,mBACE,kBACA,SACA,WACA,YACA,kBACA,WJVQ,QIWR,mDACA,gCACE,SACA,uCACF,gCACE,SACA,uCACF,gCACE,UACA,uCACF,gCACE,UACA,uCAEN,2BACE,GACE,mBACF,KACE,oBAEJ,2BACE,GACE,mBACF,KACE,oBAEJ,2BACE,GACE,0BAEF,KACE,8BC9CA,uCACE,WACA,YACA,kBACA,OACA,MACA,6CACE,WACA,YACA","file":"index.css"}
|
package/build/index.js
CHANGED
@@ -15,6 +15,18 @@ Object.defineProperty(exports, "Instructions", {
|
|
15
15
|
return _Instructions.default;
|
16
16
|
}
|
17
17
|
});
|
18
|
+
Object.defineProperty(exports, "Loader", {
|
19
|
+
enumerable: true,
|
20
|
+
get: function get() {
|
21
|
+
return _Loader.default;
|
22
|
+
}
|
23
|
+
});
|
24
|
+
Object.defineProperty(exports, "ModelTab", {
|
25
|
+
enumerable: true,
|
26
|
+
get: function get() {
|
27
|
+
return _ModelTab.default;
|
28
|
+
}
|
29
|
+
});
|
18
30
|
Object.defineProperty(exports, "PanoramaTab", {
|
19
31
|
enumerable: true,
|
20
32
|
get: function get() {
|
@@ -54,4 +66,8 @@ var _PanoramaTab = _interopRequireDefault(require("./components/PanoramaTab"));
|
|
54
66
|
|
55
67
|
var _TabWrapper = _interopRequireDefault(require("./components/TabWrapper"));
|
56
68
|
|
69
|
+
var _ModelTab = _interopRequireDefault(require("./components/ModelTab"));
|
70
|
+
|
71
|
+
var _Loader = _interopRequireDefault(require("./components/Loader"));
|
72
|
+
|
57
73
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
@@ -0,0 +1,81 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
require("core-js/modules/web.dom-collections.iterator.js");
|
4
|
+
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
6
|
+
value: true
|
7
|
+
});
|
8
|
+
exports.setDefaultControls = exports.addKeyboardControls = void 0;
|
9
|
+
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
11
|
+
|
12
|
+
var holdEvent = _interopRequireWildcard(require("hold-event"));
|
13
|
+
|
14
|
+
var _cameraControls = _interopRequireDefault(require("camera-controls"));
|
15
|
+
|
16
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
17
|
+
|
18
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
19
|
+
|
20
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
21
|
+
|
22
|
+
const setDefaultControls = (controls, angle) => {
|
23
|
+
controls.dollyTo(20, true);
|
24
|
+
controls.moveTo(0, 0, 0, true);
|
25
|
+
controls.mouseButtons.wheel = _cameraControls.default.ACTION.DOLLY;
|
26
|
+
controls.touches.two = _cameraControls.default.ACTION.NONE;
|
27
|
+
controls.rotateTo(0, angle, true); // this.destroyNipple();
|
28
|
+
};
|
29
|
+
|
30
|
+
exports.setDefaultControls = setDefaultControls;
|
31
|
+
|
32
|
+
const addKeyboardControls = controls => {
|
33
|
+
const KEYCODE = {
|
34
|
+
W: 87,
|
35
|
+
A: 65,
|
36
|
+
S: 83,
|
37
|
+
D: 68,
|
38
|
+
ARROW_LEFT: 37,
|
39
|
+
ARROW_UP: 38,
|
40
|
+
ARROW_RIGHT: 39,
|
41
|
+
ARROW_DOWN: 40
|
42
|
+
};
|
43
|
+
const wKey = new holdEvent.KeyboardKeyHold(KEYCODE.W, 100);
|
44
|
+
const upKey = new holdEvent.KeyboardKeyHold(KEYCODE.ARROW_UP, 100);
|
45
|
+
const upArr = [wKey, upKey];
|
46
|
+
const aKey = new holdEvent.KeyboardKeyHold(KEYCODE.A, 100);
|
47
|
+
const leftKey = new holdEvent.KeyboardKeyHold(KEYCODE.ARROW_LEFT, 100);
|
48
|
+
const leftArr = [aKey, leftKey];
|
49
|
+
const sKey = new holdEvent.KeyboardKeyHold(KEYCODE.S, 100);
|
50
|
+
const downKey = new holdEvent.KeyboardKeyHold(KEYCODE.ARROW_DOWN, 100);
|
51
|
+
const downArr = [sKey, downKey];
|
52
|
+
const dKey = new holdEvent.KeyboardKeyHold(KEYCODE.D, 100);
|
53
|
+
const rightKey = new holdEvent.KeyboardKeyHold(KEYCODE.ARROW_RIGHT, 100);
|
54
|
+
const rightArr = [dKey, rightKey];
|
55
|
+
upArr.forEach(key => {
|
56
|
+
key.addEventListener('holding', () => {
|
57
|
+
if ((void 0).currentCONTROL !== 'wasd') return;
|
58
|
+
controls.forward(1, true);
|
59
|
+
});
|
60
|
+
});
|
61
|
+
leftArr.forEach(key => {
|
62
|
+
key.addEventListener('holding', () => {
|
63
|
+
if ((void 0).currentCONTROL !== 'wasd') return;
|
64
|
+
controls.truck(-1, 0, true);
|
65
|
+
});
|
66
|
+
});
|
67
|
+
downArr.forEach(key => {
|
68
|
+
key.addEventListener('holding', () => {
|
69
|
+
if ((void 0).currentCONTROL !== 'wasd') return;
|
70
|
+
controls.forward(-1, true);
|
71
|
+
});
|
72
|
+
});
|
73
|
+
rightArr.forEach(key => {
|
74
|
+
key.addEventListener('holding', () => {
|
75
|
+
if ((void 0).currentCONTROL !== 'wasd') return;
|
76
|
+
controls.truck(1, 0, true);
|
77
|
+
});
|
78
|
+
});
|
79
|
+
};
|
80
|
+
|
81
|
+
exports.addKeyboardControls = addKeyboardControls;
|
@@ -7,6 +7,10 @@ exports.getVerticesLocations = exports.getScale = exports.findWallVertices = exp
|
|
7
7
|
|
8
8
|
require("core-js/modules/web.dom-collections.iterator.js");
|
9
9
|
|
10
|
+
var _react = _interopRequireDefault(require("react"));
|
11
|
+
|
12
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
|
+
|
10
14
|
const findWallVertices = (walls, wall, vertices) => {
|
11
15
|
const currentWall = walls.find(el => el.ID === wall);
|
12
16
|
return currentWall.Vertices.map(vertex => vertices.find(el => el.ID === vertex));
|
package/package.json
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
"description": "HART Estate widget",
|
4
4
|
"author": "HART",
|
5
5
|
"keywords": [],
|
6
|
-
"version": "0.0.
|
6
|
+
"version": "0.0.10",
|
7
7
|
"private": false,
|
8
8
|
"main": "build/index.js",
|
9
9
|
"module": "build/index.js",
|
@@ -22,7 +22,9 @@
|
|
22
22
|
"build:sass": "sass src/assets/sass/index.sass:build/index.css --style compressed"
|
23
23
|
},
|
24
24
|
"dependencies": {
|
25
|
+
"camera-controls": "^1.34.1",
|
25
26
|
"core-js": "^3.21.0",
|
27
|
+
"hold-event": "^0.1.0",
|
26
28
|
"mobx": "^6.3.13",
|
27
29
|
"mobx-react-lite": "^3.2.3",
|
28
30
|
"panolens": "^0.12.1",
|
@@ -37,10 +39,18 @@
|
|
37
39
|
"@babel/core": "^7.17.0",
|
38
40
|
"@babel/eslint-parser": "^7.16.3",
|
39
41
|
"@babel/preset-env": "^7.16.11",
|
42
|
+
"babel-loader": "^8.2.3",
|
43
|
+
"css-loader": "^6.6.0",
|
40
44
|
"eslint": "^8.0.0",
|
41
45
|
"eslint-config-react-app": "^7.0.0",
|
42
46
|
"eslint-plugin-react": "^7.28.0",
|
43
|
-
"
|
47
|
+
"path": "^0.12.7",
|
48
|
+
"sass": "^1.46.0",
|
49
|
+
"sass-loader": "^12.4.0",
|
50
|
+
"style-loader": "^3.3.1",
|
51
|
+
"webpack": "^5.68.0",
|
52
|
+
"webpack-cli": "^4.9.2",
|
53
|
+
"webpack-dev-server": "^4.7.4"
|
44
54
|
},
|
45
55
|
"browserslist": {
|
46
56
|
"production": [
|