hart-estate-widget 0.0.64 → 0.0.67

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 (96) hide show
  1. package/README.md +7 -3
  2. package/package.json +17 -5
  3. package/build/assets/css/app.css +0 -1
  4. package/build/assets/css/app.css.map +0 -1
  5. package/build/assets/fonts/RobotoMono/RobotoMono-Bold.ttf +0 -0
  6. package/build/assets/fonts/RobotoMono/RobotoMono-Bold.woff +0 -0
  7. package/build/assets/fonts/RobotoMono/RobotoMono-Bold.woff2 +0 -0
  8. package/build/assets/fonts/RobotoMono/RobotoMono-BoldItalic.ttf +0 -0
  9. package/build/assets/fonts/RobotoMono/RobotoMono-BoldItalic.woff +0 -0
  10. package/build/assets/fonts/RobotoMono/RobotoMono-BoldItalic.woff2 +0 -0
  11. package/build/assets/fonts/RobotoMono/RobotoMono-Italic.ttf +0 -0
  12. package/build/assets/fonts/RobotoMono/RobotoMono-Italic.woff +0 -0
  13. package/build/assets/fonts/RobotoMono/RobotoMono-Italic.woff2 +0 -0
  14. package/build/assets/fonts/RobotoMono/RobotoMono-Light.ttf +0 -0
  15. package/build/assets/fonts/RobotoMono/RobotoMono-Light.woff +0 -0
  16. package/build/assets/fonts/RobotoMono/RobotoMono-Light.woff2 +0 -0
  17. package/build/assets/fonts/RobotoMono/RobotoMono-LightItalic.ttf +0 -0
  18. package/build/assets/fonts/RobotoMono/RobotoMono-LightItalic.woff +0 -0
  19. package/build/assets/fonts/RobotoMono/RobotoMono-LightItalic.woff2 +0 -0
  20. package/build/assets/fonts/RobotoMono/RobotoMono-Medium.ttf +0 -0
  21. package/build/assets/fonts/RobotoMono/RobotoMono-Medium.woff +0 -0
  22. package/build/assets/fonts/RobotoMono/RobotoMono-Medium.woff2 +0 -0
  23. package/build/assets/fonts/RobotoMono/RobotoMono-MediumItalic.ttf +0 -0
  24. package/build/assets/fonts/RobotoMono/RobotoMono-MediumItalic.woff +0 -0
  25. package/build/assets/fonts/RobotoMono/RobotoMono-MediumItalic.woff2 +0 -0
  26. package/build/assets/fonts/RobotoMono/RobotoMono-Regular.ttf +0 -0
  27. package/build/assets/fonts/RobotoMono/RobotoMono-Regular.woff +0 -0
  28. package/build/assets/fonts/RobotoMono/RobotoMono-Regular.woff2 +0 -0
  29. package/build/assets/fonts/RobotoMono/RobotoMono-Thin.ttf +0 -0
  30. package/build/assets/fonts/RobotoMono/RobotoMono-Thin.woff +0 -0
  31. package/build/assets/fonts/RobotoMono/RobotoMono-Thin.woff2 +0 -0
  32. package/build/assets/fonts/RobotoMono/RobotoMono.css +0 -98
  33. package/build/assets/icons/1x.svg +0 -4
  34. package/build/assets/icons/2x.svg +0 -4
  35. package/build/assets/icons/bullet.png +0 -0
  36. package/build/assets/icons/close.svg +0 -4
  37. package/build/assets/icons/enter-fullscreen.svg +0 -6
  38. package/build/assets/icons/hand-move.svg +0 -15
  39. package/build/assets/icons/hand-research.svg +0 -12
  40. package/build/assets/icons/rotation-close.svg +0 -6
  41. package/build/assets/icons/rotation.svg +0 -4
  42. package/build/assets/img/3D.jpg +0 -0
  43. package/build/assets/img/door-icon.png +0 -0
  44. package/build/assets/img/door-texture.jpeg +0 -0
  45. package/build/assets/img/exterior-wall-texture-roughness.jpg +0 -0
  46. package/build/assets/img/exterior-wall-texture.jpeg +0 -0
  47. package/build/assets/img/floor-bathroom.jpg +0 -0
  48. package/build/assets/img/floor-dark.png +0 -0
  49. package/build/assets/img/floor-white.png +0 -0
  50. package/build/assets/img/floor.jpg +0 -0
  51. package/build/assets/img/grass.png +0 -0
  52. package/build/assets/img/logo.svg +0 -11
  53. package/build/assets/img/refresh-icon.svg +0 -6
  54. package/build/assets/img/spot-icon.png +0 -0
  55. package/build/assets/img/wall-texture.jpg +0 -0
  56. package/build/assets/sass/components/instructions.sass +0 -94
  57. package/build/assets/sass/components/loader.sass +0 -54
  58. package/build/assets/sass/components/model.sass +0 -27
  59. package/build/assets/sass/components/panorama.sass +0 -174
  60. package/build/assets/sass/components/rotation.sass +0 -106
  61. package/build/assets/sass/components/tabs.sass +0 -121
  62. package/build/assets/sass/index.sass +0 -65
  63. package/build/assets/sass/mixin.sass +0 -48
  64. package/build/assets/sass/vars.sass +0 -28
  65. package/build/components/Application.js +0 -132
  66. package/build/components/Buttons/FullScreenButton.js +0 -50
  67. package/build/components/Buttons/TabButton.js +0 -24
  68. package/build/components/Instructions.js +0 -54
  69. package/build/components/Loader.js +0 -22
  70. package/build/components/ModelTab.js +0 -213
  71. package/build/components/PanoramaTab.js +0 -620
  72. package/build/components/RotationTab.js +0 -152
  73. package/build/components/Widget.js +0 -130
  74. package/build/config/defaultConfig.js +0 -30
  75. package/build/enums/deviceOrientationStatuses.js +0 -11
  76. package/build/enums/deviceWidth.js +0 -21
  77. package/build/enums/imageExtentions.js +0 -16
  78. package/build/index.css +0 -2
  79. package/build/index.js +0 -67
  80. package/build/locale/en/data.json +0 -25
  81. package/build/locale/index.js +0 -71
  82. package/build/locale/ru/data.json +0 -25
  83. package/build/store/apiStore.js +0 -231
  84. package/build/store/deviceStore.js +0 -60
  85. package/build/store/fullScreenStore.js +0 -159
  86. package/build/store/houseStore.js +0 -952
  87. package/build/store/index.js +0 -124
  88. package/build/store/modelStore.js +0 -338
  89. package/build/threesixty/events.js +0 -220
  90. package/build/threesixty/index.js +0 -264
  91. package/build/utils/csg/csg-lib.js +0 -472
  92. package/build/utils/csg/csg-worker.js +0 -84
  93. package/build/utils/csg/three-csg.js +0 -277
  94. package/build/utils/helpers.js +0 -12
  95. package/build/utils/modelHelpers.js +0 -161
  96. package/build/utils/panoramaHelpers.js +0 -117
@@ -1,174 +0,0 @@
1
- @import '../mixin'
2
- @import '../vars'
3
-
4
- .widget-application
5
- .widget-tab
6
- &__panorama
7
- width: 100%
8
- height: 100%
9
- position: absolute
10
- left: 0
11
- top: 0
12
- z-index: 2
13
- &-overlay
14
- width: 100%
15
- height: 100%
16
- overflow: hidden
17
- background: $white !important
18
- *
19
- display: none !important
20
- canvas
21
- display: block !important
22
- &-controls
23
- position: absolute
24
- z-index: 2
25
- left: 50%
26
- bottom: 35px
27
- display: flex
28
- align-items: center
29
- justify-content: center
30
- padding: 8px
31
- border-radius: 38px
32
- background-color: transparentize($black, .8)
33
- transform: translateX(-50%)
34
- @include blurBackground(5px)
35
- @include media($mobile)
36
- padding: 5px
37
- @include media($smallMobile)
38
- bottom: 30px
39
- &-button
40
- @include customButton
41
- width: 55px
42
- height: 55px
43
- border-radius: 50%
44
- background-color: $white
45
- display: flex
46
- align-items: center
47
- justify-content: center
48
- margin-right: 18px
49
- @include media($tablet)
50
- width: 44px
51
- height: 44px
52
- @include media($mobile)
53
- margin-right: 10px
54
- width: 33px
55
- height: 33px
56
- @include media($smallMobile)
57
- width: 26px
58
- height: 26px
59
- img
60
- display: block
61
- @include media($tablet)
62
- transform: scale(.7)
63
- @include media($mobile)
64
- transform: scale(.52)
65
- @include media($smallMobile)
66
- transform: scale(.45)
67
- &:nth-last-child(1)
68
- margin-right: 0
69
- &-close-map
70
- z-index: 4
71
- &-map
72
- position: absolute
73
- left: 45px
74
- bottom: 35px
75
- z-index: 3
76
- border-radius: 10px
77
- opacity: 1
78
- transition: opacity .5s
79
- @include noTouch
80
- &::before
81
- content: ''
82
- position: absolute
83
- z-index: -1
84
- left: 50%
85
- top: 50%
86
- transform: translate(-50%, -50%)
87
- width: calc(100% + 16px)
88
- height: calc(100% + 16px)
89
- border-radius: inherit
90
- background-color: $white
91
- @include media($tablet)
92
- left: 20px
93
- transform: scale(.6)
94
- transform-origin: 0% 100%
95
- @include media($mobile)
96
- transform: scale(.4)
97
- @include media($smallMobile)
98
- bottom: 30px
99
- transform: scale(.35)
100
- &--scaled
101
- @include media($tablet)
102
- transform: scale(1.4) translate(-50%, 50%)
103
- left: 50%
104
- bottom: 50%
105
- &::after
106
- content: ''
107
- position: absolute
108
- z-index: -2
109
- left: 50%
110
- top: 50%
111
- transform: translate(-50%, -50%)
112
- width: 100vw
113
- height: 100vh
114
- background-color: transparentize(#C4C4C4, .2)
115
- svg
116
- polygon
117
- &:active
118
- opacity: .3 !important
119
- @include media($mobile)
120
- transform: scale(1) translate(-50%, 50%)
121
- &--hidden
122
- opacity: 0
123
- pointer-events: none
124
- img
125
- width: 200px
126
- border-radius: none
127
- display: block
128
- @include noSelect
129
- @include highResolution
130
- &:hover
131
- box-shadow: 1px 1px 10px rgba(0,0,0,0.15)
132
- svg
133
- position: absolute
134
- left: 0
135
- top: 0
136
- width: 200px
137
- height: 100%
138
- z-index: 3
139
- display: block
140
- border-radius: inherit
141
- polygon
142
- opacity: 0
143
- fill: $mainColor
144
- cursor: pointer
145
- &:hover
146
- opacity: .3
147
- &__fov
148
- position: absolute
149
- left: 0
150
- top: 0
151
- width: 0px
152
- height: 0px
153
- border-radius: 50%
154
- border-left: 30px solid transparentize($mainColor, 1)
155
- border-right: 30px solid transparentize($mainColor, 1)
156
- border-bottom: 30px solid transparentize($mainColor, 1)
157
- border-top: 40px solid transparentize($mainColor, .6)
158
- transform: translate(-50%, -50%) rotate(0rad)
159
- transform-origin: 50% 50%
160
- z-index: 4
161
- pointer-events: none
162
- &::before
163
- content: ''
164
- position: absolute
165
- z-index: 5
166
- left: 50%
167
- top: 50%
168
- transform: translate(-50%, -50%) translateY(-5px)
169
- width: 15px
170
- height: 15px
171
- background-color: $mainColor
172
- border-radius: 50%
173
- border: 2px solid $mainColor
174
- box-shadow: inset 0 0 0 2px #ffffff
@@ -1,106 +0,0 @@
1
- @import '../mixin'
2
- @import '../vars'
3
-
4
- .widget-application
5
- .widget-tab
6
- &__threesixty
7
- width: 100%
8
- height: 100%
9
- @include noTouch
10
- &-start
11
- @include customButton
12
- position: absolute
13
- left: 50%
14
- bottom: 35px
15
- transform: translateX(-50%)
16
- display: flex
17
- align-items: center
18
- justify-content: center
19
- padding: 0 25px 0 10px
20
- background-color: $gray
21
- border-radius: 38px
22
- height: 72px
23
- width: 202px
24
- @include media($tablet)
25
- height: 60px
26
- width: 166px
27
- padding: 0 20px 0 8px
28
- bottom: 35px
29
- @include media($mobile)
30
- height: 44px
31
- width: 115px
32
- padding: 0 10px 0 6px
33
- @include media($smallMobile)
34
- height: 36px
35
- width: 85px
36
- padding: 0 8px 0 6px
37
- bottom: 30px
38
- &-icon
39
- display: flex
40
- align-items: center
41
- justify-content: center
42
- border-radius: 50%
43
- background-color: $white
44
- margin-right: 18px
45
- padding: 10px
46
- @include media($tablet)
47
- padding: 7px
48
- margin-right: 15px
49
- @include media($mobile)
50
- margin-right: 7px
51
- @include media($smallMobile)
52
- padding: 6px
53
- margin-right: 5px
54
- img
55
- display: block
56
- position: relative
57
- top: 2px
58
- width: 34px
59
- @include media($tablet)
60
- width: 30px
61
- top: 1px
62
- @include media($mobile)
63
- width: 19px
64
- top: 0
65
- @include media($smallMobile)
66
- width: 15px
67
- span
68
- font-size: 24px
69
- font-weight: bold
70
- color: $text-dark
71
- text-transform: uppercase
72
- width: 100%
73
- display: block
74
- text-align: center
75
- position: relative
76
- top: 1px
77
- @include media($tablet)
78
- font-size: 20px
79
- @include media($mobile)
80
- font-size: 14px
81
- @include media($smallMobile)
82
- font-size: 10px
83
- top: 0
84
- &-container
85
- width: 100% !important
86
- height: 100% !important
87
- position: relative
88
- background-image: none !important
89
- img
90
- position: absolute
91
- left: 50%
92
- top: 50%
93
- transform: translate(-50%, -50%)
94
- max-width: 100%
95
- max-height: 100%
96
- width: 600px
97
- height: 600px
98
- object-fit: contain
99
- opacity: 0
100
- pointer-events: none
101
- @include noSelect
102
- &.active
103
- opacity: 1
104
- &--active
105
- .widget-tab__threesixty-container
106
- cursor: move
@@ -1,121 +0,0 @@
1
- @import '../mixin'
2
- @import '../vars'
3
-
4
- .widget-application
5
- .widget-tab-buttons
6
- position: absolute
7
- z-index: 3
8
- right: 44px
9
- bottom: 35px
10
- display: flex
11
- align-items: center
12
- justify-content: flex-end
13
- @include media($tablet)
14
- right: 20px
15
- bottom: 35px
16
- @include media($smallMobile)
17
- bottom: 30px
18
- .widget-tab-button
19
- @include customButton
20
- width: 72px
21
- height: 72px
22
- border-radius: 50%
23
- display: flex
24
- align-items: center
25
- justify-content: center
26
- background-color: $gray
27
- color: $text-dark
28
- font-size: 28px
29
- line-height: 120%
30
- font-weight: bold
31
- margin-left: 40px
32
- @include media($tablet)
33
- margin-left: 20px
34
- width: 60px
35
- height: 60px
36
- font-size: 22px
37
- @include media($mobile)
38
- margin-left: 10px
39
- font-size: 17px
40
- width: 44px
41
- height: 44px
42
- @include media($smallMobile)
43
- width: 36px
44
- height: 36px
45
- font-size: 14px
46
- &--active
47
- background-color: $mainColor
48
-
49
- .widget-tab
50
- width: 100%
51
- height: 100%
52
- display: flex
53
- align-items: center
54
- justify-content: center
55
- padding: 60px 30px
56
- @include media($smallMobile)
57
- padding: 60px 20px
58
- &-menu
59
- position: absolute
60
- z-index: 3
61
- left: 15px
62
- top: 15px
63
- max-height: 100%
64
- overflow-y: auto
65
- padding-bottom: 30px
66
- &__wallpapers
67
- display: flex
68
- flex-wrap: wrap
69
- align-items: flex-start
70
- margin-top: 10px
71
- width: 100%
72
- img
73
- width: 30px
74
- height: 30px
75
- display: block
76
- object-fit: cover
77
- cursor: pointer
78
- margin-right: 10px
79
- margin-block-end: 10px
80
- ul
81
- list-style-type: none
82
- li
83
- color: $text-dark
84
- background-color: $mainColor
85
- padding: 5px 15px
86
- border-radius: 10px
87
- font-size: .7rem
88
- border: none
89
- cursor: pointer
90
- margin-bottom: 15px
91
- width: 200px
92
- @include noSelect
93
- label
94
- display: flex
95
- cursor: inherit
96
- width: 100%
97
- input
98
- &[type=color]
99
- cursor: pointer
100
- margin-left: auto
101
- width: 50px
102
- height: 20px
103
- border: 0
104
- border-radius: 5px
105
- &::-webkit-color-swatch-wrapper
106
- display: none !important
107
- &[type=file]
108
- display: none
109
- &:nth-child(1)
110
- position: relative
111
- &::after
112
- --bar-width: 2px
113
- content: ''
114
- width: 20px
115
- height: 15px
116
- display: block
117
- background: repeating-linear-gradient(180deg, $black, $black var(--bar-width), transparentize($black, 1) var(--bar-width), transparentize($black, 1) calc(var(--bar-width) * 3),)
118
- position: absolute
119
- right: 10px
120
- top: 50%
121
- transform: translateY(-50%)
@@ -1,65 +0,0 @@
1
- @import './vars'
2
- @import './mixin'
3
-
4
- .widget-application
5
- width: 100%
6
- height: 100%
7
- flex: none
8
- overflow: hidden
9
- position: relative
10
- z-index: 1
11
- background-color: $white
12
- font-size: 20px
13
-
14
- *, *:before, *:after
15
- -webkit-font-smoothing: antialiased
16
- -moz-osx-font-smoothing: grayscale
17
- font-family: 'Roboto Mono', sans-serif
18
- text-decoration: none
19
- font-weight: 700
20
- color: $text-dark
21
- outline: none
22
- padding: 0
23
- margin: 0
24
- box-sizing: border-box
25
- -webkit-box-sizing: border-box
26
-
27
- .widget-logo
28
- position: absolute
29
- left: 45px
30
- top: 30px
31
- z-index: 3
32
- @include media($tablet)
33
- left: 20px
34
- top: 30px
35
- @include media($smallMobile)
36
- top: 25px
37
- img
38
- display: block
39
- width: 82px
40
- height: 82px
41
- object-fit: contain
42
- object-position: center
43
- @include media($tablet)
44
- width: 65px
45
- height: 65px
46
- @include media($mobile)
47
- width: 42px
48
- height: 42px
49
- @include media($smallMobile)
50
- width: 36px
51
- height: 36px
52
-
53
- .widget-tab__panorama-close-map
54
- @include rightActionButton
55
- .widget-enter-fullscreen
56
- @include rightActionButton
57
- .widget-exit-fullscreen
58
- @include rightActionButton
59
-
60
- @import './components/tabs'
61
- @import './components/instructions'
62
- @import './components/panorama'
63
- @import './components/rotation'
64
- @import './components/loader'
65
- @import './components/model'
@@ -1,48 +0,0 @@
1
- @mixin customButton
2
- ouline: none
3
- border: none
4
- box-shadow: none
5
- background: transparent
6
- cursor: pointer
7
-
8
- @mixin blurBackground($blur)
9
- backdrop-filter: blur($blur)
10
- -moz-backdrop-filter: blur($blur)
11
- -webkit-backdrop-filter: blur($blur)
12
-
13
- @mixin media($device)
14
- $this: &
15
- @at-root .widget-application--#{$device}#{$this}
16
- @content
17
-
18
- @mixin rightActionButton
19
- position: absolute
20
- right: 45px
21
- top: 36px
22
- z-index: 3
23
- padding: 10px
24
- touch-action: none
25
- @include customButton
26
- @include media($tablet)
27
- right: 17px
28
- top: 35px
29
- @include media($mobile)
30
- padding: 5px
31
- right: 20px
32
- @include media($smallMobile)
33
- top: 25px
34
- img
35
- display: block
36
- width: 50px
37
- height: 50px
38
- object-fit: contain
39
- object-position: center
40
- @include media($tablet)
41
- width: 40px
42
- height: 40px
43
- @include media($mobile)
44
- width: 32px
45
- height: 32px
46
- @include media($smallMobile)
47
- width: 26px
48
- height: 26px
@@ -1,28 +0,0 @@
1
- $smallMobile: "smallMobile"
2
- $mobile: "mobile"
3
- $tablet: "tablet"
4
- $laptop: "laptop"
5
-
6
- $white: #FFFFFF
7
- $black: #000000
8
- $gray: #EAEAEA
9
- $lightGray: #F4F7F7
10
- $mainColor: #FAC62D
11
-
12
- $text-dark: #413E3E
13
-
14
- @mixin noSelect
15
- user-select: none
16
- -webkit-user-select: none
17
- user-drag: none
18
- -webkit-user-drag: none
19
-
20
- @mixin noTouch
21
- touch-action: none
22
- -webkit-touch-action: none
23
-
24
- @mixin highResolution
25
- -webkit-backface-visibility: hidden
26
- -ms-transform: translateZ(0)
27
- -webkit-transform: translateZ(0)
28
- transform: translateZ(0)
@@ -1,132 +0,0 @@
1
- "use strict";
2
-
3
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
4
-
5
- Object.defineProperty(exports, "__esModule", {
6
- value: true
7
- });
8
- exports.default = void 0;
9
-
10
- var _react = _interopRequireWildcard(require("react"));
11
-
12
- var _mobxReactLite = require("mobx-react-lite");
13
-
14
- var _store = _interopRequireDefault(require("../store"));
15
-
16
- var _fullScreenStore = _interopRequireDefault(require("../store/fullScreenStore"));
17
-
18
- var _deviceWidth = require("../enums/deviceWidth");
19
-
20
- var _RotationTab = _interopRequireDefault(require("./RotationTab"));
21
-
22
- var _PanoramaTab = _interopRequireDefault(require("./PanoramaTab"));
23
-
24
- var _ModelTab = _interopRequireDefault(require("./ModelTab"));
25
-
26
- var _FullScreenButton = _interopRequireDefault(require("./Buttons/FullScreenButton"));
27
-
28
- var _TabButton = _interopRequireDefault(require("./Buttons/TabButton"));
29
-
30
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
31
-
32
- 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); }
33
-
34
- 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; }
35
-
36
- function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
37
-
38
- function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
39
-
40
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
41
-
42
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
43
-
44
- function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
45
-
46
- function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
47
-
48
- var Application = (0, _mobxReactLite.observer)(function () {
49
- var config = _store.default.config;
50
- var appStyle = {
51
- width: config.width,
52
- height: config.height
53
- };
54
-
55
- var _useState = (0, _react.useState)(config.tabs[0]),
56
- _useState2 = _slicedToArray(_useState, 2),
57
- currentTab = _useState2[0],
58
- setCurrentTab = _useState2[1];
59
-
60
- var tabsList = {
61
- 'rotation': /*#__PURE__*/_react.default.createElement(_RotationTab.default, {
62
- images: config.rotationImages,
63
- disabled: !config.rotationImages[0]
64
- }),
65
- 'panorama': /*#__PURE__*/_react.default.createElement(_PanoramaTab.default, {
66
- json: config.json,
67
- planImage: config.planImage,
68
- images: config.panoramaImages,
69
- disabled: !config.panoramaImages.length
70
- }),
71
- 'model': /*#__PURE__*/_react.default.createElement(_ModelTab.default, {
72
- json: config.json,
73
- disabled: !config.json
74
- })
75
- };
76
- var tabButtons = [{
77
- tab: 'rotation',
78
- text: '2D'
79
- }, {
80
- tab: 'panorama',
81
- text: '3D'
82
- }];
83
- (0, _react.useEffect)(function () {
84
- _fullScreenStore.default.init();
85
- }, []);
86
- (0, _react.useEffect)(function () {
87
- if (config.tabs.some(function (tab) {
88
- return tab === currentTab;
89
- })) return;
90
- setCurrentTab(config.tabs[0]);
91
- }, [config, currentTab]);
92
-
93
- var getTabButton = function getTabButton(button, index) {
94
- if (!_store.default.isTabIncluded(button.tab) || _store.default.config.tabs.length < 2) return null;
95
- if (!_store.default.controlsVisible) return null;
96
- return /*#__PURE__*/_react.default.createElement(_TabButton.default, {
97
- key: index,
98
- text: button.text,
99
- active: currentTab === button.tab,
100
- onClick: function onClick() {
101
- return setCurrentTab(button.tab);
102
- }
103
- });
104
- };
105
-
106
- var getAppClass = function getAppClass() {
107
- var className = (0, _deviceWidth.getDevicesByWidth)(config.width).reduce(function (acc, device) {
108
- return acc += " widget-application--".concat(device);
109
- }, 'widget-application');
110
- return className;
111
- };
112
-
113
- return /*#__PURE__*/_react.default.createElement("main", {
114
- className: getAppClass(),
115
- id: "widget-application",
116
- style: appStyle
117
- }, /*#__PURE__*/_react.default.createElement("section", {
118
- className: "widget-tab widget-tab--".concat(currentTab)
119
- }, tabsList[currentTab]), config.logo && /*#__PURE__*/_react.default.createElement("a", {
120
- className: "widget-logo",
121
- href: config.logoUrl,
122
- target: "_blank",
123
- rel: "noreferrer"
124
- }, /*#__PURE__*/_react.default.createElement("img", {
125
- src: config.logo,
126
- alt: "logo"
127
- })), _store.default.controlsVisible && /*#__PURE__*/_react.default.createElement(_FullScreenButton.default, null), /*#__PURE__*/_react.default.createElement("div", {
128
- className: "widget-tab-buttons"
129
- }, tabButtons.map(getTabButton)));
130
- });
131
- var _default = Application;
132
- exports.default = _default;