<a name="_aa110969056951f03b31d252bb5eac92e15ef201f2f751e0b34dfad50e3678f5"></a>
[![npm](https://img.shields.io/npm/v/@acoustic-content-sdk/redux-utils.svg?style=flat-square)](https://www.npmjs.com/package/@acoustic-content-sdk/redux-utils)

Implementation of utility functions that help working with redux state.

## Immutability

One of the [core principals](https://redux.js.org/introduction/three-principles) of the redux pattern is to keep all state immutable. This implies that when updating a value we need to make a copy of the affected objects. The following functions help to limit the size of these copies.

### Updater

The `createUpdater` creates an wrapper around an object. This wrapper allows to set or remove (deep) properties of the wrapped object without mutating it. The updater makes sure to only create the minimum set of shallow copies.

Example:

```typescript
const myObject={...};
const updater = createUpdater(myObject);

updater.set('elements.text.value', 'newValue');

const newObject = updater.get();
```

The updater works similar to [immer](https://www.npmjs.com/package/immer) but without the overhead.

### Invariance Checks

During development it is important to verify that objects are not getting mutated. Use the invariance checker to test this, but make sure to not include these checks in production builds for performance reasons.

Example:

```typescript
const inv = invarianceChecker(myObject);
// do some operations

// validate that myObject has not been mutated
assert(inv());
```

## API Documentation

[API Documentation](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d)

<a name="_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d)

## redux-utils package

Implementation of utility functions that help working with redux state.

## Functions

|  Function | Description |
|  --- | --- |
|  [createBreadcrumb(aId, aSelParent, aSelId)](#_a91779a14d6c8019d66a8fa19132f34cf9cfcd6de4aee776f76c91ec4971a386) | Constructs a breadcrumb trail starting at a particular ID |
|  [createUpdater(aValue, aLogSvc)](#_680f1067fa296a4a8b2937c3c533018dd4c5741195c725bf9481e3e2c7e7c9bc) | Constructs a function that updates one or more values in a json object. |
|  [equalsByRevision(aLeft, aRight)](#_40e7e18d15a2a92d0fd3d7ba13ddf86422161510c82304858671e0ddebf7605d) |  |
|  [getNavSelectors(aJson$, aLogSvc)](#_0438eb852efe4d66e7c09562ed67cc834bfa2870399ec5af4ccc49066f82e465) | Returns selectors that access parent and child nodes from a navigation structure |
|  [invarianceChecker(aValue)](#_358fb957b195dedfa327db176523ad971101531377375207424921c7c675a450) | Creates a function that validates that an object has not changed. Note that this should only be used for debugging purposes, since it makes a deep copy of the value to test for the invariance |
|  [isDraftId(aAuthoringId)](#_4eb5a09c8ef21dadd86f2f0925e406763d7a5be7871eb4c83fe8e02716eb4899) | Tests if the authoring ID has a draft suffix |
|  [isNotFromDataBase(aValue)](#_32e47d346c6dc2c646a8ec101b8f6d11a264115b60978967ccee661bdda76fc2) | Tests if a value is not from a database |
|  [isNotRoot(aId)](#_a22a34dc33081bece4bf05c8017796a3df597c2eb559a43dc38ee49b2c224926) |  |
|  [markAsFromDataBase(aValue)](#_3d077392d763c36986d251b4ee5b628b392b50d3dfc26adddddffc5fb70c25e0) | Adds a key to the item marking it as coming from the local data base |
|  [removeArrayItemByAccessor(aAccessor, aItem, aUser)](#_6774a273474a53f161a0c8f91a40436a9f6253ad2623f7bd45614ee10aeccf78) |  |
|  [removeDataBaseMarker(aValue)](#_d9fd65b2b240ea2969b812ee4d10043160dc646534217b3afed3abfe54f8ee9f) | Removes the database marker from the object |
|  [removeRecord()](#_29a372e94f47b78351b4599fe738f8e9ba1cc34fdc9bfc8737d289902d8c7901) | Creates a reducer that removes a key from a record |
|  [rxElementType(aTypeResolver, aLogSvc, aScheduler)](#_7a4445cec080c5231c7451952454333ec6c45418e9bd9f51e14c5782ee2376da) | Resolves the element type, either directly from the element or from the authoring type |
|  [rxLogDiff(aLogger)](#_7e047d0302842ad68303edb7cdfc433f572db0d1f81208f018437786201f8f66) |  |
|  [rxResolveAuthoringItems(idOrItem, resolveItem, resolveAsset, aLogSvc, scheduler)](#_3a9b29f9eada57eb2920cac5852c965b0844627d91fe466dc0223a35d9112a61) | Resolves the item and all referenced items and assets |
|  [selectByDeliveryId(aId)](#_229db95e1d0e1c64d7a3b92b222f978b6461b666a9a8452cad927f3aded5f3ea) | Constructs a selector that validates that the ID is a delivery ID (not a draft ID) and selects based on that ID from the state |
|  [serializeDiff(aOld, aNew, aSameStyle, aNewStyle, aDeletedStyle)](#_0b0a0b37d089bb607411855fc055de45001f6b70b59aecad7e9bcf7f64210928) | Serializes the differences between two JSON objects |
|  [sortAuthoringItems(aResult)](#_2fff32e14c799ee34ccdaeb550734f877a6402f6908d14e9cef401ee821fd9ee) | Performs a topological sort on a set of resolved items |
|  [updateGenericProperties(aItem, aUser)](#_7340faca297ad6d5f6ee00558b719d581049ee010fee69ed9bf984e2327f89a3) | Updates properties of the item that depend on the environment |
|  [updateImageElement(aAccessor, aItem, aAsset)](#_fee4450061abd148fe9092055813d15270a4728cbf7866ef5f7f254959aec9c9) |  |
|  [updateRecord(aKey, aPredicate)](#_f5f31b2ac5dba9ea4c2d82c7fa3e3fbc3e6a502742495bd1833cd2f361e7c4c1) | Creates a reducer that adds an item to a record |
|  [updateSingleItem(aPredicate)](#_5dadbc4cc173f23601e78b60b53afee6aacfc713c2f370425d34896341961cb5) |  |
|  [updateValueByAccessor(aAccessor, aValue, aItem, aUser)](#_0cb808c8ed399b5ff2019106ce85947fc945142615bf81a8e067bf1d94ca3961) | Updates a single property based on the accessor expression. |

## Interfaces

|  Interface | Description |
|  --- | --- |
|  [ItemWithId](#_bf5c06cbe13c8b3df6362d296f32c18b2dd8489067d9ba600801d9d03dd615a0) |  |
|  [ItemWithLinkedDocId](#_636feb8d6b282b8d632b8e167e757361dfc0fa4d886f3bd4501f0a0b8cd32ace) |  |
|  [ItemWithRevision](#_07327d2e735d2f0d4472cc89a9d4a1f9dc4700ad44ee4e9e928721bcc00ba70d) |  |
|  [NavigationJson](#_eedef43020714a43d7a87dc2ef67c286049ed49ba3c5b4c57064f12c4ce5dbdd) |  |
|  [NavSelectors](#_8e4f2122f5d9bec6a7598219d9d07ff9e2c7be6c042d2c6335d11873fc72b73b) | Interface that exposes selectors to the navigation structure |
|  [ResolvedNode](#_99fbb814d794811a55919f6e6684fcc0f80c4707a324f65a03c95865a5d33516) |  |
|  [Updater](#_6b9bc1878476af24473d2e1e9d4337a4f8ea00cce2c941a39dca53e219dfc692) | Facade that offers the modification functions for a json object. The original JSON object will not be modified and the modified object will only contain the minimum number of modifications. |

## Variables

|  Variable | Description |
|  --- | --- |
|  [addToSetEpic](#_0293835f13213b3a8f569e81735446f6578bb82a9b230e4a32d3702afc1b1b99) | Constructs an epic that convers an <code>ADD</code> action to a <code>SET</code> action |
|  [cloneAuthoringItems](#_e9c7053186f123bb1423ee80e91cf8c07c351b0ed72d06b6fcf937c9eec6b2f8) | Basically a re-export of the clone functionality to have it all clean inside this one function |
|  [DB\_KEY](#_172e7c6cdd459b4a1bb0e61ae2a780b733bdf44283c6d618687b5cd1e0563f2d) |  |
|  [DB\_VALUE](#_916a92abdcd3851d8e49fa0bfbc08d9b7b217c11054f856e5cf17e74a5a6c44b) |  |
|  [ensureDraftId](#_ceb07140f9334510dcc96cdfcdd9fb8a0d3c5543e1608543c79b32326c0133b3) | Makes sure to end the ID with a draft suffix |
|  [getDeliveryId](#_aaf0b188e213a68166c853746678e5975cb7b9d8e1cdd425902b84b9e2c97eb9) | Returns the delivery ID from an authoring ID, i.e. strips off the ':draft' suffix from the ID |
|  [getDeliveryIdFromAuthoringItem](#_adc862cbf2d7d738d3eaf725e5dc6b9d20ee064f0679ffab6ddf76eb2a83b168) | Returns the delivery ID from an authoring item. |
|  [getValueByAccessor](#_d5f2b1feea4cd0cb348b8cbc92d606ec859a681a3dc9c7433a3e34a926398692) | Retrieves a property value by accessor |
|  [keyById](#_476dbef95ff31a8b73acd9a2979715f94f249c9368dbd00e739ef2d40ad744fb) | Extract the delivery ID of the draft |
|  [ROOT\_ID](#_2c79faf0926425ffe1c5af4237424c1d6ccb5112094502897be7f67c4cb10c86) |  |
|  [selectClassification](#_80748f9696a0076b3bed0d2dd4e49756ce69f144dead49c80532f5f72a6df30f) | Extracts the classification property |
|  [updateItemsWithRevision](#_908d1c83223572311c51c4705339d384d2ec4c7e38fc89577dd40285b9fb1e3c) |  |

## Type Aliases

|  Type Alias | Description |
|  --- | --- |
|  [AddRecordReducer](#_2aa70edc8d918d694c7a9a6f960bb927683dd73f56ff93d25fbcfe7c9be772a6) | Reducer function that adds an item to a record |
|  [AuthoringItem](#_e836378bb28a201e353eae4b5bb27296039f9da6d2df8943a243029a1a1d7bbc) |  |
|  [ItemReducer](#_142dc4d910bf98729687d6dc0f50a0bf469089cdc7c27bdbed223c3f599de19c) | Reducer function that updates an item |
|  [RemoveRecordReducer](#_bfa970d421e39181809fa835cbbbcbcd19ad6ff5cd85b2b0a9d5ee6e66b83c15) | Reducer function that adds an item to a record |
|  [ResolutionResult](#_76b37241d67def66e80b35ed1930eb4b125747ee37e65f61b20fcfce5c274caf) |  |
|  [ResolveAuthoringAsset](#_5596cce2c2ed86388e6621d9559b53f45701e54ca600c6ef0820a19d15235717) |  |
|  [ResolveAuthoringContentItem](#_a8cfb25d3cbd9fe0f5e64752d20b1ae3ce26bb451dbf85c86bc4b9869dd3beb8) |  |


<a name="_aa110969056951f03b31d252bb5eac92e15ef201f2f751e0b34dfad50e3678f5"></a>

<a name="_a91779a14d6c8019d66a8fa19132f34cf9cfcd6de4aee776f76c91ec4971a386"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [createBreadcrumb](#_a91779a14d6c8019d66a8fa19132f34cf9cfcd6de4aee776f76c91ec4971a386)

## createBreadcrumb() function

Constructs a breadcrumb trail starting at a particular ID

<b>Signature:</b>

```typescript
export declare function createBreadcrumb<T>(aId: string, aSelParent: UnaryFunction<string, Observable<T>>, aSelId: UnaryFunction<T, string>): Observable<T[]>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aId | <code>string</code> | the start ID |
|  aSelParent | <code>UnaryFunction&lt;string, Observable&lt;T&gt;&gt;</code> | selector function for the parent node |
|  aSelId | <code>UnaryFunction&lt;T, string&gt;</code> | selector function for the ID from a parent node |

<b>Returns:</b>

`Observable<T[]>`

the breadcrumb trail


<a name="_680f1067fa296a4a8b2937c3c533018dd4c5741195c725bf9481e3e2c7e7c9bc"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [createUpdater](#_680f1067fa296a4a8b2937c3c533018dd4c5741195c725bf9481e3e2c7e7c9bc)

## createUpdater() function

Constructs a function that updates one or more values in a json object.

<b>Signature:</b>

```typescript
export declare function createUpdater<T>(aValue: T, aLogSvc?: LoggerService): Updater<T>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aValue | <code>T</code> | the JSON structure to update |
|  aLogSvc | <code>LoggerService</code> |  |

<b>Returns:</b>

`Updater<T>`

updater functions


<a name="_40e7e18d15a2a92d0fd3d7ba13ddf86422161510c82304858671e0ddebf7605d"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [equalsByRevision](#_40e7e18d15a2a92d0fd3d7ba13ddf86422161510c82304858671e0ddebf7605d)

## equalsByRevision() function

<b>Signature:</b>

```typescript
export declare function equalsByRevision(aLeft: ItemWithRevision, aRight: ItemWithRevision): boolean;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aLeft | <code>ItemWithRevision</code> |  |
|  aRight | <code>ItemWithRevision</code> |  |

<b>Returns:</b>

`boolean`


<a name="_0438eb852efe4d66e7c09562ed67cc834bfa2870399ec5af4ccc49066f82e465"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [getNavSelectors](#_0438eb852efe4d66e7c09562ed67cc834bfa2870399ec5af4ccc49066f82e465)

## getNavSelectors() function

Returns selectors that access parent and child nodes from a navigation structure

<b>Signature:</b>

```typescript
export declare function getNavSelectors(aJson$: Observable<NavigationJson>, aLogSvc?: LoggerService): NavSelectors;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aJson$ | <code>Observable&lt;NavigationJson&gt;</code> | the JSON that represents the navigation |
|  aLogSvc | <code>LoggerService</code> | optional logger service |

<b>Returns:</b>

`NavSelectors`

the selectors


<a name="_358fb957b195dedfa327db176523ad971101531377375207424921c7c675a450"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [invarianceChecker](#_358fb957b195dedfa327db176523ad971101531377375207424921c7c675a450)

## invarianceChecker() function

Creates a function that validates that an object has not changed. Note that this should only be used for debugging purposes, since it makes a deep copy of the value to test for the invariance

<b>Signature:</b>

```typescript
export declare function invarianceChecker(aValue: any): Generator<boolean>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aValue | <code>any</code> | the value to test |

<b>Returns:</b>

`Generator<boolean>`

the validator


<a name="_4eb5a09c8ef21dadd86f2f0925e406763d7a5be7871eb4c83fe8e02716eb4899"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [isDraftId](#_4eb5a09c8ef21dadd86f2f0925e406763d7a5be7871eb4c83fe8e02716eb4899)

## isDraftId() function

Tests if the authoring ID has a draft suffix

<b>Signature:</b>

```typescript
export declare function isDraftId(aAuthoringId: string): boolean;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aAuthoringId | <code>string</code> | the ID |

<b>Returns:</b>

`boolean`

true if we have a draft suffix, else false


<a name="_32e47d346c6dc2c646a8ec101b8f6d11a264115b60978967ccee661bdda76fc2"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [isNotFromDataBase](#_32e47d346c6dc2c646a8ec101b8f6d11a264115b60978967ccee661bdda76fc2)

## isNotFromDataBase() function

Tests if a value is not from a database

<b>Signature:</b>

```typescript
export declare function isNotFromDataBase(aValue: any): boolean;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aValue | <code>any</code> | the value |

<b>Returns:</b>

`boolean`

true if the value exists and if it is not from the database, else false


<a name="_a22a34dc33081bece4bf05c8017796a3df597c2eb559a43dc38ee49b2c224926"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [isNotRoot](#_a22a34dc33081bece4bf05c8017796a3df597c2eb559a43dc38ee49b2c224926)

## isNotRoot() function

<b>Signature:</b>

```typescript
export declare function isNotRoot(aId: string): boolean;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aId | <code>string</code> |  |

<b>Returns:</b>

`boolean`


<a name="_3d077392d763c36986d251b4ee5b628b392b50d3dfc26adddddffc5fb70c25e0"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [markAsFromDataBase](#_3d077392d763c36986d251b4ee5b628b392b50d3dfc26adddddffc5fb70c25e0)

## markAsFromDataBase() function

Adds a key to the item marking it as coming from the local data base

<b>Signature:</b>

```typescript
export declare function markAsFromDataBase<T>(aValue: T): T;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aValue | <code>T</code> | the value to work with |

<b>Returns:</b>

`T`

a value with the marker


<a name="_6774a273474a53f161a0c8f91a40436a9f6253ad2623f7bd45614ee10aeccf78"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [removeArrayItemByAccessor](#_6774a273474a53f161a0c8f91a40436a9f6253ad2623f7bd45614ee10aeccf78)

## removeArrayItemByAccessor() function

<b>Signature:</b>

```typescript
export declare function removeArrayItemByAccessor<T extends BaseAuthoringItem>(aAccessor: AccessorType, aItem: T, aUser?: User): Updater<T>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aAccessor | <code>AccessorType</code> |  |
|  aItem | <code>T</code> |  |
|  aUser | <code>User</code> |  |

<b>Returns:</b>

`Updater<T>`


<a name="_d9fd65b2b240ea2969b812ee4d10043160dc646534217b3afed3abfe54f8ee9f"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [removeDataBaseMarker](#_d9fd65b2b240ea2969b812ee4d10043160dc646534217b3afed3abfe54f8ee9f)

## removeDataBaseMarker() function

Removes the database marker from the object

<b>Signature:</b>

```typescript
export declare function removeDataBaseMarker<T>(aValue: T): T;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aValue | <code>T</code> | the value to work with |

<b>Returns:</b>

`T`

a value without the marker


<a name="_29a372e94f47b78351b4599fe738f8e9ba1cc34fdc9bfc8737d289902d8c7901"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [removeRecord](#_29a372e94f47b78351b4599fe738f8e9ba1cc34fdc9bfc8737d289902d8c7901)

## removeRecord() function

Creates a reducer that removes a key from a record

<b>Signature:</b>

```typescript
export declare function removeRecord<T>(): RemoveRecordReducer<T>;
```
<b>Returns:</b>

`RemoveRecordReducer<T>`

the reducer


<a name="_7a4445cec080c5231c7451952454333ec6c45418e9bd9f51e14c5782ee2376da"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [rxElementType](#_7a4445cec080c5231c7451952454333ec6c45418e9bd9f51e14c5782ee2376da)

## rxElementType() function

Resolves the element type, either directly from the element or from the authoring type

<b>Signature:</b>

```typescript
export declare function rxElementType(aTypeResolver: UnaryFunction<string, Observable<AuthoringType>>, aLogSvc?: LoggerService, aScheduler?: SchedulerLike): UnaryFunction<AccessorType, OperatorFunction<RenderingContext, ELEMENT_TYPE>>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aTypeResolver | <code>UnaryFunction&lt;string, Observable&lt;AuthoringType&gt;&gt;</code> |  |
|  aLogSvc | <code>LoggerService</code> | logger service |
|  aScheduler | <code>SchedulerLike</code> | optional scheduler |

<b>Returns:</b>

`UnaryFunction<AccessorType, OperatorFunction<RenderingContext, ELEMENT_TYPE>>`

the resolved type or undefined if the type could not be determined


<a name="_7e047d0302842ad68303edb7cdfc433f572db0d1f81208f018437786201f8f66"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [rxLogDiff](#_7e047d0302842ad68303edb7cdfc433f572db0d1f81208f018437786201f8f66)

## rxLogDiff() function

<b>Signature:</b>

```typescript
export declare function rxLogDiff<T>(aLogger: Logger): MonoTypeOperatorFunction<T>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aLogger | <code>Logger</code> |  |

<b>Returns:</b>

`MonoTypeOperatorFunction<T>`


<a name="_3a9b29f9eada57eb2920cac5852c965b0844627d91fe466dc0223a35d9112a61"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [rxResolveAuthoringItems](#_3a9b29f9eada57eb2920cac5852c965b0844627d91fe466dc0223a35d9112a61)

## rxResolveAuthoringItems() function

Resolves the item and all referenced items and assets

<b>Signature:</b>

```typescript
export declare function rxResolveAuthoringItems(idOrItem: IdOrItem, resolveItem: ResolveAuthoringContentItem, resolveAsset: ResolveAuthoringAsset, aLogSvc?: LoggerService, scheduler?: SchedulerLike): Observable<ResolutionResult>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  idOrItem | <code>IdOrItem</code> |  |
|  resolveItem | <code>ResolveAuthoringContentItem</code> | callback to resolve a content item |
|  resolveAsset | <code>ResolveAuthoringAsset</code> | callback to resolve an asset |
|  aLogSvc | <code>LoggerService</code> |  |
|  scheduler | <code>SchedulerLike</code> | scheduler for recursive calls |

<b>Returns:</b>

`Observable<ResolutionResult>`

the observable containing the resolution result


<a name="_229db95e1d0e1c64d7a3b92b222f978b6461b666a9a8452cad927f3aded5f3ea"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [selectByDeliveryId](#_229db95e1d0e1c64d7a3b92b222f978b6461b666a9a8452cad927f3aded5f3ea)

## selectByDeliveryId() function

Constructs a selector that validates that the ID is a delivery ID (not a draft ID) and selects based on that ID from the state

<b>Signature:</b>

```typescript
export declare function selectByDeliveryId<T>(aId?: string): UnaryFunction<Record<string, T>, T>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aId | <code>string</code> | the ID |

<b>Returns:</b>

`UnaryFunction<Record<string, T>, T>`

a selector for that ID based on some state


<a name="_0b0a0b37d089bb607411855fc055de45001f6b70b59aecad7e9bcf7f64210928"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [serializeDiff](#_0b0a0b37d089bb607411855fc055de45001f6b70b59aecad7e9bcf7f64210928)

## serializeDiff() function

Serializes the differences between two JSON objects

<b>Signature:</b>

```typescript
export declare function serializeDiff(aOld: any, aNew: any, aSameStyle?: UnaryFunction<string, string>, aNewStyle?: UnaryFunction<string, string>, aDeletedStyle?: UnaryFunction<string, string>): string;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aOld | <code>any</code> | old object |
|  aNew | <code>any</code> | new objects |
|  aSameStyle | <code>UnaryFunction&lt;string, string&gt;</code> | styling callback for identical style |
|  aNewStyle | <code>UnaryFunction&lt;string, string&gt;</code> | styling callback for new style |
|  aDeletedStyle | <code>UnaryFunction&lt;string, string&gt;</code> | styling callback for deleted style |

<b>Returns:</b>

`string`

the serialized string


<a name="_2fff32e14c799ee34ccdaeb550734f877a6402f6908d14e9cef401ee821fd9ee"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [sortAuthoringItems](#_2fff32e14c799ee34ccdaeb550734f877a6402f6908d14e9cef401ee821fd9ee)

## sortAuthoringItems() function

Performs a topological sort on a set of resolved items

<b>Signature:</b>

```typescript
export declare function sortAuthoringItems(aResult: ResolutionResult): AuthoringItem[];
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aResult | <code>ResolutionResult</code> | the resolution result, basically a graph of nodes |

<b>Returns:</b>

`AuthoringItem[]`

the items in toplogical order, i.e. parents before children


<a name="_7340faca297ad6d5f6ee00558b719d581049ee010fee69ed9bf984e2327f89a3"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [updateGenericProperties](#_7340faca297ad6d5f6ee00558b719d581049ee010fee69ed9bf984e2327f89a3)

## updateGenericProperties() function

Updates properties of the item that depend on the environment

<b>Signature:</b>

```typescript
export declare function updateGenericProperties<T extends BaseAuthoringItem>(aItem: Updater<T>, aUser?: User): Updater<T>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aItem | <code>Updater&lt;T&gt;</code> | updater for the item |
|  aUser | <code>User</code> | optionally the current user |

<b>Returns:</b>

`Updater<T>`

the updater after the item has been modified


<a name="_fee4450061abd148fe9092055813d15270a4728cbf7866ef5f7f254959aec9c9"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [updateImageElement](#_fee4450061abd148fe9092055813d15270a4728cbf7866ef5f7f254959aec9c9)

## updateImageElement() function

<b>Signature:</b>

```typescript
export declare function updateImageElement(aAccessor: AccessorType, aItem: Updater<AuthoringContentItem>, aAsset: AuthoringAsset): Updater<AuthoringContentItem>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aAccessor | <code>AccessorType</code> |  |
|  aItem | <code>Updater&lt;AuthoringContentItem&gt;</code> |  |
|  aAsset | <code>AuthoringAsset</code> |  |

<b>Returns:</b>

`Updater<AuthoringContentItem>`


<a name="_f5f31b2ac5dba9ea4c2d82c7fa3e3fbc3e6a502742495bd1833cd2f361e7c4c1"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [updateRecord](#_f5f31b2ac5dba9ea4c2d82c7fa3e3fbc3e6a502742495bd1833cd2f361e7c4c1)

## updateRecord() function

Creates a reducer that adds an item to a record

<b>Signature:</b>

```typescript
export declare function updateRecord<T>(aKey: UnaryFunction<T, string>, aPredicate?: EqualsPredicate<T>): AddRecordReducer<T>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aKey | <code>UnaryFunction&lt;T, string&gt;</code> | function to extract the key from the item |
|  aPredicate | <code>EqualsPredicate&lt;T&gt;</code> | predicate to check if two items are equal |

<b>Returns:</b>

`AddRecordReducer<T>`

the reducer


<a name="_5dadbc4cc173f23601e78b60b53afee6aacfc713c2f370425d34896341961cb5"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [updateSingleItem](#_5dadbc4cc173f23601e78b60b53afee6aacfc713c2f370425d34896341961cb5)

## updateSingleItem() function

<b>Signature:</b>

```typescript
export declare function updateSingleItem<T>(aPredicate?: EqualsPredicate<T>): ItemReducer<T>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aPredicate | <code>EqualsPredicate&lt;T&gt;</code> |  |

<b>Returns:</b>

`ItemReducer<T>`


<a name="_0cb808c8ed399b5ff2019106ce85947fc945142615bf81a8e067bf1d94ca3961"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [updateValueByAccessor](#_0cb808c8ed399b5ff2019106ce85947fc945142615bf81a8e067bf1d94ca3961)

## updateValueByAccessor() function

Updates a single property based on the accessor expression.

<b>Signature:</b>

```typescript
export declare function updateValueByAccessor<T extends BaseAuthoringItem>(aAccessor: AccessorType, aValue: any, aItem: T, aUser?: User): Updater<T>;
```

## Parameters

|  Parameter | Type | Description |
|  --- | --- | --- |
|  aAccessor | <code>AccessorType</code> | the accessor expression that points |
|  aValue | <code>any</code> | the new value |
|  aItem | <code>T</code> | the item to update |
|  aUser | <code>User</code> |  |

<b>Returns:</b>

`Updater<T>`

a copy of the item with the modified value


<a name="_bf5c06cbe13c8b3df6362d296f32c18b2dd8489067d9ba600801d9d03dd615a0"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ItemWithId](#_bf5c06cbe13c8b3df6362d296f32c18b2dd8489067d9ba600801d9d03dd615a0)

## ItemWithId interface

<b>Signature:</b>

```typescript
export interface ItemWithId 
```

## Properties

|  Property | Type | Description |
|  --- | --- | --- |
|  [id](#_02296c3e4a9f25477857d835faff230af46a0a51391a8e38b579a03a88e2f87e) | <code>string</code> |  |


<a name="_636feb8d6b282b8d632b8e167e757361dfc0fa4d886f3bd4501f0a0b8cd32ace"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ItemWithLinkedDocId](#_636feb8d6b282b8d632b8e167e757361dfc0fa4d886f3bd4501f0a0b8cd32ace)

## ItemWithLinkedDocId interface

<b>Signature:</b>

```typescript
export interface ItemWithLinkedDocId 
```

## Properties

|  Property | Type | Description |
|  --- | --- | --- |
|  [id](#_ea1451711b5f654ba54fefeefddb45314d6862b04756518da109f4c33072a4bb) | <code>string</code> |  |
|  [linkedDocId](#_10b8c251acd547754d08fa04dddf525c563ed3d5c984565f33a7cb62534f370f) | <code>string</code> |  |


<a name="_07327d2e735d2f0d4472cc89a9d4a1f9dc4700ad44ee4e9e928721bcc00ba70d"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ItemWithRevision](#_07327d2e735d2f0d4472cc89a9d4a1f9dc4700ad44ee4e9e928721bcc00ba70d)

## ItemWithRevision interface

<b>Signature:</b>

```typescript
export interface ItemWithRevision extends ItemWithId 
```

## Properties

|  Property | Type | Description |
|  --- | --- | --- |
|  [rev](#_a7205d59bb9d9b427157cfd071472f400f4f4bcd506fe52089d158614db26eb0) | <code>string</code> |  |


<a name="_eedef43020714a43d7a87dc2ef67c286049ed49ba3c5b4c57064f12c4ce5dbdd"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [NavigationJson](#_eedef43020714a43d7a87dc2ef67c286049ed49ba3c5b4c57064f12c4ce5dbdd)

## NavigationJson interface

<b>Signature:</b>

```typescript
export interface NavigationJson 
```

## Properties

|  Property | Type | Description |
|  --- | --- | --- |
|  [children](#_db0318caccbea8d5169129c8126ea41db301bb0437e66bf7a723653370813c2c) | <code>NavigationJson[]</code> |  |
|  [id](#_9cbbb92ce2127a9b539666ce60997a41eda1beeb905ef6fc641bb2c172e41492) | <code>string</code> |  |


<a name="_8e4f2122f5d9bec6a7598219d9d07ff9e2c7be6c042d2c6335d11873fc72b73b"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [NavSelectors](#_8e4f2122f5d9bec6a7598219d9d07ff9e2c7be6c042d2c6335d11873fc72b73b)

## NavSelectors interface

Interface that exposes selectors to the navigation structure

<b>Signature:</b>

```typescript
export interface NavSelectors 
```

## Properties

|  Property | Type | Description |
|  --- | --- | --- |
|  [root](#_0ca130a51b91506e6404c3586b1c5f2f73f0220144d43bdf833d512f30104865) | <code>string</code> | ID of the (virtual) root item of the navigation |
|  [selectChildren](#_fae46bd4c37c632e75371c8b51882d14a632fe60a9add00ce6b5841e2e56c50a) | <code>UnaryFunction&lt;string, Observable&lt;string[]&gt;&gt;</code> | Selects the children of a particular item |
|  [selectParent](#_6be5c0d93789efad557089d521fd13c0653007d38db63873f95920c0d1e12027) | <code>UnaryFunction&lt;string, Observable&lt;string&gt;&gt;</code> | Selects the parent of a particular item |


<a name="_99fbb814d794811a55919f6e6684fcc0f80c4707a324f65a03c95865a5d33516"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ResolvedNode](#_99fbb814d794811a55919f6e6684fcc0f80c4707a324f65a03c95865a5d33516)

## ResolvedNode interface

<b>Signature:</b>

```typescript
export interface ResolvedNode<T> 
```

## Properties

|  Property | Type | Description |
|  --- | --- | --- |
|  [id](#_a7da4cf792bbca1973660293022ed9c83e98259aa5d995a5a65e0ebae27fafcd) | <code>string</code> |  |
|  [item](#_6c51895c1dc496b50889ffe4a9bd89f90cdf10e18102d220b2aa88914dc53a5e) | <code>T</code> |  |
|  [parentId](#_178d7fc864ce69df8b9a619ea9b3b77dbd52ef1ec80f95fe259c18b90e2d4c95) | <code>string</code> |  |


<a name="_6b9bc1878476af24473d2e1e9d4337a4f8ea00cce2c941a39dca53e219dfc692"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [Updater](#_6b9bc1878476af24473d2e1e9d4337a4f8ea00cce2c941a39dca53e219dfc692)

## Updater interface

Facade that offers the modification functions for a json object. The original JSON object will not be modified and the modified object will only contain the minimum number of modifications.

<b>Signature:</b>

```typescript
export interface Updater<T> 
```

## Properties

|  Property | Type | Description |
|  --- | --- | --- |
|  [add](#_7d4cf19d1750e88dd38763394b7d33928594bd0bb38bef2024513267411199b4) | <code>BiFunction&lt;string, any, T&gt;</code> | Inserts a new value into an array pointed to by the accessor. All values across the parent path will be cloned (shallow) if they do not have a clone, yet.<!-- -->Pass <code>undefined</code> as the new value to delete the value.<!-- -->Returns the modified version of the top level object. |
|  [del](#_951622bb3087e9b90d6c04c57a4c0e1a932bb06c127170593292c151dab215f2) | <code>UnaryFunction&lt;string, T&gt;</code> | Removes the value pointed to by the accessor. All values across the parent path will be cloned (shallow) if they do not have a clone, yet.<!-- -->Returns the modified version of the top level object. |
|  [get](#_16f3cd47614ebe28c04637881b9110739d507029e00290f95be348b84c6c4411) | <code>Generator&lt;T&gt;</code> | Returns the top level, modified object |
|  [set](#_068b5d52f4e3dc5f414094ea57f3cd31445eff6ac0fb5ee522f87ae7706f0e3a) | <code>BiFunction&lt;string, any, T&gt;</code> | Replaces the value pointed to by the accessor with a new value. All values across the parent path will be cloned (shallow) if they do not have a clone, yet.<!-- -->Pass <code>undefined</code> as the new value to delete the value.<!-- -->Returns the modified version of the top level object. |


<a name="_0293835f13213b3a8f569e81735446f6578bb82a9b230e4a32d3702afc1b1b99"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [addToSetEpic](#_0293835f13213b3a8f569e81735446f6578bb82a9b230e4a32d3702afc1b1b99)

## addToSetEpic variable

Constructs an epic that convers an `ADD` action to a `SET` action

<b>Signature:</b>

```typescript
addToSetEpic: <T>(aAddAction: string, aSetAction: string) => Epic<any, any, any, any>
```

<a name="_e9c7053186f123bb1423ee80e91cf8c07c351b0ed72d06b6fcf937c9eec6b2f8"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [cloneAuthoringItems](#_e9c7053186f123bb1423ee80e91cf8c07c351b0ed72d06b6fcf937c9eec6b2f8)

## cloneAuthoringItems variable

Basically a re-export of the clone functionality to have it all clean inside this one function

<b>Signature:</b>

```typescript
cloneAuthoringItems: UnaryFunction<AuthoringItem[], AuthoringItem[]>
```

<a name="_172e7c6cdd459b4a1bb0e61ae2a780b733bdf44283c6d618687b5cd1e0563f2d"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [DB\_KEY](#_172e7c6cdd459b4a1bb0e61ae2a780b733bdf44283c6d618687b5cd1e0563f2d)

## DB\_KEY variable

<b>Signature:</b>

```typescript
DB_KEY = "ecec4405-7fb1-4b86-8d27-7338eea45683"
```

<a name="_916a92abdcd3851d8e49fa0bfbc08d9b7b217c11054f856e5cf17e74a5a6c44b"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [DB\_VALUE](#_916a92abdcd3851d8e49fa0bfbc08d9b7b217c11054f856e5cf17e74a5a6c44b)

## DB\_VALUE variable

<b>Signature:</b>

```typescript
DB_VALUE = "e3257dbc-1ca8-4d57-94a2-37934960f39f"
```

<a name="_ceb07140f9334510dcc96cdfcdd9fb8a0d3c5543e1608543c79b32326c0133b3"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ensureDraftId](#_ceb07140f9334510dcc96cdfcdd9fb8a0d3c5543e1608543c79b32326c0133b3)

## ensureDraftId variable

Makes sure to end the ID with a draft suffix

<b>Signature:</b>

```typescript
ensureDraftId: (aAuthoringId: string) => string
```

<a name="_aaf0b188e213a68166c853746678e5975cb7b9d8e1cdd425902b84b9e2c97eb9"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [getDeliveryId](#_aaf0b188e213a68166c853746678e5975cb7b9d8e1cdd425902b84b9e2c97eb9)

## getDeliveryId variable

Returns the delivery ID from an authoring ID, i.e. strips off the ':draft' suffix from the ID

<b>Signature:</b>

```typescript
getDeliveryId: UnaryFunction<string, string>
```

<a name="_adc862cbf2d7d738d3eaf725e5dc6b9d20ee064f0679ffab6ddf76eb2a83b168"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [getDeliveryIdFromAuthoringItem](#_adc862cbf2d7d738d3eaf725e5dc6b9d20ee064f0679ffab6ddf76eb2a83b168)

## getDeliveryIdFromAuthoringItem variable

Returns the delivery ID from an authoring item.

<b>Signature:</b>

```typescript
getDeliveryIdFromAuthoringItem: UnaryFunction<ItemWithLinkedDocId | BaseAuthoringItem, string>
```

<a name="_d5f2b1feea4cd0cb348b8cbc92d606ec859a681a3dc9c7433a3e34a926398692"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [getValueByAccessor](#_d5f2b1feea4cd0cb348b8cbc92d606ec859a681a3dc9c7433a3e34a926398692)

## getValueByAccessor variable

Retrieves a property value by accessor

<b>Signature:</b>

```typescript
getValueByAccessor: <T>(aItem: BaseAuthoringItem, aAccessor: string) => T
```

<a name="_476dbef95ff31a8b73acd9a2979715f94f249c9368dbd00e739ef2d40ad744fb"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [keyById](#_476dbef95ff31a8b73acd9a2979715f94f249c9368dbd00e739ef2d40ad744fb)

## keyById variable

Extract the delivery ID of the draft

<b>Signature:</b>

```typescript
keyById: UnaryFunction<ItemWithLinkedDocId, string>
```

<a name="_2c79faf0926425ffe1c5af4237424c1d6ccb5112094502897be7f67c4cb10c86"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ROOT\_ID](#_2c79faf0926425ffe1c5af4237424c1d6ccb5112094502897be7f67c4cb10c86)

## ROOT\_ID variable

<b>Signature:</b>

```typescript
ROOT_ID: string
```

<a name="_80748f9696a0076b3bed0d2dd4e49756ce69f144dead49c80532f5f72a6df30f"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [selectClassification](#_80748f9696a0076b3bed0d2dd4e49756ce69f144dead49c80532f5f72a6df30f)

## selectClassification variable

Extracts the classification property

<b>Signature:</b>

```typescript
selectClassification: UnaryFunction<BaseAuthoringItem | ContentItem, string>
```

<a name="_908d1c83223572311c51c4705339d384d2ec4c7e38fc89577dd40285b9fb1e3c"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [updateItemsWithRevision](#_908d1c83223572311c51c4705339d384d2ec4c7e38fc89577dd40285b9fb1e3c)

## updateItemsWithRevision variable

<b>Signature:</b>

```typescript
updateItemsWithRevision: <T extends ItemWithRevision>(aState: Record<string, T>, aItem: T) => Record<string, T>
```

<a name="_2aa70edc8d918d694c7a9a6f960bb927683dd73f56ff93d25fbcfe7c9be772a6"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [AddRecordReducer](#_2aa70edc8d918d694c7a9a6f960bb927683dd73f56ff93d25fbcfe7c9be772a6)

## AddRecordReducer type

Reducer function that adds an item to a record

<b>Signature:</b>

```typescript
export declare type AddRecordReducer<T> = BiFunction<Record<string, T>, T, Record<string, T>>;
```

<a name="_e836378bb28a201e353eae4b5bb27296039f9da6d2df8943a243029a1a1d7bbc"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [AuthoringItem](#_e836378bb28a201e353eae4b5bb27296039f9da6d2df8943a243029a1a1d7bbc)

## AuthoringItem type

<b>Signature:</b>

```typescript
export declare type AuthoringItem = AuthoringContentItem | AuthoringAsset;
```

<a name="_142dc4d910bf98729687d6dc0f50a0bf469089cdc7c27bdbed223c3f599de19c"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ItemReducer](#_142dc4d910bf98729687d6dc0f50a0bf469089cdc7c27bdbed223c3f599de19c)

## ItemReducer type

Reducer function that updates an item

<b>Signature:</b>

```typescript
export declare type ItemReducer<T> = BiFunction<T, T, T>;
```

<a name="_bfa970d421e39181809fa835cbbbcbcd19ad6ff5cd85b2b0a9d5ee6e66b83c15"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [RemoveRecordReducer](#_bfa970d421e39181809fa835cbbbcbcd19ad6ff5cd85b2b0a9d5ee6e66b83c15)

## RemoveRecordReducer type

Reducer function that adds an item to a record

<b>Signature:</b>

```typescript
export declare type RemoveRecordReducer<T> = BiFunction<Record<string, T>, string, Record<string, T>>;
```

<a name="_76b37241d67def66e80b35ed1930eb4b125747ee37e65f61b20fcfce5c274caf"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ResolutionResult](#_76b37241d67def66e80b35ed1930eb4b125747ee37e65f61b20fcfce5c274caf)

## ResolutionResult type

<b>Signature:</b>

```typescript
export declare type ResolutionResult = Record<string, ResolvedNode<AuthoringItem>>;
```

<a name="_5596cce2c2ed86388e6621d9559b53f45701e54ca600c6ef0820a19d15235717"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ResolveAuthoringAsset](#_5596cce2c2ed86388e6621d9559b53f45701e54ca600c6ef0820a19d15235717)

## ResolveAuthoringAsset type

<b>Signature:</b>

```typescript
export declare type ResolveAuthoringAsset = UnaryFunction<string, Observable<AuthoringAsset>>;
```

<a name="_a8cfb25d3cbd9fe0f5e64752d20b1ae3ce26bb451dbf85c86bc4b9869dd3beb8"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ResolveAuthoringContentItem](#_a8cfb25d3cbd9fe0f5e64752d20b1ae3ce26bb451dbf85c86bc4b9869dd3beb8)

## ResolveAuthoringContentItem type

<b>Signature:</b>

```typescript
export declare type ResolveAuthoringContentItem = UnaryFunction<string, Observable<AuthoringContentItem>>;
```

<a name="_02296c3e4a9f25477857d835faff230af46a0a51391a8e38b579a03a88e2f87e"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ItemWithId](#_bf5c06cbe13c8b3df6362d296f32c18b2dd8489067d9ba600801d9d03dd615a0) &gt; [id](#_02296c3e4a9f25477857d835faff230af46a0a51391a8e38b579a03a88e2f87e)

## ItemWithId.id property

<b>Signature:</b>

```typescript
id?: string;
```

<a name="_db0318caccbea8d5169129c8126ea41db301bb0437e66bf7a723653370813c2c"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [NavigationJson](#_eedef43020714a43d7a87dc2ef67c286049ed49ba3c5b4c57064f12c4ce5dbdd) &gt; [children](#_db0318caccbea8d5169129c8126ea41db301bb0437e66bf7a723653370813c2c)

## NavigationJson.children property

<b>Signature:</b>

```typescript
children?: NavigationJson[];
```

<a name="_9cbbb92ce2127a9b539666ce60997a41eda1beeb905ef6fc641bb2c172e41492"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [NavigationJson](#_eedef43020714a43d7a87dc2ef67c286049ed49ba3c5b4c57064f12c4ce5dbdd) &gt; [id](#_9cbbb92ce2127a9b539666ce60997a41eda1beeb905ef6fc641bb2c172e41492)

## NavigationJson.id property

<b>Signature:</b>

```typescript
id: string;
```

<a name="_a7205d59bb9d9b427157cfd071472f400f4f4bcd506fe52089d158614db26eb0"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ItemWithRevision](#_07327d2e735d2f0d4472cc89a9d4a1f9dc4700ad44ee4e9e928721bcc00ba70d) &gt; [rev](#_a7205d59bb9d9b427157cfd071472f400f4f4bcd506fe52089d158614db26eb0)

## ItemWithRevision.rev property

<b>Signature:</b>

```typescript
rev?: string;
```

<a name="_ea1451711b5f654ba54fefeefddb45314d6862b04756518da109f4c33072a4bb"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ItemWithLinkedDocId](#_636feb8d6b282b8d632b8e167e757361dfc0fa4d886f3bd4501f0a0b8cd32ace) &gt; [id](#_ea1451711b5f654ba54fefeefddb45314d6862b04756518da109f4c33072a4bb)

## ItemWithLinkedDocId.id property

<b>Signature:</b>

```typescript
readonly id?: string;
```

<a name="_10b8c251acd547754d08fa04dddf525c563ed3d5c984565f33a7cb62534f370f"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ItemWithLinkedDocId](#_636feb8d6b282b8d632b8e167e757361dfc0fa4d886f3bd4501f0a0b8cd32ace) &gt; [linkedDocId](#_10b8c251acd547754d08fa04dddf525c563ed3d5c984565f33a7cb62534f370f)

## ItemWithLinkedDocId.linkedDocId property

<b>Signature:</b>

```typescript
readonly linkedDocId?: string;
```

<a name="_a7da4cf792bbca1973660293022ed9c83e98259aa5d995a5a65e0ebae27fafcd"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ResolvedNode](#_99fbb814d794811a55919f6e6684fcc0f80c4707a324f65a03c95865a5d33516) &gt; [id](#_a7da4cf792bbca1973660293022ed9c83e98259aa5d995a5a65e0ebae27fafcd)

## ResolvedNode.id property

<b>Signature:</b>

```typescript
id: string;
```

<a name="_6c51895c1dc496b50889ffe4a9bd89f90cdf10e18102d220b2aa88914dc53a5e"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ResolvedNode](#_99fbb814d794811a55919f6e6684fcc0f80c4707a324f65a03c95865a5d33516) &gt; [item](#_6c51895c1dc496b50889ffe4a9bd89f90cdf10e18102d220b2aa88914dc53a5e)

## ResolvedNode.item property

<b>Signature:</b>

```typescript
item: T;
```

<a name="_178d7fc864ce69df8b9a619ea9b3b77dbd52ef1ec80f95fe259c18b90e2d4c95"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [ResolvedNode](#_99fbb814d794811a55919f6e6684fcc0f80c4707a324f65a03c95865a5d33516) &gt; [parentId](#_178d7fc864ce69df8b9a619ea9b3b77dbd52ef1ec80f95fe259c18b90e2d4c95)

## ResolvedNode.parentId property

<b>Signature:</b>

```typescript
parentId?: string;
```

<a name="_0ca130a51b91506e6404c3586b1c5f2f73f0220144d43bdf833d512f30104865"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [NavSelectors](#_8e4f2122f5d9bec6a7598219d9d07ff9e2c7be6c042d2c6335d11873fc72b73b) &gt; [root](#_0ca130a51b91506e6404c3586b1c5f2f73f0220144d43bdf833d512f30104865)

## NavSelectors.root property

ID of the (virtual) root item of the navigation

<b>Signature:</b>

```typescript
root: string;
```

<a name="_fae46bd4c37c632e75371c8b51882d14a632fe60a9add00ce6b5841e2e56c50a"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [NavSelectors](#_8e4f2122f5d9bec6a7598219d9d07ff9e2c7be6c042d2c6335d11873fc72b73b) &gt; [selectChildren](#_fae46bd4c37c632e75371c8b51882d14a632fe60a9add00ce6b5841e2e56c50a)

## NavSelectors.selectChildren property

Selects the children of a particular item

<b>Signature:</b>

```typescript
selectChildren: UnaryFunction<string, Observable<string[]>>;
```

<a name="_6be5c0d93789efad557089d521fd13c0653007d38db63873f95920c0d1e12027"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [NavSelectors](#_8e4f2122f5d9bec6a7598219d9d07ff9e2c7be6c042d2c6335d11873fc72b73b) &gt; [selectParent](#_6be5c0d93789efad557089d521fd13c0653007d38db63873f95920c0d1e12027)

## NavSelectors.selectParent property

Selects the parent of a particular item

<b>Signature:</b>

```typescript
selectParent: UnaryFunction<string, Observable<string>>;
```

<a name="_7d4cf19d1750e88dd38763394b7d33928594bd0bb38bef2024513267411199b4"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [Updater](#_6b9bc1878476af24473d2e1e9d4337a4f8ea00cce2c941a39dca53e219dfc692) &gt; [add](#_7d4cf19d1750e88dd38763394b7d33928594bd0bb38bef2024513267411199b4)

## Updater.add property

Inserts a new value into an array pointed to by the accessor. All values across the parent path will be cloned (shallow) if they do not have a clone, yet.

Pass `undefined` as the new value to delete the value.

Returns the modified version of the top level object.

<b>Signature:</b>

```typescript
add: BiFunction<string, any, T>;
```

<a name="_951622bb3087e9b90d6c04c57a4c0e1a932bb06c127170593292c151dab215f2"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [Updater](#_6b9bc1878476af24473d2e1e9d4337a4f8ea00cce2c941a39dca53e219dfc692) &gt; [del](#_951622bb3087e9b90d6c04c57a4c0e1a932bb06c127170593292c151dab215f2)

## Updater.del property

Removes the value pointed to by the accessor. All values across the parent path will be cloned (shallow) if they do not have a clone, yet.

Returns the modified version of the top level object.

<b>Signature:</b>

```typescript
del: UnaryFunction<string, T>;
```

<a name="_16f3cd47614ebe28c04637881b9110739d507029e00290f95be348b84c6c4411"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [Updater](#_6b9bc1878476af24473d2e1e9d4337a4f8ea00cce2c941a39dca53e219dfc692) &gt; [get](#_16f3cd47614ebe28c04637881b9110739d507029e00290f95be348b84c6c4411)

## Updater.get property

Returns the top level, modified object

<b>Signature:</b>

```typescript
get: Generator<T>;
```

<a name="_068b5d52f4e3dc5f414094ea57f3cd31445eff6ac0fb5ee522f87ae7706f0e3a"></a>
<!-- Do not edit this file. It is automatically generated by API Documenter. -->

[Home](#_d841356070d965b659f4bf828f89c4514f635d563f79af9f8f4794e017b53782) &gt; [@acoustic-content-sdk/redux-utils](#_619143de368e0e570d68b5c1e52c6030d3351467919afa9f62b8574bcccf697d) &gt; [Updater](#_6b9bc1878476af24473d2e1e9d4337a4f8ea00cce2c941a39dca53e219dfc692) &gt; [set](#_068b5d52f4e3dc5f414094ea57f3cd31445eff6ac0fb5ee522f87ae7706f0e3a)

## Updater.set property

Replaces the value pointed to by the accessor with a new value. All values across the parent path will be cloned (shallow) if they do not have a clone, yet.

Pass `undefined` as the new value to delete the value.

Returns the modified version of the top level object.

<b>Signature:</b>

```typescript
set: BiFunction<string, any, T>;
```
