{"version":3,"file":"ProgressBar.jsx","names":["stylex","memo","controlColor","color","size","styles","create","bar","display","height","px1","width","backgroundColor","gray400","inline","error","progressErrorBackground","indeterminate","overflow","keyframes","transform","innerStyles","inner","transition","buttonTertiaryColor","transformOrigin","animationName","animationDuration","animationTimingFunction","animationIterationCount","clamp","value","min","max","ProgressBar","props","$","_c","undefined","t0","outerProps","t1","innerProps","t2","t3","label","percentage","Math","round","t4","t5","t6","t7","style","t8","t9"],"sources":["../src/ProgressBar.tsx"],"sourcesContent":["import * as stylex from \"@stylexjs/stylex\";\nimport type { CompiledStyles } from \"@stylexjs/stylex/lib/StyleXTypes\"; // This seems like a hack\nimport { type CSSProperties, memo } from \"react\";\n\nimport { controlColor } from \"./theme.stylex\";\nimport { color, size } from \"./tokens.stylex\";\n\n/**\n * Omit `max` and `value` to make the progress bar indeterminate.\n */\nexport interface ProgressBarProps {\n\t/**\n\t * This attribute specifies how much of the task that has been completed. It must be a valid floating point number between 0 and max, or between 0 and 1 if max is omitted.\n\t * If there is no value attribute, the progress bar is indeterminate; this indicates that an activity is ongoing with no indication of how long it is expected to take.\n\t */\n\tvalue?: number;\n\n\t/**\n\t * This attribute describes how much work the task indicated by the progress element requires.\n\t * The max attribute, if present, must have a value greater than 0 and be a valid floating point number. The default value is `1`.\n\t */\n\tmax?: number;\n\n\t/**\n\t * When set to true, will be `display: inline;`\n\t */\n\tinline?: boolean;\n\n\tlabel?: string;\n\n\terror?: boolean;\n}\n\nconst styles = stylex.create({\n\tbar: {\n\t\tdisplay: \"block\",\n\t\theight: size.px1,\n\t\twidth: \"100%\",\n\t\tbackgroundColor: color.gray400,\n\t},\n\n\tinline: {\n\t\tdisplay: \"inline\",\n\t},\n\n\terror: {\n\t\tbackgroundColor: controlColor.progressErrorBackground,\n\t},\n\tindeterminate: {\n\t\toverflow: \"hidden\",\n\t},\n});\n\nconst indeterminate = stylex.keyframes({\n\t\"0%\": {\n\t\ttransform: \"translateX(0) scaleX(0)\",\n\t},\n\t\"40%\": {\n\t\ttransform: \"translateX(0) scaleX(0.4)\",\n\t},\n\t\"100%\": {\n\t\ttransform: \"translateX(100%) scaleX(0.5)\",\n\t},\n});\n\nconst innerStyles = stylex.create({\n\tinner: {\n\t\theight: \"100%\",\n\t\twidth: \"var(--progress-width)\",\n\t\ttransition: \"width 0.25s ease-in-out\",\n\t\tbackgroundColor: controlColor.buttonTertiaryColor,\n\t},\n\n\terror: {\n\t\tbackgroundColor: controlColor.progressErrorBackground,\n\t},\n\n\tindeterminate: {\n\t\twidth: \"100%\",\n\t\ttransformOrigin: \"0% 50%\",\n\n\t\tanimationName: indeterminate,\n\t\tanimationDuration: \"2s\",\n\t\tanimationTimingFunction: \"linear\",\n\t\tanimationIterationCount: \"infinite\",\n\t},\n});\n\nconst clamp = (value: number, min: number, max: number) =>\n\tvalue < min ? min : value > max ? max : value;\n\nexport default memo(function ProgressBar(props: ProgressBarProps) {\n\t// Not using <progress /> because it was a hell to style. This is far more reliable.\n\n\tif (props.max === undefined && props.value === undefined) {\n\t\tconst outerProps = stylex.props(\n\t\t\tstyles.bar,\n\t\t\tprops.inline && styles.inline,\n\t\t\tstyles.indeterminate,\n\t\t);\n\n\t\tconst innerProps = stylex.props(\n\t\t\tinnerStyles.inner,\n\t\t\tprops.error && innerStyles.error,\n\t\t\tinnerStyles.indeterminate,\n\t\t);\n\n\t\treturn (\n\t\t\t// biome-ignore lint/a11y/useFocusableInteractive: Nope\n\t\t\t<div\n\t\t\t\t{...outerProps}\n\t\t\t\t// biome-ignore lint/a11y/useSemanticElements: Normal progress bar is a hell to style\n\t\t\t\t// biome-ignore lint/a11y/useAriaPropsForRole: This is indeterminate\n\t\t\t\trole=\"progressbar\"\n\t\t\t\taria-label={props.label}\n\t\t\t>\n\t\t\t\t<div {...innerProps} />\n\t\t\t</div>\n\t\t);\n\t}\n\n\tconst max = props.max ?? 1;\n\tconst value = props.value ?? 0;\n\tconst percentage = Math.round(clamp(value / max, 0, 1) * 100);\n\tconst style = {\n\t\t// biome-ignore lint/style/useTemplate: Nope\n\t\t\"--progress-width\": percentage + \"%\",\n\t} as unknown as CSSProperties;\n\n\treturn (\n\t\t// biome-ignore lint/a11y/useFocusableInteractive: Nope\n\t\t// biome-ignore lint/a11y/useSemanticElements: Normal progress bar is a hell to style\n\t\t<div\n\t\t\trole=\"progressbar\"\n\t\t\t{...stylex.props(styles.bar, props.inline && styles.inline)}\n\t\t\taria-label={props.label}\n\t\t\taria-valuemin={0}\n\t\t\taria-valuemax={100}\n\t\t\taria-valuenow={percentage}\n\t\t>\n\t\t\t<div\n\t\t\t\t{...stylex.props(\n\t\t\t\t\tinnerStyles.inner,\n\t\t\t\t\tprops.error && innerStyles.error,\n\t\t\t\t\tstyle as unknown as CompiledStyles,\n\t\t\t\t)}\n\t\t\t/>\n\t\t</div>\n\t);\n});\n"],"mappings":"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","ignoreList":[]}