{"version":3,"file":"notiz-toolbelt-scroll.mjs","sources":["../../../../libs/toolbelt/scroll/src/scroll.ts","../../../../libs/toolbelt/scroll/src/scroll.directive.ts","../../../../libs/toolbelt/scroll/src/scroll.pipe.ts","../../../../libs/toolbelt/scroll/src/notiz-toolbelt-scroll.ts"],"sourcesContent":["import { onAnimationFrame } from '@notiz/toolbelt/utils';\nimport { fromEvent, map, of, startWith, zip } from 'rxjs';\n\nexport const scrolltop$ = (el: HTMLElement | Document | Window) => {\n  if (typeof window === 'undefined') {\n    return of(0);\n  }\n\n  return fromEvent(el, 'scroll').pipe(\n    onAnimationFrame(),\n    startWith(\n      el instanceof Document\n        ? el.documentElement.scrollTop\n        : el instanceof Window\n          ? el.scrollY\n          : el.scrollTop,\n    ),\n    map(() =>\n      el instanceof Document\n        ? el.documentElement.scrollTop\n        : el instanceof Window\n          ? el.scrollY\n          : el.scrollTop,\n    ),\n    map((s) => (isNaN(s) ? 0 : s)),\n  );\n};\n\nexport const scrollHeight$ = (el: HTMLElement | Document | Window) => {\n  if (typeof window === 'undefined') {\n    return of(0);\n  }\n\n  return fromEvent(el, 'scroll').pipe(\n    onAnimationFrame(),\n    startWith(\n      el instanceof Document\n        ? el.documentElement.scrollHeight\n        : el instanceof Window\n          ? el.scrollY\n          : el.scrollHeight,\n    ),\n    map(() =>\n      el instanceof Document\n        ? el.documentElement.scrollHeight\n        : el instanceof Window\n          ? el.scrollY\n          : el.scrollHeight,\n    ),\n    map((s) => (isNaN(s) ? 0 : s)),\n  );\n};\n\nexport const scroll$ = (el: HTMLElement | Window) =>\n  zip(scrolltop$(el), scrollHeight$(el)).pipe(\n    map(\n      ([top, height]) =>\n        (100 * top) /\n        (height - (el instanceof Window ? el.innerHeight : el.clientHeight)),\n    ),\n  );\n","import { Directive, ElementRef, Input } from '@angular/core';\n\n@Directive({\n  selector: '[scroll]',\n  standalone: true,\n})\nexport class ScrollDirective {\n  @Input() set scrollTop(scrollTop: number) {\n    this.el.nativeElement.scrollTop = scrollTop;\n  }\n  @Input() set scrollPercent(scrollPercent: number) {\n    this.el.nativeElement.scrollTop =\n      (scrollPercent / 100) *\n      (this.el.nativeElement.scrollHeight - this.el.nativeElement.clientHeight);\n  }\n\n  constructor(private el: ElementRef<HTMLElement>) {}\n}\n","import {\n  Injector,\n  Pipe,\n  PipeTransform,\n  inject,\n  runInInjectionContext,\n} from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { scroll$ } from './scroll';\n\n@Pipe({\n  name: 'scroll',\n  pure: true,\n  standalone: true,\n})\nexport class ScrollPipe implements PipeTransform {\n  injector = inject(Injector);\n  transform(el: HTMLElement): Observable<number> {\n    return runInInjectionContext(this.injector, () => scroll$(el));\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAGa,MAAA,UAAU,GAAG,CAAC,EAAmC,KAAI;AAChE,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,QAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;KACd;AAED,IAAA,OAAO,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,IAAI,CACjC,gBAAgB,EAAE,EAClB,SAAS,CACP,EAAE,YAAY,QAAQ;AACpB,UAAE,EAAE,CAAC,eAAe,CAAC,SAAS;UAC5B,EAAE,YAAY,MAAM;cAClB,EAAE,CAAC,OAAO;AACZ,cAAE,EAAE,CAAC,SAAS,CACnB,EACD,GAAG,CAAC,MACF,EAAE,YAAY,QAAQ;AACpB,UAAE,EAAE,CAAC,eAAe,CAAC,SAAS;UAC5B,EAAE,YAAY,MAAM;cAClB,EAAE,CAAC,OAAO;AACZ,cAAE,EAAE,CAAC,SAAS,CACnB,EACD,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAC/B,CAAC;AACJ,EAAE;AAEW,MAAA,aAAa,GAAG,CAAC,EAAmC,KAAI;AACnE,IAAA,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;AACjC,QAAA,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;KACd;AAED,IAAA,OAAO,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,IAAI,CACjC,gBAAgB,EAAE,EAClB,SAAS,CACP,EAAE,YAAY,QAAQ;AACpB,UAAE,EAAE,CAAC,eAAe,CAAC,YAAY;UAC/B,EAAE,YAAY,MAAM;cAClB,EAAE,CAAC,OAAO;AACZ,cAAE,EAAE,CAAC,YAAY,CACtB,EACD,GAAG,CAAC,MACF,EAAE,YAAY,QAAQ;AACpB,UAAE,EAAE,CAAC,eAAe,CAAC,YAAY;UAC/B,EAAE,YAAY,MAAM;cAClB,EAAE,CAAC,OAAO;AACZ,cAAE,EAAE,CAAC,YAAY,CACtB,EACD,GAAG,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAC/B,CAAC;AACJ,EAAE;AAEW,MAAA,OAAO,GAAG,CAAC,EAAwB,KAC9C,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CACzC,GAAG,CACD,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,KACZ,CAAC,GAAG,GAAG,GAAG;KACT,MAAM,IAAI,EAAE,YAAY,MAAM,GAAG,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,CACvE;;MCrDQ,eAAe,CAAA;IAC1B,IAAa,SAAS,CAAC,SAAiB,EAAA;QACtC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;KAC7C;IACD,IAAa,aAAa,CAAC,aAAqB,EAAA;AAC9C,QAAA,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,SAAS;YAC7B,CAAC,aAAa,GAAG,GAAG;AACpB,iBAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;KAC7E;AAED,IAAA,WAAA,CAAoB,EAA2B,EAAA;QAA3B,IAAE,CAAA,EAAA,GAAF,EAAE,CAAyB;KAAI;8GAVxC,eAAe,EAAA,IAAA,EAAA,CAAA,EAAA,KAAA,EAAA,EAAA,CAAA,UAAA,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA,EAAA;kGAAf,eAAe,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,UAAA,EAAA,MAAA,EAAA,EAAA,SAAA,EAAA,WAAA,EAAA,aAAA,EAAA,eAAA,EAAA,EAAA,QAAA,EAAA,EAAA,EAAA,CAAA,CAAA,EAAA;;2FAAf,eAAe,EAAA,UAAA,EAAA,CAAA;kBAJ3B,SAAS;AAAC,YAAA,IAAA,EAAA,CAAA;AACT,oBAAA,QAAQ,EAAE,UAAU;AACpB,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;+EAEc,SAAS,EAAA,CAAA;sBAArB,KAAK;gBAGO,aAAa,EAAA,CAAA;sBAAzB,KAAK;;;MCKK,UAAU,CAAA;AALvB,IAAA,WAAA,GAAA;AAME,QAAA,IAAA,CAAA,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;AAI7B,KAAA;AAHC,IAAA,SAAS,CAAC,EAAe,EAAA;AACvB,QAAA,OAAO,qBAAqB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;KAChE;8GAJU,UAAU,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,IAAA,EAAA,CAAA,CAAA,EAAA;4GAAV,UAAU,EAAA,YAAA,EAAA,IAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,CAAA,EAAA;;2FAAV,UAAU,EAAA,UAAA,EAAA,CAAA;kBALtB,IAAI;AAAC,YAAA,IAAA,EAAA,CAAA;AACJ,oBAAA,IAAI,EAAE,QAAQ;AACd,oBAAA,IAAI,EAAE,IAAI;AACV,oBAAA,UAAU,EAAE,IAAI;AACjB,iBAAA,CAAA;;;ACdD;;AAEG;;;;"}