{"version":3,"file":"soarlin-angular-color-thief.mjs","sources":["../../../projects/color-thief/src/lib/color-thief.service.ts","../../../projects/color-thief/src/lib/color-thief.module.ts","../../../projects/color-thief/src/public-api.ts","../../../projects/color-thief/src/soarlin-angular-color-thief.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\nimport quantize from 'quantize';\n\ntype RGB = [number, number, number];\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ColorThiefService {\n  private canvas: HTMLCanvasElement;\n  private context: CanvasRenderingContext2D;\n  private pixelCount: number;\n  private quality: number;\n\n  constructor() {\n    this.canvas = document.createElement('canvas');\n    this.context = this.canvas.getContext('2d')!;\n    this.pixelCount = 10000;\n    this.quality = 10;\n  }\n\n  getColor(sourceImage: HTMLImageElement, quality: number = 10): RGB {\n    const palette = this.getPalette(sourceImage, 5, quality);\n    return palette[0];\n  }\n\n  getPalette(sourceImage: HTMLImageElement, colorCount: number = 10, quality: number = 10): RGB[] {\n    if (typeof colorCount === 'undefined' || colorCount < 2 || colorCount > 256) {\n      colorCount = 10;\n    }\n    if (typeof quality === 'undefined' || quality < 1) {\n      quality = 10;\n    }\n\n    // Create custom CanvasRenderingContext2D from the image\n    const imageWidth = sourceImage.naturalWidth || sourceImage.width;\n    const imageHeight = sourceImage.naturalHeight || sourceImage.height;\n    this.canvas.width = imageWidth;\n    this.canvas.height = imageHeight;\n    this.context.clearRect(0, 0, imageWidth, imageHeight);\n    this.context.drawImage(sourceImage, 0, 0, imageWidth, imageHeight);\n\n    const imageData = this.context.getImageData(0, 0, imageWidth, imageHeight);\n    const pixels = imageData.data;\n    const pixelCount = imageWidth * imageHeight;\n\n    const pixelArray: RGB[] = [];\n    for (let i = 0, offset, r, g, b, a; i < pixelCount; i = i + quality) {\n      offset = i * 4;\n      r = pixels[offset + 0];\n      g = pixels[offset + 1];\n      b = pixels[offset + 2];\n      a = pixels[offset + 3];\n\n      // If pixel is mostly opaque and not white\n      if (a >= 125) {\n        if (!(r > 250 && g > 250 && b > 250)) {\n          pixelArray.push([r, g, b]);\n        }\n      }\n    }\n\n    // Use quantize to build the color palette\n    const cmap = quantize(pixelArray, colorCount);\n    const palette = cmap ? cmap.palette() as RGB[] : [];\n\n    return palette;\n  }\n\n  async getPaletteFromUrl(imageUrl: string, count = 5, quality = 10): Promise<RGB[]> {\n    try {\n      const img = new Image();\n      img.src = imageUrl;\n\n      await new Promise<void>((resolve, reject) => {\n        img.onload = () => resolve();\n        img.onerror = reject;\n      });\n\n      return this.getPalette(img, count, quality);\n    } catch (error) {\n      throw new Error(`Failed to load image: ${error instanceof Error ? error.message : String(error)}`);\n    }\n  }\n}\n","import { NgModule } from '@angular/core';\nimport { ColorThiefService } from './color-thief.service';\n\n@NgModule({\n  providers: [ColorThiefService]\n})\nexport class ColorThiefModule { }","/*\n * Public API Surface of ng-color-thief\n */\n\nexport * from './lib/color-thief.service';\nexport * from './lib/color-thief.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}