# AtloriaElement

**Kind:** Class

**Source:** [`atloria-monorepo/packages/ui-core/src/lib/reactive-element-base.ts`](https://github.com/sherkety/atloria/blob/main/atloria-monorepo/packages/ui-core/src/lib/reactive-element-base.ts#L23)

A LitElement that guarantees its reactive properties are actually reactive.

Lit installs an accessor per declared property on the PROTOTYPE. Under ES2022 class-field
semantics (`useDefineForClassFields`, which several bundlers apply regardless of this
package's own tsconfig) a declared field is additionally installed on each INSTANCE with
`[[Define]]`. The instance property wins, so:

  - every assignment writes a plain data property,
  - Lit's setter never runs and nothing is marked changed,
  - the component renders once with its defaults and never again.

Nothing throws. The value is present and readable, which is what makes it so hard to spot:
the published API playground held a 524-path spec in `spec`, 633 items in the endpoint
list's `endpoints`, and rendered "No endpoints found".

Deleting the own property re-exposes the accessor; re-assigning the captured value sends it
through the setter and records the change. This is what Lit's own pre-upgrade rescue does —
done here so it holds however the consuming build compiles class fields.

**Extends:** `LitElement`

## Methods

| Method | Signature | Returns |
|---|---|---|
| `connectedCallback` | `connectedCallback()` | `void` |
| `rescueShadowedProperties` | `rescueShadowedProperties()` | `void` |

## Where it refuses work

- `AtloriaElement` stops the work with an early return when `!declared`.
