{"version":3,"file":"index.mjs","names":["useMemo","ComponentProps","useState","ChangeEvent","PointerEvent","TouchEvent","KeyboardEvent","clsx","ThemeColor","RangeProps","Omit","value","additionalBarValue","min","max","step","showMinMax","showValue","ticks","valuesByTick","color","formatter","str","onChangeCommitted","valueAsNumber","trackBase","Range","className","controlledValue","toString","onChange","rest","tempValue","setTempValue","undefined","isTemp","range","percent","additionalPercent","nbOfTicks","Math","floor","cssVars","handleChange","e","HTMLInputElement","target","handleSeekStart","event","handleSeekEnd","handleKeyUp","Array","from","length","map","_","i","useMemo","useState","ChangeEvent","useRef","KeyboardEvent","ComponentProps","clsx","ThemeColor","formatTime","time","seconds","foo","minutes","Math","floor","toFixed","RangeProps","Omit","value","min","max","step","color","formatter","str","valueClassName","onChangeCommitted","valueAsNumber","trackBase","AudioRange","t0","$","_c","className","controlledValue","onChange","rest","t1","t2","t3","t4","t5","undefined","rangeRef","tempValue","setTempValue","isTemp","range","percent","t6","t7","cssVars","t8","e","target","handleChange","t9","Symbol","for","handleSeekStart","current","t10","handleSeekEnd","t11","handleKeyDown","e_0","currentVal","bb41","code","preventDefault","t12","t13","t14","t15","t16","t17","t18","t19","t20","t21","t22","t23","t24","useControl","useField","FieldName","Field","FieldProps","Range","Props","Omit","name","min","max","step","showMinMax","showValue","RangeField","id","forcedId","rest","field","control","defaultValue","parse","payload","Error","parseInt","serialize","value","toString","register","errors","change","blur"],"sources":["../../../../src/components/fields/range/Range.tsx","../../../../src/components/fields/range/AudioRange.tsx","../../../../src/components/fields/range/RangeField.tsx"],"sourcesContent":["import {\n  useMemo,\n  ComponentProps,\n  useState,\n  ChangeEvent,\n  PointerEvent,\n  TouchEvent,\n  KeyboardEvent,\n} from \"react\";\n\nimport clsx from \"clsx\";\nimport { ThemeColor } from \"../../../types\";\n\nexport interface RangeProps extends Omit<\n  ComponentProps<\"input\">,\n  | \"value\"\n  | \"defaultValue\"\n  | \"min\"\n  | \"max\"\n  | \"step\"\n  | \"onPointerDown\"\n  | \"onPointerUp\"\n  | \"onTouchEnd\"\n  | \"ref\"\n> {\n  value: number;\n\n  additionalBarValue?: number;\n\n  min?: number;\n  max?: number;\n  step?: number;\n\n  showMinMax?: \"onHover\" | \"always\" | \"never\";\n\n  showValue?: boolean;\n\n  ticks?: boolean;\n\n  valuesByTick?: number;\n\n  color?: ThemeColor;\n\n  formatter?: (str: number) => string;\n\n  onChangeCommitted?: (valueAsNumber: number) => void;\n}\n\nconst trackBase = \"pointer-events-none absolute top-0 left-0 h-full\";\n\nexport function Range({\n  className,\n  additionalBarValue,\n  value: controlledValue,\n  min = 0,\n  max = 100,\n  color = \"yellow\",\n  showMinMax = \"onHover\",\n  step = 1,\n  valuesByTick,\n  showValue = true,\n  ticks = false,\n  formatter = (str) => str?.toString(),\n  onChange,\n  onChangeCommitted,\n  ...rest\n}: RangeProps) {\n  const [tempValue, setTempValue] = useState<number | undefined>(undefined);\n  const isTemp = typeof tempValue !== \"undefined\";\n\n  const value = isTemp ? tempValue : controlledValue;\n\n  const range = max - min;\n  const percent = (value - min) / range;\n  const additionalPercent = additionalBarValue ? (additionalBarValue - min) / range : 0;\n  const nbOfTicks = 1 + Math.floor(range / (valuesByTick ?? step ?? 5));\n\n  const cssVars = useMemo(\n    () => ({\n      \"--p8n-range-progress-percent\": `${percent * 100}%`,\n      \"--p8n-range-additional-percent\": `${additionalPercent * 100}%`,\n    }),\n    [percent, additionalPercent],\n  );\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    if (isTemp) {\n      setTempValue(e.target.valueAsNumber);\n    }\n    onChange?.(e);\n  };\n\n  function handleSeekStart(event: PointerEvent<HTMLInputElement>) {\n    setTempValue((event.target as HTMLInputElement).valueAsNumber);\n  }\n  function handleSeekEnd(event: TouchEvent<HTMLInputElement> | PointerEvent<HTMLInputElement>) {\n    setTempValue(undefined);\n    onChangeCommitted?.((event.target as HTMLInputElement).valueAsNumber);\n  }\n\n  function handleKeyUp(event: KeyboardEvent) {\n    onChangeCommitted?.((event.target as HTMLInputElement).valueAsNumber);\n  }\n\n  return (\n    <div className={clsx(\"group relative flex\", className)} style={cssVars} data-color={color}>\n      {showMinMax !== \"never\" && (\n        <>\n          <div\n            className={clsx(\n              \"text-body-xs absolute top-6 left-4 -translate-x-2/4\",\n              showMinMax === \"onHover\" && \"opacity-0 transition-opacity group-hover:opacity-100\",\n            )}\n          >\n            {formatter(min)}\n          </div>\n          <div\n            className={clsx(\n              \"text-body-xs absolute top-6 right-4 translate-x-2/4\",\n              showMinMax === \"onHover\" && \"opacity-0 transition-opacity group-hover:opacity-100\",\n            )}\n          >\n            {formatter(max)}\n          </div>\n        </>\n      )}\n\n      <div className={clsx(trackBase, \"right-0 bottom-0 flex items-center justify-center\")}>\n        <div className=\"relative h-2 w-[calc(100%-2rem)]\">\n          {/* track full */}\n          <div\n            className={clsx(\n              trackBase,\n              \"track w-full bg-custom-1 after:absolute after:left-[calc(100%-.25rem)] after:h-2 after:w-2 after:rounded-full after:bg-custom-1\",\n            )}\n          ></div>\n          {typeof additionalBarValue !== \"undefined\" && (\n            <div\n              className={clsx(\n                trackBase,\n                \"w-(--p8n-range-additional-percent) rounded-[3px] bg-custom-2 before:absolute before:-left-1 before:h-2 before:w-2 before:rounded-full before:bg-custom-2\",\n              )}\n            ></div>\n          )}\n          {showValue && (\n            <div className=\"text-body-sm pointer-events-none absolute bottom-4 left-(--p8n-range-progress-percent) -translate-x-2/4\">\n              {formatter(value)}\n            </div>\n          )}\n          {/* active zone */}\n          <div\n            className={clsx(\n              trackBase,\n              \"w-(--p8n-range-progress-percent) rounded-[3px] bg-custom-4 before:absolute before:-left-1 before:h-2 before:w-2 before:rounded-full before:bg-custom-4\",\n            )}\n          ></div>\n          {/* ticks */}\n          {ticks && (\n            <div\n              className={clsx(\n                trackBase,\n                \"-mx-0.5 flex w-[calc(100%+0.25rem)] items-center justify-between\",\n              )}\n            >\n              {Array.from({ length: nbOfTicks }).map((_, i) => (\n                <span key={i} className=\"bg-gray-0 h-1 w-1 rounded-full\"></span>\n              ))}\n            </div>\n          )}\n        </div>\n      </div>\n      <input\n        type=\"range\"\n        className={clsx(\n          \"p8n-input-range h-8 w-full min-w-0 bg-transparent outline-offset-[0.75rem]\",\n        )}\n        min={min}\n        max={max}\n        step={step}\n        value={value}\n        onChange={handleChange}\n        onPointerDown={handleSeekStart}\n        onPointerUp={handleSeekEnd}\n        onTouchEnd={handleSeekEnd}\n        onKeyUp={handleKeyUp}\n        {...rest}\n      />\n    </div>\n  );\n}\n","import { useMemo, useState, ChangeEvent, useRef, KeyboardEvent, ComponentProps } from \"react\";\n\nimport clsx from \"clsx\";\nimport { ThemeColor } from \"../../../types\";\n\nexport const formatTime = (time: number) => {\n  let seconds: string | number = time % 60;\n  const foo = time - seconds;\n  const minutes = foo / 60;\n  if (seconds < 10) {\n    seconds = `0${Math.floor(seconds)}`;\n  } else {\n    seconds = Math.floor(seconds).toFixed(0);\n  }\n  return minutes + \":\" + seconds;\n};\n\nexport interface RangeProps extends Omit<\n  ComponentProps<\"input\">,\n  | \"value\"\n  | \"defaultValue\"\n  | \"min\"\n  | \"max\"\n  | \"step\"\n  | \"onPointerDown\"\n  | \"onPointerUp\"\n  | \"onTouchEnd\"\n  | \"onKeyDown\"\n  | \"ref\"\n> {\n  value: number;\n\n  min?: number;\n  max?: number;\n  step?: number;\n\n  color?: ThemeColor;\n\n  formatter?: (str: number) => string;\n\n  valueClassName?: string;\n\n  onChangeCommitted?: (valueAsNumber: number) => void;\n}\n\nconst trackBase = \"pointer-events-none absolute top-0 left-0 h-full\";\n\nexport function AudioRange({\n  className,\n  valueClassName,\n  value: controlledValue,\n  min = 0,\n  max = 100,\n  color = \"yellow\",\n  step = 1,\n  formatter = formatTime,\n  onChange,\n  onChangeCommitted,\n  ...rest\n}: RangeProps) {\n  const rangeRef = useRef<HTMLInputElement>(null!);\n\n  const [tempValue, setTempValue] = useState<number | undefined>(undefined);\n\n  const isTemp = typeof tempValue !== \"undefined\";\n\n  const value = isTemp ? tempValue : controlledValue;\n\n  const range = max - min;\n  const percent = (value - min) / range;\n\n  const cssVars = useMemo(\n    () => ({\n      \"--p8n-range-progress-percent\": `${percent * 100}%`,\n    }),\n    [percent],\n  );\n\n  const handleChange = (e: ChangeEvent<HTMLInputElement>) => {\n    if (isTemp) {\n      setTempValue(e.target.valueAsNumber);\n    }\n    onChange?.(e);\n  };\n\n  function handleSeekStart() {\n    setTempValue(rangeRef.current.valueAsNumber);\n  }\n  function handleSeekEnd() {\n    setTempValue(undefined);\n    onChangeCommitted?.(rangeRef.current.valueAsNumber);\n  }\n\n  function handleKeyDown(e: KeyboardEvent) {\n    const currentVal = rangeRef.current.valueAsNumber;\n    switch (e.code) {\n      case \"ArrowLeft\": {\n        e.preventDefault();\n        onChangeCommitted?.(Math.max(min, currentVal - 5));\n        break;\n      }\n      case \"ArrowRight\": {\n        e.preventDefault();\n        onChangeCommitted?.(Math.min(max, currentVal + 5));\n        break;\n      }\n    }\n  }\n\n  return (\n    <div className=\"flex items-center\">\n      <div className={clsx(\"text-right\", valueClassName)}>{formatter(value)}</div>\n\n      <div\n        className={clsx(\"group relative flex flex-1\", className)}\n        style={cssVars}\n        data-color={color}\n      >\n        <div className={clsx(trackBase, \"right-0 bottom-0 flex items-center justify-center\")}>\n          <div className=\"relative h-2 w-[calc(100%-2rem)]\">\n            {/* track full */}\n            <div\n              className={clsx(\n                trackBase,\n                \"track bg-custom-2/50 after:bg-custom-2/50 w-full after:absolute after:left-[calc(100%-.25rem)] after:h-2 after:w-2 after:rounded-full after:mask-l-from-50% after:mask-l-to-transparent after:mask-l-to-50%\",\n              )}\n            ></div>\n\n            {/* active zone */}\n            <div\n              className={clsx(\n                trackBase,\n                \"from-gray-8/70 to-gray-8/50 before:bg-gray-8/70 bg-linear-to-r from-5%\",\n                \"group-hover:from-custom-4 group-hover:to-custom-3 group-hover:before:bg-custom-4 group-hover:bg-linear-to-r\",\n\n                \"w-(--p8n-range-progress-percent) rounded-r-sm\",\n                \"before:absolute before:-left-1 before:h-2 before:w-2 before:rounded-full before:mask-r-from-50% before:mask-r-to-transparent before:mask-r-to-50%\",\n              )}\n            ></div>\n          </div>\n        </div>\n        <input\n          autoComplete=\"off\"\n          type=\"range\"\n          className={clsx(\n            \"p8n-input-audio-range h-8 w-full min-w-0 cursor-pointer bg-transparent outline-offset-[0.75rem]\",\n          )}\n          ref={rangeRef}\n          min={min}\n          max={max}\n          step={step}\n          value={value}\n          onChange={handleChange}\n          onPointerDown={handleSeekStart}\n          onPointerUp={handleSeekEnd}\n          onTouchEnd={handleSeekEnd}\n          onKeyDown={handleKeyDown}\n          {...rest}\n        />\n      </div>\n      <div className={clsx(valueClassName)}>{formatter(max)}</div>\n    </div>\n  );\n}\n","import { useControl, useField, type FieldName } from \"@conform-to/react/future\";\nimport { Field, type FieldProps } from \"../field/Field\";\nimport { Range } from \"./Range\";\n\ninterface Props extends Omit<FieldProps, \"errors\" | \"children\" | \"group\"> {\n  name: FieldName<number | null | undefined>;\n\n  min?: number;\n  max?: number;\n  step?: number;\n  showMinMax?: \"onHover\" | \"always\" | \"never\";\n  showValue?: boolean;\n}\n\nexport function RangeField({\n  name,\n  min,\n  max,\n  step,\n  showMinMax,\n  showValue,\n  id: forcedId,\n  ...rest\n}: Props) {\n  const field = useField(name);\n  const id = forcedId ?? field.id;\n\n  const control = useControl<number, string>({\n    defaultValue: field.defaultValue,\n    parse(payload) {\n      if (typeof payload !== \"string\") {\n        throw new Error(\"range input must return string\");\n      }\n      return parseInt(payload);\n    },\n    serialize(value) {\n      return value.toString();\n    },\n  });\n\n  return (\n    <>\n      <input type=\"text\" name={field.name} ref={control.register} hidden />\n      <Field id={id} errors={field.errors} data-testid={field.name} {...rest}>\n        <Range\n          value={control.payload ?? 0}\n          min={min}\n          max={max}\n          step={step}\n          showMinMax={showMinMax}\n          showValue={showValue}\n          onChangeCommitted={(value: number) => {\n            control.change(value);\n          }}\n          onBlur={() => control.blur()}\n        />\n      </Field>\n    </>\n  );\n}\n"],"mappings":"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"}