## class: `WeavyTypeComponent`

Base class for exposed/public weavy components. This class provides common external properties and internal data provided as contexts for sub components.

### Fields

| Name             | Type                        | Default            | Description                                                                                                            | Inherited From |
| ---------------- | --------------------------- | ------------------ | ---------------------------------------------------------------------------------------------------------------------- | -------------- |
| `link`           | `LinkType \| undefined`     |                    | Any provided link that should be loaded, shown and highlighted.                                                        |                |
| `features`       | `string \| undefined`       |                    | Config for enabling/disabling specific features in the weavy component.&#xA;Prefix a feature with minus to disable it. |                |
| `agent`          | `string \| undefined`       |                    | The configured uid of the agent for the weavy component.                                                               |                |
| `contextualData` | `string \| undefined`       |                    | Contextual data for agents to reference. Provide descriptive data for optimal results.&#xA;&#xA;### Examples           |                |
| `annotations`    | `AnnotationsAppearanceType` | `"buttons-inline"` | Appearance of annotations.                                                                                             |                |
| `enterToSend`    | `EnterToSend`               | `"auto"`           | Enter-to-send keymap in the editor. \`"modifier"\` is \`Enter\` combined with \`Ctrl\` or \`Cmd\`.                     |                |
| `reactions`      | `string`                    | `"😍 😎 😉 😜 👍"` | A space separated string of available reaction emojis in unicode.                                                      |                |
| `weavy`          | `WeavyType \| undefined`    |                    | The consumed weavy context.                                                                                            | WeavyComponent |
| `contextId`      | `ContextIdType`             |                    | Contextual guid that is unique for the client context.                                                                 | WeavyComponent |
| `user`           | `UserType \| undefined`     |                    | The current user.                                                                                                      | WeavyComponent |

### Methods

| Name        | Description                                          | Parameters | Return                    | Inherited From |
| ----------- | ---------------------------------------------------- | ---------- | ------------------------- | -------------- |
| `whenUser`  | Resolves when current user data is available.        |            | `Promise<UserType>`       | WeavyComponent |
| `whenWeavy` | Resolves when a weavy context is available.          |            | `Promise<WeavyType>`      | WeavyComponent |
| `whenReady` | Resolves when the component has rendered first time. |            | `Promise<WeavyComponent>` | WeavyComponent |

### Events

| Name    | Type          | Description                      | Inherited From |
| ------- | ------------- | -------------------------------- | -------------- |
| `ready` | `CustomEvent` | When the component has rendered. | WeavyComponent |

### Attributes

| Name             | Field          | Inherited From |
| ---------------- | -------------- | -------------- |
| `link`           | link           |                |
| `features`       | features       |                |
| `agent`          | agent          |                |
| `contextualData` | contextualData |                |
| `annotations`    | annotations    |                |
| `enterToSend`    | enterToSend    |                |
| `reactions`      | reactions      |                |

<details><summary>Private API</summary>

### Fields

| Name                         | Privacy   | Type                                                               | Default                                                                                                                   | Description                             | Inherited From |
| ---------------------------- | --------- | ------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------- | -------------- |
| `visibilityElement`          | protected | `Element \| undefined`                                             |                                                                                                                           | Element to match visibility on.         |                |
| `componentTypes`             | protected | `AppTypeGuid[]`                                                    |                                                                                                                           | Any app types handled by the component. |                |
| `#data`                      | private   | `ContextDataType[] \| undefined`                                   |                                                                                                                           |                                         |                |
| `#annotations`               | private   | `WeavyComponentSettingProps["annotations"] \| undefined`           |                                                                                                                           |                                         |                |
| `#enterToSend`               | private   | `EnterToSend \| undefined`                                         |                                                                                                                           |                                         |                |
| `#reactions`                 | private   | `WeavyComponentSettingProps["reactions"] \| undefined`             |                                                                                                                           |                                         |                |
| `#resolveContextDataBlobs`   | private   | `(blobs: ContextDataBlobsType) => void \| undefined`               |                                                                                                                           |                                         |                |
| `#whenContextDataBlobs`      | private   |                                                                    | `new Promise<ContextDataBlobsType>((r) => { this.#resolveContextDataBlobs = r; })`                                        |                                         |                |
| `#resolveComponentFeatures`  | private   | `(componentFeatures: ComponentFeaturePolicy) => void \| undefined` |                                                                                                                           |                                         |                |
| `#whenComponentFeatures`     | private   |                                                                    | `new Promise<ComponentFeaturePolicy>((r) => { this.#resolveComponentFeatures = r; })`                                     |                                         |                |
| `#resolveLink`               | private   | `(link: LinkType) => void \| undefined`                            |                                                                                                                           |                                         |                |
| `#whenLink`                  | private   |                                                                    | `new Promise<LinkType>((r) => { this.#resolveLink = r; })`                                                                |                                         |                |
| `#resolveSettings`           | private   | `(settings: WeavyComponentSettingsType) => void \| undefined`      |                                                                                                                           |                                         |                |
| `#whenSettings`              | private   |                                                                    | `new Promise<WeavyComponentSettingsType>((r) => { this.#resolveSettings = r; })`                                          |                                         |                |
| `#contextDataRefs`           | private   | `Map<ContextDataType, DataRefType>`                                | `new Map()`                                                                                                               |                                         |                |
| `#uploadContextDataMutation` | private   |                                                                    | `new MutationController<BlobType, Error, MutateFileProps, FileMutationContextType>(this)`                                 |                                         |                |
| `#mutatingContextData`       | private   |                                                                    | `new MutationStateController< BlobType \| FileType \| EmbedType, Error, MutateFileProps, FileMutationContextType >(this)` |                                         |                |
| `#resolveContextId`          | private   | `(contextId: ContextIdType) => void \| undefined`                  |                                                                                                                           |                                         | WeavyComponent |
| `#whenContextId`             | private   |                                                                    | `new Promise<ContextIdType>((r) => { this.#resolveContextId = r; })`                                                      |                                         | WeavyComponent |
| `#resolveUser`               | private   | `(user: UserType) => void \| undefined`                            |                                                                                                                           |                                         | WeavyComponent |
| `#whenUser`                  | private   |                                                                    | `new Promise<UserType>((r) => { this.#resolveUser = r; })`                                                                |                                         | WeavyComponent |
| `#resolveWeavy`              | private   | `(weavy: WeavyType) => void \| undefined`                          |                                                                                                                           |                                         | WeavyComponent |
| `#whenWeavy`                 | private   |                                                                    | `new Promise<WeavyType>((r) => { this.#resolveWeavy = r; })`                                                              |                                         | WeavyComponent |
| `#resolveReady`              | private   | `(component: WeavyComponent) => void \| undefined`                 |                                                                                                                           |                                         | WeavyComponent |
| `#whenReady`                 | private   |                                                                    | `new Promise<WeavyComponent>((r) => { this.#resolveReady = r; })`                                                         |                                         | WeavyComponent |
| `#userQuery`                 | private   |                                                                    | `new QueryController<UserType>(this)`                                                                                     |                                         | WeavyComponent |

</details>

<hr/>

## Exports

| Kind | Name                  | Declaration         | Module                              | Package |
| ---- | --------------------- | ------------------- | ----------------------------------- | ------- |
| `js` | `WeavyTypeComponent`  | WeavyTypeComponent  | lib/classes/weavy-type-component.ts |         |
| `js` | `AppTypeGuids`        | AppTypeGuids        | lib/classes/weavy-type-component.ts |         |
| `js` | `AppTypeStrings`      | AppTypeStrings      | lib/classes/weavy-type-component.ts |         |
| `js` | `AgentAppTypeGuids`   | AgentAppTypeGuids   | lib/classes/weavy-type-component.ts |         |
| `js` | `AgentAppTypeStrings` | AgentAppTypeStrings | lib/classes/weavy-type-component.ts |         |
