{"version":3,"file":"omnedia-ngx-word-pullup.mjs","sources":["../../../projects/ngx-word-pullup/src/lib/ngx-word-pullup.component.ts","../../../projects/ngx-word-pullup/src/lib/ngx-word-pullup.component.html","../../../projects/ngx-word-pullup/src/public-api.ts","../../../projects/ngx-word-pullup/src/omnedia-ngx-word-pullup.ts"],"sourcesContent":["import {CommonModule, isPlatformBrowser} from \"@angular/common\";\r\nimport {\r\n  AfterViewInit,\r\n  ChangeDetectionStrategy,\r\n  Component,\r\n  ElementRef,\r\n  Inject,\r\n  Input,\r\n  OnDestroy,\r\n  PLATFORM_ID,\r\n  QueryList,\r\n  signal,\r\n  ViewChild,\r\n  ViewChildren\r\n} from \"@angular/core\";\r\n\r\n@Component({\r\n  selector: \"om-word-pullup\",\r\n  standalone: true,\r\n  imports: [CommonModule],\r\n  templateUrl: \"./ngx-word-pullup.component.html\",\r\n  styleUrl: \"./ngx-word-pullup.component.scss\",\r\n  changeDetection: ChangeDetectionStrategy.OnPush,\r\n})\r\nexport class NgxWordPullupComponent implements AfterViewInit, OnDestroy {\r\n  @ViewChild(\"OmWordPullupWrapper\") wordPullupRef!: ElementRef<HTMLElement>;\r\n  @ViewChildren('wordElements') wordElements!: QueryList<ElementRef<HTMLElement>>;\r\n\r\n\r\n  @Input(\"words\")\r\n  set words(words: string[] | string) {\r\n    if (typeof words === \"string\") {\r\n      words = words.split(\" \");\r\n    }\r\n\r\n    this.pullupWords.set(words);\r\n  }\r\n\r\n  @Input(\"styleClass\")\r\n  styleClass?: string;\r\n\r\n  @Input(\"animateOnView\")\r\n  animateOnView = false;\r\n\r\n  @Input(\"direction\")\r\n  direction: 'up' | 'down' = 'up';\r\n\r\n  @Input(\"pullupSpeed\")\r\n  set pullupSpeed(pullupSpeed: string) {\r\n    this.style.update(prev => ({...prev, '--om-pullup-speed': pullupSpeed}));\r\n  }\r\n\r\n  @Input(\"wordDelay\")\r\n  set wordDelay(wordDelay: number) {\r\n    if (wordDelay < 0) {\r\n      wordDelay = 0;\r\n    }\r\n\r\n    this.wordDelaySpeed.set(wordDelay);\r\n  }\r\n\r\n  wordDelaySpeed = signal(100);\r\n\r\n  pullupWords = signal<string[]>([]);\r\n\r\n  isInView = signal(false);\r\n  private intersectionObserver?: IntersectionObserver;\r\n  private animatedOnce = false;\r\n\r\n  style = signal({})\r\n\r\n  constructor(\r\n    @Inject(PLATFORM_ID) private platformId: object\r\n  ) {\r\n  }\r\n\r\n  ngAfterViewInit(): void {\r\n    if (this.pullupWords().length <= 0) {\r\n      throw new Error(\r\n        '\"om-word-pullup: No words were passed to the component!\"'\r\n      );\r\n    }\r\n\r\n    if (isPlatformBrowser(this.platformId)) {\r\n      this.intersectionObserver = new IntersectionObserver(([entry]) => {\r\n        const wasInView = this.isInView();\r\n        this.isInView.set(entry.isIntersecting);\r\n\r\n        if (!wasInView && this.isInView() && this.animateOnView || !this.animatedOnce && this.isInView()) {\r\n          this.startAnimation();\r\n        }\r\n\r\n        if (this.animateOnView && !this.isInView()) {\r\n          this.resetAnimation();\r\n        }\r\n      });\r\n      this.intersectionObserver.observe(this.wordPullupRef.nativeElement);\r\n    }\r\n  }\r\n\r\n  ngOnDestroy(): void {\r\n    if (this.intersectionObserver) {\r\n      this.intersectionObserver.disconnect();\r\n    }\r\n  }\r\n\r\n  private startAnimation(): void {\r\n    this.animatedOnce = true;\r\n\r\n    this.wordElements.forEach((el, i) => {\r\n      const nativeEl = el.nativeElement;\r\n      nativeEl.classList.remove('animate');\r\n\r\n      void nativeEl.offsetWidth;\r\n      nativeEl.style.animationDelay = `${i * this.wordDelaySpeed()}ms`;\r\n      nativeEl.classList.add('animate');\r\n    });\r\n  }\r\n\r\n  private resetAnimation(): void {\r\n    this.wordElements.forEach((el) => {\r\n      const nativeEl = el.nativeElement;\r\n      nativeEl.classList.remove('animate');\r\n    });\r\n  }\r\n}\r\n","<div class=\"om-word-pullup\" [ngClass]=\"styleClass\" [ngStyle]=\"style()\" #OmWordPullupWrapper>\r\n  <p>\r\n    @for (word of pullupWords(); track $index) {\r\n      <span\r\n        class=\"word\"\r\n        [class.direction-up]=\"direction === 'up'\"\r\n        [class.direction-down]=\"direction === 'down'\"\r\n        #wordElements\r\n      >\r\n        {{ word }}\r\n      </span>\r\n    }\r\n  </p>\r\n</div>\r\n\r\n","/*\r\n * Public API Surface of ngx-word-pullup\r\n */\r\n\r\nexport * from './lib/ngx-word-pullup.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":";;;;;MAwBa,sBAAsB,CAAA;AAgDF,IAAA,UAAA;AA/CG,IAAA,aAAa;AACjB,IAAA,YAAY;IAG1C,IACI,KAAK,CAAC,KAAwB,EAAA;AAChC,QAAA,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;AAC7B,YAAA,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;;AAG1B,QAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC;;AAI7B,IAAA,UAAU;IAGV,aAAa,GAAG,KAAK;IAGrB,SAAS,GAAkB,IAAI;IAE/B,IACI,WAAW,CAAC,WAAmB,EAAA;QACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,EAAC,GAAG,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAC,CAAC,CAAC;;IAG1E,IACI,SAAS,CAAC,SAAiB,EAAA;AAC7B,QAAA,IAAI,SAAS,GAAG,CAAC,EAAE;YACjB,SAAS,GAAG,CAAC;;AAGf,QAAA,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC;;AAGpC,IAAA,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC;AAE5B,IAAA,WAAW,GAAG,MAAM,CAAW,EAAE,CAAC;AAElC,IAAA,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;AAChB,IAAA,oBAAoB;IACpB,YAAY,GAAG,KAAK;AAE5B,IAAA,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;AAElB,IAAA,WAAA,CAC+B,UAAkB,EAAA;QAAlB,IAAU,CAAA,UAAA,GAAV,UAAU;;IAIzC,eAAe,GAAA;QACb,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;AAClC,YAAA,MAAM,IAAI,KAAK,CACb,0DAA0D,CAC3D;;AAGH,QAAA,IAAI,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE;YACtC,IAAI,CAAC,oBAAoB,GAAG,IAAI,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAI;AAC/D,gBAAA,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,EAAE;gBACjC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC;gBAEvC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;oBAChG,IAAI,CAAC,cAAc,EAAE;;gBAGvB,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;oBAC1C,IAAI,CAAC,cAAc,EAAE;;AAEzB,aAAC,CAAC;YACF,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;;;IAIvE,WAAW,GAAA;AACT,QAAA,IAAI,IAAI,CAAC,oBAAoB,EAAE;AAC7B,YAAA,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE;;;IAIlC,cAAc,GAAA;AACpB,QAAA,IAAI,CAAC,YAAY,GAAG,IAAI;QAExB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,CAAC,KAAI;AAClC,YAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa;AACjC,YAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;YAEpC,KAAK,QAAQ,CAAC,WAAW;AACzB,YAAA,QAAQ,CAAC,KAAK,CAAC,cAAc,GAAG,CAAA,EAAG,CAAC,GAAG,IAAI,CAAC,cAAc,EAAE,IAAI;AAChE,YAAA,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC;AACnC,SAAC,CAAC;;IAGI,cAAc,GAAA;QACpB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,EAAE,KAAI;AAC/B,YAAA,MAAM,QAAQ,GAAG,EAAE,CAAC,aAAa;AACjC,YAAA,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC;AACtC,SAAC,CAAC;;AAnGO,IAAA,OAAA,IAAA,GAAA,EAAA,CAAA,kBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,sBAAsB,kBAgDvB,WAAW,EAAA,CAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA;2FAhDV,sBAAsB,EAAA,YAAA,EAAA,IAAA,EAAA,QAAA,EAAA,gBAAA,EAAA,MAAA,EAAA,EAAA,KAAA,EAAA,OAAA,EAAA,UAAA,EAAA,YAAA,EAAA,aAAA,EAAA,eAAA,EAAA,SAAA,EAAA,WAAA,EAAA,WAAA,EAAA,aAAA,EAAA,SAAA,EAAA,WAAA,EAAA,EAAA,WAAA,EAAA,CAAA,EAAA,YAAA,EAAA,eAAA,EAAA,KAAA,EAAA,IAAA,EAAA,SAAA,EAAA,CAAA,qBAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,EAAA,YAAA,EAAA,cAAA,EAAA,SAAA,EAAA,CAAA,cAAA,CAAA,EAAA,WAAA,EAAA,IAAA,EAAA,CAAA,EAAA,QAAA,EAAA,EAAA,EAAA,QAAA,ECxBnC,4aAeA,EAAA,MAAA,EAAA,CAAA,g2BAAA,CAAA,EAAA,YAAA,EAAA,CAAA,EAAA,IAAA,EAAA,UAAA,EAAA,IAAA,EDIY,YAAY,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,OAAA,EAAA,SAAA,CAAA,EAAA,EAAA,EAAA,IAAA,EAAA,WAAA,EAAA,IAAA,EAAA,EAAA,CAAA,OAAA,EAAA,QAAA,EAAA,WAAA,EAAA,MAAA,EAAA,CAAA,SAAA,CAAA,EAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,CAAA;;2FAKX,sBAAsB,EAAA,UAAA,EAAA,CAAA;kBARlC,SAAS;+BACE,gBAAgB,EAAA,UAAA,EACd,IAAI,EACP,OAAA,EAAA,CAAC,YAAY,CAAC,EAAA,eAAA,EAGN,uBAAuB,CAAC,MAAM,EAAA,QAAA,EAAA,4aAAA,EAAA,MAAA,EAAA,CAAA,g2BAAA,CAAA,EAAA;;0BAkD5C,MAAM;2BAAC,WAAW;yCA/Ca,aAAa,EAAA,CAAA;sBAA9C,SAAS;uBAAC,qBAAqB;gBACF,YAAY,EAAA,CAAA;sBAAzC,YAAY;uBAAC,cAAc;gBAIxB,KAAK,EAAA,CAAA;sBADR,KAAK;uBAAC,OAAO;gBAUd,UAAU,EAAA,CAAA;sBADT,KAAK;uBAAC,YAAY;gBAInB,aAAa,EAAA,CAAA;sBADZ,KAAK;uBAAC,eAAe;gBAItB,SAAS,EAAA,CAAA;sBADR,KAAK;uBAAC,WAAW;gBAId,WAAW,EAAA,CAAA;sBADd,KAAK;uBAAC,aAAa;gBAMhB,SAAS,EAAA,CAAA;sBADZ,KAAK;uBAAC,WAAW;;;AEpDpB;;AAEG;;ACFH;;AAEG;;;;"}