import { RawValueSignature, SpecifyDesignTokenTypeName, } from '@specifyapp/specify-design-token-format'; export type rawValueMatcher = { [K in SpecifyDesignTokenTypeName]?: (token: RawValueSignature) => T | undefined; }; /* v8 ignore start */ export function matchRawValue( tokenMatcher: rawValueMatcher, missingFn: (token: RawValueSignature) => T | undefined, type: SpecifyDesignTokenTypeName, rawValue: RawValueSignature, ): T | undefined { switch (type) { case 'arcDegreeNumber': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'arcDegreeNumber'>); case 'array': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'array'>); case 'bitmap': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'bitmap'>); case 'bitmapFormat': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'bitmapFormat'>); case 'blur': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'blur'>); case 'boolean': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'boolean'>); case 'border': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'border'>); case 'borderStyle': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'borderStyle'>); case 'borderStyleLineCap': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'borderStyleLineCap'>); case 'breakpoint': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'breakpoint'>); case 'color': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'color'>); case 'cubicBezier': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'cubicBezier'>); case 'dimension': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'dimension'>); case 'dimensionUnit': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'dimensionUnit'>); case 'duration': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'duration'>); case 'durationUnit': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'durationUnit'>); case 'font': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'font'>); case 'fontFamily': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'fontFamily'>); case 'fontFeature': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'fontFeature'>); case 'fontFeatures': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'fontFeatures'>); case 'fontFormat': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'fontFormat'>); case 'fontStyle': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'fontStyle'>); case 'fontWeight': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'fontWeight'>); case 'gradient': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'gradient'>); case 'gradients': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'gradients'>); case 'hexadecimalColorString': return (tokenMatcher[type] ?? missingFn)( rawValue as RawValueSignature<'hexadecimalColorString'>, ); case 'integerNumber': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'integerNumber'>); case 'null': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'null'>); case 'number': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'number'>); case 'object': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'object'>); case 'opacity': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'opacity'>); case 'percentageNumber': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'percentageNumber'>); case 'positiveIntegerNumber': return (tokenMatcher[type] ?? missingFn)( rawValue as RawValueSignature<'positiveIntegerNumber'>, ); case 'positiveNumber': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'positiveNumber'>); case 'radii': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'radii'>); case 'radius': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'radius'>); case 'rgbColorNumber': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'rgbColorNumber'>); case 'shadow': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'shadow'>); case 'shadowType': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'shadowType'>); case 'shadows': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'shadows'>); case 'spacing': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'spacing'>); case 'spacings': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'spacings'>); case 'stepsTimingFunction': return (tokenMatcher[type] ?? missingFn)( rawValue as RawValueSignature<'stepsTimingFunction'>, ); case 'string': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'string'>); case 'textAlignHorizontal': return (tokenMatcher[type] ?? missingFn)( rawValue as RawValueSignature<'textAlignHorizontal'>, ); case 'textAlignVertical': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'textAlignVertical'>); case 'textDecoration': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'textDecoration'>); case 'textStyle': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'textStyle'>); case 'textTransform': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'textTransform'>); case 'transition': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'transition'>); case 'vector': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'vector'>); case 'vectorFormat': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'vectorFormat'>); case 'zIndex': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'zIndex'>); case 'zeroToOneNumber': return (tokenMatcher[type] ?? missingFn)(rawValue as RawValueSignature<'zeroToOneNumber'>); } } /* v8 ignore stop */