* Copyright (c) 2023 - present TinyEngine Authors.
* Copyright (c) 2023 - present Huawei Cloud Computing Technologies Co., Ltd.
*
* Use of this source code is governed by an MIT-style license.
*
* THE OPEN SOURCE SOFTWARE IN THIS PRODUCT IS DISTRIBUTED IN THE HOPE THAT IT WILL BE USEFUL,
* BUT WITHOUT ANY WARRANTY, WITHOUT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR
* A PARTICULAR PURPOSE. SEE THE APPLICABLE LICENSES FOR MORE DETAILS.
*
*/
import { BUILTIN_COMPONENT_NAME, TINY_ICON } from '../constant'
const text2Span = (schema) => {
const { componentName, props = {} } = schema
if (componentName === BUILTIN_COMPONENT_NAME.TEXT) {
schema.componentName = 'span'
if (props.text) {
schema.children = props.text
delete props.text
}
}
return schema
}
const tinyIcon = (schema) => {
const { componentName, props = {} } = schema
if (componentName === BUILTIN_COMPONENT_NAME.ICON && props.name) {
const iconName = props.name.startsWith(TINY_ICON) ? props.name : `Tiny${props.name}`
schema.componentName = iconName
delete props.name
}
return schema
}
const tinyGrid = (schema) => {
const { componentName, props = {} } = schema
if (componentName === 'TinyGrid' && props.data && props.fetchData) {
delete props.data
}
return schema
}
const collection2Div = (schema) => {
const { componentName } = schema
if (componentName === BUILTIN_COMPONENT_NAME.COLLECTION) {
schema.componentName = 'div'
}
return schema
}
const component2Block = (schema) => {
const { componentType, componentName, fileName } = schema
if (componentType === BUILTIN_COMPONENT_NAME.BLOCK) {
schema.fileName = componentName
schema.componentName = BUILTIN_COMPONENT_NAME.BLOCK
}
if (componentName && componentName === fileName) {
schema.componentName = BUILTIN_COMPONENT_NAME.BLOCK
}
return schema
}
const preProcess = (schema) => {
const { children } = schema
text2Span(schema)
tinyIcon(schema)
tinyGrid(schema)
collection2Div(schema)
component2Block(schema)
if (Array.isArray(children)) {
children.forEach(preProcess)
}
return schema
}
export { preProcess, tinyIcon }