proton-native/src/utils/createElement.js
Niklas Mischkulnig 06ee92d1f7 Add styled text (#141)
* Proof of concept fonts

* Inheirit font style

* Use style prop

* More font attributes

* Reset demo

* Fixes

* Font example

* Text transforms, integrate FontButton

* Add docs

* Add StyledText

* Update package lock

* Add StyledText to prop checking

* Update documentation for StyledText

* Add markdown prettier

* Change default font size
2018-06-09 14:04:49 -04:00

83 lines
2.7 KiB
JavaScript

import {
App,
Text,
Root,
Window,
Button,
VerticalBox,
HorizontalBox,
Entry,
PasswordEntry,
MultilineEntry,
ColorButton,
Form,
Tab,
Group,
Grid,
Checkbox,
Spinbox,
Slider,
Combobox,
RadioButton,
EditableCombobox,
HorizontalSeparator,
VerticalSeparator,
ProgressBar,
MenuBar,
FontButton,
Area,
} from '../components/';
import { ROOT_NODE } from '../render/';
function getHostContextNode(rootNode) {
return ROOT_NODE;
}
// Creates an element with an element type, props and a root instance
function createElement(type, props) {
const COMPONENTS = {
ROOT: () => new Root(),
TEXT: () => new Text(ROOT_NODE, props),
APP: () => new App(ROOT_NODE, props),
WINDOW: () => new Window(ROOT_NODE, props),
BUTTON: () => new Button(ROOT_NODE, props),
VERTICALBOX: () => new VerticalBox(ROOT_NODE, props),
HORIZONTALBOX: () => new HorizontalBox(ROOT_NODE, props),
ENTRY: () => new Entry(ROOT_NODE, props),
PASSWORDENTRY: () => new PasswordEntry(ROOT_NODE, props),
MULTILINEENTRY: () => new MultilineEntry(ROOT_NODE, props),
COLORBUTTON: () => new ColorButton(ROOT_NODE, props),
FORM: () => new Form(ROOT_NODE, props),
TAB: () => new Tab(ROOT_NODE, props),
GROUP: () => new Group(ROOT_NODE, props),
GRID: () => new Grid(ROOT_NODE, props),
CHECKBOX: () => new Checkbox(ROOT_NODE, props),
SPINBOX: () => new Spinbox(ROOT_NODE, props),
SLIDER: () => new Slider(ROOT_NODE, props),
COMBOBOX: () => new Combobox(ROOT_NODE, props),
COMBOBOXITEM: () => new Combobox.Item(ROOT_NODE, props),
RADIOBUTTON: () => new RadioButton(ROOT_NODE, props),
RADIOBUTTONITEM: () => new RadioButton.Item(ROOT_NODE, props),
EDITABLECOMBOBOX: () => new EditableCombobox(ROOT_NODE, props),
HORIZONTALSEPARATOR: () => new HorizontalSeparator(ROOT_NODE, props),
VERTICALSEPARATOR: () => new VerticalSeparator(ROOT_NODE, props),
PROGRESSBAR: () => new ProgressBar(ROOT_NODE, props),
MENUBAR: () => new MenuBar(ROOT_NODE, props),
MENUBARITEM: () => new MenuBar.Item(ROOT_NODE, props),
FONTBUTTON: () => new FontButton(ROOT_NODE, props),
AREA: () => new Area(ROOT_NODE, props),
AREARECTANGLE: () => new Area.Rectangle(ROOT_NODE, props),
AREALINE: () => new Area.Line(ROOT_NODE, props),
AREAARC: () => new Area.Arc(ROOT_NODE, props),
AREABEZIER: () => new Area.Bezier(ROOT_NODE, props),
AREAPATH: () => new Area.Path(ROOT_NODE, props),
AREAGROUP: () => new Area.Group(ROOT_NODE, props),
AREACIRCLE: () => new Area.Circle(ROOT_NODE, props),
AREATEXT: () => new Area.Text(ROOT_NODE, props),
default: undefined,
};
return COMPONENTS[type]() || COMPONENTS.default;
}
export { createElement, getHostContextNode };