UNPKG

vue-identify-network

Version:
65 lines (64 loc) 2.31 kB
import { defineComponent as g, useModel as u, ref as v, computed as y, onMounted as U, onBeforeUnmount as M, openBlock as a, createElementBlock as l, Fragment as T, normalizeClass as r, renderSlot as i, createCommentVNode as d, mergeModels as N } from "vue"; const V = /* @__PURE__ */ g({ __name: "VueIdentifyNetwork", props: { unknownClass: { required: !1, default: null }, unknownClassModifiers: {}, slowClass: { required: !1, default: null }, slowClassModifiers: {}, fastClass: { required: !1, default: null }, fastClassModifiers: {} }, emits: /* @__PURE__ */ N(["network-type", "network-speed"], ["update:unknownClass", "update:slowClass", "update:fastClass"]), setup(t, { emit: w }) { const k = u(t, "unknownClass"), p = u(t, "slowClass"), C = u(t, "fastClass"), s = w, e = v(null), o = v("Unknown"), m = y( () => typeof window > "u" ? "Unknown" : navigator.vendor ); U(() => { m.value.includes("Google") && e.value !== "Unknown" ? (e.value = navigator.connection.effectiveType, o.value = navigator.connection.downlink) : (e.value = "Unknown", o.value = "Unknown"), s("network-type", e.value), s("network-speed", o.value), navigator.connection.addEventListener("change", c); }), M(() => { navigator.connection.removeEventListener("change", c); }); const c = (n) => { e.value = n.currentTarget && n.currentTarget.effectiveType, o.value = n.currentTarget && n.currentTarget.downlink, s("network-type", e.value), s("network-speed", o.value); }; return (n, h) => (a(), l(T, null, [ e.value === "Unknown" ? (a(), l("div", { key: 0, class: r(k.value) }, [ i(n.$slots, "unknown") ], 2)) : d("", !0), e.value === "2g" ? (a(), l("div", { key: 1, class: r(p.value) }, [ i(n.$slots, "slow") ], 2)) : d("", !0), e.value !== "2g" && e.value !== "Unknown" ? (a(), l("div", { key: 2, class: r(C.value) }, [ i(n.$slots, "fast") ], 2)) : d("", !0) ], 64)); } }); let f = !1; const B = (t) => { f || (t.component("VueIdentifyNetwork", V), f = !0); }; export { V as VueIdentifyNetwork, B as default }; //# sourceMappingURL=vue-identify-network.js.map