{"version":3,"sources":["../src/saturation-slider.tsx"],"sourcesContent":["import type {\n  CSSUIObject,\n  HTMLUIProps,\n  ThemeProps,\n  Token,\n} from \"@yamada-ui/core\"\nimport type { UseSaturationSliderProps } from \"./use-saturation-slider\"\nimport {\n  forwardRef,\n  omitThemeProps,\n  ui,\n  useComponentMultiStyle,\n} from \"@yamada-ui/core\"\nimport { cx, replaceObject } from \"@yamada-ui/utils\"\nimport { useSaturationSlider } from \"./use-saturation-slider\"\n\ninterface SaturationSliderOptions {\n  /**\n   * The aspect ratio of the saturation slider.\n   *\n   * @default '16 / 9'\n   */\n  ratio?: Token<number>\n  /**\n   * Props for saturation slider inner element.\n   */\n  innerProps?: HTMLUIProps\n  /**\n   * Props for saturation slider input element.\n   */\n  inputProps?: HTMLUIProps<\"input\">\n  /**\n   * Props for saturation slider thumb element.\n   */\n  thumbProps?: HTMLUIProps\n  /**\n   * Props for saturation slider track element.\n   */\n  trackProps?: HTMLUIProps\n}\n\nexport interface SaturationSliderProps\n  extends ThemeProps<\"SaturationSlider\">,\n    UseSaturationSliderProps,\n    SaturationSliderOptions {}\n\n/**\n * `SaturationSlider` is a component used to allow the user to select a color saturation.\n *\n * @see Docs https://yamada-ui.com/components/forms/saturation-slider\n */\nexport const SaturationSlider = forwardRef<SaturationSliderProps, \"input\">(\n  (props, ref) => {\n    const [styles, mergedProps] = useComponentMultiStyle(\n      \"SaturationSlider\",\n      props,\n    )\n    const {\n      className,\n      ratio = 16 / 9,\n      innerProps,\n      inputProps,\n      thumbProps,\n      trackProps,\n      __css,\n      ...computedProps\n    } = omitThemeProps(mergedProps)\n    const {\n      overlays,\n      getContainerProps,\n      getInnerProps,\n      getInputProps,\n      getThumbProps,\n      getTrackProps,\n    } = useSaturationSlider(computedProps)\n\n    const css: CSSUIObject = {\n      \"& > *\": {\n        alignItems: \"center\",\n        bottom: \"0\",\n        display: \"flex\",\n        h: \"100%\",\n        justifyContent: \"center\",\n        left: \"0\",\n        position: \"absolute\",\n        right: \"0\",\n        top: \"0\",\n        w: \"100%\",\n      },\n      position: \"relative\",\n      _before: {\n        content: `\"\"`,\n        display: \"block\",\n        h: 0,\n        pb: replaceObject(ratio, (r) => `${(1 / r) * 100}%`),\n      },\n      ...styles.container,\n      ...__css,\n    }\n\n    return (\n      <ui.div\n        className={cx(\"ui-saturation-slider\", className)}\n        __css={css}\n        {...getContainerProps()}\n      >\n        <ui.div\n          className={cx(\"ui-saturation-slider__inner\", className)}\n          __css={{ ...styles.inner }}\n          {...getInnerProps(innerProps)}\n        >\n          <ui.input {...getInputProps(inputProps, ref)} />\n\n          {overlays.map((props, index) => (\n            <ui.div\n              key={index}\n              className=\"ui-saturation-slider__overlay\"\n              __css={{\n                bottom: 0,\n                left: 0,\n                position: \"absolute\",\n                right: 0,\n                top: 0,\n                ...styles.overlay,\n              }}\n              {...props}\n            />\n          ))}\n\n          <ui.div\n            className=\"ui-saturation-slider__track\"\n            __css={{\n              h: \"100%\",\n              position: \"relative\",\n              w: \"100%\",\n              ...styles.track,\n            }}\n            {...getTrackProps(trackProps)}\n          >\n            <ui.div\n              className=\"ui-saturation-slider__thumb\"\n              __css={{ ...styles.thumb }}\n              {...getThumbProps(thumbProps)}\n            />\n          </ui.div>\n        </ui.div>\n      </ui.div>\n    )\n  },\n)\n\nSaturationSlider.displayName = \"SaturationSlider\"\nSaturationSlider.__ui__ = \"SaturationSlider\"\n"],"mappings":";;;;;;AAOA;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,IAAI,qBAAqB;AA6F1B,SAKE,KALF;AAvDD,IAAM,mBAAmB;AAAA,EAC9B,CAAC,OAAO,QAAQ;AACd,UAAM,CAAC,QAAQ,WAAW,IAAI;AAAA,MAC5B;AAAA,MACA;AAAA,IACF;AACA,UAAM;AAAA,MACJ;AAAA,MACA,QAAQ,KAAK;AAAA,MACb;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA,GAAG;AAAA,IACL,IAAI,eAAe,WAAW;AAC9B,UAAM;AAAA,MACJ;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF,IAAI,oBAAoB,aAAa;AAErC,UAAM,MAAmB;AAAA,MACvB,SAAS;AAAA,QACP,YAAY;AAAA,QACZ,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,GAAG;AAAA,QACH,gBAAgB;AAAA,QAChB,MAAM;AAAA,QACN,UAAU;AAAA,QACV,OAAO;AAAA,QACP,KAAK;AAAA,QACL,GAAG;AAAA,MACL;AAAA,MACA,UAAU;AAAA,MACV,SAAS;AAAA,QACP,SAAS;AAAA,QACT,SAAS;AAAA,QACT,GAAG;AAAA,QACH,IAAI,cAAc,OAAO,CAAC,MAAM,GAAI,IAAI,IAAK,GAAG,GAAG;AAAA,MACrD;AAAA,MACA,GAAG,OAAO;AAAA,MACV,GAAG;AAAA,IACL;AAEA,WACE;AAAA,MAAC,GAAG;AAAA,MAAH;AAAA,QACC,WAAW,GAAG,wBAAwB,SAAS;AAAA,QAC/C,OAAO;AAAA,QACN,GAAG,kBAAkB;AAAA,QAEtB;AAAA,UAAC,GAAG;AAAA,UAAH;AAAA,YACC,WAAW,GAAG,+BAA+B,SAAS;AAAA,YACtD,OAAO,EAAE,GAAG,OAAO,MAAM;AAAA,YACxB,GAAG,cAAc,UAAU;AAAA,YAE5B;AAAA,kCAAC,GAAG,OAAH,EAAU,GAAG,cAAc,YAAY,GAAG,GAAG;AAAA,cAE7C,SAAS,IAAI,CAACA,QAAO,UACpB;AAAA,gBAAC,GAAG;AAAA,gBAAH;AAAA,kBAEC,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,QAAQ;AAAA,oBACR,MAAM;AAAA,oBACN,UAAU;AAAA,oBACV,OAAO;AAAA,oBACP,KAAK;AAAA,oBACL,GAAG,OAAO;AAAA,kBACZ;AAAA,kBACC,GAAGA;AAAA;AAAA,gBAVC;AAAA,cAWP,CACD;AAAA,cAED;AAAA,gBAAC,GAAG;AAAA,gBAAH;AAAA,kBACC,WAAU;AAAA,kBACV,OAAO;AAAA,oBACL,GAAG;AAAA,oBACH,UAAU;AAAA,oBACV,GAAG;AAAA,oBACH,GAAG,OAAO;AAAA,kBACZ;AAAA,kBACC,GAAG,cAAc,UAAU;AAAA,kBAE5B;AAAA,oBAAC,GAAG;AAAA,oBAAH;AAAA,sBACC,WAAU;AAAA,sBACV,OAAO,EAAE,GAAG,OAAO,MAAM;AAAA,sBACxB,GAAG,cAAc,UAAU;AAAA;AAAA,kBAC9B;AAAA;AAAA,cACF;AAAA;AAAA;AAAA,QACF;AAAA;AAAA,IACF;AAAA,EAEJ;AACF;AAEA,iBAAiB,cAAc;AAC/B,iBAAiB,SAAS;","names":["props"]}