@pixi/react
Version:
Write PixiJS applications using React declarative style.
39 lines (35 loc) • 1.58 kB
JavaScript
;
var EventPropNames = require('../constants/EventPropNames.js');
var PixiReactIgnoredProps = require('../constants/PixiReactIgnoredProps.js');
var applyProps = require('./applyProps.js');
var catalogue = require('./catalogue.js');
var convertStringToPascalCase = require('./convertStringToPascalCase.js');
var gentleCloneProps = require('./gentleCloneProps.js');
var log = require('./log.js');
var parseComponentType = require('./parseComponentType.js');
var prepareInstance = require('./prepareInstance.js');
;
function createInstance(type, props, root) {
log.log("info", "lifecycle::createInstance");
const parsedType = parseComponentType.parseComponentType(type);
const name = convertStringToPascalCase.convertStringToPascalCase(parsedType);
if (!(name in catalogue.catalogue)) {
throw new Error(`${name} is not part of the PIXI namespace! Did you forget to extend?`);
}
const PixiComponent = catalogue.catalogue[name];
const pixiProps = gentleCloneProps.gentleCloneProps(props, PixiReactIgnoredProps.PixiReactIgnoredProps);
Object.entries(props).forEach(([key, value]) => {
if (key in EventPropNames.ReactToPixiEventPropNames) {
const pixiEventName = EventPropNames.ReactToPixiEventPropNames[key];
pixiProps[pixiEventName] = value;
}
});
const instance = prepareInstance.prepareInstance(new PixiComponent(pixiProps), {
root,
type: parsedType
});
applyProps.applyProps(instance, props);
return instance;
}
exports.createInstance = createInstance;
//# sourceMappingURL=createInstance.js.map