vue-identify-network
Version:
Identify the network your users are using!
65 lines (64 loc) • 2.31 kB
JavaScript
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