<p align=center>
  <img width=300 height=auto src="../../../public/bio_logo_transparent2.png"/>
</p>

# Bio: list of the supported modifiers
The modifiers are attributes starting with a `@` and are followed by the modified attribute.
This will allow the user to organize his data knowing the effect of each of these modifiers.
## 0.0.0.2021
### 6.1
<ul>
<details>
<summary> Private modifiers</summary>

> - `@private`: default modification of an attribute.
> - `@resolver` (readonly): in Async Components, Bio needs to know which method is used to render the component. Using this modifier will save the attribute as the resolver
> - `@neutral`: if the user wants the attribute not to be reactive
> - `@void` (readonly): saves readonly methods.
> - `@mutable` (readonly): the attribute will act as a getter and will update automatically, when a dependency is changed.
> - `@store`: the `@store` modifier will pick the attribute from the imported Store Component.
> - `@emit` (readonly, node): the attribute will be used as an emitter to the parent/child component.

</details>

<details>
<summary>Public modifiers</summary>

> - `@public`: this modification allows parent component and the component, to change the attribute. it acts like a property
> - `@in`: this modification allows only the parent component to change the attribute.
> - `@required`: this modification allows only the parent component to change the attribute, this set the attribute as required, so the attribute can't be undefined.

</details>

<details>
<summary>Configuration modifiers</summary>

> - `@url`: url parameter value injected to the attribute.
> - `@config`: the `@config` modifier can only be assigned to the root of the application. the attribute adds its value to the application configuration
> - `@env`: get the variable of environment

</details>
</ul>

### 6.2
> syntax: `AttributeModifier[[AttributeType][ Attribute|AttributeBoolean AttributeValue`
```ts
export component <C
  @public name=defaultValue
  @in[Map<string, User>] users
  @void sayHello={() => console.log(`Hello ${this.name}`)}>
  ...
</C>
```
### 6.3
> all attributes are private by default, if no value is provided they are set to true.
