hart-estate-widget 0.0.5 → 0.0.9

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 @@
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 */
@@ -0,0 +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"}
package/build/index.js CHANGED
@@ -3,13 +3,55 @@
3
3
  Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
- exports.default = void 0;
6
+ Object.defineProperty(exports, "ImageTab", {
7
+ enumerable: true,
8
+ get: function get() {
9
+ return _ImageTab.default;
10
+ }
11
+ });
12
+ Object.defineProperty(exports, "Instructions", {
13
+ enumerable: true,
14
+ get: function get() {
15
+ return _Instructions.default;
16
+ }
17
+ });
18
+ Object.defineProperty(exports, "PanoramaTab", {
19
+ enumerable: true,
20
+ get: function get() {
21
+ return _PanoramaTab.default;
22
+ }
23
+ });
24
+ Object.defineProperty(exports, "RotationTab", {
25
+ enumerable: true,
26
+ get: function get() {
27
+ return _RotationTab.default;
28
+ }
29
+ });
30
+ Object.defineProperty(exports, "TabWrapper", {
31
+ enumerable: true,
32
+ get: function get() {
33
+ return _TabWrapper.default;
34
+ }
35
+ });
36
+ Object.defineProperty(exports, "Widget", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _Widget.default;
40
+ }
41
+ });
7
42
 
8
43
  var _react = _interopRequireDefault(require("react"));
9
44
 
10
- var _Widget = _interopRequireDefault(require("./Widget"));
45
+ var _Widget = _interopRequireDefault(require("./components/Widget"));
46
+
47
+ var _ImageTab = _interopRequireDefault(require("./components/ImageTab"));
48
+
49
+ var _Instructions = _interopRequireDefault(require("./components/Instructions"));
50
+
51
+ var _RotationTab = _interopRequireDefault(require("./components/RotationTab"));
52
+
53
+ var _PanoramaTab = _interopRequireDefault(require("./components/PanoramaTab"));
11
54
 
12
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
55
+ var _TabWrapper = _interopRequireDefault(require("./components/TabWrapper"));
13
56
 
14
- var _default = _Widget.default;
15
- exports.default = _default;
57
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
File without changes
File without changes
@@ -0,0 +1,79 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getVerticesLocations = exports.getScale = exports.findWallVertices = exports.findRoomCenter = exports.findMinMaxCoordinates = void 0;
7
+
8
+ require("core-js/modules/web.dom-collections.iterator.js");
9
+
10
+ const findWallVertices = (walls, wall, vertices) => {
11
+ const currentWall = walls.find(el => el.ID === wall);
12
+ return currentWall.Vertices.map(vertex => vertices.find(el => el.ID === vertex));
13
+ };
14
+
15
+ exports.findWallVertices = findWallVertices;
16
+
17
+ const getVerticesLocations = vertices => vertices.map(vertex => vertex.Location);
18
+
19
+ exports.getVerticesLocations = getVerticesLocations;
20
+
21
+ const findMinMaxCoordinates = (room, walls, vertices) => {
22
+ let maxX = 0;
23
+ let minX = Infinity;
24
+ let maxY = 0;
25
+ let minY = Infinity;
26
+ room.Walls.forEach(wall => {
27
+ const [coord1, coord2] = getVerticesLocations(findWallVertices(walls, wall, vertices)); // CALCULATE MAX COORDS
28
+
29
+ if (coord1.X > maxX) maxX = coord1.X;
30
+ if (coord1.X > maxX) maxX = coord1.X;
31
+ if (coord2.Y > maxY) maxY = coord2.Y;
32
+ if (coord2.Y > maxY) maxY = coord2.Y; // CALCULATE MIN COORDS
33
+
34
+ if (coord1.X < minX) minX = coord1.X;
35
+ if (coord1.X < minX) minX = coord1.X;
36
+ if (coord2.Y < minY) minY = coord2.Y;
37
+ if (coord2.Y < minY) minY = coord2.Y;
38
+ });
39
+ return {
40
+ maxX,
41
+ minX,
42
+ maxY,
43
+ minY
44
+ };
45
+ };
46
+
47
+ exports.findMinMaxCoordinates = findMinMaxCoordinates;
48
+
49
+ const findRoomCenter = (room, walls, vertices) => {
50
+ const {
51
+ maxX,
52
+ minX,
53
+ maxY,
54
+ minY
55
+ } = findMinMaxCoordinates(room, walls, vertices);
56
+ const left = (maxX + minX) / 2;
57
+ const top = (maxY + minY) / 2;
58
+ return {
59
+ left,
60
+ top
61
+ };
62
+ };
63
+
64
+ exports.findRoomCenter = findRoomCenter;
65
+
66
+ const getScale = (image, json) => {
67
+ const imageWidth = image.width;
68
+ const imageHeight = image.height;
69
+ const baseImageWidth = 1024;
70
+ const baseImageHeight = imageHeight * (baseImageWidth / imageWidth);
71
+ const deltaX = imageWidth / baseImageWidth / json.Scale.X;
72
+ const deltaY = imageHeight / baseImageHeight / json.Scale.X;
73
+ return {
74
+ X: deltaX,
75
+ Y: deltaY
76
+ };
77
+ };
78
+
79
+ exports.getScale = getScale;
package/package.json CHANGED
@@ -2,28 +2,35 @@
2
2
  "name": "hart-estate-widget",
3
3
  "description": "HART Estate widget",
4
4
  "author": "HART",
5
- "keywords": ["react", "hart", "widget", "estate"],
6
- "version": "0.0.5",
5
+ "keywords": [],
6
+ "version": "0.0.9",
7
7
  "private": false,
8
8
  "main": "build/index.js",
9
9
  "module": "build/index.js",
10
- "files": [ "build", "README.md" ],
10
+ "files": [
11
+ "build",
12
+ "README.md"
13
+ ],
11
14
  "repository": {
12
- "type": "git",
13
- "url": "https://gitlab.myhart.ru/hart_estate/hart-estate-widget"
15
+ "type": "git",
16
+ "url": "https://gitlab.myhart.ru/hart_estate/hart-estate-widget"
14
17
  },
15
18
  "scripts": {
16
- "start": "node scripts/start.js",
17
- "build": "rm -rf build && NODE_ENV=production babel src --out-dir build --copy-files"
19
+ "start": "babel src --watch --out-dir build --copy-files",
20
+ "start-example": "cd ./example && npm run start",
21
+ "build": "rm -rf build && NODE_ENV=production babel src --out-dir build --copy-files && npm run build:sass",
22
+ "build:sass": "sass src/assets/sass/index.sass:build/index.css --style compressed"
18
23
  },
19
24
  "dependencies": {
20
- "@babel/polyfill": "^7.12.1",
25
+ "core-js": "^3.21.0",
21
26
  "mobx": "^6.3.13",
22
27
  "mobx-react-lite": "^3.2.3",
28
+ "panolens": "^0.12.1",
23
29
  "panzoom": "^9.4.2",
24
30
  "react": "^17.0.2",
25
31
  "react-dom": "^17.0.2",
26
- "react-scripts": "^5.0.0"
32
+ "three": "^0.137.5",
33
+ "three-device-orientation": "^1.0.3"
27
34
  },
28
35
  "devDependencies": {
29
36
  "@babel/cli": "^7.17.0",
@@ -33,7 +40,6 @@
33
40
  "eslint": "^8.0.0",
34
41
  "eslint-config-react-app": "^7.0.0",
35
42
  "eslint-plugin-react": "^7.28.0",
36
- "rewire": "^6.0.0",
37
43
  "sass": "^1.46.0"
38
44
  },
39
45
  "browserslist": {
package/build/Widget.js DELETED
@@ -1,35 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = void 0;
7
-
8
- require("core-js/modules/es.object.assign.js");
9
-
10
- var _react = _interopRequireDefault(require("react"));
11
-
12
- var _mobxReactLite = require("mobx-react-lite");
13
-
14
- var _store = _interopRequireDefault(require("./store"));
15
-
16
- var _Application = _interopRequireDefault(require("./Application"));
17
-
18
- var _defaultConfig = _interopRequireDefault(require("./defaultConfig"));
19
-
20
- require("./assets/sass/index.sass");
21
-
22
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
23
-
24
- const Widget = (0, _mobxReactLite.observer)(options => {
25
- const config = Object.assign(_defaultConfig.default, options);
26
-
27
- _store.default.setConfig(config);
28
-
29
- return /*#__PURE__*/_react.default.createElement(_Application.default, {
30
- width: config.width,
31
- height: config.height
32
- });
33
- });
34
- var _default = Widget;
35
- exports.default = _default;