{"version":3,"sources":["../../src/lib/index.ts","../../src/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport type { IDefaultColor, IDefaultColorMode, IDefaultPaletteType } from './defaultPalette';\n// import { format } from 'prettier';\n\nexport type ISelectPalette<PALETTE extends string> = Record<PALETTE, boolean>;\n\ntype IStrct = 'YES' | 'STRICT_COLOR' | 'NO';\n\nconst makeConfig = <\n  T extends [STRICT, PALETTE, COLOR, MODE] | [STRICT, PALETTE, COLOR],\n  STRICT extends IStrct = IStrct,\n  PALETTE extends string = string,\n  COLOR extends string = string,\n  MODE extends string = string,\n>(\n  config: T['0'] extends 'YES'\n    ? Record<\n        T['1'],\n        {\n          dark: T['3'] extends string\n            ? Record<T['2'] | `${T['2']}-${T['3']}`, string>\n            : Record<T['2'], string>;\n          light: T['3'] extends string\n            ? Record<T['2'] | `${T['2']}-${T['3']}`, string>\n            : Record<T['2'], string>;\n        }\n      >\n    : T['0'] extends 'STRICT_COLOR'\n      ? Record<\n          T['1'],\n          {\n            dark: T['3'] extends string\n              ? Record<T['2'], string> & Partial<Record<`${T['2']}-${T['3']}`, string>>\n              : Record<T['2'], string> & Partial<Record<`${T['2']}`, string>>;\n            light: T['3'] extends string\n              ? Record<T['2'], string> & Partial<Record<`${T['2']}-${T['3']}`, string>>\n              : Record<T['2'], string> & Partial<Record<`${T['2']}`, string>>;\n          }\n        >\n      : Record<\n          T['1'],\n          {\n            dark: T['3'] extends string\n              ? Partial<Record<T['2'] | `${T['2']}-${T['3']}`, string>>\n              : Partial<Record<T['2'], string>>;\n            light: T['3'] extends string\n              ? Partial<Record<T['2'] | `${T['2']}-${T['3']}`, string>>\n              : Partial<Record<T['2'], string>>;\n          }\n        >,\n) => {\n  return config;\n};\n\nexport type IConfig<T extends [IStrct, string, string, string]> = ReturnType<\n  typeof makeConfig<[T['0'], T['1'], T['2'], T['3']]>\n>;\n\nconst take = <\n  T extends [PALETTE, COLOR, MODE] | [PALETTE, COLOR],\n  PALETTE extends string = string,\n  COLOR extends string = string,\n  MODE extends string = string,\n>(\n  config: Record<\n    T['0'],\n    {\n      dark: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n      light: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n    }\n  >,\n  entryOptions: Partial<Record<T['0'], boolean>>,\n) => {\n  const output = { ...config } as const;\n  for (const _key in output) {\n    const key = _key as T['0'];\n    if (!entryOptions[key] == true) {\n      delete output[key];\n    }\n  }\n  return { config: output, names: Object.keys(output) };\n};\n\n// take<['wood', 'primary' | 'secondary']>(\n//   {\n//     wood: {\n//       dark: {\n\n//       },\n\n//     },\n//   },\n//   { wood: true },\n// );\n\nconst generateVuetifyPalette = <\n  T extends [PALETTE, COLOR, MODE] | [PALETTE, COLOR],\n  PALETTE extends string = string,\n  COLOR extends string = string,\n  MODE extends string = string,\n>(\n  config: Record<\n    T['0'],\n    {\n      dark: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n      light: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n    }\n  >,\n) => {\n  const result = () => {\n    const output = {} as Record<\n      `${T['0']}-dark` | `${T['0']}-light`,\n      {\n        colors: T['2'] extends string\n          ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n          : Record<T['1'], string>;\n        dark: boolean;\n      }\n    >;\n    for (const _key in config) {\n      const key = _key as T['0'];\n      const { light, dark } = config[key];\n      output[`${key}-dark`] = { colors: dark, dark: true };\n      output[`${key}-light`] = { colors: light, dark: false };\n    }\n    return output;\n  };\n  return result();\n};\n\nconst generateFlattenPalette = <\n  T extends [PALETTE, COLOR, MODE] | [PALETTE, COLOR],\n  PALETTE extends string = string,\n  COLOR extends string = string,\n  MODE extends string = string,\n>(\n  config: Record<\n    T['0'],\n    {\n      dark: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n      light: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n    }\n  >,\n) => {\n  const result = () => {\n    const output = {} as Record<\n      T['2'] extends string\n        ?\n            | `${T['0']}-dark-${T['1']}`\n            | `${T['0']}-light-${T['1']}`\n            | `${T['0']}-dark-${T['1']}-${T['2']}`\n            | `${T['0']}-light-${T['1']}-${T['2']}`\n        : `${T['0']}-dark-${T['1']}` | `${T['0']}-light-${T['1']}`,\n      string\n    >;\n\n    for (const _key in config) {\n      const key = _key as T['0'];\n      const { light, dark } = config[key];\n      for (const color in dark) {\n        const outputKey = `${key}-dark-${color}` as keyof typeof output;\n        const outputValue = dark[color];\n        output[outputKey] = outputValue;\n      }\n      for (const color in light) {\n        const outputKey = `${key}-light-${color}` as keyof typeof output;\n        const outputValue = light[color];\n        output[outputKey] = outputValue;\n      }\n    }\n    return output;\n  };\n  return result();\n};\n\nconst onEachColorOfPalette = <\n  T extends [PALETTE, COLOR, MODE] | [PALETTE, COLOR],\n  PALETTE extends string = string,\n  COLOR extends string = string,\n  MODE extends string = string,\n>(\n  config: Record<\n    T['0'],\n    {\n      dark: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n      light: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n    }\n  >,\n  options: {\n    onFinishPalette: (paletteName: T['0'], paletteValue: (typeof config)[T['0']]) => void;\n    onStartPalette: (paletteName: T['0'], paletteValue: (typeof config)[T['0']]) => void;\n    onFinishThemeMode: (\n      themeMode: 'dark' | 'light',\n      paletteName: T['0'],\n      paletteValue: (typeof config)[T['0']],\n    ) => void;\n    onColor: (\n      colorName: T['1'] | (T['2'] extends string ? `${T['1']}-${T['2']}` : T['1']),\n      colorValue: string,\n      themeMode: 'dark' | 'light',\n      paletteName: T['0'],\n      paletteValue: (typeof config)[T['0']],\n    ) => void;\n  },\n) => {\n  const result = () => {\n    for (const _key in config) {\n      const key = _key as T['0'];\n      options.onStartPalette(key, config[key]);\n      const { light, dark } = config[key];\n      for (const color in dark) {\n        options.onColor(\n          color as unknown as T['1'] | (T['2'] extends string ? `${T['1']}-${T['2']}` : T['1']),\n          dark[color],\n          'dark',\n          key,\n          config[key],\n        );\n      }\n      options.onFinishThemeMode('dark', key, config[key]);\n      for (const color in light) {\n        options.onColor(\n          color as unknown as T['1'] | (T['2'] extends string ? `${T['1']}-${T['2']}` : T['1']),\n          light[color],\n          'light',\n          key,\n          config[key],\n        );\n      }\n      options.onFinishThemeMode('light', key, config[key]);\n      options.onFinishPalette(key, config[key]);\n    }\n  };\n  return result();\n};\n\nconst toCssVariables = <OBJECT extends object, PREFIX extends string>(\n  object: OBJECT,\n  prefix: PREFIX,\n) => {\n  const output = {};\n  for (const key in object) {\n    console.log('key', key);\n    // @ts-ignore\n    output[`--${prefix}-${key}`] = object[key];\n  }\n  return output;\n};\nconst objectToCss = (object: object) => {\n  const css = Object.entries(object)\n    .map(([k, v]) => `${k}:${v}`)\n    .join(';');\n  return css;\n};\n\nconst format = async (data: string, options: { parser: 'css'; printWidth: number }) => {\n  return data;\n};\nconst formatCss = async (css: string) => {\n  return await format(css, { parser: 'css', printWidth: 140 });\n};\nconst makeTailwindClass = <OBJECT extends object, PREFIX extends string>(\n  object: OBJECT,\n  prefix: PREFIX,\n) => {\n  const output = {};\n  for (const key in object) {\n    console.log('key', key);\n    // @ts-ignore\n    output[`--${prefix}-${key}`] = object[key];\n  }\n  return output;\n};\n\nconst makeCssAsString = async <\n  T extends [PALETTE, COLOR, MODE] | [PALETTE, COLOR],\n  PALETTE extends string = string,\n  COLOR extends string = string,\n  MODE extends string = string,\n>(\n  config: Record<\n    T['0'],\n    {\n      dark: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n      light: T['2'] extends string\n        ? Record<T['1'] | `${T['1']}-${T['2']}`, string>\n        : Record<T['1'], string>;\n    }\n  >,\n) => {\n  const rootVariables: any = {};\n  const lightClass: any = {};\n  const darkClass: any = {};\n  const tailwindTheme: any = {};\n  onEachColorOfPalette(config, {\n    onStartPalette: (paletteName, paletteValue) => {\n      rootVariables[paletteName] = {};\n      lightClass[paletteName] = {};\n      darkClass[paletteName] = {};\n    },\n    onFinishPalette: (paletteName, paletteValue) => {},\n    onFinishThemeMode: (themeMode) => {},\n    onColor: (colorName, colorValue, themeMode, paletteName, paletteValue) => {\n      tailwindTheme[`--color-tw-${colorName}`] = `var(${`--color-tw-${colorName}`})`;\n      rootVariables[paletteName][`--color-${paletteName}-${themeMode}-${colorName}`] = colorValue;\n      if (themeMode == 'light') {\n        lightClass[paletteName][`--color-tw-${colorName}`] =\n          `var(--color-${paletteName}-${themeMode}-${colorName})`;\n      } else {\n        darkClass[paletteName][`--color-tw-${colorName}`] =\n          `var(--color-${paletteName}-${themeMode}-${colorName})`;\n      }\n    },\n  });\n\n  const variables: { css: string; cssFileName: string; name: string }[] = [];\n  const light: { css: string; cssFileName: string; name: string }[] = [];\n  const dark: { css: string; cssFileName: string; name: string }[] = [];\n\n  for (const key in rootVariables) {\n    const css = `:root {${objectToCss(rootVariables[key])}}`;\n    variables.push({ css: await formatCss(css), name: key, cssFileName: `${key}-variables.css` });\n  }\n  for (const key in lightClass) {\n    const css = `.theme-${key}-light {${objectToCss(lightClass[key])}}`;\n    light.push({ css: await formatCss(css), name: key, cssFileName: `${key}-light.css` });\n  }\n  for (const key in darkClass) {\n    const css = `.theme-${key}-dark {${objectToCss(darkClass[key])}}`;\n    dark.push({ css: await formatCss(css), name: key, cssFileName: `${key}-dark.css` });\n  }\n  const fileNames: string[] = [];\n  [variables, light, dark].forEach((items) => {\n    items.forEach((item) => {\n      fileNames.push(item.cssFileName);\n    });\n  });\n  const tailwindImports: string = [\n    '@import \"tailwindcss\";',\n    ...fileNames.map((fileName) => `@import \"./${fileName}\";`),\n  ].join('\\n');\n  const tailwind: { css: string; cssFileName: string; name: string } = {\n    name: 'tailwind',\n    css: await formatCss(`${tailwindImports}\\n@theme{${objectToCss(tailwindTheme)}}`),\n    cssFileName: 'tailwind.css',\n  };\n  return {\n    variables,\n    light,\n    dark,\n    tailwind,\n  };\n};\n\nexport default {\n  makeConfig,\n  generateVuetifyPalette,\n  // generateFlattenPalette,\n  take,\n  // toCssVariables,\n  // onEachColorOfPalette,\n  // objectToCss,\n  makeCssAsString,\n};\n","import lib from './lib';\nimport _ from 'lodash';\nimport type { IDefaultColor, IDefaultColorMode, IDefaultPaletteType } from './lib/defaultPalette';\n// import jsonFix from 'json-fixer';\n// import type { IDefaultColor, IDefaultColorMode, IDefaultPaletteType } from './lib/defaultPalette';\n\nnamespace kmPalette {\n  export type Color = IDefaultColor;\n  export type Mode = IDefaultColorMode;\n  export type Type = IDefaultPaletteType;\n  export const makeConfig = lib.makeConfig;\n  export const take = lib.take;\n  export const generateVuetifyPalette = lib.generateVuetifyPalette;\n  export const makeCssAsString = lib.makeCssAsString;\n}\nexport default kmPalette;\n\n// const src = jetpack.cwd('src/assets/vuetify');\n// const pathes = src.find({ directories: true, files: false });\n// const data: any = {};\n// console.log('pathes', pathes);\n// const make = async () => {\n//   for (const path of pathes) {\n//     const staticPath = `src/assets/vuetify/${path}/index.ts`;\n//     const response = await jetpack.readAsync(staticPath, 'utf8');\n//     const removedUnwanteds =\n//       response\n//         ?.split('export default { palette };')\n//         .join('')\n//         .split(`import type { IPalette } from \"../types\";`)\n//         .join('')\n//         .split(`// ${path.toUpperCase()} Theme`)\n//         .join('')\n//         .split(`const palette: IPalette =`)\n//         .join('')\n//         .split('};')\n//         .join('}') || '{}';\n//     const fixedJsonData = jsonFix(removedUnwanteds).data;\n//     // @ts-ignore\n//     data[path] = fixedJsonData;\n//   }\n// };\n// await make();\n\n// import config from './assets/config-default-theme.json';\n// const takedConfig = lib.take<IDefaultPaletteType, IDefaultColor, IDefaultColorMode>(\n//   config as unknown as IConfig<'YES', IDefaultPaletteType, IDefaultColor, IDefaultColorMode>,\n//   { wood: true },\n// );\n\n// const vuetifyPalette = lib.generateVuetifyPalette<\n//   IDefaultPaletteType,\n//   IDefaultColor,\n//   IDefaultColorMode\n// >(takedConfig.config);\n// const { dark, ligh, variables, tailwind } = await lib.makeCssAsString<\n//   IDefaultPaletteType,\n//   IDefaultColor,\n//   IDefaultColorMode\n// >(takedConfig.config);\n\n// dark.forEach((item, index) => {\n//   jetpack.write(`./css-rendered/test-file-dark-${item.name}.css`, item.css);\n// });\n// ligh.forEach((item, index) => {\n//   jetpack.write(`./css-rendered/test-file-light-${item.name}.css`, item.css);\n// });\n// variables.forEach((item, index) => {\n//   jetpack.write(`./css-rendered/test-file-variable-${item.name}.css`, item.css);\n// });\n\n// jetpack.write(`./css-rendered/test-file-${tailwind.name}.css`, tailwind.css);\n"],"mappings":"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","names":["makeConfig","config","take","entryOptions","output","_key","key","generateVuetifyPalette","light","dark","onEachColorOfPalette","config","options","_key","key","light","dark","color","objectToCss","object","k","v","format","data","options","formatCss","css","makeCssAsString","config","rootVariables","lightClass","darkClass","tailwindTheme","onEachColorOfPalette","paletteName","paletteValue","themeMode","colorName","colorValue","variables","light","dark","key","css","objectToCss","formatCss","fileNames","items","item","tailwindImports","fileName","tailwind","lib_default","makeConfig","generateVuetifyPalette","take","kmPalette","lib_default","index_default"]}