@itwin/presentation-components
Version:
React components based on iTwin.js Presentation library
37 lines • 1.55 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SchemaMetadataContextProvider = SchemaMetadataContextProvider;
exports.useSchemaMetadataContext = useSchemaMetadataContext;
const jsx_runtime_1 = require("react/jsx-runtime");
/*---------------------------------------------------------------------------------------------
* Copyright (c) Bentley Systems, Incorporated. All rights reserved.
* See LICENSE.md in the project root for license terms and full copyright notice.
*--------------------------------------------------------------------------------------------*/
/** @packageDocumentation
* @module Core
*/
const react_1 = require("react");
const schemaMetadataContext = (0, react_1.createContext)(undefined);
/**
* Provides schema metadata to components that work with schemas.
* @public
*/
function SchemaMetadataContextProvider({ schemaContextProvider, imodel, children }) {
const [state, setState] = (0, react_1.useState)(() => ({
schemaContext: schemaContextProvider(imodel),
}));
(0, react_1.useEffect)(() => {
setState({
schemaContext: schemaContextProvider(imodel),
});
}, [imodel, schemaContextProvider]);
return (0, jsx_runtime_1.jsx)(schemaMetadataContext.Provider, { value: state, children: children });
}
/**
* Returns context provided by [[SchemaMetadataContextProvider]].
* @public
*/
function useSchemaMetadataContext() {
return (0, react_1.useContext)(schemaMetadataContext);
}
//# sourceMappingURL=SchemaMetadataContext.js.map