MCPcopy
hub / github.com/DavidHDev/react-bits / createParser

Function createParser

src/hooks/useComponentProps.js:6–33  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

4const isHexColor = value => typeof value === 'string' && /^#?[0-9a-fA-F]{3,8}$/.test(value);
5
6const createParser = defaultValue => {
7 if (typeof defaultValue === 'number') {
8 return {
9 parse: v => (v === null || v === '' ? null : Number(v)),
10 serialize: v => String(v),
11 eq: (a, b) => a === b
12 };
13 }
14 if (typeof defaultValue === 'boolean') {
15 return {
16 parse: v => (v === null || v === '' ? null : v === 'true'),
17 serialize: v => String(v),
18 eq: (a, b) => a === b
19 };
20 }
21 if (isHexColor(defaultValue)) {
22 return {
23 parse: v => (v === null || v === '' ? null : `#${v}`),
24 serialize: v => v.replace(/^#/, ''),
25 eq: (a, b) => a === b
26 };
27 }
28 return {
29 parse: v => (v === null || v === '' ? null : v),
30 serialize: v => String(v),
31 eq: (a, b) => a === b
32 };
33};
34
35export function useComponentProps(defaultProps) {
36 const defaultPropsRef = useRef(defaultProps);

Callers 1

useComponentPropsFunction · 0.85

Calls 2

isHexColorFunction · 0.85
NumberFunction · 0.50

Tested by

no test coverage detected