UNPKG

@ibnlanre/builder

Version:

Creates a builder object for defining keys and values.

1 lines 1.56 kB
{"version":3,"sources":["../../src/react/create-builder-provider/createBuilderProvider.tsx"],"names":["createContext","builders","useContext"],"mappings":";;;;;AAGO,SAAS,sBACd,QACA,EAAA;AACA,EAAM,MAAA,cAAA,GAAiBA,mBAAwB,CAAA,EAAc,CAAA,CAAA;AAE7D,EAAA,SAAS,UAAa,GAAA;AACpB,IAAMC,MAAAA,SAAAA,GAAWC,iBAAW,cAAc,CAAA,CAAA;AAE1C,IAAA,IAAI,CAACD,SAAU,EAAA;AACb,MAAA,MAAM,OAAU,GAAA,oDAAA,CAAA;AAChB,MAAM,MAAA,IAAI,MAAM,OAAO,CAAA,CAAA;AAAA,KACzB;AAEA,IAAOA,OAAAA,SAAAA,CAAAA;AAAA,GACT;AAEA,EAAS,SAAA,eAAA,CAAgB,EAAE,QAAA,EAA4C,EAAA;AACrE,IAAA,2CACG,cAAe,CAAA,QAAA,EAAf,EAAwB,KAAA,EAAO,YAC7B,QACH,CAAA,CAAA;AAAA,GAEJ;AAEA,EAAO,OAAA,EAAE,YAAY,eAAgB,EAAA,CAAA;AACvC","file":"index.cjs","sourcesContent":["import { createContext, useContext } from \"react\";\r\nimport type { BuilderProviderProps, BuilderRecord } from \"../types\";\r\n\r\nexport function createBuilderProvider<Builders extends BuilderRecord>(\r\n builders: Builders\r\n) {\r\n const BuilderContext = createContext<Builders>({} as Builders);\r\n\r\n function useBuilder() {\r\n const builders = useContext(BuilderContext);\r\n\r\n if (!builders) {\r\n const message = \"useBuilder should be used within a BuilderProvider\";\r\n throw new Error(message);\r\n }\r\n\r\n return builders;\r\n }\r\n\r\n function BuilderProvider({ children }: BuilderProviderProps<Builders>) {\r\n return (\r\n <BuilderContext.Provider value={builders}>\r\n {children}\r\n </BuilderContext.Provider>\r\n );\r\n }\r\n\r\n return { useBuilder, BuilderProvider };\r\n}\r\n"]}