{"version":3,"file":"obliczeniowo-elementary-image.mjs","sources":["../../../../projects/components/image/functions/load-image.ts","../../../../projects/components/image/components/preview/preview.component.ts","../../../../projects/components/image/components/preview/preview.component.html","../../../../projects/components/image/image.module.ts","../../../../projects/components/image/obliczeniowo-elementary-image.ts"],"sourcesContent":["export const loadImage = async (src: string) => {\r\n  return new Promise<HTMLImageElement>((res, rej) => {\r\n    const image = document.createElement('img');\r\n    image.onload = () => {\r\n      res(image);\r\n    };\r\n    image.src = src;\r\n  });\r\n};\r\n","/* eslint-disable @typescript-eslint/no-unsafe-argument */\r\nimport {\r\n  Component,\r\n  effect,\r\n  input,\r\n  model,\r\n} from '@angular/core';\r\nimport { loadImage } from '../../functions/load-image';\r\n\r\n@Component({\r\n    selector: 'obl-preview',\r\n    templateUrl: './preview.component.html',\r\n    styleUrl: './preview.component.scss',\r\n    standalone: false\r\n})\r\nexport class PreviewComponent {\r\n  src = input.required<string>();\r\n\r\n  width = input<number>(320);\r\n\r\n  height = input<number>(240);\r\n\r\n  columns = input<number>(5);\r\n  rows = input<number>(2);\r\n\r\n  current = model<number>(1);\r\n\r\n  starting = input<number>(1);\r\n\r\n  protected image?: HTMLImageElement;\r\n\r\n  protected timeout: any;\r\n\r\n  constructor() {\r\n    effect(() => {\r\n      this.image = undefined;\r\n      loadImage(this.src()).then((image) => (this.image = image));\r\n    });\r\n  }\r\n\r\n  imgCropWidth() {\r\n    const { image, columns, width } = this;\r\n    return image ? image.width / (columns() || 1) : width();\r\n  }\r\n\r\n  imgCropHeight() {\r\n    const { image, rows, height } = this;\r\n    return image ? image.height / (rows() || 1) : height();\r\n  }\r\n\r\n  scale() {\r\n    const cw = this.imgCropWidth();\r\n    const ch = this.imgCropHeight();\r\n\r\n    const xs = this.width() / cw;\r\n    const ys = this.height() / ch;\r\n\r\n    return Math.abs(xs) < Math.abs(ys) ? xs : ys;\r\n  }\r\n\r\n  y() {\r\n    if (this.image) {\r\n      return (\r\n        -this.imgCropHeight() *\r\n        this.scale() *\r\n        Math.floor(this.current() / this.columns())\r\n      );\r\n    }\r\n    return 0;\r\n  }\r\n\r\n  over(over: boolean) {\r\n    if (over && !this.timeout) {\r\n      const anim = () => {\r\n        this.current.set((this.current() + 1) % (this.columns() * this.rows()));\r\n        if (over) {\r\n          this.timeout = setTimeout(anim, 500);\r\n        } else {\r\n          this.timeout = undefined;\r\n        }\r\n      };\r\n      anim();\r\n    } else {\r\n      clearTimeout(this.timeout);\r\n      this.timeout = undefined;\r\n      this.current.set(this.starting());\r\n    }\r\n  }\r\n}\r\n","<div [ngStyle]=\"{ 'width.px': width(), 'height.px': height() }\">\r\n  @if (image) {\r\n    <div\r\n      class=\"crop\"\r\n      [ngStyle]=\"{\r\n        'height.px': imgCropHeight() * scale(),\r\n        'width.px': imgCropWidth() * scale()\r\n      }\"\r\n      (mouseover)=\"over(true)\"\r\n      (mouseleave)=\"over(false)\"\r\n    >\r\n      <img\r\n        draggable=\"false\"\r\n        [src]=\"src()\"\r\n        [ngStyle]=\"{\r\n          'width.px': scale() * image.width,\r\n          'top.px': y(),\r\n          'left.px': -imgCropWidth() * scale() * (current() % columns())\r\n        }\"\r\n      />\r\n    </div>\r\n  }\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { PreviewComponent } from './components/preview/preview.component';\r\n\r\n@NgModule({\r\n  declarations: [PreviewComponent],\r\n  imports: [CommonModule],\r\n  exports: [PreviewComponent],\r\n})\r\nexport class ImageModule {}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}