{"version":3,"file":"parseColorStops.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":";;;;AAKA,MAAMA,kBAAkB,GAAG,SAAS,CAAA;AACpC,MAAMC,YAAY,GAAG,SAAS,CAAA;AAE9B,SAASC,cAAcA,CAACC,EAAkB,EAAEC,UAAkB,EAAE;EAC9D,IAAIC,UAAU,EAAEC,OAAO,CAAA;AACvB,EAAA,MAAMC,KAAK,GAAGJ,EAAE,CAACK,YAAY,CAAC,OAAO,CAAC,CAAA;AACtC,EAAA,IAAID,KAAK,EAAE;AACT,IAAA,MAAME,aAAa,GAAGF,KAAK,CAACG,KAAK,CAACV,kBAAkB,CAAC,CAAA;IAErD,IAAIS,aAAa,CAACA,aAAa,CAACE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;MAClDF,aAAa,CAACG,GAAG,EAAE,CAAA;AACrB,KAAA;IAEA,KAAK,IAAIC,CAAC,GAAGJ,aAAa,CAACE,MAAM,EAAEE,CAAC,EAAE,GAAI;MACxC,MAAM,CAACC,GAAG,EAAEC,KAAK,CAAC,GAAGN,aAAa,CAACI,CAAC,CAAC,CAClCH,KAAK,CAACT,YAAY,CAAC,CACnBe,GAAG,CAAEC,CAAC,IAAKA,CAAC,CAACC,IAAI,EAAE,CAAC,CAAA;MACvB,IAAIJ,GAAG,KAAK,YAAY,EAAE;AACxBT,QAAAA,UAAU,GAAGU,KAAK,CAAA;AACpB,OAAC,MAAM,IAAID,GAAG,KAAK,cAAc,EAAE;AACjCR,QAAAA,OAAO,GAAGS,KAAK,CAAA;AACjB,OAAA;AACF,KAAA;AACF,GAAA;AAEA,EAAA,MAAMI,KAAK,GAAG,IAAIC,KAAK,CACrBf,UAAU,IAAIF,EAAE,CAACK,YAAY,CAAC,YAAY,CAAC,IAAI,YACjD,CAAC,CAAA;EAED,OAAO;IACLa,MAAM,EAAEC,YAAY,CAACnB,EAAE,CAACK,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;AAClDW,IAAAA,KAAK,EAAEA,KAAK,CAACI,KAAK,EAAE;IACpBjB,OAAO,EACLkB,KAAK,CAACC,UAAU,CAACnB,OAAO,IAAIH,EAAE,CAACK,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,GACtEW,KAAK,CAACO,QAAQ,EAAE,GAChBtB,UAAAA;GACH,CAAA;AACH,CAAA;AAEO,SAASuB,eAAeA,CAC7BxB,EAAsB,EACtByB,WAA0B,EAC1B;EACA,MAAMC,UAAuB,GAAG,EAAE;AAChCC,IAAAA,YAAY,GAAG3B,EAAE,CAAC4B,oBAAoB,CAAC,MAAM,CAAC;AAC9C3B,IAAAA,UAAU,GAAGkB,YAAY,CAACM,WAAW,EAAE,CAAC,CAAC,CAAA;EAC3C,KAAK,IAAIf,CAAC,GAAGiB,YAAY,CAACnB,MAAM,EAAEE,CAAC,EAAE,GAAI;AACvCgB,IAAAA,UAAU,CAACG,IAAI,CAAC9B,cAAc,CAAC4B,YAAY,CAACjB,CAAC,CAAC,EAAET,UAAU,CAAC,CAAC,CAAA;AAC9D,GAAA;AACA,EAAA,OAAOyB,UAAU,CAAA;AACnB;;;;"}