{"version":3,"file":"react-palette.mjs","sources":["../src/getPalette.ts","../src/usePalette.tsx","../src/Palette.tsx"],"sourcesContent":["import Vibrant from \"node-vibrant\";\nimport camelCase from \"lodash.camelcase\";\nimport invoke from 'lodash.invoke';\n\nexport type PaletteColors = {\n  vibrant?: string;\n  muted?: string;\n  darkVibrant?: string;\n  darkMuted?: string;\n  lightVibrant?: string;\n  lightMuted?: string;\n  [name: string]: string | undefined;\n};\n\nexport async function getPalette(src: string) {\n  const palette = await Vibrant.from(src).getPalette();\n  const setPaletteColor = (acc, paletteName) => ({\n    ...acc,\n    [camelCase(paletteName)]: invoke(palette, [paletteName, 'getHex'])\n  });\n\n  return Object.keys(palette).reduce<PaletteColors>(setPaletteColor, {});\n}\n","import React from \"react\";\nimport { getPalette, PaletteColors } from \"./getPalette\";\n\nexport type PaletteState = {\n  loading: boolean;\n  error?: Error;\n  data: PaletteColors;\n};\n\nconst initialState: PaletteState = {\n  loading: true,\n  data: {},\n  error: undefined,\n};\n\nfunction reducer(state: PaletteState, action): PaletteState {\n  switch (action.type) {\n    case \"getPalette\":\n      return initialState;\n    case \"resolvePalette\":\n      return { ...state, data: action.payload, loading: false };\n    case \"rejectPalette\":\n      return { ...state, error: action.payload, loading: false };\n  }\n}\n\nexport function usePalette(src: string) {\n  const [state, dispatch] = React.useReducer(reducer, initialState);\n\n  React.useEffect(() => {\n    dispatch({ type: \"getPalette\" });\n\n    getPalette(src)\n      .then((palette) => {\n        dispatch({ type: \"resolvePalette\", payload: palette });\n      })\n      .catch((ex) => {\n        dispatch({ type: \"rejectPalette\", payload: ex });\n      });\n  }, [src]);\n\n  return state;\n}\n","import React, { cloneElement, ReactNode } from \"react\";\nimport { PaletteState, usePalette } from \"./usePalette\";\n\nexport type PaletteProps = {\n  src: string;\n  children: JSX.Element;\n};\n\nexport const Palette: React.FC<PaletteProps> = ({\n  src,\n  children\n}: PaletteProps) => {\n  const palette = usePalette(src);\n\n  return cloneElement(children, {\n    palette\n  })\n};\n"],"names":["getPalette","src","Vibrant","from","palette","Object","keys","reduce","acc","paletteName","_extends2","_extends","camelCase","invoke","e","Promise","reject","loading","data","error","undefined","reducer","state","action","type","initialState","payload","usePalette","React","useReducer","_React$useReducer","dispatch","useEffect","then","ex","Palette","_ref","children"],"mappings":"qWAcsBA,MAAAA,SAAWC,OACTC,OAAAA,QAAAA,QAAAA,EAAQC,KAAKF,GAAKD,cAAlCI,KAAAA,SAAAA,GAMN,OAAOC,OAAOC,KAAKF,GAASG,OALJ,SAACC,EAAKC,GAAW,IAAAC,EAAA,OAAAC,EAAA,CAAA,EACpCH,IAAGE,EAAA,CAAA,GACLE,EAAUH,IAAeI,EAAOT,EAAS,CAACK,EAAa,WAAUC,GAAA,EAGD,CAAE,EAAE,EACxE,CAAA,MAAAI,GAAA,OAAAC,QAAAC,OAAAF,EAAA,CAAA,ICbkC,CACjCG,SAAS,EACTC,KAAM,GACNC,WAAOC,GAGT,SAAgBC,EAACC,EAAqBC,GACpC,OAAQA,EAAOC,MACb,IAAK,aACH,OAAmBC,EACrB,IAAK,iBACH,OAAYH,EAAAA,CAAAA,EAAAA,EAAOJ,CAAAA,KAAMK,EAAOG,QAAST,SAAS,IACpD,IAAK,gBACH,OAAYK,EAAAA,CAAAA,EAAAA,GAAOH,MAAOI,EAAOG,QAAST,SAAS,IAEzD,UAE0BU,EAAC1B,GACzB,IAA0B2B,EAAAA,EAAMC,WAAWR,EAASI,GAA7CH,EAAKQ,EAAA,GAAEC,EAEdH,EAAAA,GAYA,OAZAA,EAAMI,UAAU,WACdD,EAAS,CAAEP,KAAM,eAEjBxB,EAAWC,GACRgC,KAAK,SAAC7B,GACL2B,EAAS,CAAEP,KAAM,iBAAkBE,QAAStB,GAC9C,GACM,MAAC,SAAC8B,GACNH,EAAS,CAAEP,KAAM,gBAAiBE,QAASQ,GAC7C,EACJ,EAAG,CAACjC,IAGNqB,CAAA,CClCaa,IAAOA,EAA2B,SAA3BC,OAElBC,IAAAA,SAEajC,EAAGuB,EAHbS,EAAHnC,KAKA,SAAoBoC,EAAU,CAC5BjC,QAAAA,GAEJ"}