hart-estate-widget 0.0.50 → 0.0.53
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/build/assets/css/app.css +1 -1
- package/build/assets/css/app.css.map +1 -1
- package/build/assets/sass/components/panorama.sass +38 -33
- package/build/assets/sass/components/tabs.sass +7 -6
- package/build/assets/sass/index.sass +2 -2
- package/build/components/Application.js +1 -1
- package/build/components/PanoramaTab.js +154 -87
- package/build/components/RotationTab.js +6 -3
- package/build/components/Widget.js +1 -1
- package/build/config/defaultConfig.js +1 -3
- package/build/enums/deviceOrientationStatuses.js +11 -0
- package/build/enums/deviceWidth.js +11 -0
- package/build/threesixty/events.js +3 -1
- package/build/utils/helpers.js +12 -0
- package/build/utils/panoramaHelpers.js +10 -10
- package/package.json +4 -1
- package/build/enums/deviceOrientationStatus.js +0 -11
package/build/assets/css/app.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;background-color:#fff}.widget-application *,.widget-application *:before,.widget-application *:after{font-family:"Roboto Mono",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;outline:none;font-weight:700;text-decoration:none;color:#413e3e}.widget-application .widget-logo{position:absolute;left:45px;top:30px;z-index:3}@media only screen and (max-width: 545px){.widget-application .widget-logo{left:20px;top:20px}}.widget-application .widget-logo img{display:block;width:82px;height:82px;object-fit:contain;object-position:center}@media only screen and (max-width: 900px){.widget-application .widget-logo img{width:65px;height:65px}}.widget-application .widget-enter-fullscreen,.widget-application .widget-exit-fullscreen{position:absolute;right:45px;top:36px;z-index:3;ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;padding:10px}@media only screen and (max-width: 545px){.widget-application .widget-enter-fullscreen,.widget-application .widget-exit-fullscreen{right:20px;top:20px}}.widget-application .widget-enter-fullscreen img,.widget-application .widget-exit-fullscreen img{display:block;width:50px;height:50px;object-fit:contain;object-position:center}@media only screen and (max-width: 900px){.widget-application .widget-enter-fullscreen img,.widget-application .widget-exit-fullscreen img{width:40px;height:40px}}.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:#fac62d;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-buttons{position:absolute;z-index:3;right:44px;bottom:35px;display:flex;align-items:center;justify-content:flex-end}@media only screen and (max-width: 545px){.widget-application .widget-tab-buttons{right:20px;bottom:20px}}.widget-application .widget-tab-button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:#eaeaea;color:#413e3e;font-size:28px;line-height:120%;font-weight:bold;margin-left:40px}@media only screen and (max-width: 900px){.widget-application .widget-tab-button{width:60px;height:60px;font-size:24px;margin-left:20px}}@media only screen and (max-width: 545px){.widget-application .widget-tab-button{margin-left:10px}}.widget-application .widget-tab-button--active{background-color:#fac62d}.widget-application .widget-tab{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:60px 30px}@media(max-width: 630px){.widget-application .widget-tab{padding:60px 15px}}.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-start{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;position:absolute;left:50%;bottom:35px;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;padding:0 30px 0 27px;background-color:#eaeaea;border-radius:38px;height:72px}@media only screen and (max-width: 900px){.widget-application .widget-tab__threesixty-start{height:60px;width:60px;padding:0;left:45px;transform:none}}@media only screen and (max-width: 545px){.widget-application .widget-tab__threesixty-start{left:20px;bottom:20px}}.widget-application .widget-tab__threesixty-start img{display:block;margin-right:20px;position:relative;top:2px}@media only screen and (max-width: 900px){.widget-application .widget-tab__threesixty-start img{width:30px;margin-right:0}}.widget-application .widget-tab__threesixty-start span{font-size:24px;font-weight:bold;color:#413e3e;text-transform:uppercase}@media only screen and (max-width: 900px){.widget-application .widget-tab__threesixty-start span{display:none}}.widget-application .widget-tab__threesixty-container{width:100% !important;height:100% !important;position:relative;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%;width:600px;height:600px;object-fit:contain;opacity:0;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab__threesixty-container img.active{opacity:1}.widget-application .widget-tab__threesixty--active .widget-tab__threesixty-container{cursor:move}.widget-application .widget-tab-menu{position:absolute;z-index:3;left:15px;top:15px;max-height:100%;overflow-y:auto;padding-bottom:30px}.widget-application .widget-tab-menu__wallpapers{display:flex;flex-wrap:wrap;align-items:flex-start;margin-top:10px;width:100%}.widget-application .widget-tab-menu__wallpapers img{width:30px;height:30px;display:block;object-fit:cover;cursor:pointer;margin-right:10px;margin-block-end:10px}.widget-application .widget-tab-menu ul{list-style-type:none}.widget-application .widget-tab-menu ul li{color:#000;background-color:#fac62d;padding:5px 15px;border-radius:10px;font-size:.7rem;border:none;cursor:pointer;margin-bottom:15px;width:200px;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab-menu ul li label{display:flex;cursor:inherit;width:100%}.widget-application .widget-tab-menu ul li input[type=color]{cursor:pointer;margin-left:auto;width:50px;height:20px;border:0;border-radius:5px}.widget-application .widget-tab-menu ul li input[type=color]::-webkit-color-swatch-wrapper{display:none !important}.widget-application .widget-tab-menu ul li input[type=file]{display:none}.widget-application .widget-tab-menu ul li:nth-child(1){position:relative}.widget-application .widget-tab-menu ul li:nth-child(1)::after{--bar-width: 2px;content:"";width:20px;height:15px;display:block;background:repeating-linear-gradient(180deg, #000000, #000000 var(--bar-width), rgba(0, 0, 0, 0) var(--bar-width), rgba(0, 0, 0, 0) calc(var(--bar-width) * 3));position:absolute;right:10px;top:50%;transform:translateY(-50%)}.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-position:center;background-repeat:no-repeat;background-size:cover}.widget-application .widget-instructions__content{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;background-color:rgba(234,234,234,.85);border-radius:20px;overflow:hidden;width:400px;max-width:calc(100% - 60px);padding:36px 30px 30px 30px;backdrop-filter:blur(5px);-moz-backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.widget-application .widget-instructions__steps{display:flex;align-items:flex-start;justify-content:center}.widget-application .widget-instructions__step{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;margin:0 15px}@media only screen and (max-width: 900px){.widget-application .widget-instructions__step{margin:0 10px}}.widget-application .widget-instructions__step img{display:block;width:52px;height:80px;object-fit:contain;object-position:center}.widget-application .widget-instructions__step p{color:#413e3e;font-size:20px;font-weight:bold;text-align:center;margin-top:10px;max-width:135px}@media only screen and (max-width: 900px){.widget-application .widget-instructions__step p{font-size:18px}}.widget-application .widget-instructions button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;display:flex;align-items:center;justify-content:center;height:44px;padding:0 33px;border-radius:52px;background-color:#fac62d;color:#413e3e;font-size:24px;font-weight:bold;text-transform:uppercase;margin:25px auto 0 auto}.widget-application .widget-tab__panorama{width:100%;height:100%;position:absolute;left:0;top:0;z-index:2}.widget-application .widget-tab__panorama-overlay{width:100%;height:100%;overflow:hidden;background:#fff !important}.widget-application .widget-tab__panorama-controls{position:absolute;left:50%;bottom:35px;display:flex;align-items:center;justify-content:center;padding:8px;border-radius:38px;background-color:rgba(0,0,0,.2);transform:translateX(-50%);backdrop-filter:blur(5px);-moz-backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-controls{right:45px;left:unset;transform:none;bottom:120px}}@media only screen and (max-width: 545px){.widget-application .widget-tab__panorama-controls{right:20px;bottom:100px}}.widget-application .widget-tab__panorama-controls-button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;width:55px;height:55px;border-radius:50%;background-color:#fff;display:flex;align-items:center;justify-content:center;margin-right:18px}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-controls-button{width:40px;height:40px}}.widget-application .widget-tab__panorama-controls-button img{display:block}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-controls-button img{transform:scale(0.7)}}.widget-application .widget-tab__panorama-controls-button:nth-last-child(1){margin-right:0}.widget-application .widget-tab__panorama-map{position:absolute;left:45px;bottom:35px;z-index:3;border-radius:10px;opacity:1;transition:opacity .5s;overflow:hidden}@media only screen and (max-width: 545px){.widget-application .widget-tab__panorama-map{left:20px;bottom:20px}}.widget-application .widget-tab__panorama-map--hidden{opacity:0;pointer-events:none}.widget-application .widget-tab__panorama-map img{width:195px;border-radius:inherit;display:block;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-map img{width:150px}}.widget-application .widget-tab__panorama-map img:hover{box-shadow:1px 1px 10px rgba(0,0,0,.15)}.widget-application .widget-tab__panorama-map svg{position:absolute;left:0;top:0;width:195px;height:100%;z-index:3;display:block;border-radius:inherit}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-map svg{width:150px}}.widget-application .widget-tab__panorama-map svg polygon{opacity:0;fill:#fac62d;cursor:pointer}.widget-application .widget-tab__panorama-map svg polygon:hover{opacity:.3}.widget-application .widget-tab__panorama-map__fov{position:absolute;left:0;top:0;width:0px;height:0px;border-radius:50%;border:30px solid rgba(0,0,0,0);border-top:40px solid rgba(250,198,45,.4);transform:translate(-50%, -50%) rotate(0rad);transform-origin:50% 50%;z-index:4;pointer-events:none}.widget-application .widget-tab__panorama-map__dot{position:absolute;left:0;top:0;transform:translate(-50%, -50%);width:5px;height:5px;background-color:#fac62d;border-radius:50%;z-index:5;visibility:hidden;pointer-events:none}.widget-application .widget-tab__panorama-map__dot--big{border:2px solid #fac62d;box-shadow:inset 0 0 0 2px #fff;width:15px;height:15px}.widget-application .widget-tab__panorama-map__dot--active{visibility:visible}.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--sm{transform:translate(-50%, -50%) scale(0.75)}.widget-loader div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:#fac62d;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;z-index:2}.widget-application .widget-tab__model-scene{width:100%;height:100%;display:block}.widget-application .widget-tab__model-joystick{position:absolute;left:100px;bottom:100px;opacity:0;pointer-events:none}@media only screen and (max-width: 545px){.widget-application .widget-tab__model-joystick{left:50%;transform:translateX(-50%)}}.widget-application .widget-tab__model-joystick--active{opacity:1;pointer-events:unset}/*# sourceMappingURL=app.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;background-color:#fff}.widget-application *,.widget-application *:before,.widget-application *:after{font-family:"Roboto Mono",sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;outline:none;font-weight:700;text-decoration:none;color:#413e3e}.widget-application .widget-logo{position:absolute;left:45px;top:30px;z-index:3}@media only screen and (max-width: 900px){.widget-application .widget-logo{left:20px;top:20px}}.widget-application .widget-logo img{display:block;width:82px;height:82px;object-fit:contain;object-position:center}@media only screen and (max-width: 900px){.widget-application .widget-logo img{width:65px;height:65px}}.widget-application .widget-enter-fullscreen,.widget-application .widget-exit-fullscreen{position:absolute;right:45px;top:36px;z-index:3;ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;padding:10px}@media only screen and (max-width: 900px){.widget-application .widget-enter-fullscreen,.widget-application .widget-exit-fullscreen{right:20px;top:20px}}.widget-application .widget-enter-fullscreen img,.widget-application .widget-exit-fullscreen img{display:block;width:50px;height:50px;object-fit:contain;object-position:center}@media only screen and (max-width: 900px){.widget-application .widget-enter-fullscreen img,.widget-application .widget-exit-fullscreen img{width:40px;height:40px}}.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:#fac62d;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-buttons{position:absolute;z-index:3;right:44px;bottom:35px;display:flex;align-items:center;justify-content:flex-end}@media only screen and (max-width: 900px){.widget-application .widget-tab-buttons{flex-direction:column;right:20px;bottom:20px}}.widget-application .widget-tab-button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;width:72px;height:72px;border-radius:50%;display:flex;align-items:center;justify-content:center;background-color:#eaeaea;color:#413e3e;font-size:28px;line-height:120%;font-weight:bold;margin-left:40px}@media only screen and (max-width: 900px){.widget-application .widget-tab-button{width:60px;height:60px;font-size:24px;margin-left:0px;margin-top:20px}}@media only screen and (max-width: 545px){.widget-application .widget-tab-button{margin-top:10px}}.widget-application .widget-tab-button--active{background-color:#fac62d}.widget-application .widget-tab{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:60px 30px}@media(max-width: 630px){.widget-application .widget-tab{padding:60px 15px}}.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-start{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;position:absolute;left:50%;bottom:35px;transform:translateX(-50%);display:flex;align-items:center;justify-content:center;padding:0 30px 0 27px;background-color:#eaeaea;border-radius:38px;height:72px}@media only screen and (max-width: 900px){.widget-application .widget-tab__threesixty-start{height:60px;width:60px;padding:0;left:20px;bottom:20px;transform:none}}.widget-application .widget-tab__threesixty-start img{display:block;margin-right:20px;position:relative;top:2px}@media only screen and (max-width: 900px){.widget-application .widget-tab__threesixty-start img{width:30px;margin-right:0}}.widget-application .widget-tab__threesixty-start span{font-size:24px;font-weight:bold;color:#413e3e;text-transform:uppercase}@media only screen and (max-width: 900px){.widget-application .widget-tab__threesixty-start span{display:none}}.widget-application .widget-tab__threesixty-container{width:100% !important;height:100% !important;position:relative;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%;width:600px;height:600px;object-fit:contain;opacity:0;pointer-events:none;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab__threesixty-container img.active{opacity:1}.widget-application .widget-tab__threesixty--active .widget-tab__threesixty-container{cursor:move}.widget-application .widget-tab-menu{position:absolute;z-index:3;left:15px;top:15px;max-height:100%;overflow-y:auto;padding-bottom:30px}.widget-application .widget-tab-menu__wallpapers{display:flex;flex-wrap:wrap;align-items:flex-start;margin-top:10px;width:100%}.widget-application .widget-tab-menu__wallpapers img{width:30px;height:30px;display:block;object-fit:cover;cursor:pointer;margin-right:10px;margin-block-end:10px}.widget-application .widget-tab-menu ul{list-style-type:none}.widget-application .widget-tab-menu ul li{color:#000;background-color:#fac62d;padding:5px 15px;border-radius:10px;font-size:.7rem;border:none;cursor:pointer;margin-bottom:15px;width:200px;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab-menu ul li label{display:flex;cursor:inherit;width:100%}.widget-application .widget-tab-menu ul li input[type=color]{cursor:pointer;margin-left:auto;width:50px;height:20px;border:0;border-radius:5px}.widget-application .widget-tab-menu ul li input[type=color]::-webkit-color-swatch-wrapper{display:none !important}.widget-application .widget-tab-menu ul li input[type=file]{display:none}.widget-application .widget-tab-menu ul li:nth-child(1){position:relative}.widget-application .widget-tab-menu ul li:nth-child(1)::after{--bar-width: 2px;content:"";width:20px;height:15px;display:block;background:repeating-linear-gradient(180deg, #000000, #000000 var(--bar-width), rgba(0, 0, 0, 0) var(--bar-width), rgba(0, 0, 0, 0) calc(var(--bar-width) * 3));position:absolute;right:10px;top:50%;transform:translateY(-50%)}.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-position:center;background-repeat:no-repeat;background-size:cover}.widget-application .widget-instructions__content{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;background-color:rgba(234,234,234,.85);border-radius:20px;overflow:hidden;width:400px;max-width:calc(100% - 60px);padding:36px 30px 30px 30px;backdrop-filter:blur(5px);-moz-backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}.widget-application .widget-instructions__steps{display:flex;align-items:flex-start;justify-content:center}.widget-application .widget-instructions__step{display:flex;flex-direction:column;align-items:center;justify-content:flex-start;margin:0 15px}@media only screen and (max-width: 900px){.widget-application .widget-instructions__step{margin:0 10px}}.widget-application .widget-instructions__step img{display:block;width:52px;height:80px;object-fit:contain;object-position:center}.widget-application .widget-instructions__step p{color:#413e3e;font-size:20px;font-weight:bold;text-align:center;margin-top:10px;max-width:135px}@media only screen and (max-width: 900px){.widget-application .widget-instructions__step p{font-size:18px}}.widget-application .widget-instructions button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;display:flex;align-items:center;justify-content:center;height:44px;padding:0 33px;border-radius:52px;background-color:#fac62d;color:#413e3e;font-size:24px;font-weight:bold;text-transform:uppercase;margin:25px auto 0 auto}.widget-application .widget-tab__panorama{width:100%;height:100%;position:absolute;left:0;top:0;z-index:2}.widget-application .widget-tab__panorama-overlay{width:100%;height:100%;overflow:hidden;background:#fff !important}.widget-application .widget-tab__panorama-overlay *{display:none !important}.widget-application .widget-tab__panorama-overlay canvas{display:block !important}.widget-application .widget-tab__panorama-controls{position:absolute;z-index:2;left:50%;bottom:35px;display:flex;align-items:center;justify-content:center;padding:8px;border-radius:38px;background-color:rgba(0,0,0,.2);transform:translateX(-50%);backdrop-filter:blur(5px);-moz-backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px)}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-controls{bottom:20px}}.widget-application .widget-tab__panorama-controls-button{ouline:none;border:none;box-shadow:none;background:rgba(0,0,0,0);cursor:pointer;width:55px;height:55px;border-radius:50%;background-color:#fff;display:flex;align-items:center;justify-content:center;margin-right:18px}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-controls-button{width:40px;height:40px}}@media only screen and (max-width: 545px){.widget-application .widget-tab__panorama-controls-button{margin-right:13px}}.widget-application .widget-tab__panorama-controls-button img{display:block}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-controls-button img{transform:scale(0.7)}}.widget-application .widget-tab__panorama-controls-button:nth-last-child(1){margin-right:0}.widget-application .widget-tab__panorama-map{position:absolute;left:45px;bottom:35px;z-index:3;border-radius:10px;border:8px solid #fff;background-color:#fff;opacity:1;transition:opacity .5s}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-map{left:20px;bottom:20px;transform:scale(0.6);transform-origin:0% 100%}.widget-application .widget-tab__panorama-map svg polygon{opacity:0}.widget-application .widget-tab__panorama-map--scaled{transform:scale(1) !important}.widget-application .widget-tab__panorama-map--scaled svg polygon:active{opacity:.3 !important}}@media only screen and (max-width: 545px){.widget-application .widget-tab__panorama-map{transform:scale(0.4)}}.widget-application .widget-tab__panorama-map--hidden{opacity:0;pointer-events:none}.widget-application .widget-tab__panorama-map img{width:195px;border-radius:none;display:block;user-select:none;-webkit-user-select:none;user-drag:none;-webkit-user-drag:none}.widget-application .widget-tab__panorama-map img:hover{box-shadow:1px 1px 10px rgba(0,0,0,.15)}.widget-application .widget-tab__panorama-map svg{position:absolute;left:0;top:0;width:195px;height:100%;z-index:3;display:block;border-radius:inherit}.widget-application .widget-tab__panorama-map svg polygon{opacity:0;fill:#fac62d;cursor:pointer}.widget-application .widget-tab__panorama-map svg polygon:hover{opacity:.3}@media only screen and (max-width: 900px){.widget-application .widget-tab__panorama-map svg polygon:hover{opacity:0}}.widget-application .widget-tab__panorama-map__fov{position:absolute;left:0;top:0;width:0px;height:0px;border-radius:50%;border:30px solid rgba(0,0,0,0);border-top:40px solid rgba(250,198,45,.4);transform:translate(-50%, -50%) rotate(0rad);transform-origin:50% 50%;z-index:4;pointer-events:none}.widget-application .widget-tab__panorama-map__fov::before{content:"";position:absolute;z-index:5;left:50%;top:50%;transform:translate(-50%, -50%) translateY(-5px);width:15px;height:15px;background-color:#fac62d;border-radius:50%;border:2px solid #fac62d;box-shadow:inset 0 0 0 2px #fff}.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--sm{transform:translate(-50%, -50%) scale(0.75)}.widget-loader div{position:absolute;top:33px;width:13px;height:13px;border-radius:50%;background:#fac62d;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;z-index:2}.widget-application .widget-tab__model-scene{width:100%;height:100%;display:block}.widget-application .widget-tab__model-joystick{position:absolute;left:100px;bottom:100px;opacity:0;pointer-events:none}@media only screen and (max-width: 545px){.widget-application .widget-tab__model-joystick{left:50%;transform:translateX(-50%)}}.widget-application .widget-tab__model-joystick--active{opacity:1;pointer-events:unset}/*# sourceMappingURL=app.css.map */
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"sourceRoot":"","sources":["../../../src/assets/sass/index.sass","../../../src/assets/sass/vars.sass","../../../src/assets/sass/mixin.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":"AAGA,mBACE,sBACA,8BACA,SACA,UAEF,UACE,eAEF,oBACE,YAEA,WACA,2BACA,gBACA,kBACA,UACA,iBCfM,KDiBN,+EACE,qCACA,mCACA,kCACA,aACA,gBACA,qBACA,MClBQ,QDoBV,iCACE,kBACA,UACA,SACA,UACA,0CALF,iCAMI,UACA,UACF,qCACE,cACA,WACA,YACA,mBACA,uBACA,0CANF,qCAOI,WACA,aAEN,yFAEE,kBACA,WACA,SACA,UErDF,YACA,YACA,gBACA,yBACA,eFmDE,aACA,0CARF,yFASI,WACA,UACF,iGACE,cACA,WACA,YACA,mBACA,uBACA,0CANF,iGAOI,WACA,aAEN,kCACE,kBACA,aACA,mBACA,uBACA,UACA,WACA,SACA,MCxEI,KDyEJ,iBCtEQ,QDuER,iBACA,mBACA,gBACA,YACA,eACA,wCACE,wCGlFJ,wCACE,kBACA,UACA,WACA,YACA,aACA,mBACA,yBACA,0CARF,wCASI,WACA,aACJ,
|
1
|
+
{"version":3,"sourceRoot":"","sources":["../../../src/assets/sass/index.sass","../../../src/assets/sass/vars.sass","../../../src/assets/sass/mixin.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":"AAGA,mBACE,sBACA,8BACA,SACA,UAEF,UACE,eAEF,oBACE,YAEA,WACA,2BACA,gBACA,kBACA,UACA,iBCfM,KDiBN,+EACE,qCACA,mCACA,kCACA,aACA,gBACA,qBACA,MClBQ,QDoBV,iCACE,kBACA,UACA,SACA,UACA,0CALF,iCAMI,UACA,UACF,qCACE,cACA,WACA,YACA,mBACA,uBACA,0CANF,qCAOI,WACA,aAEN,yFAEE,kBACA,WACA,SACA,UErDF,YACA,YACA,gBACA,yBACA,eFmDE,aACA,0CARF,yFASI,WACA,UACF,iGACE,cACA,WACA,YACA,mBACA,uBACA,0CANF,iGAOI,WACA,aAEN,kCACE,kBACA,aACA,mBACA,uBACA,UACA,WACA,SACA,MCxEI,KDyEJ,iBCtEQ,QDuER,iBACA,mBACA,gBACA,YACA,eACA,wCACE,wCGlFJ,wCACE,kBACA,UACA,WACA,YACA,aACA,mBACA,yBACA,0CARF,wCASI,sBACA,WACA,aACJ,uCDfA,YACA,YACA,gBACA,yBACA,eCaE,WACA,YACA,kBACA,aACA,mBACA,uBACA,iBFjBG,QEkBH,MFdQ,QEeR,eACA,iBACA,iBACA,iBACA,0CAdF,uCAeI,WACA,YACA,eACA,gBACA,iBACF,0CApBF,uCAqBI,iBACF,+CACE,iBF9BM,QEgCV,gCACE,WACA,YACA,aACA,mBACA,uBACA,kBACA,yBAPF,gCAQI,mBACF,uCACE,eACA,gBACA,mBACA,cACF,4CACE,WACA,YACA,kBACA,0BACA,kDD3DJ,YACA,YACA,gBACA,yBACA,eCyDM,kBACA,SACA,YACA,2BACA,aACA,mBACA,uBACA,sBACA,iBF/DD,QEgEC,mBACA,YACA,0CAbF,kDAcI,YACA,WACA,UACA,UACA,YACA,gBACF,sDACE,cACA,kBACA,kBACA,QACA,0CALF,sDAMI,WACA,gBACJ,uDACE,eACA,iBACA,MFhFE,QEiFF,yBACA,0CALF,uDAMI,cACN,sDACE,sBACA,uBACA,kBACA,iCACA,0DACE,kBACA,SACA,QACA,gCACA,eACA,gBACA,YACA,aACA,mBACA,UACA,oBFjGR,iBACA,yBACA,eACA,uBEgGQ,iEACE,UAEJ,sFACE,YAEN,qCACE,kBACA,UACA,UACA,SACA,gBACA,gBACA,oBACA,iDACE,aACA,eACA,uBACA,gBACA,WACA,qDACE,WACA,YACA,cACA,iBACA,eACA,kBACA,sBACJ,wCACE,qBACA,2CACE,MF1IF,KE2IE,iBFxIE,QEyIF,iBACA,mBACA,gBACA,YACA,eACA,mBACA,YF1IR,iBACA,yBACA,eACA,uBEyIQ,iDACE,aACA,eACA,WAEA,6DACE,eACA,iBACA,WACA,YACA,SACA,kBACA,2FACE,wBACJ,4DACE,aACJ,wDACE,kBACA,+DACE,iBACA,WACA,WACA,YACA,cACA,gKACA,kBACA,WACA,QACA,2BClLZ,yCACE,kBACA,UACA,OACA,MACA,WACA,YACA,aACA,mBACA,uBACA,2BACA,4BACA,sBAEA,kDACE,aACA,sBACA,mBACA,2BACA,uCACA,mBACA,gBACA,YACA,4BACA,4BFpBJ,0BACA,+BACA,kCEoBE,gDACE,aACA,uBACA,uBACF,+CACE,aACA,sBACA,mBACA,2BACA,cACA,0CANF,+CAOI,eACF,mDACE,cACA,WACA,YACA,mBACA,uBACF,iDACE,MHtCI,QGuCJ,eACA,iBACA,kBACA,gBACA,gBACA,0CAPF,iDAQI,gBACN,gDFxDF,YACA,YACA,gBACA,yBACA,eEsDI,aACA,mBACA,uBACA,YACA,eACA,mBACA,iBHxDM,QGyDN,MHvDM,QGwDN,eACA,iBACA,yBACA,wBCjEF,0CACE,WACA,YACA,kBACA,OACA,MACA,UACA,kDACE,WACA,YACA,gBACA,2BACA,oDACE,wBACF,yDACE,yBACJ,mDACE,kBACA,UACA,SACA,YACA,aACA,mBACA,uBACA,YACA,mBACA,gCACA,2BHxBN,0BACA,+BACA,kCGwBM,0CAbF,mDAcI,aACF,0DHnCN,YACA,YACA,gBACA,yBACA,eGiCQ,WACA,YACA,kBACA,iBJpCF,KIqCE,aACA,mBACA,uBACA,kBACA,0CAVF,0DAWI,WACA,aACF,0CAbF,0DAcI,mBACF,8DACE,cACA,0CAFF,8DAGI,sBACJ,4EACE,eACN,8CACE,kBACA,UACA,YACA,UACA,mBACA,sBACA,iBJ3DA,KI4DA,UACA,uBACA,0CAVF,8CAWI,UACA,YACA,qBACA,yBAEE,0DACE,UACJ,sDACE,8BAGI,yEACE,uBACV,0CAxBF,8CAyBI,sBACF,sDACE,UACA,oBACF,kDACE,YACA,mBACA,cJ3ER,iBACA,yBACA,eACA,uBI0EQ,wDACE,wCACJ,kDACE,kBACA,OACA,MACA,YACA,YACA,UACA,cACA,sBACA,0DACE,UACA,KJ/FA,QIgGA,eACA,gEACE,WACA,0CAFF,gEAGI,WACR,mDACE,kBACA,OACA,MACA,UACA,WACA,kBACA,gCACA,0CACA,6CACA,yBACA,UACA,oBACA,2DACE,WACA,kBACA,UACA,SACA,QACA,iDACA,WACA,YACA,iBJ3HA,QI4HA,kBACA,yBACA,gCCrIZ,eACE,cACA,kBACA,WACA,YACA,yBACE,kBACA,SACA,QACA,gCACF,mBACE,4CACF,mBACE,kBACA,SACA,WACA,YACA,kBACA,WLXQ,QKYR,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,8BChDA,uCACE,WACA,YACA,kBACA,OACA,MACA,UACA,6CACE,WACA,YACA,cACF,gDACE,kBACA,WACA,aACA,UACA,oBACA,0CANF,gDAOI,SACA,4BACF,wDACE,UACA","file":"app.css"}
|
@@ -15,8 +15,13 @@
|
|
15
15
|
height: 100%
|
16
16
|
overflow: hidden
|
17
17
|
background: $white !important
|
18
|
+
*
|
19
|
+
display: none !important
|
20
|
+
canvas
|
21
|
+
display: block !important
|
18
22
|
&-controls
|
19
23
|
position: absolute
|
24
|
+
z-index: 2
|
20
25
|
left: 50%
|
21
26
|
bottom: 35px
|
22
27
|
display: flex
|
@@ -28,13 +33,7 @@
|
|
28
33
|
transform: translateX(-50%)
|
29
34
|
@include blurBackground(5px)
|
30
35
|
@media #{$tablet}
|
31
|
-
|
32
|
-
left: unset
|
33
|
-
transform: none
|
34
|
-
bottom: 120px
|
35
|
-
@media #{$mobile}
|
36
|
-
right: 20px
|
37
|
-
bottom: 100px
|
36
|
+
bottom: 20px
|
38
37
|
&-button
|
39
38
|
@include customButton
|
40
39
|
width: 55px
|
@@ -48,6 +47,8 @@
|
|
48
47
|
@media #{$tablet}
|
49
48
|
width: 40px
|
50
49
|
height: 40px
|
50
|
+
@media #{$mobile}
|
51
|
+
margin-right: 13px
|
51
52
|
img
|
52
53
|
display: block
|
53
54
|
@media #{$tablet}
|
@@ -60,22 +61,34 @@
|
|
60
61
|
bottom: 35px
|
61
62
|
z-index: 3
|
62
63
|
border-radius: 10px
|
64
|
+
border: 8px solid $white
|
65
|
+
background-color: $white
|
63
66
|
opacity: 1
|
64
67
|
transition: opacity .5s
|
65
|
-
|
66
|
-
@media #{$mobile}
|
68
|
+
@media #{$tablet}
|
67
69
|
left: 20px
|
68
70
|
bottom: 20px
|
71
|
+
transform: scale(.6)
|
72
|
+
transform-origin: 0% 100%
|
73
|
+
svg
|
74
|
+
polygon
|
75
|
+
opacity: 0
|
76
|
+
&--scaled
|
77
|
+
transform: scale(1) !important
|
78
|
+
svg
|
79
|
+
polygon
|
80
|
+
&:active
|
81
|
+
opacity: .3 !important
|
82
|
+
@media #{$mobile}
|
83
|
+
transform: scale(.4)
|
69
84
|
&--hidden
|
70
85
|
opacity: 0
|
71
86
|
pointer-events: none
|
72
87
|
img
|
73
88
|
width: 195px
|
74
|
-
border-radius:
|
89
|
+
border-radius: none
|
75
90
|
display: block
|
76
91
|
@include noSelect
|
77
|
-
@media #{$tablet}
|
78
|
-
width: 150px
|
79
92
|
&:hover
|
80
93
|
box-shadow: 1px 1px 10px rgba(0,0,0,0.15)
|
81
94
|
svg
|
@@ -87,14 +100,14 @@
|
|
87
100
|
z-index: 3
|
88
101
|
display: block
|
89
102
|
border-radius: inherit
|
90
|
-
@media #{$tablet}
|
91
|
-
width: 150px
|
92
103
|
polygon
|
93
104
|
opacity: 0
|
94
105
|
fill: $mainColor
|
95
106
|
cursor: pointer
|
96
107
|
&:hover
|
97
108
|
opacity: .3
|
109
|
+
@media #{$tablet}
|
110
|
+
opacity: 0
|
98
111
|
&__fov
|
99
112
|
position: absolute
|
100
113
|
left: 0
|
@@ -108,24 +121,16 @@
|
|
108
121
|
transform-origin: 50% 50%
|
109
122
|
z-index: 4
|
110
123
|
pointer-events: none
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
background-color: $mainColor
|
119
|
-
border-radius: 50%
|
120
|
-
z-index: 5
|
121
|
-
visibility: hidden
|
122
|
-
pointer-events: none
|
123
|
-
&--big
|
124
|
-
border: 2px solid $mainColor
|
125
|
-
box-shadow: inset 0 0 0 2px #ffffff
|
124
|
+
&::before
|
125
|
+
content: ''
|
126
|
+
position: absolute
|
127
|
+
z-index: 5
|
128
|
+
left: 50%
|
129
|
+
top: 50%
|
130
|
+
transform: translate(-50%, -50%) translateY(-5px)
|
126
131
|
width: 15px
|
127
132
|
height: 15px
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
133
|
+
background-color: $mainColor
|
134
|
+
border-radius: 50%
|
135
|
+
border: 2px solid $mainColor
|
136
|
+
box-shadow: inset 0 0 0 2px #ffffff
|
@@ -10,7 +10,8 @@
|
|
10
10
|
display: flex
|
11
11
|
align-items: center
|
12
12
|
justify-content: flex-end
|
13
|
-
@media #{$
|
13
|
+
@media #{$tablet}
|
14
|
+
flex-direction: column
|
14
15
|
right: 20px
|
15
16
|
bottom: 20px
|
16
17
|
.widget-tab-button
|
@@ -31,9 +32,10 @@
|
|
31
32
|
width: 60px
|
32
33
|
height: 60px
|
33
34
|
font-size: 24px
|
34
|
-
margin-left:
|
35
|
+
margin-left: 0px
|
36
|
+
margin-top: 20px
|
35
37
|
@media #{$mobile}
|
36
|
-
margin-
|
38
|
+
margin-top: 10px
|
37
39
|
&--active
|
38
40
|
background-color: $mainColor
|
39
41
|
|
@@ -73,11 +75,9 @@
|
|
73
75
|
height: 60px
|
74
76
|
width: 60px
|
75
77
|
padding: 0
|
76
|
-
left: 45px
|
77
|
-
transform: none
|
78
|
-
@media #{$mobile}
|
79
78
|
left: 20px
|
80
79
|
bottom: 20px
|
80
|
+
transform: none
|
81
81
|
img
|
82
82
|
display: block
|
83
83
|
margin-right: 20px
|
@@ -109,6 +109,7 @@
|
|
109
109
|
height: 600px
|
110
110
|
object-fit: contain
|
111
111
|
opacity: 0
|
112
|
+
pointer-events: none
|
112
113
|
@include noSelect
|
113
114
|
&.active
|
114
115
|
opacity: 1
|
@@ -34,7 +34,7 @@ html, body
|
|
34
34
|
left: 45px
|
35
35
|
top: 30px
|
36
36
|
z-index: 3
|
37
|
-
@media #{$
|
37
|
+
@media #{$tablet}
|
38
38
|
left: 20px
|
39
39
|
top: 20px
|
40
40
|
img
|
@@ -55,7 +55,7 @@ html, body
|
|
55
55
|
z-index: 3
|
56
56
|
@include customButton
|
57
57
|
padding: 10px
|
58
|
-
@media #{$
|
58
|
+
@media #{$tablet}
|
59
59
|
right: 20px
|
60
60
|
top: 20px
|
61
61
|
img
|
@@ -130,7 +130,7 @@ var Application = (0, _mobxReactLite.observer)(function (_ref) {
|
|
130
130
|
style: appStyle
|
131
131
|
}, /*#__PURE__*/_react.default.createElement("section", {
|
132
132
|
className: "widget-tab widget-tab--".concat(currentTab)
|
133
|
-
}, tabsList[currentTab]), /*#__PURE__*/_react.default.createElement("a", {
|
133
|
+
}, tabsList[currentTab]), config.logo && /*#__PURE__*/_react.default.createElement("a", {
|
134
134
|
className: "widget-logo",
|
135
135
|
href: config.logoUrl,
|
136
136
|
target: "_blank",
|
@@ -19,10 +19,14 @@ var _threeDeviceOrientation = _interopRequireDefault(require("three-device-orien
|
|
19
19
|
|
20
20
|
var _geometric = require("geometric");
|
21
21
|
|
22
|
-
var
|
22
|
+
var _deviceOrientationStatuses = require("../enums/deviceOrientationStatuses");
|
23
|
+
|
24
|
+
var _deviceWidth = require("../enums/deviceWidth");
|
23
25
|
|
24
26
|
var _imageExtentions = require("../enums/imageExtentions");
|
25
27
|
|
28
|
+
var _helpers = require("../utils/helpers");
|
29
|
+
|
26
30
|
var _panoramaHelpers = require("../utils/panoramaHelpers");
|
27
31
|
|
28
32
|
var _Loader = _interopRequireDefault(require("./Loader"));
|
@@ -115,8 +119,8 @@ var getPanoramas = function getPanoramas(json, images, setLoadingState) {
|
|
115
119
|
var indexAsString = String(index);
|
116
120
|
var panoramaId = String((0, _imageExtentions.removeExtention)(img.substring(panoramaIdIndex))).split('.')[0];
|
117
121
|
|
118
|
-
if (panoramaId.includes(_panoramaHelpers.cameraIdBeginning)) {
|
119
|
-
var cameraIdIndex = panoramaId.indexOf(_panoramaHelpers.cameraIdBeginning) - 1;
|
122
|
+
if (panoramaId.toLowerCase().includes(_panoramaHelpers.cameraIdBeginning)) {
|
123
|
+
var cameraIdIndex = panoramaId.toLowerCase().indexOf(_panoramaHelpers.cameraIdBeginning) - 1;
|
120
124
|
panoramaId = panoramaId.slice(0, cameraIdIndex);
|
121
125
|
}
|
122
126
|
|
@@ -138,20 +142,18 @@ var getPanoramas = function getPanoramas(json, images, setLoadingState) {
|
|
138
142
|
left = _polygonMean2[0],
|
139
143
|
top = _polygonMean2[1];
|
140
144
|
|
141
|
-
if (
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
top = currentCamera.Location.Y;
|
146
|
-
}
|
147
|
-
|
148
|
-
panorama.userData = {
|
149
|
-
left: left,
|
150
|
-
top: top,
|
151
|
-
points: roomPoints
|
152
|
-
};
|
145
|
+
if (panorama.src.toLowerCase().includes(_panoramaHelpers.cameraIdBeginning)) {
|
146
|
+
var currentCamera = (0, _panoramaHelpers.getCameraFromSrc)(json, panorama.src);
|
147
|
+
left = currentCamera.Location.X;
|
148
|
+
top = currentCamera.Location.Y;
|
153
149
|
}
|
154
150
|
|
151
|
+
panorama.userData = {
|
152
|
+
left: left,
|
153
|
+
top: top,
|
154
|
+
points: roomPoints
|
155
|
+
};
|
156
|
+
|
155
157
|
if (panorama['room_id'] === _store.default.initialPanoramaRoomId) {
|
156
158
|
acc.unshift(panorama);
|
157
159
|
} else {
|
@@ -244,58 +246,74 @@ var PanoramaTab = function PanoramaTab(_ref4) {
|
|
244
246
|
images = _ref4.images,
|
245
247
|
disabled = _ref4.disabled;
|
246
248
|
|
247
|
-
var _useState = (0, _react.useState)(
|
249
|
+
var _useState = (0, _react.useState)(_deviceOrientationStatuses.deviceOrientationStatuses.DENIED),
|
248
250
|
_useState2 = _slicedToArray(_useState, 2),
|
249
|
-
|
250
|
-
|
251
|
+
deviceOrientationStatus = _useState2[0],
|
252
|
+
setDeviceOrientationStatus = _useState2[1];
|
251
253
|
|
252
254
|
var _useState3 = (0, _react.useState)(true),
|
253
255
|
_useState4 = _slicedToArray(_useState3, 2),
|
254
|
-
|
255
|
-
|
256
|
+
showInstructions = _useState4[0],
|
257
|
+
setInstructionsState = _useState4[1];
|
256
258
|
|
257
|
-
var _useState5 = (0, _react.useState)(
|
259
|
+
var _useState5 = (0, _react.useState)(true),
|
258
260
|
_useState6 = _slicedToArray(_useState5, 2),
|
259
|
-
|
260
|
-
|
261
|
+
loadingState = _useState6[0],
|
262
|
+
setLoadingState = _useState6[1];
|
261
263
|
|
262
|
-
var _useState7 = (0, _react.useState)(
|
264
|
+
var _useState7 = (0, _react.useState)({
|
265
|
+
width: 0,
|
266
|
+
height: 0
|
267
|
+
}),
|
263
268
|
_useState8 = _slicedToArray(_useState7, 2),
|
264
|
-
|
265
|
-
|
269
|
+
windowSize = _useState8[0],
|
270
|
+
setWindowSize = _useState8[1];
|
266
271
|
|
267
272
|
var _useState9 = (0, _react.useState)({
|
268
|
-
|
269
|
-
|
273
|
+
width: '195px',
|
274
|
+
height: 'auto'
|
270
275
|
}),
|
271
276
|
_useState10 = _slicedToArray(_useState9, 2),
|
272
|
-
|
273
|
-
|
277
|
+
mapSize = _useState10[0],
|
278
|
+
setMapSize = _useState10[1];
|
274
279
|
|
275
|
-
var _useState11 = (0, _react.useState)(
|
280
|
+
var _useState11 = (0, _react.useState)({
|
281
|
+
X: 1,
|
282
|
+
Y: 1
|
283
|
+
}),
|
276
284
|
_useState12 = _slicedToArray(_useState11, 2),
|
277
|
-
|
278
|
-
|
285
|
+
planScale = _useState12[0],
|
286
|
+
setPlanScale = _useState12[1];
|
279
287
|
|
280
|
-
var _useState13 = (0, _react.useState)(
|
288
|
+
var _useState13 = (0, _react.useState)(true),
|
281
289
|
_useState14 = _slicedToArray(_useState13, 2),
|
282
|
-
|
283
|
-
|
290
|
+
isMapDisabled = _useState14[0],
|
291
|
+
setMapDisabledState = _useState14[1];
|
284
292
|
|
285
|
-
var _useState15 = (0, _react.useState)(
|
293
|
+
var _useState15 = (0, _react.useState)(false),
|
286
294
|
_useState16 = _slicedToArray(_useState15, 2),
|
287
|
-
|
288
|
-
|
295
|
+
autoplayEnabled = _useState16[0],
|
296
|
+
setAutoplayState = _useState16[1];
|
289
297
|
|
290
|
-
var _useState17 = (0, _react.useState)(
|
298
|
+
var _useState17 = (0, _react.useState)(cameraFovValues.x1),
|
291
299
|
_useState18 = _slicedToArray(_useState17, 2),
|
292
|
-
|
293
|
-
|
300
|
+
cameraFov = _useState18[0],
|
301
|
+
setCameraFov = _useState18[1];
|
294
302
|
|
295
|
-
var _useState19 = (0, _react.useState)(
|
303
|
+
var _useState19 = (0, _react.useState)(0),
|
296
304
|
_useState20 = _slicedToArray(_useState19, 2),
|
297
|
-
|
298
|
-
|
305
|
+
currentRoomIndex = _useState20[0],
|
306
|
+
setCurrentRoomIndex = _useState20[1];
|
307
|
+
|
308
|
+
var _useState21 = (0, _react.useState)([]),
|
309
|
+
_useState22 = _slicedToArray(_useState21, 2),
|
310
|
+
panoramas = _useState22[0],
|
311
|
+
setPanoramas = _useState22[1];
|
312
|
+
|
313
|
+
var _useState23 = (0, _react.useState)(null),
|
314
|
+
_useState24 = _slicedToArray(_useState23, 2),
|
315
|
+
viewer = _useState24[0],
|
316
|
+
setViewer = _useState24[1];
|
299
317
|
|
300
318
|
var changePanorama = function changePanorama(panorama) {
|
301
319
|
setCurrentRoomIndex(panorama['panorama_index']);
|
@@ -303,8 +321,33 @@ var PanoramaTab = function PanoramaTab(_ref4) {
|
|
303
321
|
};
|
304
322
|
|
305
323
|
var setScale = function setScale() {
|
324
|
+
if (!viewer) return;
|
306
325
|
var image = document.querySelector('.widget-tab__panorama-map img');
|
307
|
-
|
326
|
+
var _viewer$container = viewer.container,
|
327
|
+
clientWidth = _viewer$container.clientWidth,
|
328
|
+
clientHeight = _viewer$container.clientHeight;
|
329
|
+
var imageWidth = image.naturalWidth;
|
330
|
+
var imageHeight = image.naturalHeight;
|
331
|
+
var imageDelta = imageWidth / imageHeight;
|
332
|
+
var maxWidth = 195;
|
333
|
+
var maxHeight = clientHeight - 200;
|
334
|
+
var width = maxWidth;
|
335
|
+
var height = width / imageDelta;
|
336
|
+
|
337
|
+
if (height >= maxHeight) {
|
338
|
+
height = maxHeight;
|
339
|
+
width = height * imageDelta;
|
340
|
+
}
|
341
|
+
|
342
|
+
setMapSize({
|
343
|
+
width: "".concat(width, "px"),
|
344
|
+
height: "".concat(height, "px")
|
345
|
+
});
|
346
|
+
setPlanScale((0, _panoramaHelpers.getScale)({
|
347
|
+
width: width,
|
348
|
+
height: height
|
349
|
+
}, json));
|
350
|
+
viewer.onWindowResize(clientWidth, clientHeight);
|
308
351
|
};
|
309
352
|
|
310
353
|
var onImageLoaded = function onImageLoaded() {
|
@@ -312,12 +355,6 @@ var PanoramaTab = function PanoramaTab(_ref4) {
|
|
312
355
|
setMapDisabledState(!json);
|
313
356
|
};
|
314
357
|
|
315
|
-
var getDotClassName = function getDotClassName(index) {
|
316
|
-
var className = 'widget-tab__panorama-map__dot widget-tab__panorama-map__dot--big';
|
317
|
-
if (currentRoomIndex === index) className += ' widget-tab__panorama-map__dot--active';
|
318
|
-
return className;
|
319
|
-
};
|
320
|
-
|
321
358
|
var getDotPosition = function getDotPosition(_ref5) {
|
322
359
|
var left = _ref5.left,
|
323
360
|
top = _ref5.top;
|
@@ -348,18 +385,37 @@ var PanoramaTab = function PanoramaTab(_ref4) {
|
|
348
385
|
|
349
386
|
if (autoplayEnabled) {
|
350
387
|
viewer.disableAutoRate();
|
388
|
+
|
389
|
+
if (deviceOrientationStatus === _deviceOrientationStatuses.deviceOrientationStatuses.GRANTED) {
|
390
|
+
viewer.enableControl(DEVICEORIENTATION);
|
391
|
+
}
|
392
|
+
|
351
393
|
return;
|
352
394
|
}
|
353
395
|
|
396
|
+
if (viewer.getControlId() !== 'orbit') {
|
397
|
+
viewer.enableControl(ORBIT);
|
398
|
+
}
|
399
|
+
|
354
400
|
viewer.enableAutoRate();
|
355
401
|
};
|
356
402
|
|
357
403
|
var updateWindowWidth = function updateWindowWidth() {
|
358
|
-
return
|
404
|
+
return setWindowSize({
|
405
|
+
width: window.innerWidth,
|
406
|
+
height: window.innerHeight
|
407
|
+
});
|
408
|
+
};
|
409
|
+
|
410
|
+
var rescaleMap = function rescaleMap() {
|
411
|
+
var map = document.querySelector('.widget-tab__panorama-map');
|
412
|
+
if (!map) return;
|
413
|
+
map.classList.remove('widget-tab__panorama-map--scaled');
|
359
414
|
};
|
360
415
|
|
361
416
|
(0, _react.useEffect)(function () {
|
362
417
|
window.addEventListener('resize', updateWindowWidth);
|
418
|
+
updateWindowWidth();
|
363
419
|
return function cleanup() {
|
364
420
|
window.removeEventListener('resize', updateWindowWidth);
|
365
421
|
};
|
@@ -368,11 +424,10 @@ var PanoramaTab = function PanoramaTab(_ref4) {
|
|
368
424
|
if (!panoramas.length) return;
|
369
425
|
var container = document.querySelector('.widget-tab__panorama-overlay');
|
370
426
|
var newViewer = new PANOLENS.Viewer({
|
371
|
-
autoRotateActivationDuration:
|
427
|
+
autoRotateActivationDuration: 1000,
|
428
|
+
cameraFov: cameraFovValues.x1,
|
372
429
|
autoHideInfospot: false,
|
373
430
|
controlButtons: [],
|
374
|
-
controlBar: false,
|
375
|
-
cameraFov: cameraFovValues.x1,
|
376
431
|
container: container
|
377
432
|
});
|
378
433
|
|
@@ -396,45 +451,52 @@ var PanoramaTab = function PanoramaTab(_ref4) {
|
|
396
451
|
newViewer.scene.rotation.y = Math.PI / 2;
|
397
452
|
newViewer.camera.currentFov = cameraFovValues.x1;
|
398
453
|
setViewer(newViewer);
|
399
|
-
var camera = new THREE.PerspectiveCamera(75,
|
454
|
+
var camera = new THREE.PerspectiveCamera(75, container.clientWidth / container.clientHeight, 1, 1000);
|
400
455
|
var orientationControls = new _threeDeviceOrientation.default(camera);
|
401
456
|
|
457
|
+
var getAngle = function getAngle(control) {
|
458
|
+
if (control.alpha) {
|
459
|
+
return control.alpha - THREE.MathUtils.degToRad(control.screenOrientation);
|
460
|
+
}
|
461
|
+
|
462
|
+
return control.getAzimuthalAngle();
|
463
|
+
};
|
464
|
+
|
402
465
|
var animate = function animate() {
|
403
466
|
window.requestAnimationFrame(animate);
|
404
|
-
camera.aspect = window.innerWidth / window.innerHeight;
|
405
|
-
camera.updateProjectionMatrix();
|
406
467
|
orientationControls.update();
|
407
468
|
var fovElement = document.querySelector('.widget-tab__panorama-map__fov');
|
408
469
|
if (!fovElement) return;
|
409
|
-
var
|
410
|
-
var angle = -(control.alpha || control.getAzimuthalAngle());
|
470
|
+
var angle = -getAngle(newViewer.getControl());
|
411
471
|
fovElement.style.transform = "translate(-50%, -50%) rotate(".concat(angle, "rad)");
|
412
472
|
};
|
413
473
|
|
414
474
|
animate();
|
415
475
|
}, [panoramas]);
|
416
|
-
(0, _react.useEffect)(setScale, [json,
|
476
|
+
(0, _react.useEffect)(setScale, [json, windowSize, viewer]);
|
417
477
|
(0, _react.useEffect)(function () {
|
418
478
|
return setPanoramas(getPanoramas(json, images, setLoadingState));
|
419
479
|
}, [json, images]);
|
420
480
|
|
481
|
+
var requestDeviceOrientation = function requestDeviceOrientation() {
|
482
|
+
return DeviceOrientationEvent.requestPermission().then(function (status) {
|
483
|
+
setDeviceOrientationStatus(status);
|
484
|
+
|
485
|
+
if (status !== _deviceOrientationStatuses.deviceOrientationStatuses.GRANTED) {
|
486
|
+
viewer.enableControl(ORBIT);
|
487
|
+
return;
|
488
|
+
}
|
489
|
+
|
490
|
+
viewer.enableControl(DEVICEORIENTATION);
|
491
|
+
});
|
492
|
+
};
|
493
|
+
|
421
494
|
var onStart = function onStart() {
|
422
495
|
setInstructionsState(false);
|
423
496
|
|
424
497
|
try {
|
425
498
|
if (!DeviceOrientationEvent.requestPermission) return;
|
426
|
-
return
|
427
|
-
if (status !== _deviceOrientationStatus.deviceOrientationStatus.GRANTED) {
|
428
|
-
setTimeout(function () {
|
429
|
-
return viewer.enableControl(ORBIT);
|
430
|
-
}, 100);
|
431
|
-
return;
|
432
|
-
}
|
433
|
-
|
434
|
-
setTimeout(function () {
|
435
|
-
return viewer.enableControl(DEVICEORIENTATION);
|
436
|
-
}, 100);
|
437
|
-
});
|
499
|
+
return requestDeviceOrientation();
|
438
500
|
} catch (error) {
|
439
501
|
console.error(error.message);
|
440
502
|
}
|
@@ -453,6 +515,17 @@ var PanoramaTab = function PanoramaTab(_ref4) {
|
|
453
515
|
};
|
454
516
|
|
455
517
|
var onMapClick = function onMapClick(event) {
|
518
|
+
if (loadingState) return;
|
519
|
+
var map = document.querySelector('.widget-tab__panorama-map');
|
520
|
+
|
521
|
+
if (windowSize.width <= _deviceWidth.deviceWidth.tablet) {
|
522
|
+
if (!map.classList.contains('widget-tab__panorama-map--scaled')) {
|
523
|
+
map.classList.add('widget-tab__panorama-map--scaled');
|
524
|
+
return;
|
525
|
+
}
|
526
|
+
}
|
527
|
+
|
528
|
+
rescaleMap();
|
456
529
|
var image = document.querySelector('.widget-tab__panorama-map img');
|
457
530
|
var clientX = event.clientX,
|
458
531
|
clientY = event.clientY;
|
@@ -473,28 +546,22 @@ var PanoramaTab = function PanoramaTab(_ref4) {
|
|
473
546
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
474
547
|
className: "widget-tab__panorama"
|
475
548
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
476
|
-
className: "widget-tab__panorama-overlay"
|
549
|
+
className: "widget-tab__panorama-overlay",
|
550
|
+
onContextMenu: _helpers.preventRightClick
|
477
551
|
}), loadingState && /*#__PURE__*/_react.default.createElement(_Loader.default, {
|
478
552
|
absolute: true
|
479
553
|
}), /*#__PURE__*/_react.default.createElement("div", {
|
480
554
|
className: "widget-tab__panorama-map ".concat(isMapDisabled ? 'widget-tab__panorama-map--hidden' : '')
|
481
555
|
}, /*#__PURE__*/_react.default.createElement("img", {
|
482
556
|
src: planImage,
|
483
|
-
|
484
|
-
alt: "plan"
|
485
|
-
|
486
|
-
|
487
|
-
key: index,
|
488
|
-
className: getDotClassName(index),
|
489
|
-
style: getDotPosition(panorama.userData),
|
490
|
-
onClick: function onClick() {
|
491
|
-
return changePanorama(panorama);
|
492
|
-
}
|
493
|
-
});
|
494
|
-
}), /*#__PURE__*/_react.default.createElement("div", {
|
557
|
+
style: mapSize,
|
558
|
+
alt: "plan",
|
559
|
+
onLoad: onImageLoaded
|
560
|
+
}), !isMapDisabled && /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
495
561
|
className: "widget-tab__panorama-map__fov",
|
496
562
|
style: getDotPosition(((_panoramas$currentRoo = panoramas[currentRoomIndex]) === null || _panoramas$currentRoo === void 0 ? void 0 : _panoramas$currentRoo.userData) || getDefaultUserData())
|
497
563
|
}), /*#__PURE__*/_react.default.createElement("svg", {
|
564
|
+
width: mapSize.width,
|
498
565
|
key: "X-".concat(planScale.X, "-Y-").concat(planScale.Y),
|
499
566
|
onClick: onMapClick
|
500
567
|
}, panoramas.map(function (_ref10, index) {
|
@@ -13,6 +13,8 @@ var _panzoom = _interopRequireDefault(require("panzoom"));
|
|
13
13
|
|
14
14
|
var _threesixty = _interopRequireDefault(require("../threesixty"));
|
15
15
|
|
16
|
+
var _helpers = require("../utils/helpers");
|
17
|
+
|
16
18
|
var _Instructions = _interopRequireDefault(require("./Instructions"));
|
17
19
|
|
18
20
|
var _handMove = _interopRequireDefault(require("../assets/icons/hand-move.svg"));
|
@@ -88,8 +90,8 @@ var RotationTab = function RotationTab(_ref) {
|
|
88
90
|
var controller = (0, _panzoom.default)(container, {
|
89
91
|
maxZoom: 3,
|
90
92
|
minZoom: 0.5,
|
91
|
-
beforeMouseDown: function beforeMouseDown(
|
92
|
-
return !
|
93
|
+
beforeMouseDown: function beforeMouseDown(event) {
|
94
|
+
return !event.shiftKey;
|
93
95
|
}
|
94
96
|
});
|
95
97
|
controller.on('panstart', function () {
|
@@ -114,7 +116,8 @@ var RotationTab = function RotationTab(_ref) {
|
|
114
116
|
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("div", {
|
115
117
|
className: "widget-tab__threesixty ".concat(active ? 'widget-tab__threesixty--active' : '')
|
116
118
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
117
|
-
className: "widget-tab__threesixty-container"
|
119
|
+
className: "widget-tab__threesixty-container",
|
120
|
+
onContextMenu: _helpers.preventRightClick
|
118
121
|
}, images.map(function (img, index) {
|
119
122
|
return /*#__PURE__*/_react.default.createElement("img", {
|
120
123
|
src: img,
|
@@ -37,7 +37,7 @@ var Widget = /*#__PURE__*/function () {
|
|
37
37
|
|
38
38
|
_classCallCheck(this, Widget);
|
39
39
|
|
40
|
-
_defineProperty(this, "requiredParams", ['tabs', '
|
40
|
+
_defineProperty(this, "requiredParams", ['tabs', 'width', 'height', 'API_URL']);
|
41
41
|
|
42
42
|
var config = _objectSpread(_objectSpread({}, _defaultConfig.default), options);
|
43
43
|
|
@@ -7,13 +7,11 @@ exports.default = void 0;
|
|
7
7
|
|
8
8
|
var _react = _interopRequireDefault(require("react"));
|
9
9
|
|
10
|
-
var _logo = _interopRequireDefault(require("../assets/img/logo.svg"));
|
11
|
-
|
12
10
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
13
11
|
|
14
12
|
var defaultConfig = {
|
15
13
|
tabs: ['rotation', 'panorama'],
|
16
|
-
logo:
|
14
|
+
logo: null,
|
17
15
|
logoUrl: null,
|
18
16
|
width: null,
|
19
17
|
height: null,
|
@@ -0,0 +1,11 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.deviceOrientationStatuses = void 0;
|
7
|
+
var deviceOrientationStatuses = {
|
8
|
+
GRANTED: 'granted',
|
9
|
+
DENIED: 'denied'
|
10
|
+
};
|
11
|
+
exports.deviceOrientationStatuses = deviceOrientationStatuses;
|
@@ -61,7 +61,9 @@ var Events = /*#__PURE__*/function () {
|
|
61
61
|
_classPrivateFieldSet(this, _eventHandlers, {
|
62
62
|
container: {
|
63
63
|
mousedown: function mousedown(e) {
|
64
|
-
|
64
|
+
if (e.button !== 0) return;
|
65
|
+
|
66
|
+
_classPrivateFieldSet(_this, _dragOrigin, e.pageX);
|
65
67
|
},
|
66
68
|
touchstart: function touchstart(e) {
|
67
69
|
return _classPrivateFieldSet(_this, _dragOrigin, e.touches[0].clientX);
|
@@ -0,0 +1,12 @@
|
|
1
|
+
"use strict";
|
2
|
+
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
4
|
+
value: true
|
5
|
+
});
|
6
|
+
exports.preventRightClick = void 0;
|
7
|
+
|
8
|
+
var preventRightClick = function preventRightClick(event) {
|
9
|
+
event.preventDefault();
|
10
|
+
};
|
11
|
+
|
12
|
+
exports.preventRightClick = preventRightClick;
|
@@ -25,7 +25,7 @@ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToAr
|
|
25
25
|
|
26
26
|
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; }
|
27
27
|
|
28
|
-
var cameraIdBeginning = '
|
28
|
+
var cameraIdBeginning = 'cameraid';
|
29
29
|
exports.cameraIdBeginning = cameraIdBeginning;
|
30
30
|
|
31
31
|
var getArrayFromNumber = function getArrayFromNumber(num) {
|
@@ -63,17 +63,17 @@ var getRoomCoordinates = function getRoomCoordinates(room, walls, vertices) {
|
|
63
63
|
|
64
64
|
exports.getRoomCoordinates = getRoomCoordinates;
|
65
65
|
|
66
|
-
var getScale = function getScale(
|
66
|
+
var getScale = function getScale(_ref, json) {
|
67
|
+
var width = _ref.width,
|
68
|
+
height = _ref.height;
|
67
69
|
if (!json) return {
|
68
70
|
X: 1,
|
69
71
|
Y: 1
|
70
72
|
};
|
71
|
-
var imageWidth = image.width;
|
72
|
-
var imageHeight = image.height;
|
73
73
|
var baseImageWidth = 1024;
|
74
|
-
var baseImageHeight =
|
75
|
-
var deltaX =
|
76
|
-
var deltaY =
|
74
|
+
var baseImageHeight = height * (baseImageWidth / width);
|
75
|
+
var deltaX = width / baseImageWidth / json.Scale.X;
|
76
|
+
var deltaY = height / baseImageHeight / json.Scale.X;
|
77
77
|
return {
|
78
78
|
X: deltaX,
|
79
79
|
Y: deltaY
|
@@ -85,11 +85,11 @@ exports.getScale = getScale;
|
|
85
85
|
var getCameraFromSrc = function getCameraFromSrc(json, src) {
|
86
86
|
var _json$Floors$0$Camera;
|
87
87
|
|
88
|
-
var cameraIdIndex = src.indexOf(cameraIdBeginning);
|
88
|
+
var cameraIdIndex = src.toLowerCase().indexOf(cameraIdBeginning);
|
89
89
|
if (cameraIdIndex === -1) return null;
|
90
90
|
var cameraId = (0, _imageExtentions.removeExtention)(src.substring(cameraIdIndex));
|
91
|
-
return ((_json$Floors$0$Camera = json.Floors[0].CameraPoints) === null || _json$Floors$0$Camera === void 0 ? void 0 : _json$Floors$0$Camera.find(function (
|
92
|
-
var ID =
|
91
|
+
return ((_json$Floors$0$Camera = json.Floors[0].CameraPoints) === null || _json$Floors$0$Camera === void 0 ? void 0 : _json$Floors$0$Camera.find(function (_ref2) {
|
92
|
+
var ID = _ref2.ID;
|
93
93
|
return ID === cameraId;
|
94
94
|
})) || null;
|
95
95
|
};
|
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.53",
|
7
7
|
"private": false,
|
8
8
|
"main": "build/index.js",
|
9
9
|
"module": "build/index.js",
|
@@ -11,6 +11,9 @@
|
|
11
11
|
"build",
|
12
12
|
"README.md"
|
13
13
|
],
|
14
|
+
"engines": {
|
15
|
+
"node": "^16.0.0"
|
16
|
+
},
|
14
17
|
"scripts": {
|
15
18
|
"start": "npm run build:sass && babel src --watch -d build --copy-files",
|
16
19
|
"start-example": "cd ./example && npm run start",
|
@@ -1,11 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
4
|
-
value: true
|
5
|
-
});
|
6
|
-
exports.deviceOrientationStatus = void 0;
|
7
|
-
var deviceOrientationStatus = {
|
8
|
-
GRANTED: 'granted',
|
9
|
-
DENIED: 'denied'
|
10
|
-
};
|
11
|
-
exports.deviceOrientationStatus = deviceOrientationStatus;
|