UNPKG

zoneless-utils

Version:

Zoneless Utility Toolkit for Angular using Signals

1 lines 8.37 kB
{"version":3,"file":"zoneless-utils.mjs","sources":["../../../projects/zoneless-utils/src/lib/pipes/zoneless-async.pipe.ts","../../../projects/zoneless-utils/src/lib/utils/run-with-detection.ts","../../../projects/zoneless-utils/src/lib/utils/mark-for-check.ts","../../../projects/zoneless-utils/src/lib/signals/use-interval.signal.ts","../../../projects/zoneless-utils/src/lib/signals/use-timeout.signal.ts","../../../projects/zoneless-utils/src/lib/signals/use-animation-frame-signal.ts","../../../projects/zoneless-utils/src/lib/signals/use-idle.signal.ts","../../../projects/zoneless-utils/src/lib/signals/use-resize-signal.ts","../../../projects/zoneless-utils/src/lib/directives/zoneless-if.directive.ts","../../../projects/zoneless-utils/src/public-api.ts","../../../projects/zoneless-utils/src/zoneless-utils.ts"],"sourcesContent":["// zoneless-async.pipe.ts\r\nimport { Pipe, Signal, inject, PipeTransform } from '@angular/core';\r\n\r\n@Pipe({ name: 'zonelessAsync', standalone: true, pure: false })\r\nexport class ZonelessAsyncPipe<T> implements PipeTransform {\r\n transform(signal: Signal<T>): T {\r\n return signal();\r\n }\r\n}\r\n","// run-with-detection.ts\r\nimport { inject, ChangeDetectorRef } from '@angular/core';\r\n\r\nexport function runWithChangeDetection(cdr: ChangeDetectorRef, callback: () => void): void {\r\n callback();\r\n cdr.detectChanges();\r\n}\r\n\r\n","import { inject, ChangeDetectorRef } from '@angular/core';\r\n\r\nexport function markForCheck(cdr: ChangeDetectorRef) {\r\n cdr.markForCheck();\r\n}\r\n","// use-interval.signal.ts\r\nimport { signal } from '@angular/core';\r\n\r\nexport function useIntervalSignal(ms: number) {\r\n const counter = signal(0);\r\n setInterval(() => counter.update(c => c + 1), ms);\r\n return counter;\r\n}\r\n","// projects/zoneless-utils/src/lib/signals/use-timeout.signal.ts\r\nimport { signal } from '@angular/core';\r\n\r\nexport function useTimeoutSignal(ms: number) {\r\n const done = signal(false);\r\n setTimeout(() => done.set(true), ms);\r\n return done;\r\n}","import { signal } from '@angular/core';\r\n\r\nexport function useAnimationFrameSignal(): () => number {\r\n const frame = signal(0);\r\n\r\n function update(time: number) {\r\n frame.set(time);\r\n requestAnimationFrame(update);\r\n }\r\n\r\n requestAnimationFrame(update);\r\n\r\n return frame;\r\n}\r\n","import { signal, effect } from '@angular/core';\r\n\r\nexport function useIdleSignal(timeoutMs: number = 30000): () => boolean {\r\n const isIdle = signal(false);\r\n let timer: any;\r\n\r\n const reset = () => {\r\n clearTimeout(timer);\r\n isIdle.set(false);\r\n timer = setTimeout(() => isIdle.set(true), timeoutMs);\r\n };\r\n\r\n ['mousemove', 'keydown', 'mousedown', 'touchstart'].forEach(event =>\r\n window.addEventListener(event, reset)\r\n );\r\n\r\n reset();\r\n\r\n return isIdle;\r\n}\r\n","import { signal, effect } from '@angular/core';\r\n\r\ninterface WindowSize {\r\n width: number;\r\n height: number;\r\n}\r\n\r\nexport function useResizeSignal(): () => WindowSize {\r\n const size = signal<WindowSize>({\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n });\r\n\r\n const update = () => {\r\n size.set({\r\n width: window.innerWidth,\r\n height: window.innerHeight,\r\n });\r\n };\r\n\r\n // Attach resize listener once\r\n window.addEventListener('resize', update);\r\n\r\n return size;\r\n}\r\n","import {\r\n Directive,\r\n Input,\r\n TemplateRef,\r\n ViewContainerRef,\r\n Signal,\r\n effect\r\n } from '@angular/core';\r\n \r\n @Directive({\r\n selector: '[zonelessIf]',\r\n standalone: true,\r\n })\r\n export class ZonelessIfDirective {\r\n private hasView = false;\r\n \r\n constructor(\r\n private templateRef: TemplateRef<any>,\r\n private viewContainer: ViewContainerRef\r\n ) {}\r\n \r\n @Input()\r\n set zonelessIf(condition: boolean | Signal<boolean>) {\r\n if (typeof condition === 'function') {\r\n effect(() => {\r\n this.updateView(condition());\r\n });\r\n } else {\r\n this.updateView(condition);\r\n }\r\n }\r\n \r\n private updateView(value: boolean) {\r\n if (value && !this.hasView) {\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n this.hasView = true;\r\n } else if (!value && this.hasView) {\r\n this.viewContainer.clear();\r\n this.hasView = false;\r\n }\r\n }\r\n }\r\n ","/*\r\n * Public API Surface of zoneless-utils\r\n */\r\n\r\nexport * from './lib/pipes/zoneless-async.pipe';\r\nexport * from './lib/utils/run-with-detection';\r\nexport * from './lib/utils/mark-for-check';\r\nexport * from './lib/signals/use-interval.signal';\r\nexport * from './lib/signals/use-timeout.signal';\r\nexport * from './lib/signals/use-animation-frame-signal';\r\nexport * from './lib/signals/use-idle.signal';\r\nexport * from './lib/signals/use-resize-signal';\r\nexport * from './lib/directives/zoneless-if.directive';","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}