ngx-parallax-stars
Version:
Angular library to create beautiful stars with parallax effect.
1 lines • 15.8 kB
Source Map (JSON)
{"version":3,"file":"ngx-parallax-stars.mjs","sources":["../../../../libs/ngx-parallax-stars/src/lib/star-layer.ts","../../../../libs/ngx-parallax-stars/src/lib/utils.ts","../../../../libs/ngx-parallax-stars/src/lib/ngx-parallax-stars/ngx-parallax-stars.component.ts","../../../../libs/ngx-parallax-stars/src/ngx-parallax-stars.ts"],"sourcesContent":["export interface StarLayer {\n /**\n * Sets the color of the stars. All colors you can use in CSS should work e.g. white, #ffffff, rgb(255,255,255), hsl(0, 0%, 100%)\n */\n color: string;\n /**\n * Specifies the size of every star in px\n */\n size: number;\n /**\n * Specifies how many stars should be rendered per 100 by 100px area\n */\n density: number;\n /**\n * Sets the moving speed of the stars\n */\n speed: number;\n /**\n * Determines the moving direction. Possible values are: up, down, left, right\n */\n direction: 'up' | 'down' | 'left' | 'right';\n /**\n * Sets the amount of blur for every star\n */\n blur: number;\n /**\n * Sets the glow radius in px\n */\n glow: number;\n /**\n * Set to true to make the stars round instead of square\n */\n isRound: boolean;\n}\n\n/**\n * Default star layers that are rendered when no layers are provided to the ngx-parallax-stars component\n */\nexport const defaultStarLayers: StarLayer[] = [\n {\n color: '#ffffff',\n speed: 10,\n density: 7,\n size: 1,\n direction: 'up',\n blur: 5,\n glow: 1,\n isRound: false,\n },\n {\n color: '#ffffff',\n speed: 15,\n density: 2,\n size: 2,\n direction: 'up',\n blur: 1,\n glow: 2,\n isRound: false,\n },\n {\n color: '#ffffff',\n speed: 20,\n density: 1,\n size: 3,\n direction: 'up',\n blur: 0,\n glow: 5,\n isRound: false,\n },\n];\n","import { Observable } from 'rxjs';\n\n/** @internal */\nexport function randomInt(min: number, max: number) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\n/** @internal */\nexport function resizeObservable(element: Element): Observable<{\n width: number;\n height: number;\n}> {\n return new Observable((subscriber) => {\n const resizeObserver = new ResizeObserver((entries) => {\n for (const entry of entries) {\n const contentRect = entry.contentRect;\n\n if (Math.abs(contentRect.height) < 1 && Math.abs(contentRect.width) < 1) continue;\n\n return subscriber.next({\n width: contentRect.width,\n height: contentRect.height,\n });\n }\n });\n\n resizeObserver.observe(element);\n\n return function unsubscribe() {\n resizeObserver.unobserve(element);\n };\n });\n}\n","import {\n ChangeDetectionStrategy,\n Component,\n effect,\n ElementRef,\n inject,\n input,\n Renderer2,\n signal,\n} from '@angular/core';\n\nimport { defaultStarLayers, StarLayer } from '../star-layer';\nimport { randomInt, resizeObservable } from '../utils';\nimport { debounceTime, distinctUntilChanged, filter } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Component({\n // eslint-disable-next-line @angular-eslint/component-selector\n selector: 'ngx-parallax-stars',\n imports: [],\n template: '',\n styles: [':host { display: block; overflow: hidden; }'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class NgxParallaxStarsComponent {\n /**\n * Overrides default star layers\n */\n layers = input<StarLayer[]>(defaultStarLayers);\n /**\n * If responsive mode is enabled, the component will automatically be re-rendered when its size changes\n */\n responsive = input<boolean>(true);\n #renderer = inject(Renderer2);\n #elRef = inject(ElementRef);\n #initialized = signal(false);\n #size = toSignal(\n resizeObservable(this.#elRef.nativeElement).pipe(\n filter(() => this.responsive() || !this.#initialized()),\n debounceTime(100),\n distinctUntilChanged()\n )\n );\n\n constructor() {\n effect(() => {\n const size = this.#size();\n\n if (size) {\n this.#renderStars(this.layers(), size.width, size.height);\n this.#initialized.set(true);\n }\n });\n }\n\n #renderStars(layers: StarLayer[], width: number, height: number): void {\n this.#renderer.setProperty(this.#elRef.nativeElement, 'innerHTML', '');\n\n layers.forEach((layer) => {\n const boxShadow = this.#createBoxShadow(width, height, layer.density, layer.color, layer.blur, layer.glow);\n\n const layerElement = this.createLayerElement(layer, boxShadow, width, height);\n\n const afterLayerElement = this.createAfterLayerElement(layer, boxShadow, height, width);\n\n this.#renderer.appendChild(layerElement, afterLayerElement);\n\n this.#renderer.appendChild(this.#elRef.nativeElement, layerElement);\n });\n }\n\n private createAfterLayerElement(layer: StarLayer, boxShadow: string, height: number, width: number) {\n const afterLayerElement = this.#renderer.createElement('span');\n\n this.#renderer.setStyle(afterLayerElement, 'content', ' ');\n this.#renderer.setStyle(afterLayerElement, 'position', 'absolute');\n this.#renderer.setStyle(afterLayerElement, 'width', `${layer.size}px`);\n this.#renderer.setStyle(afterLayerElement, 'height', `${layer.size}px`);\n this.#renderer.setStyle(afterLayerElement, 'background', 'transparent');\n this.#renderer.setStyle(afterLayerElement, 'boxShadow', boxShadow);\n\n switch (layer.direction) {\n case 'up':\n this.#renderer.setStyle(afterLayerElement, 'top', `${height}px`);\n break;\n case 'down':\n this.#renderer.setStyle(afterLayerElement, 'bottom', `${height}px`);\n break;\n case 'left':\n this.#renderer.setStyle(afterLayerElement, 'left', `${width}px`);\n break;\n case 'right':\n this.#renderer.setStyle(afterLayerElement, 'right', `${width}px`);\n break;\n }\n\n return afterLayerElement;\n }\n\n private createLayerElement(layer: StarLayer, boxShadow: string, width: number, height: number) {\n const layerElement = this.#renderer.createElement('div');\n\n this.#renderer.setStyle(layerElement, 'width', `${layer.size}px`);\n this.#renderer.setStyle(layerElement, 'height', `${layer.size}px`);\n this.#renderer.setStyle(layerElement, 'background', 'transparent');\n this.#renderer.setStyle(layerElement, 'boxShadow', boxShadow);\n this.#renderer.setStyle(layerElement, 'borderRadius', layer.isRound ? '50%' : '0');\n layerElement.animate(this.#createKeyFramesForLayer(layer, width, height), {\n duration: 1000000 / layer.speed,\n iterations: Infinity,\n });\n\n return layerElement;\n }\n\n #createKeyFramesForLayer(layer: StarLayer, width: number, height: number): Keyframe[] {\n switch (layer.direction) {\n case 'up': {\n return [\n {\n transform: 'translateY(0)',\n },\n {\n transform: `translateY(-${height}px)`,\n },\n ];\n }\n case 'down': {\n return [\n {\n transform: 'translateY(0)',\n },\n {\n transform: `translateY(${height}px)`,\n },\n ];\n }\n case 'left': {\n return [\n {\n transform: 'translateX(0)',\n },\n {\n transform: `translateX(-${width}px)`,\n },\n ];\n }\n case 'right': {\n return [\n {\n transform: 'translateX(0)',\n },\n {\n transform: `translateX(${width}px)`,\n },\n ];\n }\n default: {\n throw new Error(`Invalid direction: ${layer.direction}`);\n }\n }\n }\n\n #createBoxShadow(width: number, height: number, density: number, color: string, blur: number, glow: number): string {\n const count = this.#calculateCount(density, width, height);\n\n const shadows = [];\n\n for (let i = 0; i < count; i++) {\n const xPos = randomInt(1, width);\n const yPos = randomInt(1, height);\n\n const starShadow = `${xPos}px ${yPos}px ${blur}px 0 ${color}`;\n shadows.push(starShadow);\n\n if (glow !== 0) {\n const glowShadow = `${xPos}px ${yPos}px ${glow}px 0 ${color}`;\n shadows.push(glowShadow);\n }\n }\n\n return shadows.join(',');\n }\n\n #calculateCount(density: number, width: number, height: number): number {\n return density * (width / 100) * (height / 100);\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}