{"version":3,"file":"loader-D7SvnPiX.mjs","names":["CSSProperties","ComponentPropsWithoutRef","ReactNode","useId","ThemeColor","clsx","Props","size","color","children","loading","position","progression","sizeConfig","small","medium","large","input","trackStyle","strokeLinecap","strokeWidth","circleStyle","strokeDasharray","Loader","t0","$","_c","className","rest","t1","t2","t3","t4","t5","undefined","id","t6","Math","sin","PI","t7","cos","t8","x","y","destPoint","t9","t10","t11","t12","t13","CSSProperties","ComponentPropsWithoutRef","ThemeColor","clsx","Props","color","radius","width","trackStyle","strokeLinecap","strokeWidth","height","rectStyle","strokeDasharray","RoundedRectLoader","t0","$","_c","className","rest","t1","t2","undefined","rx","t3","t4","t5","t6","t7"],"sources":["../src/components/loader/Loader.tsx","../src/components/loader/RoundedRectLoader.tsx"],"sourcesContent":["import { CSSProperties, ComponentPropsWithoutRef, ReactNode, useId } from \"react\";\nimport { ThemeColor } from \"../../types\";\nimport clsx from \"clsx\";\n\ninterface Props extends ComponentPropsWithoutRef<\"div\"> {\n  size?: \"small\" | \"medium\" | \"large\" | \"input\";\n  color?: ThemeColor | \"custom\";\n  children?: ReactNode;\n  loading?: boolean;\n  position?: CSSProperties[\"position\"];\n  progression?: number;\n}\n\nconst sizeConfig = {\n  small: \"[--h-button:1.5rem]\",\n  medium: \"[--h-button:2rem]\",\n  large: \"[--h-button:3rem]\",\n  input: \"[--h-button:calc(var(--h-input)-2px)]\",\n};\n\nconst trackStyle: CSSProperties = {\n  strokeLinecap: \"round\",\n  strokeWidth: 2,\n};\nconst circleStyle: CSSProperties = {\n  strokeLinecap: \"round\",\n  strokeWidth: 2,\n\n  /**\n   * $total-length: 43.699; // total length of path, calculated by getTotalLength() in JS\n   * $looping-percent: 40;\n   * $looping-length: math.div($looping-percent * $total-length, 100) = 17.464;\n   * stroke-dasharray: #{$looping-length * 1px}, #{($total-length - $looping-length) * 1px};\n   */\n  strokeDasharray: \"17.45px, 26.21px\",\n};\n\nexport function Loader({\n  size = \"medium\",\n  color = \"blue\",\n  loading = true,\n  progression = -1,\n  className,\n  position = \"relative\",\n  children,\n  ...rest\n}: Props) {\n  const id = useId();\n\n  const destPoint = {\n    x: 7 * Math.sin((2 * Math.PI * progression) / 100),\n    y: 7 - 7 * Math.cos((2 * Math.PI * progression) / 100),\n  };\n\n  return (\n    <div\n      data-color={color}\n      className={clsx(\n        \"inline-block h-(--h-button) w-(--h-button)\",\n        position,\n        sizeConfig[size],\n        className,\n      )}\n      {...rest}\n    >\n      {loading && (\n        <svg\n          xmlns=\"http://www.w3.org/2000/svg\"\n          className={clsx(\n            \"inline-block h-(--h-button) w-(--h-button)\",\n            color !== \"custom\" && \"text-custom-4\",\n          )}\n          viewBox=\"0 0 16 16\"\n        >\n          <defs>\n            <circle id={id} cx=\"8\" cy=\"8\" r=\"7\" />\n          </defs>\n          <use href={`#${id}`} className=\"fill-none stroke-current opacity-25\" style={trackStyle} />\n          {progression === -1 ? (\n            <use\n              href={`#${id}`}\n              className=\"animate-loader-stroke fill-none stroke-current\"\n              style={circleStyle}\n            />\n          ) : (\n            <path\n              d={`M 8,1 a 7,7 0 ${progression > 50 ? 1 : 0} 1 ${destPoint.x},${destPoint.y}`}\n              fill=\"none\"\n              stroke=\"currentColor\"\n              strokeWidth=\"2\"\n            />\n          )}\n        </svg>\n      )}\n      {children && (\n        <div className=\"absolute top-0 left-0 inline-flex h-(--h-button) w-(--h-button) items-center justify-center\">\n          {children}\n        </div>\n      )}\n    </div>\n  );\n}\n","import { CSSProperties, ComponentPropsWithoutRef } from \"react\";\nimport { ThemeColor } from \"../../types\";\nimport clsx from \"clsx\";\n\ninterface Props extends ComponentPropsWithoutRef<\"svg\"> {\n  color?: ThemeColor | \"custom\";\n  /**\n   * Matches buttonVariants' rounded-2xl (1rem). Override for other shapes.\n   */\n  radius?: number;\n}\n\nconst width = 4;\n\nconst trackStyle: CSSProperties = {\n  strokeLinecap: \"round\",\n  strokeWidth: width,\n  width: `calc(100% - ${width}px)`,\n  height: `calc(100% - ${width}px)`,\n};\nconst rectStyle: CSSProperties = {\n  strokeLinecap: \"round\",\n  strokeWidth: width,\n  // pathLength=100 normalizes the perimeter, so these percentages hold for any button size.\n  strokeDasharray: \"40, 60\",\n  width: `calc(100% - ${width}px)`,\n  height: `calc(100% - ${width}px)`,\n};\n\nexport function RoundedRectLoader({ color = \"blue\", radius = 16, className, ...rest }: Props) {\n  const rx = radius - 1;\n\n  return (\n    <svg\n      data-color={color}\n      className={clsx(\n        \"pointer-events-none h-full w-full\",\n        color !== \"custom\" && \"text-custom-4\",\n        className,\n      )}\n      {...rest}\n    >\n      <rect\n        x={width / 2}\n        y={width / 2}\n        rx={rx}\n        pathLength={100}\n        className=\"fill-none stroke-current opacity-25\"\n        style={trackStyle}\n      />\n      <rect\n        x={width / 2}\n        y={width / 2}\n        rx={rx}\n        pathLength={100}\n        className=\"animate-loader-rect-stroke fill-none stroke-current\"\n        style={rectStyle}\n      />\n    </svg>\n  );\n}\n"],"mappings":"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"}