{"version":3,"file":"theme.mjs","names":[],"sources":["../../src/utils/theme.ts"],"sourcesContent":["import chroma from 'chroma-js';\n\nconst isstringScale = (colors: Array<unknown>, size: number) => {\n  const invalidstring = colors.find((color) => !chroma.valid(color));\n\n  if (invalidstring) {\n    throw new Error(\n      `Invalid color \"${String(invalidstring)}\" passed. All CSS color formats are accepted.`,\n    );\n  }\n\n  return colors.length === size;\n};\n\nconst createstringScale = (colors: [from: string, to: string], size: number): string[] => {\n  return chroma.scale(colors).mode('lch').colors(size);\n};\n\nconst validateTheme = (input: string[], size: number) => {\n  if (typeof input !== 'object' || input === undefined) {\n    throw new Error(`The theme object must contain at least 2 or ${size} colors respectively.`);\n  }\n\n  if (input) {\n    const { length } = input;\n    if (length !== 2 && length !== size) {\n      throw new Error(`theme must contain exactly 2 or ${size} colors, ${length} passed.`);\n    }\n  }\n};\n\nconst createDefaultTheme = (size: number): string[] => {\n  return createstringScale(['hsl(0, 0%, 20%)', 'hsl(0, 0%, 92%)'], size);\n};\n\nexport function createTheme(input?: string[], size: number = 5): string[] {\n  const defaultTheme = createDefaultTheme(size);\n\n  if (input) {\n    validateTheme(input, size);\n\n    const theme = input ?? defaultTheme;\n\n    // @ts-ignore\n    return isstringScale(theme, size) ? theme : createstringScale(theme, size);\n  }\n\n  return defaultTheme;\n}\n"],"mappings":";;AAEA,MAAM,iBAAiB,QAAwB,SAAiB;CAC9D,MAAM,gBAAgB,OAAO,MAAM,UAAU,CAAC,OAAO,MAAM,KAAK,CAAC;CAEjE,IAAI,eACF,MAAM,IAAI,MACR,kBAAkB,OAAO,aAAa,EAAE,8CAC1C;CAGF,OAAO,OAAO,WAAW;AAC3B;AAEA,MAAM,qBAAqB,QAAoC,SAA2B;CACxF,OAAO,OAAO,MAAM,MAAM,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,OAAO,IAAI;AACrD;AAEA,MAAM,iBAAiB,OAAiB,SAAiB;CACvD,IAAI,OAAO,UAAU,YAAY,UAAU,KAAA,GACzC,MAAM,IAAI,MAAM,+CAA+C,KAAK,sBAAsB;CAG5F,IAAI,OAAO;EACT,MAAM,EAAE,WAAW;EACnB,IAAI,WAAW,KAAK,WAAW,MAC7B,MAAM,IAAI,MAAM,mCAAmC,KAAK,WAAW,OAAO,SAAS;CAEvF;AACF;AAEA,MAAM,sBAAsB,SAA2B;CACrD,OAAO,kBAAkB,CAAC,mBAAmB,iBAAiB,GAAG,IAAI;AACvE;AAEA,SAAgB,YAAY,OAAkB,OAAe,GAAa;CACxE,MAAM,eAAe,mBAAmB,IAAI;CAE5C,IAAI,OAAO;EACT,cAAc,OAAO,IAAI;EAEzB,MAAM,QAAQ,SAAS;EAGvB,OAAO,cAAc,OAAO,IAAI,IAAI,QAAQ,kBAAkB,OAAO,IAAI;CAC3E;CAEA,OAAO;AACT"}