class Sass::Value::Color::GamutMapMethod::LocalMinde

def _delta_eok(color1, color2)

def _delta_eok(color1, color2)
  lab1 = color1.send(:_to_space, Space::OKLAB)
  lab2 = color2.send(:_to_space, Space::OKLAB)
  Math.sqrt(((lab1.send(:channel0) - lab2.send(:channel0))**2) +
              ((lab1.send(:channel1) - lab2.send(:channel1))**2) +
              ((lab1.send(:channel2) - lab2.send(:channel2))**2))
end

def initialize

def initialize
  super('local-minde')
end

def map(color)

def map(color)
  original_oklch = color.send(:_to_space, Space::OKLCH)
  lightness = original_oklch.send(:channel0_or_nil)
  hue = original_oklch.send(:channel2_or_nil)
  alpha = original_oklch.send(:alpha_or_nil)
  if FuzzyMath.greater_than_or_equals(lightness.nil? ? 0 : lightness, 1)
    if color.legacy?
      return Color.send(:_for_space,
                        Space::RGB, 255, 255, 255, color.send(:alpha_or_nil))
                  .send(:_to_space, color.send(:_space))
    else
      return Color.send(:for_space_internal,
                        color.send(:_space), 1, 1, 1, color.send(:alpha_or_nil))
    end
  elsif FuzzyMath.less_than_or_equals(lightness.nil? ? 0 : lightness, 0)
    return Color.send(:_for_space,
                      Space::RGB, 0, 0, 0, color.send(:alpha_or_nil))
                .send(:_to_space, color.send(:_space))
  end
  clipped = color.send(:_to_gamut, CLIP)
  return clipped if _delta_eok(clipped, color) < JND
  min = 0.0
  max = original_oklch.send(:channel1)
  min_in_gamut = true
  while max - min > EPSILON
    chroma = (min + max) / 2
    current = Space::OKLCH.convert(color.send(:_space), lightness, chroma, hue, alpha)
    if min_in_gamut && current.in_gamut?
      min = chroma
      next
    end
    clipped = current.send(:_to_gamut, CLIP)
    e = _delta_eok(clipped, current)
    if e < JND
      return clipped if JND - e < EPSILON
      min_in_gamut = false
      min = chroma
    else
      max = chroma
    end
  end
  clipped
end