hart-estate-widget 0.0.10 → 0.0.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.
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.loadFurnitureData = exports.STAGE_API_URL = exports.API_URL = void 0;
7
+
8
+ require("core-js/modules/es.promise.js");
9
+
10
+ require("core-js/modules/es.array.reduce.js");
11
+
12
+ const API_URL = 'https://backend.estate.myhart.ru';
13
+ exports.API_URL = API_URL;
14
+ const STAGE_API_URL = 'https://backend-stage.estate.myhart.ru';
15
+ exports.STAGE_API_URL = STAGE_API_URL;
16
+
17
+ const loadFurnitureData = async furniture => {
18
+ const furnitureQuery = furniture.reduce((acc, item, i) => acc += "".concat(i === 0 ? '' : ',').concat(item.Model), '');
19
+ const path = "".concat(API_URL, "/api/furniture?only=").concat(furnitureQuery);
20
+ const response = await fetch(path);
21
+ return await response.json();
22
+ };
23
+
24
+ exports.loadFurnitureData = loadFurnitureData;
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,9 @@
1
+ <svg width="250" height="250" viewBox="0 0 250 250" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect width="125" height="125" fill="white"/>
3
+ <rect x="125" y="125" width="125" height="125" fill="white"/>
4
+ <rect y="125" width="125" height="125" fill="black"/>
5
+ <rect x="125" width="125" height="125" fill="black"/>
6
+ <rect x="124" width="2" height="250" fill="#00A3FF"/>
7
+ <rect y="126" width="2" height="250" transform="rotate(-90 0 126)" fill="#00A3FF"/>
8
+ <rect x="0.5" y="0.5" width="249" height="249" stroke="#00A3FF"/>
9
+ </svg>
@@ -0,0 +1,5 @@
1
+ @keyframes fadeIn
2
+ 0%
3
+ opacity: 0
4
+ 100%
5
+ opacity: 1
@@ -35,6 +35,8 @@
35
35
  right: 15px
36
36
  bottom: 70px
37
37
  z-index: 10000
38
+ &--hidden
39
+ display: none !important
38
40
  img
39
41
  width: 100px
40
42
  border-radius: 10px
@@ -61,38 +63,3 @@
61
63
  &--active
62
64
  background-color: red
63
65
  border: 2px solid red
64
- &-menu
65
- position: absolute
66
- z-index: 3
67
- left: 15px
68
- top: 15px
69
- max-height: 100%
70
- overflow-y: auto
71
- padding-bottom: 30px
72
- ul
73
- list-style-type: none
74
- li
75
- color: $black
76
- background-color: $mainColor
77
- padding: 5px 15px
78
- border-radius: 10px
79
- font-size: .8rem
80
- border: none
81
- cursor: pointer
82
- margin-bottom: 15px
83
- width: 150px
84
- @include noSelect
85
- &:hover
86
- box-shadow: 1px 1px 10px rgba(0, 0, 0, .15)
87
- &:nth-child(1)
88
- position: relative
89
- &::after
90
- content: '|||'
91
- transform: translateY(-50%) rotate(90deg)
92
- font-size: 20px
93
- line-height: 20px
94
- margin-left: 10px
95
- display: block
96
- position: absolute
97
- right: 10px
98
- top: 50%
@@ -48,6 +48,72 @@
48
48
  height: 100%
49
49
  object-fit: cover
50
50
 
51
+ &-menu
52
+ position: absolute
53
+ z-index: 3
54
+ left: 15px
55
+ top: 15px
56
+ max-height: 100%
57
+ overflow-y: auto
58
+ padding-bottom: 30px
59
+ &__wallpapers
60
+ display: flex
61
+ flex-wrap: wrap
62
+ align-items: flex-start
63
+ margin-top: 10px
64
+ width: 100%
65
+ img
66
+ width: 30px
67
+ height: 30px
68
+ display: block
69
+ object-fit: cover
70
+ cursor: pointer
71
+ margin-right: 10px
72
+ margin-block-end: 10px
73
+ ul
74
+ list-style-type: none
75
+ li
76
+ color: $black
77
+ background-color: $mainColor
78
+ padding: 5px 15px
79
+ border-radius: 10px
80
+ font-size: .8rem
81
+ border: none
82
+ cursor: pointer
83
+ margin-bottom: 15px
84
+ width: 200px
85
+ @include noSelect
86
+ label
87
+ display: flex
88
+ cursor: inherit
89
+ width: 100%
90
+ input
91
+ &[type=color]
92
+ cursor: pointer
93
+ margin-left: auto
94
+ width: 50px
95
+ height: 20px
96
+ border: 0
97
+ border-radius: 5px
98
+ &::-webkit-color-swatch-wrapper
99
+ display: none !important
100
+ &[type=file]
101
+ display: none
102
+ &:hover
103
+ box-shadow: 1px 1px 10px rgba(0, 0, 0, .15)
104
+ &:nth-child(1)
105
+ position: relative
106
+ &::after
107
+ content: '|||'
108
+ transform: translateY(-50%) rotate(90deg)
109
+ font-size: 20px
110
+ line-height: 20px
111
+ margin-left: 10px
112
+ display: block
113
+ position: absolute
114
+ right: 10px
115
+ top: 50%
116
+
51
117
  .widget-tab-panes
52
118
  position: absolute
53
119
  z-index: 3
@@ -9,13 +9,9 @@ require("core-js/modules/web.dom-collections.iterator.js");
9
9
 
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
 
12
- var THREE = _interopRequireWildcard(require("three"));
12
+ var _mobxReactLite = require("mobx-react-lite");
13
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"));
14
+ var _modelStore = _interopRequireDefault(require("../store/modelStore"));
19
15
 
20
16
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
17
 
@@ -23,93 +19,102 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
23
19
 
24
20
  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
21
 
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 => {
22
+ const ModelTab = (0, _mobxReactLite.observer)(_ref => {
94
23
  let {
95
24
  json
96
25
  } = _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));
26
+ const [menuState, setMenuState] = (0, _react.useState)(false);
27
+ const {
28
+ houseStore
29
+ } = _modelStore.default;
102
30
  (0, _react.useEffect)(() => {
103
31
  const container = document.querySelector('.widget-tab__model-scene');
104
- if (container.children.length !== 0) return;
105
- container.appendChild(renderer.domElement);
106
- }, [renderer]);
32
+ container.appendChild(_modelStore.default.renderer.domElement);
33
+
34
+ _modelStore.default.setCurrentControlsType('orbit');
35
+
36
+ if (_modelStore.default.initialized) {
37
+ _modelStore.default.houseStore.setDoorsVisibility(true);
38
+
39
+ _modelStore.default.houseStore.setFullBuildingVisibility(true);
40
+
41
+ _modelStore.default.houseStore.setCurrentWallsMaterialType('texture');
42
+
43
+ return;
44
+ }
45
+
46
+ _modelStore.default.init(json);
47
+ }, [json]);
48
+
49
+ const getNextWallsMaterialType = () => {
50
+ if (houseStore.wallsMaterialType === 'texture') return 'color';
51
+ return 'texture';
52
+ };
53
+
54
+ const onImageUploaded = _ref2 => {
55
+ let {
56
+ target
57
+ } = _ref2;
58
+ if (!target.files.length) return;
59
+ const reader = new FileReader();
60
+
61
+ reader.onload = e => houseStore.addWallTexture(e.target.result);
62
+
63
+ reader.readAsDataURL(target.files[0]);
64
+ };
65
+
107
66
  return /*#__PURE__*/_react.default.createElement("div", {
108
67
  className: "widget-tab__model"
109
68
  }, /*#__PURE__*/_react.default.createElement("div", {
110
69
  className: "widget-tab__model-scene"
111
- }));
112
- };
113
-
70
+ }), /*#__PURE__*/_react.default.createElement("div", {
71
+ className: "widget-tab-menu"
72
+ }, /*#__PURE__*/_react.default.createElement("ul", null, /*#__PURE__*/_react.default.createElement("li", {
73
+ onClick: () => setMenuState(!menuState)
74
+ }, "Menu"), menuState && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("li", {
75
+ onClick: () => _modelStore.default.setCurrentControlsType('wasd')
76
+ }, "WASD"), /*#__PURE__*/_react.default.createElement("li", {
77
+ onClick: () => _modelStore.default.setCurrentControlsType('plan')
78
+ }, "View from above"), /*#__PURE__*/_react.default.createElement("li", {
79
+ onClick: () => _modelStore.default.setCurrentControlsType('orbit')
80
+ }, "Free camera"), /*#__PURE__*/_react.default.createElement("li", {
81
+ onClick: () => houseStore.setPlanMode()
82
+ }, "Plan"), /*#__PURE__*/_react.default.createElement("li", {
83
+ onClick: () => houseStore.setFullBuildingVisibility(!houseStore.isFullBuildingVisible)
84
+ }, houseStore.isFullBuildingVisible ? 'Hide walls' : 'Show walls'), /*#__PURE__*/_react.default.createElement("li", {
85
+ onClick: () => houseStore.setDoorsVisibility(!houseStore.isDoorsVisible)
86
+ }, houseStore.isDoorsVisible ? 'Hide doors' : 'Show doors'), /*#__PURE__*/_react.default.createElement("li", {
87
+ onClick: () => houseStore.setCurrentWallsMaterialType(getNextWallsMaterialType())
88
+ }, "Material: ", houseStore.wallsMaterialType === 'texture' ? 'Texture' : 'Color'), /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("label", null, "Wall color:", /*#__PURE__*/_react.default.createElement("input", {
89
+ type: "color",
90
+ onChange: _ref3 => {
91
+ let {
92
+ target
93
+ } = _ref3;
94
+ return houseStore.setCurrentWallColor(target.value);
95
+ },
96
+ style: {
97
+ background: houseStore.wallsColor
98
+ },
99
+ value: houseStore.wallsColor
100
+ }))), /*#__PURE__*/_react.default.createElement("li", null, "Wall texture:", /*#__PURE__*/_react.default.createElement("div", {
101
+ className: "widget-tab-menu__wallpapers"
102
+ }, houseStore && houseStore.wallsTextures.map((_ref4, index) => {
103
+ let {
104
+ image,
105
+ texture
106
+ } = _ref4;
107
+ return /*#__PURE__*/_react.default.createElement("img", {
108
+ key: index,
109
+ src: image,
110
+ onClick: () => houseStore.setCurrentWallTexture(texture),
111
+ alt: "texture=".concat(index)
112
+ });
113
+ }))), /*#__PURE__*/_react.default.createElement("li", null, /*#__PURE__*/_react.default.createElement("label", null, "Upload wall texture", /*#__PURE__*/_react.default.createElement("input", {
114
+ onChange: onImageUploaded,
115
+ type: "file",
116
+ accept: ".jpg, .jpeg, .png"
117
+ })))))));
118
+ });
114
119
  var _default = ModelTab;
115
120
  exports.default = _default;
@@ -181,14 +181,14 @@ const PanoramaTab = _ref => {
181
181
  }), loadingState && /*#__PURE__*/_react.default.createElement(_Loader.default, {
182
182
  absolute: true
183
183
  }), /*#__PURE__*/_react.default.createElement("div", {
184
- className: "widget-tab__panorama-menu"
184
+ className: "widget-tab-menu"
185
185
  }, /*#__PURE__*/_react.default.createElement("ul", null, /*#__PURE__*/_react.default.createElement("li", {
186
186
  onClick: () => setMenuState(!menuState)
187
187
  }, "Rooms"), menuState && panoramaRooms.map((room, index) => /*#__PURE__*/_react.default.createElement("li", {
188
188
  key: index,
189
189
  onClick: () => changePanorama(room.panorama, index)
190
190
  }, currentRoomIndex === index && '• ', " ", room.type)))), /*#__PURE__*/_react.default.createElement("div", {
191
- className: "widget-tab__panorama-map"
191
+ className: "widget-tab__panorama-map ".concat(planImage ? '' : 'widget-tab__panorama-map--hidden')
192
192
  }, /*#__PURE__*/_react.default.createElement("img", {
193
193
  src: planImage,
194
194
  className: isMapActive ? 'active' : '',
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}.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 */
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-menu{position:absolute;z-index:3;left:15px;top:15px;max-height:100%;overflow-y:auto;padding-bottom:30px}.widget-application-menu__wallpapers{display:flex;flex-wrap:wrap;align-items:flex-start;margin-top:10px;width:100%}.widget-application-menu__wallpapers img{width:30px;height:30px;display:block;object-fit:cover;cursor:pointer}.widget-application-menu ul{list-style-type:none}.widget-application-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-menu ul li:hover{box-shadow:1px 1px 10px rgba(0,0,0,.15)}.widget-application-menu ul li:nth-child(1){position:relative}.widget-application-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-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--hidden{display:none !important}.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-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 */
@@ -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","../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"}
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,yBACE,kBACA,UACA,UACA,SACA,gBACA,gBACA,oBACA,qCACE,aACA,eACA,uBACA,gBACA,WACA,yCACE,WACA,YACA,cACA,iBACA,eACJ,4BACE,qBACA,+BACE,MDnEA,KCoEA,iBDlEI,QCmEJ,iBACA,mBACA,gBACA,YACA,eACA,mBACA,YDtEN,iBACA,yBACA,eACA,uBCqEM,qCACE,wCACF,4CACE,kBACA,mDACE,cACA,yCACA,eACA,iBACA,iBACA,cACA,kBACA,WACA,QAEV,sCACE,kBACA,UACA,SACA,WACA,eACA,yBACA,2BACA,aACA,mBACA,2BACA,gBACA,yBAZF,sCAaI,0BACF,uDACE,WACA,YACA,kBACA,cACA,iBD9GM,QC+GN,eACA,iBACA,mBACA,aDlHM,QCmHN,gBACA,aACA,mBACA,uBACA,UACA,2BACA,kBDrHJ,iBACA,yBACA,eACA,uBCoHI,yBAlBF,uDAmBI,WACA,YACA,cACF,+DACE,WACA,kBACA,OACA,MACA,WACA,YACA,6CACF,4HAEE,aDxII,QCyIN,8DACE,WACA,YACA,iBACA,uBACA,cACF,6DACE,WACA,YACA,mBACA,uBACA,cACA,kBACA,UACA,WACA,yBATF,6DAUI,WACA,YACA,SACA,YCjKR,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,sDACE,wBACF,kDACE,YACA,mBACA,yDACE,YACF,wDACE,wCACJ,mDACE,kBACA,OACA,MACA,gCACA,UACA,WACA,iBH7CE,QG8CF,kBACA,eACA,WACA,wDACE,yBACA,gCACA,WACA,YACF,2DACE,qBACA,qBC9DZ,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"}