1*cf78ab8cSAndroid Build Coastguard Workerimport{__decorate as t}from"../node_modules/tslib/tslib.es6.js";import{css as e,LitElement as o,html as i}from"https://cdn.jsdelivr.net/gh/lit/dist@2/core/lit-core.min.js";import{property as r,customElement as s}from"https://cdn.skypack.dev/pin/[email protected]/mode=imports/optimized/lit/decorators.js";import{simulationState as d}from"./device-observer.js";let a=class extends o{constructor(){super(...arguments),this.yaw=-15,this.pitch=-15,this.roll=0,this.posZ=0,this.color=e`red`,this.size=e`30px`,this.controls=!1,this.highlighted=!1,this.handleOrientationEvent=t=>{const{detail:e}=t;e.name===this.id&&this.controls&&("yaw"===e.type?this.yaw=e.value:"pitch"===e.type?this.pitch=e.value:this.roll=e.value)}}connectedCallback(){super.connectedCallback(),d.registerObserver(this),window.addEventListener("orientationEvent",this.handleOrientationEvent)}disconnectedCallback(){window.removeEventListener("orientationEvent",this.handleOrientationEvent),d.removeObserver(this),super.disconnectedCallback()}onNotify(t){this.highlighted=t.selectedId===this.id;for(const e of t.devices)if(e.name===this.id)return void(this.posZ=100*e.position.z)}render(){return i` 2*cf78ab8cSAndroid Build Coastguard Worker <style> 3*cf78ab8cSAndroid Build Coastguard Worker :host { 4*cf78ab8cSAndroid Build Coastguard Worker font-size: ${this.size}; 5*cf78ab8cSAndroid Build Coastguard Worker --color: ${this.color}; 6*cf78ab8cSAndroid Build Coastguard Worker --yaw: ${this.yaw}; 7*cf78ab8cSAndroid Build Coastguard Worker --pitch: ${this.pitch}; 8*cf78ab8cSAndroid Build Coastguard Worker --roll: ${this.roll}; 9*cf78ab8cSAndroid Build Coastguard Worker --posZ: ${this.controls?this.posZ:0}; 10*cf78ab8cSAndroid Build Coastguard Worker } 11*cf78ab8cSAndroid Build Coastguard Worker .cube > div { 12*cf78ab8cSAndroid Build Coastguard Worker outline: ${this.highlighted&&this.controls?e`dashed`:e``}; 13*cf78ab8cSAndroid Build Coastguard Worker } 14*cf78ab8cSAndroid Build Coastguard Worker </style> 15*cf78ab8cSAndroid Build Coastguard Worker <div class="cube"> 16*cf78ab8cSAndroid Build Coastguard Worker <div></div> 17*cf78ab8cSAndroid Build Coastguard Worker <div></div> 18*cf78ab8cSAndroid Build Coastguard Worker <div></div> 19*cf78ab8cSAndroid Build Coastguard Worker <div></div> 20*cf78ab8cSAndroid Build Coastguard Worker <div></div> 21*cf78ab8cSAndroid Build Coastguard Worker <div></div> 22*cf78ab8cSAndroid Build Coastguard Worker </div> 23*cf78ab8cSAndroid Build Coastguard Worker ${this.controls?i` 24*cf78ab8cSAndroid Build Coastguard Worker <div class="line"></div> 25*cf78ab8cSAndroid Build Coastguard Worker <div class="base"></div> 26*cf78ab8cSAndroid Build Coastguard Worker `:i``} 27*cf78ab8cSAndroid Build Coastguard Worker `}};a.styles=e` 28*cf78ab8cSAndroid Build Coastguard Worker :host { 29*cf78ab8cSAndroid Build Coastguard Worker /** all sizes are relative to font-size **/ 30*cf78ab8cSAndroid Build Coastguard Worker display: block; 31*cf78ab8cSAndroid Build Coastguard Worker min-height: 1.5em; 32*cf78ab8cSAndroid Build Coastguard Worker min-width: 1.5em; 33*cf78ab8cSAndroid Build Coastguard Worker width: 1em; 34*cf78ab8cSAndroid Build Coastguard Worker /* overflow: hidden; */ 35*cf78ab8cSAndroid Build Coastguard Worker transform-origin: center; 36*cf78ab8cSAndroid Build Coastguard Worker transform-style: preserve-3d; 37*cf78ab8cSAndroid Build Coastguard Worker transform: translateZ(calc(var(--posZ) * 1px)); 38*cf78ab8cSAndroid Build Coastguard Worker cursor: move; 39*cf78ab8cSAndroid Build Coastguard Worker } 40*cf78ab8cSAndroid Build Coastguard Worker 41*cf78ab8cSAndroid Build Coastguard Worker .cube { 42*cf78ab8cSAndroid Build Coastguard Worker transform-style: preserve-3d; 43*cf78ab8cSAndroid Build Coastguard Worker transform: rotateX(calc(var(--yaw) * 1deg)) 44*cf78ab8cSAndroid Build Coastguard Worker rotateY(calc(var(--pitch) * 1deg)) rotateZ(calc(var(--roll) * 1deg)); 45*cf78ab8cSAndroid Build Coastguard Worker position: absolute; 46*cf78ab8cSAndroid Build Coastguard Worker left: 0.25em; 47*cf78ab8cSAndroid Build Coastguard Worker bottom: 0.25em; 48*cf78ab8cSAndroid Build Coastguard Worker width: 1em; 49*cf78ab8cSAndroid Build Coastguard Worker height: 1em; 50*cf78ab8cSAndroid Build Coastguard Worker } 51*cf78ab8cSAndroid Build Coastguard Worker .cube > div { 52*cf78ab8cSAndroid Build Coastguard Worker position: absolute; 53*cf78ab8cSAndroid Build Coastguard Worker background-color: var(--color); 54*cf78ab8cSAndroid Build Coastguard Worker width: 100%; 55*cf78ab8cSAndroid Build Coastguard Worker height: 100%; 56*cf78ab8cSAndroid Build Coastguard Worker box-shadow: 0 0 0.25em #000 inset; 57*cf78ab8cSAndroid Build Coastguard Worker } 58*cf78ab8cSAndroid Build Coastguard Worker .cube > div:nth-child(1) { 59*cf78ab8cSAndroid Build Coastguard Worker transform: translateZ(0.5em); 60*cf78ab8cSAndroid Build Coastguard Worker } 61*cf78ab8cSAndroid Build Coastguard Worker .cube > div:nth-child(2) { 62*cf78ab8cSAndroid Build Coastguard Worker transform: rotateY(180deg) translateZ(0.5em); 63*cf78ab8cSAndroid Build Coastguard Worker } 64*cf78ab8cSAndroid Build Coastguard Worker .cube > div:nth-child(3) { 65*cf78ab8cSAndroid Build Coastguard Worker right: 0; 66*cf78ab8cSAndroid Build Coastguard Worker width: 1em; 67*cf78ab8cSAndroid Build Coastguard Worker transform: rotateY(90deg) translateZ(0.5em); 68*cf78ab8cSAndroid Build Coastguard Worker } 69*cf78ab8cSAndroid Build Coastguard Worker .cube > div:nth-child(4) { 70*cf78ab8cSAndroid Build Coastguard Worker width: 1em; 71*cf78ab8cSAndroid Build Coastguard Worker transform: rotateY(270deg) translateZ(0.5em); 72*cf78ab8cSAndroid Build Coastguard Worker } 73*cf78ab8cSAndroid Build Coastguard Worker .cube > div:nth-child(5) { 74*cf78ab8cSAndroid Build Coastguard Worker bottom: -0.5em; 75*cf78ab8cSAndroid Build Coastguard Worker height: 1em; 76*cf78ab8cSAndroid Build Coastguard Worker transform: rotateX(90deg); 77*cf78ab8cSAndroid Build Coastguard Worker box-shadow: 0 0 0.25em #000 inset, 0 0 0.25em #000; 78*cf78ab8cSAndroid Build Coastguard Worker } 79*cf78ab8cSAndroid Build Coastguard Worker .cube div:nth-child(6) { 80*cf78ab8cSAndroid Build Coastguard Worker height: 1em; 81*cf78ab8cSAndroid Build Coastguard Worker transform: translateY(-0.5em) rotateX(90deg); 82*cf78ab8cSAndroid Build Coastguard Worker overflow: hidden; 83*cf78ab8cSAndroid Build Coastguard Worker } 84*cf78ab8cSAndroid Build Coastguard Worker 85*cf78ab8cSAndroid Build Coastguard Worker .line { 86*cf78ab8cSAndroid Build Coastguard Worker position: absolute; 87*cf78ab8cSAndroid Build Coastguard Worker border-bottom: 5px dashed; 88*cf78ab8cSAndroid Build Coastguard Worker width: calc(var(--posZ) * 1px); 89*cf78ab8cSAndroid Build Coastguard Worker top: 50%; 90*cf78ab8cSAndroid Build Coastguard Worker left: 50%; 91*cf78ab8cSAndroid Build Coastguard Worker transform: rotateY(90deg) rotateX(90deg); 92*cf78ab8cSAndroid Build Coastguard Worker transform-origin: left; 93*cf78ab8cSAndroid Build Coastguard Worker } 94*cf78ab8cSAndroid Build Coastguard Worker 95*cf78ab8cSAndroid Build Coastguard Worker .base { 96*cf78ab8cSAndroid Build Coastguard Worker position: absolute; 97*cf78ab8cSAndroid Build Coastguard Worker border: 5px solid; 98*cf78ab8cSAndroid Build Coastguard Worker border-radius: 50%; 99*cf78ab8cSAndroid Build Coastguard Worker background-color: black; 100*cf78ab8cSAndroid Build Coastguard Worker height: 5px; 101*cf78ab8cSAndroid Build Coastguard Worker width: 5px; 102*cf78ab8cSAndroid Build Coastguard Worker top: 50%; 103*cf78ab8cSAndroid Build Coastguard Worker left: 50%; 104*cf78ab8cSAndroid Build Coastguard Worker transform: translate3d(-50%, -50%, calc(var(--posZ) * -1px)); 105*cf78ab8cSAndroid Build Coastguard Worker } 106*cf78ab8cSAndroid Build Coastguard Worker `,t([r({type:Number})],a.prototype,"yaw",void 0),t([r({type:Number})],a.prototype,"pitch",void 0),t([r({type:Number})],a.prototype,"roll",void 0),t([r({type:Number})],a.prototype,"posZ",void 0),t([r({type:e,attribute:"color"})],a.prototype,"color",void 0),t([r({type:e,attribute:"size"})],a.prototype,"size",void 0),t([r({type:Boolean})],a.prototype,"controls",void 0),t([r({type:Boolean})],a.prototype,"highlighted",void 0),a=t([s("ns-cube-sprite")],a);export{a as CubeSprite}; 107