@scalar/api-client
Version:
the open source API testing client
37 lines (36 loc) • 1.36 kB
JavaScript
import { defineComponent as f, ref as v, createElementBlock as h, openBlock as g, normalizeStyle as w, renderSlot as p, createElementVNode as E } from "vue";
const l = "scalar-dragging", D = /* @__PURE__ */ f({
__name: "Resize",
props: {
width: {}
},
emits: ["update:width"],
setup(t, { emit: m }) {
const s = m, d = v(!1), r = (n) => {
n.preventDefault();
const o = n.clientX, c = t.width, a = (u) => {
d.value = !0, document.body.classList.add(l);
let e = c + u.clientX - o;
e > 420 && (e = 420 + (e - 420) * 0.2), e < 240 && (e = 240), s("update:width", e);
}, i = () => {
d.value = !1, document.body.classList.remove(l), document.documentElement.removeEventListener("mousemove", a, !1), document.documentElement.removeEventListener("mouseup", i, !1), t.width > 420 ? s("update:width", 360) : t.width < 240 && s("update:width", 240);
};
document.documentElement.addEventListener("mousemove", a, !1), document.documentElement.addEventListener("mouseup", i, !1);
};
return (n, o) => (g(), h("div", {
class: "relative",
style: w({
width: `${t.width}px`
})
}, [
p(n.$slots, "default", {}, void 0, !0),
E("div", {
class: "resizer",
onMousedown: r
}, null, 32)
], 4));
}
});
export {
D as default
};