mirror of
https://github.com/maputnik/editor.git
synced 2026-09-02 02:17:26 +00:00
ad69cbdb20
Resolves #803 This is an initial commit to allow migrating to typescript bit by bit. It introduces vite. It removes all the webpack configuration (which I have no clue what all the profiling are needed for, and couldn't find anything in the readme). It also changes a single file from javascript to typescript: `urlopen.js` -> `urlopen.ts` Which was done manually, later on I'll see if I can automate most of the migration. For now, everything seems to work as expected. I also upgrades storybook to use vite and renames the stories to jsx (I honestly don't know why this complexity is needed here, but I'll keep it for now). cc: @damianstasik
51 lines
1.1 KiB
React
51 lines
1.1 KiB
React
import React from 'react'
|
|
import PropTypes from 'prop-types'
|
|
import Block from './Block'
|
|
import InputSpec from './InputSpec'
|
|
import Fieldset from './Fieldset'
|
|
|
|
|
|
const typeMap = {
|
|
color: () => Block,
|
|
enum: ({fieldSpec}) => (Object.keys(fieldSpec.values).length <= 3 ? Fieldset : Block),
|
|
boolean: () => Block,
|
|
array: () => Fieldset,
|
|
resolvedImage: () => Block,
|
|
number: () => Block,
|
|
string: () => Block,
|
|
formatted: () => Block,
|
|
};
|
|
|
|
export default class SpecField extends React.Component {
|
|
static propTypes = {
|
|
...InputSpec.propTypes,
|
|
name: PropTypes.string,
|
|
}
|
|
|
|
render() {
|
|
const {props} = this;
|
|
|
|
const fieldType = props.fieldSpec.type;
|
|
|
|
const typeBlockFn = typeMap[fieldType];
|
|
|
|
let TypeBlock;
|
|
if (typeBlockFn) {
|
|
TypeBlock = typeBlockFn(props);
|
|
}
|
|
else {
|
|
console.warn("No such type for '%s'", fieldType);
|
|
TypeBlock = Block;
|
|
}
|
|
|
|
return <TypeBlock
|
|
label={props.label}
|
|
action={props.action}
|
|
fieldSpec={this.props.fieldSpec}
|
|
>
|
|
<InputSpec {...props} />
|
|
</TypeBlock>
|
|
}
|
|
}
|
|
|