UNPKG

@ibnlanre/builder

Version:

Creates a builder object for defining keys and values.

1 lines 1.5 kB
{"version":3,"sources":["../../src/react/create-builder-provider/createBuilderProvider.tsx"],"names":["createContext","builders","use","jsx"],"mappings":";;;;;;AAIO,SAAS,sBACd,QAAA,EACA;AACA,EAAA,MAAM,cAAA,GAAiBA,mBAAA,CAAwB,EAAc,CAAA;AAE7D,EAAA,SAAS,UAAA,GAAa;AACpB,IAAA,MAAMC,SAAAA,GAAWC,UAAI,cAAc,CAAA;AAEnC,IAAA,IAAI,CAACD,SAAAA,EAAU;AACb,MAAA,MAAM,OAAA,GAAU,oDAAA;AAChB,MAAA,MAAM,IAAI,MAAM,OAAO,CAAA;AAAA,IACzB;AAEA,IAAA,OAAOA,SAAAA;AAAA,EACT;AAEA,EAAA,SAAS,eAAA,CAAgB,EAAE,QAAA,EAAS,EAAmC;AACrE,IAAA,uBACEE,cAAA,CAAC,cAAA,EAAA,EAAe,KAAA,EAAO,QAAA,EACpB,QAAA,EACH,CAAA;AAAA,EAEJ;AAEA,EAAA,OAAO,EAAE,iBAAiB,UAAA,EAAW;AACvC","file":"index.cjs","sourcesContent":["import type { BuilderProviderProps, BuilderRecord } from \"../types\";\r\n\nimport { createContext, use } from \"react\";\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 = use(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 value={builders}>\r\n {children}\r\n </BuilderContext>\r\n );\r\n }\r\n\r\n return { BuilderProvider, useBuilder };\r\n}\r\n"]}