UNPKG

@scalar/api-client

Version:

the open source API testing client

84 lines (83 loc) 3.13 kB
import { defineComponent as g, ref as y, onMounted as x, onBeforeUnmount as h, createBlock as D, openBlock as p, Transition as E, withCtx as T, createElementBlock as _, createCommentVNode as L, createElementVNode as s, createVNode as C, unref as b } from "vue"; import { ScalarIcon as k } from "@scalar/components"; const A = { key: 0, class: "bg-b-2 fixed right-1/2 bottom-1/2 z-50 h-64 w-64 translate-x-1/2 translate-y-1/2 rounded-xl border transition-opacity duration-200 md:right-10 md:bottom-10 md:translate-x-0 md:translate-y-0" }, w = { class: "flex h-full flex-col items-center justify-center" }, V = /* @__PURE__ */ g({ __name: "DropEventListener", emits: ["input"], setup(B, { emit: v }) { const l = v, a = y(!1); let o = 0; x(() => { document.addEventListener("dragenter", m), document.addEventListener("dragleave", f), document.addEventListener("dragover", c), document.addEventListener("drop", u); }), h(() => { document.removeEventListener("dragenter", m), document.removeEventListener("dragover", c), document.removeEventListener("dragleave", f), document.removeEventListener("drop", u); }); function d(e) { return e.dataTransfer?.types.includes("text/html") ?? !1; } function u(e) { if (e.preventDefault(), a.value = !1, o = 0, !d(e) && e.dataTransfer) { const t = e.dataTransfer.getData("text").replace(/^blob:/, ""); if (t) l("input", t, null, "drop"); else if (e.dataTransfer.files.length > 0) { const n = e.dataTransfer.files[0]; if (!n) return; const r = new FileReader(); r.onload = (i) => { i.target && typeof i.target.result == "string" && l("input", i.target.result, null, "drop"); }, r.readAsText(n); } } } function c(e) { e.preventDefault(); } function f(e) { e.preventDefault(), o--, o === 0 && (a.value = !1); } function m(e) { if (e.preventDefault(), o++, !d(e)) { if (e.dataTransfer) { const t = e.dataTransfer.items; for (let n = 0; n < t.length; n++) { const r = t[n]; if (r?.kind === "string" || r?.type?.includes("json") || r?.type?.includes("yml") || r?.type?.includes("yaml")) { a.value = !0; return; } } } a.value = !1; } } return (e, t) => (p(), D(E, { enterActiveClass: "transition-opacity duration-200", enterFromClass: "opacity-0", leaveActiveClass: "transition-opacity duration-200", leaveToClass: "opacity-0" }, { default: T(() => [ a.value ? (p(), _("div", A, [ s("div", w, [ s("div", null, [ C(b(k), { icon: "Download", size: "xl", thickness: "2" }) ]), t[0] || (t[0] = s("div", { class: "text-c-1 m-4 text-center" }, " Drop your OpenAPI document here ", -1)) ]) ])) : L("", !0) ]), _: 1 })); } }); export { V as default };