class Sass::Value::Color::Space::Lms

def bounded?

def bounded?
  false
end

def convert(dest, long, medium, short, alpha,

def convert(dest, long, medium, short, alpha,
            missing_lightness: false,
            missing_chroma: false,
            missing_hue: false,
            missing_a: false,
            missing_b: false)
  case dest
  when OKLAB
    long_scaled = Math.cbrt(long.nil? ? 0 : long)
    medium_scaled = Math.cbrt(medium.nil? ? 0 : medium)
    short_scaled = Math.cbrt(short.nil? ? 0 : short)
    Color.send(
      :_for_space,
      dest,
      unless missing_lightness
        (Conversions::LMS_TO_OKLAB[0] * long_scaled) +
          (Conversions::LMS_TO_OKLAB[1] * medium_scaled) +
          (Conversions::LMS_TO_OKLAB[2] * short_scaled)
      end,
      unless missing_a
        (Conversions::LMS_TO_OKLAB[3] * long_scaled) +
          (Conversions::LMS_TO_OKLAB[4] * medium_scaled) +
          (Conversions::LMS_TO_OKLAB[5] * short_scaled)
      end,
      unless missing_b
        (Conversions::LMS_TO_OKLAB[6] * long_scaled) +
          (Conversions::LMS_TO_OKLAB[7] * medium_scaled) +
          (Conversions::LMS_TO_OKLAB[8] * short_scaled)
      end,
      alpha
    )
  when OKLCH
    long_scaled = Math.cbrt(long.nil? ? 0 : long)
    medium_scaled = Math.cbrt(medium.nil? ? 0 : medium)
    short_scaled = Math.cbrt(short.nil? ? 0 : short)
    Utils.lab_to_lch(
      dest,
      unless missing_lightness
        (Conversions::LMS_TO_OKLAB[0] * long_scaled) +
          (Conversions::LMS_TO_OKLAB[1] * medium_scaled) +
          (Conversions::LMS_TO_OKLAB[2] * short_scaled)
      end,
      unless missing_a
        (Conversions::LMS_TO_OKLAB[3] * long_scaled) +
          (Conversions::LMS_TO_OKLAB[4] * medium_scaled) +
          (Conversions::LMS_TO_OKLAB[5] * short_scaled)
      end,
      unless missing_b
        (Conversions::LMS_TO_OKLAB[6] * long_scaled) +
          (Conversions::LMS_TO_OKLAB[7] * medium_scaled) +
          (Conversions::LMS_TO_OKLAB[8] * short_scaled)
      end,
      alpha
    )
  else
    convert_linear(dest, long, medium, short, alpha,
                   missing_lightness:,
                   missing_chroma:,
                   missing_hue:,
                   missing_a:,
                   missing_b:)
  end
end

def from_linear(channel)

def from_linear(channel)
  channel
end

def initialize

def initialize
  super('lms', [
    LinearChannel.new('long', 0, 1).freeze,
    LinearChannel.new('medium', 0, 1).freeze,
    LinearChannel.new('short', 0, 1).freeze
  ].freeze)
end

def to_linear(channel)

def to_linear(channel)
  channel
end

def transformation_matrix(dest)

def transformation_matrix(dest)
  case dest
  when A98_RGB
    Conversions::LMS_TO_LINEAR_A98_RGB
  when DISPLAY_P3
    Conversions::LMS_TO_LINEAR_DISPLAY_P3
  when PROPHOTO_RGB
    Conversions::LMS_TO_LINEAR_PROPHOTO_RGB
  when REC2020
    Conversions::LMS_TO_LINEAR_REC2020
  when RGB, SRGB, SRGB_LINEAR
    Conversions::LMS_TO_LINEAR_SRGB
  when XYZ_D50
    Conversions::LMS_TO_XYZ_D50
  when XYZ_D65
    Conversions::LMS_TO_XYZ_D65
  else
    super
  end
end