{"version":3,"file":"parseColorStops.min.mjs","sources":["../../../../src/gradient/parser/parseColorStops.ts"],"sourcesContent":["import { Color } from '../../color/Color';\nimport { parsePercent } from '../../parser/percent';\nimport { ifNaN } from '../../util/internals';\nimport type { ColorStop } from '../typedefs';\n\nconst RE_KEY_VALUE_PAIRS = /\\s*;\\s*/;\nconst RE_KEY_VALUE = /\\s*:\\s*/;\n\nfunction parseColorStop(el: SVGStopElement, multiplier: number) {\n  let colorValue, opacity;\n  const style = el.getAttribute('style');\n  if (style) {\n    const keyValuePairs = style.split(RE_KEY_VALUE_PAIRS);\n\n    if (keyValuePairs[keyValuePairs.length - 1] === '') {\n      keyValuePairs.pop();\n    }\n\n    for (let i = keyValuePairs.length; i--; ) {\n      const [key, value] = keyValuePairs[i]\n        .split(RE_KEY_VALUE)\n        .map((s) => s.trim());\n      if (key === 'stop-color') {\n        colorValue = value;\n      } else if (key === 'stop-opacity') {\n        opacity = value;\n      }\n    }\n  }\n\n  const color = new Color(\n    colorValue || el.getAttribute('stop-color') || 'rgb(0,0,0)'\n  );\n\n  return {\n    offset: parsePercent(el.getAttribute('offset'), 0),\n    color: color.toRgb(),\n    opacity:\n      ifNaN(parseFloat(opacity || el.getAttribute('stop-opacity') || ''), 1) *\n      color.getAlpha() *\n      multiplier,\n  };\n}\n\nexport function parseColorStops(\n  el: SVGGradientElement,\n  opacityAttr: string | null\n) {\n  const colorStops: ColorStop[] = [],\n    colorStopEls = el.getElementsByTagName('stop'),\n    multiplier = parsePercent(opacityAttr, 1);\n  for (let i = colorStopEls.length; i--; ) {\n    colorStops.push(parseColorStop(colorStopEls[i], multiplier));\n  }\n  return colorStops;\n}\n"],"names":["RE_KEY_VALUE_PAIRS","RE_KEY_VALUE","parseColorStop","el","multiplier","colorValue","opacity","style","getAttribute","keyValuePairs","split","length","pop","i","key","value","map","s","trim","color","Color","offset","parsePercent","toRgb","ifNaN","parseFloat","getAlpha","parseColorStops","opacityAttr","colorStops","colorStopEls","getElementsByTagName","push"],"mappings":"yKAKA,MAAMA,EAAqB,UACrBC,EAAe,UAErB,SAASC,EAAeC,EAAoBC,GAC1C,IAAIC,EAAYC,EAChB,MAAMC,EAAQJ,EAAGK,aAAa,SAC9B,GAAID,EAAO,CACT,MAAME,EAAgBF,EAAMG,MAAMV,GAEc,KAA5CS,EAAcA,EAAcE,OAAS,IACvCF,EAAcG,MAGhB,IAAK,IAAIC,EAAIJ,EAAcE,OAAQE,KAAO,CACxC,MAAOC,EAAKC,GAASN,EAAcI,GAChCH,MAAMT,GACNe,KAAKC,GAAMA,EAAEC,SACJ,eAARJ,EACFT,EAAaU,EACI,iBAARD,IACTR,EAAUS,EAEd,CACF,CAEA,MAAMI,EAAQ,IAAIC,EAChBf,GAAcF,EAAGK,aAAa,eAAiB,cAGjD,MAAO,CACLa,OAAQC,EAAanB,EAAGK,aAAa,UAAW,GAChDW,MAAOA,EAAMI,QACbjB,QACEkB,EAAMC,WAAWnB,GAAWH,EAAGK,aAAa,iBAAmB,IAAK,GACpEW,EAAMO,WACNtB,EAEN,CAEO,SAASuB,EACdxB,EACAyB,GAEA,MAAMC,EAA0B,GAC9BC,EAAe3B,EAAG4B,qBAAqB,QACvC3B,EAAakB,EAAaM,EAAa,GACzC,IAAK,IAAIf,EAAIiB,EAAanB,OAAQE,KAChCgB,EAAWG,KAAK9B,EAAe4B,EAAajB,GAAIT,IAElD,OAAOyB,CACT"}