Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const typeCode = getTypeCode(typeInfo.info);
if (typeCode === SerializationTypeCode.UserDefined) {
template = oniSave.templates.find(
x => x.name === member.type.templateName!
);
} else if (LIST_TYPES.indexOf(typeCode) !== -1) {
i++;
if (i === templatePath.length) {
// Targeting an array but no index yet.
break;
}
if (
getTypeCode(typeInfo.subTypes![0].info) ===
SerializationTypeCode.UserDefined
) {
typeInfo = typeInfo.subTypes![0];
template = oniSave.templates.find(
x => x.name === typeInfo.templateName
);
}
} else if (typeCode === SerializationTypeCode.Dictionary) {
i++;
if (i === templatePath.length) {
// Targeting a dict but no index yet.
break;
}
// Select key or value
i++;
if (
getTypeCode(typeInfo.subTypes![0].info) ===
SerializationTypeCode.UserDefined
) {
const arrayTypeInfo = typeInfo.subTypes![0];
template = templates.find(x => x.name === arrayTypeInfo.templateName);
if (template == null) {
// Unknown template.
return null;
}
}
} else if (code === SerializationTypeCode.Dictionary) {
i++;
if (
getTypeCode(typeInfo.subTypes![1].info) ===
SerializationTypeCode.UserDefined
) {
const arrayTypeInfo = typeInfo.subTypes![1];
template = templates.find(x => x.name === arrayTypeInfo.templateName);
if (template == null) {
// Unknown template.
return null;
}
}
}
}
return template.name;
},
const part = templatePath[i];
if (template == null) {
return null;
}
const member =
template.fields.find(x => x.name === part) ||
template.properties.find(x => x.name === part);
if (!member) {
return null;
}
typeInfo = member.type;
const typeCode = getTypeCode(typeInfo.info);
if (typeCode === SerializationTypeCode.UserDefined) {
template = oniSave.templates.find(
x => x.name === member.type.templateName!
);
} else if (LIST_TYPES.indexOf(typeCode) !== -1) {
i++;
if (i === templatePath.length) {
// Targeting an array but no index yet.
break;
}
if (
getTypeCode(typeInfo.subTypes![0].info) ===
SerializationTypeCode.UserDefined
) {
// Chase the path up the template to see if we have entered
// any sub-templates.
for (let i = 0; i < subPath.length; i++) {
const part = subPath[i];
const member =
template.fields.find(x => x.name === part) ||
template.properties.find(x => x.name === part);
if (!member) {
break;
}
const typeInfo: TypeInfo = member.type;
const code = getTypeCode(typeInfo.info);
if (code === SerializationTypeCode.UserDefined) {
template = templates.find(x => x.name === typeInfo.templateName);
if (template == null) {
// Unknown template.
return null;
}
} else if (LIST_TYPES.indexOf(code) !== -1) {
i++;
if (
getTypeCode(typeInfo.subTypes![0].info) ===
SerializationTypeCode.UserDefined
) {
const arrayTypeInfo = typeInfo.subTypes![0];
template = templates.find(x => x.name === arrayTypeInfo.templateName);
const template = createSelector(oniSave, typeInfo, (oniSave, typeInfo) => {
if (!oniSave || !typeInfo) {
return null;
}
const typeCode = getTypeCode(typeInfo.info);
if (typeCode !== SerializationTypeCode.UserDefined) {
return null;
}
let template = oniSave.templates.find(x => x.name === typeInfo.templateName);
return template;
});
export default function getFieldElementClass(
typeInfo: TypeInfo,
short?: boolean
): React.ComponentType {
const code = getTypeCode(typeInfo.info);
switch (code) {
case SerializationTypeCode.Array:
return (props: EditorFieldProps) =>
short ? (
[Edit Array]
) : (
);
case SerializationTypeCode.Boolean:
return (props: EditorFieldProps) => ;
case SerializationTypeCode.Byte:
return (props: EditorFieldProps) => (
);