import Moveable, { MoveableManagerInterface, Renderer } from "lit-moveable"; import { LitElement, html } from "lit"; import { customElement, property } from "lit/decorators.js"; import { ref, createRef } from "lit/directives/ref.js"; const DimensionViewable = { name: "dimensionViewable", props: [], events: [], render(moveable: MoveableManagerInterface, React: Renderer) { const rect = moveable.getRect(); return React.createElement("div", { key: "dimension-viewer", className: "moveable-dimension", style: { position: "absolute", left: `${rect.width / 2}px`, top: `${rect.height + 20}px`, background: "#4af", borderRadius: "2px", padding: "2px 4px", color: "white", fontSize: "13px", whiteSpace: "nowrap", fontWeight: "bold", willChange: "transform", transform: `translate(-50%, 0px)` } }, [ "\r\n ", Math.round(rect.offsetWidth), " x ", Math.round(rect.offsetHeight), "\r\n " ]); } } as const; @customElement("lit-app") export default class App extends LitElement { targetRef: Ref = createRef(null); render() { return html `
Target
`; } onDrag(e) { e.target.style.transform = e.transform; } onResize(e) { e.target.style.width = `${e.width}px`; e.target.style.height = `${e.height}px`; e.target.style.transform = e.drag.transform; } onRotate(e) { e.target.style.transform = e.drag.transform; } }