@benev/nubs
Version:
user-input system for web games
49 lines • 2.04 kB
JavaScript
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
import { html, LitElement } from "lit";
import { mixinCss } from "@chasemoskal/magical";
import { property, query } from "lit/decorators.js";
import { styles } from "./styles.css.js";
import { transform } from "./utils/transform.js";
import { calculate_basis } from "./utils/calculate_basis.js";
import { stick_vector_to_pixels } from "./utils/stick_vector_to_pixels.js";
let NubStickGraphic = class NubStickGraphic extends LitElement {
constructor() {
super(...arguments);
this.vector = [0, 0];
}
get basis() {
return calculate_basis(this.base, this.over);
}
render() {
const { basis, vector } = this;
const [x, y] = stick_vector_to_pixels(basis === null || basis === void 0 ? void 0 : basis.radius, vector);
const over_style = transform(x, y);
const under_style = transform(x * 0.5, y * 0.5);
return html `
<div part=base>
<div part=under style="${under_style}"></div>
<div part=over style="${over_style}"></div>
</div>
`;
}
};
NubStickGraphic.tag = "nub-stick-graphic";
__decorate([
property()
], NubStickGraphic.prototype, "vector", void 0);
__decorate([
query(`[part="base"]`)
], NubStickGraphic.prototype, "base", void 0);
__decorate([
query(`[part="over"]`)
], NubStickGraphic.prototype, "over", void 0);
NubStickGraphic = __decorate([
mixinCss(styles)
], NubStickGraphic);
export { NubStickGraphic };
//# sourceMappingURL=element.js.map