D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
forge
/
ebrokers.online
/
node_modules
/
@reduxjs
/
toolkit
/
src
/
Filename :
createDraftSafeSelector.ts
back
Copy
import { current, isDraft } from './immerImports' import { createSelectorCreator, weakMapMemoize } from './reselectImports' export const createDraftSafeSelectorCreator: typeof createSelectorCreator = ( ...args: unknown[] ) => { const createSelector = (createSelectorCreator as any)(...args) const createDraftSafeSelector = Object.assign( (...args: unknown[]) => { const selector = createSelector(...args) const wrappedSelector = (value: unknown, ...rest: unknown[]) => selector(isDraft(value) ? current(value) : value, ...rest) Object.assign(wrappedSelector, selector) return wrappedSelector as any }, { withTypes: () => createDraftSafeSelector }, ) return createDraftSafeSelector } /** * "Draft-Safe" version of `reselect`'s `createSelector`: * If an `immer`-drafted object is passed into the resulting selector's first argument, * the selector will act on the current draft value, instead of returning a cached value * that might be possibly outdated if the draft has been modified since. * @public */ export const createDraftSafeSelector = /* @__PURE__ */ createDraftSafeSelectorCreator(weakMapMemoize)