lisn.js
Version:
Simply handle user gestures and actions. Includes widgets.
1 lines • 8.56 kB
Source Map (JSON)
{"version":3,"file":"x-intersection-observer.cjs","names":["MH","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","_defineProperty","_toPropertyKey","value","enumerable","configurable","writable","_toPrimitive","Symbol","toPrimitive","TypeError","String","Number","XIntersectionObserver","constructor","callback","observeOptions","observedTargets","newWeakSet","targetsToSkip","intersectionHandler","entries","selectedEntries","entry","targetOf","deleteKey","push","lengthOf","observer","newIntersectionObserver","root","rootMargin","thresholds","observe","targets","target","add","observeLater","unobserve","disconnect","takeRecords","exports"],"sources":["../../../src/ts/modules/x-intersection-observer.ts"],"sourcesContent":["/**\n * @module Modules/XIntersectionObserver\n */\n\nimport * as MH from \"@lisn/globals/minification-helpers\";\n\nexport type XIntersectionObserverCallback = (\n entries: IntersectionObserverEntry[],\n observer: XIntersectionObserver,\n) => void;\n\n/**\n * {@link XIntersectionObserver} is an extension of\n * {@link https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver | IntersectionObserver}\n * with added capabilities:\n * - can skip the initial callback that happens shortly after setting up via\n * {@link observeLater}\n */\nexport class XIntersectionObserver {\n /**\n * Like {@link https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/root | IntersectionObserver:root}.\n */\n readonly root!: Element | Document | null;\n\n /**\n * Like {@link https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/rootMargin | IntersectionObserver:rootMargin}.\n */\n readonly rootMargin!: string;\n\n /**\n * Like {@link https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/thresholds | IntersectionObserver:thresholds}.\n */\n readonly thresholds!: number[];\n\n /**\n * Like {@link https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/observe | IntersectionObserver:observe} except it accepts multiple\n * targets.\n */\n readonly observe: (...targets: Element[]) => void;\n\n /**\n * Like {@link observe} but it ignores the initial almost immediate callback\n * and only calls the callback on a subsequent intersection change.\n */\n readonly observeLater: (...targets: Element[]) => void;\n\n /**\n * Like {@link https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/unobserve | IntersectionObserver:unobserve} except it accepts multiple\n * targets.\n */\n readonly unobserve: (...targets: Element[]) => void;\n\n /**\n * Like {@link https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/disconnect | IntersectionObserver:disconnect}.\n */\n readonly disconnect: () => void;\n\n /**\n * Like `IntersectionObserver.takeRecords`.\n */\n readonly takeRecords: () => void;\n\n constructor(\n callback: XIntersectionObserverCallback,\n observeOptions?: IntersectionObserverInit,\n ) {\n let observedTargets = MH.newWeakSet<Element>();\n const targetsToSkip = MH.newWeakSet<Element>();\n\n const intersectionHandler = (entries: IntersectionObserverEntry[]) => {\n const selectedEntries = [];\n\n for (const entry of entries) {\n if (targetsToSkip.has(MH.targetOf(entry))) {\n MH.deleteKey(targetsToSkip, MH.targetOf(entry));\n continue;\n }\n\n selectedEntries.push(entry);\n }\n\n if (MH.lengthOf(selectedEntries)) {\n callback(selectedEntries, this);\n }\n };\n\n const observer = MH.newIntersectionObserver(\n intersectionHandler,\n observeOptions,\n );\n\n MH.defineProperty(this, \"root\", { get: () => observer.root });\n MH.defineProperty(this, \"rootMargin\", {\n get: () => observer.rootMargin,\n });\n MH.defineProperty(this, \"thresholds\", {\n get: () => observer.thresholds,\n });\n\n this.observe = (...targets) => {\n for (const target of targets) {\n observedTargets.add(target);\n observer.observe(target);\n }\n };\n\n this.observeLater = (...targets) => {\n for (const target of targets) {\n // Only skip them if not already observed, otherwise the initial\n // (almost) immediate callback won't happen anyway.\n if (observedTargets.has(target)) {\n continue;\n }\n\n targetsToSkip.add(target);\n this.observe(target);\n }\n };\n\n this.unobserve = (...targets) => {\n for (const target of targets) {\n MH.deleteKey(observedTargets, target);\n observer.unobserve(target);\n }\n };\n\n this.disconnect = () => {\n observedTargets = MH.newWeakSet();\n observer.disconnect();\n };\n\n this.takeRecords = () => observer.takeRecords();\n }\n}\n"],"mappings":"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","ignoreList":[]}