# andreaslborg/hideit architecture

> Architecture diagram of the GitHub repository andreaslborg/hideit, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-11). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/andreaslborg/hideit
- Repository: https://github.com/andreaslborg/hideit

## Overview

Hide It is an Umbraco package that lets editors mark blocks hidden, removes those blocks from Block List and Block Grid frontend values, and excludes hidden content from search indexing. The backoffice action is exposed conditionally when a block’s settings type has the configured property; it retrieves configuration and updates the block’s visual state. On the server, Umbraco-registered converters filter delivery values, while a separate index-value factory handles search. The graph preserves documented manual filtering and custom filter extensions. Some relationships are based on README or SOURCE INDEX references because their implementation excerpts were not provided.

Main entry points: [`Composers/HideItComposer.cs`](https://github.com/andreaslborg/hideit/blob/main/Composers/HideItComposer.cs) (Umbraco composer), [`ValueConverters/HideItBlockListPropertyValueConverter.cs`](https://github.com/andreaslborg/hideit/blob/main/ValueConverters/HideItBlockListPropertyValueConverter.cs) (Block List converter), [`PropertyEditors/HideItBlockValuePropertyIndexValueFactory.cs`](https://github.com/andreaslborg/hideit/blob/main/PropertyEditors/HideItBlockValuePropertyIndexValueFactory.cs) (Search index factory), [`Client/src/elements/hide-it-block-action.element.ts`](https://github.com/andreaslborg/hideit/blob/main/Client/src/elements/hide-it-block-action.element.ts) (Block action)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_editor["Backoffice editing"]
  node_action["Block action"]
  node_actionmanifest["Action registration<br/>[manifest.ts]"]
  node_condition["Property condition"]
  node_conditionmanifest["Condition registration<br/>[manifest.ts]"]
  node_clientconfig["Client configuration<br/>[hide-it-config.ts]"]
end

subgraph group_delivery["Frontend delivery"]
  node_listconverter["Block List converter"]
  node_gridconverter["Block Grid converter"]
  node_blockfilters["Visibility filtering<br/>[BlockExtensions.cs]"]
  node_filterextensions["Custom filter extensions"]
  node_manualfiltering["Manual filtering API<br/>[BlockExtensions.cs]"]
end

subgraph group_search["Search indexing"]
  node_indexfactory["Search index factory"]
  node_indexmodel["Index value model"]
end

subgraph group_setup["Package configuration"]
  node_api["Configuration API"]
  node_settings["Hide It settings<br/>[HideItSettings.cs]"]
  node_composer["Umbraco composer<br/>[HideItComposer.cs]"]
end

node_editor(("Content editor"))
node_frontend(("Umbraco frontend"))
node_search(("Umbraco search indexing"))

node_editor -->|"uses"| node_action
node_actionmanifest -->|"registers"| node_action
node_conditionmanifest -->|"registers"| node_condition
node_action -->|"loads options"| node_clientconfig
node_condition -->|"checks alias"| node_clientconfig
node_clientconfig -->|"fetches configuration"| node_api
node_api -->|"reads options"| node_settings
node_composer -->|"configures"| node_settings
node_composer -->|"registers converter"| node_listconverter
node_composer -->|"registers converter"| node_gridconverter
node_composer -->|"registers factory"| node_indexfactory
node_composer -->|"registers filters"| node_filterextensions
node_listconverter -->|"filters values"| node_blockfilters
node_listconverter -->|"applies extensions"| node_filterextensions
node_gridconverter -.->|"filters values"| node_blockfilters
node_frontend -.->|"requests block values"| node_listconverter
node_frontend -.->|"requests block values"| node_gridconverter
node_manualfiltering -->|"exposes filtering"| node_blockfilters
node_search -.->|"requests index values"| node_indexfactory
node_indexfactory -->|"uses model"| node_indexmodel
node_indexfactory -->|"reads alias"| node_settings

click node_action "https://github.com/andreaslborg/hideit/blob/main/Client/src/elements/hide-it-block-action.element.ts"
click node_actionmanifest "https://github.com/andreaslborg/hideit/blob/main/Client/src/actions/manifest.ts"
click node_condition "https://github.com/andreaslborg/hideit/blob/main/Client/src/conditions/has-hide-it-property.condition.ts"
click node_conditionmanifest "https://github.com/andreaslborg/hideit/blob/main/Client/src/conditions/manifest.ts"
click node_clientconfig "https://github.com/andreaslborg/hideit/blob/main/Client/src/hide-it-config.ts"
click node_api "https://github.com/andreaslborg/hideit/blob/main/Controllers/HideItConfigurationController.cs"
click node_settings "https://github.com/andreaslborg/hideit/blob/main/HideItSettings.cs"
click node_composer "https://github.com/andreaslborg/hideit/blob/main/Composers/HideItComposer.cs"
click node_listconverter "https://github.com/andreaslborg/hideit/blob/main/ValueConverters/HideItBlockListPropertyValueConverter.cs"
click node_gridconverter "https://github.com/andreaslborg/hideit/blob/main/ValueConverters/HideItBlockGridPropertyValueConverter.cs"
click node_blockfilters "https://github.com/andreaslborg/hideit/blob/main/BlockExtensions.cs"
click node_filterextensions "https://github.com/andreaslborg/hideit/blob/main/Filters/HideItBlockFilters.cs"
click node_manualfiltering "https://github.com/andreaslborg/hideit/blob/main/BlockExtensions.cs"
click node_indexfactory "https://github.com/andreaslborg/hideit/blob/main/PropertyEditors/HideItBlockValuePropertyIndexValueFactory.cs"
click node_indexmodel "https://github.com/andreaslborg/hideit/blob/main/PropertyEditors/Models/HideItIndexValueFactoryBlockValue.cs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_action,node_actionmanifest,node_condition,node_conditionmanifest,node_clientconfig,node_frontend toneBlue
class node_listconverter,node_gridconverter,node_blockfilters,node_filterextensions,node_manualfiltering toneAmber
class node_indexfactory,node_indexmodel toneMint
class node_api,node_settings,node_composer toneRose
class node_editor,node_search toneIndigo
```

## Components

### Backoffice editing

- [Block action](https://github.com/andreaslborg/hideit/blob/main/Client/src/elements/hide-it-block-action.element.ts): `Client/src/elements/hide-it-block-action.element.ts`
- [Action registration](https://github.com/andreaslborg/hideit/blob/main/Client/src/actions/manifest.ts): `Client/src/actions/manifest.ts`
- [Property condition](https://github.com/andreaslborg/hideit/blob/main/Client/src/conditions/has-hide-it-property.condition.ts): `Client/src/conditions/has-hide-it-property.condition.ts`
- [Condition registration](https://github.com/andreaslborg/hideit/blob/main/Client/src/conditions/manifest.ts): `Client/src/conditions/manifest.ts`
- [Client configuration](https://github.com/andreaslborg/hideit/blob/main/Client/src/hide-it-config.ts): `Client/src/hide-it-config.ts`

### Frontend delivery

- [Block List converter](https://github.com/andreaslborg/hideit/blob/main/ValueConverters/HideItBlockListPropertyValueConverter.cs): `ValueConverters/HideItBlockListPropertyValueConverter.cs`
- [Block Grid converter](https://github.com/andreaslborg/hideit/blob/main/ValueConverters/HideItBlockGridPropertyValueConverter.cs): `ValueConverters/HideItBlockGridPropertyValueConverter.cs`
- [Visibility filtering](https://github.com/andreaslborg/hideit/blob/main/BlockExtensions.cs): `BlockExtensions.cs`
- [Custom filter extensions](https://github.com/andreaslborg/hideit/blob/main/Filters/HideItBlockFilters.cs): `Filters/HideItBlockFilters.cs`
- [Manual filtering API](https://github.com/andreaslborg/hideit/blob/main/BlockExtensions.cs): `BlockExtensions.cs`

### Search indexing

- [Search index factory](https://github.com/andreaslborg/hideit/blob/main/PropertyEditors/HideItBlockValuePropertyIndexValueFactory.cs): `PropertyEditors/HideItBlockValuePropertyIndexValueFactory.cs`
- [Index value model](https://github.com/andreaslborg/hideit/blob/main/PropertyEditors/Models/HideItIndexValueFactoryBlockValue.cs): `PropertyEditors/Models/HideItIndexValueFactoryBlockValue.cs`

### Package configuration

- [Configuration API](https://github.com/andreaslborg/hideit/blob/main/Controllers/HideItConfigurationController.cs): `Controllers/HideItConfigurationController.cs`
- [Hide It settings](https://github.com/andreaslborg/hideit/blob/main/HideItSettings.cs): `HideItSettings.cs`
- [Umbraco composer](https://github.com/andreaslborg/hideit/blob/main/Composers/HideItComposer.cs): `Composers/HideItComposer.cs`

### Other components

- **Content editor**
- **Umbraco frontend**
- **Umbraco search indexing**

## Connections

- Content editor → Block action: uses (evidence: `README.md`)
- Action registration → Block action: registers (evidence: `Client/src/actions/manifest.ts`)
- Condition registration → Property condition: registers (evidence: `Client/src/conditions/manifest.ts`)
- Block action → Client configuration: loads options (evidence: `Client/src/elements/hide-it-block-action.element.ts`)
- Property condition → Client configuration: checks alias (evidence: `Client/src/conditions/has-hide-it-property.condition.ts`)
- Client configuration → Configuration API: fetches configuration (evidence: `Client/src/hide-it-config.ts`)
- Configuration API → Hide It settings: reads options (evidence: `Controllers/HideItConfigurationController.cs`)
- Umbraco composer → Hide It settings: configures (evidence: `Composers/HideItComposer.cs`)
- Umbraco composer → Block List converter: registers converter (evidence: `Composers/HideItComposer.cs`)
- Umbraco composer → Block Grid converter: registers converter (evidence: `Composers/HideItComposer.cs`)
- Umbraco composer → Search index factory: registers factory (evidence: `Composers/HideItComposer.cs`)
- Umbraco composer → Custom filter extensions: registers filters (evidence: `Composers/HideItComposer.cs`)
- Block List converter → Visibility filtering: filters values (evidence: `ValueConverters/HideItBlockListPropertyValueConverter.cs`)
- Block List converter → Custom filter extensions: applies extensions (evidence: `ValueConverters/HideItBlockListPropertyValueConverter.cs`)
- Block Grid converter → Visibility filtering: filters values (evidence: `README.md`)
- Umbraco frontend → Block List converter: requests block values (evidence: `README.md`)
- Umbraco frontend → Block Grid converter: requests block values (evidence: `README.md`)
- Manual filtering API → Visibility filtering: exposes filtering (evidence: `README.md`)
- Umbraco search indexing → Search index factory: requests index values (evidence: `README.md`)
- Search index factory → Index value model: uses model (evidence: `PropertyEditors/HideItBlockValuePropertyIndexValueFactory.cs`)
- Search index factory → Hide It settings: reads alias (evidence: `PropertyEditors/HideItBlockValuePropertyIndexValueFactory.cs`)
