{"version":3,"file":"group-register.mjs","sources":["../../src/utils/group-register.ts"],"sourcesContent":["import { inject } from 'vue';\nimport { ChartProvideKey } from './constants';\n\nexport function registerInGroup<T>(key: string) {\n  const { addOptions, getOptions, restart } = inject(ChartProvideKey, {});\n\n  let group = getOptions<T[]>?.(key);\n  if (!group) {\n    group = [] as T[];\n    addOptions?.(key, group);\n  }\n\n  let _lastOptions: T | undefined;\n\n  const clearSelf = () => {\n    if (_lastOptions) {\n      const idx = group?.indexOf(_lastOptions) ?? -1;\n      if (idx > -1) {\n        group?.splice(idx, 1);\n      }\n    }\n    _lastOptions = undefined;\n    return -1;\n  };\n\n  function registerActualOptions<K>(props: K, cb: (args: K) => T) {\n    const idx = clearSelf();\n\n    const _currentProps = { ...props };\n\n    _lastOptions = cb(_currentProps);\n\n    if (idx > -1) {\n      group?.splice(idx, 0, _lastOptions);\n    } else {\n      group?.push(_lastOptions);\n    }\n\n    restart?.();\n  }\n\n  return {\n    clearSelf,\n    registerActualOptions,\n    restart,\n  };\n}\n"],"names":[],"mappings":";;AAGO,SAAS,gBAAmB,KAAa;AACxC,QAAA,EAAE,YAAY,YAAY,YAAY,OAAO,iBAAiB,CAAA,CAAE;AAElE,MAAA,QAAQ,yCAAkB;AAC9B,MAAI,CAAC,OAAO;AACV,YAAQ,CAAA;AACR,6CAAa,KAAK;AAAA,EACpB;AAEI,MAAA;AAEJ,QAAM,YAAY,MAAM;;AACtB,QAAI,cAAc;AAChB,YAAM,OAAM,oCAAO,QAAQ,kBAAf,YAAgC;AAC5C,UAAI,MAAM,IAAI;AACL,uCAAA,OAAO,KAAK;AAAA,MACrB;AAAA,IACF;AACe,mBAAA;AACR,WAAA;AAAA,EAAA;AAGA,WAAA,sBAAyB,OAAU,IAAoB;AAClD,cAAU;AAEhB,UAAA,gBAAgB,EAAE,GAAG;AAE3B,mBAAe,GAAG,aAAa;AAIxB;AACL,qCAAO,KAAK;AAAA,IACd;AAEU;AAAA,EACZ;AAEO,SAAA;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}