@bprogress/remix
Version:
NProgress bar like for Remix
197 lines • 8.36 kB
JavaScript
// src/providers/remix-progress-provider.tsx
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _object_spread(target) {
for(var i = 1; i < arguments.length; i++){
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === "function") {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function(key) {
_define_property(target, key, source[key]);
});
}
return target;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _object_spread_props(target, source) {
source = source != null ? source : {};
if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
function _object_without_properties(source, excluded) {
if (source == null) return {};
var target = _object_without_properties_loose(source, excluded);
var key, i;
if (Object.getOwnPropertySymbols) {
var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
for(i = 0; i < sourceSymbolKeys.length; i++){
key = sourceSymbolKeys[i];
if (excluded.indexOf(key) >= 0) continue;
if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
target[key] = source[key];
}
}
return target;
}
function _object_without_properties_loose(source, excluded) {
if (source == null) return {};
var target = {};
var sourceKeys = Object.keys(source);
var key, i;
for(i = 0; i < sourceKeys.length; i++){
key = sourceKeys[i];
if (excluded.indexOf(key) >= 0) continue;
target[key] = source[key];
}
return target;
}
import React from "react";
import { ProgressProvider } from "@bprogress/react";
// src/components/remix-progress.tsx
import { useLocation } from "@remix-run/react";
import { useAnchorProgress, withMemo } from "@bprogress/react";
var RemixProgressComponent = function(props) {
var routerLocation = useLocation();
useAnchorProgress(_object_spread_props(_object_spread({}, props), {
forcedStopDelay: 500
}), [
routerLocation
]);
return null;
};
var RemixProgress = withMemo(RemixProgressComponent);
RemixProgress.displayName = "RemixProgress";
// src/providers/remix-progress-provider.tsx
var RemixProgressProvider = function(_param) {
var children = _param.children, color = _param.color, height = _param.height, options = _param.options, spinnerPosition = _param.spinnerPosition, style = _param.style, disableStyle = _param.disableStyle, nonce = _param.nonce, props = _object_without_properties(_param, [
"children",
"color",
"height",
"options",
"spinnerPosition",
"style",
"disableStyle",
"nonce"
]);
return /* @__PURE__ */ React.createElement(ProgressProvider, {
color: color,
height: height,
options: options,
spinnerPosition: spinnerPosition,
style: style,
disableStyle: disableStyle,
nonce: nonce
}, /* @__PURE__ */ React.createElement(RemixProgress, _object_spread({}, props)), children);
};
// src/index.tsx
import { useProgress as useProgress2, Progress, Bar, Peg, Spinner, SpinnerIcon, Indeterminate } from "@bprogress/react";
// src/hooks/use-navigate.tsx
import { useCallback } from "react";
import { useNavigate as useRemixNavigate } from "@remix-run/react";
import { isSameURL } from "@bprogress/core";
import { useProgress } from "@bprogress/react";
function useNavigate(options) {
var _ref = options || {}, customNavigate = _ref.customNavigate, defaultProgressOptions = _object_without_properties(_ref, [
"customNavigate"
]);
var _useProgress = useProgress(), start = _useProgress.start, stop = _useProgress.stop, providerDisableSameURL = _useProgress.disableSameURL, providerStartPosition = _useProgress.startPosition, providerDelay = _useProgress.delay, providerStopDelay = _useProgress.stopDelay;
var useSelectedNavigate = useCallback(function() {
if (customNavigate) return customNavigate();
return useRemixNavigate();
}, [
customNavigate
]);
var navigate = useSelectedNavigate();
var enhancedNavigate = useCallback(function(to, navOptions, progressOptions) {
var mergedOptions = _object_spread({}, defaultProgressOptions, progressOptions);
var localDisableSameURL = mergedOptions.disableSameURL !== void 0 ? mergedOptions.disableSameURL : providerDisableSameURL;
var localStartPosition = mergedOptions.startPosition !== void 0 ? mergedOptions.startPosition : providerStartPosition;
var localDelay = mergedOptions.delay !== void 0 ? mergedOptions.delay : providerDelay;
var localStopDelay = mergedOptions.stopDelay !== void 0 ? mergedOptions.stopDelay : providerStopDelay;
if (typeof to === "number") {
if ((mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.showProgress) !== false) {
start(localStartPosition, localDelay);
}
var result = navigate(to);
if ((mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.showProgress) !== false) {
setTimeout(function() {
stop(localStopDelay);
}, localDelay || 0);
}
return result;
} else {
var targetUrl;
try {
if (typeof to === "string") {
targetUrl = new URL(to, window.location.href);
} else {
var _to_pathname = to.pathname, pathname = _to_pathname === void 0 ? window.location.pathname : _to_pathname, _to_search = to.search, search = _to_search === void 0 ? "" : _to_search, _to_hash = to.hash, hash = _to_hash === void 0 ? "" : _to_hash;
targetUrl = new URL(pathname + search + hash, window.location.href);
}
} catch (error) {
console.error(error);
return navigate(to, navOptions);
}
var currentUrl = new URL(window.location.href);
var sameURL = isSameURL(targetUrl, currentUrl);
if (sameURL && localDisableSameURL) {
return navigate(to, navOptions);
}
if ((mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.showProgress) !== false) {
start(localStartPosition, localDelay);
}
var result1 = navigate(to, navOptions);
if (sameURL && (mergedOptions === null || mergedOptions === void 0 ? void 0 : mergedOptions.showProgress) !== false) {
setTimeout(function() {
stop(localStopDelay);
}, localDelay || 0);
}
return result1;
}
}, [
defaultProgressOptions,
providerDisableSameURL,
providerStartPosition,
providerDelay,
providerStopDelay,
navigate,
start,
stop
]);
return enhancedNavigate;
}
export { Bar, Indeterminate, Peg, Progress, RemixProgressProvider as ProgressProvider, Spinner, SpinnerIcon, useNavigate, useProgress2 as useProgress };
//# sourceMappingURL=index.js.map