@contember/react-utils 1.3.0-alpha.9 → 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/development/context/createContext.cjs +10 -0
- package/dist/development/context/createContext.cjs.map +1 -0
- package/dist/development/context/createContext.js +10 -0
- package/dist/development/context/createContext.js.map +1 -0
- package/dist/development/context/{createNonNullableContextFactory.cjs → createRequiredContext.cjs} +6 -5
- package/dist/development/context/createRequiredContext.cjs.map +1 -0
- package/dist/development/context/{createNonNullableContextFactory.js → createRequiredContext.js} +6 -5
- package/dist/development/context/createRequiredContext.js.map +1 -0
- package/dist/development/hooks/useAutoHeightTextArea.cjs +1 -1
- package/dist/development/hooks/useAutoHeightTextArea.cjs.map +1 -1
- package/dist/development/hooks/useAutoHeightTextArea.js +1 -1
- package/dist/development/hooks/useAutoHeightTextArea.js.map +1 -1
- package/dist/development/hooks/useStoredState.cjs +89 -12
- package/dist/development/hooks/useStoredState.cjs.map +1 -1
- package/dist/development/hooks/useStoredState.js +91 -14
- package/dist/development/hooks/useStoredState.js.map +1 -1
- package/dist/development/index.cjs +11 -41
- package/dist/development/index.cjs.map +1 -1
- package/dist/development/index.js +12 -42
- package/dist/development/index.js.map +1 -1
- package/dist/production/context/createContext.cjs +10 -0
- package/dist/production/context/createContext.cjs.map +1 -0
- package/dist/production/context/createContext.js +10 -0
- package/dist/production/context/createContext.js.map +1 -0
- package/dist/production/context/{createNonNullableContextFactory.cjs → createRequiredContext.cjs} +6 -5
- package/dist/production/context/createRequiredContext.cjs.map +1 -0
- package/dist/production/context/{createNonNullableContextFactory.js → createRequiredContext.js} +6 -5
- package/dist/production/context/createRequiredContext.js.map +1 -0
- package/dist/production/hooks/useAutoHeightTextArea.cjs +1 -1
- package/dist/production/hooks/useAutoHeightTextArea.cjs.map +1 -1
- package/dist/production/hooks/useAutoHeightTextArea.js +1 -1
- package/dist/production/hooks/useAutoHeightTextArea.js.map +1 -1
- package/dist/production/hooks/useStoredState.cjs +89 -12
- package/dist/production/hooks/useStoredState.cjs.map +1 -1
- package/dist/production/hooks/useStoredState.js +91 -14
- package/dist/production/hooks/useStoredState.js.map +1 -1
- package/dist/production/index.cjs +11 -41
- package/dist/production/index.cjs.map +1 -1
- package/dist/production/index.js +12 -42
- package/dist/production/index.js.map +1 -1
- package/dist/types/context/createContext.d.ts +3 -0
- package/dist/types/context/createContext.d.ts.map +1 -0
- package/dist/types/context/createRequiredContext.d.ts +3 -0
- package/dist/types/context/createRequiredContext.d.ts.map +1 -0
- package/dist/types/context/index.d.ts +2 -2
- package/dist/types/context/index.d.ts.map +1 -1
- package/dist/types/hooks/index.d.ts +0 -10
- package/dist/types/hooks/index.d.ts.map +1 -1
- package/dist/types/hooks/useArrayMapMemo.d.ts.map +1 -1
- package/dist/types/hooks/useConstantLengthInvariant.d.ts.map +1 -1
- package/dist/types/hooks/useConstantValueInvariant.d.ts.map +1 -1
- package/dist/types/hooks/useDebounce.d.ts.map +1 -1
- package/dist/types/hooks/useObjectMemo.d.ts.map +1 -1
- package/dist/types/hooks/usePreviousValue.d.ts.map +1 -1
- package/dist/types/hooks/useStoredState.d.ts +14 -1
- package/dist/types/hooks/useStoredState.d.ts.map +1 -1
- package/dist/types/index.d.ts +0 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/referentiallyStable/identityFunction.d.ts.map +1 -1
- package/dist/types/referentiallyStable/useReferentiallyStableCallback.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
- package/src/context/createContext.ts +9 -0
- package/src/context/{createNonNullableContextFactory.ts → createRequiredContext.ts} +6 -4
- package/src/context/index.ts +2 -2
- package/src/hooks/index.ts +0 -10
- package/src/hooks/useAutoHeightTextArea.ts +1 -1
- package/src/hooks/useStoredState.ts +103 -14
- package/src/index.ts +0 -1
- package/dist/development/context/createNonNullableContextFactory.cjs.map +0 -1
- package/dist/development/context/createNonNullableContextFactory.js.map +0 -1
- package/dist/development/context/createOptionalContextFactory.cjs +0 -13
- package/dist/development/context/createOptionalContextFactory.cjs.map +0 -1
- package/dist/development/context/createOptionalContextFactory.js +0 -13
- package/dist/development/context/createOptionalContextFactory.js.map +0 -1
- package/dist/development/hooks/useAddClassNameDuringResize.cjs +0 -32
- package/dist/development/hooks/useAddClassNameDuringResize.cjs.map +0 -1
- package/dist/development/hooks/useAddClassNameDuringResize.js +0 -32
- package/dist/development/hooks/useAddClassNameDuringResize.js.map +0 -1
- package/dist/development/hooks/useCloseOnClickOutside.cjs +0 -25
- package/dist/development/hooks/useCloseOnClickOutside.cjs.map +0 -1
- package/dist/development/hooks/useCloseOnClickOutside.js +0 -25
- package/dist/development/hooks/useCloseOnClickOutside.js.map +0 -1
- package/dist/development/hooks/useCloseOnEscape.cjs +0 -20
- package/dist/development/hooks/useCloseOnEscape.cjs.map +0 -1
- package/dist/development/hooks/useCloseOnEscape.js +0 -20
- package/dist/development/hooks/useCloseOnEscape.js.map +0 -1
- package/dist/development/hooks/useContainerWidth.cjs +0 -14
- package/dist/development/hooks/useContainerWidth.cjs.map +0 -1
- package/dist/development/hooks/useContainerWidth.js +0 -14
- package/dist/development/hooks/useContainerWidth.js.map +0 -1
- package/dist/development/hooks/useElementSize.cjs +0 -37
- package/dist/development/hooks/useElementSize.cjs.map +0 -1
- package/dist/development/hooks/useElementSize.js +0 -37
- package/dist/development/hooks/useElementSize.js.map +0 -1
- package/dist/development/hooks/useElementTopOffset.cjs +0 -29
- package/dist/development/hooks/useElementTopOffset.cjs.map +0 -1
- package/dist/development/hooks/useElementTopOffset.js +0 -29
- package/dist/development/hooks/useElementTopOffset.js.map +0 -1
- package/dist/development/hooks/useEventHandler.cjs +0 -19
- package/dist/development/hooks/useEventHandler.cjs.map +0 -1
- package/dist/development/hooks/useEventHandler.js +0 -19
- package/dist/development/hooks/useEventHandler.js.map +0 -1
- package/dist/development/hooks/useOnElementMutation.cjs +0 -35
- package/dist/development/hooks/useOnElementMutation.cjs.map +0 -1
- package/dist/development/hooks/useOnElementMutation.js +0 -35
- package/dist/development/hooks/useOnElementMutation.js.map +0 -1
- package/dist/development/hooks/useOnScrollWithin.cjs +0 -52
- package/dist/development/hooks/useOnScrollWithin.cjs.map +0 -1
- package/dist/development/hooks/useOnScrollWithin.js +0 -52
- package/dist/development/hooks/useOnScrollWithin.js.map +0 -1
- package/dist/development/hooks/useScrollOffsets.cjs +0 -67
- package/dist/development/hooks/useScrollOffsets.cjs.map +0 -1
- package/dist/development/hooks/useScrollOffsets.js +0 -67
- package/dist/development/hooks/useScrollOffsets.js.map +0 -1
- package/dist/development/theming/ColorSchemeProvider.cjs +0 -16
- package/dist/development/theming/ColorSchemeProvider.cjs.map +0 -1
- package/dist/development/theming/ColorSchemeProvider.js +0 -16
- package/dist/development/theming/ColorSchemeProvider.js.map +0 -1
- package/dist/development/theming/GlobalClassNamePrefixContext.cjs +0 -6
- package/dist/development/theming/GlobalClassNamePrefixContext.cjs.map +0 -1
- package/dist/development/theming/GlobalClassNamePrefixContext.js +0 -6
- package/dist/development/theming/GlobalClassNamePrefixContext.js.map +0 -1
- package/dist/development/theming/contexts.cjs +0 -12
- package/dist/development/theming/contexts.cjs.map +0 -1
- package/dist/development/theming/contexts.js +0 -12
- package/dist/development/theming/contexts.js.map +0 -1
- package/dist/development/theming/useClassName.cjs +0 -17
- package/dist/development/theming/useClassName.cjs.map +0 -1
- package/dist/development/theming/useClassName.js +0 -17
- package/dist/development/theming/useClassName.js.map +0 -1
- package/dist/development/theming/useClassNameFactory.cjs +0 -22
- package/dist/development/theming/useClassNameFactory.cjs.map +0 -1
- package/dist/development/theming/useClassNameFactory.js +0 -22
- package/dist/development/theming/useClassNameFactory.js.map +0 -1
- package/dist/development/theming/useThemedClassName.cjs +0 -17
- package/dist/development/theming/useThemedClassName.cjs.map +0 -1
- package/dist/development/theming/useThemedClassName.js +0 -17
- package/dist/development/theming/useThemedClassName.js.map +0 -1
- package/dist/development/theming/useThemedClassNameFactory.cjs +0 -29
- package/dist/development/theming/useThemedClassNameFactory.cjs.map +0 -1
- package/dist/development/theming/useThemedClassNameFactory.js +0 -29
- package/dist/development/theming/useThemedClassNameFactory.js.map +0 -1
- package/dist/production/context/createNonNullableContextFactory.cjs.map +0 -1
- package/dist/production/context/createNonNullableContextFactory.js.map +0 -1
- package/dist/production/context/createOptionalContextFactory.cjs +0 -13
- package/dist/production/context/createOptionalContextFactory.cjs.map +0 -1
- package/dist/production/context/createOptionalContextFactory.js +0 -13
- package/dist/production/context/createOptionalContextFactory.js.map +0 -1
- package/dist/production/hooks/useAddClassNameDuringResize.cjs +0 -32
- package/dist/production/hooks/useAddClassNameDuringResize.cjs.map +0 -1
- package/dist/production/hooks/useAddClassNameDuringResize.js +0 -32
- package/dist/production/hooks/useAddClassNameDuringResize.js.map +0 -1
- package/dist/production/hooks/useCloseOnClickOutside.cjs +0 -25
- package/dist/production/hooks/useCloseOnClickOutside.cjs.map +0 -1
- package/dist/production/hooks/useCloseOnClickOutside.js +0 -25
- package/dist/production/hooks/useCloseOnClickOutside.js.map +0 -1
- package/dist/production/hooks/useCloseOnEscape.cjs +0 -20
- package/dist/production/hooks/useCloseOnEscape.cjs.map +0 -1
- package/dist/production/hooks/useCloseOnEscape.js +0 -20
- package/dist/production/hooks/useCloseOnEscape.js.map +0 -1
- package/dist/production/hooks/useContainerWidth.cjs +0 -14
- package/dist/production/hooks/useContainerWidth.cjs.map +0 -1
- package/dist/production/hooks/useContainerWidth.js +0 -14
- package/dist/production/hooks/useContainerWidth.js.map +0 -1
- package/dist/production/hooks/useElementSize.cjs +0 -37
- package/dist/production/hooks/useElementSize.cjs.map +0 -1
- package/dist/production/hooks/useElementSize.js +0 -37
- package/dist/production/hooks/useElementSize.js.map +0 -1
- package/dist/production/hooks/useElementTopOffset.cjs +0 -29
- package/dist/production/hooks/useElementTopOffset.cjs.map +0 -1
- package/dist/production/hooks/useElementTopOffset.js +0 -29
- package/dist/production/hooks/useElementTopOffset.js.map +0 -1
- package/dist/production/hooks/useEventHandler.cjs +0 -19
- package/dist/production/hooks/useEventHandler.cjs.map +0 -1
- package/dist/production/hooks/useEventHandler.js +0 -19
- package/dist/production/hooks/useEventHandler.js.map +0 -1
- package/dist/production/hooks/useOnElementMutation.cjs +0 -35
- package/dist/production/hooks/useOnElementMutation.cjs.map +0 -1
- package/dist/production/hooks/useOnElementMutation.js +0 -35
- package/dist/production/hooks/useOnElementMutation.js.map +0 -1
- package/dist/production/hooks/useOnScrollWithin.cjs +0 -52
- package/dist/production/hooks/useOnScrollWithin.cjs.map +0 -1
- package/dist/production/hooks/useOnScrollWithin.js +0 -52
- package/dist/production/hooks/useOnScrollWithin.js.map +0 -1
- package/dist/production/hooks/useScrollOffsets.cjs +0 -67
- package/dist/production/hooks/useScrollOffsets.cjs.map +0 -1
- package/dist/production/hooks/useScrollOffsets.js +0 -67
- package/dist/production/hooks/useScrollOffsets.js.map +0 -1
- package/dist/production/theming/ColorSchemeProvider.cjs +0 -12
- package/dist/production/theming/ColorSchemeProvider.cjs.map +0 -1
- package/dist/production/theming/ColorSchemeProvider.js +0 -12
- package/dist/production/theming/ColorSchemeProvider.js.map +0 -1
- package/dist/production/theming/GlobalClassNamePrefixContext.cjs +0 -6
- package/dist/production/theming/GlobalClassNamePrefixContext.cjs.map +0 -1
- package/dist/production/theming/GlobalClassNamePrefixContext.js +0 -6
- package/dist/production/theming/GlobalClassNamePrefixContext.js.map +0 -1
- package/dist/production/theming/contexts.cjs +0 -12
- package/dist/production/theming/contexts.cjs.map +0 -1
- package/dist/production/theming/contexts.js +0 -12
- package/dist/production/theming/contexts.js.map +0 -1
- package/dist/production/theming/useClassName.cjs +0 -17
- package/dist/production/theming/useClassName.cjs.map +0 -1
- package/dist/production/theming/useClassName.js +0 -17
- package/dist/production/theming/useClassName.js.map +0 -1
- package/dist/production/theming/useClassNameFactory.cjs +0 -22
- package/dist/production/theming/useClassNameFactory.cjs.map +0 -1
- package/dist/production/theming/useClassNameFactory.js +0 -22
- package/dist/production/theming/useClassNameFactory.js.map +0 -1
- package/dist/production/theming/useThemedClassName.cjs +0 -17
- package/dist/production/theming/useThemedClassName.cjs.map +0 -1
- package/dist/production/theming/useThemedClassName.js +0 -17
- package/dist/production/theming/useThemedClassName.js.map +0 -1
- package/dist/production/theming/useThemedClassNameFactory.cjs +0 -29
- package/dist/production/theming/useThemedClassNameFactory.cjs.map +0 -1
- package/dist/production/theming/useThemedClassNameFactory.js +0 -29
- package/dist/production/theming/useThemedClassNameFactory.js.map +0 -1
- package/dist/types/context/createNonNullableContextFactory.d.ts +0 -3
- package/dist/types/context/createNonNullableContextFactory.d.ts.map +0 -1
- package/dist/types/context/createOptionalContextFactory.d.ts +0 -3
- package/dist/types/context/createOptionalContextFactory.d.ts.map +0 -1
- package/dist/types/hooks/useAddClassNameDuringResize.d.ts +0 -13
- package/dist/types/hooks/useAddClassNameDuringResize.d.ts.map +0 -1
- package/dist/types/hooks/useCloseOnClickOutside.d.ts +0 -7
- package/dist/types/hooks/useCloseOnClickOutside.d.ts.map +0 -1
- package/dist/types/hooks/useCloseOnEscape.d.ts +0 -5
- package/dist/types/hooks/useCloseOnEscape.d.ts.map +0 -1
- package/dist/types/hooks/useContainerWidth.d.ts +0 -4
- package/dist/types/hooks/useContainerWidth.d.ts.map +0 -1
- package/dist/types/hooks/useElementSize.d.ts +0 -16
- package/dist/types/hooks/useElementSize.d.ts.map +0 -1
- package/dist/types/hooks/useElementTopOffset.d.ts +0 -3
- package/dist/types/hooks/useElementTopOffset.d.ts.map +0 -1
- package/dist/types/hooks/useEventHandler.d.ts +0 -10
- package/dist/types/hooks/useEventHandler.d.ts.map +0 -1
- package/dist/types/hooks/useOnElementMutation.d.ts +0 -3
- package/dist/types/hooks/useOnElementMutation.d.ts.map +0 -1
- package/dist/types/hooks/useOnScrollWithin.d.ts +0 -10
- package/dist/types/hooks/useOnScrollWithin.d.ts.map +0 -1
- package/dist/types/hooks/useScrollOffsets.d.ts +0 -14
- package/dist/types/hooks/useScrollOffsets.d.ts.map +0 -1
- package/dist/types/theming/ColorSchemeProvider.d.ts +0 -6
- package/dist/types/theming/ColorSchemeProvider.d.ts.map +0 -1
- package/dist/types/theming/GlobalClassNamePrefixContext.d.ts +0 -2
- package/dist/types/theming/GlobalClassNamePrefixContext.d.ts.map +0 -1
- package/dist/types/theming/contexts.d.ts +0 -12
- package/dist/types/theming/contexts.d.ts.map +0 -1
- package/dist/types/theming/index.d.ts +0 -8
- package/dist/types/theming/index.d.ts.map +0 -1
- package/dist/types/theming/useClassName.d.ts +0 -11
- package/dist/types/theming/useClassName.d.ts.map +0 -1
- package/dist/types/theming/useClassNameFactory.d.ts +0 -17
- package/dist/types/theming/useClassNameFactory.d.ts.map +0 -1
- package/dist/types/theming/useThemedClassName.d.ts +0 -39
- package/dist/types/theming/useThemedClassName.d.ts.map +0 -1
- package/dist/types/theming/useThemedClassNameFactory.d.ts +0 -3
- package/dist/types/theming/useThemedClassNameFactory.d.ts.map +0 -1
- package/src/context/createOptionalContextFactory.ts +0 -13
- package/src/hooks/useAddClassNameDuringResize.ts +0 -56
- package/src/hooks/useCloseOnClickOutside.ts +0 -27
- package/src/hooks/useCloseOnEscape.ts +0 -18
- package/src/hooks/useContainerWidth.ts +0 -13
- package/src/hooks/useElementSize.ts +0 -56
- package/src/hooks/useElementTopOffset.ts +0 -35
- package/src/hooks/useEventHandler.ts +0 -24
- package/src/hooks/useOnElementMutation.ts +0 -42
- package/src/hooks/useOnScrollWithin.ts +0 -68
- package/src/hooks/useScrollOffsets.ts +0 -87
- package/src/theming/ColorSchemeProvider.tsx +0 -16
- package/src/theming/GlobalClassNamePrefixContext.ts +0 -3
- package/src/theming/contexts.ts +0 -18
- package/src/theming/index.ts +0 -7
- package/src/theming/useClassName.ts +0 -28
- package/src/theming/useClassNameFactory.ts +0 -50
- package/src/theming/useThemedClassName.ts +0 -54
- package/src/theming/useThemedClassNameFactory.ts +0 -44
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { memo } from 'react'
|
|
2
|
-
import { ColorSchemeContext, useColorScheme } from './contexts'
|
|
3
|
-
|
|
4
|
-
export type ColorSchemeProviderProps = {
|
|
5
|
-
children: React.ReactNode
|
|
6
|
-
scheme?: string
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export const ColorSchemeProvider = memo(({ children, scheme }: ColorSchemeProviderProps) => {
|
|
10
|
-
const inheritedColorScheme = useColorScheme()
|
|
11
|
-
|
|
12
|
-
return (
|
|
13
|
-
<ColorSchemeContext.Provider value={scheme ?? inheritedColorScheme}>{children}</ColorSchemeContext.Provider>
|
|
14
|
-
)
|
|
15
|
-
})
|
|
16
|
-
ColorSchemeProvider.displayName = 'Interface.ColorSchemeProvider'
|
package/src/theming/contexts.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { createOptionalContextFactory } from '../context'
|
|
2
|
-
|
|
3
|
-
export const DEFAULT_COLOR_SCHEME = 'system'
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* @group UI
|
|
8
|
-
*
|
|
9
|
-
* @description
|
|
10
|
-
* Provides the current color scheme, possible values are `'light'`, `'dark'` or `'system'`.
|
|
11
|
-
*
|
|
12
|
-
* @see https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-color-scheme
|
|
13
|
-
*
|
|
14
|
-
*/
|
|
15
|
-
export const [ColorSchemeContext, useColorScheme] = createOptionalContextFactory<string>(
|
|
16
|
-
'Interface.ColorScheme',
|
|
17
|
-
DEFAULT_COLOR_SCHEME,
|
|
18
|
-
)
|
package/src/theming/index.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
export * from './ColorSchemeProvider'
|
|
2
|
-
export * from './GlobalClassNamePrefixContext'
|
|
3
|
-
export * from './contexts'
|
|
4
|
-
export * from './useClassName'
|
|
5
|
-
export * from './useClassNameFactory'
|
|
6
|
-
export * from './useThemedClassName'
|
|
7
|
-
export * from './useThemedClassNameFactory'
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { NestedClassName, deduplicateClassName, flatClassNameList } from '@contember/utilities'
|
|
2
|
-
import { useContext } from 'react'
|
|
3
|
-
import { GlobalClassNamePrefixContext } from './GlobalClassNamePrefixContext'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Hook for component class name accepting outer class name
|
|
7
|
-
*
|
|
8
|
-
* @param componentClassName - Component class name
|
|
9
|
-
* @param additionalClassName - Additional class name
|
|
10
|
-
* @param prefixOverride - Context component prefix override
|
|
11
|
-
* @returns Prefixed component class name.
|
|
12
|
-
*/
|
|
13
|
-
export function useClassName (
|
|
14
|
-
componentClassName: NestedClassName,
|
|
15
|
-
additionalClassName: NestedClassName = null,
|
|
16
|
-
prefixOverride?: string | null | undefined,
|
|
17
|
-
) {
|
|
18
|
-
const contextPrefix = useContext(GlobalClassNamePrefixContext)
|
|
19
|
-
const classNamePrefix: string = prefixOverride === null || prefixOverride === '' ? '' : prefixOverride || contextPrefix
|
|
20
|
-
|
|
21
|
-
const componentClassNameList: string[] = flatClassNameList(componentClassName).map(
|
|
22
|
-
componentClassName => `${classNamePrefix}${componentClassName}`,
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
return deduplicateClassName(componentClassNameList.concat(
|
|
26
|
-
flatClassNameList(additionalClassName),
|
|
27
|
-
)).join(' ')
|
|
28
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import { NestedClassName, deduplicateClassName, flatClassNameList } from '@contember/utilities'
|
|
2
|
-
import { useContext } from 'react'
|
|
3
|
-
import { useReferentiallyStableCallback } from '../referentiallyStable'
|
|
4
|
-
import { GlobalClassNamePrefixContext } from './GlobalClassNamePrefixContext'
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Hook for component class name accepting outer class name
|
|
8
|
-
*
|
|
9
|
-
* Returns a reusable function almost that is handy for components
|
|
10
|
-
* with many sub-component parts that should inherit the root component
|
|
11
|
-
* name.
|
|
12
|
-
*
|
|
13
|
-
* Also, product of the factory is a function that can be used outside of rules of hooks.
|
|
14
|
-
*
|
|
15
|
-
* @param componentClassName - Component class name
|
|
16
|
-
* @param glue - String to use to glue component and sub-component suffix
|
|
17
|
-
* @param prefixOverride - Context component prefix override
|
|
18
|
-
* @returns
|
|
19
|
-
*/
|
|
20
|
-
export function useClassNameFactory(
|
|
21
|
-
componentClassName: NestedClassName,
|
|
22
|
-
glue: string | null = '-',
|
|
23
|
-
prefixOverride?: string | null | undefined,
|
|
24
|
-
) {
|
|
25
|
-
const contextPrefix = useContext(GlobalClassNamePrefixContext)
|
|
26
|
-
const classNamePrefix: string = prefixOverride === null || prefixOverride === '' ? '' : prefixOverride || contextPrefix
|
|
27
|
-
|
|
28
|
-
const componentClassNameList: string[] = flatClassNameList(componentClassName).map(
|
|
29
|
-
componentClassName => `${classNamePrefix}${componentClassName}`,
|
|
30
|
-
)
|
|
31
|
-
|
|
32
|
-
function componentClassNameFor(
|
|
33
|
-
suffix: string | null | undefined = null,
|
|
34
|
-
additionalClassName: NestedClassName = null,
|
|
35
|
-
): string {
|
|
36
|
-
const classNameSuffix: string = suffix ?? ''
|
|
37
|
-
|
|
38
|
-
return deduplicateClassName((classNameSuffix
|
|
39
|
-
? (classNameSuffix.match(/^[a-zA-Z0-9]/)
|
|
40
|
-
? componentClassNameList.map(componentClassName => `${componentClassName}${glue}${classNameSuffix}`)
|
|
41
|
-
: componentClassNameList.map(componentClassName => `${componentClassName}${classNameSuffix}`)
|
|
42
|
-
)
|
|
43
|
-
: componentClassNameList
|
|
44
|
-
).concat(
|
|
45
|
-
flatClassNameList(additionalClassName),
|
|
46
|
-
)).join(' ')
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
return useReferentiallyStableCallback(componentClassNameFor)
|
|
50
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import { NestedClassName, colorSchemeClassName, filterThemedClassName } from '@contember/utilities'
|
|
2
|
-
import { useColorScheme } from './contexts'
|
|
3
|
-
import { useClassName } from './useClassName'
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Hook for component class name accepting outer class name with theme-* and scheme-* class manes
|
|
7
|
-
*
|
|
8
|
-
* It looks for theme CSS classes in the given class name, deduplicates them and returns final theme class name with scheme CSS class set
|
|
9
|
-
* @internal
|
|
10
|
-
*
|
|
11
|
-
* @param componentClassName - Component class name
|
|
12
|
-
* @param additionalClassName - Additional class name
|
|
13
|
-
* @param prefixOverride - Context component prefix override
|
|
14
|
-
* @returns string
|
|
15
|
-
* @see useColorScheme
|
|
16
|
-
*
|
|
17
|
-
* @example
|
|
18
|
-
* ```tsx
|
|
19
|
-
* function Button({ className }: { className?: string | string[] }) {
|
|
20
|
-
* const [contentThemeClassName, controlsThemeClassName] = useThemedClassName(className)
|
|
21
|
-
*
|
|
22
|
-
* return (
|
|
23
|
-
* <div className={contentThemeClassName}>
|
|
24
|
-
* <button className={controlsThemeClassName}>Click me</button>
|
|
25
|
-
* </div>
|
|
26
|
-
* )
|
|
27
|
-
* }
|
|
28
|
-
*
|
|
29
|
-
* function App() {
|
|
30
|
-
* return (
|
|
31
|
-
* <Button className="theme-default theme-danger:hover" />
|
|
32
|
-
* )
|
|
33
|
-
* }
|
|
34
|
-
*
|
|
35
|
-
* // renders:
|
|
36
|
-
* // <div class="scheme-system theme-default-content theme-danger-content:hover">
|
|
37
|
-
* // <button class="scheme-system theme-default-controls theme-danger-controls:hover">Click me</button>
|
|
38
|
-
* // </div>
|
|
39
|
-
* ```
|
|
40
|
-
*/
|
|
41
|
-
export function useThemedClassName(
|
|
42
|
-
componentClassName: NestedClassName,
|
|
43
|
-
additionalClassName: NestedClassName,
|
|
44
|
-
prefixOverride?: string | null | undefined,
|
|
45
|
-
): string {
|
|
46
|
-
return useClassName(
|
|
47
|
-
componentClassName,
|
|
48
|
-
filterThemedClassName(
|
|
49
|
-
additionalClassName,
|
|
50
|
-
colorSchemeClassName(useColorScheme()),
|
|
51
|
-
),
|
|
52
|
-
prefixOverride,
|
|
53
|
-
)
|
|
54
|
-
}
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { NestedClassName, colorSchemeClassName, deduplicateClassName, filterThemedClassName, flatClassNameList } from '@contember/utilities'
|
|
2
|
-
import { useContext } from 'react'
|
|
3
|
-
import { useReferentiallyStableCallback } from '../referentiallyStable'
|
|
4
|
-
import { GlobalClassNamePrefixContext } from './GlobalClassNamePrefixContext'
|
|
5
|
-
import { useColorScheme } from './contexts'
|
|
6
|
-
|
|
7
|
-
export function useThemedClassNameFactory(
|
|
8
|
-
componentClassName: NestedClassName,
|
|
9
|
-
glue: string | null = '-',
|
|
10
|
-
prefixOverride?: string | null | undefined,
|
|
11
|
-
) {
|
|
12
|
-
const contextPrefix = useContext(GlobalClassNamePrefixContext)
|
|
13
|
-
const classNamePrefix: string = prefixOverride === null || prefixOverride === '' ? '' : prefixOverride || contextPrefix
|
|
14
|
-
|
|
15
|
-
const componentClassNameList: string[] = flatClassNameList(componentClassName).map(
|
|
16
|
-
componentClassName => `${classNamePrefix}${componentClassName}`,
|
|
17
|
-
)
|
|
18
|
-
|
|
19
|
-
const colorScheme = colorSchemeClassName(useColorScheme())
|
|
20
|
-
|
|
21
|
-
function componentClassNameFor(
|
|
22
|
-
suffix: string | null | undefined = null,
|
|
23
|
-
additionalClassName: NestedClassName = null,
|
|
24
|
-
): string {
|
|
25
|
-
const classNameSuffix: string = suffix ?? ''
|
|
26
|
-
|
|
27
|
-
return deduplicateClassName((classNameSuffix
|
|
28
|
-
? (classNameSuffix.match(/^[a-zA-Z0-9]/)
|
|
29
|
-
? componentClassNameList.map(componentClassName => `${componentClassName}${glue}${classNameSuffix}`)
|
|
30
|
-
: componentClassNameList.map(componentClassName => `${componentClassName}${classNameSuffix}`)
|
|
31
|
-
)
|
|
32
|
-
: componentClassNameList
|
|
33
|
-
).concat(
|
|
34
|
-
flatClassNameList(
|
|
35
|
-
filterThemedClassName(
|
|
36
|
-
additionalClassName,
|
|
37
|
-
colorScheme,
|
|
38
|
-
),
|
|
39
|
-
),
|
|
40
|
-
)).join(' ')
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
return useReferentiallyStableCallback(componentClassNameFor)
|
|
44
|
-
}
|