UNPKG

@deck.gl/json

Version:

JSON format rendering components for deck.gl

50 lines (40 loc) 1.58 kB
// deck.gl // SPDX-License-Identifier: MIT // Copyright (c) vis.gl contributors import convertFunctions from './convert-functions'; // This attempts to instantiate a class, either as a class or as a React component export function instantiateClass(type, props, configuration) { // Find the class const Class = configuration.classes[type]; const Component = configuration.reactComponents[type]; // Check that the class is in the configuration. if (!Class && !Component) { const {log} = configuration; // eslint-disable-line if (log) { const stringProps = JSON.stringify(props, null, 0).slice(0, 40); log.warn(`JSON converter: No registered class of type ${type}(${stringProps}...) `); } return null; } if (Class) { return instantiateJavaScriptClass(Class, props, configuration); } return instantiateReactComponent(Component, props, configuration); } function instantiateJavaScriptClass(Class, props, configuration) { if (configuration.preProcessClassProps) { props = configuration.preProcessClassProps(Class, props, configuration); } props = convertFunctions(props, configuration); return new Class(props); } function instantiateReactComponent(Component, props, configuration) { const {React} = configuration; const {children = []} = props; delete props.children; if (configuration.preProcessClassProps) { props = configuration.preProcessClassProps(Component, props, configuration); } props = convertFunctions(props, configuration); return React.createElement(Component, props, children); }