{"version":3,"names":["getAdditionalPaddingFromBorderRadii","borderRadii","maxBorderRadiusLeft","Math","max","topLeft","bottomLeft","maxBorderRadiusRight","topRight","bottomRight","left","getSingleAdditionalPadding","right","borderRadius","getMaxEffectiveBorderRadius","computedStyle","height","width","min","parseInt","getComputedBorderRadii","element","window","getComputedStyle","maxEffectiveBorderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomRightRadius","borderBottomLeftRadius","getBorderRadiiFromTokens","tokenBase","tokenBorderRadius","getPropertyValue","generalBorderRadiusParts","trim","split","map","borderRadiusString","generalBorderRadius","length","getBorderRadius","cornerName","cornerValue","usedValue"],"sources":["../src/utils/border-radius-additional-padding.ts","../src/utils/get-border-radius.ts"],"sourcesContent":["import { BorderRadii } from './get-border-radius';\n\ninterface AdditionalPadding {\n\tleft: number;\n\tright: number;\n}\n\n/**\n * Calculates the needed additional padding near corners with a border radius\n *\n * @param element element to read determine additional padding for\n */\nexport const getAdditionalPaddingFromBorderRadii = (borderRadii: BorderRadii): AdditionalPadding => {\n\tconst maxBorderRadiusLeft = Math.max(borderRadii.topLeft, borderRadii.bottomLeft);\n\tconst maxBorderRadiusRight = Math.max(borderRadii.topRight, borderRadii.bottomRight);\n\n\treturn {\n\t\tleft: getSingleAdditionalPadding(maxBorderRadiusLeft),\n\t\tright: getSingleAdditionalPadding(maxBorderRadiusRight),\n\t};\n};\n\nconst getSingleAdditionalPadding = (borderRadius: number): number => {\n\t// Border radius threshold of 12px\n\t// Additional padding ratio of 50%\n\treturn Math.max(0, 0.5 * (borderRadius - 12));\n};\n","export interface BorderRadii {\n\ttopLeft: number;\n\tbottomLeft: number;\n\ttopRight: number;\n\tbottomRight: number;\n}\n\nconst getMaxEffectiveBorderRadius = (computedStyle: CSSStyleDeclaration) => {\n\tif (computedStyle.height === 'auto' || computedStyle.width === 'auto') return null;\n\n\t// Effective border radius in px cannot be higher than half of the smallest simension\n\treturn Math.min(parseInt(computedStyle.height), parseInt(computedStyle.width)) / 2;\n};\n\n/**\n * Get border radii of element based from computed CSS\n *\n * @param element element to read determine additional padding for\n */\nexport const getComputedBorderRadii = (element: Element): BorderRadii => {\n\tconst computedStyle = window.getComputedStyle(element);\n\tconst maxEffectiveBorderRadius = getMaxEffectiveBorderRadius(computedStyle);\n\tif (maxEffectiveBorderRadius === null) return null;\n\n\treturn {\n\t\ttopLeft: Math.min(maxEffectiveBorderRadius, parseInt(computedStyle.borderTopLeftRadius)) || 0,\n\t\ttopRight: Math.min(maxEffectiveBorderRadius, parseInt(computedStyle.borderTopRightRadius)) || 0,\n\t\tbottomRight: Math.min(maxEffectiveBorderRadius, parseInt(computedStyle.borderBottomRightRadius)) || 0,\n\t\tbottomLeft: Math.min(maxEffectiveBorderRadius, parseInt(computedStyle.borderBottomLeftRadius)) || 0,\n\t};\n};\n\n/**\n * Get border radii of element based from design tokens\n *\n * @param element element to read determine additional padding for\n */\nexport const getBorderRadiiFromTokens = (element: Element, tokenBase: string): BorderRadii => {\n\tconst computedStyle = window.getComputedStyle(element);\n\tconst tokenBorderRadius = computedStyle.getPropertyValue(`${tokenBase}-border-radius`);\n\tconst maxEffectiveBorderRadius = getMaxEffectiveBorderRadius(computedStyle);\n\tif (tokenBorderRadius === '' || maxEffectiveBorderRadius === null) return null;\n\n\t/* Get general border radius token */\n\tconst generalBorderRadiusParts = tokenBorderRadius\n\t\t.trim()\n\t\t.split(' ')\n\t\t.map((borderRadiusString) => parseInt(borderRadiusString) || 0);\n\n\tlet generalBorderRadius;\n\tif (generalBorderRadiusParts.length === 1) {\n\t\tgeneralBorderRadius = {\n\t\t\t'top-left': generalBorderRadiusParts[0],\n\t\t\t'top-right': generalBorderRadiusParts[0],\n\t\t\t'bottom-right': generalBorderRadiusParts[0],\n\t\t\t'bottom-left': generalBorderRadiusParts[0],\n\t\t};\n\t} else if (generalBorderRadiusParts.length === 4) {\n\t\tgeneralBorderRadius = {\n\t\t\t'top-left': generalBorderRadiusParts[0],\n\t\t\t'top-right': generalBorderRadiusParts[1],\n\t\t\t'bottom-right': generalBorderRadiusParts[2],\n\t\t\t'bottom-left': generalBorderRadiusParts[3],\n\t\t};\n\t} else {\n\t\tgeneralBorderRadius = {\n\t\t\t'top-left': 0,\n\t\t\t'top-right': 0,\n\t\t\t'bottom-right': 0,\n\t\t\t'bottom-left': 0,\n\t\t};\n\t}\n\n\t/* Get border radius token per corner, with fallback to general border radius */\n\tconst getBorderRadius = (cornerName: string): number => {\n\t\tconst cornerValue = computedStyle.getPropertyValue(`${tokenBase}-border-${cornerName}-radius`);\n\t\tconst usedValue = cornerValue === '' ? generalBorderRadius[cornerName] : parseInt(cornerValue);\n\t\treturn Math.min(maxEffectiveBorderRadius, usedValue);\n\t};\n\n\tconst borderRadii = {\n\t\ttopLeft: getBorderRadius('top-left'),\n\t\tbottomLeft: getBorderRadius('bottom-left'),\n\t\ttopRight: getBorderRadius('top-right'),\n\t\tbottomRight: getBorderRadius('bottom-right'),\n\t};\n\treturn borderRadii;\n};\n"],"mappings":"MAYaA,EAAuCC,IACnD,MAAMC,EAAsBC,KAAKC,IAAIH,EAAYI,QAASJ,EAAYK,YACtE,MAAMC,EAAuBJ,KAAKC,IAAIH,EAAYO,SAAUP,EAAYQ,aAExE,MAAO,CACNC,KAAMC,EAA2BT,GACjCU,MAAOD,EAA2BJ,GAClC,EAGF,MAAMI,EAA8BE,GAG5BV,KAAKC,IAAI,EAAG,IAAOS,EAAe,KClB1C,MAAMC,EAA+BC,IACpC,GAAIA,EAAcC,SAAW,QAAUD,EAAcE,QAAU,OAAQ,OAAO,KAG9E,OAAOd,KAAKe,IAAIC,SAASJ,EAAcC,QAASG,SAASJ,EAAcE,QAAU,CAAC,E,MAQtEG,EAA0BC,IACtC,MAAMN,EAAgBO,OAAOC,iBAAiBF,GAC9C,MAAMG,EAA2BV,EAA4BC,GAC7D,GAAIS,IAA6B,KAAM,OAAO,KAE9C,MAAO,CACNnB,QAASF,KAAKe,IAAIM,EAA0BL,SAASJ,EAAcU,uBAAyB,EAC5FjB,SAAUL,KAAKe,IAAIM,EAA0BL,SAASJ,EAAcW,wBAA0B,EAC9FjB,YAAaN,KAAKe,IAAIM,EAA0BL,SAASJ,EAAcY,2BAA6B,EACpGrB,WAAYH,KAAKe,IAAIM,EAA0BL,SAASJ,EAAca,0BAA4B,EAClG,E,MAQWC,EAA2B,CAACR,EAAkBS,KAC1D,MAAMf,EAAgBO,OAAOC,iBAAiBF,GAC9C,MAAMU,EAAoBhB,EAAciB,iBAAiB,GAAGF,mBAC5D,MAAMN,EAA2BV,EAA4BC,GAC7D,GAAIgB,IAAsB,IAAMP,IAA6B,KAAM,OAAO,KAG1E,MAAMS,EAA2BF,EAC/BG,OACAC,MAAM,KACNC,KAAKC,GAAuBlB,SAASkB,IAAuB,IAE9D,IAAIC,EACJ,GAAIL,EAAyBM,SAAW,EAAG,CAC1CD,EAAsB,CACrB,WAAYL,EAAyB,GACrC,YAAaA,EAAyB,GACtC,eAAgBA,EAAyB,GACzC,cAAeA,EAAyB,G,MAEnC,GAAIA,EAAyBM,SAAW,EAAG,CACjDD,EAAsB,CACrB,WAAYL,EAAyB,GACrC,YAAaA,EAAyB,GACtC,eAAgBA,EAAyB,GACzC,cAAeA,EAAyB,G,KAEnC,CACNK,EAAsB,CACrB,WAAY,EACZ,YAAa,EACb,eAAgB,EAChB,cAAe,E,CAKjB,MAAME,EAAmBC,IACxB,MAAMC,EAAc3B,EAAciB,iBAAiB,GAAGF,YAAoBW,YAC1E,MAAME,EAAYD,IAAgB,GAAKJ,EAAoBG,GAActB,SAASuB,GAClF,OAAOvC,KAAKe,IAAIM,EAA0BmB,EAAU,EAGrD,MAAM1C,EAAc,CACnBI,QAASmC,EAAgB,YACzBlC,WAAYkC,EAAgB,eAC5BhC,SAAUgC,EAAgB,aAC1B/B,YAAa+B,EAAgB,iBAE9B,OAAOvC,CAAW,S","ignoreList":[]}