Initialize the custom component. Args: *args: The args to pass to the component. **kwargs: The kwargs to pass to the component.
(self, *args, **kwargs)
| 1126 | props: Dict[str, Any] = {} |
| 1127 | |
| 1128 | def __init__(self, *args, **kwargs): |
| 1129 | """Initialize the custom component. |
| 1130 | |
| 1131 | Args: |
| 1132 | *args: The args to pass to the component. |
| 1133 | **kwargs: The kwargs to pass to the component. |
| 1134 | """ |
| 1135 | super().__init__(*args, **kwargs) |
| 1136 | |
| 1137 | # Unset the style. |
| 1138 | self.style = Style() |
| 1139 | |
| 1140 | # Set the tag to the name of the function. |
| 1141 | self.tag = format.to_title_case(self.component_fn.__name__) |
| 1142 | |
| 1143 | # Set the props. |
| 1144 | props = typing.get_type_hints(self.component_fn) |
| 1145 | for key, value in kwargs.items(): |
| 1146 | # Skip kwargs that are not props. |
| 1147 | if key not in props: |
| 1148 | continue |
| 1149 | |
| 1150 | # Get the type based on the annotation. |
| 1151 | type_ = props[key] |
| 1152 | |
| 1153 | # Handle event chains. |
| 1154 | if types._issubclass(type_, EventChain): |
| 1155 | value = self._create_event_chain(key, value) |
| 1156 | self.props[format.to_camel_case(key)] = value |
| 1157 | continue |
| 1158 | |
| 1159 | # Convert the type to a Var, then get the type of the var. |
| 1160 | if not types._issubclass(type_, Var): |
| 1161 | type_ = Var[type_] |
| 1162 | type_ = types.get_args(type_)[0] |
| 1163 | |
| 1164 | # Handle subclasses of Base. |
| 1165 | if types._issubclass(type_, Base): |
| 1166 | try: |
| 1167 | value = BaseVar( |
| 1168 | _var_name=value.json(), _var_type=type_, _var_is_local=True |
| 1169 | ) |
| 1170 | except Exception: |
| 1171 | value = Var.create(value) |
| 1172 | else: |
| 1173 | value = Var.create(value, _var_is_string=type(value) is str) |
| 1174 | |
| 1175 | # Set the prop. |
| 1176 | self.props[format.to_camel_case(key)] = value |
| 1177 | |
| 1178 | def __eq__(self, other: Any) -> bool: |
| 1179 | """Check if the component is equal to another. |