import { RawValueSignature } from '@specifyapp/specify-design-token-format'; import { sizeToStyleDictionary } from './size.js'; import { aliasOfResolvableAlias } from '../utils/aliasOfResolvedStatefulAlias.js'; import { throwOnUnexpectedUnresolvable } from '../../../utils/throwOnUnexpectedUnresolvable.js'; export function borderStyleToStyleDictionary( borderStyle: RawValueSignature<'borderStyle'>, ): string | { lineCap: string; dashArray: Array | string } { if (typeof borderStyle === 'string') return borderStyle; const lineCap = borderStyle.lineCap.resolveDeepValue().unwrapValue(); const dashArray = borderStyle.dashArray .mapPrimitiveValue(dashArray => dashArray.map(v => v .mapPrimitiveValue(sizeToStyleDictionary) .mapResolvableValueLevelAlias(aliasOfResolvableAlias) .mapUnresolvableValueLevelAlias(throwOnUnexpectedUnresolvable) .unwrap(), ), ) .mapUnresolvableValueLevelAlias(throwOnUnexpectedUnresolvable) .mapResolvableValueLevelAlias(aliasOfResolvableAlias) .unwrap(); return { lineCap, dashArray, }; }