@scriptedpixels/liquid-glass-vue 0.0.8 → 0.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +32 -31
- package/dist/index.js.map +1 -1
- package/dist/types/components/LiquidGlass.vue.d.ts +2 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
@@ -1,8 +1,8 @@
|
|
1
|
-
import { defineComponent as V, computed as
|
1
|
+
import { defineComponent as V, computed as d, createElementBlock as M, openBlock as I, normalizeStyle as p, createElementVNode as i, createStaticVNode as H, unref as j, ref as v, normalizeClass as B, createVNode as K, renderSlot as w, onMounted as G, watch as X, onUnmounted as $, Fragment as D, createCommentVNode as _, withCtx as ee } from "vue";
|
2
2
|
const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDAwQGBAMEBgcFBAQFBwgHBwcHBwgLCAkJCQkICwsMDAwMDAsNDQ4ODQ0SEhISEhQUFBQUFBQUFBQBBQUFCAgIEAsLEBQODg4UFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFP/CABEIAQABAAMBEQACEQEDEQH/xAAxAAEBAQEBAQAAAAAAAAAAAAADAgQIAQYBAQEBAQEBAQAAAAAAAAAAAAMCBAEACAf/2gAMAwEAAhADEAAAAPjPor6kOgOiKhKgKhKgOhKhOhKxKgKhOgKhKhKgKxOhKhOgKhKhKgKwKhKgKgKwG841nns9J/nn2KVCdCdCVAVCVCVAdCVCdiVAVidCVAVCVAdiVCVCdAVCVCVAVCVAVAViVZxsBrPPY6R/NvsY6E6ErEqAqE6ErAqE6E7E7ErA0ErArAqAqEuiVAXRLol0S6J0JUBWBUI0BXnG88djpH81+xjoToSoSoCoTsSoYQTsTsTQSsCsCsCsCsCoC6A0JeAuiXSLwn0SoioCoCoBsBrPFH0j+a/Yx0J0JUJUJ2BUMIR2MIRoBoJIBXnJAK840BUA0BdAegXhLpF4S8R+IuiVgVANAV546fSH5r9jHRHQFQlYxYnZQgnYwhQokgEgEmckzjecazlYD3OPQHoD0S8JcI/EXiPxF0SoSvONBFF0j+a/YxdI7EqA6KLGEKEKEGFI0AlA0AUzimYbzjecazjWce5w6BdEeCXhPhFwz8R+MuiVgVAdF0j+a/Yp0RUJ0MWUIUWUIUKUIJqBoArnJM4pmBMw3nCsw1mCs4+AegPBLxHwi4Z8KPGXSPojYH0ukfzX7FOiKhiyiylDiylDhBNRNQJAJcwpnBMopmC84XlCswdzj3OPQHwlwS8R8M+HHDPxl0ioDoukfzT7GOhOyiimzmzhDlShBNBNBJc4rmFMwJlBMwXlC82esoVmHucOgXgHxH4j4Zyccg/GfiOiKh6R/NPsY6GLOKObOUObOUI0KEAlEkzimYFygmUEyheXPeULzZ6yhWce5x8BeEuGfCj0HyI5EdM/EdD0h+a/Yx0U0cUflxNnNnCHCCdgSiSZgTMK5c6ZQvLnTLnvJnvKFZgrMHc5dAeiXijhn445E8g/RHTPpdI/mn2KdlFR5RzcTUTZxZwglYGgCmcEzAuUEyZ0y57yZ0yZ7yheUKzh3OPc5dEvEfij0RyI9E+iPGfT6T/NPsQ6OKiKmajy4ijmyOyKwNAFM4JlBMudMmdMue8mdMme8me8wVmGsw0A9A+kfjjxx6J9EememfT6W/MvsMqOamKiamKmKOKM7ErErAUzAmYLyZ0y50yZ0yZkyZ7yBeULzBeYazl0T6R9KPRPYj0T2J9B9Ppj8x+wjo4qY7M9iKmKg6MrIrErALzBeYEyZ0y50yZkyZ7x50yheXPeUbzjWcqA6I+lHYnsT6J7E9iOx0z+YfYBUc1MdmexHZjsHRlRBRDYBecEzZ7yAmXNeTOmTOmPOmXOmULyjeYbzlYnQxRx057E9mexPYij6a/L/r86OOzPpjsR6Y7B9MqIaILDPYZ7zZ0y57y50yZ0x5kyAmXPeUEyjeYUznQnYnRTUTUT2JqJ7EUfTn5d9fFRx2Z9EdmPTHjLsF0h6I2OegzXmzJmzplz3lzJjzpkBMudMoplBM5JnOwOyiimzmomomonsHRdO/l318VFHYj0x6I9McgumXiHpDQ56DPebMmbNebMmXMmQEy50yguQEzCmYkA7GLGEKaObibiaOKOKPp38s+vCsj7EeiPTHIP0Hwx6ReMKDP0M95895syZ815cy5c6ZQTKCZRXMKZiQDQYQYsps5uJs5qIsjounvyz68KyLpx4z9Mcg+GXoLxl4g6IUGes+a8+e82ZM2dMuZMoJmBcwrlJM5IBoMKMoUWc2c3E0cWRUXT/wCV/XQ2R0RdiPQfDPkFwy9BeIOiHQz0Ges+e82dM2ZM2dMwLmBcwpmJc5qBoMIUIUoU2c2cWZ0R0PT/AOV/XQ2RUJdM+wfDL0Hwy5A+EfEHQz0AUGe8+dM2e82dcwJnFcwrnJc5IEKUIMIUoUWc2cWRUJ0PT/5V9dFYjZFRF0z8ZeM+QPDLxD4Q6OfoBQhefPeYEz50ziucUzCoEuclCEKFGUKEKLOLI7E6EqHqD8o+uhsRsisSoi6ZeM+QPiHhj0R8IUIdALALzgmcEzimcVAlzioGomgyhQgwhRZHZFQHQlQ9Qfk/10NiVkNiNiVGXiPxj4x8Q9IfCFCPRCwC84oA3nFQFM5KBKJIMKEIUWRoUUJWJUJ0BUPUH5L9dDZFYigjYjZHRF0x8Q9IvEHRHojQjQhecUAUAkEkziomgGgkoxZGgxZFQFQlYnQHRdPfj/10KCSCKESCNiVkViPSLpD0h6I0Q0I0A2IoBWBIJIBKBIJoJIJ2R2J0JWBUJ0JUB0XTv479dFZDYiglYigkhEgjZFQjRFQjRFQjQigFYigHYigmgEgmglYlYnQlQlYlQHQlQnQ9P/kf1yVkNiNCNkNiVENiNiViNEViNkVCVgKCViViViSCViSCVgdCViVCViVCdgVCVCdD1D+U/XBWQ2I0I2Q2JUQ2I0JWQ0I2JUQ2JUI2JUI2J0JWJWJWA2R0BWJ0I2JUJ2BUJUJ0P//EABkQAQEBAQEBAAAAAAAAAAAAAAECABEDEP/aAAgBAQABAgB1atWrVq1atWrVq1atWrVq1atWrVq1atWrVq+OrVq1atWrVq1atWrVq1atWrVq1atWrVq1atXxVppppppdWrVq1atWrVq1NNNNNNNNNNNPVWmmmmms6tWrVq1atWpppppppppppppp6q0000uc51atWrVq1ammmmmmmmmmmmmt1Vpppc5znVq1atWrVqaaaaaaaaaaaaaeqtNLnOc51atWrVq1ammmmmmmmmmmmmnqrS5znOc6tWrVq16222mmmmmmlVppp6tKuc5znOrVq1a9TbbbbTTTTTSq000qtLnOc5zq1atWrW0222200000qqqtKqrnOc5zq1atTbbbbbbbbTTTSqqqqqq5znOc6tTTTbbbbbbbbTTTSqqqqrlVznOctNNNtttttttttNNNNKqqqrqznKqrTTTTbbbbbbbbbTTTSqqqqrqznOc5aaaabbbbbbbbbaaaaVVVVVdWc5znVq1NNttttttttttNNKqqqqudWc5znVq16tbbbbbbbbbbTTSqqqq5XVnOc6tWrVrb1tttttttttNNKqqqqrWrK5VWmmm2230bbbbbbaaaXOc5zlVa1KuVVppptttt9G22222mmlzlVznK6tWVVWmmmm2222222222mlznOc5znLWppVVWmmm22222229bTWrOc5znOcq1qaaVpWmm222222229erVqznOc5znKtatStK0rTbTTbbbberXr1as5znOc5aVpppppWlabaabbbb1ta9WrVnOc5znU0rTTTTTTTTTbTTbbbTWvVq1as5znOdTTStNNNNNNNNNtNNtttN6tWvVq1ZznOrU00rTTTTTTTTTTTTTbTWvVq1atWrOc6tTTTStNNNNNNNNNNtNNtNa9WrVq1Z1Z1NNNNNK1q1NNNNNNNNNNNtNatWrVq1atWrU00000rWrVq1atWrVq1alaaa1atWrVq1NNNammmmla1atWrVq1aterVq16tWrVnVqa1NK1qaaaVX/xAAWEAADAAAAAAAAAAAAAAAAAAAhgJD/2gAIAQEAAz8AaExf/8QAGhEBAQEBAQEBAAAAAAAAAAAAAQISEQADEP/aAAgBAgEBAgDx48ePHjx48ePHjx48ePHjx48ePHjx48ePHj86IiIiIiInjx48ePHjx48IiIiIj0oooooooooRERER73ve60UUUUUUVrWiiiiiihERERER73ve97ooooorRWiiiiihKERERER73ve973RRRRWtFFFFFFCIiIiIiPe973ve60UUVrRRRRRRQiIlCIiI973ve973pRRWiiiiiiiiiiiiiiihEe973ve973RRWtFFFFFFFFFFFFFFFFFFa13ve973WitaKKKKKKKKKKKKKKKKKK1rWtd1rutFa1oooooooooooosssooorWta1rWta1rRRRRRRRRRRZZZZZZZZZWta1rWta1rRRRRRRRRZZZZZZZZZZZZe9a1rWta1rWitaKLLLLLLLLLLLLLLLLL3rWta1rWtFbLLLLLLLLLLLLLLLLLLLL3vWta1rWita1ssssssss+hZZZZZZZZe961rWta0Vre97LLLLLLLLLLLPoWWWWWXrWta1oorWta3ssss+hZZZZ9Cyyyyyyyyiita1orWta1ve9llllllllllllllllFFa0VorWta1ve9llllllllllllllllllFFFaK1rWta1rWiyyyyyyyyyyyyiiiiiiitFFa1rWta1oosoosssssoooosoooorRRRWta1rWta0UUUUUWUUUUUUUUUUUVoooorWta1rWtaKKKKKKmiiiiiiiiiiiiiiitd73ve61oSiiipoqaKKKKKKKKKK0UUUVrve973vREREZoSihEooooorRRRRWtd73ve9EREREREoSiiiiitFllllla73ve9ERERERESiiiiiitH0PoWWWWVrXe96IiIiMoiJRRRRRRWjwlFFllllFFd6IiIiIlCUUUUUUUUUePHjx48ePCIiIiIiIiUUUUUUUUUUUePHjx48ePHjx48ePHjx48IiUUUUUUJRRRX//xAAWEQADAAAAAAAAAAAAAAAAAAABYJD/2gAIAQIBAz8AtEV7/8QAFxEBAQEBAAAAAAAAAAAAAAAAAAECEP/aAAgBAwEBAgCtNNNNNNNNNNNNNNNNNNNNNNNNNNNNNcrTTTTTTTTTTTTTTTTTTTTTTTTTTTTTXKrTTTTTTTU000000000000000000001FVpppppqampqaaaaaaaaaaaaaaaaaaaa5Vaaaaampqampqammmmmmmmmmmlaaaaaaiq0001NTU1NTU1NTTTTTTTTTTSqqtNNNcqtNNSyzU1LNTU1NTTTTTTTTTSqqq001ytNLLLLNTU1NTU1NTbbbTTTTTSqqq001ytNLLLLLNTU1NTU3NttttNNNNNKqq001KrSyyyyyzU1NTU3Nzc02220000qqqqrSqqyyyyyzU1NTU3Nzc3NttttNNNKqqqqqqssssss1NTU3Nzc3NzbbbbTTTSqqqqqqrLLLLLNTU1Nzc3Nzc22220000qqqqqqqqssss1NTU3Nzc3NzbbbbbTTSqqqqqqqqqqzU1NTc3Nzc3Nzbc22000qqqqqqqqqqqtTU3Nzc3Nzc3NtzbTTSqqqqrKqqqqqtNNzc23Nzc3Nzc3NTU1KqqqrKqqqqqtNNNNttzc3Nzc3NzU1NLLLLLKqqqqqqqq0022223Nzc3NzU1NSyyyyyyqqqqqqqrTTbbbbc3Nzc3NTU1LLLLLLKsqqqqqqrTTTTbbbc3Nzc1NTUsssssssqqqqqqrTTTTTbbbTc3NTU1NTUsssssqqqqqqqq0000222023NTU1NTUsssssqqqqqqqq000000003NTU1NTU1LLLLLNKrTSqqqqtNNNNNNtNNTU1NSzUssss00qq0qqqqrTTTTTTTTTU1NTUs1LLLNNNKrTTTSqqq00000000001NTU1LNTU0000qtNNNKqqqtNNNNNNNNTU1NTUs1NNNNNKss1NNNK00qtK0000001NNTU0s000000qq000001NKrStNNNNK1NNNNStNNNNNKqtNNNNNNNK0000000rU0000rTTTTTSq00000rTTTTTTTTTTTTTTTTStNNNNKr/xAAUEQEAAAAAAAAAAAAAAAAAAACg/9oACAEDAQM/AAAf/9k=", ae = ["id"], ie = ["offset"], ne = ["id"], le = ["href"], se = {
|
3
3
|
in: "EDGE_INTENSITY",
|
4
4
|
result: "EDGE_MASK"
|
5
|
-
}, oe = ["tableValues"], re = ["scale"], ue = ["scale"],
|
5
|
+
}, oe = ["tableValues"], re = ["scale"], ue = ["scale"], de = ["scale"], ce = ["stdDeviation"], P = /* @__PURE__ */ V({
|
6
6
|
__name: "GlassFilter",
|
7
7
|
props: {
|
8
8
|
id: {},
|
@@ -12,8 +12,8 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
12
12
|
height: {}
|
13
13
|
},
|
14
14
|
setup(q) {
|
15
|
-
const e = q, r =
|
16
|
-
return (
|
15
|
+
const e = q, r = d(() => Math.max(30, 80 - e.aberrationIntensity * 2)), s = d(() => e.displacementScale * -1), u = d(() => e.displacementScale * (-1 - e.aberrationIntensity * 0.05)), l = d(() => e.displacementScale * (-1 - e.aberrationIntensity * 0.1)), h = d(() => Math.max(0.1, 0.5 - e.aberrationIntensity * 0.1)), g = d(() => `0 ${e.aberrationIntensity * 0.05} 1`);
|
16
|
+
return (c, t) => (I(), M("svg", {
|
17
17
|
style: p({ position: "absolute", width: e.width + "px", height: e.height + "px" }),
|
18
18
|
"aria-hidden": "true"
|
19
19
|
}, [
|
@@ -120,7 +120,7 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
120
120
|
xChannelSelector: "R",
|
121
121
|
yChannelSelector: "B",
|
122
122
|
result: "BLUE_DISPLACED"
|
123
|
-
}, null, 8,
|
123
|
+
}, null, 8, de),
|
124
124
|
t[6] || (t[6] = i("feColorMatrix", {
|
125
125
|
in: "BLUE_DISPLACED",
|
126
126
|
type: "matrix",
|
@@ -146,13 +146,13 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
146
146
|
in: "RGB_COMBINED",
|
147
147
|
stdDeviation: h.value,
|
148
148
|
result: "ABERRATED_BLURRED"
|
149
|
-
}, null, 8,
|
149
|
+
}, null, 8, ce),
|
150
150
|
t[9] || (t[9] = H('<feComposite in="ABERRATED_BLURRED" in2="EDGE_MASK" operator="in" result="EDGE_ABERRATION"></feComposite><feComponentTransfer in="EDGE_MASK" result="INVERTED_MASK"><feFuncA type="table" tableValues="1 0"></feFuncA></feComponentTransfer><feComposite in="CENTER_ORIGINAL" in2="INVERTED_MASK" operator="in" result="CENTER_CLEAN"></feComposite><feComposite in="EDGE_ABERRATION" in2="CENTER_CLEAN" operator="over"></feComposite>', 4))
|
151
151
|
], 8, ne)
|
152
152
|
])
|
153
153
|
], 4));
|
154
154
|
}
|
155
|
-
}),
|
155
|
+
}), Ae = /* @__PURE__ */ V({
|
156
156
|
__name: "GlassContainer",
|
157
157
|
props: {
|
158
158
|
className: { default: "" },
|
@@ -171,11 +171,11 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
171
171
|
},
|
172
172
|
emits: ["mouse-enter", "mouse-leave", "mouse-down", "mouse-up", "click"],
|
173
173
|
setup(q, { expose: e, emit: r }) {
|
174
|
-
const s = q, u = r, l = `glass-filter-${Math.random().toString(36).substr(2, 9)}`, h =
|
174
|
+
const s = q, u = r, l = `glass-filter-${Math.random().toString(36).substr(2, 9)}`, h = d(() => ({
|
175
175
|
filter: `url(#${l})`,
|
176
176
|
backdropFilter: `blur(${(s.overLight ? 20 : 4) + s.blurAmount * 32}px) saturate(${s.saturation}%)`
|
177
177
|
})), g = v(null);
|
178
|
-
return e({ glassContainerRef: g }), (
|
178
|
+
return e({ glassContainerRef: g }), (c, t) => (I(), M("div", {
|
179
179
|
ref_key: "glassContainerRef",
|
180
180
|
ref: g,
|
181
181
|
class: B(`relative ${s.className} ${s.active ? "active" : ""} ${s.onClick ? "cursor-pointer" : ""}`),
|
@@ -224,7 +224,7 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
224
224
|
textShadow: s.overLight ? "0px 2px 12px rgba(0, 0, 0, 0)" : "0px 2px 12px rgba(0, 0, 0, 0.4)"
|
225
225
|
})
|
226
226
|
}, [
|
227
|
-
w(
|
227
|
+
w(c.$slots, "default", {}, void 0, !0)
|
228
228
|
], 4)
|
229
229
|
], 36)
|
230
230
|
], 6));
|
@@ -234,7 +234,7 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
234
234
|
for (const [s, u] of e)
|
235
235
|
r[s] = u;
|
236
236
|
return r;
|
237
|
-
}, pe = /* @__PURE__ */ Ne(
|
237
|
+
}, pe = /* @__PURE__ */ Ne(Ae, [["__scopeId", "data-v-689fee6a"]]), Te = /* @__PURE__ */ V({
|
238
238
|
__name: "LiquidGlass",
|
239
239
|
props: {
|
240
240
|
displacementScale: { default: 70 },
|
@@ -250,16 +250,17 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
250
250
|
padding: { default: "24px 32px" },
|
251
251
|
style: {},
|
252
252
|
overLight: { type: Boolean, default: !1 },
|
253
|
-
onClick: { type: Function, default: () => ({}) }
|
253
|
+
onClick: { type: Function, default: () => ({}) },
|
254
|
+
mode: { default: "standard" }
|
254
255
|
},
|
255
256
|
setup(q) {
|
256
|
-
const e = q, r = v(null), s = v(!1), u = v(!1), l = v({ width: 400, height: 400 }), h = v({ x: 0, y: 0 }), g = v({ x: 0, y: 0 }),
|
257
|
+
const e = q, r = v(null), s = v(!1), u = v(!1), l = v({ width: 400, height: 400 }), h = v({ x: 0, y: 0 }), g = v({ x: 0, y: 0 }), c = d(() => e.globalMousePos || h.value), t = d(() => e.mouseOffset || g.value), y = (n) => {
|
257
258
|
var m;
|
258
259
|
const a = e.mouseContainer || ((m = r.value) == null ? void 0 : m.glassContainerRef);
|
259
260
|
if (!a) return;
|
260
|
-
const o = a.getBoundingClientRect(),
|
261
|
+
const o = a.getBoundingClientRect(), A = o.left + o.width / 2, N = o.top + o.height / 2;
|
261
262
|
g.value = {
|
262
|
-
x: (n.clientX -
|
263
|
+
x: (n.clientX - A) / o.width * 100,
|
263
264
|
y: (n.clientY - N) / o.height * 100
|
264
265
|
}, h.value = {
|
265
266
|
x: n.clientX,
|
@@ -276,33 +277,33 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
276
277
|
};
|
277
278
|
return n(), window.addEventListener("resize", n), () => window.removeEventListener("resize", n);
|
278
279
|
}), X([() => e.globalMousePos, () => e.mouseOffset, r], ([n, a]) => {
|
279
|
-
var
|
280
|
+
var A;
|
280
281
|
if (n && a)
|
281
282
|
return;
|
282
|
-
const o = e.mouseContainer || ((
|
283
|
+
const o = e.mouseContainer || ((A = r.value) == null ? void 0 : A.glassContainerRef);
|
283
284
|
o && o.addEventListener("mousemove", y);
|
284
285
|
}, { immediate: !0 }), $(() => {
|
285
286
|
});
|
286
|
-
const Z =
|
287
|
+
const Z = d(() => {
|
287
288
|
var x;
|
288
|
-
if (!
|
289
|
+
if (!c.value.x || !c.value.y || !((x = r.value) != null && x.glassContainerRef))
|
289
290
|
return 0;
|
290
|
-
const n = r.value.glassContainerRef.getBoundingClientRect(), a = n.left + n.width / 2, o = n.top + n.height / 2,
|
291
|
+
const n = r.value.glassContainerRef.getBoundingClientRect(), a = n.left + n.width / 2, o = n.top + n.height / 2, A = l.value.width, N = l.value.height, m = Math.max(0, Math.abs(c.value.x - a) - A / 2), b = Math.max(0, Math.abs(c.value.y - o) - N / 2), R = Math.sqrt(m * m + b * b), f = 200;
|
291
292
|
return R > f ? 0 : 1 - R / f;
|
292
|
-
}), S =
|
293
|
+
}), S = d(() => {
|
293
294
|
var N;
|
294
295
|
if (!((N = r.value) != null && N.glassContainerRef))
|
295
296
|
return { x: 0, y: 0 };
|
296
|
-
const n = Z.value, a = r.value.glassContainerRef.getBoundingClientRect(), o = a.left + a.width / 2,
|
297
|
+
const n = Z.value, a = r.value.glassContainerRef.getBoundingClientRect(), o = a.left + a.width / 2, A = a.top + a.height / 2;
|
297
298
|
return {
|
298
|
-
x: (
|
299
|
-
y: (
|
299
|
+
x: (c.value.x - o) * e.elasticity * 0.1 * n,
|
300
|
+
y: (c.value.y - A) * e.elasticity * 0.1 * n
|
300
301
|
};
|
301
|
-
}), O =
|
302
|
+
}), O = d(() => {
|
302
303
|
var F;
|
303
|
-
if (!
|
304
|
+
if (!c.value.x || !c.value.y || !((F = r.value) != null && F.glassContainerRef))
|
304
305
|
return "scale(1)";
|
305
|
-
const n = r.value.glassContainerRef.getBoundingClientRect(), a = n.left + n.width / 2, o = n.top + n.height / 2,
|
306
|
+
const n = r.value.glassContainerRef.getBoundingClientRect(), a = n.left + n.width / 2, o = n.top + n.height / 2, A = l.value.width, N = l.value.height, m = c.value.x - a, b = c.value.y - o, R = Math.max(0, Math.abs(m) - A / 2), f = Math.max(0, Math.abs(b) - N / 2), x = Math.sqrt(R * R + f * f), Q = 200;
|
306
307
|
if (x > Q)
|
307
308
|
return "scale(1)";
|
308
309
|
const k = 1 - x / Q, C = Math.sqrt(m * m + b * b);
|
@@ -310,11 +311,11 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
310
311
|
return "scale(1)";
|
311
312
|
const W = m / C, z = b / C, L = Math.min(C / 300, 1) * e.elasticity * k, J = 1 + Math.abs(W) * L * 0.3 - Math.abs(z) * L * 0.15, Y = 1 + Math.abs(z) * L * 0.3 - Math.abs(W) * L * 0.15;
|
312
313
|
return `scaleX(${Math.max(0.8, J)}) scaleY(${Math.max(0.8, Y)})`;
|
313
|
-
}), E =
|
314
|
+
}), E = d(() => `translate(calc(-50% + ${S.value.x}px), calc(-50% + ${S.value.y}px)) ${u.value && e.onClick ? "scale(0.96)" : O.value}`), U = d(() => ({
|
314
315
|
...e.style,
|
315
316
|
transform: E.value,
|
316
317
|
transition: "all ease-out 0.2s"
|
317
|
-
})), T =
|
318
|
+
})), T = d(() => {
|
318
319
|
var n, a, o;
|
319
320
|
return {
|
320
321
|
position: ((n = e.style) == null ? void 0 : n.position) || "relative",
|
@@ -323,10 +324,10 @@ const te = "data:image/jpeg;base64,/9j/4AAQSkZJRgABAgAAZABkAAD/2wCEAAQDAwMDAwQDA
|
|
323
324
|
};
|
324
325
|
});
|
325
326
|
return (n, a) => {
|
326
|
-
var o,
|
327
|
+
var o, A;
|
327
328
|
return I(), M(D, null, [
|
328
329
|
K(P, {
|
329
|
-
id: `liquid-glass-filter-${((
|
330
|
+
id: `liquid-glass-filter-${((A = (o = r.value) == null ? void 0 : o.glassContainerRef) == null ? void 0 : A.id) || "default"}`,
|
330
331
|
displacementScale: e.overLight ? e.displacementScale * 0.5 : e.displacementScale,
|
331
332
|
aberrationIntensity: e.aberrationIntensity,
|
332
333
|
width: l.value.width,
|
package/dist/index.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/assets/ts/utils.ts","../src/components/GlassFilter.vue","../src/components/GlassContainer.vue","../src/components/LiquidGlass.vue"],"sourcesContent":["export const displacementMap =\n \"data:image/jpeg;base64,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cUAUAkEkziomgGgkoxZGgxZFQFQlYnQHRdPfj/10KCSCKESCNiVkViPSLpD0h6I0Q0I0A2IoBWBIJIBKBIJoJIJ2R2J0JWBUJ0JUB0XTv479dFZDYiglYigkhEgjZFQjRFQjRFQjQigFYigHYigmgEgmglYlYnQlQlYlQHQlQnQ9P/kf1yVkNiNCNkNiVENiNiViNEViNkVCVgKCViViViSCViSCVgdCViVCViVCdgVCVCdD1D+U/XBWQ2I0I2Q2JUQ2I0JWQ0I2JUQ2JUI2JUI2J0JWJWJWA2R0BWJ0I2JUJ2BUJUJ0P//EABkQAQEBAQEBAAAAAAAAAAAAAAECABEDEP/aAAgBAQABAgB1atWrVq1atWrVq1atWrVq1atWrVq1atWrVq+OrVq1atWrVq1atWrVq1atWrVq1atWrVq1atXxVppppppdWrVq1atWrVq1NNNNNNNNNNNPVWmmmmms6tWrVq1atWpppppppppppppp6q0000uc51atWrVq1ammmmmmmmmmmmmt1Vpppc5znVq1atWrVqaaaaaaaaaaaaaeqtNLnOc51atWrVq1ammmmmmmmmmmmmnqrS5znOc6tWrVq16222mmmmmmlVppp6tKuc5znOrVq1a9TbbbbTTTTTSq000qtLnOc5zq1atWrW0222200000qqqtKqrnOc5zq1atTbbbbbbbbTTTSqqqqqq5znOc6tTTTbbbbbbbbTTTSqqqqrlVznOctNNNtttttttttNNNNKqqqrqznKqrTTTTbbbbbbbbbTTTSqqqqrqznOc5aaaabbbbbbbbbaaaaVVVVVdWc5znVq1NNttttttttttNNKqqqqudWc5znVq16tbbbbbbbbbbTTSqqqq5XVnOc6tWrVrb1tttttttttNNKqqqqrWrK5VWmmm2230bbbbbbaaaXOc5zlVa1KuVVppptttt9G22222mmlzlVznK6tWVVWmmmm2222222222mlznOc5znLWppVVWmmm22222229bTWrOc5znOcq1qaaVpWmm222222229erVqznOc5znKtatStK0rTbTTbbbberXr1as5znOc5aVpppppWlabaabbbb1ta9WrVnOc5znU0rTTTTTTTTTbTTbbbTWvVq1as5znOdTTStNNNNNNNNNtNNtttN6tWvVq1ZznOrU00rTTTTTTTTTTTTTbTWvVq1atWrOc6tTTTStNNNNNNNNNNtNNtNa9WrVq1Z1Z1NNNNNK1q1NNNNNNNNNNNtNatWrVq1atWrU00000rWrVq1atWrVq1alaaa1atWrVq1NNNammmmla1atWrVq1aterVq16tWrVnVqa1NK1qaaaVX/xAAWEAADAAAAAAAAAAAAAAAAAAAhgJD/2gAIAQEAAz8AaExf/8QAGhEBAQEBAQEBAAAAAAAAAAAAAQISEQADEP/aAAgBAgEBAgDx48ePHjx48ePHjx48ePHjx48ePHjx48ePHj86IiIiIiInjx48ePHjx48IiIiIj0oooooooooRERER73ve60UUUUUUVrWiiiiiihERERER73ve97ooooorRWiiiiihKERERER73ve973RRRRWtFFFFFFCIiIiIiPe973ve60UUVrRRRRRRQiIlCIiI973ve973pRRWiiiiiiiiiiiiiiihEe973ve973RRWtFFFFFFFFFFFFFFFFFFa13ve973WitaKKKKKKKKKKKKKKKKKK1rWtd1rutFa1oooooooooooosssooorWta1rWta1rRRRRRRRRRRZZZZZZZZZWta1rWta1rRRRRRRRRZZZZZZZZZZZZe9a1rWta1rWitaKLLLLLLLLLLLLLLLLL3rWta1rWtFbLLLLLLLLLLLLLLLLLLLL3vWta1rWita1ssssssss+hZZZZZZZZe961rWta0Vre97LLLLLLLLLLLPoWWWWWXrWta1oorWta3ssss+hZZZZ9Cyyyyyyyyiita1orWta1ve9llllllllllllllllFFa0VorWta1ve9llllllllllllllllllFFFaK1rWta1rWiyyyyyyyyyyyyiiiiiiitFFa1rWta1oosoosssssoooosoooorRRRWta1rWta0UUUUUWUUUUUUUUUUUVoooorWta1rWtaKKKKKKmiiiiiiiiiiiiiiitd73ve61oSiiipoqaKKKKKKKKKK0UUUVrve973vREREZoSihEooooorRRRRWtd73ve9EREREREoSiiiiitFllllla73ve9ERERERESiiiiiitH0PoWWWWVrXe96IiIiMoiJRRRRRRWjwlFFllllFFd6IiIiIlCUUUUUUUUUePHjx48ePCIiIiIiIiUUUUUUUUUUUePHjx48ePHjx48ePHjx48IiUUUUUUJRRRX//xAAWEQADAAAAAAAAAAAAAAAAAAABYJD/2gAIAQIBAz8AtEV7/8QAFxEBAQEBAAAAAAAAAAAAAAAAAAECEP/aAAgBAwEBAgCtNNNNNNNNNNNNNNNNNNNNNNNNNNNNNcrTTTTTTTTTTTTTTTTTTTTTTTTTTTTTXKrTTTTTTTU000000000000000000001FVpppppqampqaaaaaaaaaaaaaaaaaaaa5Vaaaaampqampqammmmmmmmmmmlaaaaaaiq0001NTU1NTU1NTTTTTTTTTTSqqtNNNcqtNNSyzU1LNTU1NTTTTTTTTTSqqq001ytNLLLLNTU1NTU1NTbbbTTTTTSqqq001ytNLLLLLNTU1NTU3NttttNNNNNKqq001KrSyyyyyzU1NTU3Nzc02220000qqqqrSqqyyyyyzU1NTU3Nzc3NttttNNNKqqqqqqssssss1NTU3Nzc3NzbbbbTTTSqqqqqqrLLLLLNTU1Nzc3Nzc22220000qqqqqqqqssss1NTU3Nzc3NzbbbbbTTSqqqqqqqqqqzU1NTc3Nzc3Nzbc22000qqqqqqqqqqqtTU3Nzc3Nzc3NtzbTTSqqqqrKqqqqqtNNzc23Nzc3Nzc3NTU1KqqqrKqqqqqtNNNNttzc3Nzc3NzU1NLLLLLKqqqqqqqq0022223Nzc3NzU1NSyyyyyyqqqqqqqrTTbbbbc3Nzc3NTU1LLLLLLKsqqqqqqrTTTTbbbc3Nzc1NTUsssssssqqqqqqrTTTTTbbbTc3NTU1NTUsssssqqqqqqqq0000222023NTU1NTUsssssqqqqqqqq000000003NTU1NTU1LLLLLNKrTSqqqqtNNNNNNtNNTU1NSzUssss00qq0qqqqrTTTTTTTTTU1NTUs1LLLNNNKrTTTSqqq00000000001NTU1LNTU0000qtNNNKqqqtNNNNNNNNTU1NTUs1NNNNNKss1NNNK00qtK0000001NNTU0s000000qq000001NKrStNNNNK1NNNNStNNNNNKqtNNNNNNNK0000000rU0000rTTTTTSq00000rTTTTTTTTTTTTTTTTStNNNNKr/xAAUEQEAAAAAAAAAAAAAAAAAAACg/9oACAEDAQM/AAAf/9k=\"\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { displacementMap } from '../assets/ts/utils';\n\nconst props = defineProps<{\n id: string;\n displacementScale: number;\n aberrationIntensity: number;\n width: number;\n height: number;\n}>();\n\nconst edgeMaskOffset = computed(() => {\n return Math.max(30, 80 - props.aberrationIntensity * 2);\n});\n\nconst redDisplacementScale = computed(() => {\n return props.displacementScale * -1;\n});\n\nconst greenDisplacementScale = computed(() => {\n return props.displacementScale * (-1 - props.aberrationIntensity * 0.05);\n});\n\nconst blueDisplacementScale = computed(() => {\n return props.displacementScale * (-1 - props.aberrationIntensity * 0.1);\n});\n\nconst gaussianBlurStdDeviation = computed(() => {\n return Math.max(0.1, 0.5 - props.aberrationIntensity * 0.1);\n});\n\nconst feFuncATableValues = computed(() => {\n return `0 ${props.aberrationIntensity * 0.05} 1`;\n});\n\n</script>\n\n<template>\n <svg :style=\"{ position: 'absolute', width: props.width + 'px', height: props.height + 'px' }\" aria-hidden=\"true\">\n <defs>\n <radialGradient :id=\"`${props.id}-edge-mask`\" cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stop-color=\"black\" stop-opacity=\"0\" />\n <stop :offset=\"`${edgeMaskOffset}%`\" stop-color=\"black\" stop-opacity=\"0\" />\n <stop offset=\"100%\" stop-color=\"white\" stop-opacity=\"1\" />\n </radialGradient>\n <filter :id=\"props.id\" x=\"-35%\" y=\"-35%\" width=\"170%\" height=\"170%\" color-interpolation-filters=\"sRGB\">\n <feImage id=\"feimage\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" result=\"DISPLACEMENT_MAP\" :href=\"displacementMap\" preserveAspectRatio=\"xMidYMid slice\" />\n\n <!-- Create edge mask using the displacement map itself -->\n <feColorMatrix\n in=\"DISPLACEMENT_MAP\"\n type=\"matrix\"\n values=\"0.3 0.3 0.3 0 0\n 0.3 0.3 0.3 0 0\n 0.3 0.3 0.3 0 0\n 0 0 0 1 0\"\n result=\"EDGE_INTENSITY\"\n />\n <feComponentTransfer in=\"EDGE_INTENSITY\" result=\"EDGE_MASK\">\n <feFuncA type=\"discrete\" :tableValues=\"feFuncATableValues\" />\n </feComponentTransfer>\n\n <!-- Original undisplaced image for center -->\n <feOffset in=\"SourceGraphic\" dx=\"0\" dy=\"0\" result=\"CENTER_ORIGINAL\" />\n\n <!-- Red channel displacement with slight offset -->\n <feDisplacementMap in=\"SourceGraphic\" in2=\"DISPLACEMENT_MAP\" :scale=\"redDisplacementScale\" xChannelSelector=\"R\" yChannelSelector=\"B\" result=\"RED_DISPLACED\" />\n <feColorMatrix\n in=\"RED_DISPLACED\"\n type=\"matrix\"\n values=\"1 0 0 0 0\n 0 0 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0\"\n result=\"RED_CHANNEL\"\n />\n\n <!-- Green channel displacement -->\n <feDisplacementMap in=\"SourceGraphic\" in2=\"DISPLACEMENT_MAP\" :scale=\"greenDisplacementScale\" xChannelSelector=\"R\" yChannelSelector=\"B\" result=\"GREEN_DISPLACED\" />\n <feColorMatrix\n in=\"GREEN_DISPLACED\"\n type=\"matrix\"\n values=\"0 0 0 0 0\n 0 1 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0\"\n result=\"GREEN_CHANNEL\"\n />\n\n <!-- Blue channel displacement with slight offset -->\n <feDisplacementMap in=\"SourceGraphic\" in2=\"DISPLACEMENT_MAP\" :scale=\"blueDisplacementScale\" xChannelSelector=\"R\" yChannelSelector=\"B\" result=\"BLUE_DISPLACED\" />\n <feColorMatrix\n in=\"BLUE_DISPLACED\"\n type=\"matrix\"\n values=\"0 0 0 0 0\n 0 0 0 0 0\n 0 0 1 0 0\n 0 0 0 1 0\"\n result=\"BLUE_CHANNEL\"\n />\n\n <!-- Combine all channels with screen blend mode for chromatic aberration -->\n <feBlend in=\"GREEN_CHANNEL\" in2=\"BLUE_CHANNEL\" mode=\"screen\" result=\"GB_COMBINED\" />\n <feBlend in=\"RED_CHANNEL\" in2=\"GB_COMBINED\" mode=\"screen\" result=\"RGB_COMBINED\" />\n\n <!-- Add slight blur to soften the aberration effect -->\n <feGaussianBlur in=\"RGB_COMBINED\" :stdDeviation=\"gaussianBlurStdDeviation\" result=\"ABERRATED_BLURRED\" />\n\n <!-- Apply edge mask to aberration effect -->\n <feComposite in=\"ABERRATED_BLURRED\" in2=\"EDGE_MASK\" operator=\"in\" result=\"EDGE_ABERRATION\" />\n\n <!-- Create inverted mask for center -->\n <feComponentTransfer in=\"EDGE_MASK\" result=\"INVERTED_MASK\">\n <feFuncA type=\"table\" tableValues=\"1 0\" />\n </feComponentTransfer>\n <feComposite in=\"CENTER_ORIGINAL\" in2=\"INVERTED_MASK\" operator=\"in\" result=\"CENTER_CLEAN\" />\n\n <!-- Combine edge aberration with clean center -->\n <feComposite in=\"EDGE_ABERRATION\" in2=\"CENTER_CLEAN\" operator=\"over\" />\n </filter>\n </defs>\n </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, computed } from 'vue';\nimport GlassFilter from './GlassFilter.vue';\n\ninterface GlassContainerProps {\n className?: string;\n style?: Record<string, any>;\n displacementScale?: number;\n blurAmount?: number;\n saturation?: number;\n aberrationIntensity?: number;\n mouseOffset?: { x: number; y: number };\n active?: boolean;\n overLight?: boolean;\n cornerRadius?: number;\n padding?: string;\n glassSize?: { width: number; height: number };\n onClick?: () => void;\n}\n\nconst props = withDefaults(defineProps<GlassContainerProps>(), {\n className: '',\n style: () => ({}),\n displacementScale: 25,\n blurAmount: 12,\n saturation: 180,\n aberrationIntensity: 2,\n mouseOffset: () => ({ x: 0, y: 0 }),\n active: false,\n overLight: false,\n cornerRadius: 999,\n padding: '24px 32px',\n glassSize: () => ({ width: 270, height: 69 }),\n});\n\nconst emit = defineEmits<{\n (e: 'mouse-enter'): void;\n (e: 'mouse-leave'): void;\n (e: 'mouse-down'): void;\n (e: 'mouse-up'): void;\n (e: 'click'): void;\n}>();\n\nconst filterId = `glass-filter-${Math.random().toString(36).substr(2, 9)}`;\n\nconst backdropStyle = computed(() => ({\n filter: `url(#${filterId})`,\n backdropFilter: `blur(${(props.overLight ? 20 : 4) + props.blurAmount * 32}px) saturate(${props.saturation}%)`,\n}));\n\n// Expose the ref for parent components to access\nconst glassContainerRef = ref<HTMLDivElement | null>(null);\ndefineExpose({ glassContainerRef });\n</script>\n\n<template>\n <div\n ref=\"glassContainerRef\"\n :class=\"`relative ${props.className} ${props.active ? 'active' : ''} ${Boolean(props.onClick) ? 'cursor-pointer' : ''}`\"\n :style=\"props.style\"\n @click=\"props.onClick && props.onClick()\"\n >\n <GlassFilter\n :id=\"filterId\"\n :displacementScale=\"props.displacementScale\"\n :aberrationIntensity=\"props.aberrationIntensity\"\n :width=\"props.glassSize.width\"\n :height=\"props.glassSize.height\"\n />\n\n <div\n class=\"glass\"\n :style=\"{\n borderRadius: `${props.cornerRadius}px`,\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n gap: '24px',\n padding: props.padding,\n overflow: 'hidden',\n transition: 'all 0.2s ease-in-out',\n boxShadow: props.overLight ? '0px 16px 70px rgba(0, 0, 0, 0.75)' : '0px 12px 40px rgba(0, 0, 0, 0.25)',\n }\"\n @mouseenter=\"emit('mouse-enter')\"\n @mouseleave=\"emit('mouse-leave')\"\n @mousedown=\"emit('mouse-down')\"\n @mouseup=\"emit('mouse-up')\"\n >\n <!-- backdrop layer that gets wiggly -->\n <span\n class=\"glass__warp\"\n :style=\"{\n ...backdropStyle,\n position: 'absolute',\n inset: '0',\n }\"\n />\n\n <!-- user content stays sharp -->\n <div\n class=\"transition-all duration-150 ease-in-out text-white\"\n :style=\"{\n position: 'relative',\n zIndex: 1,\n font: '500 20px/1 system-ui',\n textShadow: props.overLight ? '0px 2px 12px rgba(0, 0, 0, 0)' : '0px 2px 12px rgba(0, 0, 0, 0.4)',\n }\"\n >\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n/* Add any specific styles for this component here if needed */\n</style> ","<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onUnmounted } from 'vue';\nimport GlassContainer from './GlassContainer.vue';\nimport GlassFilter from './GlassFilter.vue';\n\ninterface LiquidGlassProps {\n displacementScale?: number;\n blurAmount?: number;\n saturation?: number;\n aberrationIntensity?: number;\n elasticity?: number;\n cornerRadius?: number;\n globalMousePos?: { x: number; y: number };\n mouseOffset?: { x: number; y: number };\n mouseContainer?: HTMLElement | null;\n className?: string;\n padding?: string;\n style?: Record<string, any>;\n overLight?: boolean;\n onClick?: () => void;\n}\n\nconst props = withDefaults(defineProps<LiquidGlassProps>(), {\n displacementScale: 70,\n blurAmount: 0.0625,\n saturation: 140,\n aberrationIntensity: 2,\n elasticity: 0.15,\n cornerRadius: 999,\n globalMousePos: undefined,\n mouseOffset: undefined,\n mouseContainer: null,\n className: '',\n padding: '24px 32px',\n overLight: false,\n onClick: () => ({}),\n});\n\nconst glassRef = ref<InstanceType<typeof GlassContainer> | null>(null);\nconst isHovered = ref(false);\nconst isActive = ref(false);\nconst glassSize = ref({ width: 400, height: 400 });\nconst internalGlobalMousePos = ref({ x: 0, y: 0 });\nconst internalMouseOffset = ref({ x: 0, y: 0 });\n\nconst globalMousePos = computed(() => props.globalMousePos || internalGlobalMousePos.value);\nconst mouseOffset = computed(() => props.mouseOffset || internalMouseOffset.value);\n\nconst handleMouseMove = (e: MouseEvent) => {\n const container = props.mouseContainer || glassRef.value?.glassContainerRef;\n if (!container) return;\n\n const rect = container.getBoundingClientRect();\n const centerX = rect.left + rect.width / 2;\n const centerY = rect.top + rect.height / 2;\n\n internalMouseOffset.value = {\n x: ((e.clientX - centerX) / rect.width) * 100,\n y: ((e.clientY - centerY) / rect.height) * 100,\n };\n\n internalGlobalMousePos.value = {\n x: e.clientX,\n y: e.clientY,\n };\n};\n\nonMounted(() => {\n const updateGlassSize = () => {\n if (glassRef.value?.glassContainerRef) {\n const rect = glassRef.value.glassContainerRef.getBoundingClientRect();\n glassSize.value = { width: rect.width, height: rect.height };\n }\n };\n\n updateGlassSize();\n window.addEventListener('resize', updateGlassSize);\n\n return () => window.removeEventListener('resize', updateGlassSize);\n});\n\nwatch([() => props.globalMousePos, () => props.mouseOffset, glassRef], ([newGlobalMousePos, newMouseOffset]) => {\n if (newGlobalMousePos && newMouseOffset) {\n return;\n }\n\n const container = props.mouseContainer || glassRef.value?.glassContainerRef;\n if (!container) return;\n\n container.addEventListener('mousemove', handleMouseMove);\n\n}, { immediate: true });\n\nonUnmounted(() => {\n // container.removeEventListener('mousemove', handleMouseMove);\n});\n\nconst calculateFadeInFactor = computed(() => {\n if (!globalMousePos.value.x || !globalMousePos.value.y || !glassRef.value?.glassContainerRef) {\n return 0;\n }\n\n const rect = glassRef.value.glassContainerRef.getBoundingClientRect();\n const pillCenterX = rect.left + rect.width / 2;\n const pillCenterY = rect.top + rect.height / 2;\n const pillWidth = glassSize.value.width;\n const pillHeight = glassSize.value.height;\n\n const edgeDistanceX = Math.max(0, Math.abs(globalMousePos.value.x - pillCenterX) - pillWidth / 2);\n const edgeDistanceY = Math.max(0, Math.abs(globalMousePos.value.y - pillCenterY) - pillHeight / 2);\n const edgeDistance = Math.sqrt(edgeDistanceX * edgeDistanceX + edgeDistanceY * edgeDistanceY);\n\n const activationZone = 200;\n return edgeDistance > activationZone ? 0 : 1 - edgeDistance / activationZone;\n});\n\nconst calculateElasticTranslation = computed(() => {\n if (!glassRef.value?.glassContainerRef) {\n return { x: 0, y: 0 };\n }\n\n const fadeInFactor = calculateFadeInFactor.value;\n const rect = glassRef.value.glassContainerRef.getBoundingClientRect();\n const pillCenterX = rect.left + rect.width / 2;\n const pillCenterY = rect.top + rect.height / 2;\n\n return {\n x: (globalMousePos.value.x - pillCenterX) * props.elasticity * 0.1 * fadeInFactor,\n y: (globalMousePos.value.y - pillCenterY) * props.elasticity * 0.1 * fadeInFactor,\n };\n});\n\nconst calculateDirectionalScale = computed(() => {\n if (!globalMousePos.value.x || !globalMousePos.value.y || !glassRef.value?.glassContainerRef) {\n return \"scale(1)\";\n }\n\n const rect = glassRef.value.glassContainerRef.getBoundingClientRect();\n const pillCenterX = rect.left + rect.width / 2;\n const pillCenterY = rect.top + rect.height / 2;\n const pillWidth = glassSize.value.width;\n const pillHeight = glassSize.value.height;\n\n const deltaX = globalMousePos.value.x - pillCenterX;\n const deltaY = globalMousePos.value.y - pillCenterY;\n\n const edgeDistanceX = Math.max(0, Math.abs(deltaX) - pillWidth / 2);\n const edgeDistanceY = Math.max(0, Math.abs(deltaY) - pillHeight / 2);\n const edgeDistance = Math.sqrt(edgeDistanceX * edgeDistanceX + edgeDistanceY * edgeDistanceY);\n\n const activationZone = 200;\n\n if (edgeDistance > activationZone) {\n return \"scale(1)\";\n }\n\n const fadeInFactor = 1 - edgeDistance / activationZone;\n\n const centerDistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n if (centerDistance === 0) {\n return \"scale(1)\";\n }\n\n const normalizedX = deltaX / centerDistance;\n const normalizedY = deltaY / centerDistance;\n\n const stretchIntensity = Math.min(centerDistance / 300, 1) * props.elasticity * fadeInFactor;\n\n const scaleX = 1 + Math.abs(normalizedX) * stretchIntensity * 0.3 - Math.abs(normalizedY) * stretchIntensity * 0.15;\n\n const scaleY = 1 + Math.abs(normalizedY) * stretchIntensity * 0.3 - Math.abs(normalizedX) * stretchIntensity * 0.15;\n\n return `scaleX(${Math.max(0.8, scaleX)}) scaleY(${Math.max(0.8, scaleY)})`;\n});\n\nconst transformStyle = computed(() => {\n return `translate(calc(-50% + ${calculateElasticTranslation.value.x}px), calc(-50% + ${calculateElasticTranslation.value.y}px)) ${(isActive.value && Boolean(props.onClick)) ? \"scale(0.96)\" : calculateDirectionalScale.value}`;\n});\n\nconst baseStyle = computed(() => ({\n ...props.style,\n transform: transformStyle.value,\n transition: \"all ease-out 0.2s\",\n}));\n\nconst positionStyles = computed(() => ({\n position: props.style?.position || \"relative\",\n top: props.style?.top || \"50%\",\n left: props.style?.left || \"50%\",\n}));\n</script>\n\n<template>\n <GlassFilter\n :id=\"`liquid-glass-filter-${glassRef?.glassContainerRef?.id || 'default'}`\"\n :displacementScale=\"props.overLight ? props.displacementScale * 0.5 : props.displacementScale\"\n :aberrationIntensity=\"props.aberrationIntensity\"\n :width=\"glassSize.width\"\n :height=\"glassSize.height\"\n /> \n <!-- Over light effect -->\n <div\n :class=\"`bg-black transition-all duration-150 ease-in-out pointer-events-none ${props.overLight ? 'opacity-20' : 'opacity-0'}`\"\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n transition: baseStyle.transition,\n }\"\n />\n <div\n :class=\"`bg-black transition-all duration-150 ease-in-out pointer-events-none mix-blend-overlay ${props.overLight ? 'opacity-100' : 'opacity-0'}`\"\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n transition: baseStyle.transition,\n }\"\n />\n\n <GlassContainer\n ref=\"glassRef\"\n :class=\"props.className\"\n :style=\"baseStyle\"\n :cornerRadius=\"props.cornerRadius\"\n :displacementScale=\"props.overLight ? props.displacementScale * 0.5 : props.displacementScale\"\n :blurAmount=\"props.blurAmount\"\n :saturation=\"props.saturation\"\n :aberrationIntensity=\"props.aberrationIntensity\"\n :glassSize=\"glassSize\"\n :padding=\"props.padding\"\n :mouseOffset=\"mouseOffset\"\n @mouse-enter=\"isHovered = true\"\n @mouse-leave=\"isHovered = false\"\n @mouse-down=\"isActive = true\"\n @mouse-up=\"isActive = false\"\n :active=\"isActive\"\n :overLight=\"props.overLight\"\n @click=\"props.onClick && props.onClick()\"\n >\n <slot />\n </GlassContainer>\n\n <!-- Border layer 1 - extracted from glass container -->\n <span\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n transition: baseStyle.transition,\n pointerEvents: 'none',\n mixBlendMode: 'screen',\n opacity: 0.2,\n padding: '1.5px',\n WebkitMask: 'linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0)',\n WebkitMaskComposite: 'xor',\n maskComposite: 'exclude',\n boxShadow: '0 0 0 0.5px rgba(255, 255, 255, 0.5) inset, 0 1px 3px rgba(255, 255, 255, 0.25) inset, 0 1px 4px rgba(0, 0, 0, 0.35)',\n background: `linear-gradient(\n ${135 + mouseOffset.x * 1.2}deg,\n rgba(255, 255, 255, 0.0) 0%,\n rgba(255, 255, 255, ${0.12 + Math.abs(mouseOffset.x) * 0.008}) ${Math.max(10, 33 + mouseOffset.y * 0.3)}%,\n rgba(255, 255, 255, ${0.4 + Math.abs(mouseOffset.x) * 0.012}) ${Math.min(90, 66 + mouseOffset.y * 0.4)}%,\n rgba(255, 255, 255, 0.0) 100%\n )`,\n }\"\n />\n\n <!-- Border layer 2 - duplicate with mix-blend-overlay -->\n <span\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n transition: baseStyle.transition,\n pointerEvents: 'none',\n mixBlendMode: 'overlay',\n padding: '1.5px',\n WebkitMask: 'linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0)',\n WebkitMaskComposite: 'xor',\n maskComposite: 'exclude',\n boxShadow: '0 0 0 0.5px rgba(255, 255, 255, 0.5) inset, 0 1px 3px rgba(255, 255, 255, 0.25) inset, 0 1px 4px rgba(0, 0, 0, 0.35)',\n background: `linear-gradient(\n ${135 + mouseOffset.x * 1.2}deg,\n rgba(255, 255, 255, 0.0) 0%,\n rgba(255, 255, 255, ${0.32 + Math.abs(mouseOffset.x) * 0.008}) ${Math.max(10, 33 + mouseOffset.y * 0.3)}%,\n rgba(255, 255, 255, ${0.6 + Math.abs(mouseOffset.x) * 0.012}) ${Math.min(90, 66 + mouseOffset.y * 0.4)}%,\n rgba(255, 255, 255, 0.0) 100%\n )`,\n }\"\n />\n\n <!-- Hover effects -->\n <template v-if=\"Boolean(props.onClick)\">\n <div\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 1 + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n pointerEvents: 'none',\n transition: 'all 0.2s ease-out',\n opacity: isHovered || isActive ? 0.5 : 0,\n backgroundImage: 'radial-gradient(circle at 50% 0%, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 50%)',\n mixBlendMode: 'overlay',\n }\"\n />\n <div\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 1 + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n pointerEvents: 'none',\n transition: 'all 0.2s ease-out',\n opacity: isActive ? 0.5 : 0,\n backgroundImage: 'radial-gradient(circle at 50% 0%, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 80%)',\n mixBlendMode: 'overlay',\n }\"\n />\n <div\n :style=\"{\n ...baseStyle,\n height: glassSize.height + 'px',\n width: glassSize.width + 1 + 'px',\n borderRadius: `${props.cornerRadius}px`,\n position: positionStyles.position,\n top: positionStyles.top,\n left: positionStyles.left,\n pointerEvents: 'none',\n transition: 'all 0.2s ease-out',\n opacity: isHovered ? 0.4 : isActive ? 0.8 : 0,\n backgroundImage: 'radial-gradient(circle at 50% 0%, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%)',\n mixBlendMode: 'overlay',\n }\"\n />\n </template>\n</template>"],"names":["displacementMap","props","__props","edgeMaskOffset","computed","redDisplacementScale","greenDisplacementScale","blueDisplacementScale","gaussianBlurStdDeviation","feFuncATableValues","_createElementBlock","_createElementVNode","_unref","_hoisted_5","emit","__emit","filterId","backdropStyle","glassContainerRef","ref","__expose","_normalizeClass","_normalizeStyle","_createVNode","GlassFilter","_renderSlot","_ctx","glassRef","isHovered","isActive","glassSize","internalGlobalMousePos","internalMouseOffset","globalMousePos","mouseOffset","handleMouseMove","e","container","_a","rect","centerX","centerY","onMounted","updateGlassSize","watch","newGlobalMousePos","newMouseOffset","onUnmounted","calculateFadeInFactor","pillCenterX","pillCenterY","pillWidth","pillHeight","edgeDistanceX","edgeDistanceY","edgeDistance","activationZone","calculateElasticTranslation","fadeInFactor","calculateDirectionalScale","deltaX","deltaY","centerDistance","normalizedX","normalizedY","stretchIntensity","scaleX","scaleY","transformStyle","baseStyle","positionStyles","_b","_c","GlassContainer","_Fragment"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/assets/ts/utils.ts","../src/components/GlassFilter.vue","../src/components/GlassContainer.vue","../src/components/LiquidGlass.vue"],"sourcesContent":["export const displacementMap =\n \"data:image/jpeg;base64,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cUAUAkEkziomgGgkoxZGgxZFQFQlYnQHRdPfj/10KCSCKESCNiVkViPSLpD0h6I0Q0I0A2IoBWBIJIBKBIJoJIJ2R2J0JWBUJ0JUB0XTv479dFZDYiglYigkhEgjZFQjRFQjRFQjQigFYigHYigmgEgmglYlYnQlQlYlQHQlQnQ9P/kf1yVkNiNCNkNiVENiNiViNEViNkVCVgKCViViViSCViSCVgdCViVCViVCdgVCVCdD1D+U/XBWQ2I0I2Q2JUQ2I0JWQ0I2JUQ2JUI2JUI2J0JWJWJWA2R0BWJ0I2JUJ2BUJUJ0P//EABkQAQEBAQEBAAAAAAAAAAAAAAECABEDEP/aAAgBAQABAgB1atWrVq1atWrVq1atWrVq1atWrVq1atWrVq+OrVq1atWrVq1atWrVq1atWrVq1atWrVq1atXxVppppppdWrVq1atWrVq1NNNNNNNNNNNPVWmmmmms6tWrVq1atWpppppppppppppp6q0000uc51atWrVq1ammmmmmmmmmmmmt1Vpppc5znVq1atWrVqaaaaaaaaaaaaaeqtNLnOc51atWrVq1ammmmmmmmmmmmmnqrS5znOc6tWrVq16222mmmmmmlVppp6tKuc5znOrVq1a9TbbbbTTTTTSq000qtLnOc5zq1atWrW0222200000qqqtKqrnOc5zq1atTbbbbbbbbTTTSqqqqqq5znOc6tTTTbbbbbbbbTTTSqqqqrlVznOctNNNtttttttttNNNNKqqqrqznKqrTTTTbbbbbbbbbTTTSqqqqrqznOc5aaaabbbbbbbbbaaaaVVVVVdWc5znVq1NNttttttttttNNKqqqqudWc5znVq16tbbbbbbbbbbTTSqqqq5XVnOc6tWrVrb1tttttttttNNKqqqqrWrK5VWmmm2230bbbbbbaaaXOc5zlVa1KuVVppptttt9G22222mmlzlVznK6tWVVWmmmm2222222222mlznOc5znLWppVVWmmm22222229bTWrOc5znOcq1qaaVpWmm222222229erVqznOc5znKtatStK0rTbTTbbbberXr1as5znOc5aVpppppWlabaabbbb1ta9WrVnOc5znU0rTTTTTTTTTbTTbbbTWvVq1as5znOdTTStNNNNNNNNNtNNtttN6tWvVq1ZznOrU00rTTTTTTTTTTTTTbTWvVq1atWrOc6tTTTStNNNNNNNNNNtNNtNa9WrVq1Z1Z1NNNNNK1q1NNNNNNNNNNNtNatWrVq1atWrU00000rWrVq1atWrVq1alaaa1atWrVq1NNNammmmla1atWrVq1aterVq16tWrVnVqa1NK1qaaaVX/xAAWEAADAAAAAAAAAAAAAAAAAAAhgJD/2gAIAQEAAz8AaExf/8QAGhEBAQEBAQEBAAAAAAAAAAAAAQISEQADEP/aAAgBAgEBAgDx48ePHjx48ePHjx48ePHjx48ePHjx48ePHj86IiIiIiInjx48ePHjx48IiIiIj0oooooooooRERER73ve60UUUUUUVrWiiiiiihERERER73ve97ooooorRWiiiiihKERERER73ve973RRRRWtFFFFFFCIiIiIiPe973ve60UUVrRRRRRRQiIlCIiI973ve973pRRWiiiiiiiiiiiiiiihEe973ve973RRWtFFFFFFFFFFFFFFFFFFa13ve973WitaKKKKKKKKKKKKKKKKKK1rWtd1rutFa1oooooooooooosssooorWta1rWta1rRRRRRRRRRRZZZZZZZZZWta1rWta1rRRRRRRRRZZZZZZZZZZZZe9a1rWta1rWitaKLLLLLLLLLLLLLLLLL3rWta1rWtFbLLLLLLLLLLLLLLLLLLLL3vWta1rWita1ssssssss+hZZZZZZZZe961rWta0Vre97LLLLLLLLLLLPoWWWWWXrWta1oorWta3ssss+hZZZZ9Cyyyyyyyyiita1orWta1ve9llllllllllllllllFFa0VorWta1ve9llllllllllllllllllFFFaK1rWta1rWiyyyyyyyyyyyyiiiiiiitFFa1rWta1oosoosssssoooosoooorRRRWta1rWta0UUUUUWUUUUUUUUUUUVoooorWta1rWtaKKKKKKmiiiiiiiiiiiiiiitd73ve61oSiiipoqaKKKKKKKKKK0UUUVrve973vREREZoSihEooooorRRRRWtd73ve9EREREREoSiiiiitFllllla73ve9ERERERESiiiiiitH0PoWWWWVrXe96IiIiMoiJRRRRRRWjwlFFllllFFd6IiIiIlCUUUUUUUUUePHjx48ePCIiIiIiIiUUUUUUUUUUUePHjx48ePHjx48ePHjx48IiUUUUUUJRRRX//xAAWEQADAAAAAAAAAAAAAAAAAAABYJD/2gAIAQIBAz8AtEV7/8QAFxEBAQEBAAAAAAAAAAAAAAAAAAECEP/aAAgBAwEBAgCtNNNNNNNNNNNNNNNNNNNNNNNNNNNNNcrTTTTTTTTTTTTTTTTTTTTTTTTTTTTTXKrTTTTTTTU000000000000000000001FVpppppqampqaaaaaaaaaaaaaaaaaaaa5Vaaaaampqampqammmmmmmmmmmlaaaaaaiq0001NTU1NTU1NTTTTTTTTTTSqqtNNNcqtNNSyzU1LNTU1NTTTTTTTTTSqqq001ytNLLLLNTU1NTU1NTbbbTTTTTSqqq001ytNLLLLLNTU1NTU3NttttNNNNNKqq001KrSyyyyyzU1NTU3Nzc02220000qqqqrSqqyyyyyzU1NTU3Nzc3NttttNNNKqqqqqqssssss1NTU3Nzc3NzbbbbTTTSqqqqqqrLLLLLNTU1Nzc3Nzc22220000qqqqqqqqssss1NTU3Nzc3NzbbbbbTTSqqqqqqqqqqzU1NTc3Nzc3Nzbc22000qqqqqqqqqqqtTU3Nzc3Nzc3NtzbTTSqqqqrKqqqqqtNNzc23Nzc3Nzc3NTU1KqqqrKqqqqqtNNNNttzc3Nzc3NzU1NLLLLLKqqqqqqqq0022223Nzc3NzU1NSyyyyyyqqqqqqqrTTbbbbc3Nzc3NTU1LLLLLLKsqqqqqqrTTTTbbbc3Nzc1NTUsssssssqqqqqqrTTTTTbbbTc3NTU1NTUsssssqqqqqqqq0000222023NTU1NTUsssssqqqqqqqq000000003NTU1NTU1LLLLLNKrTSqqqqtNNNNNNtNNTU1NSzUssss00qq0qqqqrTTTTTTTTTU1NTUs1LLLNNNKrTTTSqqq00000000001NTU1LNTU0000qtNNNKqqqtNNNNNNNNTU1NTUs1NNNNNKss1NNNK00qtK0000001NNTU0s000000qq000001NKrStNNNNK1NNNNStNNNNNKqtNNNNNNNK0000000rU0000rTTTTTSq00000rTTTTTTTTTTTTTTTTStNNNNKr/xAAUEQEAAAAAAAAAAAAAAAAAAACg/9oACAEDAQM/AAAf/9k=\"\n","<script setup lang=\"ts\">\nimport { computed } from 'vue';\nimport { displacementMap } from '../assets/ts/utils';\n\nconst props = defineProps<{\n id: string;\n displacementScale: number;\n aberrationIntensity: number;\n width: number;\n height: number;\n}>();\n\nconst edgeMaskOffset = computed(() => {\n return Math.max(30, 80 - props.aberrationIntensity * 2);\n});\n\nconst redDisplacementScale = computed(() => {\n return props.displacementScale * -1;\n});\n\nconst greenDisplacementScale = computed(() => {\n return props.displacementScale * (-1 - props.aberrationIntensity * 0.05);\n});\n\nconst blueDisplacementScale = computed(() => {\n return props.displacementScale * (-1 - props.aberrationIntensity * 0.1);\n});\n\nconst gaussianBlurStdDeviation = computed(() => {\n return Math.max(0.1, 0.5 - props.aberrationIntensity * 0.1);\n});\n\nconst feFuncATableValues = computed(() => {\n return `0 ${props.aberrationIntensity * 0.05} 1`;\n});\n\n</script>\n\n<template>\n <svg :style=\"{ position: 'absolute', width: props.width + 'px', height: props.height + 'px' }\" aria-hidden=\"true\">\n <defs>\n <radialGradient :id=\"`${props.id}-edge-mask`\" cx=\"50%\" cy=\"50%\" r=\"50%\">\n <stop offset=\"0%\" stop-color=\"black\" stop-opacity=\"0\" />\n <stop :offset=\"`${edgeMaskOffset}%`\" stop-color=\"black\" stop-opacity=\"0\" />\n <stop offset=\"100%\" stop-color=\"white\" stop-opacity=\"1\" />\n </radialGradient>\n <filter :id=\"props.id\" x=\"-35%\" y=\"-35%\" width=\"170%\" height=\"170%\" color-interpolation-filters=\"sRGB\">\n <feImage id=\"feimage\" x=\"0\" y=\"0\" width=\"100%\" height=\"100%\" result=\"DISPLACEMENT_MAP\" :href=\"displacementMap\" preserveAspectRatio=\"xMidYMid slice\" />\n\n <!-- Create edge mask using the displacement map itself -->\n <feColorMatrix\n in=\"DISPLACEMENT_MAP\"\n type=\"matrix\"\n values=\"0.3 0.3 0.3 0 0\n 0.3 0.3 0.3 0 0\n 0.3 0.3 0.3 0 0\n 0 0 0 1 0\"\n result=\"EDGE_INTENSITY\"\n />\n <feComponentTransfer in=\"EDGE_INTENSITY\" result=\"EDGE_MASK\">\n <feFuncA type=\"discrete\" :tableValues=\"feFuncATableValues\" />\n </feComponentTransfer>\n\n <!-- Original undisplaced image for center -->\n <feOffset in=\"SourceGraphic\" dx=\"0\" dy=\"0\" result=\"CENTER_ORIGINAL\" />\n\n <!-- Red channel displacement with slight offset -->\n <feDisplacementMap in=\"SourceGraphic\" in2=\"DISPLACEMENT_MAP\" :scale=\"redDisplacementScale\" xChannelSelector=\"R\" yChannelSelector=\"B\" result=\"RED_DISPLACED\" />\n <feColorMatrix\n in=\"RED_DISPLACED\"\n type=\"matrix\"\n values=\"1 0 0 0 0\n 0 0 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0\"\n result=\"RED_CHANNEL\"\n />\n\n <!-- Green channel displacement -->\n <feDisplacementMap in=\"SourceGraphic\" in2=\"DISPLACEMENT_MAP\" :scale=\"greenDisplacementScale\" xChannelSelector=\"R\" yChannelSelector=\"B\" result=\"GREEN_DISPLACED\" />\n <feColorMatrix\n in=\"GREEN_DISPLACED\"\n type=\"matrix\"\n values=\"0 0 0 0 0\n 0 1 0 0 0\n 0 0 0 0 0\n 0 0 0 1 0\"\n result=\"GREEN_CHANNEL\"\n />\n\n <!-- Blue channel displacement with slight offset -->\n <feDisplacementMap in=\"SourceGraphic\" in2=\"DISPLACEMENT_MAP\" :scale=\"blueDisplacementScale\" xChannelSelector=\"R\" yChannelSelector=\"B\" result=\"BLUE_DISPLACED\" />\n <feColorMatrix\n in=\"BLUE_DISPLACED\"\n type=\"matrix\"\n values=\"0 0 0 0 0\n 0 0 0 0 0\n 0 0 1 0 0\n 0 0 0 1 0\"\n result=\"BLUE_CHANNEL\"\n />\n\n <!-- Combine all channels with screen blend mode for chromatic aberration -->\n <feBlend in=\"GREEN_CHANNEL\" in2=\"BLUE_CHANNEL\" mode=\"screen\" result=\"GB_COMBINED\" />\n <feBlend in=\"RED_CHANNEL\" in2=\"GB_COMBINED\" mode=\"screen\" result=\"RGB_COMBINED\" />\n\n <!-- Add slight blur to soften the aberration effect -->\n <feGaussianBlur in=\"RGB_COMBINED\" :stdDeviation=\"gaussianBlurStdDeviation\" result=\"ABERRATED_BLURRED\" />\n\n <!-- Apply edge mask to aberration effect -->\n <feComposite in=\"ABERRATED_BLURRED\" in2=\"EDGE_MASK\" operator=\"in\" result=\"EDGE_ABERRATION\" />\n\n <!-- Create inverted mask for center -->\n <feComponentTransfer in=\"EDGE_MASK\" result=\"INVERTED_MASK\">\n <feFuncA type=\"table\" tableValues=\"1 0\" />\n </feComponentTransfer>\n <feComposite in=\"CENTER_ORIGINAL\" in2=\"INVERTED_MASK\" operator=\"in\" result=\"CENTER_CLEAN\" />\n\n <!-- Combine edge aberration with clean center -->\n <feComposite in=\"EDGE_ABERRATION\" in2=\"CENTER_CLEAN\" operator=\"over\" />\n </filter>\n </defs>\n </svg>\n</template>\n","<script setup lang=\"ts\">\nimport { ref, computed } from 'vue';\nimport GlassFilter from './GlassFilter.vue';\n\ninterface GlassContainerProps {\n className?: string;\n style?: Record<string, any>;\n displacementScale?: number;\n blurAmount?: number;\n saturation?: number;\n aberrationIntensity?: number;\n mouseOffset?: { x: number; y: number };\n active?: boolean;\n overLight?: boolean;\n cornerRadius?: number;\n padding?: string;\n glassSize?: { width: number; height: number };\n onClick?: () => void;\n}\n\nconst props = withDefaults(defineProps<GlassContainerProps>(), {\n className: '',\n style: () => ({}),\n displacementScale: 25,\n blurAmount: 12,\n saturation: 180,\n aberrationIntensity: 2,\n mouseOffset: () => ({ x: 0, y: 0 }),\n active: false,\n overLight: false,\n cornerRadius: 999,\n padding: '24px 32px',\n glassSize: () => ({ width: 270, height: 69 }),\n});\n\nconst emit = defineEmits<{\n (e: 'mouse-enter'): void;\n (e: 'mouse-leave'): void;\n (e: 'mouse-down'): void;\n (e: 'mouse-up'): void;\n (e: 'click'): void;\n}>();\n\nconst filterId = `glass-filter-${Math.random().toString(36).substr(2, 9)}`;\n\nconst backdropStyle = computed(() => ({\n filter: `url(#${filterId})`,\n backdropFilter: `blur(${(props.overLight ? 20 : 4) + props.blurAmount * 32}px) saturate(${props.saturation}%)`,\n}));\n\n// Expose the ref for parent components to access\nconst glassContainerRef = ref<HTMLDivElement | null>(null);\ndefineExpose({ glassContainerRef });\n</script>\n\n<template>\n <div\n ref=\"glassContainerRef\"\n :class=\"`relative ${props.className} ${props.active ? 'active' : ''} ${Boolean(props.onClick) ? 'cursor-pointer' : ''}`\"\n :style=\"props.style\"\n @click=\"props.onClick && props.onClick()\"\n >\n <GlassFilter\n :id=\"filterId\"\n :displacementScale=\"props.displacementScale\"\n :aberrationIntensity=\"props.aberrationIntensity\"\n :width=\"props.glassSize.width\"\n :height=\"props.glassSize.height\"\n />\n\n <div\n class=\"glass\"\n :style=\"{\n borderRadius: `${props.cornerRadius}px`,\n position: 'relative',\n display: 'inline-flex',\n alignItems: 'center',\n gap: '24px',\n padding: props.padding,\n overflow: 'hidden',\n transition: 'all 0.2s ease-in-out',\n boxShadow: props.overLight ? '0px 16px 70px rgba(0, 0, 0, 0.75)' : '0px 12px 40px rgba(0, 0, 0, 0.25)',\n }\"\n @mouseenter=\"emit('mouse-enter')\"\n @mouseleave=\"emit('mouse-leave')\"\n @mousedown=\"emit('mouse-down')\"\n @mouseup=\"emit('mouse-up')\"\n >\n <!-- backdrop layer that gets wiggly -->\n <span\n class=\"glass__warp\"\n :style=\"{\n ...backdropStyle,\n position: 'absolute',\n inset: '0',\n }\"\n />\n\n <!-- user content stays sharp -->\n <div\n class=\"transition-all duration-150 ease-in-out text-white\"\n :style=\"{\n position: 'relative',\n zIndex: 1,\n font: '500 20px/1 system-ui',\n textShadow: props.overLight ? '0px 2px 12px rgba(0, 0, 0, 0)' : '0px 2px 12px rgba(0, 0, 0, 0.4)',\n }\"\n >\n <slot />\n </div>\n </div>\n </div>\n</template>\n\n<style scoped>\n/* Add any specific styles for this component here if needed */\n</style> ","<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onUnmounted } from 'vue';\nimport GlassContainer from './GlassContainer.vue';\nimport GlassFilter from './GlassFilter.vue';\n\ninterface LiquidGlassProps {\n displacementScale?: number;\n blurAmount?: number;\n saturation?: number;\n aberrationIntensity?: number;\n elasticity?: number;\n cornerRadius?: number;\n globalMousePos?: { x: number; y: number };\n mouseOffset?: { x: number; y: number };\n mouseContainer?: HTMLElement | null;\n className?: string;\n padding?: string;\n style?: Record<string, any>;\n overLight?: boolean;\n onClick?: () => void;\n mode?: \"standard\" | \"polar\" | \"prominent\" | \"shader\"\n}\n\nconst props = withDefaults(defineProps<LiquidGlassProps>(), {\n displacementScale: 70,\n blurAmount: 0.0625,\n saturation: 140,\n aberrationIntensity: 2,\n elasticity: 0.15,\n cornerRadius: 999,\n globalMousePos: undefined,\n mouseOffset: undefined,\n mouseContainer: null,\n className: '',\n padding: '24px 32px',\n overLight: false,\n onClick: () => ({}),\n mode: \"standard\"\n});\n\nconst glassRef = ref<InstanceType<typeof GlassContainer> | null>(null);\nconst isHovered = ref(false);\nconst isActive = ref(false);\nconst glassSize = ref({ width: 400, height: 400 });\nconst internalGlobalMousePos = ref({ x: 0, y: 0 });\nconst internalMouseOffset = ref({ x: 0, y: 0 });\n\nconst globalMousePos = computed(() => props.globalMousePos || internalGlobalMousePos.value);\nconst mouseOffset = computed(() => props.mouseOffset || internalMouseOffset.value);\n\nconst handleMouseMove = (e: MouseEvent) => {\n const container = props.mouseContainer || glassRef.value?.glassContainerRef;\n if (!container) return;\n\n const rect = container.getBoundingClientRect();\n const centerX = rect.left + rect.width / 2;\n const centerY = rect.top + rect.height / 2;\n\n internalMouseOffset.value = {\n x: ((e.clientX - centerX) / rect.width) * 100,\n y: ((e.clientY - centerY) / rect.height) * 100,\n };\n\n internalGlobalMousePos.value = {\n x: e.clientX,\n y: e.clientY,\n };\n};\n\nonMounted(() => {\n const updateGlassSize = () => {\n if (glassRef.value?.glassContainerRef) {\n const rect = glassRef.value.glassContainerRef.getBoundingClientRect();\n glassSize.value = { width: rect.width, height: rect.height };\n }\n };\n\n updateGlassSize();\n window.addEventListener('resize', updateGlassSize);\n\n return () => window.removeEventListener('resize', updateGlassSize);\n});\n\nwatch([() => props.globalMousePos, () => props.mouseOffset, glassRef], ([newGlobalMousePos, newMouseOffset]) => {\n if (newGlobalMousePos && newMouseOffset) {\n return;\n }\n\n const container = props.mouseContainer || glassRef.value?.glassContainerRef;\n if (!container) return;\n\n container.addEventListener('mousemove', handleMouseMove);\n\n}, { immediate: true });\n\nonUnmounted(() => {\n // container.removeEventListener('mousemove', handleMouseMove);\n});\n\nconst calculateFadeInFactor = computed(() => {\n if (!globalMousePos.value.x || !globalMousePos.value.y || !glassRef.value?.glassContainerRef) {\n return 0;\n }\n\n const rect = glassRef.value.glassContainerRef.getBoundingClientRect();\n const pillCenterX = rect.left + rect.width / 2;\n const pillCenterY = rect.top + rect.height / 2;\n const pillWidth = glassSize.value.width;\n const pillHeight = glassSize.value.height;\n\n const edgeDistanceX = Math.max(0, Math.abs(globalMousePos.value.x - pillCenterX) - pillWidth / 2);\n const edgeDistanceY = Math.max(0, Math.abs(globalMousePos.value.y - pillCenterY) - pillHeight / 2);\n const edgeDistance = Math.sqrt(edgeDistanceX * edgeDistanceX + edgeDistanceY * edgeDistanceY);\n\n const activationZone = 200;\n return edgeDistance > activationZone ? 0 : 1 - edgeDistance / activationZone;\n});\n\nconst calculateElasticTranslation = computed(() => {\n if (!glassRef.value?.glassContainerRef) {\n return { x: 0, y: 0 };\n }\n\n const fadeInFactor = calculateFadeInFactor.value;\n const rect = glassRef.value.glassContainerRef.getBoundingClientRect();\n const pillCenterX = rect.left + rect.width / 2;\n const pillCenterY = rect.top + rect.height / 2;\n\n return {\n x: (globalMousePos.value.x - pillCenterX) * props.elasticity * 0.1 * fadeInFactor,\n y: (globalMousePos.value.y - pillCenterY) * props.elasticity * 0.1 * fadeInFactor,\n };\n});\n\nconst calculateDirectionalScale = computed(() => {\n if (!globalMousePos.value.x || !globalMousePos.value.y || !glassRef.value?.glassContainerRef) {\n return \"scale(1)\";\n }\n\n const rect = glassRef.value.glassContainerRef.getBoundingClientRect();\n const pillCenterX = rect.left + rect.width / 2;\n const pillCenterY = rect.top + rect.height / 2;\n const pillWidth = glassSize.value.width;\n const pillHeight = glassSize.value.height;\n\n const deltaX = globalMousePos.value.x - pillCenterX;\n const deltaY = globalMousePos.value.y - pillCenterY;\n\n const edgeDistanceX = Math.max(0, Math.abs(deltaX) - pillWidth / 2);\n const edgeDistanceY = Math.max(0, Math.abs(deltaY) - pillHeight / 2);\n const edgeDistance = Math.sqrt(edgeDistanceX * edgeDistanceX + edgeDistanceY * edgeDistanceY);\n\n const activationZone = 200;\n\n if (edgeDistance > activationZone) {\n return \"scale(1)\";\n }\n\n const fadeInFactor = 1 - edgeDistance / activationZone;\n\n const centerDistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);\n if (centerDistance === 0) {\n return \"scale(1)\";\n }\n\n const normalizedX = deltaX / centerDistance;\n const normalizedY = deltaY / centerDistance;\n\n const stretchIntensity = Math.min(centerDistance / 300, 1) * props.elasticity * fadeInFactor;\n\n const scaleX = 1 + Math.abs(normalizedX) * stretchIntensity * 0.3 - Math.abs(normalizedY) * stretchIntensity * 0.15;\n\n const scaleY = 1 + Math.abs(normalizedY) * stretchIntensity * 0.3 - Math.abs(normalizedX) * stretchIntensity * 0.15;\n\n return `scaleX(${Math.max(0.8, scaleX)}) scaleY(${Math.max(0.8, scaleY)})`;\n});\n\nconst transformStyle = computed(() => {\n return `translate(calc(-50% + ${calculateElasticTranslation.value.x}px), calc(-50% + ${calculateElasticTranslation.value.y}px)) ${(isActive.value && Boolean(props.onClick)) ? \"scale(0.96)\" : calculateDirectionalScale.value}`;\n});\n\nconst baseStyle = computed(() => ({\n ...props.style,\n transform: transformStyle.value,\n transition: \"all ease-out 0.2s\",\n}));\n\nconst positionStyles = computed(() => ({\n position: props.style?.position || \"relative\",\n top: props.style?.top || \"50%\",\n left: props.style?.left || \"50%\",\n}));\n</script>\n\n<template>\n <GlassFilter\n :id=\"`liquid-glass-filter-${glassRef?.glassContainerRef?.id || 'default'}`\"\n :displacementScale=\"props.overLight ? props.displacementScale * 0.5 : props.displacementScale\"\n :aberrationIntensity=\"props.aberrationIntensity\"\n :width=\"glassSize.width\"\n :height=\"glassSize.height\"\n /> \n <!-- Over light effect -->\n <div\n :class=\"`bg-black transition-all duration-150 ease-in-out pointer-events-none ${props.overLight ? 'opacity-20' : 'opacity-0'}`\"\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n transition: baseStyle.transition,\n }\"\n />\n <div\n :class=\"`bg-black transition-all duration-150 ease-in-out pointer-events-none mix-blend-overlay ${props.overLight ? 'opacity-100' : 'opacity-0'}`\"\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n transition: baseStyle.transition,\n }\"\n />\n\n <GlassContainer\n ref=\"glassRef\"\n :class=\"props.className\"\n :style=\"baseStyle\"\n :cornerRadius=\"props.cornerRadius\"\n :displacementScale=\"props.overLight ? props.displacementScale * 0.5 : props.displacementScale\"\n :blurAmount=\"props.blurAmount\"\n :saturation=\"props.saturation\"\n :aberrationIntensity=\"props.aberrationIntensity\"\n :glassSize=\"glassSize\"\n :padding=\"props.padding\"\n :mouseOffset=\"mouseOffset\"\n @mouse-enter=\"isHovered = true\"\n @mouse-leave=\"isHovered = false\"\n @mouse-down=\"isActive = true\"\n @mouse-up=\"isActive = false\"\n :active=\"isActive\"\n :overLight=\"props.overLight\"\n @click=\"props.onClick && props.onClick()\"\n >\n <slot />\n </GlassContainer>\n\n <!-- Border layer 1 - extracted from glass container -->\n <span\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n transition: baseStyle.transition,\n pointerEvents: 'none',\n mixBlendMode: 'screen',\n opacity: 0.2,\n padding: '1.5px',\n WebkitMask: 'linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0)',\n WebkitMaskComposite: 'xor',\n maskComposite: 'exclude',\n boxShadow: '0 0 0 0.5px rgba(255, 255, 255, 0.5) inset, 0 1px 3px rgba(255, 255, 255, 0.25) inset, 0 1px 4px rgba(0, 0, 0, 0.35)',\n background: `linear-gradient(\n ${135 + mouseOffset.x * 1.2}deg,\n rgba(255, 255, 255, 0.0) 0%,\n rgba(255, 255, 255, ${0.12 + Math.abs(mouseOffset.x) * 0.008}) ${Math.max(10, 33 + mouseOffset.y * 0.3)}%,\n rgba(255, 255, 255, ${0.4 + Math.abs(mouseOffset.x) * 0.012}) ${Math.min(90, 66 + mouseOffset.y * 0.4)}%,\n rgba(255, 255, 255, 0.0) 100%\n )`,\n }\"\n />\n\n <!-- Border layer 2 - duplicate with mix-blend-overlay -->\n <span\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n transition: baseStyle.transition,\n pointerEvents: 'none',\n mixBlendMode: 'overlay',\n padding: '1.5px',\n WebkitMask: 'linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0)',\n WebkitMaskComposite: 'xor',\n maskComposite: 'exclude',\n boxShadow: '0 0 0 0.5px rgba(255, 255, 255, 0.5) inset, 0 1px 3px rgba(255, 255, 255, 0.25) inset, 0 1px 4px rgba(0, 0, 0, 0.35)',\n background: `linear-gradient(\n ${135 + mouseOffset.x * 1.2}deg,\n rgba(255, 255, 255, 0.0) 0%,\n rgba(255, 255, 255, ${0.32 + Math.abs(mouseOffset.x) * 0.008}) ${Math.max(10, 33 + mouseOffset.y * 0.3)}%,\n rgba(255, 255, 255, ${0.6 + Math.abs(mouseOffset.x) * 0.012}) ${Math.min(90, 66 + mouseOffset.y * 0.4)}%,\n rgba(255, 255, 255, 0.0) 100%\n )`,\n }\"\n />\n\n <!-- Hover effects -->\n <template v-if=\"Boolean(props.onClick)\">\n <div\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 1 + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n pointerEvents: 'none',\n transition: 'all 0.2s ease-out',\n opacity: isHovered || isActive ? 0.5 : 0,\n backgroundImage: 'radial-gradient(circle at 50% 0%, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 50%)',\n mixBlendMode: 'overlay',\n }\"\n />\n <div\n :style=\"{\n ...positionStyles,\n height: glassSize.height + 'px',\n width: glassSize.width + 1 + 'px',\n borderRadius: `${props.cornerRadius}px`,\n transform: transformStyle,\n pointerEvents: 'none',\n transition: 'all 0.2s ease-out',\n opacity: isActive ? 0.5 : 0,\n backgroundImage: 'radial-gradient(circle at 50% 0%, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 80%)',\n mixBlendMode: 'overlay',\n }\"\n />\n <div\n :style=\"{\n ...baseStyle,\n height: glassSize.height + 'px',\n width: glassSize.width + 1 + 'px',\n borderRadius: `${props.cornerRadius}px`,\n position: positionStyles.position,\n top: positionStyles.top,\n left: positionStyles.left,\n pointerEvents: 'none',\n transition: 'all 0.2s ease-out',\n opacity: isHovered ? 0.4 : isActive ? 0.8 : 0,\n backgroundImage: 'radial-gradient(circle at 50% 0%, rgba(255, 255, 255, 1) 0%, rgba(255, 255, 255, 0) 100%)',\n mixBlendMode: 'overlay',\n }\"\n />\n </template>\n</template>"],"names":["displacementMap","props","__props","edgeMaskOffset","computed","redDisplacementScale","greenDisplacementScale","blueDisplacementScale","gaussianBlurStdDeviation","feFuncATableValues","_createElementBlock","_createElementVNode","_unref","_hoisted_5","emit","__emit","filterId","backdropStyle","glassContainerRef","ref","__expose","_normalizeClass","_normalizeStyle","_createVNode","GlassFilter","_renderSlot","_ctx","glassRef","isHovered","isActive","glassSize","internalGlobalMousePos","internalMouseOffset","globalMousePos","mouseOffset","handleMouseMove","e","container","_a","rect","centerX","centerY","onMounted","updateGlassSize","watch","newGlobalMousePos","newMouseOffset","onUnmounted","calculateFadeInFactor","pillCenterX","pillCenterY","pillWidth","pillHeight","edgeDistanceX","edgeDistanceY","edgeDistance","activationZone","calculateElasticTranslation","fadeInFactor","calculateDirectionalScale","deltaX","deltaY","centerDistance","normalizedX","normalizedY","stretchIntensity","scaleX","scaleY","transformStyle","baseStyle","positionStyles","_b","_c","GlassContainer","_Fragment"],"mappings":"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"}
|
@@ -19,6 +19,7 @@ interface LiquidGlassProps {
|
|
19
19
|
style?: Record<string, any>;
|
20
20
|
overLight?: boolean;
|
21
21
|
onClick?: () => void;
|
22
|
+
mode?: "standard" | "polar" | "prominent" | "shader";
|
22
23
|
}
|
23
24
|
declare var __VLS_17: {};
|
24
25
|
type __VLS_Slots = {} & {
|
@@ -28,6 +29,7 @@ declare const __VLS_component: import("vue").DefineComponent<LiquidGlassProps, {
|
|
28
29
|
displacementScale: number;
|
29
30
|
aberrationIntensity: number;
|
30
31
|
onClick: () => void;
|
32
|
+
mode: "standard" | "polar" | "prominent" | "shader";
|
31
33
|
className: string;
|
32
34
|
blurAmount: number;
|
33
35
|
saturation: number;
|