mirror of
https://github.com/Sped0n/bridget.git
synced 2026-04-17 03:29:31 -07:00
fix(customCursor.ts): add return type void to onMouse function for clarity fix(customCursor.ts): add passive option to window event listener for mousemove to improve performance fix(stageNav.ts): move import statement for setCustomCursor to the top for better organization fix(stageNav.ts): add return type void to handleClick function for clarity fix(stageNav.ts): add return type void to handleKey function for clarity fix(stageNav.ts): add passive option to overlay event listeners for click, keydown, mouseover, and focus to improve performance fix(stageNav.ts): add passive option to window event listener for keydown to improve performance fix(stageNav.ts): add return type void to nextImage function for clarity fix(stageNav.ts): add return type void to prevImage function for clarity fix(gallery.ts): move import statement for Swiper to the top for better organization fix(gallery.ts): add return type void to slideUp function for clarity fix(gallery.ts): add return type void to initGallery function for clarity fix(gallery.ts): add passive option to window event listener for touchstart to improve performance fix(gallery.ts): add return type void to changeSlide function for clarity fix(gallery.ts): add return type void to scrollToActive function for clarity fix(gallery.ts): add return type void to createGallery function for clarity fix(gallery.ts): add passive option to close event listeners for click and keydown to improve performance fix(gallery.ts): add passive option to overlay event listeners for click, keydown, mouseover, and focus to improve performance fix(gallery.ts): add passive option to window event listener for touchstart to improve performance fix(nav.ts): add return type void to initNav function for clarity fix(utils.ts): add return type number to getRandom function for clarity fix(utils.ts): add return type void to onVisible function for clarity fix(utils.ts): add return type void to addWatcher function in Watchable class for clarity
62 lines
1.2 KiB
TypeScript
62 lines
1.2 KiB
TypeScript
/**
|
|
* custom helpers
|
|
*/
|
|
|
|
export function increment(num: number, length: number): number {
|
|
return (num + 1) % length
|
|
}
|
|
|
|
export function decrement(num: number, length: number): number {
|
|
return (num + length - 1) % length
|
|
}
|
|
|
|
export function expand(num: number): string {
|
|
return ('0000' + num.toString()).slice(-4)
|
|
}
|
|
|
|
export function isMobile(): boolean {
|
|
return window.matchMedia('(hover: none)').matches
|
|
}
|
|
|
|
export function getRandom(min: number, max: number): number {
|
|
return Math.floor(Math.random() * (max - min + 1)) + min
|
|
}
|
|
|
|
export function onVisible<T extends Element>(
|
|
element: T,
|
|
callback: (arg0: T) => void
|
|
): void {
|
|
new IntersectionObserver((entries, observer) => {
|
|
entries.forEach((entry) => {
|
|
if (entry.intersectionRatio > 0) {
|
|
callback(element)
|
|
observer.disconnect()
|
|
}
|
|
})
|
|
}).observe(element)
|
|
}
|
|
|
|
/**
|
|
* custom types
|
|
*/
|
|
|
|
export class Watchable<T> {
|
|
constructor(private obj: T) {}
|
|
private readonly watchers: Array<() => void> = []
|
|
|
|
get(): T {
|
|
return this.obj
|
|
}
|
|
|
|
set(e: T): void {
|
|
this.obj = e
|
|
this.watchers.forEach((watcher) => {
|
|
watcher()
|
|
})
|
|
}
|
|
|
|
addWatcher(watcher: () => void): void {
|
|
this.watchers.push(watcher)
|
|
}
|
|
}
|