11import { createContext , type PropsWithChildren , useContext , useMemo } from 'react'
22import { useRequireAnchor } from './RequireAnchorContext'
33import { useRequireJpCoats } from './RequireJpCoatsContext'
4+ import { useRequireCosmo } from './contexts/cosmo-context'
45import dmcNamedColorCodes from './assets/dmc-color-codes-names.json'
56import dmcNewJpCoatsColors from './assets/dmc-old-new-jp-coats-colors.json'
67import dmcCosmoColors from './assets/dmc-cosmo-colors.json'
@@ -17,6 +18,7 @@ const ColorsContext = createContext<Colors | undefined>(undefined)
1718export function ColorsProvider ( { children} : PropsWithChildren ) {
1819 const { requireAnchor} = useRequireAnchor ( )
1920 const { requireJpCoats} = useRequireJpCoats ( )
21+ const { requireCosmo} = useRequireCosmo ( )
2022 const { sortOption} = useSort ( )
2123 const dataByDmcCode = useMemo < Record < string , EmbroideryFlossColor > > ( ( ) => {
2224 const result : Record < string , EmbroideryFlossColor > = { }
@@ -51,7 +53,7 @@ export function ColorsProvider({children}: PropsWithChildren) {
5153 const contextProps = useMemo (
5254 ( ) => ( {
5355 colors : colors
54- . filter ( ( { anchorCode, jpCoatsOld, jpCoatsNew} ) => {
56+ . filter ( ( { anchorCode, cosmoCodes , jpCoatsOld, jpCoatsNew} ) => {
5557 if ( requireAnchor && anchorCode === undefined ) return false
5658 if (
5759 requireJpCoats &&
@@ -60,11 +62,14 @@ export function ColorsProvider({children}: PropsWithChildren) {
6062 ) {
6163 return false
6264 }
65+ if ( requireCosmo && ( cosmoCodes === undefined || cosmoCodes . length < 1 ) ) {
66+ return false
67+ }
6368 return true
6469 } )
6570 . sort ( colorCompareFunction ( sortOption ) ) ,
6671 } ) ,
67- [ colors , requireAnchor , requireJpCoats , sortOption ]
72+ [ colors , requireAnchor , requireCosmo , requireJpCoats , sortOption ]
6873 )
6974 return (
7075 < ColorsContext . Provider value = { contextProps } >
0 commit comments