134 lines
5.3 KiB
JavaScript
134 lines
5.3 KiB
JavaScript
"use strict";
|
|
"use client";
|
|
var __create = Object.create;
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __getProtoOf = Object.getPrototypeOf;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
// If the importer is in node compatibility mode or this is not an ESM
|
|
// file that has been converted to a CommonJS file using a Babel-
|
|
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
mod
|
|
));
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
|
|
// packages/react/progress/src/index.ts
|
|
var src_exports = {};
|
|
__export(src_exports, {
|
|
Indicator: () => Indicator,
|
|
Progress: () => Progress,
|
|
ProgressIndicator: () => ProgressIndicator,
|
|
Root: () => Root,
|
|
createProgressScope: () => createProgressScope
|
|
});
|
|
module.exports = __toCommonJS(src_exports);
|
|
|
|
// packages/react/progress/src/Progress.tsx
|
|
var React = __toESM(require("react"));
|
|
var import_react_context = require("@radix-ui/react-context");
|
|
var import_react_primitive = require("@radix-ui/react-primitive");
|
|
var import_jsx_runtime = require("react/jsx-runtime");
|
|
var PROGRESS_NAME = "Progress";
|
|
var DEFAULT_MAX = 100;
|
|
var [createProgressContext, createProgressScope] = (0, import_react_context.createContextScope)(PROGRESS_NAME);
|
|
var [ProgressProvider, useProgressContext] = createProgressContext(PROGRESS_NAME);
|
|
var Progress = React.forwardRef(
|
|
(props, forwardedRef) => {
|
|
const {
|
|
__scopeProgress,
|
|
value: valueProp = null,
|
|
max: maxProp,
|
|
getValueLabel = defaultGetValueLabel,
|
|
...progressProps
|
|
} = props;
|
|
if ((maxProp || maxProp === 0) && !isValidMaxNumber(maxProp)) {
|
|
console.error(getInvalidMaxError(`${maxProp}`, "Progress"));
|
|
}
|
|
const max = isValidMaxNumber(maxProp) ? maxProp : DEFAULT_MAX;
|
|
if (valueProp !== null && !isValidValueNumber(valueProp, max)) {
|
|
console.error(getInvalidValueError(`${valueProp}`, "Progress"));
|
|
}
|
|
const value = isValidValueNumber(valueProp, max) ? valueProp : null;
|
|
const valueLabel = isNumber(value) ? getValueLabel(value, max) : void 0;
|
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ProgressProvider, { scope: __scopeProgress, value, max, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
import_react_primitive.Primitive.div,
|
|
{
|
|
"aria-valuemax": max,
|
|
"aria-valuemin": 0,
|
|
"aria-valuenow": isNumber(value) ? value : void 0,
|
|
"aria-valuetext": valueLabel,
|
|
role: "progressbar",
|
|
"data-state": getProgressState(value, max),
|
|
"data-value": value ?? void 0,
|
|
"data-max": max,
|
|
...progressProps,
|
|
ref: forwardedRef
|
|
}
|
|
) });
|
|
}
|
|
);
|
|
Progress.displayName = PROGRESS_NAME;
|
|
var INDICATOR_NAME = "ProgressIndicator";
|
|
var ProgressIndicator = React.forwardRef(
|
|
(props, forwardedRef) => {
|
|
const { __scopeProgress, ...indicatorProps } = props;
|
|
const context = useProgressContext(INDICATOR_NAME, __scopeProgress);
|
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
import_react_primitive.Primitive.div,
|
|
{
|
|
"data-state": getProgressState(context.value, context.max),
|
|
"data-value": context.value ?? void 0,
|
|
"data-max": context.max,
|
|
...indicatorProps,
|
|
ref: forwardedRef
|
|
}
|
|
);
|
|
}
|
|
);
|
|
ProgressIndicator.displayName = INDICATOR_NAME;
|
|
function defaultGetValueLabel(value, max) {
|
|
return `${Math.round(value / max * 100)}%`;
|
|
}
|
|
function getProgressState(value, maxValue) {
|
|
return value == null ? "indeterminate" : value === maxValue ? "complete" : "loading";
|
|
}
|
|
function isNumber(value) {
|
|
return typeof value === "number";
|
|
}
|
|
function isValidMaxNumber(max) {
|
|
return isNumber(max) && !isNaN(max) && max > 0;
|
|
}
|
|
function isValidValueNumber(value, max) {
|
|
return isNumber(value) && !isNaN(value) && value <= max && value >= 0;
|
|
}
|
|
function getInvalidMaxError(propValue, componentName) {
|
|
return `Invalid prop \`max\` of value \`${propValue}\` supplied to \`${componentName}\`. Only numbers greater than 0 are valid max values. Defaulting to \`${DEFAULT_MAX}\`.`;
|
|
}
|
|
function getInvalidValueError(propValue, componentName) {
|
|
return `Invalid prop \`value\` of value \`${propValue}\` supplied to \`${componentName}\`. The \`value\` prop must be:
|
|
- a positive number
|
|
- less than the value passed to \`max\` (or ${DEFAULT_MAX} if no \`max\` prop is set)
|
|
- \`null\` or \`undefined\` if the progress is indeterminate.
|
|
|
|
Defaulting to \`null\`.`;
|
|
}
|
|
var Root = Progress;
|
|
var Indicator = ProgressIndicator;
|
|
//# sourceMappingURL=index.js.map
|