source: node_modules/@reduxjs/toolkit/src/entities/create_adapter.ts

Last change on this file was a762898, checked in by istevanoska <ilinastevanoska@…>, 5 months ago

Added visualizations

  • Property mode set to 100644
File size: 1.4 KB
Line 
1import type { EntityAdapter, EntityId, EntityAdapterOptions } from './models'
2import { createInitialStateFactory } from './entity_state'
3import { createSelectorsFactory } from './state_selectors'
4import { createSortedStateAdapter } from './sorted_state_adapter'
5import { createUnsortedStateAdapter } from './unsorted_state_adapter'
6import type { WithRequiredProp } from '../tsHelpers'
7
8export function createEntityAdapter<T, Id extends EntityId>(
9 options: WithRequiredProp<EntityAdapterOptions<T, Id>, 'selectId'>,
10): EntityAdapter<T, Id>
11
12export function createEntityAdapter<T extends { id: EntityId }>(
13 options?: Omit<EntityAdapterOptions<T, T['id']>, 'selectId'>,
14): EntityAdapter<T, T['id']>
15
16/**
17 *
18 * @param options
19 *
20 * @public
21 */
22export function createEntityAdapter<T>(
23 options: EntityAdapterOptions<T, EntityId> = {},
24): EntityAdapter<T, EntityId> {
25 const {
26 selectId,
27 sortComparer,
28 }: Required<EntityAdapterOptions<T, EntityId>> = {
29 sortComparer: false,
30 selectId: (instance: any) => instance.id,
31 ...options,
32 }
33
34 const stateAdapter = sortComparer
35 ? createSortedStateAdapter(selectId, sortComparer)
36 : createUnsortedStateAdapter(selectId)
37 const stateFactory = createInitialStateFactory(stateAdapter)
38 const selectorsFactory = createSelectorsFactory<T, EntityId>()
39
40 return {
41 selectId,
42 sortComparer,
43 ...stateFactory,
44 ...selectorsFactory,
45 ...stateAdapter,
46 }
47}
Note: See TracBrowser for help on using the repository browser.