lenis 1.0.45-dev.1 → 1.0.46-dev.0
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/README.md +2 -2
- package/dist/lenis-react.mjs +1 -1
- package/dist/lenis-react.mjs.map +1 -1
- package/dist/lenis-snap.d.ts +30 -0
- package/dist/lenis-snap.js +287 -0
- package/dist/lenis-snap.js.map +1 -0
- package/dist/lenis-snap.min.js +2 -0
- package/dist/lenis-snap.min.js.map +1 -0
- package/dist/lenis-snap.mjs +2 -0
- package/dist/lenis-snap.mjs.map +1 -0
- package/dist/lenis.d.ts +20 -10
- package/dist/lenis.js +708 -742
- package/dist/lenis.js.map +1 -1
- package/dist/lenis.min.js +1 -1
- package/dist/lenis.min.js.map +1 -1
- package/dist/lenis.mjs +1 -1
- package/dist/lenis.mjs.map +1 -1
- package/package.json +9 -5
package/dist/lenis.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lenis.js","sources":["../../../node_modules/.pnpm/@rollup+plugin-typescript@11.1.6_rollup@4.14.3_tslib@2.6.2_typescript@5.4.5/node_modules/tslib/tslib.es6.js","../src/maths.js","../src/animate.js","../src/debounce.js","../src/dimensions.js","../src/emitter.js","../src/virtual-scroll.js","../src/index.ts"],"sourcesContent":["/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","// Clamp a value between a minimum and maximum value\r\nexport function clamp(min, input, max) {\r\n return Math.max(min, Math.min(input, max))\r\n}\r\n\r\n// Truncate a floating-point number to a specified number of decimal places\r\nexport function truncate(value, decimals = 0) {\r\n return parseFloat(value.toFixed(decimals))\r\n}\r\n\r\n// Linearly interpolate between two values using an amount (0 <= t <= 1)\r\nexport function lerp(x, y, t) {\r\n return (1 - t) * x + t * y\r\n}\r\n\r\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\r\nexport function damp(x, y, lambda, dt) {\r\n return lerp(x, y, 1 - Math.exp(-lambda * dt))\r\n}\r\n\r\n// Calculate the modulo of the dividend and divisor while keeping the result within the same sign as the divisor\r\n// https://anguscroll.com/just/just-modulo\r\nexport function modulo(n, d) {\r\n return ((n % d) + d) % d\r\n}\r\n","import { clamp, damp } from './maths'\r\n\r\n// Animate class to handle value animations with lerping or easing\r\nexport class Animate {\r\n // Advance the animation by the given delta time\r\n advance(deltaTime) {\r\n if (!this.isRunning) return\r\n\r\n let completed = false\r\n\r\n if (this.lerp) {\r\n this.value = damp(this.value, this.to, this.lerp * 60, deltaTime)\r\n if (Math.round(this.value) === this.to) {\r\n this.value = this.to\r\n completed = true\r\n }\r\n } else {\r\n this.currentTime += deltaTime\r\n const linearProgress = clamp(0, this.currentTime / this.duration, 1)\r\n\r\n completed = linearProgress >= 1\r\n const easedProgress = completed ? 1 : this.easing(linearProgress)\r\n this.value = this.from + (this.to - this.from) * easedProgress\r\n }\r\n\r\n // Call the onUpdate callback with the current value and completed status\r\n this.onUpdate?.(this.value, completed)\r\n\r\n if (completed) {\r\n this.stop()\r\n }\r\n }\r\n\r\n // Stop the animation\r\n stop() {\r\n this.isRunning = false\r\n }\r\n\r\n // Set up the animation from a starting value to an ending value\r\n // with optional parameters for lerping, duration, easing, and onUpdate callback\r\n fromTo(\r\n from,\r\n to,\r\n { lerp = 0.1, duration = 1, easing = (t) => t, onStart, onUpdate }\r\n ) {\r\n this.from = this.value = from\r\n this.to = to\r\n this.lerp = lerp\r\n this.duration = duration\r\n this.easing = easing\r\n this.currentTime = 0\r\n this.isRunning = true\r\n\r\n onStart?.()\r\n this.onUpdate = onUpdate\r\n }\r\n}\r\n","export function debounce(callback, delay) {\r\n let timer\r\n return function () {\r\n let args = arguments\r\n let context = this\r\n clearTimeout(timer)\r\n timer = setTimeout(function () {\r\n callback.apply(context, args)\r\n }, delay)\r\n }\r\n}\r\n","import { debounce } from './debounce'\r\n\r\nexport class Dimensions {\r\n constructor({\r\n wrapper,\r\n content,\r\n autoResize = true,\r\n debounce: debounceValue = 250,\r\n } = {}) {\r\n this.wrapper = wrapper\r\n this.content = content\r\n\r\n if (autoResize) {\r\n this.debouncedResize = debounce(this.resize, debounceValue)\r\n\r\n if (this.wrapper === window) {\r\n window.addEventListener('resize', this.debouncedResize, false)\r\n } else {\r\n this.wrapperResizeObserver = new ResizeObserver(this.debouncedResize)\r\n this.wrapperResizeObserver.observe(this.wrapper)\r\n }\r\n\r\n this.contentResizeObserver = new ResizeObserver(this.debouncedResize)\r\n this.contentResizeObserver.observe(this.content)\r\n }\r\n\r\n this.resize()\r\n }\r\n\r\n destroy() {\r\n this.wrapperResizeObserver?.disconnect()\r\n this.contentResizeObserver?.disconnect()\r\n window.removeEventListener('resize', this.debouncedResize, false)\r\n }\r\n\r\n resize = () => {\r\n this.onWrapperResize()\r\n this.onContentResize()\r\n }\r\n\r\n onWrapperResize = () => {\r\n if (this.wrapper === window) {\r\n this.width = window.innerWidth\r\n this.height = window.innerHeight\r\n } else {\r\n this.width = this.wrapper.clientWidth\r\n this.height = this.wrapper.clientHeight\r\n }\r\n }\r\n\r\n onContentResize = () => {\r\n if (this.wrapper === window) {\r\n this.scrollHeight = this.content.scrollHeight\r\n this.scrollWidth = this.content.scrollWidth\r\n } else {\r\n this.scrollHeight = this.wrapper.scrollHeight\r\n this.scrollWidth = this.wrapper.scrollWidth\r\n }\r\n }\r\n\r\n get limit() {\r\n return {\r\n x: this.scrollWidth - this.width,\r\n y: this.scrollHeight - this.height,\r\n }\r\n }\r\n}\r\n","export class Emitter {\r\n constructor() {\r\n this.events = {}\r\n }\r\n\r\n emit(event, ...args) {\r\n let callbacks = this.events[event] || []\r\n for (let i = 0, length = callbacks.length; i < length; i++) {\r\n callbacks[i](...args)\r\n }\r\n }\r\n\r\n on(event, cb) {\r\n // Add the callback to the event's callback list, or create a new list with the callback\r\n this.events[event]?.push(cb) || (this.events[event] = [cb])\r\n\r\n // Return an unsubscribe function\r\n return () => {\r\n this.events[event] = this.events[event]?.filter((i) => cb !== i)\r\n }\r\n }\r\n\r\n off(event, callback) {\r\n this.events[event] = this.events[event]?.filter((i) => callback !== i)\r\n }\r\n\r\n destroy() {\r\n this.events = {}\r\n }\r\n}\r\n","import { Emitter } from './emitter'\r\n\r\nconst LINE_HEIGHT = 100 / 6\r\n\r\nexport class VirtualScroll {\r\n constructor(element, { wheelMultiplier = 1, touchMultiplier = 1 }) {\r\n this.element = element\r\n this.wheelMultiplier = wheelMultiplier\r\n this.touchMultiplier = touchMultiplier\r\n\r\n this.touchStart = {\r\n x: null,\r\n y: null,\r\n }\r\n\r\n this.emitter = new Emitter()\r\n window.addEventListener('resize', this.onWindowResize, false)\r\n this.onWindowResize()\r\n\r\n this.element.addEventListener('wheel', this.onWheel, { passive: false })\r\n this.element.addEventListener('touchstart', this.onTouchStart, {\r\n passive: false,\r\n })\r\n this.element.addEventListener('touchmove', this.onTouchMove, {\r\n passive: false,\r\n })\r\n this.element.addEventListener('touchend', this.onTouchEnd, {\r\n passive: false,\r\n })\r\n }\r\n\r\n // Add an event listener for the given event and callback\r\n on(event, callback) {\r\n return this.emitter.on(event, callback)\r\n }\r\n\r\n // Remove all event listeners and clean up\r\n destroy() {\r\n this.emitter.destroy()\r\n\r\n window.removeEventListener('resize', this.onWindowResize, false)\r\n\r\n this.element.removeEventListener('wheel', this.onWheel, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchstart', this.onTouchStart, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchmove', this.onTouchMove, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchend', this.onTouchEnd, {\r\n passive: false,\r\n })\r\n }\r\n\r\n // Event handler for 'touchstart' event\r\n onTouchStart = (event) => {\r\n const { clientX, clientY } = event.targetTouches\r\n ? event.targetTouches[0]\r\n : event\r\n\r\n this.touchStart.x = clientX\r\n this.touchStart.y = clientY\r\n\r\n this.lastDelta = {\r\n x: 0,\r\n y: 0,\r\n }\r\n\r\n this.emitter.emit('scroll', {\r\n deltaX: 0,\r\n deltaY: 0,\r\n event,\r\n })\r\n }\r\n\r\n // Event handler for 'touchmove' event\r\n onTouchMove = (event) => {\r\n const { clientX, clientY } = event.targetTouches\r\n ? event.targetTouches[0]\r\n : event\r\n\r\n const deltaX = -(clientX - this.touchStart.x) * this.touchMultiplier\r\n const deltaY = -(clientY - this.touchStart.y) * this.touchMultiplier\r\n\r\n this.touchStart.x = clientX\r\n this.touchStart.y = clientY\r\n\r\n this.lastDelta = {\r\n x: deltaX,\r\n y: deltaY,\r\n }\r\n\r\n this.emitter.emit('scroll', {\r\n deltaX,\r\n deltaY,\r\n event,\r\n })\r\n }\r\n\r\n onTouchEnd = (event) => {\r\n this.emitter.emit('scroll', {\r\n deltaX: this.lastDelta.x,\r\n deltaY: this.lastDelta.y,\r\n event,\r\n })\r\n }\r\n\r\n // Event handler for 'wheel' event\r\n onWheel = (event) => {\r\n let { deltaX, deltaY, deltaMode } = event\r\n\r\n const multiplierX =\r\n deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.windowWidth : 1\r\n const multiplierY =\r\n deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.windowHeight : 1\r\n\r\n deltaX *= multiplierX\r\n deltaY *= multiplierY\r\n\r\n deltaX *= this.wheelMultiplier\r\n deltaY *= this.wheelMultiplier\r\n\r\n this.emitter.emit('scroll', { deltaX, deltaY, event })\r\n }\r\n\r\n onWindowResize = () => {\r\n this.windowWidth = window.innerWidth\r\n this.windowHeight = window.innerHeight\r\n }\r\n}\r\n","import { version } from '../../../package.json'\r\nimport { Animate } from './animate'\r\nimport { Dimensions } from './dimensions'\r\nimport { Emitter } from './emitter'\r\nimport { clamp, modulo } from './maths'\r\nimport { VirtualScroll } from './virtual-scroll'\r\n\r\n// Technical explanation\r\n// - listen to 'wheel' events\r\n// - prevent 'wheel' event to prevent scroll\r\n// - normalize wheel delta\r\n// - add delta to targetScroll\r\n// - animate scroll to targetScroll (smooth context)\r\n// - if animation is not running, listen to 'scroll' events (native context)\r\n\r\ntype EasingFunction = (t: number) => number\r\ntype Orientation = 'vertical' | 'horizontal'\r\ntype GestureOrientation = 'vertical' | 'horizontal' | 'both'\r\n\r\nexport type LenisOptions = {\r\n wrapper?: Window | HTMLElement\r\n content?: HTMLElement\r\n wheelEventsTarget?: Window | HTMLElement\r\n eventsTarget?: Window | HTMLElement\r\n smoothWheel?: boolean\r\n syncTouch?: boolean\r\n syncTouchLerp?: number\r\n touchInertiaMultiplier?: number\r\n duration?: number\r\n easing?: EasingFunction\r\n lerp?: number\r\n infinite?: boolean\r\n orientation?: Orientation\r\n gestureOrientation?: GestureOrientation\r\n touchMultiplier?: number\r\n wheelMultiplier?: number\r\n autoResize?: boolean\r\n __experimental__naiveDimensions?: boolean\r\n}\r\n\r\nexport default class Lenis {\r\n __isSmooth: boolean = false // true if scroll should be animated\r\n __isScrolling: boolean = false // true when scroll is animating\r\n __isStopped: boolean = false // true if user should not be able to scroll - enable/disable programmatically\r\n __isLocked: boolean = false // same as isStopped but enabled/disabled when scroll reaches target\r\n\r\n constructor({\r\n wrapper = window,\r\n content = document.documentElement,\r\n wheelEventsTarget = wrapper, // deprecated\r\n eventsTarget = wheelEventsTarget,\r\n smoothWheel = true,\r\n syncTouch = false,\r\n syncTouchLerp = 0.075,\r\n touchInertiaMultiplier = 35,\r\n duration, // in seconds\r\n easing = (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),\r\n lerp = !duration && 0.1,\r\n infinite = false,\r\n orientation = 'vertical', // vertical, horizontal\r\n gestureOrientation = 'vertical', // vertical, horizontal, both\r\n touchMultiplier = 1,\r\n wheelMultiplier = 1,\r\n autoResize = true,\r\n __experimental__naiveDimensions = false,\r\n }: LenisOptions = {}) {\r\n window.lenisVersion = version\r\n\r\n // if wrapper is html or body, fallback to window\r\n if (wrapper === document.documentElement || wrapper === document.body) {\r\n wrapper = window\r\n }\r\n\r\n this.options = {\r\n wrapper,\r\n content,\r\n wheelEventsTarget,\r\n eventsTarget,\r\n smoothWheel,\r\n syncTouch,\r\n syncTouchLerp,\r\n touchInertiaMultiplier,\r\n duration,\r\n easing,\r\n lerp,\r\n infinite,\r\n gestureOrientation,\r\n orientation,\r\n touchMultiplier,\r\n wheelMultiplier,\r\n autoResize,\r\n __experimental__naiveDimensions,\r\n }\r\n\r\n this.animate = new Animate()\r\n this.emitter = new Emitter()\r\n this.dimensions = new Dimensions({ wrapper, content, autoResize })\r\n this.toggleClassName('lenis', true)\r\n\r\n this.velocity = 0\r\n this.isLocked = false\r\n this.isStopped = false\r\n this.isSmooth = syncTouch || smoothWheel\r\n this.isScrolling = false\r\n this.targetScroll = this.animatedScroll = this.actualScroll\r\n\r\n this.options.wrapper.addEventListener('scroll', this.onNativeScroll, false)\r\n\r\n this.virtualScroll = new VirtualScroll(eventsTarget, {\r\n touchMultiplier,\r\n wheelMultiplier,\r\n })\r\n this.virtualScroll.on('scroll', this.onVirtualScroll)\r\n }\r\n\r\n destroy() {\r\n this.emitter.destroy()\r\n\r\n this.options.wrapper.removeEventListener(\r\n 'scroll',\r\n this.onNativeScroll,\r\n false\r\n )\r\n\r\n this.virtualScroll.destroy()\r\n this.dimensions.destroy()\r\n\r\n this.toggleClassName('lenis', false)\r\n this.toggleClassName('lenis-smooth', false)\r\n this.toggleClassName('lenis-scrolling', false)\r\n this.toggleClassName('lenis-stopped', false)\r\n this.toggleClassName('lenis-locked', false)\r\n }\r\n\r\n on(event: string, callback: Function) {\r\n return this.emitter.on(event, callback)\r\n }\r\n\r\n off(event: string, callback: Function) {\r\n return this.emitter.off(event, callback)\r\n }\r\n\r\n private setScroll(scroll) {\r\n // apply scroll value immediately\r\n if (this.isHorizontal) {\r\n this.rootElement.scrollLeft = scroll\r\n } else {\r\n this.rootElement.scrollTop = scroll\r\n }\r\n }\r\n\r\n private onVirtualScroll = ({ deltaX, deltaY, event }) => {\r\n // keep zoom feature\r\n if (event.ctrlKey) return\r\n\r\n const isTouch = event.type.includes('touch')\r\n const isWheel = event.type.includes('wheel')\r\n\r\n const isTapToStop =\r\n this.options.syncTouch &&\r\n isTouch &&\r\n event.type === 'touchstart' &&\r\n !this.isStopped &&\r\n !this.isLocked\r\n\r\n if (isTapToStop) {\r\n this.reset()\r\n return\r\n }\r\n\r\n const isClick = deltaX === 0 && deltaY === 0 // click event\r\n\r\n // const isPullToRefresh =\r\n // this.options.gestureOrientation === 'vertical' &&\r\n // this.scroll === 0 &&\r\n // !this.options.infinite &&\r\n // deltaY <= 5 // touch pull to refresh, not reliable yet\r\n\r\n const isUnknownGesture =\r\n (this.options.gestureOrientation === 'vertical' && deltaY === 0) ||\r\n (this.options.gestureOrientation === 'horizontal' && deltaX === 0)\r\n\r\n if (isClick || isUnknownGesture) {\r\n // console.log('prevent')\r\n return\r\n }\r\n\r\n // catch if scrolling on nested scroll elements\r\n let composedPath = event.composedPath()\r\n composedPath = composedPath.slice(0, composedPath.indexOf(this.rootElement)) // remove parents elements\r\n\r\n if (\r\n !!composedPath.find(\r\n (node) =>\r\n node.hasAttribute?.('data-lenis-prevent') ||\r\n (isTouch && node.hasAttribute?.('data-lenis-prevent-touch')) ||\r\n (isWheel && node.hasAttribute?.('data-lenis-prevent-wheel')) ||\r\n (node.classList?.contains('lenis') &&\r\n !node.classList?.contains('lenis-stopped')) // nested lenis instance\r\n )\r\n )\r\n return\r\n\r\n if (this.isStopped || this.isLocked) {\r\n event.preventDefault() // this will stop forwarding the event to the parent, this is problematic\r\n return\r\n }\r\n\r\n this.isSmooth =\r\n (this.options.syncTouch && isTouch) ||\r\n (this.options.smoothWheel && isWheel)\r\n\r\n if (!this.isSmooth) {\r\n this.isScrolling = false\r\n this.animate.stop()\r\n return\r\n }\r\n\r\n event.preventDefault()\r\n\r\n let delta = deltaY\r\n if (this.options.gestureOrientation === 'both') {\r\n delta = Math.abs(deltaY) > Math.abs(deltaX) ? deltaY : deltaX\r\n } else if (this.options.gestureOrientation === 'horizontal') {\r\n delta = deltaX\r\n }\r\n\r\n const syncTouch = isTouch && this.options.syncTouch\r\n const isTouchEnd = isTouch && event.type === 'touchend'\r\n\r\n const hasTouchInertia = isTouchEnd && Math.abs(delta) > 5\r\n\r\n if (hasTouchInertia) {\r\n delta = this.velocity * this.options.touchInertiaMultiplier\r\n }\r\n\r\n this.scrollTo(this.targetScroll + delta, {\r\n programmatic: false,\r\n ...(syncTouch\r\n ? {\r\n lerp: hasTouchInertia ? this.options.syncTouchLerp : 1,\r\n }\r\n : {\r\n lerp: this.options.lerp,\r\n duration: this.options.duration,\r\n easing: this.options.easing,\r\n }),\r\n })\r\n }\r\n\r\n resize() {\r\n this.dimensions.resize()\r\n }\r\n\r\n private emit() {\r\n this.emitter.emit('scroll', this)\r\n }\r\n\r\n private onNativeScroll = () => {\r\n if (this.__preventNextScrollEvent) return\r\n\r\n if (!this.isScrolling) {\r\n const lastScroll = this.animatedScroll\r\n this.animatedScroll = this.targetScroll = this.actualScroll\r\n this.velocity = 0\r\n this.direction = Math.sign(this.animatedScroll - lastScroll)\r\n this.emit()\r\n }\r\n }\r\n\r\n private reset() {\r\n this.isLocked = false\r\n this.isScrolling = false\r\n this.animatedScroll = this.targetScroll = this.actualScroll\r\n this.velocity = 0\r\n this.animate.stop()\r\n }\r\n\r\n start() {\r\n if (!this.isStopped) return\r\n this.isStopped = false\r\n\r\n this.reset()\r\n }\r\n\r\n stop() {\r\n if (this.isStopped) return\r\n this.isStopped = true\r\n this.animate.stop()\r\n\r\n this.reset()\r\n }\r\n\r\n raf(time: number) {\r\n const deltaTime = time - (this.time || time)\r\n this.time = time\r\n\r\n this.animate.advance(deltaTime * 0.001)\r\n }\r\n\r\n scrollTo(\r\n target: number | string | HTMLElement,\r\n {\r\n offset = 0,\r\n immediate = false,\r\n lock = false,\r\n duration = this.options.duration,\r\n easing = this.options.easing,\r\n lerp = !duration && this.options.lerp,\r\n onComplete,\r\n force = false, // scroll even if stopped\r\n programmatic = true, // called from outside of the class\r\n }: {\r\n offset?: number\r\n immediate?: boolean\r\n lock?: boolean\r\n duration?: number\r\n easing?: EasingFunction\r\n lerp?: number\r\n onComplete?: (lenis: Lenis) => void\r\n force?: boolean\r\n programmatic?: boolean\r\n } = {}\r\n ) {\r\n if ((this.isStopped || this.isLocked) && !force) return\r\n\r\n // keywords\r\n if (['top', 'left', 'start'].includes(target)) {\r\n target = 0\r\n } else if (['bottom', 'right', 'end'].includes(target)) {\r\n target = this.limit\r\n } else {\r\n let node\r\n\r\n if (typeof target === 'string') {\r\n // CSS selector\r\n node = document.querySelector(target)\r\n } else if (target?.nodeType) {\r\n // Node element\r\n node = target\r\n }\r\n\r\n if (node) {\r\n if (this.options.wrapper !== window) {\r\n // nested scroll offset correction\r\n const wrapperRect = this.options.wrapper.getBoundingClientRect()\r\n offset -= this.isHorizontal ? wrapperRect.left : wrapperRect.top\r\n }\r\n\r\n const rect = node.getBoundingClientRect()\r\n\r\n target =\r\n (this.isHorizontal ? rect.left : rect.top) + this.animatedScroll\r\n }\r\n }\r\n\r\n if (typeof target !== 'number') return\r\n\r\n target += offset\r\n target = Math.round(target)\r\n\r\n if (this.options.infinite) {\r\n if (programmatic) {\r\n this.targetScroll = this.animatedScroll = this.scroll\r\n }\r\n } else {\r\n target = clamp(0, target, this.limit)\r\n }\r\n\r\n if (immediate) {\r\n this.animatedScroll = this.targetScroll = target\r\n this.setScroll(this.scroll)\r\n this.reset()\r\n onComplete?.(this)\r\n return\r\n }\r\n\r\n if (!programmatic) {\r\n if (target === this.targetScroll) return\r\n\r\n this.targetScroll = target\r\n }\r\n\r\n this.animate.fromTo(this.animatedScroll, target, {\r\n duration,\r\n easing,\r\n lerp,\r\n onStart: () => {\r\n // started\r\n if (lock) this.isLocked = true\r\n this.isScrolling = true\r\n },\r\n onUpdate: (value: number, completed: boolean) => {\r\n this.isScrolling = true\r\n\r\n // updated\r\n this.velocity = value - this.animatedScroll\r\n this.direction = Math.sign(this.velocity)\r\n\r\n this.animatedScroll = value\r\n this.setScroll(this.scroll)\r\n\r\n if (programmatic) {\r\n // wheel during programmatic should stop it\r\n this.targetScroll = value\r\n }\r\n\r\n if (!completed) this.emit()\r\n\r\n if (completed) {\r\n this.reset()\r\n this.emit()\r\n onComplete?.(this)\r\n\r\n // avoid emitting event twice\r\n this.__preventNextScrollEvent = true\r\n requestAnimationFrame(() => {\r\n delete this.__preventNextScrollEvent\r\n })\r\n }\r\n },\r\n })\r\n }\r\n\r\n get rootElement() {\r\n return this.options.wrapper === window\r\n ? document.documentElement\r\n : this.options.wrapper\r\n }\r\n\r\n get limit() {\r\n if (this.options.__experimental__naiveDimensions) {\r\n if (this.isHorizontal) {\r\n return this.rootElement.scrollWidth - this.rootElement.clientWidth\r\n } else {\r\n return this.rootElement.scrollHeight - this.rootElement.clientHeight\r\n }\r\n } else {\r\n return this.dimensions.limit[this.isHorizontal ? 'x' : 'y']\r\n }\r\n }\r\n\r\n get isHorizontal() {\r\n return this.options.orientation === 'horizontal'\r\n }\r\n\r\n get actualScroll() {\r\n // value browser takes into account\r\n return this.isHorizontal\r\n ? this.rootElement.scrollLeft\r\n : this.rootElement.scrollTop\r\n }\r\n\r\n get scroll() {\r\n return this.options.infinite\r\n ? modulo(this.animatedScroll, this.limit)\r\n : this.animatedScroll\r\n }\r\n\r\n get progress() {\r\n // avoid progress to be NaN\r\n return this.limit === 0 ? 1 : this.scroll / this.limit\r\n }\r\n\r\n get isSmooth() {\r\n return this.__isSmooth\r\n }\r\n\r\n private set isSmooth(value: boolean) {\r\n if (this.__isSmooth !== value) {\r\n this.__isSmooth = value\r\n this.toggleClassName('lenis-smooth', value)\r\n }\r\n }\r\n\r\n get isScrolling() {\r\n return this.__isScrolling\r\n }\r\n\r\n private set isScrolling(value: boolean) {\r\n if (this.__isScrolling !== value) {\r\n this.__isScrolling = value\r\n this.toggleClassName('lenis-scrolling', value)\r\n }\r\n }\r\n\r\n get isStopped() {\r\n return this.__isStopped\r\n }\r\n\r\n private set isStopped(value: boolean) {\r\n if (this.__isStopped !== value) {\r\n this.__isStopped = value\r\n this.toggleClassName('lenis-stopped', value)\r\n }\r\n }\r\n\r\n get isLocked() {\r\n return this.__isLocked\r\n }\r\n\r\n private set isLocked(value: boolean) {\r\n if (this.__isLocked !== value) {\r\n this.__isLocked = value\r\n this.toggleClassName('lenis-locked', value)\r\n }\r\n }\r\n\r\n get className() {\r\n let className = 'lenis'\r\n if (this.isStopped) className += ' lenis-stopped'\r\n if (this.isLocked) className += ' lenis-locked'\r\n if (this.isScrolling) className += ' lenis-scrolling'\r\n if (this.isSmooth) className += ' lenis-smooth'\r\n return className\r\n }\r\n\r\n private toggleClassName(name: string, value: boolean) {\r\n this.rootElement.classList.toggle(name, value)\r\n this.emitter.emit('className change', this)\r\n }\r\n}\r\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}
|
|
1
|
+
{"version":3,"file":"lenis.js","sources":["../src/maths.js","../src/animate.js","../src/debounce.js","../src/dimensions.js","../src/emitter.js","../src/virtual-scroll.js","../src/index.ts"],"sourcesContent":["// Clamp a value between a minimum and maximum value\r\nexport function clamp(min, input, max) {\r\n return Math.max(min, Math.min(input, max))\r\n}\r\n\r\n// Truncate a floating-point number to a specified number of decimal places\r\nexport function truncate(value, decimals = 0) {\r\n return parseFloat(value.toFixed(decimals))\r\n}\r\n\r\n// Linearly interpolate between two values using an amount (0 <= t <= 1)\r\nexport function lerp(x, y, t) {\r\n return (1 - t) * x + t * y\r\n}\r\n\r\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\r\nexport function damp(x, y, lambda, dt) {\r\n return lerp(x, y, 1 - Math.exp(-lambda * dt))\r\n}\r\n\r\n// Calculate the modulo of the dividend and divisor while keeping the result within the same sign as the divisor\r\n// https://anguscroll.com/just/just-modulo\r\nexport function modulo(n, d) {\r\n return ((n % d) + d) % d\r\n}\r\n","import { clamp, damp } from './maths'\r\n\r\n// Animate class to handle value animations with lerping or easing\r\nexport class Animate {\r\n // Advance the animation by the given delta time\r\n advance(deltaTime) {\r\n if (!this.isRunning) return\r\n\r\n let completed = false\r\n\r\n if (this.lerp) {\r\n this.value = damp(this.value, this.to, this.lerp * 60, deltaTime)\r\n if (Math.round(this.value) === this.to) {\r\n this.value = this.to\r\n completed = true\r\n }\r\n } else {\r\n this.currentTime += deltaTime\r\n const linearProgress = clamp(0, this.currentTime / this.duration, 1)\r\n\r\n completed = linearProgress >= 1\r\n const easedProgress = completed ? 1 : this.easing(linearProgress)\r\n this.value = this.from + (this.to - this.from) * easedProgress\r\n }\r\n\r\n if (completed) {\r\n this.stop()\r\n }\r\n\r\n // Call the onUpdate callback with the current value and completed status\r\n this.onUpdate?.(this.value, completed)\r\n }\r\n\r\n // Stop the animation\r\n stop() {\r\n this.isRunning = false\r\n }\r\n\r\n // Set up the animation from a starting value to an ending value\r\n // with optional parameters for lerping, duration, easing, and onUpdate callback\r\n fromTo(\r\n from,\r\n to,\r\n { lerp = 0.1, duration = 1, easing = (t) => t, onStart, onUpdate }\r\n ) {\r\n this.from = this.value = from\r\n this.to = to\r\n this.lerp = lerp\r\n this.duration = duration\r\n this.easing = easing\r\n this.currentTime = 0\r\n this.isRunning = true\r\n\r\n onStart?.()\r\n this.onUpdate = onUpdate\r\n }\r\n}\r\n","export function debounce(callback, delay) {\r\n let timer\r\n return function () {\r\n let args = arguments\r\n let context = this\r\n clearTimeout(timer)\r\n timer = setTimeout(function () {\r\n callback.apply(context, args)\r\n }, delay)\r\n }\r\n}\r\n","import { debounce } from './debounce'\r\n\r\nexport class Dimensions {\r\n constructor({\r\n wrapper,\r\n content,\r\n autoResize = true,\r\n debounce: debounceValue = 250,\r\n } = {}) {\r\n this.wrapper = wrapper\r\n this.content = content\r\n\r\n if (autoResize) {\r\n this.debouncedResize = debounce(this.resize, debounceValue)\r\n\r\n if (this.wrapper === window) {\r\n window.addEventListener('resize', this.debouncedResize, false)\r\n } else {\r\n this.wrapperResizeObserver = new ResizeObserver(this.debouncedResize)\r\n this.wrapperResizeObserver.observe(this.wrapper)\r\n }\r\n\r\n this.contentResizeObserver = new ResizeObserver(this.debouncedResize)\r\n this.contentResizeObserver.observe(this.content)\r\n }\r\n\r\n this.resize()\r\n }\r\n\r\n destroy() {\r\n this.wrapperResizeObserver?.disconnect()\r\n this.contentResizeObserver?.disconnect()\r\n window.removeEventListener('resize', this.debouncedResize, false)\r\n }\r\n\r\n resize = () => {\r\n this.onWrapperResize()\r\n this.onContentResize()\r\n }\r\n\r\n onWrapperResize = () => {\r\n if (this.wrapper === window) {\r\n this.width = window.innerWidth\r\n this.height = window.innerHeight\r\n } else {\r\n this.width = this.wrapper.clientWidth\r\n this.height = this.wrapper.clientHeight\r\n }\r\n }\r\n\r\n onContentResize = () => {\r\n if (this.wrapper === window) {\r\n this.scrollHeight = this.content.scrollHeight\r\n this.scrollWidth = this.content.scrollWidth\r\n } else {\r\n this.scrollHeight = this.wrapper.scrollHeight\r\n this.scrollWidth = this.wrapper.scrollWidth\r\n }\r\n }\r\n\r\n get limit() {\r\n return {\r\n x: this.scrollWidth - this.width,\r\n y: this.scrollHeight - this.height,\r\n }\r\n }\r\n}\r\n","export class Emitter {\r\n constructor() {\r\n this.events = {}\r\n }\r\n\r\n emit(event, ...args) {\r\n let callbacks = this.events[event] || []\r\n for (let i = 0, length = callbacks.length; i < length; i++) {\r\n callbacks[i](...args)\r\n }\r\n }\r\n\r\n on(event, cb) {\r\n // Add the callback to the event's callback list, or create a new list with the callback\r\n this.events[event]?.push(cb) || (this.events[event] = [cb])\r\n\r\n // Return an unsubscribe function\r\n return () => {\r\n this.events[event] = this.events[event]?.filter((i) => cb !== i)\r\n }\r\n }\r\n\r\n off(event, callback) {\r\n this.events[event] = this.events[event]?.filter((i) => callback !== i)\r\n }\r\n\r\n destroy() {\r\n this.events = {}\r\n }\r\n}\r\n","import { Emitter } from './emitter'\r\n\r\nconst LINE_HEIGHT = 100 / 6\r\n\r\nexport class VirtualScroll {\r\n constructor(element, { wheelMultiplier = 1, touchMultiplier = 1 }) {\r\n this.element = element\r\n this.wheelMultiplier = wheelMultiplier\r\n this.touchMultiplier = touchMultiplier\r\n\r\n this.touchStart = {\r\n x: null,\r\n y: null,\r\n }\r\n\r\n this.emitter = new Emitter()\r\n window.addEventListener('resize', this.onWindowResize, false)\r\n this.onWindowResize()\r\n\r\n this.element.addEventListener('wheel', this.onWheel, { passive: false })\r\n this.element.addEventListener('touchstart', this.onTouchStart, {\r\n passive: false,\r\n })\r\n this.element.addEventListener('touchmove', this.onTouchMove, {\r\n passive: false,\r\n })\r\n this.element.addEventListener('touchend', this.onTouchEnd, {\r\n passive: false,\r\n })\r\n }\r\n\r\n // Add an event listener for the given event and callback\r\n on(event, callback) {\r\n return this.emitter.on(event, callback)\r\n }\r\n\r\n // Remove all event listeners and clean up\r\n destroy() {\r\n this.emitter.destroy()\r\n\r\n window.removeEventListener('resize', this.onWindowResize, false)\r\n\r\n this.element.removeEventListener('wheel', this.onWheel, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchstart', this.onTouchStart, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchmove', this.onTouchMove, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchend', this.onTouchEnd, {\r\n passive: false,\r\n })\r\n }\r\n\r\n // Event handler for 'touchstart' event\r\n onTouchStart = (event) => {\r\n const { clientX, clientY } = event.targetTouches\r\n ? event.targetTouches[0]\r\n : event\r\n\r\n this.touchStart.x = clientX\r\n this.touchStart.y = clientY\r\n\r\n this.lastDelta = {\r\n x: 0,\r\n y: 0,\r\n }\r\n\r\n this.emitter.emit('scroll', {\r\n deltaX: 0,\r\n deltaY: 0,\r\n event,\r\n })\r\n }\r\n\r\n // Event handler for 'touchmove' event\r\n onTouchMove = (event) => {\r\n const { clientX, clientY } = event.targetTouches\r\n ? event.targetTouches[0]\r\n : event\r\n\r\n const deltaX = -(clientX - this.touchStart.x) * this.touchMultiplier\r\n const deltaY = -(clientY - this.touchStart.y) * this.touchMultiplier\r\n\r\n this.touchStart.x = clientX\r\n this.touchStart.y = clientY\r\n\r\n this.lastDelta = {\r\n x: deltaX,\r\n y: deltaY,\r\n }\r\n\r\n this.emitter.emit('scroll', {\r\n deltaX,\r\n deltaY,\r\n event,\r\n })\r\n }\r\n\r\n onTouchEnd = (event) => {\r\n this.emitter.emit('scroll', {\r\n deltaX: this.lastDelta.x,\r\n deltaY: this.lastDelta.y,\r\n event,\r\n })\r\n }\r\n\r\n // Event handler for 'wheel' event\r\n onWheel = (event) => {\r\n let { deltaX, deltaY, deltaMode } = event\r\n\r\n const multiplierX =\r\n deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.windowWidth : 1\r\n const multiplierY =\r\n deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.windowHeight : 1\r\n\r\n deltaX *= multiplierX\r\n deltaY *= multiplierY\r\n\r\n deltaX *= this.wheelMultiplier\r\n deltaY *= this.wheelMultiplier\r\n\r\n this.emitter.emit('scroll', { deltaX, deltaY, event })\r\n }\r\n\r\n onWindowResize = () => {\r\n this.windowWidth = window.innerWidth\r\n this.windowHeight = window.innerHeight\r\n }\r\n}\r\n","import { version } from '../../../package.json'\r\nimport { Animate } from './animate'\r\nimport { Dimensions } from './dimensions'\r\nimport { Emitter } from './emitter'\r\nimport { clamp, modulo } from './maths'\r\nimport { VirtualScroll } from './virtual-scroll'\r\n\r\n// Technical explanation\r\n// - listen to 'wheel' events\r\n// - prevent 'wheel' event to prevent scroll\r\n// - normalize wheel delta\r\n// - add delta to targetScroll\r\n// - animate scroll to targetScroll (smooth context)\r\n// - if animation is not running, listen to 'scroll' events (native context)\r\n\r\ntype EasingFunction = (t: number) => number\r\ntype Orientation = 'vertical' | 'horizontal'\r\ntype GestureOrientation = 'vertical' | 'horizontal' | 'both'\r\n\r\nexport type LenisOptions = {\r\n wrapper?: Window | HTMLElement\r\n content?: HTMLElement\r\n wheelEventsTarget?: Window | HTMLElement\r\n eventsTarget?: Window | HTMLElement\r\n smoothWheel?: boolean\r\n syncTouch?: boolean\r\n syncTouchLerp?: number\r\n touchInertiaMultiplier?: number\r\n duration?: number\r\n easing?: EasingFunction\r\n lerp?: number\r\n infinite?: boolean\r\n orientation?: Orientation\r\n gestureOrientation?: GestureOrientation\r\n touchMultiplier?: number\r\n wheelMultiplier?: number\r\n autoResize?: boolean\r\n __experimental__naiveDimensions?: boolean\r\n}\r\n\r\nexport default class Lenis {\r\n // __isSmooth: boolean = false // true if scroll should be animated\r\n __isScrolling: boolean | 'native' | 'smooth' = false // true when scroll is animating\r\n __isStopped: boolean = false // true if user should not be able to scroll - enable/disable programmatically\r\n __isLocked: boolean = false // same as isStopped but enabled/disabled when scroll reaches target\r\n\r\n time: number\r\n userData: object\r\n lastVelocity: number\r\n velocity: number\r\n direction: 1 | -1 | undefined\r\n options: LenisOptions\r\n targetScroll: number\r\n animatedScroll: number\r\n // animate: Animate\r\n // emitter: Emitter\r\n // dimensions: Dimensions\r\n // virtualScroll: VirtualScroll\r\n\r\n constructor({\r\n wrapper = window,\r\n content = document.documentElement,\r\n wheelEventsTarget = wrapper, // deprecated\r\n eventsTarget = wheelEventsTarget,\r\n smoothWheel = true,\r\n syncTouch = false,\r\n syncTouchLerp = 0.075,\r\n touchInertiaMultiplier = 35,\r\n duration, // in seconds\r\n easing = (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),\r\n lerp = !duration && 0.1,\r\n infinite = false,\r\n orientation = 'vertical', // vertical, horizontal\r\n gestureOrientation = 'vertical', // vertical, horizontal, both\r\n touchMultiplier = 1,\r\n wheelMultiplier = 1,\r\n autoResize = true,\r\n __experimental__naiveDimensions = false,\r\n }: LenisOptions = {}) {\r\n window.lenisVersion = version\r\n\r\n // if wrapper is html or body, fallback to window\r\n if (wrapper === document.documentElement || wrapper === document.body) {\r\n wrapper = window\r\n }\r\n\r\n this.options = {\r\n wrapper,\r\n content,\r\n wheelEventsTarget,\r\n eventsTarget,\r\n smoothWheel,\r\n syncTouch,\r\n syncTouchLerp,\r\n touchInertiaMultiplier,\r\n duration,\r\n easing,\r\n lerp,\r\n infinite,\r\n gestureOrientation,\r\n orientation,\r\n touchMultiplier,\r\n wheelMultiplier,\r\n autoResize,\r\n __experimental__naiveDimensions,\r\n }\r\n\r\n this.animate = new Animate()\r\n this.emitter = new Emitter()\r\n this.dimensions = new Dimensions({ wrapper, content, autoResize })\r\n // this.toggleClassName('lenis', true)\r\n this.updateClassName()\r\n\r\n this.userData = {}\r\n this.time = 0\r\n this.velocity = this.lastVelocity = 0\r\n this.isLocked = false\r\n this.isStopped = false\r\n // this.hasScrolled = false\r\n // this.isSmooth = syncTouch || smoothWheel\r\n // this.isSmooth = false\r\n this.isScrolling = false\r\n this.targetScroll = this.animatedScroll = this.actualScroll\r\n\r\n this.options.wrapper.addEventListener('scroll', this.onNativeScroll, false)\r\n\r\n this.virtualScroll = new VirtualScroll(eventsTarget, {\r\n touchMultiplier,\r\n wheelMultiplier,\r\n })\r\n this.virtualScroll.on('scroll', this.onVirtualScroll)\r\n }\r\n\r\n destroy() {\r\n this.emitter.destroy()\r\n\r\n this.options.wrapper.removeEventListener(\r\n 'scroll',\r\n this.onNativeScroll,\r\n false\r\n )\r\n\r\n this.virtualScroll.destroy()\r\n this.dimensions.destroy()\r\n\r\n this.cleanUpClassName()\r\n\r\n // this.rootElement.className = ''\r\n\r\n // this.toggleClassName('lenis', false)\r\n // this.toggleClassName('lenis-smooth', false)\r\n // this.toggleClassName('lenis-scrolling', false)\r\n // this.toggleClassName('lenis-stopped', false)\r\n // this.toggleClassName('lenis-locked', false)\r\n }\r\n\r\n on(event: string, callback: Function) {\r\n return this.emitter.on(event, callback)\r\n }\r\n\r\n off(event: string, callback: Function) {\r\n return this.emitter.off(event, callback)\r\n }\r\n\r\n private setScroll(scroll) {\r\n // apply scroll value immediately\r\n if (this.isHorizontal) {\r\n this.rootElement.scrollLeft = scroll\r\n } else {\r\n this.rootElement.scrollTop = scroll\r\n }\r\n }\r\n\r\n private onVirtualScroll = ({ deltaX, deltaY, event }) => {\r\n // keep zoom feature\r\n if (event.ctrlKey) return\r\n\r\n const isTouch = event.type.includes('touch')\r\n const isWheel = event.type.includes('wheel')\r\n\r\n this.isTouching = event.type === 'touchstart' || event.type === 'touchmove'\r\n // if (event.type === 'touchend') {\r\n // console.log('touchend', this.scroll)\r\n // // this.lastVelocity = this.velocity\r\n // // this.velocity = 0\r\n // // this.isScrolling = false\r\n // this.emit({ type: 'touchend' })\r\n // // alert('touchend')\r\n // return\r\n // }\r\n\r\n const isTapToStop =\r\n this.options.syncTouch &&\r\n isTouch &&\r\n event.type === 'touchstart' &&\r\n !this.isStopped &&\r\n !this.isLocked\r\n\r\n if (isTapToStop) {\r\n this.reset()\r\n return\r\n }\r\n\r\n const isClick = deltaX === 0 && deltaY === 0 // click event\r\n\r\n // const isPullToRefresh =\r\n // this.options.gestureOrientation === 'vertical' &&\r\n // this.scroll === 0 &&\r\n // !this.options.infinite &&\r\n // deltaY <= 5 // touch pull to refresh, not reliable yet\r\n\r\n const isUnknownGesture =\r\n (this.options.gestureOrientation === 'vertical' && deltaY === 0) ||\r\n (this.options.gestureOrientation === 'horizontal' && deltaX === 0)\r\n\r\n if (isClick || isUnknownGesture) {\r\n // console.log('prevent')\r\n return\r\n }\r\n\r\n // catch if scrolling on nested scroll elements\r\n let composedPath = event.composedPath()\r\n composedPath = composedPath.slice(0, composedPath.indexOf(this.rootElement)) // remove parents elements\r\n\r\n if (\r\n !!composedPath.find(\r\n (node) =>\r\n node.hasAttribute?.('data-lenis-prevent') ||\r\n (isTouch && node.hasAttribute?.('data-lenis-prevent-touch')) ||\r\n (isWheel && node.hasAttribute?.('data-lenis-prevent-wheel')) ||\r\n (node.classList?.contains('lenis') &&\r\n !node.classList?.contains('lenis-stopped')) // nested lenis instance\r\n )\r\n )\r\n return\r\n\r\n if (this.isStopped || this.isLocked) {\r\n event.preventDefault() // this will stop forwarding the event to the parent, this is problematic\r\n return\r\n }\r\n\r\n const isSmooth =\r\n (this.options.syncTouch && isTouch) ||\r\n (this.options.smoothWheel && isWheel)\r\n\r\n if (!isSmooth) {\r\n this.isScrolling = 'native'\r\n this.animate.stop()\r\n return\r\n }\r\n\r\n event.preventDefault()\r\n\r\n let delta = deltaY\r\n if (this.options.gestureOrientation === 'both') {\r\n delta = Math.abs(deltaY) > Math.abs(deltaX) ? deltaY : deltaX\r\n } else if (this.options.gestureOrientation === 'horizontal') {\r\n delta = deltaX\r\n }\r\n\r\n const syncTouch = isTouch && this.options.syncTouch\r\n const isTouchEnd = isTouch && event.type === 'touchend'\r\n\r\n const hasTouchInertia = isTouchEnd && Math.abs(delta) > 5\r\n\r\n if (hasTouchInertia) {\r\n delta = this.velocity * this.options.touchInertiaMultiplier\r\n }\r\n\r\n this.scrollTo(this.targetScroll + delta, {\r\n programmatic: false,\r\n ...(syncTouch\r\n ? {\r\n lerp: hasTouchInertia ? this.options.syncTouchLerp : 1,\r\n }\r\n : {\r\n lerp: this.options.lerp,\r\n duration: this.options.duration,\r\n easing: this.options.easing,\r\n }),\r\n })\r\n }\r\n\r\n resize() {\r\n this.dimensions.resize()\r\n }\r\n\r\n private emit({ userData = {} } = {}) {\r\n this.userData = userData\r\n this.emitter.emit('scroll', this)\r\n this.userData = {}\r\n }\r\n\r\n private onNativeScroll = () => {\r\n clearTimeout(this.__resetVelocityTimeout)\r\n delete this.__resetVelocityTimeout\r\n\r\n if (this.__preventNextNativeScrollEvent) {\r\n delete this.__preventNextNativeScrollEvent\r\n return\r\n }\r\n\r\n if (this.isScrolling === false || this.isScrolling === 'native') {\r\n const lastScroll = this.animatedScroll\r\n this.animatedScroll = this.targetScroll = this.actualScroll\r\n this.lastVelocity = this.velocity\r\n this.velocity = this.animatedScroll - lastScroll\r\n this.direction = Math.sign(this.animatedScroll - lastScroll)\r\n // this.isSmooth = false\r\n this.isScrolling = this.hasScrolled ? 'native' : false\r\n this.emit()\r\n\r\n if (this.velocity !== 0) {\r\n this.__resetVelocityTimeout = setTimeout(() => {\r\n this.lastVelocity = this.velocity\r\n this.velocity = 0\r\n this.isScrolling = false\r\n this.emit()\r\n }, 400)\r\n }\r\n\r\n // this.hasScrolled = true\r\n // }, 50)\r\n }\r\n }\r\n\r\n private reset() {\r\n this.isLocked = false\r\n this.isScrolling = false\r\n this.animatedScroll = this.targetScroll = this.actualScroll\r\n this.lastVelocity = this.velocity = 0\r\n this.animate.stop()\r\n }\r\n\r\n start() {\r\n if (!this.isStopped) return\r\n this.isStopped = false\r\n\r\n this.reset()\r\n }\r\n\r\n stop() {\r\n if (this.isStopped) return\r\n this.isStopped = true\r\n this.animate.stop()\r\n\r\n this.reset()\r\n }\r\n\r\n raf(time: number) {\r\n const deltaTime = time - (this.time || time)\r\n this.time = time\r\n\r\n this.animate.advance(deltaTime * 0.001)\r\n }\r\n\r\n scrollTo(\r\n target: number | string | HTMLElement,\r\n {\r\n offset = 0,\r\n immediate = false,\r\n lock = false,\r\n duration = this.options.duration,\r\n easing = this.options.easing,\r\n lerp = !duration && this.options.lerp,\r\n onStart,\r\n onComplete,\r\n force = false, // scroll even if stopped\r\n programmatic = true, // called from outside of the class\r\n userData = {},\r\n }: {\r\n offset?: number\r\n immediate?: boolean\r\n lock?: boolean\r\n duration?: number\r\n easing?: EasingFunction\r\n lerp?: number\r\n onStart?: (lenis: Lenis) => void\r\n onComplete?: (lenis: Lenis) => void\r\n force?: boolean\r\n programmatic?: boolean\r\n userData?: object\r\n } = {}\r\n ) {\r\n if ((this.isStopped || this.isLocked) && !force) return\r\n\r\n // keywords\r\n if (['top', 'left', 'start'].includes(target)) {\r\n target = 0\r\n } else if (['bottom', 'right', 'end'].includes(target)) {\r\n target = this.limit\r\n } else {\r\n let node\r\n\r\n if (typeof target === 'string') {\r\n // CSS selector\r\n node = document.querySelector(target)\r\n } else if (target?.nodeType) {\r\n // Node element\r\n node = target\r\n }\r\n\r\n if (node) {\r\n if (this.options.wrapper !== window) {\r\n // nested scroll offset correction\r\n const wrapperRect = this.options.wrapper.getBoundingClientRect()\r\n offset -= this.isHorizontal ? wrapperRect.left : wrapperRect.top\r\n }\r\n\r\n const rect = node.getBoundingClientRect()\r\n\r\n target =\r\n (this.isHorizontal ? rect.left : rect.top) + this.animatedScroll\r\n }\r\n }\r\n\r\n if (typeof target !== 'number') return\r\n\r\n target += offset\r\n target = Math.round(target)\r\n\r\n if (this.options.infinite) {\r\n if (programmatic) {\r\n this.targetScroll = this.animatedScroll = this.scroll\r\n }\r\n } else {\r\n target = clamp(0, target, this.limit)\r\n }\r\n\r\n if (immediate) {\r\n this.animatedScroll = this.targetScroll = target\r\n this.setScroll(this.scroll)\r\n this.reset()\r\n onComplete?.(this)\r\n return\r\n }\r\n\r\n if (target === this.targetScroll) return\r\n\r\n if (!programmatic) {\r\n this.targetScroll = target\r\n }\r\n\r\n this.animate.fromTo(this.animatedScroll, target, {\r\n duration,\r\n easing,\r\n lerp,\r\n onStart: () => {\r\n // started\r\n if (lock) this.isLocked = true\r\n this.isScrolling = 'smooth'\r\n onStart?.(this)\r\n },\r\n onUpdate: (value: number, completed: boolean) => {\r\n this.isScrolling = 'smooth'\r\n\r\n // updated\r\n this.lastVelocity = this.velocity\r\n this.velocity = value - this.animatedScroll\r\n this.direction = Math.sign(this.velocity)\r\n\r\n this.animatedScroll = value\r\n this.setScroll(this.scroll)\r\n\r\n if (programmatic) {\r\n // wheel during programmatic should stop it\r\n this.targetScroll = value\r\n }\r\n\r\n if (!completed) this.emit({ userData })\r\n\r\n if (completed) {\r\n this.reset()\r\n this.emit({ userData })\r\n onComplete?.(this)\r\n\r\n // avoid emitting event twice\r\n this.__preventNextNativeScrollEvent = true\r\n // requestAnimationFrame(() => {\r\n // delete this.__preventNextNativeScrollEvent\r\n // })\r\n }\r\n },\r\n })\r\n }\r\n\r\n get rootElement() {\r\n return this.options.wrapper === window\r\n ? document.documentElement\r\n : this.options.wrapper\r\n }\r\n\r\n get limit() {\r\n if (this.options.__experimental__naiveDimensions) {\r\n if (this.isHorizontal) {\r\n return this.rootElement.scrollWidth - this.rootElement.clientWidth\r\n } else {\r\n return this.rootElement.scrollHeight - this.rootElement.clientHeight\r\n }\r\n } else {\r\n return this.dimensions.limit[this.isHorizontal ? 'x' : 'y']\r\n }\r\n }\r\n\r\n get isHorizontal() {\r\n return this.options.orientation === 'horizontal'\r\n }\r\n\r\n get actualScroll(): number {\r\n // value browser takes into account\r\n return this.isHorizontal\r\n ? this.rootElement.scrollLeft\r\n : this.rootElement.scrollTop\r\n }\r\n\r\n get scroll(): number {\r\n return this.options.infinite\r\n ? modulo(this.animatedScroll, this.limit)\r\n : this.animatedScroll\r\n }\r\n\r\n get progress(): number {\r\n // avoid progress to be NaN\r\n return this.limit === 0 ? 1 : this.scroll / this.limit\r\n }\r\n\r\n // get isSmooth() {\r\n // return this.__isSmooth\r\n // }\r\n\r\n // private set isSmooth(value: boolean) {\r\n // if (this.__isSmooth !== value) {\r\n // this.__isSmooth = value\r\n // this.updateClassName()\r\n // }\r\n // }\r\n\r\n get isScrolling() {\r\n return this.__isScrolling\r\n }\r\n\r\n private set isScrolling(value: boolean) {\r\n if (this.__isScrolling !== value) {\r\n this.__isScrolling = value\r\n this.updateClassName()\r\n }\r\n }\r\n\r\n get isStopped() {\r\n return this.__isStopped\r\n }\r\n\r\n private set isStopped(value: boolean) {\r\n if (this.__isStopped !== value) {\r\n this.__isStopped = value\r\n this.updateClassName()\r\n }\r\n }\r\n\r\n get isLocked() {\r\n return this.__isLocked\r\n }\r\n\r\n private set isLocked(value: boolean) {\r\n if (this.__isLocked !== value) {\r\n this.__isLocked = value\r\n this.updateClassName()\r\n }\r\n }\r\n\r\n get isSmooth() {\r\n return this.isScrolling === 'smooth'\r\n }\r\n\r\n get className() {\r\n let className = 'lenis'\r\n if (this.isStopped) className += ' lenis-stopped'\r\n if (this.isLocked) className += ' lenis-locked'\r\n if (this.isScrolling) className += ' lenis-scrolling'\r\n if (this.isScrolling === 'smooth') className += ' lenis-smooth'\r\n // if (this.isScrolling === 'native') className += ' lenis-native'\r\n // if (this.isSmooth) className += ' lenis-smooth'\r\n return className\r\n }\r\n\r\n private updateClassName() {\r\n this.cleanUpClassName()\r\n\r\n this.rootElement.className =\r\n `${this.rootElement.className} ${this.className}`.trim()\r\n // this.emitter.emit('className change', this)\r\n }\r\n\r\n private cleanUpClassName() {\r\n this.rootElement.className = this.rootElement.className\r\n .replace(/lenis(-\\w+)?/g, '')\r\n .trim()\r\n }\r\n\r\n // private toggleClassName(name: string, value: boolean) {\r\n // // this.rootElement.classList.toggle(name, value)\r\n // this.rootElement.className = this.className\r\n // this.emitter.emit('className change', this)\r\n // }\r\n}\r\n"],"names":[],"mappings":"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"}
|
package/dist/lenis.min.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Lenis=e()}(this,(function(){"use strict";var __assign=function(){return __assign=Object.assign||function __assign(t){for(var e,i=1,o=arguments.length;i<o;i++)for(var s in e=arguments[i])Object.prototype.hasOwnProperty.call(e,s)&&(t[s]=e[s]);return t},__assign.apply(this,arguments)};"function"==typeof SuppressedError&&SuppressedError;function clamp(t,e,i){return Math.max(t,Math.min(e,i))}class Animate{advance(t){if(!this.isRunning)return;let e=!1;if(this.lerp)this.value=function damp(t,e,i,o){return function lerp(t,e,i){return(1-i)*t+i*e}(t,e,1-Math.exp(-i*o))}(this.value,this.to,60*this.lerp,t),Math.round(this.value)===this.to&&(this.value=this.to,e=!0);else{this.currentTime+=t;const i=clamp(0,this.currentTime/this.duration,1);e=i>=1;const o=e?1:this.easing(i);this.value=this.from+(this.to-this.from)*o}this.onUpdate?.(this.value,e),e&&this.stop()}stop(){this.isRunning=!1}fromTo(t,e,{lerp:i=.1,duration:o=1,easing:s=(t=>t),onStart:n,onUpdate:r}){this.from=this.value=t,this.to=e,this.lerp=i,this.duration=o,this.easing=s,this.currentTime=0,this.isRunning=!0,n?.(),this.onUpdate=r}}class Dimensions{constructor({wrapper:t,content:e,autoResize:i=!0,debounce:o=250}={}){this.wrapper=t,this.content=e,i&&(this.debouncedResize=function debounce(t,e){let i;return function(){let o=arguments,s=this;clearTimeout(i),i=setTimeout((function(){t.apply(s,o)}),e)}}(this.resize,o),this.wrapper===window?window.addEventListener("resize",this.debouncedResize,!1):(this.wrapperResizeObserver=new ResizeObserver(this.debouncedResize),this.wrapperResizeObserver.observe(this.wrapper)),this.contentResizeObserver=new ResizeObserver(this.debouncedResize),this.contentResizeObserver.observe(this.content)),this.resize()}destroy(){this.wrapperResizeObserver?.disconnect(),this.contentResizeObserver?.disconnect(),window.removeEventListener("resize",this.debouncedResize,!1)}resize=()=>{this.onWrapperResize(),this.onContentResize()};onWrapperResize=()=>{this.wrapper===window?(this.width=window.innerWidth,this.height=window.innerHeight):(this.width=this.wrapper.clientWidth,this.height=this.wrapper.clientHeight)};onContentResize=()=>{this.wrapper===window?(this.scrollHeight=this.content.scrollHeight,this.scrollWidth=this.content.scrollWidth):(this.scrollHeight=this.wrapper.scrollHeight,this.scrollWidth=this.wrapper.scrollWidth)};get limit(){return{x:this.scrollWidth-this.width,y:this.scrollHeight-this.height}}}class Emitter{constructor(){this.events={}}emit(t,...e){let i=this.events[t]||[];for(let t=0,o=i.length;t<o;t++)i[t](...e)}on(t,e){return this.events[t]?.push(e)||(this.events[t]=[e]),()=>{this.events[t]=this.events[t]?.filter((t=>e!==t))}}off(t,e){this.events[t]=this.events[t]?.filter((t=>e!==t))}destroy(){this.events={}}}const t=100/6;class VirtualScroll{constructor(t,{wheelMultiplier:e=1,touchMultiplier:i=1}){this.element=t,this.wheelMultiplier=e,this.touchMultiplier=i,this.touchStart={x:null,y:null},this.emitter=new Emitter,window.addEventListener("resize",this.onWindowResize,!1),this.onWindowResize(),this.element.addEventListener("wheel",this.onWheel,{passive:!1}),this.element.addEventListener("touchstart",this.onTouchStart,{passive:!1}),this.element.addEventListener("touchmove",this.onTouchMove,{passive:!1}),this.element.addEventListener("touchend",this.onTouchEnd,{passive:!1})}on(t,e){return this.emitter.on(t,e)}destroy(){this.emitter.destroy(),window.removeEventListener("resize",this.onWindowResize,!1),this.element.removeEventListener("wheel",this.onWheel,{passive:!1}),this.element.removeEventListener("touchstart",this.onTouchStart,{passive:!1}),this.element.removeEventListener("touchmove",this.onTouchMove,{passive:!1}),this.element.removeEventListener("touchend",this.onTouchEnd,{passive:!1})}onTouchStart=t=>{const{clientX:e,clientY:i}=t.targetTouches?t.targetTouches[0]:t;this.touchStart.x=e,this.touchStart.y=i,this.lastDelta={x:0,y:0},this.emitter.emit("scroll",{deltaX:0,deltaY:0,event:t})};onTouchMove=t=>{const{clientX:e,clientY:i}=t.targetTouches?t.targetTouches[0]:t,o=-(e-this.touchStart.x)*this.touchMultiplier,s=-(i-this.touchStart.y)*this.touchMultiplier;this.touchStart.x=e,this.touchStart.y=i,this.lastDelta={x:o,y:s},this.emitter.emit("scroll",{deltaX:o,deltaY:s,event:t})};onTouchEnd=t=>{this.emitter.emit("scroll",{deltaX:this.lastDelta.x,deltaY:this.lastDelta.y,event:t})};onWheel=e=>{let{deltaX:i,deltaY:o,deltaMode:s}=e;i*=1===s?t:2===s?this.windowWidth:1,o*=1===s?t:2===s?this.windowHeight:1,i*=this.wheelMultiplier,o*=this.wheelMultiplier,this.emitter.emit("scroll",{deltaX:i,deltaY:o,event:e})};onWindowResize=()=>{this.windowWidth=window.innerWidth,this.windowHeight=window.innerHeight}}var e=function(){function Lenis(t){var e=void 0===t?{}:t,i=e.wrapper,o=void 0===i?window:i,s=e.content,n=void 0===s?document.documentElement:s,r=e.wheelEventsTarget,l=void 0===r?o:r,h=e.eventsTarget,a=void 0===h?l:h,c=e.smoothWheel,p=void 0===c||c,u=e.syncTouch,d=void 0!==u&&u,m=e.syncTouchLerp,v=void 0===m?.075:m,f=e.touchInertiaMultiplier,g=void 0===f?35:f,S=e.duration,w=e.easing,y=void 0===w?function(t){return Math.min(1,1.001-Math.pow(2,-10*t))}:w,b=e.lerp,L=void 0===b?!S&&.1:b,_=e.infinite,z=void 0!==_&&_,E=e.orientation,T=void 0===E?"vertical":E,M=e.gestureOrientation,R=void 0===M?"vertical":M,O=e.touchMultiplier,W=void 0===O?1:O,x=e.wheelMultiplier,H=void 0===x?1:x,N=e.autoResize,k=void 0===N||N,C=e.__experimental__naiveDimensions,j=void 0!==C&&C,P=this;this.__isSmooth=!1,this.__isScrolling=!1,this.__isStopped=!1,this.__isLocked=!1,this.onVirtualScroll=function(t){var e=t.deltaX,i=t.deltaY,o=t.event;if(!o.ctrlKey){var s=o.type.includes("touch"),n=o.type.includes("wheel");if(P.options.syncTouch&&s&&"touchstart"===o.type&&!P.isStopped&&!P.isLocked)P.reset();else{var r=0===e&&0===i,l="vertical"===P.options.gestureOrientation&&0===i||"horizontal"===P.options.gestureOrientation&&0===e;if(!r&&!l){var h=o.composedPath();if(!(h=h.slice(0,h.indexOf(P.rootElement))).find((function(t){var e,i,o,r,l;return(null===(e=t.hasAttribute)||void 0===e?void 0:e.call(t,"data-lenis-prevent"))||s&&(null===(i=t.hasAttribute)||void 0===i?void 0:i.call(t,"data-lenis-prevent-touch"))||n&&(null===(o=t.hasAttribute)||void 0===o?void 0:o.call(t,"data-lenis-prevent-wheel"))||(null===(r=t.classList)||void 0===r?void 0:r.contains("lenis"))&&!(null===(l=t.classList)||void 0===l?void 0:l.contains("lenis-stopped"))})))if(P.isStopped||P.isLocked)o.preventDefault();else{if(P.isSmooth=P.options.syncTouch&&s||P.options.smoothWheel&&n,!P.isSmooth)return P.isScrolling=!1,void P.animate.stop();o.preventDefault();var a=i;"both"===P.options.gestureOrientation?a=Math.abs(i)>Math.abs(e)?i:e:"horizontal"===P.options.gestureOrientation&&(a=e);var c=s&&P.options.syncTouch,p=s&&"touchend"===o.type&&Math.abs(a)>5;p&&(a=P.velocity*P.options.touchInertiaMultiplier),P.scrollTo(P.targetScroll+a,__assign({programmatic:!1},c?{lerp:p?P.options.syncTouchLerp:1}:{lerp:P.options.lerp,duration:P.options.duration,easing:P.options.easing}))}}}}},this.onNativeScroll=function(){if(!P.__preventNextScrollEvent&&!P.isScrolling){var t=P.animatedScroll;P.animatedScroll=P.targetScroll=P.actualScroll,P.velocity=0,P.direction=Math.sign(P.animatedScroll-t),P.emit()}},window.lenisVersion="1.0.45-dev.1",o!==document.documentElement&&o!==document.body||(o=window),this.options={wrapper:o,content:n,wheelEventsTarget:l,eventsTarget:a,smoothWheel:p,syncTouch:d,syncTouchLerp:v,touchInertiaMultiplier:g,duration:S,easing:y,lerp:L,infinite:z,gestureOrientation:R,orientation:T,touchMultiplier:W,wheelMultiplier:H,autoResize:k,__experimental__naiveDimensions:j},this.animate=new Animate,this.emitter=new Emitter,this.dimensions=new Dimensions({wrapper:o,content:n,autoResize:k}),this.toggleClassName("lenis",!0),this.velocity=0,this.isLocked=!1,this.isStopped=!1,this.isSmooth=d||p,this.isScrolling=!1,this.targetScroll=this.animatedScroll=this.actualScroll,this.options.wrapper.addEventListener("scroll",this.onNativeScroll,!1),this.virtualScroll=new VirtualScroll(a,{touchMultiplier:W,wheelMultiplier:H}),this.virtualScroll.on("scroll",this.onVirtualScroll)}return Lenis.prototype.destroy=function(){this.emitter.destroy(),this.options.wrapper.removeEventListener("scroll",this.onNativeScroll,!1),this.virtualScroll.destroy(),this.dimensions.destroy(),this.toggleClassName("lenis",!1),this.toggleClassName("lenis-smooth",!1),this.toggleClassName("lenis-scrolling",!1),this.toggleClassName("lenis-stopped",!1),this.toggleClassName("lenis-locked",!1)},Lenis.prototype.on=function(t,e){return this.emitter.on(t,e)},Lenis.prototype.off=function(t,e){return this.emitter.off(t,e)},Lenis.prototype.setScroll=function(t){this.isHorizontal?this.rootElement.scrollLeft=t:this.rootElement.scrollTop=t},Lenis.prototype.resize=function(){this.dimensions.resize()},Lenis.prototype.emit=function(){this.emitter.emit("scroll",this)},Lenis.prototype.reset=function(){this.isLocked=!1,this.isScrolling=!1,this.animatedScroll=this.targetScroll=this.actualScroll,this.velocity=0,this.animate.stop()},Lenis.prototype.start=function(){this.isStopped&&(this.isStopped=!1,this.reset())},Lenis.prototype.stop=function(){this.isStopped||(this.isStopped=!0,this.animate.stop(),this.reset())},Lenis.prototype.raf=function(t){var e=t-(this.time||t);this.time=t,this.animate.advance(.001*e)},Lenis.prototype.scrollTo=function(t,e){var i=this,o=void 0===e?{}:e,s=o.offset,n=void 0===s?0:s,r=o.immediate,l=void 0!==r&&r,h=o.lock,a=void 0!==h&&h,c=o.duration,p=void 0===c?this.options.duration:c,u=o.easing,d=void 0===u?this.options.easing:u,m=o.lerp,v=void 0===m?!p&&this.options.lerp:m,f=o.onComplete,g=o.force,S=void 0!==g&&g,w=o.programmatic,y=void 0===w||w;if(!this.isStopped&&!this.isLocked||S){if(["top","left","start"].includes(t))t=0;else if(["bottom","right","end"].includes(t))t=this.limit;else{var b=void 0;if("string"==typeof t?b=document.querySelector(t):(null==t?void 0:t.nodeType)&&(b=t),b){if(this.options.wrapper!==window){var L=this.options.wrapper.getBoundingClientRect();n-=this.isHorizontal?L.left:L.top}var _=b.getBoundingClientRect();t=(this.isHorizontal?_.left:_.top)+this.animatedScroll}}if("number"==typeof t){if(t+=n,t=Math.round(t),this.options.infinite?y&&(this.targetScroll=this.animatedScroll=this.scroll):t=clamp(0,t,this.limit),l)return this.animatedScroll=this.targetScroll=t,this.setScroll(this.scroll),this.reset(),void(null==f||f(this));if(!y){if(t===this.targetScroll)return;this.targetScroll=t}this.animate.fromTo(this.animatedScroll,t,{duration:p,easing:d,lerp:v,onStart:function(){a&&(i.isLocked=!0),i.isScrolling=!0},onUpdate:function(t,e){i.isScrolling=!0,i.velocity=t-i.animatedScroll,i.direction=Math.sign(i.velocity),i.animatedScroll=t,i.setScroll(i.scroll),y&&(i.targetScroll=t),e||i.emit(),e&&(i.reset(),i.emit(),null==f||f(i),i.__preventNextScrollEvent=!0,requestAnimationFrame((function(){delete i.__preventNextScrollEvent})))}})}}},Object.defineProperty(Lenis.prototype,"rootElement",{get:function(){return this.options.wrapper===window?document.documentElement:this.options.wrapper},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"limit",{get:function(){return this.options.__experimental__naiveDimensions?this.isHorizontal?this.rootElement.scrollWidth-this.rootElement.clientWidth:this.rootElement.scrollHeight-this.rootElement.clientHeight:this.dimensions.limit[this.isHorizontal?"x":"y"]},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"isHorizontal",{get:function(){return"horizontal"===this.options.orientation},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"actualScroll",{get:function(){return this.isHorizontal?this.rootElement.scrollLeft:this.rootElement.scrollTop},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"scroll",{get:function(){return this.options.infinite?function modulo(t,e){return(t%e+e)%e}(this.animatedScroll,this.limit):this.animatedScroll},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"progress",{get:function(){return 0===this.limit?1:this.scroll/this.limit},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"isSmooth",{get:function(){return this.__isSmooth},set:function(t){this.__isSmooth!==t&&(this.__isSmooth=t,this.toggleClassName("lenis-smooth",t))},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"isScrolling",{get:function(){return this.__isScrolling},set:function(t){this.__isScrolling!==t&&(this.__isScrolling=t,this.toggleClassName("lenis-scrolling",t))},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"isStopped",{get:function(){return this.__isStopped},set:function(t){this.__isStopped!==t&&(this.__isStopped=t,this.toggleClassName("lenis-stopped",t))},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"isLocked",{get:function(){return this.__isLocked},set:function(t){this.__isLocked!==t&&(this.__isLocked=t,this.toggleClassName("lenis-locked",t))},enumerable:!1,configurable:!0}),Object.defineProperty(Lenis.prototype,"className",{get:function(){var t="lenis";return this.isStopped&&(t+=" lenis-stopped"),this.isLocked&&(t+=" lenis-locked"),this.isScrolling&&(t+=" lenis-scrolling"),this.isSmooth&&(t+=" lenis-smooth"),t},enumerable:!1,configurable:!0}),Lenis.prototype.toggleClassName=function(t,e){this.rootElement.classList.toggle(t,e),this.emitter.emit("className change",this)},Lenis}();return e}));
|
|
1
|
+
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t="undefined"!=typeof globalThis?globalThis:t||self).Lenis=e()}(this,(function(){"use strict";function clamp(t,e,i){return Math.max(t,Math.min(e,i))}class Animate{advance(t){if(!this.isRunning)return;let e=!1;if(this.lerp)this.value=function damp(t,e,i,s){return function lerp(t,e,i){return(1-i)*t+i*e}(t,e,1-Math.exp(-i*s))}(this.value,this.to,60*this.lerp,t),Math.round(this.value)===this.to&&(this.value=this.to,e=!0);else{this.currentTime+=t;const i=clamp(0,this.currentTime/this.duration,1);e=i>=1;const s=e?1:this.easing(i);this.value=this.from+(this.to-this.from)*s}e&&this.stop(),this.onUpdate?.(this.value,e)}stop(){this.isRunning=!1}fromTo(t,e,{lerp:i=.1,duration:s=1,easing:o=(t=>t),onStart:n,onUpdate:l}){this.from=this.value=t,this.to=e,this.lerp=i,this.duration=s,this.easing=o,this.currentTime=0,this.isRunning=!0,n?.(),this.onUpdate=l}}class Dimensions{constructor({wrapper:t,content:e,autoResize:i=!0,debounce:s=250}={}){this.wrapper=t,this.content=e,i&&(this.debouncedResize=function debounce(t,e){let i;return function(){let s=arguments,o=this;clearTimeout(i),i=setTimeout((function(){t.apply(o,s)}),e)}}(this.resize,s),this.wrapper===window?window.addEventListener("resize",this.debouncedResize,!1):(this.wrapperResizeObserver=new ResizeObserver(this.debouncedResize),this.wrapperResizeObserver.observe(this.wrapper)),this.contentResizeObserver=new ResizeObserver(this.debouncedResize),this.contentResizeObserver.observe(this.content)),this.resize()}destroy(){this.wrapperResizeObserver?.disconnect(),this.contentResizeObserver?.disconnect(),window.removeEventListener("resize",this.debouncedResize,!1)}resize=()=>{this.onWrapperResize(),this.onContentResize()};onWrapperResize=()=>{this.wrapper===window?(this.width=window.innerWidth,this.height=window.innerHeight):(this.width=this.wrapper.clientWidth,this.height=this.wrapper.clientHeight)};onContentResize=()=>{this.wrapper===window?(this.scrollHeight=this.content.scrollHeight,this.scrollWidth=this.content.scrollWidth):(this.scrollHeight=this.wrapper.scrollHeight,this.scrollWidth=this.wrapper.scrollWidth)};get limit(){return{x:this.scrollWidth-this.width,y:this.scrollHeight-this.height}}}class Emitter{constructor(){this.events={}}emit(t,...e){let i=this.events[t]||[];for(let t=0,s=i.length;t<s;t++)i[t](...e)}on(t,e){return this.events[t]?.push(e)||(this.events[t]=[e]),()=>{this.events[t]=this.events[t]?.filter((t=>e!==t))}}off(t,e){this.events[t]=this.events[t]?.filter((t=>e!==t))}destroy(){this.events={}}}const t=100/6;class VirtualScroll{constructor(t,{wheelMultiplier:e=1,touchMultiplier:i=1}){this.element=t,this.wheelMultiplier=e,this.touchMultiplier=i,this.touchStart={x:null,y:null},this.emitter=new Emitter,window.addEventListener("resize",this.onWindowResize,!1),this.onWindowResize(),this.element.addEventListener("wheel",this.onWheel,{passive:!1}),this.element.addEventListener("touchstart",this.onTouchStart,{passive:!1}),this.element.addEventListener("touchmove",this.onTouchMove,{passive:!1}),this.element.addEventListener("touchend",this.onTouchEnd,{passive:!1})}on(t,e){return this.emitter.on(t,e)}destroy(){this.emitter.destroy(),window.removeEventListener("resize",this.onWindowResize,!1),this.element.removeEventListener("wheel",this.onWheel,{passive:!1}),this.element.removeEventListener("touchstart",this.onTouchStart,{passive:!1}),this.element.removeEventListener("touchmove",this.onTouchMove,{passive:!1}),this.element.removeEventListener("touchend",this.onTouchEnd,{passive:!1})}onTouchStart=t=>{const{clientX:e,clientY:i}=t.targetTouches?t.targetTouches[0]:t;this.touchStart.x=e,this.touchStart.y=i,this.lastDelta={x:0,y:0},this.emitter.emit("scroll",{deltaX:0,deltaY:0,event:t})};onTouchMove=t=>{const{clientX:e,clientY:i}=t.targetTouches?t.targetTouches[0]:t,s=-(e-this.touchStart.x)*this.touchMultiplier,o=-(i-this.touchStart.y)*this.touchMultiplier;this.touchStart.x=e,this.touchStart.y=i,this.lastDelta={x:s,y:o},this.emitter.emit("scroll",{deltaX:s,deltaY:o,event:t})};onTouchEnd=t=>{this.emitter.emit("scroll",{deltaX:this.lastDelta.x,deltaY:this.lastDelta.y,event:t})};onWheel=e=>{let{deltaX:i,deltaY:s,deltaMode:o}=e;i*=1===o?t:2===o?this.windowWidth:1,s*=1===o?t:2===o?this.windowHeight:1,i*=this.wheelMultiplier,s*=this.wheelMultiplier,this.emitter.emit("scroll",{deltaX:i,deltaY:s,event:e})};onWindowResize=()=>{this.windowWidth=window.innerWidth,this.windowHeight=window.innerHeight}}return class Lenis{constructor({wrapper:t=window,content:e=document.documentElement,wheelEventsTarget:i=t,eventsTarget:s=i,smoothWheel:o=!0,syncTouch:n=!1,syncTouchLerp:l=.075,touchInertiaMultiplier:r=35,duration:h,easing:a=(t=>Math.min(1,1.001-Math.pow(2,-10*t))),lerp:c=!h&&.1,infinite:d=!1,orientation:u="vertical",gestureOrientation:p="vertical",touchMultiplier:m=1,wheelMultiplier:v=1,autoResize:g=!0,__experimental__naiveDimensions:S=!1}={}){this.__isScrolling=!1,this.__isStopped=!1,this.__isLocked=!1,this.onVirtualScroll=({deltaX:t,deltaY:e,event:i})=>{if(i.ctrlKey)return;const s=i.type.includes("touch"),o=i.type.includes("wheel");this.isTouching="touchstart"===i.type||"touchmove"===i.type;if(this.options.syncTouch&&s&&"touchstart"===i.type&&!this.isStopped&&!this.isLocked)return void this.reset();const n=0===t&&0===e,l="vertical"===this.options.gestureOrientation&&0===e||"horizontal"===this.options.gestureOrientation&&0===t;if(n||l)return;let r=i.composedPath();if(r=r.slice(0,r.indexOf(this.rootElement)),r.find((t=>{var e,i,n,l,r;return(null===(e=t.hasAttribute)||void 0===e?void 0:e.call(t,"data-lenis-prevent"))||s&&(null===(i=t.hasAttribute)||void 0===i?void 0:i.call(t,"data-lenis-prevent-touch"))||o&&(null===(n=t.hasAttribute)||void 0===n?void 0:n.call(t,"data-lenis-prevent-wheel"))||(null===(l=t.classList)||void 0===l?void 0:l.contains("lenis"))&&!(null===(r=t.classList)||void 0===r?void 0:r.contains("lenis-stopped"))})))return;if(this.isStopped||this.isLocked)return void i.preventDefault();if(!(this.options.syncTouch&&s||this.options.smoothWheel&&o))return this.isScrolling="native",void this.animate.stop();i.preventDefault();let h=e;"both"===this.options.gestureOrientation?h=Math.abs(e)>Math.abs(t)?e:t:"horizontal"===this.options.gestureOrientation&&(h=t);const a=s&&this.options.syncTouch,c=s&&"touchend"===i.type&&Math.abs(h)>5;c&&(h=this.velocity*this.options.touchInertiaMultiplier),this.scrollTo(this.targetScroll+h,Object.assign({programmatic:!1},a?{lerp:c?this.options.syncTouchLerp:1}:{lerp:this.options.lerp,duration:this.options.duration,easing:this.options.easing}))},this.onNativeScroll=()=>{if(clearTimeout(this.__resetVelocityTimeout),delete this.__resetVelocityTimeout,this.__preventNextNativeScrollEvent)delete this.__preventNextNativeScrollEvent;else if(!1===this.isScrolling||"native"===this.isScrolling){const t=this.animatedScroll;this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity,this.velocity=this.animatedScroll-t,this.direction=Math.sign(this.animatedScroll-t),this.isScrolling=!!this.hasScrolled&&"native",this.emit(),0!==this.velocity&&(this.__resetVelocityTimeout=setTimeout((()=>{this.lastVelocity=this.velocity,this.velocity=0,this.isScrolling=!1,this.emit()}),400))}},window.lenisVersion="1.0.46-dev.0",t!==document.documentElement&&t!==document.body||(t=window),this.options={wrapper:t,content:e,wheelEventsTarget:i,eventsTarget:s,smoothWheel:o,syncTouch:n,syncTouchLerp:l,touchInertiaMultiplier:r,duration:h,easing:a,lerp:c,infinite:d,gestureOrientation:p,orientation:u,touchMultiplier:m,wheelMultiplier:v,autoResize:g,__experimental__naiveDimensions:S},this.animate=new Animate,this.emitter=new Emitter,this.dimensions=new Dimensions({wrapper:t,content:e,autoResize:g}),this.updateClassName(),this.userData={},this.time=0,this.velocity=this.lastVelocity=0,this.isLocked=!1,this.isStopped=!1,this.isScrolling=!1,this.targetScroll=this.animatedScroll=this.actualScroll,this.options.wrapper.addEventListener("scroll",this.onNativeScroll,!1),this.virtualScroll=new VirtualScroll(s,{touchMultiplier:m,wheelMultiplier:v}),this.virtualScroll.on("scroll",this.onVirtualScroll)}destroy(){this.emitter.destroy(),this.options.wrapper.removeEventListener("scroll",this.onNativeScroll,!1),this.virtualScroll.destroy(),this.dimensions.destroy(),this.cleanUpClassName()}on(t,e){return this.emitter.on(t,e)}off(t,e){return this.emitter.off(t,e)}setScroll(t){this.isHorizontal?this.rootElement.scrollLeft=t:this.rootElement.scrollTop=t}resize(){this.dimensions.resize()}emit({userData:t={}}={}){this.userData=t,this.emitter.emit("scroll",this),this.userData={}}reset(){this.isLocked=!1,this.isScrolling=!1,this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity=0,this.animate.stop()}start(){this.isStopped&&(this.isStopped=!1,this.reset())}stop(){this.isStopped||(this.isStopped=!0,this.animate.stop(),this.reset())}raf(t){const e=t-(this.time||t);this.time=t,this.animate.advance(.001*e)}scrollTo(t,{offset:e=0,immediate:i=!1,lock:s=!1,duration:o=this.options.duration,easing:n=this.options.easing,lerp:l=!o&&this.options.lerp,onStart:r,onComplete:h,force:a=!1,programmatic:c=!0,userData:d={}}={}){if(!this.isStopped&&!this.isLocked||a){if(["top","left","start"].includes(t))t=0;else if(["bottom","right","end"].includes(t))t=this.limit;else{let i;if("string"==typeof t?i=document.querySelector(t):(null==t?void 0:t.nodeType)&&(i=t),i){if(this.options.wrapper!==window){const t=this.options.wrapper.getBoundingClientRect();e-=this.isHorizontal?t.left:t.top}const s=i.getBoundingClientRect();t=(this.isHorizontal?s.left:s.top)+this.animatedScroll}}if("number"==typeof t){if(t+=e,t=Math.round(t),this.options.infinite?c&&(this.targetScroll=this.animatedScroll=this.scroll):t=clamp(0,t,this.limit),i)return this.animatedScroll=this.targetScroll=t,this.setScroll(this.scroll),this.reset(),void(null==h||h(this));t!==this.targetScroll&&(c||(this.targetScroll=t),this.animate.fromTo(this.animatedScroll,t,{duration:o,easing:n,lerp:l,onStart:()=>{s&&(this.isLocked=!0),this.isScrolling="smooth",null==r||r(this)},onUpdate:(t,e)=>{this.isScrolling="smooth",this.lastVelocity=this.velocity,this.velocity=t-this.animatedScroll,this.direction=Math.sign(this.velocity),this.animatedScroll=t,this.setScroll(this.scroll),c&&(this.targetScroll=t),e||this.emit({userData:d}),e&&(this.reset(),this.emit({userData:d}),null==h||h(this),this.__preventNextNativeScrollEvent=!0)}}))}}}get rootElement(){return this.options.wrapper===window?document.documentElement:this.options.wrapper}get limit(){return this.options.__experimental__naiveDimensions?this.isHorizontal?this.rootElement.scrollWidth-this.rootElement.clientWidth:this.rootElement.scrollHeight-this.rootElement.clientHeight:this.dimensions.limit[this.isHorizontal?"x":"y"]}get isHorizontal(){return"horizontal"===this.options.orientation}get actualScroll(){return this.isHorizontal?this.rootElement.scrollLeft:this.rootElement.scrollTop}get scroll(){return this.options.infinite?function modulo(t,e){return(t%e+e)%e}(this.animatedScroll,this.limit):this.animatedScroll}get progress(){return 0===this.limit?1:this.scroll/this.limit}get isScrolling(){return this.__isScrolling}set isScrolling(t){this.__isScrolling!==t&&(this.__isScrolling=t,this.updateClassName())}get isStopped(){return this.__isStopped}set isStopped(t){this.__isStopped!==t&&(this.__isStopped=t,this.updateClassName())}get isLocked(){return this.__isLocked}set isLocked(t){this.__isLocked!==t&&(this.__isLocked=t,this.updateClassName())}get isSmooth(){return"smooth"===this.isScrolling}get className(){let t="lenis";return this.isStopped&&(t+=" lenis-stopped"),this.isLocked&&(t+=" lenis-locked"),this.isScrolling&&(t+=" lenis-scrolling"),"smooth"===this.isScrolling&&(t+=" lenis-smooth"),t}updateClassName(){this.cleanUpClassName(),this.rootElement.className=`${this.rootElement.className} ${this.className}`.trim()}cleanUpClassName(){this.rootElement.className=this.rootElement.className.replace(/lenis(-\w+)?/g,"").trim()}}}));
|
|
2
2
|
//# sourceMappingURL=lenis.min.js.map
|