UNPKG

@layui/layui-vue

Version:

a component library for Vue 3 base on layui-vue

18 lines (17 loc) 1.28 kB
import { autoUpdate as A, computePosition as D } from "@floating-ui/dom"; import { computed as e, unref as a, ref as l, shallowRef as R, watch as $ } from "vue"; import { unRefRealElement as w } from "./utils.js"; function j(g, x, s = {}) { const h = e(() => a(s.middleware)), d = e(() => a(s.strategy) || "absolute"), i = e(() => a(s.placement) || "bottom"), t = e(() => w(g.value)), u = e(() => w(x.value)), n = l(0), r = l(0), p = l(d.value), f = l(i.value), c = R({}), U = e(() => ({ x: a(n), y: a(r), strategy: a(p) })), b = e(() => ({ top: `${r.value}px`, left: `${n.value}px`, position: p.value })), o = l(), m = l(); function y() { t.value !== null && u.value !== null && D(t.value, u.value, { placement: i.value, strategy: d.value, middleware: h.value }).then((v) => { n.value = v.x, r.value = v.y, p.value = v.strategy, f.value = v.placement, c.value = v.middlewareData; }); } return m.value = () => { typeof o.value == "function" && (o.value(), o.value = void 0), t.value !== null && u.value !== null && (o.value = A(t.value, u.value, y)); }, $([t, u], m.value, { flush: "sync" }), { position: U, strategy: p, placement: f, popperStyle: b, middlewareData: c, update: y, stopAutoUpdate: o, startAutoUpdate: m }; } export { j as usePopper };