xref: /aosp_15_r20/tools/netsim/ui/dist/js/cube-sprite.js (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
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