{"version":3,"file":"ngxtension-to-lazy-signal.mjs","sources":["../../../../libs/ngxtension/to-lazy-signal/src/to-lazy-signal.ts","../../../../libs/ngxtension/to-lazy-signal/src/ngxtension-to-lazy-signal.ts"],"sourcesContent":["import { computed, untracked, type Signal } from '@angular/core';\nimport { toSignal, type ToSignalOptions } from '@angular/core/rxjs-interop';\nimport { assertInjector } from 'ngxtension/assert-injector';\nimport type { Observable, Subscribable } from 'rxjs';\n\ntype ReturnType<T, U> = (T | U) | (T | undefined) | (T | null) | T;\n\nexport function toLazySignal<T>(\n\tsource: Observable<T> | Subscribable<T>,\n): Signal<T | undefined>;\n\nexport function toLazySignal<T>(\n\tsource: Observable<T> | Subscribable<T>,\n\toptions: ToSignalOptions<T> & {\n\t\tinitialValue?: undefined;\n\t\trequireSync?: false;\n\t},\n): Signal<T | undefined>;\n\nexport function toLazySignal<T>(\n\tsource: Observable<T> | Subscribable<T>,\n\toptions: ToSignalOptions<T> & { initialValue?: null; requireSync?: false },\n): Signal<T | null>;\n\nexport function toLazySignal<T>(\n\tsource: Observable<T> | Subscribable<T>,\n\toptions: ToSignalOptions<T> & { initialValue?: undefined; requireSync: true },\n): Signal<T>;\n\nexport function toLazySignal<T, const U extends T>(\n\tsource: Observable<T> | Subscribable<T>,\n\toptions: ToSignalOptions<T> & { initialValue: U; requireSync?: false },\n): Signal<T | U>;\n\n/**\n * Function `toLazySignal()` is a proxy function that will call the original\n * `toSignal()` function when the returned signal is read for the first time.\n */\nexport function toLazySignal<T, U = undefined>(\n\tsource: Observable<T> | Subscribable<T>,\n\toptions?: ToSignalOptions<T> & { initialValue?: U },\n): Signal<ReturnType<T, U>> {\n\tconst injector = assertInjector(toLazySignal, options?.injector);\n\tlet s: Signal<ReturnType<T, U>>;\n\n\treturn computed<ReturnType<T, U>>(() => {\n\t\tif (!s) {\n\t\t\ts = untracked(() => toSignal(source, { ...options, injector } as any));\n\t\t}\n\t\treturn s();\n\t});\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;AAkCA;;;AAGG;AACa,SAAA,YAAY,CAC3B,MAAuC,EACvC,OAAmD,EAAA;IAEnD,MAAM,QAAQ,GAAG,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AACjE,IAAA,IAAI,CAA2B,CAAC;IAEhC,OAAO,QAAQ,CAAmB,MAAK;QACtC,IAAI,CAAC,CAAC,EAAE;AACP,YAAA,CAAC,GAAG,SAAS,CAAC,MAAM,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAS,CAAC,CAAC,CAAC;SACvE;QACD,OAAO,CAAC,EAAE,CAAC;AACZ,KAAC,CAAC,CAAC;AACJ;;ACnDA;;AAEG;;;;"}