vue3-easter-egg-trigger
Advanced tools
Comparing version 1.0.1 to 1.0.2
import { Plugin } from 'vue'; | ||
declare const _default: Plugin; | ||
export default _default; |
@@ -46,8 +46,8 @@ declare const _default: import("vue").DefineComponent<{ | ||
}, { | ||
pattern: unknown[]; | ||
callback: Function; | ||
delay: string | number; | ||
pattern: unknown[]; | ||
target: string; | ||
type: string; | ||
}>; | ||
delay: string | number; | ||
}, {}>; | ||
export default _default; |
@@ -1,1 +0,1 @@ | ||
export { default as EasterEggTrigger } from '@/plugin/EasterEggTrigger.vue'; | ||
export { default as EasterEggTrigger } from '../plugin/EasterEggTrigger.vue'; |
@@ -0,0 +0,0 @@ export interface OptionSettings { |
@@ -0,4 +1,5 @@ | ||
import { includes as $e, isEqual as lt, uniq as Re, findIndex as ut } from "lodash"; | ||
/** | ||
* @name vue3-easter-egg-trigger | ||
* @version 1.0.1 | ||
* @version 1.0.2 | ||
* @description This packages makes it nice and easy to add Easter Egg triggers to your Vue3 site. | ||
@@ -11,213 +12,1033 @@ * @author WebDevNerdStuff & Bunnies... lots and lots of bunnies! <webdevnerdstuff@gmail.com> (https://webdevnerdstuff.com) | ||
*/ | ||
import { defineComponent, reactive, ref } from 'vue'; | ||
import { includes, isEqual, uniq, findIndex } from 'lodash'; | ||
var _sfc_main = defineComponent({ | ||
name: 'EasterEggTrigger', | ||
props: { | ||
callback: { | ||
default: null, | ||
type: Function, | ||
}, | ||
delay: { | ||
default: 500, | ||
type: [String, Number], | ||
}, | ||
pattern: { | ||
default: () => ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'], | ||
type: Array, | ||
}, | ||
target: { | ||
default: 'body', | ||
type: String, | ||
}, | ||
type: { | ||
default: 'keydown', | ||
type: String, | ||
}, | ||
}, | ||
emits: ['triggered'], | ||
setup(props, { emit }) { | ||
const pluginOptions = { | ||
callback: null, | ||
delay: 500, | ||
pattern: ['ArrowUp', 'ArrowUp', 'ArrowDown', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'ArrowLeft', 'ArrowRight', 'b', 'a'], | ||
target: 'body', | ||
type: 'keydown', | ||
}; | ||
const mouseEvents = reactive([ | ||
'click', | ||
'dblclick', | ||
'mouseup', | ||
'mousedown', // Works with multiple mousedown clicks pattern | ||
]); | ||
let easterEggsTriggerEggs = reactive([]); | ||
let timeout = setTimeout(() => { }); | ||
let input = reactive([]); | ||
let targets = reactive({ | ||
nodes: [], | ||
ids: [], | ||
classNames: [], | ||
}); | ||
// Options // | ||
const eggOptions = filterObject(props, ([key]) => { | ||
const value = props[key]; | ||
return typeof value !== 'undefined' && value !== null; | ||
}); | ||
layEggs(); | ||
// Initiate the plugin // | ||
function layEggs() { | ||
easterEggsTriggerEggs.push(eggOptions); | ||
callAddListener(); | ||
function pt(e, n) { | ||
const t = /* @__PURE__ */ Object.create(null), r = e.split(","); | ||
for (let o = 0; o < r.length; o++) | ||
t[r[o]] = !0; | ||
return n ? (o) => !!t[o.toLowerCase()] : (o) => !!t[o]; | ||
} | ||
const A = process.env.NODE_ENV !== "production" ? Object.freeze({}) : {}; | ||
process.env.NODE_ENV === "production" || Object.freeze([]); | ||
const $n = () => { | ||
}, dt = /^on[^a-z]/, ft = (e) => dt.test(e), D = Object.assign, ht = (e, n) => { | ||
const t = e.indexOf(n); | ||
t > -1 && e.splice(t, 1); | ||
}, vt = Object.prototype.hasOwnProperty, E = (e, n) => vt.call(e, n), y = Array.isArray, ne = (e) => Se(e) === "[object Map]", gt = (e) => Se(e) === "[object Set]", N = (e) => typeof e == "function", C = (e) => typeof e == "string", qe = (e) => typeof e == "symbol", x = (e) => e !== null && typeof e == "object", _t = (e) => x(e) && N(e.then) && N(e.catch), yt = Object.prototype.toString, Se = (e) => yt.call(e), Rn = (e) => Se(e).slice(8, -1), mt = (e) => Se(e) === "[object Object]", Je = (e) => C(e) && e !== "NaN" && e[0] !== "-" && "" + parseInt(e, 10) === e, wt = ((e) => { | ||
const n = /* @__PURE__ */ Object.create(null); | ||
return (t) => n[t] || (n[t] = e(t)); | ||
})((e) => e.charAt(0).toUpperCase() + e.slice(1)), ae = (e, n) => !Object.is(e, n), Et = (e, n, t) => { | ||
Object.defineProperty(e, n, { configurable: !0, enumerable: !1, value: t }); | ||
}; | ||
let an; | ||
const Te = () => an || (an = typeof globalThis < "u" ? globalThis : typeof self < "u" ? self : typeof window < "u" ? window : typeof global < "u" ? global : {}); | ||
function Ke(e) { | ||
if (y(e)) { | ||
const n = {}; | ||
for (let t = 0; t < e.length; t++) { | ||
const r = e[t], o = C(r) ? kt(r) : Ke(r); | ||
if (o) | ||
for (const s in o) | ||
n[s] = o[s]; | ||
} | ||
return n; | ||
} | ||
return C(e) || x(e) ? e : void 0; | ||
} | ||
const Nt = /;(?![^(]*\))/g, bt = /:([^]+)/, Ot = /\/\*[^]*?\*\//g; | ||
function kt(e) { | ||
const n = {}; | ||
return e.replace(Ot, "").split(Nt).forEach((t) => { | ||
if (t) { | ||
const r = t.split(bt); | ||
r.length > 1 && (n[r[0].trim()] = r[1].trim()); | ||
} | ||
}), n; | ||
} | ||
function Be(e) { | ||
let n = ""; | ||
if (C(e)) | ||
n = e; | ||
else if (y(e)) | ||
for (let t = 0; t < e.length; t++) { | ||
const r = Be(e[t]); | ||
r && (n += r + " "); | ||
} | ||
else if (x(e)) | ||
for (const t in e) | ||
e[t] && (n += t + " "); | ||
return n.trim(); | ||
} | ||
function ln(e, ...n) { | ||
console.warn(`[Vue warn] ${e}`, ...n); | ||
} | ||
let Cn; | ||
const le = (e) => { | ||
const n = new Set(e); | ||
return n.w = 0, n.n = 0, n; | ||
}, jn = (e) => (e.w & M) > 0, An = (e) => (e.n & M) > 0, Fe = /* @__PURE__ */ new WeakMap(); | ||
let ce = 0, M = 1; | ||
const Me = 30; | ||
let O; | ||
const K = Symbol(process.env.NODE_ENV !== "production" ? "iterate" : ""), Ie = Symbol(process.env.NODE_ENV !== "production" ? "Map key iterate" : ""); | ||
class Vt { | ||
constructor(n, t = null, r) { | ||
this.fn = n, this.scheduler = t, this.active = !0, this.deps = [], this.parent = void 0, function(o, s = Cn) { | ||
s && s.active && s.effects.push(o); | ||
}(this, r); | ||
} | ||
run() { | ||
if (!this.active) | ||
return this.fn(); | ||
let n = O, t = z; | ||
for (; n; ) { | ||
if (n === this) | ||
return; | ||
n = n.parent; | ||
} | ||
try { | ||
return this.parent = O, O = this, z = !0, M = 1 << ++ce, ce <= Me ? (({ deps: r }) => { | ||
if (r.length) | ||
for (let o = 0; o < r.length; o++) | ||
r[o].w |= M; | ||
})(this) : un(this), this.fn(); | ||
} finally { | ||
ce <= Me && ((r) => { | ||
const { deps: o } = r; | ||
if (o.length) { | ||
let s = 0; | ||
for (let c = 0; c < o.length; c++) { | ||
const a = o[c]; | ||
jn(a) && !An(a) ? a.delete(r) : o[s++] = a, a.w &= ~M, a.n &= ~M; | ||
} | ||
o.length = s; | ||
} | ||
// Loop through eggs and call add event listener // | ||
function callAddListener() { | ||
Object.values(easterEggsTriggerEggs).forEach((egg) => { | ||
const newEgg = reactive(egg); | ||
if (!newEgg.pattern) { | ||
newEgg.pattern = pluginOptions.pattern; | ||
} | ||
if (!newEgg.target) { | ||
newEgg.target = pluginOptions.target; | ||
} | ||
}); | ||
addListener(); | ||
} | ||
// Create add event listener // | ||
function addListener() { | ||
const type = eggOptions.type ?? pluginOptions.type; | ||
document.addEventListener(type, capturePattern, false); | ||
} | ||
// Capture the Keys or Click Pattern // | ||
function capturePattern(e) { | ||
const key = ref(''); | ||
if (timeout !== null) { | ||
clearTimeout(timeout); | ||
} | ||
// -------------------- Keyboard Events // | ||
if (e.key !== undefined) { | ||
key.value = e.key; | ||
} | ||
// -------------------- Mouse Events // | ||
if (includes(mouseEvents, e.type)) { | ||
const target = e.target; | ||
key.value = e.type; | ||
targets.nodes.push(target.nodeName.toLowerCase()); | ||
targets.ids.push(target.id); | ||
targets.classNames.push(target.classList.value); | ||
} | ||
input.push(key.value); | ||
checkPattern(e); | ||
return false; | ||
} | ||
// Check the Keys or Click Pattern // | ||
function checkPattern(e) { | ||
Object.values(easterEggsTriggerEggs).forEach((egg) => { | ||
// Check Keyboard Events // | ||
if (isEqual(egg?.pattern, input)) { | ||
// Check Targets if Mouse Events // | ||
if (includes(mouseEvents, e.type)) { | ||
checkTarget(e, egg); | ||
return false; | ||
} | ||
emitEvent(egg); | ||
} | ||
return false; | ||
}); | ||
reset(); | ||
return false; | ||
} | ||
// Check Click Targets // | ||
function checkTarget(e, egg) { | ||
// Get clean egg target // | ||
const node = egg.target; | ||
const id = egg.target.replace('#', ''); | ||
const className = egg.target.replace('.', ''); | ||
// Reduce targets to unique values // | ||
const nodes = uniq(targets.nodes); | ||
const ids = uniq(targets.ids); | ||
const classNames = uniq(targets.classNames); | ||
// Targets array should reduce down to one value, and match the clean egg target // | ||
const nodeTargetsMatch = ref(nodes.length === 1 && nodes[0] === node); | ||
const idTargetsMatch = ref(ids.length === 1 && ids[0] === id); | ||
const classTargetsMatch = ref(classNames.length === 1 && includes(classNames[0], className)); | ||
if (nodeTargetsMatch.value || idTargetsMatch.value || classTargetsMatch.value) { | ||
emitEvent(egg); | ||
} | ||
reset(); | ||
} | ||
// Reset // | ||
function reset() { | ||
let delayReset = pluginOptions.delay; | ||
if (typeof props.delay !== 'undefined') { | ||
delayReset = +props.delay; | ||
} | ||
// Reset timeout and clear input keys // | ||
timeout = setTimeout(() => { | ||
clearTimeout(timeout); | ||
// Clean inputs and targets // | ||
input = []; | ||
targets = { | ||
nodes: [], | ||
ids: [], | ||
classNames: [], | ||
}; | ||
}, +delayReset); | ||
} | ||
// Emit Event and/or Callback // | ||
function emitEvent(egg) { | ||
if (Object.keys(easterEggsTriggerEggs).length === 1) { | ||
const type = eggOptions.type ?? pluginOptions.type; | ||
document.removeEventListener(type, capturePattern, false); | ||
} | ||
else { | ||
rebuild(egg); | ||
} | ||
if (egg.callback) { | ||
egg.callback(egg); | ||
} | ||
emit('triggered', egg); | ||
return false; | ||
} | ||
// Rebuild the Easter Eggs // | ||
function rebuild(usedEgg) { | ||
const currentEggs = easterEggsTriggerEggs; | ||
easterEggsTriggerEggs = []; | ||
// Remove usedEgg from easterEggsTriggerEggs // | ||
const idx = findIndex(currentEggs, (egg) => egg.name === usedEgg.name); | ||
currentEggs.splice(idx, 1); | ||
Object.values(currentEggs).forEach(() => { | ||
layEggs(); | ||
}); | ||
easterEggsTriggerEggs = currentEggs; | ||
} | ||
// Filter Typescript Object // | ||
function filterObject(obj, | ||
// eslint-disable-next-line no-unused-vars | ||
fn) { | ||
return Object.fromEntries(Object.entries(obj).filter(fn)); | ||
} | ||
return {}; | ||
})(this), M = 1 << --ce, O = this.parent, z = t, this.parent = void 0, this.deferStop && this.stop(); | ||
} | ||
}); | ||
var _export_sfc = (sfc, props) => { | ||
const target = sfc.__vccOpts || sfc; | ||
for (const [key, val] of props) { | ||
target[key] = val; | ||
} | ||
return target; | ||
stop() { | ||
O === this ? this.deferStop = !0 : this.active && (un(this), this.onStop && this.onStop(), this.active = !1); | ||
} | ||
} | ||
function un(e) { | ||
const { deps: n } = e; | ||
if (n.length) { | ||
for (let t = 0; t < n.length; t++) | ||
n[t].delete(e); | ||
n.length = 0; | ||
} | ||
} | ||
let z = !0; | ||
const Pn = []; | ||
function Tn() { | ||
Pn.push(z), z = !1; | ||
} | ||
function Fn() { | ||
const e = Pn.pop(); | ||
z = e === void 0 || e; | ||
} | ||
function S(e, n, t) { | ||
if (z && O) { | ||
let r = Fe.get(e); | ||
r || Fe.set(e, r = /* @__PURE__ */ new Map()); | ||
let o = r.get(t); | ||
o || r.set(t, o = le()), Ue(o, process.env.NODE_ENV !== "production" ? { effect: O, target: e, type: n, key: t } : void 0); | ||
} | ||
} | ||
function Ue(e, n) { | ||
let t = !1; | ||
ce <= Me ? An(e) || (e.n |= M, t = !jn(e)) : t = !e.has(O), t && (e.add(O), O.deps.push(e), process.env.NODE_ENV !== "production" && O.onTrack && O.onTrack(D({ effect: O }, n))); | ||
} | ||
function L(e, n, t, r, o, s) { | ||
const c = Fe.get(e); | ||
if (!c) | ||
return; | ||
let a = []; | ||
if (n === "clear") | ||
a = [...c.values()]; | ||
else if (t === "length" && y(e)) { | ||
const l = Number(r); | ||
c.forEach((u, i) => { | ||
(i === "length" || i >= l) && a.push(u); | ||
}); | ||
} else | ||
switch (t !== void 0 && a.push(c.get(t)), n) { | ||
case "add": | ||
y(e) ? Je(t) && a.push(c.get("length")) : (a.push(c.get(K)), ne(e) && a.push(c.get(Ie))); | ||
break; | ||
case "delete": | ||
y(e) || (a.push(c.get(K)), ne(e) && a.push(c.get(Ie))); | ||
break; | ||
case "set": | ||
ne(e) && a.push(c.get(K)); | ||
} | ||
const p = process.env.NODE_ENV !== "production" ? { target: e, type: n, key: t, newValue: r, oldValue: o, oldTarget: s } : void 0; | ||
if (a.length === 1) | ||
a[0] && (process.env.NODE_ENV !== "production" ? Y(a[0], p) : Y(a[0])); | ||
else { | ||
const l = []; | ||
for (const u of a) | ||
u && l.push(...u); | ||
process.env.NODE_ENV !== "production" ? Y(le(l), p) : Y(le(l)); | ||
} | ||
} | ||
function Y(e, n) { | ||
const t = y(e) ? e : [...e]; | ||
for (const r of t) | ||
r.computed && pn(r, n); | ||
for (const r of t) | ||
r.computed || pn(r, n); | ||
} | ||
function pn(e, n) { | ||
(e !== O || e.allowRecurse) && (process.env.NODE_ENV !== "production" && e.onTrigger && e.onTrigger(D({ effect: e }, n)), e.scheduler ? e.scheduler() : e.run()); | ||
} | ||
const xt = pt("__proto__,__v_isRef,__isVue"), Mn = new Set(Object.getOwnPropertyNames(Symbol).filter((e) => e !== "arguments" && e !== "caller").map((e) => Symbol[e]).filter(qe)), St = Ge(), Dt = Ge(!0), $t = Ge(!0, !0), dn = Rt(); | ||
function Rt() { | ||
const e = {}; | ||
return ["includes", "indexOf", "lastIndexOf"].forEach((n) => { | ||
e[n] = function(...t) { | ||
const r = v(this); | ||
for (let s = 0, c = this.length; s < c; s++) | ||
S(r, "get", s + ""); | ||
const o = r[n](...t); | ||
return o === -1 || o === !1 ? r[n](...t.map(v)) : o; | ||
}; | ||
}), ["push", "pop", "shift", "unshift", "splice"].forEach((n) => { | ||
e[n] = function(...t) { | ||
Tn(); | ||
const r = v(this)[n].apply(this, t); | ||
return Fn(), r; | ||
}; | ||
}), e; | ||
} | ||
function Ct(e) { | ||
const n = v(this); | ||
return S(n, "has", e), n.hasOwnProperty(e); | ||
} | ||
function Ge(e = !1, n = !1) { | ||
return function(t, r, o) { | ||
if (r === "__v_isReactive") | ||
return !e; | ||
if (r === "__v_isReadonly") | ||
return e; | ||
if (r === "__v_isShallow") | ||
return n; | ||
if (r === "__v_raw" && o === (e ? n ? Hn : Ln : n ? Wt : zn).get(t)) | ||
return t; | ||
const s = y(t); | ||
if (!e) { | ||
if (s && E(dn, r)) | ||
return Reflect.get(dn, r, o); | ||
if (r === "hasOwnProperty") | ||
return Ct; | ||
} | ||
const c = Reflect.get(t, r, o); | ||
return (qe(r) ? Mn.has(r) : xt(r)) ? c : (e || S(t, "get", r), n ? c : V(c) ? s && Je(r) ? c : c.value : x(c) ? e ? Wn(c) : q(c) : c); | ||
}; | ||
} | ||
function jt(e = !1) { | ||
return function(n, t, r, o) { | ||
let s = n[t]; | ||
if (H(s) && V(s) && !V(r)) | ||
return !1; | ||
if (!e && (Oe(r) || H(r) || (s = v(s), r = v(r)), !y(n) && V(s) && !V(r))) | ||
return s.value = r, !0; | ||
const c = y(n) && Je(t) ? Number(t) < n.length : E(n, t), a = Reflect.set(n, t, r, o); | ||
return n === v(o) && (c ? ae(r, s) && L(n, "set", t, r, s) : L(n, "add", t, r)), a; | ||
}; | ||
} | ||
const At = { get: St, set: jt(), deleteProperty: function(e, n) { | ||
const t = E(e, n), r = e[n], o = Reflect.deleteProperty(e, n); | ||
return o && t && L(e, "delete", n, void 0, r), o; | ||
}, has: function(e, n) { | ||
const t = Reflect.has(e, n); | ||
return qe(n) && Mn.has(n) || S(e, "has", n), t; | ||
}, ownKeys: function(e) { | ||
return S(e, "iterate", y(e) ? "length" : K), Reflect.ownKeys(e); | ||
} }, In = { get: Dt, set: (e, n) => (process.env.NODE_ENV !== "production" && ln(`Set operation on key "${String(n)}" failed: target is readonly.`, e), !0), deleteProperty: (e, n) => (process.env.NODE_ENV !== "production" && ln(`Delete operation on key "${String(n)}" failed: target is readonly.`, e), !0) }, Pt = D({}, In, { get: $t }), Qe = (e) => e, De = (e) => Reflect.getPrototypeOf(e); | ||
function fe(e, n, t = !1, r = !1) { | ||
const o = v(e = e.__v_raw), s = v(n); | ||
t || (n !== s && S(o, "get", n), S(o, "get", s)); | ||
const { has: c } = De(o), a = r ? Qe : t ? Ze : ue; | ||
return c.call(o, n) ? a(e.get(n)) : c.call(o, s) ? a(e.get(s)) : void (e !== o && e.get(n)); | ||
} | ||
function he(e, n = !1) { | ||
const t = this.__v_raw, r = v(t), o = v(e); | ||
return n || (e !== o && S(r, "has", e), S(r, "has", o)), e === o ? t.has(e) : t.has(e) || t.has(o); | ||
} | ||
function ve(e, n = !1) { | ||
return e = e.__v_raw, !n && S(v(e), "iterate", K), Reflect.get(e, "size", e); | ||
} | ||
function fn(e) { | ||
e = v(e); | ||
const n = v(this); | ||
return De(n).has.call(n, e) || (n.add(e), L(n, "add", e, e)), this; | ||
} | ||
function hn(e, n) { | ||
n = v(n); | ||
const t = v(this), { has: r, get: o } = De(t); | ||
let s = r.call(t, e); | ||
s ? process.env.NODE_ENV !== "production" && Un(t, r, e) : (e = v(e), s = r.call(t, e)); | ||
const c = o.call(t, e); | ||
return t.set(e, n), s ? ae(n, c) && L(t, "set", e, n, c) : L(t, "add", e, n), this; | ||
} | ||
function vn(e) { | ||
const n = v(this), { has: t, get: r } = De(n); | ||
let o = t.call(n, e); | ||
o ? process.env.NODE_ENV !== "production" && Un(n, t, e) : (e = v(e), o = t.call(n, e)); | ||
const s = r ? r.call(n, e) : void 0, c = n.delete(e); | ||
return o && L(n, "delete", e, void 0, s), c; | ||
} | ||
function gn() { | ||
const e = v(this), n = e.size !== 0, t = process.env.NODE_ENV !== "production" ? ne(e) ? new Map(e) : new Set(e) : void 0, r = e.clear(); | ||
return n && L(e, "clear", void 0, void 0, t), r; | ||
} | ||
function ge(e, n) { | ||
return function(t, r) { | ||
const o = this, s = o.__v_raw, c = v(s), a = n ? Qe : e ? Ze : ue; | ||
return !e && S(c, "iterate", K), s.forEach((p, l) => t.call(r, a(p), a(l), o)); | ||
}; | ||
} | ||
function _e(e, n, t) { | ||
return function(...r) { | ||
const o = this.__v_raw, s = v(o), c = ne(s), a = e === "entries" || e === Symbol.iterator && c, p = e === "keys" && c, l = o[e](...r), u = t ? Qe : n ? Ze : ue; | ||
return !n && S(s, "iterate", p ? Ie : K), { next() { | ||
const { value: i, done: d } = l.next(); | ||
return d ? { value: i, done: d } : { value: a ? [u(i[0]), u(i[1])] : u(i), done: d }; | ||
}, [Symbol.iterator]() { | ||
return this; | ||
} }; | ||
}; | ||
} | ||
function T(e) { | ||
return function(...n) { | ||
if (process.env.NODE_ENV !== "production") { | ||
const t = n[0] ? `on key "${n[0]}" ` : ""; | ||
console.warn(`${wt(e)} operation ${t}failed: target is readonly.`, v(this)); | ||
} | ||
return e !== "delete" && this; | ||
}; | ||
} | ||
function Tt() { | ||
const e = { get(o) { | ||
return fe(this, o); | ||
}, get size() { | ||
return ve(this); | ||
}, has: he, add: fn, set: hn, delete: vn, clear: gn, forEach: ge(!1, !1) }, n = { get(o) { | ||
return fe(this, o, !1, !0); | ||
}, get size() { | ||
return ve(this); | ||
}, has: he, add: fn, set: hn, delete: vn, clear: gn, forEach: ge(!1, !0) }, t = { get(o) { | ||
return fe(this, o, !0); | ||
}, get size() { | ||
return ve(this, !0); | ||
}, has(o) { | ||
return he.call(this, o, !0); | ||
}, add: T("add"), set: T("set"), delete: T("delete"), clear: T("clear"), forEach: ge(!0, !1) }, r = { get(o) { | ||
return fe(this, o, !0, !0); | ||
}, get size() { | ||
return ve(this, !0); | ||
}, has(o) { | ||
return he.call(this, o, !0); | ||
}, add: T("add"), set: T("set"), delete: T("delete"), clear: T("clear"), forEach: ge(!0, !0) }; | ||
return ["keys", "values", "entries", Symbol.iterator].forEach((o) => { | ||
e[o] = _e(o, !1, !1), t[o] = _e(o, !0, !1), n[o] = _e(o, !1, !0), r[o] = _e(o, !0, !0); | ||
}), [e, t, n, r]; | ||
} | ||
const [Ft, Mt, It, Ut] = Tt(); | ||
function Xe(e, n) { | ||
const t = n ? e ? Ut : It : e ? Mt : Ft; | ||
return (r, o, s) => o === "__v_isReactive" ? !e : o === "__v_isReadonly" ? e : o === "__v_raw" ? r : Reflect.get(E(t, o) && o in r ? t : r, o, s); | ||
} | ||
const zt = { get: Xe(!1, !1) }, Lt = { get: Xe(!0, !1) }, Ht = { get: Xe(!0, !0) }; | ||
function Un(e, n, t) { | ||
const r = v(t); | ||
if (r !== t && n.call(e, r)) { | ||
const o = Rn(e); | ||
console.warn(`Reactive ${o} contains both the raw and reactive versions of the same object${o === "Map" ? " as keys" : ""}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`); | ||
} | ||
} | ||
const zn = /* @__PURE__ */ new WeakMap(), Wt = /* @__PURE__ */ new WeakMap(), Ln = /* @__PURE__ */ new WeakMap(), Hn = /* @__PURE__ */ new WeakMap(); | ||
function q(e) { | ||
return H(e) ? e : Ye(e, !1, At, zt, zn); | ||
} | ||
function Wn(e) { | ||
return Ye(e, !0, In, Lt, Ln); | ||
} | ||
function ye(e) { | ||
return Ye(e, !0, Pt, Ht, Hn); | ||
} | ||
function Ye(e, n, t, r, o) { | ||
if (!x(e)) | ||
return process.env.NODE_ENV !== "production" && console.warn(`value cannot be made reactive: ${String(e)}`), e; | ||
if (e.__v_raw && (!n || !e.__v_isReactive)) | ||
return e; | ||
const s = o.get(e); | ||
if (s) | ||
return s; | ||
const c = (a = e).__v_skip || !Object.isExtensible(a) ? 0 : function(l) { | ||
switch (l) { | ||
case "Object": | ||
case "Array": | ||
return 1; | ||
case "Map": | ||
case "Set": | ||
case "WeakMap": | ||
case "WeakSet": | ||
return 2; | ||
default: | ||
return 0; | ||
} | ||
}(Rn(a)); | ||
var a; | ||
if (c === 0) | ||
return e; | ||
const p = new Proxy(e, c === 2 ? r : t); | ||
return o.set(e, p), p; | ||
} | ||
function B(e) { | ||
return H(e) ? B(e.__v_raw) : !(!e || !e.__v_isReactive); | ||
} | ||
function H(e) { | ||
return !(!e || !e.__v_isReadonly); | ||
} | ||
function Oe(e) { | ||
return !(!e || !e.__v_isShallow); | ||
} | ||
function Ce(e) { | ||
return B(e) || H(e); | ||
} | ||
function v(e) { | ||
const n = e && e.__v_raw; | ||
return n ? v(n) : e; | ||
} | ||
const ue = (e) => x(e) ? q(e) : e, Ze = (e) => x(e) ? Wn(e) : e; | ||
function V(e) { | ||
return !(!e || e.__v_isRef !== !0); | ||
} | ||
function me(e) { | ||
return function(n, t) { | ||
return V(n) ? n : new qt(n, t); | ||
}(e, !1); | ||
} | ||
class qt { | ||
constructor(n, t) { | ||
this.__v_isShallow = t, this.dep = void 0, this.__v_isRef = !0, this._rawValue = t ? n : v(n), this._value = t ? n : ue(n); | ||
} | ||
get value() { | ||
var n; | ||
return n = this, z && O && (n = v(n), process.env.NODE_ENV !== "production" ? Ue(n.dep || (n.dep = le()), { target: n, type: "get", key: "value" }) : Ue(n.dep || (n.dep = le()))), this._value; | ||
} | ||
set value(n) { | ||
const t = this.__v_isShallow || Oe(n) || H(n); | ||
n = t ? n : v(n), ae(n, this._rawValue) && (this._rawValue = n, this._value = t ? n : ue(n), function(r, o) { | ||
const s = (r = v(r)).dep; | ||
s && (process.env.NODE_ENV !== "production" ? Y(s, { target: r, type: "set", key: "value", newValue: o }) : Y(s)); | ||
}(this, n)); | ||
} | ||
} | ||
const Jt = { get: (e, n, t) => { | ||
return V(r = Reflect.get(e, n, t)) ? r.value : r; | ||
var r; | ||
}, set: (e, n, t, r) => { | ||
const o = e[n]; | ||
return V(o) && !V(t) ? (o.value = t, !0) : Reflect.set(e, n, t, r); | ||
} }, J = []; | ||
function k(e, ...n) { | ||
if (process.env.NODE_ENV === "production") | ||
return; | ||
Tn(); | ||
const t = J.length ? J[J.length - 1].component : null, r = t && t.appContext.config.warnHandler, o = function() { | ||
let s = J[J.length - 1]; | ||
if (!s) | ||
return []; | ||
const c = []; | ||
for (; s; ) { | ||
const a = c[0]; | ||
a && a.vnode === s ? a.recurseCount++ : c.push({ vnode: s, recurseCount: 0 }); | ||
const p = s.component && s.component.parent; | ||
s = p && p.vnode; | ||
} | ||
return c; | ||
}(); | ||
if (r) | ||
G(r, t, 11, [e + n.join(""), t && t.proxy, o.map(({ vnode: s }) => `at <${Sn(t, s.type)}>`).join(` | ||
`), o]); | ||
else { | ||
const s = [`[Vue warn]: ${e}`, ...n]; | ||
o.length && s.push(` | ||
`, ...function(c) { | ||
const a = []; | ||
return c.forEach((p, l) => { | ||
a.push(...l === 0 ? [] : [` | ||
`], ...function({ vnode: u, recurseCount: i }) { | ||
const d = i > 0 ? `... (${i} recursive calls)` : "", f = !!u.component && u.component.parent == null, _ = ` at <${Sn(u.component, u.type, f)}`, m = ">" + d; | ||
return u.props ? [_, ...Kt(u.props), m] : [_ + m]; | ||
}(p)); | ||
}), a; | ||
}(o)), console.warn(...s); | ||
} | ||
Fn(); | ||
} | ||
function Kt(e) { | ||
const n = [], t = Object.keys(e); | ||
return t.slice(0, 3).forEach((r) => { | ||
n.push(...qn(r, e[r])); | ||
}), t.length > 3 && n.push(" ..."), n; | ||
} | ||
function qn(e, n, t) { | ||
return C(n) ? (n = JSON.stringify(n), t ? n : [`${e}=${n}`]) : typeof n == "number" || typeof n == "boolean" || n == null ? t ? n : [`${e}=${n}`] : V(n) ? (n = qn(e, v(n.value), !0), t ? n : [`${e}=Ref<`, n, ">"]) : N(n) ? [`${e}=fn${n.name ? `<${n.name}>` : ""}`] : (n = v(n), t ? n : [`${e}=`, n]); | ||
} | ||
const _n = { sp: "serverPrefetch hook", bc: "beforeCreate hook", c: "created hook", bm: "beforeMount hook", m: "mounted hook", bu: "beforeUpdate hook", u: "updated", bum: "beforeUnmount hook", um: "unmounted hook", a: "activated hook", da: "deactivated hook", ec: "errorCaptured hook", rtc: "renderTracked hook", rtg: "renderTriggered hook", 0: "setup function", 1: "render function", 2: "watcher getter", 3: "watcher callback", 4: "watcher cleanup function", 5: "native event handler", 6: "component event handler", 7: "vnode hook", 8: "directive hook", 9: "transition hook", 10: "app errorHandler", 11: "app warnHandler", 12: "ref function", 13: "async component loader", 14: "scheduler flush. This is likely a Vue internals bug. Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core" }; | ||
function G(e, n, t, r) { | ||
let o; | ||
try { | ||
o = r ? e(...r) : e(); | ||
} catch (s) { | ||
Jn(s, n, t); | ||
} | ||
return o; | ||
} | ||
function ze(e, n, t, r) { | ||
if (N(e)) { | ||
const s = G(e, n, t, r); | ||
return s && _t(s) && s.catch((c) => { | ||
Jn(c, n, t); | ||
}), s; | ||
} | ||
const o = []; | ||
for (let s = 0; s < e.length; s++) | ||
o.push(ze(e[s], n, t, r)); | ||
return o; | ||
} | ||
function Jn(e, n, t, r = !0) { | ||
const o = n ? n.vnode : null; | ||
if (n) { | ||
let s = n.parent; | ||
const c = n.proxy, a = process.env.NODE_ENV !== "production" ? _n[t] : t; | ||
for (; s; ) { | ||
const l = s.ec; | ||
if (l) { | ||
for (let u = 0; u < l.length; u++) | ||
if (l[u](e, c, a) === !1) | ||
return; | ||
} | ||
s = s.parent; | ||
} | ||
const p = n.appContext.config.errorHandler; | ||
if (p) | ||
return void G(p, null, 10, [e, c, a]); | ||
} | ||
(function(s, c, a, p = !0) { | ||
if (process.env.NODE_ENV !== "production") { | ||
const u = _n[c]; | ||
if (a && (l = a, J.push(l)), k("Unhandled error" + (u ? ` during execution of ${u}` : "")), a && J.pop(), p) | ||
throw s; | ||
console.error(s); | ||
} else | ||
console.error(s); | ||
var l; | ||
})(e, t, o, r); | ||
} | ||
let ke = !1, Le = !1; | ||
const R = []; | ||
let I = 0; | ||
const Z = []; | ||
let j = null, F = 0; | ||
const Kn = Promise.resolve(); | ||
let en = null; | ||
const Bt = 100; | ||
function Gt(e) { | ||
const n = en || Kn; | ||
return e ? n.then(this ? e.bind(this) : e) : n; | ||
} | ||
function nn(e) { | ||
R.length && R.includes(e, ke && e.allowRecurse ? I + 1 : I) || (e.id == null ? R.push(e) : R.splice(function(n) { | ||
let t = I + 1, r = R.length; | ||
for (; t < r; ) { | ||
const o = t + r >>> 1; | ||
pe(R[o]) < n ? t = o + 1 : r = o; | ||
} | ||
return t; | ||
}(e.id), 0, e), Bn()); | ||
} | ||
function Bn() { | ||
ke || Le || (Le = !0, en = Kn.then(Qn)); | ||
} | ||
function Gn(e) { | ||
y(e) ? Z.push(...e) : j && j.includes(e, e.allowRecurse ? F + 1 : F) || Z.push(e), Bn(); | ||
} | ||
const pe = (e) => e.id == null ? 1 / 0 : e.id, Qt = (e, n) => { | ||
const t = pe(e) - pe(n); | ||
if (t === 0) { | ||
if (e.pre && !n.pre) | ||
return -1; | ||
if (n.pre && !e.pre) | ||
return 1; | ||
} | ||
return t; | ||
}; | ||
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { | ||
return null; | ||
function Qn(e) { | ||
Le = !1, ke = !0, process.env.NODE_ENV !== "production" && (e = e || /* @__PURE__ */ new Map()), R.sort(Qt); | ||
const n = process.env.NODE_ENV !== "production" ? (t) => yn(e, t) : $n; | ||
try { | ||
for (I = 0; I < R.length; I++) { | ||
const t = R[I]; | ||
if (t && t.active !== !1) { | ||
if (process.env.NODE_ENV !== "production" && n(t)) | ||
continue; | ||
G(t, null, 14); | ||
} | ||
} | ||
} finally { | ||
I = 0, R.length = 0, function(t) { | ||
if (Z.length) { | ||
const r = [...new Set(Z)]; | ||
if (Z.length = 0, j) | ||
return void j.push(...r); | ||
for (j = r, process.env.NODE_ENV !== "production" && (t = t || /* @__PURE__ */ new Map()), j.sort((o, s) => pe(o) - pe(s)), F = 0; F < j.length; F++) | ||
process.env.NODE_ENV !== "production" && yn(t, j[F]) || j[F](); | ||
j = null, F = 0; | ||
} | ||
}(e), ke = !1, en = null, (R.length || Z.length) && Qn(e); | ||
} | ||
} | ||
var EasterEggTrigger = /* @__PURE__ */ _export_sfc(_sfc_main, [["render", _sfc_render], ["__file", "src/plugin/EasterEggTrigger.vue"]]); | ||
const install = (app) => { | ||
app.component('EasterEggTrigger', EasterEggTrigger); | ||
function yn(e, n) { | ||
if (e.has(n)) { | ||
const t = e.get(n); | ||
if (t > Bt) { | ||
const r = n.ownerInstance, o = r && nt(r.type); | ||
return k(`Maximum recursive updates exceeded${o ? ` in component <${o}>` : ""}. This means you have a reactive effect that is mutating its own dependencies and thus recursively triggering itself. Possible sources include component template, render function, updated hook or watcher source function.`), !0; | ||
} | ||
e.set(n, t + 1); | ||
} else | ||
e.set(n, 1); | ||
} | ||
const oe = /* @__PURE__ */ new Set(); | ||
process.env.NODE_ENV !== "production" && (Te().__VUE_HMR_RUNTIME__ = { createRecord: je(function(e, n) { | ||
return we.has(e) ? !1 : (we.set(e, { initialDef: re(n), instances: /* @__PURE__ */ new Set() }), !0); | ||
}), rerender: je(function(e, n) { | ||
const t = we.get(e); | ||
t && (t.initialDef.render = n, [...t.instances].forEach((r) => { | ||
n && (r.render = n, re(r.type).render = n), r.renderCache = [], r.update(); | ||
})); | ||
}), reload: je(function(e, n) { | ||
const t = we.get(e); | ||
if (!t) | ||
return; | ||
n = re(n), mn(t.initialDef, n); | ||
const r = [...t.instances]; | ||
for (const o of r) { | ||
const s = re(o.type); | ||
oe.has(s) || (s !== t.initialDef && mn(s, n), oe.add(s)), o.appContext.propsCache.delete(o.type), o.appContext.emitsCache.delete(o.type), o.appContext.optionsCache.delete(o.type), o.ceReload ? (oe.add(s), o.ceReload(n.styles), oe.delete(s)) : o.parent ? nn(o.parent.update) : o.appContext.reload ? o.appContext.reload() : typeof window < "u" ? window.location.reload() : console.warn("[HMR] Root or manually mounted instance modified. Full reload required."); | ||
} | ||
Gn(() => { | ||
for (const o of r) | ||
oe.delete(re(o.type)); | ||
}); | ||
}) }); | ||
const we = /* @__PURE__ */ new Map(); | ||
function re(e) { | ||
return tt(e) ? e.__vccOpts : e; | ||
} | ||
function mn(e, n) { | ||
D(e, n); | ||
for (const t in e) | ||
t === "__file" || t in n || delete e[t]; | ||
} | ||
function je(e) { | ||
return (n, t) => { | ||
try { | ||
return e(n, t); | ||
} catch (r) { | ||
console.error(r), console.warn("[HMR] Something went wrong during Vue component hot-reload. Full reload required."); | ||
} | ||
}; | ||
} | ||
let U = null, Xt = null; | ||
const Ee = {}; | ||
function Yt(e, n, { immediate: t, deep: r, flush: o, onTrack: s, onTrigger: c } = A) { | ||
var a; | ||
process.env.NODE_ENV === "production" || n || (t !== void 0 && k('watch() "immediate" option is only respected when using the watch(source, callback, options?) signature.'), r !== void 0 && k('watch() "deep" option is only respected when using the watch(source, callback, options?) signature.')); | ||
const p = (h) => { | ||
k("Invalid watch source: ", h, "A watch source can only be a getter/effect function, a ref, a reactive object, or an array of these types."); | ||
}, l = Cn === ((a = te) == null ? void 0 : a.scope) ? te : null; | ||
let u, i, d = !1, f = !1; | ||
if (V(e) ? (u = () => e.value, d = Oe(e)) : B(e) ? (u = () => e, r = !0) : y(e) ? (f = !0, d = e.some((h) => B(h) || Oe(h)), u = () => e.map((h) => V(h) ? h.value : B(h) ? ee(h) : N(h) ? G(h, l, 2) : void (process.env.NODE_ENV !== "production" && p(h)))) : N(e) ? u = n ? () => G(e, l, 2) : () => { | ||
if (!l || !l.isUnmounted) | ||
return i && i(), ze(e, l, 3, [_]); | ||
} : (u = $n, process.env.NODE_ENV !== "production" && p(e)), n && r) { | ||
const h = u; | ||
u = () => ee(h()); | ||
} | ||
let _ = (h) => { | ||
i = g.onStop = () => { | ||
G(h, l, 4); | ||
}; | ||
}, m = f ? new Array(e.length).fill(Ee) : Ee; | ||
const w = () => { | ||
if (g.active) | ||
if (n) { | ||
const h = g.run(); | ||
(r || d || (f ? h.some(($, P) => ae($, m[P])) : ae(h, m))) && (i && i(), ze(n, l, 3, [h, m === Ee ? void 0 : f && m[0] === Ee ? [] : m, _]), m = h); | ||
} else | ||
g.run(); | ||
}; | ||
let W; | ||
w.allowRecurse = !!n, o === "sync" ? W = w : o === "post" ? W = () => On(w, l && l.suspense) : (w.pre = !0, l && (w.id = l.uid), W = () => nn(w)); | ||
const g = new Vt(u, W); | ||
return process.env.NODE_ENV !== "production" && (g.onTrack = s, g.onTrigger = c), n ? t ? w() : m = g.run() : o === "post" ? On(g.run.bind(g), l && l.suspense) : g.run(), () => { | ||
g.stop(), l && l.scope && ht(l.scope.effects, g); | ||
}; | ||
} | ||
function Zt(e, n, t) { | ||
const r = this.proxy, o = C(e) ? e.includes(".") ? function(p, l) { | ||
const u = l.split("."); | ||
return () => { | ||
let i = p; | ||
for (let d = 0; d < u.length && i; d++) | ||
i = i[u[d]]; | ||
return i; | ||
}; | ||
}(r, e) : () => r[e] : e.bind(r, r); | ||
let s; | ||
N(n) ? s = n : (s = n.handler, t = n); | ||
const c = te; | ||
xn(this); | ||
const a = Yt(o, s.bind(r), t); | ||
return c ? xn(c) : io(), a; | ||
} | ||
function ee(e, n) { | ||
if (!x(e) || e.__v_skip || (n = n || /* @__PURE__ */ new Set()).has(e)) | ||
return e; | ||
if (n.add(e), V(e)) | ||
ee(e.value, n); | ||
else if (y(e)) | ||
for (let t = 0; t < e.length; t++) | ||
ee(e[t], n); | ||
else if (gt(e) || ne(e)) | ||
e.forEach((t) => { | ||
ee(t, n); | ||
}); | ||
else if (mt(e)) | ||
for (const t in e) | ||
ee(e[t], n); | ||
return e; | ||
} | ||
const eo = Symbol.for("v-ndc"), He = (e) => e ? 4 & e.vnode.shapeFlag ? function(n) { | ||
if (n.exposed) | ||
return n.exposeProxy || (n.exposeProxy = new Proxy((r = n.exposed, Et(r, "__v_skip", !0), B(t = r) ? t : new Proxy(t, Jt)), { get: (o, s) => s in o ? o[s] : s in ie ? ie[s](n) : void 0, has: (o, s) => s in o || s in ie })); | ||
var t, r; | ||
}(e) || e.proxy : He(e.parent) : null, ie = D(/* @__PURE__ */ Object.create(null), { $: (e) => e, $el: (e) => e.vnode.el, $data: (e) => e.data, $props: (e) => process.env.NODE_ENV !== "production" ? ye(e.props) : e.props, $attrs: (e) => process.env.NODE_ENV !== "production" ? ye(e.attrs) : e.attrs, $slots: (e) => process.env.NODE_ENV !== "production" ? ye(e.slots) : e.slots, $refs: (e) => process.env.NODE_ENV !== "production" ? ye(e.refs) : e.refs, $parent: (e) => He(e.parent), $root: (e) => He(e.root), $emit: (e) => e.emit, $options: (e) => function(n) { | ||
const t = n.type, { mixins: r, extends: o } = t, { mixins: s, optionsCache: c, config: { optionMergeStrategies: a } } = n.appContext, p = c.get(t); | ||
let l; | ||
return p ? l = p : s.length || r || o ? (l = {}, s.length && s.forEach((u) => Ve(l, u, a, !0)), Ve(l, t, a)) : l = t, x(t) && c.set(t, l), l; | ||
}(e), $forceUpdate: (e) => e.f || (e.f = () => nn(e.update)), $nextTick: (e) => e.n || (e.n = Gt.bind(e.proxy)), $watch: (e) => Zt.bind(e) }), Ae = (e, n) => e !== A && !e.__isScriptSetup && E(e, n), no = { get({ _: e }, n) { | ||
const { ctx: t, setupState: r, data: o, props: s, accessCache: c, type: a, appContext: p } = e; | ||
if (process.env.NODE_ENV !== "production" && n === "__isVue") | ||
return !0; | ||
let l; | ||
if (n[0] !== "$") { | ||
const f = c[n]; | ||
if (f !== void 0) | ||
switch (f) { | ||
case 1: | ||
return r[n]; | ||
case 2: | ||
return o[n]; | ||
case 4: | ||
return t[n]; | ||
case 3: | ||
return s[n]; | ||
} | ||
else { | ||
if (Ae(r, n)) | ||
return c[n] = 1, r[n]; | ||
if (o !== A && E(o, n)) | ||
return c[n] = 2, o[n]; | ||
if ((l = e.propsOptions[0]) && E(l, n)) | ||
return c[n] = 3, s[n]; | ||
if (t !== A && E(t, n)) | ||
return c[n] = 4, t[n]; | ||
c[n] = 0; | ||
} | ||
} | ||
const u = ie[n]; | ||
let i, d; | ||
return u ? (n === "$attrs" ? (S(e, "get", n), process.env.NODE_ENV) : process.env.NODE_ENV !== "production" && n === "$slots" && S(e, "get", n), u(e)) : (i = a.__cssModules) && (i = i[n]) ? i : t !== A && E(t, n) ? (c[n] = 4, t[n]) : (d = p.config.globalProperties, E(d, n) ? d[n] : void (process.env.NODE_ENV === "production" || !U || C(n) && n.indexOf("__v") === 0 || (o !== A && ((f) => f === "_" || f === "$")(n[0]) && E(o, n) ? k(`Property ${JSON.stringify(n)} must be accessed via $data because it starts with a reserved character ("$" or "_") and is not proxied on the render context.`) : e === U && k(`Property ${JSON.stringify(n)} was accessed during render but is not defined on instance.`)))); | ||
}, set({ _: e }, n, t) { | ||
const { data: r, setupState: o, ctx: s } = e; | ||
return Ae(o, n) ? (o[n] = t, !0) : process.env.NODE_ENV !== "production" && o.__isScriptSetup && E(o, n) ? (k(`Cannot mutate <script setup> binding "${n}" from Options API.`), !1) : r !== A && E(r, n) ? (r[n] = t, !0) : E(e.props, n) ? (process.env.NODE_ENV !== "production" && k(`Attempting to mutate prop "${n}". Props are readonly.`), !1) : n[0] === "$" && n.slice(1) in e ? (process.env.NODE_ENV !== "production" && k(`Attempting to mutate public property "${n}". Properties starting with $ are reserved and readonly.`), !1) : (process.env.NODE_ENV !== "production" && n in e.appContext.config.globalProperties ? Object.defineProperty(s, n, { enumerable: !0, configurable: !0, value: t }) : s[n] = t, !0); | ||
}, has({ _: { data: e, setupState: n, accessCache: t, ctx: r, appContext: o, propsOptions: s } }, c) { | ||
let a; | ||
return !!t[c] || e !== A && E(e, c) || Ae(n, c) || (a = s[0]) && E(a, c) || E(r, c) || E(ie, c) || E(o.config.globalProperties, c); | ||
}, defineProperty(e, n, t) { | ||
return t.get != null ? e._.accessCache[n] = 0 : E(t, "value") && this.set(e, n, t.value, null), Reflect.defineProperty(e, n, t); | ||
} }; | ||
function wn(e) { | ||
return y(e) ? e.reduce((n, t) => (n[t] = null, n), {}) : e; | ||
} | ||
function Ve(e, n, t, r = !1) { | ||
const { mixins: o, extends: s } = n; | ||
s && Ve(e, s, t, !0), o && o.forEach((c) => Ve(e, c, t, !0)); | ||
for (const c in n) | ||
if (r && c === "expose") | ||
process.env.NODE_ENV !== "production" && k('"expose" option is ignored when declared in mixins or extends. It should only be declared in the base component itself.'); | ||
else { | ||
const a = to[c] || t && t[c]; | ||
e[c] = a ? a(e[c], n[c]) : n[c]; | ||
} | ||
return e; | ||
} | ||
process.env.NODE_ENV !== "production" && (no.ownKeys = (e) => (k("Avoid app logic that relies on enumerating keys on a component instance. The keys will be empty in production mode to avoid performance overhead."), Reflect.ownKeys(e))); | ||
const to = { data: En, props: bn, emits: bn, methods: se, computed: se, beforeCreate: b, created: b, beforeMount: b, mounted: b, beforeUpdate: b, updated: b, beforeDestroy: b, beforeUnmount: b, destroyed: b, unmounted: b, activated: b, deactivated: b, errorCaptured: b, serverPrefetch: b, components: se, directives: se, watch: function(e, n) { | ||
if (!e) | ||
return n; | ||
if (!n) | ||
return e; | ||
const t = D(/* @__PURE__ */ Object.create(null), e); | ||
for (const r in n) | ||
t[r] = b(e[r], n[r]); | ||
return t; | ||
}, provide: En, inject: function(e, n) { | ||
return se(Nn(e), Nn(n)); | ||
} }; | ||
function En(e, n) { | ||
return n ? e ? function() { | ||
return D(N(e) ? e.call(this, this) : e, N(n) ? n.call(this, this) : n); | ||
} : n : e; | ||
} | ||
function Nn(e) { | ||
if (y(e)) { | ||
const n = {}; | ||
for (let t = 0; t < e.length; t++) | ||
n[e[t]] = e[t]; | ||
return n; | ||
} | ||
return e; | ||
} | ||
function b(e, n) { | ||
return e ? [...new Set([].concat(e, n))] : n; | ||
} | ||
function se(e, n) { | ||
return e ? D(/* @__PURE__ */ Object.create(null), e, n) : n; | ||
} | ||
function bn(e, n) { | ||
return e ? y(e) && y(n) ? [.../* @__PURE__ */ new Set([...e, ...n])] : D(/* @__PURE__ */ Object.create(null), wn(e), wn(n ?? {})) : n; | ||
} | ||
const On = function(e, n) { | ||
n && n.pendingBranch ? y(e) ? n.effects.push(...e) : n.effects.push(e) : Gn(e); | ||
}, Xn = Symbol.for("v-fgt"), oo = Symbol.for("v-txt"), ro = Symbol.for("v-cmt"); | ||
let Q = null; | ||
const Yn = "__vInternal", Zn = ({ key: e }) => e ?? null, be = ({ ref: e, ref_key: n, ref_for: t }) => (typeof e == "number" && (e = "" + e), e != null ? C(e) || V(e) || N(e) ? { i: U, r: e, k: n, f: !!t } : e : null), so = process.env.NODE_ENV !== "production" ? (...e) => kn(...e) : kn; | ||
function kn(e, n = null, t = null, r = 0, o = null, s = !1) { | ||
if (e && e !== eo || (process.env.NODE_ENV === "production" || e || k(`Invalid vnode type when creating vnode: ${e}.`), e = ro), (c = e) && c.__v_isVNode === !0) { | ||
const p = xe(e, n, !0); | ||
return t && We(p, t), !s && Q && (6 & p.shapeFlag ? Q[Q.indexOf(e)] = p : Q.push(p)), p.patchFlag |= -2, p; | ||
} | ||
var c; | ||
if (tt(e) && (e = e.__vccOpts), n) { | ||
n = function(u) { | ||
return u ? Ce(u) || Yn in u ? D({}, u) : u : null; | ||
}(n); | ||
let { class: p, style: l } = n; | ||
p && !C(p) && (n.class = Be(p)), x(l) && (Ce(l) && !y(l) && (l = D({}, l)), n.style = Ke(l)); | ||
} | ||
const a = C(e) ? 1 : ((p) => p.__isSuspense)(e) ? 128 : ((p) => p.__isTeleport)(e) ? 64 : x(e) ? 4 : N(e) ? 2 : 0; | ||
return process.env.NODE_ENV !== "production" && 4 & a && Ce(e) && k("Vue received a Component which was made a reactive object. This can lead to unnecessary performance overhead, and should be avoided by marking the component with `markRaw` or using `shallowRef` instead of `ref`.", ` | ||
Component that was made reactive: `, e = v(e)), function(p, l = null, u = null, i = 0, d = null, f = p === Xn ? 0 : 1, _ = !1, m = !1) { | ||
const w = { __v_isVNode: !0, __v_skip: !0, type: p, props: l, key: l && Zn(l), ref: l && be(l), scopeId: Xt, slotScopeIds: null, children: u, component: null, suspense: null, ssContent: null, ssFallback: null, dirs: null, transition: null, el: null, anchor: null, target: null, targetAnchor: null, staticCount: 0, shapeFlag: f, patchFlag: i, dynamicProps: d, dynamicChildren: null, appContext: null, ctx: U }; | ||
return m ? (We(w, u), 128 & f && p.normalize(w)) : u && (w.shapeFlag |= C(u) ? 8 : 16), process.env.NODE_ENV !== "production" && w.key != w.key && k("VNode created with invalid key (NaN). VNode type:", w.type), !_ && Q && (w.patchFlag > 0 || 6 & f) && w.patchFlag !== 32 && Q.push(w), w; | ||
}(e, n, t, r, o, a, s, !0); | ||
} | ||
function xe(e, n, t = !1) { | ||
const { props: r, ref: o, patchFlag: s, children: c } = e, a = n ? function(...p) { | ||
const l = {}; | ||
for (let u = 0; u < p.length; u++) { | ||
const i = p[u]; | ||
for (const d in i) | ||
if (d === "class") | ||
l.class !== i.class && (l.class = Be([l.class, i.class])); | ||
else if (d === "style") | ||
l.style = Ke([l.style, i.style]); | ||
else if (ft(d)) { | ||
const f = l[d], _ = i[d]; | ||
!_ || f === _ || y(f) && f.includes(_) || (l[d] = f ? [].concat(f, _) : _); | ||
} else | ||
d !== "" && (l[d] = i[d]); | ||
} | ||
return l; | ||
}(r || {}, n) : r; | ||
return { __v_isVNode: !0, __v_skip: !0, type: e.type, props: a, key: a && Zn(a), ref: n && n.ref ? t && o ? y(o) ? o.concat(be(n)) : [o, be(n)] : be(n) : o, scopeId: e.scopeId, slotScopeIds: e.slotScopeIds, children: process.env.NODE_ENV !== "production" && s === -1 && y(c) ? c.map(et) : c, target: e.target, targetAnchor: e.targetAnchor, staticCount: e.staticCount, shapeFlag: e.shapeFlag, patchFlag: n && e.type !== Xn ? s === -1 ? 16 : 16 | s : s, dynamicProps: e.dynamicProps, dynamicChildren: e.dynamicChildren, appContext: e.appContext, dirs: e.dirs, transition: e.transition, component: e.component, suspense: e.suspense, ssContent: e.ssContent && xe(e.ssContent), ssFallback: e.ssFallback && xe(e.ssFallback), el: e.el, anchor: e.anchor, ctx: e.ctx, ce: e.ce }; | ||
} | ||
function et(e) { | ||
const n = xe(e); | ||
return y(e.children) && (n.children = e.children.map(et)), n; | ||
} | ||
function co(e = " ", n = 0) { | ||
return so(oo, null, e, n); | ||
} | ||
function We(e, n) { | ||
let t = 0; | ||
const { shapeFlag: r } = e; | ||
if (n == null) | ||
n = null; | ||
else if (y(n)) | ||
t = 16; | ||
else if (typeof n == "object") { | ||
if (65 & r) { | ||
const o = n.default; | ||
return void (o && (o._c && (o._d = !1), We(e, o()), o._c && (o._d = !0))); | ||
} | ||
{ | ||
t = 32; | ||
const o = n._; | ||
o || Yn in n ? o === 3 && U && (U.slots._ === 1 ? n._ = 1 : (n._ = 2, e.patchFlag |= 1024)) : n._ctx = U; | ||
} | ||
} else | ||
N(n) ? (n = { default: n, _ctx: U }, t = 32) : (n = String(n), 64 & r ? (t = 16, n = [co(n)]) : t = 8); | ||
e.children = n, e.shapeFlag |= t; | ||
} | ||
let tn, X, te = null, Vn = "__VUE_INSTANCE_SETTERS__"; | ||
(X = Te()[Vn]) || (X = Te()[Vn] = []), X.push((e) => te = e), tn = (e) => { | ||
X.length > 1 ? X.forEach((n) => n(e)) : X[0](e); | ||
}; | ||
EasterEggTrigger.install = install; | ||
export { EasterEggTrigger as default }; | ||
const xn = (e) => { | ||
tn(e), e.scope.on(); | ||
}, io = () => { | ||
te && te.scope.off(), tn(null); | ||
}, ao = /(?:^|[-_])(\w)/g, lo = (e) => e.replace(ao, (n) => n.toUpperCase()).replace(/[-_]/g, ""); | ||
function nt(e, n = !0) { | ||
return N(e) ? e.displayName || e.name : e.name || n && e.__name; | ||
} | ||
function Sn(e, n, t = !1) { | ||
let r = nt(n); | ||
if (!r && n.__file) { | ||
const o = n.__file.match(/([^/\\]+)\.\w+$/); | ||
o && (r = o[1]); | ||
} | ||
if (!r && e && e.parent) { | ||
const o = (s) => { | ||
for (const c in s) | ||
if (s[c] === n) | ||
return c; | ||
}; | ||
r = o(e.components || e.parent.type.components) || o(e.appContext.components); | ||
} | ||
return r ? lo(r) : t ? "App" : "Anonymous"; | ||
} | ||
function tt(e) { | ||
return N(e) && "__vccOpts" in e; | ||
} | ||
function Pe(e) { | ||
return !(!e || !e.__v_isShallow); | ||
} | ||
process.env.NODE_ENV !== "production" && function() { | ||
if (process.env.NODE_ENV === "production" || typeof window > "u") | ||
return; | ||
const e = { style: "color:#3ba776" }, n = { style: "color:#0b1bc9" }, t = { style: "color:#b62e24" }, r = { style: "color:#9d288c" }, o = { header: (i) => x(i) ? i.__isVue ? ["div", e, "VueInstance"] : V(i) ? ["div", {}, ["span", e, u(i)], "<", a(i.value), ">"] : B(i) ? ["div", {}, ["span", e, Pe(i) ? "ShallowReactive" : "Reactive"], "<", a(i), ">" + (H(i) ? " (readonly)" : "")] : H(i) ? ["div", {}, ["span", e, Pe(i) ? "ShallowReadonly" : "Readonly"], "<", a(i), ">"] : null : null, hasBody: (i) => i && i.__isVue, body(i) { | ||
if (i && i.__isVue) | ||
return ["div", {}, ...s(i.$)]; | ||
} }; | ||
function s(i) { | ||
const d = []; | ||
i.type.props && i.props && d.push(c("props", v(i.props))), i.setupState !== A && d.push(c("setup", i.setupState)), i.data !== A && d.push(c("data", v(i.data))); | ||
const f = p(i, "computed"); | ||
f && d.push(c("computed", f)); | ||
const _ = p(i, "inject"); | ||
return _ && d.push(c("injected", _)), d.push(["div", {}, ["span", { style: r.style + ";opacity:0.66" }, "$ (internal): "], ["object", { object: i }]]), d; | ||
} | ||
function c(i, d) { | ||
return d = D({}, d), Object.keys(d).length ? ["div", { style: "line-height:1.25em;margin-bottom:0.6em" }, ["div", { style: "color:#476582" }, i], ["div", { style: "padding-left:1.25em" }, ...Object.keys(d).map((f) => ["div", {}, ["span", r, f + ": "], a(d[f], !1)])]] : ["span", {}]; | ||
} | ||
function a(i, d = !0) { | ||
return typeof i == "number" ? ["span", n, i] : typeof i == "string" ? ["span", t, JSON.stringify(i)] : typeof i == "boolean" ? ["span", r, i] : x(i) ? ["object", { object: d ? v(i) : i }] : ["span", t, String(i)]; | ||
} | ||
function p(i, d) { | ||
const f = i.type; | ||
if (N(f)) | ||
return; | ||
const _ = {}; | ||
for (const m in i.ctx) | ||
l(f, m, d) && (_[m] = i.ctx[m]); | ||
return _; | ||
} | ||
function l(i, d, f) { | ||
const _ = i[f]; | ||
return !!(y(_) && _.includes(d) || x(_) && d in _) || !(!i.extends || !l(i.extends, d, f)) || !(!i.mixins || !i.mixins.some((m) => l(m, d, f))) || void 0; | ||
} | ||
function u(i) { | ||
return Pe(i) ? "ShallowRef" : i.effect ? "ComputedRef" : "Ref"; | ||
} | ||
window.devtoolsFormatters ? window.devtoolsFormatters.push(o) : window.devtoolsFormatters = [o]; | ||
}(); | ||
var Ne, uo; | ||
const Dn = ((e, n) => { | ||
const t = e.__vccOpts || e; | ||
for (const [r, o] of n) | ||
t[r] = o; | ||
return t; | ||
})(N(Ne = { name: "EasterEggTrigger", props: { callback: { default: null, type: Function }, delay: { default: 500, type: [String, Number] }, pattern: { default: () => ["ArrowUp", "ArrowUp", "ArrowDown", "ArrowDown", "ArrowLeft", "ArrowRight", "ArrowLeft", "ArrowRight", "b", "a"], type: Array }, target: { default: "body", type: String }, type: { default: "keydown", type: String } }, emits: ["triggered"], setup(e, { emit: n }) { | ||
const r = ["ArrowUp", "ArrowUp", "ArrowDown", "ArrowDown", "ArrowLeft", "ArrowRight", "ArrowLeft", "ArrowRight", "b", "a"], o = "body", s = "keydown", c = q(["click", "dblclick", "mouseup", "mousedown"]); | ||
let a = q([]), p = setTimeout(() => { | ||
}), l = q([]), u = q({ nodes: [], ids: [], classNames: [] }); | ||
const i = (d = e, f = ([g]) => e[g] != null, Object.fromEntries(Object.entries(d).filter(f))); | ||
var d, f; | ||
function _() { | ||
a.push(i), Object.values(a).forEach((g) => { | ||
const h = q(g); | ||
h.pattern || (h.pattern = r), h.target || (h.target = o); | ||
}), function() { | ||
const g = i.type ?? s; | ||
document.addEventListener(g, m, !1); | ||
}(); | ||
} | ||
function m(g) { | ||
const h = me(""); | ||
if (p !== null && clearTimeout(p), g.key !== void 0 && (h.value = g.key), $e(c, g.type)) { | ||
const $ = g.target; | ||
h.value = g.type, u.nodes.push($.nodeName.toLowerCase()), u.ids.push($.id), u.classNames.push($.classList.value); | ||
} | ||
return l.push(h.value), function($) { | ||
Object.values(a).forEach((P) => { | ||
if (lt(P == null ? void 0 : P.pattern, l)) { | ||
if ($e(c, $.type)) | ||
return function(on, de) { | ||
const ot = de.target, rt = de.target.replace("#", ""), st = de.target.replace(".", ""), rn = Re(u.nodes), sn = Re(u.ids), cn = Re(u.classNames), ct = me(rn.length === 1 && rn[0] === ot), it = me(sn.length === 1 && sn[0] === rt), at = me(cn.length === 1 && $e(cn[0], st)); | ||
(ct.value || it.value || at.value) && W(de), w(); | ||
}(0, P), !1; | ||
W(P); | ||
} | ||
return !1; | ||
}), w(); | ||
}(g), !1; | ||
} | ||
function w() { | ||
let g = 500; | ||
e.delay !== void 0 && (g = +e.delay), p = setTimeout(() => { | ||
clearTimeout(p), l = [], u = { nodes: [], ids: [], classNames: [] }; | ||
}, +g); | ||
} | ||
function W(g) { | ||
if (Object.keys(a).length === 1) { | ||
const h = i.type ?? s; | ||
document.removeEventListener(h, m, !1); | ||
} else | ||
(function(h) { | ||
const $ = a; | ||
a = []; | ||
const P = ut($, (on) => on.name === h.name); | ||
$.splice(P, 1), Object.values($).forEach(() => { | ||
_(); | ||
}), a = $; | ||
})(g); | ||
return g.callback && g.callback(g), n("triggered", g), !1; | ||
} | ||
return _(), {}; | ||
} }) ? (() => D({ name: Ne.name }, uo, { setup: Ne }))() : Ne, [["render", function(e, n, t, r, o, s) { | ||
return null; | ||
}]]); | ||
Dn.install = (e) => { | ||
e.component("EasterEggTrigger", Dn); | ||
}; | ||
export { | ||
Dn as default | ||
}; |
180
package.json
{ | ||
"name": "vue3-easter-egg-trigger", | ||
"version": "1.0.1", | ||
"description": "This packages makes it nice and easy to add Easter Egg triggers to your Vue3 site.", | ||
"private": false, | ||
"main": "dist/vue3-easter-egg-trigger.js", | ||
"module": "dist/vue3-easter-egg-trigger.es.js", | ||
"types": "dist/plugin/EasterEggTriggerPlugin.d.ts", | ||
"scripts": { | ||
"dev": "vite", | ||
"watch": "pnpm dev", | ||
"bundle": "rollup -c --bundleConfigAsCjs", | ||
"build": "vite build", | ||
"predeploy": "npm run build", | ||
"deploy": "gh-pages -d docs", | ||
"prepublishOnly": "npm run bundle" | ||
}, | ||
"author": "WebDevNerdStuff & Bunnies... lots and lots of bunnies! <webdevnerdstuff@gmail.com> (https://webdevnerdstuff.com)", | ||
"funding": [ | ||
{ | ||
"type": "patreon", | ||
"url": "https://www.patreon.com/WebDevNerdStuff" | ||
}, | ||
{ | ||
"type": "individual", | ||
"url": "https://bit.ly/wdns-paypal-veet-plugin" | ||
} | ||
], | ||
"license": "MIT", | ||
"files": [ | ||
"dist/*", | ||
"LICENSE.md", | ||
"README.md" | ||
], | ||
"repository": "https://github.com/webdevnerdstuff/vue3-easter-egg-trigger", | ||
"bugs": { | ||
"url": "https://github.com/webdevnerdstuff/vue3-easter-egg-trigger/issues" | ||
}, | ||
"homepage": "https://github.com/webdevnerdstuff/vue3-easter-egg-trigger", | ||
"keywords": [ | ||
"vue", | ||
"vue3", | ||
"javascript", | ||
"easterEgg", | ||
"easter egg", | ||
"easter", | ||
"egg", | ||
"eggs", | ||
"eggs", | ||
"trigger", | ||
"webdevnerdstuff", | ||
"wdns" | ||
], | ||
"peerDependencies": { | ||
"vue": "^3.2.25" | ||
}, | ||
"dependencies": { | ||
"lodash": "^4.17.21" | ||
}, | ||
"devDependencies": { | ||
"@rollup/plugin-alias": "^4.0.3", | ||
"@rollup/plugin-commonjs": "^24.0.1", | ||
"@rollup/plugin-json": "^6.0.0", | ||
"@rollup/plugin-node-resolve": "^15.0.1", | ||
"@types/lodash": "^4.14.191", | ||
"@types/node": "^18.11.18", | ||
"@typescript-eslint/eslint-plugin": "^5.48.2", | ||
"@typescript-eslint/parser": "^5.48.2", | ||
"@vitejs/plugin-vue": "^4.0.0", | ||
"@vue/compiler-sfc": "^3.2.45", | ||
"@vue/eslint-config-typescript": "^11.0.2", | ||
"eslint": "^8.32.0", | ||
"eslint-config-prettier": "^8.6.0", | ||
"eslint-plugin-import": "^2.27.5", | ||
"eslint-plugin-prettier": "^4.2.1", | ||
"eslint-plugin-vue": "^9.9.0", | ||
"gh-pages": "^5.0.0", | ||
"prettier": "^2.8.3", | ||
"rollup": "^3.10.1", | ||
"rollup-plugin-polyfill-node": "^0.12.0", | ||
"rollup-plugin-typescript2": "^0.34.1", | ||
"typescript": "^4.9.3", | ||
"vite": "^4.0.0", | ||
"vite-plugin-eslint": "^1.8.1", | ||
"vue": "^3.2.25", | ||
"vue-tsc": "^1.0.11" | ||
} | ||
} | ||
"name": "vue3-easter-egg-trigger", | ||
"version": "1.0.2", | ||
"description": "This packages makes it nice and easy to add Easter Egg triggers to your Vue3 site.", | ||
"private": false, | ||
"main": "dist/vue3-easter-egg-trigger.cjs.js", | ||
"module": "dist/vue3-easter-egg-trigger.es.js", | ||
"types": "dist/types/index.d.ts", | ||
"lint-staged": { | ||
"src/**/*.{js,ts,vue}": [ | ||
"npm run lint" | ||
] | ||
}, | ||
"author": "WebDevNerdStuff & Bunnies... lots and lots of bunnies! <webdevnerdstuff@gmail.com> (https://webdevnerdstuff.com)", | ||
"funding": [ | ||
{ | ||
"type": "paypal", | ||
"url": "https://paypal.me/webdevnerdstuff" | ||
}, | ||
{ | ||
"type": "patreon", | ||
"url": "https://www.patreon.com/WebDevNerdStuff" | ||
} | ||
], | ||
"license": "MIT", | ||
"files": [ | ||
"dist/*", | ||
"LICENSE.md", | ||
"README.md" | ||
], | ||
"repository": "https://github.com/webdevnerdstuff/vue3-easter-egg-trigger", | ||
"bugs": { | ||
"url": "https://github.com/webdevnerdstuff/vue3-easter-egg-trigger/issues" | ||
}, | ||
"homepage": "https://github.com/webdevnerdstuff/vue3-easter-egg-trigger", | ||
"keywords": [ | ||
"vue", | ||
"vue3", | ||
"javascript", | ||
"easterEgg", | ||
"easter egg", | ||
"easter", | ||
"egg", | ||
"eggs", | ||
"eggs", | ||
"trigger", | ||
"webdevnerdstuff", | ||
"wdns" | ||
], | ||
"peerDependencies": { | ||
"vue": "^3.2.25" | ||
}, | ||
"dependencies": { | ||
"lodash": "^4.17.21" | ||
}, | ||
"devDependencies": { | ||
"@rollup/plugin-commonjs": "^25.0.3", | ||
"@rollup/plugin-terser": "^0.4.3", | ||
"@types/lodash": "^4.14.195", | ||
"@types/node": "^20.4.2", | ||
"@typescript-eslint/eslint-plugin": "^6.1.0", | ||
"@typescript-eslint/parser": "^6.1.0", | ||
"@vitejs/plugin-vue": "^4.2.3", | ||
"@vue/compiler-sfc": "^3.3.4", | ||
"@vue/eslint-config-typescript": "^11.0.3", | ||
"eslint": "^8.45.0", | ||
"eslint-config-prettier": "^8.8.0", | ||
"eslint-plugin-import": "^2.27.5", | ||
"eslint-plugin-prettier": "^5.0.0", | ||
"eslint-plugin-vue": "^9.15.1", | ||
"gh-pages": "^5.0.0", | ||
"husky": "^8.0.0", | ||
"lint-staged": "^13.2.3", | ||
"prettier": "^3.0.0", | ||
"rollup": "^3.26.3", | ||
"rollup-plugin-typescript2": "^0.35.0", | ||
"typescript": "^5.1.6", | ||
"vite": "^4.4.5", | ||
"vite-plugin-dts": "^3.3.1", | ||
"vite-plugin-eslint": "^1.8.1", | ||
"vue": "^3.3.4", | ||
"vue-tsc": "^1.8.5" | ||
}, | ||
"scripts": { | ||
"dev": "vite", | ||
"watch": "pnpm dev", | ||
"bundle": "rollup -c --bundleConfigAsCjs", | ||
"build": "vue-tsc && vite build --config vite.build.config.ts", | ||
"build:docs": "vite build", | ||
"predeploy": "npm run build", | ||
"deploy": "gh-pages -d docs", | ||
"lint": "eslint src/**/*.{ts,vue} --max-warnings 4" | ||
} | ||
} |
<p align="center"> | ||
<img alt="Vuetify Logo" width="100" src="https://webdevnerdstuff.github.io/vue3-easter-egg-trigger/vue.svg"> | ||
<img alt="Vue Logo" width="100" src="https://webdevnerdstuff.github.io/vue3-easter-egg-trigger/vue.svg"> | ||
</p> | ||
@@ -22,3 +22,3 @@ | ||
The `vue3-easter-egg-trigger` component makes it nice and easy to add Easter Egg triggers to your Vue site. | ||
The `vue3-easter-egg-trigger` component makes it nice and easy to add Easter Egg triggers to your Vue site. Also available for Vue 2 at [vue2-easter-egg-trigger](https://github.com/webdevnerdstuff/vue-easter-egg-trigger). | ||
@@ -25,0 +25,0 @@ ## Installation |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 2 instances in 1 package
Minified code
QualityThis package contains minified code. This may be harmless in some cases where minified code is included in packaged libraries, however packages on npm should not minify code.
Found 1 instance in 1 package
87222
1260
1
160
1