{"version":3,"file":"ynmstudio-utils-directives-smooth-height.mjs","sources":["../../../projects/ynm-utils/directives/smooth-height/src/smooth-height.directive.ts","../../../projects/ynm-utils/directives/smooth-height/src/ynmstudio-utils-directives-smooth-height.ts"],"sourcesContent":["import {\n  Directive,\n  OnChanges,\n  HostBinding,\n  ElementRef,\n  input,\n  signal,\n  SimpleChanges,\n  inject,\n} from '@angular/core';\nimport {\n  trigger,\n  transition,\n  style,\n  animate,\n  query,\n  animateChild,\n  group,\n  stagger,\n} from '@angular/animations';\n\nexport const smoothHeight = trigger('grow', [\n  transition('void <=> *', []),\n  transition(\n    '* <=> *',\n    [\n      style({ height: '{{startHeight}}px' }),\n      group([\n        animate('.5s ease'),\n        query('@showHide', animateChild(), { optional: true }),\n      ]),\n    ],\n    {\n      params: { startHeight: 0 },\n    },\n  ),\n]);\n\nexport const showHide = trigger('showHide', [\n  transition(':enter', [\n    query('figure', [\n      style({ opacity: 0 }),\n      animate('.3s', style({ opacity: 1 })),\n    ]),\n    query('.news-item--content > *, .news-item--footer', [\n      style({ opacity: 0, transform: 'translateY(8px)' }),\n      animate(\n        '.7s cubic-bezier(0.2, 1.3, 0.7, 1)',\n        style({ opacity: 1, transform: 'translateY(0)' }),\n      ),\n    ]),\n  ]),\n  transition(':leave', [\n    group([\n      query('.news-item--content > *, .news-item--footer', [\n        animate('.3s cubic-bezier(0.2, 1.3, 0.7, 1)', style({ opacity: 0 })),\n      ]),\n      query('figure', [animate('.3s', style({ opacity: 0 }))]),\n    ]),\n  ]),\n]);\n\n@Directive({\n  selector: '[smoothHeight]',\n  standalone: true,\n  host: {\n    '[style.display]': '\"block\"',\n    '[style.overflow]': '\"clip\"',\n  },\n})\nexport class SmoothHeightDirective implements OnChanges {\n  smoothHeight = input();\n\n  pulse = signal<boolean>(false);\n  startHeight = signal<number>(0);\n\n  host = inject(ElementRef);\n\n  @HostBinding('@grow')\n  get grow() {\n    return { value: this.pulse(), params: { startHeight: this.startHeight() } };\n  }\n\n  setStartHeight() {\n    this.startHeight.set(this.host.nativeElement.clientHeight);\n  }\n\n  ngOnChanges(changes: SimpleChanges) {\n    this.setStartHeight();\n    this.pulse.set(!this.pulse());\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}