{"version":3,"file":"useSliderMark.mjs","sources":["../../../../components/slider/hooks/useSliderMark.tsx"],"sourcesContent":["import { computed, Ref, VNode } from 'vue';\nimport { cloneDeep, isArray } from 'lodash-es';\n\nimport log from '@tdesign/common-js/log/log';\nimport { getStopStyle } from '@tdesign/common-js/slider/utils';\nimport TSliderMark from '../slider-mark';\n\nimport type { TNode } from '../../common';\nimport type { SliderMarks } from '../type';\n\ninterface MarkItem {\n  point: number;\n  position: number;\n  mark: string | number | TNode<{ value: number }>;\n}\n\ninterface useSliderMarkProps {\n  max: number;\n  min: number;\n  marks: number[] | SliderMarks;\n  vertical: boolean;\n  prefixName: string;\n}\n\n/**\n * 聚合管理刻度值渲染逻辑\n */\nexport const useSliderMark = (config: Ref<useSliderMarkProps>) => {\n  const name = config.value.prefixName;\n  const markList = computed(() => {\n    const markProps = config.value;\n    if (!markProps.marks) {\n      return [];\n    }\n    const legalMarks: Array<MarkItem> = [];\n    if (isArray(markProps.marks)) {\n      const marksList = cloneDeep(markProps.marks).sort((a, b) => a - b);\n      const maxLimit = Math.max(...marksList, markProps.max);\n      const minLimit = Math.min(...marksList, markProps.min);\n      if (minLimit < markProps.min) {\n        log.errorOnce('TSlider', 'marks min value should >= props min');\n      }\n      if (maxLimit > markProps.max) {\n        log.errorOnce('TSlider', 'marks max value should <= props max');\n      }\n      marksList.forEach((item) => {\n        legalMarks.push({\n          point: item,\n          position: ((item - minLimit) / (maxLimit - minLimit)) * 100,\n          mark: item,\n        });\n      });\n    } else {\n      Object.keys(markProps.marks)\n        .map(parseFloat)\n        .sort((a, b) => a - b)\n        .filter((point) => point <= markProps.max && point >= markProps.min)\n        .forEach((point) => {\n          const item: MarkItem = {\n            point,\n            position: ((point - markProps.min) * 100) / (markProps.max - markProps.min),\n            mark: markProps.marks[point],\n          };\n          legalMarks.push(item);\n        });\n    }\n    return legalMarks;\n  });\n\n  const renderMask = (onChangeFn?: (point: number) => void): VNode => {\n    if (!markList.value.length) return null;\n\n    return (\n      <div>\n        <div class={`${name}__stops`}>\n          {markList.value.map((item, index) => {\n            if (item.position === 0 || item.position === 100) return null;\n            return (\n              <div\n                class={`${name}__stop ${name}__mark-stop`}\n                style={getStopStyle(item.position, config.value.vertical)}\n                key={index}\n              />\n            );\n          })}\n        </div>\n        <div class={`${name}__mark`}>\n          {markList.value.map((item, key) => (\n            <TSliderMark\n              mark={item.mark as any}\n              point={item.point}\n              key={key}\n              style={getStopStyle(item.position, config.value.vertical)}\n              onClickMarkPoint={onChangeFn}\n            />\n          ))}\n        </div>\n      </div>\n    );\n  };\n\n  return renderMask;\n};\n"],"names":["useSliderMark","config","name","value","prefixName","markList","computed","markProps","marks","legalMarks","isArray","marksList","cloneDeep","sort","a","b","maxLimit","Math","max","apply","_toConsumableArray","concat","minLimit","min","log","errorOnce","forEach","item","push","point","position","mark","Object","keys","map","parseFloat","filter","renderMask","onChangeFn","length","_createVNode","index","getStopStyle","vertical","key","TSliderMark"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2BaA,aAAA,GAAgB,SAAhBA,aAAAA,CAAiBC,MAAoC,EAAA;AAC1D,EAAA,IAAAC,IAAA,GAAOD,OAAOE,KAAM,CAAAC,UAAA,CAAA;AACpB,EAAA,IAAAC,QAAA,GAAWC,SAAS,YAAM;AAC9B,IAAA,IAAMC,YAAYN,MAAO,CAAAE,KAAA,CAAA;AACrB,IAAA,IAAA,CAACI,UAAUC,KAAO,EAAA;AACpB,MAAA,OAAO,EAAC,CAAA;AACV,KAAA;IACA,IAAMC,aAA8B,EAAC,CAAA;AACjC,IAAA,IAAAC,OAAA,CAAQH,SAAU,CAAAC,KAAK,CAAG,EAAA;AACtB,MAAA,IAAAG,SAAA,GAAYC,SAAU,CAAAL,SAAA,CAAUC,KAAK,CAAA,CAAEK,KAAK,UAACC,CAAA,EAAGC,CAAM,EAAA;QAAA,OAAAD,CAAA,GAAIC,CAAC,CAAA;OAAA,CAAA,CAAA;AACjE,MAAA,IAAMC,WAAWC,IAAK,CAAAC,GAAA,CAAAC,KAAA,CAALF,IAAK,EAAAG,kBAAA,CAAOT,SAAA,CAAAU,CAAAA,MAAA,EAAWd,UAAUW,GAAG,CAAA,CAAA,CAAA,CAAA;AACrD,MAAA,IAAMI,WAAWL,IAAK,CAAAM,GAAA,CAAAJ,KAAA,CAALF,IAAK,EAAAG,kBAAA,CAAOT,SAAA,CAAAU,CAAAA,MAAA,EAAWd,UAAUgB,GAAG,CAAA,CAAA,CAAA,CAAA;AACjD,MAAA,IAAAD,QAAA,GAAWf,UAAUgB,GAAK,EAAA;AACxBC,QAAAA,GAAA,CAAAC,SAAA,CAAU,WAAW,qCAAqC,CAAA,CAAA;AAChE,OAAA;AACI,MAAA,IAAAT,QAAA,GAAWT,UAAUW,GAAK,EAAA;AACxBM,QAAAA,GAAA,CAAAC,SAAA,CAAU,WAAW,qCAAqC,CAAA,CAAA;AAChE,OAAA;AACUd,MAAAA,SAAA,CAAAe,OAAA,CAAQ,UAACC,IAAS,EAAA;QAC1BlB,UAAA,CAAWmB,IAAK,CAAA;AACdC,UAAAA,KAAO,EAAAF,IAAA;UACPG,QAAY,EAAA,CAAAH,IAAA,GAAOL,QAAa,KAAAN,QAAA,GAAWM,QAAa,CAAA,GAAA,GAAA;AACxDS,UAAAA,IAAM,EAAAJ,IAAAA;AACR,SAAC,CAAA,CAAA;AACH,OAAC,CAAA,CAAA;AACH,KAAO,MAAA;AACEK,MAAAA,MAAA,CAAAC,IAAA,CAAK1B,SAAU,CAAAC,KAAK,CACxB,CAAA0B,GAAA,CAAIC,UAAU,CAAA,CACdtB,IAAK,CAAA,UAACC,CAAG,EAAAC,CAAA,EAAA;QAAA,OAAMD,CAAI,GAAAC,CAAC,CAAA;AAAA,OAAA,EACpBqB,MAAO,CAAA,UAACP,KAAU,EAAA;QAAA,OAAAA,KAAA,IAAStB,SAAU,CAAAW,GAAA,IAAOW,KAAS,IAAAtB,SAAA,CAAUgB,GAAG,CAAA;AAAA,OAAA,CAAA,CAClEG,OAAQ,CAAA,UAACG,KAAU,EAAA;AAClB,QAAA,IAAMF,IAAiB,GAAA;AACrBE,UAAAA,KAAA,EAAAA,KAAA;AACAC,UAAAA,WAAYD,KAAQ,GAAAtB,SAAA,CAAUgB,OAAO,GAAQ,IAAAhB,SAAA,CAAUW,MAAMX,SAAU,CAAAgB,GAAA,CAAA;AACvEQ,UAAAA,IAAA,EAAMxB,UAAUC,KAAM,CAAAqB,KAAA,CAAA;SACxB,CAAA;AACApB,QAAAA,UAAA,CAAWmB,KAAKD,IAAI,CAAA,CAAA;AACtB,OAAC,CAAA,CAAA;AACL,KAAA;AACO,IAAA,OAAAlB,UAAA,CAAA;AACT,GAAC,CAAA,CAAA;AAEK,EAAA,IAAA4B,UAAA,GAAa,SAAbA,UAAAA,CAAcC,UAAgD,EAAA;IAC9D,IAAA,CAACjC,SAASF,KAAM,CAAAoC,MAAA,EAAe,OAAA,IAAA,CAAA;IAEnC,OAAAC,WAAA,eAAAA,WAAA,CAAA,KAAA,EAAA;MAAA,OAAAnB,EAAAA,EAAAA,CAAAA,MAAA,CAEmBnB,IAAA,EAAA,SAAA,CAAA;KACZG,EAAAA,CAAAA,SAASF,KAAM,CAAA+B,GAAA,CAAI,UAACP,IAAA,EAAMc,KAAU,EAAA;AACnC,MAAA,IAAId,IAAK,CAAAG,QAAA,KAAa,CAAK,IAAAH,IAAA,CAAKG,QAAa,KAAA,GAAA,EAAY,OAAA,IAAA,CAAA;AACzD,MAAA,OAAAU,WAAA,CAAA,KAAA,EAAA;AAAA,QAAA,OAAA,EAAA,EAAA,CAAAnB,MAAA,CAEcnB,wBAAcA,IACxB,EAAA,aAAA,CAAA;QAAA,OAAOwC,EAAAA,YAAa,CAAAf,IAAA,CAAKG,UAAU7B,MAAO,CAAAE,KAAA,CAAMwC,QAAQ,CAAA;QAAA,KACnDF,EAAAA,KAAAA;AACP,OAAA,EAAA,IAAA,CAAA,CAAA;KAEH;yBAEYvC;KACZG,EAAAA,CAAAA,QAAS,CAAAF,KAAA,CAAM+B,GAAI,CAAA,UAACP,IAAM,EAAAiB,GAAA,EAAA;MAAA,OAAAJ,WAAA,CAAAK,WAAA,EAAA;QAAA,MAEjBlB,EAAAA,IAAK,CAAAI,IAAA;QAAA,OACJJ,EAAAA,IAAA,CAAKE,KACZ;AAAA,QAAA,KAAA,EAAKe,GACL;QAAA,OAAOF,EAAAA,aAAaf,IAAK,CAAAG,QAAA,EAAU7B,MAAO,CAAAE,KAAA,CAAMwC,QAAQ,CACxD;QAAA,kBAAkBL,EAAAA,UAAAA;AACpB,OAAA,EAAA,IAAA,CAAA,CAAA;AAAA,KACD;GAIT,CAAA;AAEO,EAAA,OAAAD,UAAA,CAAA;AACT;;;;"}