{"version":3,"file":"ngxtension-create-notifier.mjs","sources":["../../../../libs/ngxtension/create-notifier/src/create-notifier.ts","../../../../libs/ngxtension/create-notifier/src/ngxtension-create-notifier.ts"],"sourcesContent":["import { linkedSignal, signal, Signal } from '@angular/core';\n\ntype CreateNotifierOptions = {\n\tdeps?: Signal<any>[];\n\tdepsEmitInitially?: boolean;\n};\n\nconst DEFAULT_OPTIONS: Required<CreateNotifierOptions> = {\n\tdeps: [],\n\tdepsEmitInitially: true,\n};\n\n/**\n * Creates a signal notifier that can be used to notify effects or other consumers.\n *\n * @returns A notifier object.\n */\nexport function createNotifier(options?: CreateNotifierOptions) {\n\tconst mergedOptions: Required<CreateNotifierOptions> = {\n\t\t...DEFAULT_OPTIONS,\n\t\t...options,\n\t};\n\n\t// without explicit deps we can simplify to a simple signal\n\tconst sourceSignal = !mergedOptions.deps.length\n\t\t? signal(0)\n\t\t: linkedSignal<number, number>({\n\t\t\t\tsource: () => {\n\t\t\t\t\tmergedOptions.deps.forEach((dep) => dep()); // Track all dependencies\n\n\t\t\t\t\t// when deps exist, the notifier should start at 1, because it immediately emits.\n\t\t\t\t\t// without any deps, it is only based on increments. and those should start at 0.\n\t\t\t\t\treturn mergedOptions.deps.length && mergedOptions.depsEmitInitially\n\t\t\t\t\t\t? 1\n\t\t\t\t\t\t: 0;\n\t\t\t\t},\n\t\t\t\t// Return a new value each time source runs. This ensures deps changes also increment the counter\n\t\t\t\tcomputation: (currentIncrementer, previousValue) => {\n\t\t\t\t\t// Increment from previous value when deps change\n\t\t\t\t\treturn previousValue !== undefined\n\t\t\t\t\t\t? previousValue.value + 1\n\t\t\t\t\t\t: currentIncrementer;\n\t\t\t\t},\n\t\t\t\tequal: () => false, // Always notify downstream consumers\n\t\t\t});\n\n\treturn {\n\t\tnotify: () => sourceSignal.update((v) => (v >>> 0) + 1),\n\t\tlisten: sourceSignal.asReadonly(),\n\t};\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;AAOA,MAAM,eAAe,GAAoC;AACxD,IAAA,IAAI,EAAE,EAAE;AACR,IAAA,iBAAiB,EAAE,IAAI;CACvB,CAAC;AAEF;;;;AAIG;AACG,SAAU,cAAc,CAAC,OAA+B,EAAA;AAC7D,IAAA,MAAM,aAAa,GAAoC;AACtD,QAAA,GAAG,eAAe;AAClB,QAAA,GAAG,OAAO;KACV,CAAC;;AAGF,IAAA,MAAM,YAAY,GAAG,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM;AAC9C,UAAE,MAAM,CAAC,CAAC,CAAC;UACT,YAAY,CAAiB;YAC7B,MAAM,EAAE,MAAK;AACZ,gBAAA,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC,CAAC;;;gBAI3C,OAAO,aAAa,CAAC,IAAI,CAAC,MAAM,IAAI,aAAa,CAAC,iBAAiB;AAClE,sBAAE,CAAC;sBACD,CAAC,CAAC;aACL;;AAED,YAAA,WAAW,EAAE,CAAC,kBAAkB,EAAE,aAAa,KAAI;;gBAElD,OAAO,aAAa,KAAK,SAAS;AACjC,sBAAE,aAAa,CAAC,KAAK,GAAG,CAAC;sBACvB,kBAAkB,CAAC;aACtB;AACD,YAAA,KAAK,EAAE,MAAM,KAAK;AAClB,SAAA,CAAC,CAAC;IAEL,OAAO;QACN,MAAM,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACvD,QAAA,MAAM,EAAE,YAAY,CAAC,UAAU,EAAE;KACjC,CAAC;AACH;;AClDA;;AAEG;;;;"}