{"version":3,"file":"xxmachina-components-organisms-video-trimmer-section.mjs","sources":["../../../../../packages/@xxmachina/components/src/lib/organisms/video-trimmer-section/video-trimmer-section.organism.ts","../../../../../packages/@xxmachina/components/src/lib/organisms/video-trimmer-section/xxmachina-components-organisms-video-trimmer-section.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, Directive, ElementRef, computed, inject, input } from '@angular/core';\nimport { MatSliderModule } from '@angular/material/slider';\nimport { FormBuilder, ReactiveFormsModule } from '@angular/forms';\nimport { formatSeconds } from '@ng-atomic/common/utils';\nimport { NgAtomicComponent } from '@ng-atomic/core';\nimport { fromEvent, map, startWith } from 'rxjs';\nimport { toSignal } from '@angular/core/rxjs-interop';\n\n@Directive({ standalone: true })\nexport class VideoTrimmerSectionOrganismStore {\n  readonly images = input<Blob[]>([]);\n  // blobをcomputedでimageのsrcに変換する\n  readonly imageSrcList = computed(() => (this.images() ?? []).map(blob => URL.createObjectURL(blob)));\n\n  readonly control = input(inject(FormBuilder).group({\n    duration: [0],\n    start: [0],\n    end: [100],\n  }));\n\n  readonly el = inject(ElementRef);\n  readonly width$ = fromEvent(window, 'resize').pipe(\n    startWith(null),\n    map(() => this.el.nativeElement.clientWidth),\n  );\n  readonly width = toSignal(this.width$);\n\n  readonly frameSize = computed(() => Math.round(this.width() / 100));\n\n  readonly frames = computed(() => {\n    // frameSizeの数だけimageSrcListを分割する\n    const frameSize = this.frameSize();\n    const images = this.imageSrcList().map(src => [...Array(this.frameSize())].map(() => src)).flat();\n    console.debug('images:', images.length);\n    // imagesを均等な感覚で12枚に絞る\n    const interval = Math.floor(images.length / this.frameSize());\n    return images.filter((_, i) => i % interval === 0);\n  });\n}\n\n@Component({\n  selector: 'organisms-video-trimmer-section',\n  standalone: true,\n  imports: [\n    MatSliderModule,\n    ReactiveFormsModule,\n  ],\n  template: `\n    <div class=\"frames\">\n      @for (image of store.frames(); track image) {\n        <img [style.width] [src]=\"image\" />\n      }\n    </div>\n    <mat-slider min=\"0\" max=\"100\" discrete [displayWith]=\"formatLabel\">\n      <input [formControl]=\"store.control().get(['start'])\" matSliderStartThumb>\n      <input [formControl]=\"store.control().get(['end'])\" matSliderEndThumb>\n    </mat-slider>\n  `,\n  styleUrls: ['./video-trimmer-section.organism.scss'],\n  changeDetection: ChangeDetectionStrategy.OnPush,\n  hostDirectives: [\n    {\n      directive: VideoTrimmerSectionOrganismStore,\n      inputs: ['images', 'control'],\n    }\n  ]\n})\nexport class VideoTrimmerSectionOrganism extends NgAtomicComponent {\n  protected store = inject(VideoTrimmerSectionOrganismStore);\n\n  formatLabel = (value: number): string => {\n    const seconds = Math.round(value / 100 * this.store.control().value.duration!);\n    return formatSeconds(seconds);\n  }\n}\n\n\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}