| Server IP : 35.80.110.71 / Your IP : 216.73.216.221 Web Server : Apache/2.4.58 (Ubuntu) System : Linux ip-172-31-21-44 6.17.0-1019-aws #19~24.04.1-Ubuntu SMP Tue Jun 23 18:53:06 UTC 2026 x86_64 User : ubuntu ( 1000) PHP Version : 8.3.31 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /var/www/philiprehberger-nextjs/.next/static/chunks/ |
Upload File : |
(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined,
"[project]/node_modules/next/dist/shared/lib/side-effect.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return SideEffect;
}
});
const _react = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
const isServer = typeof window === 'undefined';
const useClientOnlyLayoutEffect = isServer ? ()=>{} : _react.useLayoutEffect;
const useClientOnlyEffect = isServer ? ()=>{} : _react.useEffect;
function SideEffect(props) {
const { headManager, reduceComponentsToState } = props;
function emitChange() {
if (headManager && headManager.mountedInstances) {
const headElements = _react.Children.toArray(Array.from(headManager.mountedInstances).filter(Boolean));
headManager.updateHead(reduceComponentsToState(headElements, props));
}
}
if (isServer) {
var _headManager_mountedInstances;
headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children);
emitChange();
}
useClientOnlyLayoutEffect({
"SideEffect.useClientOnlyLayoutEffect": ()=>{
var _headManager_mountedInstances;
headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.add(props.children);
return ({
"SideEffect.useClientOnlyLayoutEffect": ()=>{
var _headManager_mountedInstances;
headManager == null ? void 0 : (_headManager_mountedInstances = headManager.mountedInstances) == null ? void 0 : _headManager_mountedInstances.delete(props.children);
}
})["SideEffect.useClientOnlyLayoutEffect"];
}
}["SideEffect.useClientOnlyLayoutEffect"]);
// We need to call `updateHead` method whenever the `SideEffect` is trigger in all
// life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
// being rendered, we only trigger the method from the last one.
// This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
// singleton in the layout effect pass, and actually trigger it in the effect pass.
useClientOnlyLayoutEffect({
"SideEffect.useClientOnlyLayoutEffect": ()=>{
if (headManager) {
headManager._pendingUpdate = emitChange;
}
return ({
"SideEffect.useClientOnlyLayoutEffect": ()=>{
if (headManager) {
headManager._pendingUpdate = emitChange;
}
}
})["SideEffect.useClientOnlyLayoutEffect"];
}
}["SideEffect.useClientOnlyLayoutEffect"]);
useClientOnlyEffect({
"SideEffect.useClientOnlyEffect": ()=>{
if (headManager && headManager._pendingUpdate) {
headManager._pendingUpdate();
headManager._pendingUpdate = null;
}
return ({
"SideEffect.useClientOnlyEffect": ()=>{
if (headManager && headManager._pendingUpdate) {
headManager._pendingUpdate();
headManager._pendingUpdate = null;
}
}
})["SideEffect.useClientOnlyEffect"];
}
}["SideEffect.useClientOnlyEffect"]);
return null;
} //# sourceMappingURL=side-effect.js.map
}),
"[project]/node_modules/next/dist/shared/lib/amp-context.shared-runtime.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "AmpStateContext", {
enumerable: true,
get: function() {
return AmpStateContext;
}
});
const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)");
const _react = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"));
const AmpStateContext = _react.default.createContext({});
if ("TURBOPACK compile-time truthy", 1) {
AmpStateContext.displayName = 'AmpStateContext';
} //# sourceMappingURL=amp-context.shared-runtime.js.map
}),
"[project]/node_modules/next/dist/shared/lib/amp-mode.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "isInAmpMode", {
enumerable: true,
get: function() {
return isInAmpMode;
}
});
function isInAmpMode(param) {
let { ampFirst = false, hybrid = false, hasQuery = false } = param === void 0 ? {} : param;
return ampFirst || hybrid && hasQuery;
} //# sourceMappingURL=amp-mode.js.map
}),
"[project]/node_modules/next/dist/shared/lib/head.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
'use client';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
default: null,
defaultHead: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
default: function() {
return _default;
},
defaultHead: function() {
return defaultHead;
}
});
const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)");
const _interop_require_wildcard = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs [app-client] (ecmascript)");
const _jsxruntime = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
const _react = /*#__PURE__*/ _interop_require_wildcard._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"));
const _sideeffect = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/side-effect.js [app-client] (ecmascript)"));
const _ampcontextsharedruntime = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/amp-context.shared-runtime.js [app-client] (ecmascript)");
const _headmanagercontextsharedruntime = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js [app-client] (ecmascript)");
const _ampmode = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/amp-mode.js [app-client] (ecmascript)");
const _warnonce = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils/warn-once.js [app-client] (ecmascript)");
function defaultHead(inAmpMode) {
if (inAmpMode === void 0) inAmpMode = false;
const head = [
/*#__PURE__*/ (0, _jsxruntime.jsx)("meta", {
charSet: "utf-8"
}, "charset")
];
if (!inAmpMode) {
head.push(/*#__PURE__*/ (0, _jsxruntime.jsx)("meta", {
name: "viewport",
content: "width=device-width"
}, "viewport"));
}
return head;
}
function onlyReactElement(list, child) {
// React children can be "string" or "number" in this case we ignore them for backwards compat
if (typeof child === 'string' || typeof child === 'number') {
return list;
}
// Adds support for React.Fragment
if (child.type === _react.default.Fragment) {
return list.concat(_react.default.Children.toArray(child.props.children).reduce((fragmentList, fragmentChild)=>{
if (typeof fragmentChild === 'string' || typeof fragmentChild === 'number') {
return fragmentList;
}
return fragmentList.concat(fragmentChild);
}, []));
}
return list.concat(child);
}
const METATYPES = [
'name',
'httpEquiv',
'charSet',
'itemProp'
];
/*
returns a function for filtering head child elements
which shouldn't be duplicated, like <title/>
Also adds support for deduplicated `key` properties
*/ function unique() {
const keys = new Set();
const tags = new Set();
const metaTypes = new Set();
const metaCategories = {};
return (h)=>{
let isUnique = true;
let hasKey = false;
if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) {
hasKey = true;
const key = h.key.slice(h.key.indexOf('$') + 1);
if (keys.has(key)) {
isUnique = false;
} else {
keys.add(key);
}
}
// eslint-disable-next-line default-case
switch(h.type){
case 'title':
case 'base':
if (tags.has(h.type)) {
isUnique = false;
} else {
tags.add(h.type);
}
break;
case 'meta':
for(let i = 0, len = METATYPES.length; i < len; i++){
const metatype = METATYPES[i];
if (!h.props.hasOwnProperty(metatype)) continue;
if (metatype === 'charSet') {
if (metaTypes.has(metatype)) {
isUnique = false;
} else {
metaTypes.add(metatype);
}
} else {
const category = h.props[metatype];
const categories = metaCategories[metatype] || new Set();
if ((metatype !== 'name' || !hasKey) && categories.has(category)) {
isUnique = false;
} else {
categories.add(category);
metaCategories[metatype] = categories;
}
}
}
break;
}
return isUnique;
};
}
/**
*
* @param headChildrenElements List of children of <Head>
*/ function reduceComponents(headChildrenElements, props) {
const { inAmpMode } = props;
return headChildrenElements.reduce(onlyReactElement, []).reverse().concat(defaultHead(inAmpMode).reverse()).filter(unique()).reverse().map((c, i)=>{
const key = c.key || i;
if ("TURBOPACK compile-time truthy", 1) {
// omit JSON-LD structured data snippets from the warning
if (c.type === 'script' && c.props['type'] !== 'application/ld+json') {
const srcMessage = c.props['src'] ? '<script> tag with src="' + c.props['src'] + '"' : "inline <script>";
(0, _warnonce.warnOnce)("Do not add <script> tags using next/head (see " + srcMessage + "). Use next/script instead. \nSee more info here: https://nextjs.org/docs/messages/no-script-tags-in-head-component");
} else if (c.type === 'link' && c.props['rel'] === 'stylesheet') {
(0, _warnonce.warnOnce)('Do not add stylesheets using next/head (see <link rel="stylesheet"> tag with href="' + c.props['href'] + '"). Use Document instead. \nSee more info here: https://nextjs.org/docs/messages/no-stylesheets-in-head-component');
}
}
return /*#__PURE__*/ _react.default.cloneElement(c, {
key
});
});
}
/**
* This component injects elements to `<head>` of your page.
* To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
*/ function Head(param) {
let { children } = param;
const ampState = (0, _react.useContext)(_ampcontextsharedruntime.AmpStateContext);
const headManager = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext);
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_sideeffect.default, {
reduceComponentsToState: reduceComponents,
headManager: headManager,
inAmpMode: (0, _ampmode.isInAmpMode)(ampState),
children: children
});
}
const _default = Head;
if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {
Object.defineProperty(exports.default, '__esModule', {
value: true
});
Object.assign(exports.default, exports);
module.exports = exports.default;
} //# sourceMappingURL=head.js.map
}),
"[project]/node_modules/next/dist/shared/lib/image-blur-svg.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
/**
* A shared function, used on both client and server, to generate a SVG blur placeholder.
*/ Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "getImageBlurSvg", {
enumerable: true,
get: function() {
return getImageBlurSvg;
}
});
function getImageBlurSvg(param) {
let { widthInt, heightInt, blurWidth, blurHeight, blurDataURL, objectFit } = param;
const std = 20;
const svgWidth = blurWidth ? blurWidth * 40 : widthInt;
const svgHeight = blurHeight ? blurHeight * 40 : heightInt;
const viewBox = svgWidth && svgHeight ? "viewBox='0 0 " + svgWidth + " " + svgHeight + "'" : '';
const preserveAspectRatio = viewBox ? 'none' : objectFit === 'contain' ? 'xMidYMid' : objectFit === 'cover' ? 'xMidYMid slice' : 'none';
return "%3Csvg xmlns='http://www.w3.org/2000/svg' " + viewBox + "%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='" + std + "'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='" + std + "'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='" + preserveAspectRatio + "' style='filter: url(%23b);' href='" + blurDataURL + "'/%3E%3C/svg%3E";
} //# sourceMappingURL=image-blur-svg.js.map
}),
"[project]/node_modules/next/dist/shared/lib/image-config.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
VALID_LOADERS: null,
imageConfigDefault: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
VALID_LOADERS: function() {
return VALID_LOADERS;
},
imageConfigDefault: function() {
return imageConfigDefault;
}
});
const VALID_LOADERS = [
'default',
'imgix',
'cloudinary',
'akamai',
'custom'
];
const imageConfigDefault = {
deviceSizes: [
640,
750,
828,
1080,
1200,
1920,
2048,
3840
],
imageSizes: [
16,
32,
48,
64,
96,
128,
256,
384
],
path: '/_next/image',
loader: 'default',
loaderFile: '',
domains: [],
disableStaticImages: false,
minimumCacheTTL: 60,
formats: [
'image/webp'
],
dangerouslyAllowSVG: false,
contentSecurityPolicy: "script-src 'none'; frame-src 'none'; sandbox;",
contentDispositionType: 'attachment',
localPatterns: undefined,
remotePatterns: [],
qualities: undefined,
unoptimized: false
}; //# sourceMappingURL=image-config.js.map
}),
"[project]/node_modules/next/dist/shared/lib/get-img-props.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "getImgProps", {
enumerable: true,
get: function() {
return getImgProps;
}
});
const _warnonce = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils/warn-once.js [app-client] (ecmascript)");
const _imageblursvg = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-blur-svg.js [app-client] (ecmascript)");
const _imageconfig = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-config.js [app-client] (ecmascript)");
const VALID_LOADING_VALUES = [
'lazy',
'eager',
undefined
];
// Object-fit values that are not valid background-size values
const INVALID_BACKGROUND_SIZE_VALUES = [
'-moz-initial',
'fill',
'none',
'scale-down',
undefined
];
function isStaticRequire(src) {
return src.default !== undefined;
}
function isStaticImageData(src) {
return src.src !== undefined;
}
function isStaticImport(src) {
return !!src && typeof src === 'object' && (isStaticRequire(src) || isStaticImageData(src));
}
const allImgs = new Map();
let perfObserver;
function getInt(x) {
if (typeof x === 'undefined') {
return x;
}
if (typeof x === 'number') {
return Number.isFinite(x) ? x : NaN;
}
if (typeof x === 'string' && /^[0-9]+$/.test(x)) {
return parseInt(x, 10);
}
return NaN;
}
function getWidths(param, width, sizes) {
let { deviceSizes, allSizes } = param;
if (sizes) {
// Find all the "vw" percent sizes used in the sizes prop
const viewportWidthRe = /(^|\s)(1?\d?\d)vw/g;
const percentSizes = [];
for(let match; match = viewportWidthRe.exec(sizes); match){
percentSizes.push(parseInt(match[2]));
}
if (percentSizes.length) {
const smallestRatio = Math.min(...percentSizes) * 0.01;
return {
widths: allSizes.filter((s)=>s >= deviceSizes[0] * smallestRatio),
kind: 'w'
};
}
return {
widths: allSizes,
kind: 'w'
};
}
if (typeof width !== 'number') {
return {
widths: deviceSizes,
kind: 'w'
};
}
const widths = [
...new Set(// > are actually 3x in the green color, but only 1.5x in the red and
// > blue colors. Showing a 3x resolution image in the app vs a 2x
// > resolution image will be visually the same, though the 3x image
// > takes significantly more data. Even true 3x resolution screens are
// > wasteful as the human eye cannot see that level of detail without
// > something like a magnifying glass.
// https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html
[
width,
width * 2 /*, width * 3*/
].map((w)=>allSizes.find((p)=>p >= w) || allSizes[allSizes.length - 1]))
];
return {
widths,
kind: 'x'
};
}
function generateImgAttrs(param) {
let { config, src, unoptimized, width, quality, sizes, loader } = param;
if (unoptimized) {
return {
src,
srcSet: undefined,
sizes: undefined
};
}
const { widths, kind } = getWidths(config, width, sizes);
const last = widths.length - 1;
return {
sizes: !sizes && kind === 'w' ? '100vw' : sizes,
srcSet: widths.map((w, i)=>loader({
config,
src,
quality,
width: w
}) + " " + (kind === 'w' ? w : i + 1) + kind).join(', '),
// It's intended to keep `src` the last attribute because React updates
// attributes in order. If we keep `src` the first one, Safari will
// immediately start to fetch `src`, before `sizes` and `srcSet` are even
// updated by React. That causes multiple unnecessary requests if `srcSet`
// and `sizes` are defined.
// This bug cannot be reproduced in Chrome or Firefox.
src: loader({
config,
src,
quality,
width: widths[last]
})
};
}
function getImgProps(param, _state) {
let { src, sizes, unoptimized = false, priority = false, loading, className, quality, width, height, fill = false, style, overrideSrc, onLoad, onLoadingComplete, placeholder = 'empty', blurDataURL, fetchPriority, decoding = 'async', layout, objectFit, objectPosition, lazyBoundary, lazyRoot, ...rest } = param;
const { imgConf, showAltText, blurComplete, defaultLoader } = _state;
let config;
let c = imgConf || _imageconfig.imageConfigDefault;
if ('allSizes' in c) {
config = c;
} else {
var _c_qualities;
const allSizes = [
...c.deviceSizes,
...c.imageSizes
].sort((a, b)=>a - b);
const deviceSizes = c.deviceSizes.sort((a, b)=>a - b);
const qualities = (_c_qualities = c.qualities) == null ? void 0 : _c_qualities.sort((a, b)=>a - b);
config = {
...c,
allSizes,
deviceSizes,
qualities
};
}
if (typeof defaultLoader === 'undefined') {
throw Object.defineProperty(new Error('images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config'), "__NEXT_ERROR_CODE", {
value: "E163",
enumerable: false,
configurable: true
});
}
let loader = rest.loader || defaultLoader;
// Remove property so it's not spread on <img> element
delete rest.loader;
delete rest.srcSet;
// This special value indicates that the user
// didn't define a "loader" prop or "loader" config.
const isDefaultLoader = '__next_img_default' in loader;
if (isDefaultLoader) {
if (config.loader === 'custom') {
throw Object.defineProperty(new Error('Image with src "' + src + '" is missing "loader" prop.' + "\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader"), "__NEXT_ERROR_CODE", {
value: "E252",
enumerable: false,
configurable: true
});
}
} else {
// The user defined a "loader" prop or config.
// Since the config object is internal only, we
// must not pass it to the user-defined "loader".
const customImageLoader = loader;
loader = (obj)=>{
const { config: _, ...opts } = obj;
return customImageLoader(opts);
};
}
if (layout) {
if (layout === 'fill') {
fill = true;
}
const layoutToStyle = {
intrinsic: {
maxWidth: '100%',
height: 'auto'
},
responsive: {
width: '100%',
height: 'auto'
}
};
const layoutToSizes = {
responsive: '100vw',
fill: '100vw'
};
const layoutStyle = layoutToStyle[layout];
if (layoutStyle) {
style = {
...style,
...layoutStyle
};
}
const layoutSizes = layoutToSizes[layout];
if (layoutSizes && !sizes) {
sizes = layoutSizes;
}
}
let staticSrc = '';
let widthInt = getInt(width);
let heightInt = getInt(height);
let blurWidth;
let blurHeight;
if (isStaticImport(src)) {
const staticImageData = isStaticRequire(src) ? src.default : src;
if (!staticImageData.src) {
throw Object.defineProperty(new Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received " + JSON.stringify(staticImageData)), "__NEXT_ERROR_CODE", {
value: "E460",
enumerable: false,
configurable: true
});
}
if (!staticImageData.height || !staticImageData.width) {
throw Object.defineProperty(new Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received " + JSON.stringify(staticImageData)), "__NEXT_ERROR_CODE", {
value: "E48",
enumerable: false,
configurable: true
});
}
blurWidth = staticImageData.blurWidth;
blurHeight = staticImageData.blurHeight;
blurDataURL = blurDataURL || staticImageData.blurDataURL;
staticSrc = staticImageData.src;
if (!fill) {
if (!widthInt && !heightInt) {
widthInt = staticImageData.width;
heightInt = staticImageData.height;
} else if (widthInt && !heightInt) {
const ratio = widthInt / staticImageData.width;
heightInt = Math.round(staticImageData.height * ratio);
} else if (!widthInt && heightInt) {
const ratio = heightInt / staticImageData.height;
widthInt = Math.round(staticImageData.width * ratio);
}
}
}
src = typeof src === 'string' ? src : staticSrc;
let isLazy = !priority && (loading === 'lazy' || typeof loading === 'undefined');
if (!src || src.startsWith('data:') || src.startsWith('blob:')) {
// https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
unoptimized = true;
isLazy = false;
}
if (config.unoptimized) {
unoptimized = true;
}
if (isDefaultLoader && !config.dangerouslyAllowSVG && src.split('?', 1)[0].endsWith('.svg')) {
// Special case to make svg serve as-is to avoid proxying
// through the built-in Image Optimization API.
unoptimized = true;
}
const qualityInt = getInt(quality);
if ("TURBOPACK compile-time truthy", 1) {
var _config_localPatterns;
if (config.output === 'export' && isDefaultLoader && !unoptimized) {
throw Object.defineProperty(new Error("Image Optimization using the default loader is not compatible with `{ output: 'export' }`.\n Possible solutions:\n - Remove `{ output: 'export' }` and run \"next start\" to run server mode including the Image Optimization API.\n - Configure `{ images: { unoptimized: true } }` in `next.config.js` to disable the Image Optimization API.\n Read more: https://nextjs.org/docs/messages/export-image-api"), "__NEXT_ERROR_CODE", {
value: "E500",
enumerable: false,
configurable: true
});
}
if (!src) {
// React doesn't show the stack trace and there's
// no `src` to help identify which image, so we
// instead console.error(ref) during mount.
unoptimized = true;
} else {
if (fill) {
if (width) {
throw Object.defineProperty(new Error('Image with src "' + src + '" has both "width" and "fill" properties. Only one should be used.'), "__NEXT_ERROR_CODE", {
value: "E96",
enumerable: false,
configurable: true
});
}
if (height) {
throw Object.defineProperty(new Error('Image with src "' + src + '" has both "height" and "fill" properties. Only one should be used.'), "__NEXT_ERROR_CODE", {
value: "E115",
enumerable: false,
configurable: true
});
}
if ((style == null ? void 0 : style.position) && style.position !== 'absolute') {
throw Object.defineProperty(new Error('Image with src "' + src + '" has both "fill" and "style.position" properties. Images with "fill" always use position absolute - it cannot be modified.'), "__NEXT_ERROR_CODE", {
value: "E216",
enumerable: false,
configurable: true
});
}
if ((style == null ? void 0 : style.width) && style.width !== '100%') {
throw Object.defineProperty(new Error('Image with src "' + src + '" has both "fill" and "style.width" properties. Images with "fill" always use width 100% - it cannot be modified.'), "__NEXT_ERROR_CODE", {
value: "E73",
enumerable: false,
configurable: true
});
}
if ((style == null ? void 0 : style.height) && style.height !== '100%') {
throw Object.defineProperty(new Error('Image with src "' + src + '" has both "fill" and "style.height" properties. Images with "fill" always use height 100% - it cannot be modified.'), "__NEXT_ERROR_CODE", {
value: "E404",
enumerable: false,
configurable: true
});
}
} else {
if (typeof widthInt === 'undefined') {
throw Object.defineProperty(new Error('Image with src "' + src + '" is missing required "width" property.'), "__NEXT_ERROR_CODE", {
value: "E451",
enumerable: false,
configurable: true
});
} else if (isNaN(widthInt)) {
throw Object.defineProperty(new Error('Image with src "' + src + '" has invalid "width" property. Expected a numeric value in pixels but received "' + width + '".'), "__NEXT_ERROR_CODE", {
value: "E66",
enumerable: false,
configurable: true
});
}
if (typeof heightInt === 'undefined') {
throw Object.defineProperty(new Error('Image with src "' + src + '" is missing required "height" property.'), "__NEXT_ERROR_CODE", {
value: "E397",
enumerable: false,
configurable: true
});
} else if (isNaN(heightInt)) {
throw Object.defineProperty(new Error('Image with src "' + src + '" has invalid "height" property. Expected a numeric value in pixels but received "' + height + '".'), "__NEXT_ERROR_CODE", {
value: "E444",
enumerable: false,
configurable: true
});
}
// eslint-disable-next-line no-control-regex
if (/^[\x00-\x20]/.test(src)) {
throw Object.defineProperty(new Error('Image with src "' + src + '" cannot start with a space or control character. Use src.trimStart() to remove it or encodeURIComponent(src) to keep it.'), "__NEXT_ERROR_CODE", {
value: "E176",
enumerable: false,
configurable: true
});
}
// eslint-disable-next-line no-control-regex
if (/[\x00-\x20]$/.test(src)) {
throw Object.defineProperty(new Error('Image with src "' + src + '" cannot end with a space or control character. Use src.trimEnd() to remove it or encodeURIComponent(src) to keep it.'), "__NEXT_ERROR_CODE", {
value: "E21",
enumerable: false,
configurable: true
});
}
}
}
if (!VALID_LOADING_VALUES.includes(loading)) {
throw Object.defineProperty(new Error('Image with src "' + src + '" has invalid "loading" property. Provided "' + loading + '" should be one of ' + VALID_LOADING_VALUES.map(String).join(',') + "."), "__NEXT_ERROR_CODE", {
value: "E357",
enumerable: false,
configurable: true
});
}
if (priority && loading === 'lazy') {
throw Object.defineProperty(new Error('Image with src "' + src + '" has both "priority" and "loading=\'lazy\'" properties. Only one should be used.'), "__NEXT_ERROR_CODE", {
value: "E218",
enumerable: false,
configurable: true
});
}
if (placeholder !== 'empty' && placeholder !== 'blur' && !placeholder.startsWith('data:image/')) {
throw Object.defineProperty(new Error('Image with src "' + src + '" has invalid "placeholder" property "' + placeholder + '".'), "__NEXT_ERROR_CODE", {
value: "E431",
enumerable: false,
configurable: true
});
}
if (placeholder !== 'empty') {
if (widthInt && heightInt && widthInt * heightInt < 1600) {
(0, _warnonce.warnOnce)('Image with src "' + src + '" is smaller than 40x40. Consider removing the "placeholder" property to improve performance.');
}
}
if (qualityInt && qualityInt !== 75 && !config.qualities) {
(0, _warnonce.warnOnce)('Image with src "' + src + '" is using quality "' + qualityInt + '" which is not configured in images.qualities. This config will be required starting in Next.js 16.' + "\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-qualities");
}
if (src.startsWith('/') && src.includes('?') && (!(config == null ? void 0 : (_config_localPatterns = config.localPatterns) == null ? void 0 : _config_localPatterns.length) || config.localPatterns.length === 1 && config.localPatterns[0].pathname === '/_next/static/media/**')) {
(0, _warnonce.warnOnce)('Image with src "' + src + '" is using a query string which is not configured in images.localPatterns. This config will be required starting in Next.js 16.' + "\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns");
}
if (placeholder === 'blur' && !blurDataURL) {
const VALID_BLUR_EXT = [
'jpeg',
'png',
'webp',
'avif'
] // should match next-image-loader
;
throw Object.defineProperty(new Error('Image with src "' + src + '" has "placeholder=\'blur\'" property but is missing the "blurDataURL" property.\n Possible solutions:\n - Add a "blurDataURL" property, the contents should be a small Data URL to represent the image\n - Change the "src" property to a static import with one of the supported file types: ' + VALID_BLUR_EXT.join(',') + ' (animated images not supported)\n - Remove the "placeholder" property, effectively no blur effect\n Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url'), "__NEXT_ERROR_CODE", {
value: "E371",
enumerable: false,
configurable: true
});
}
if ('ref' in rest) {
(0, _warnonce.warnOnce)('Image with src "' + src + '" is using unsupported "ref" property. Consider using the "onLoad" property instead.');
}
if (!unoptimized && !isDefaultLoader) {
const urlStr = loader({
config,
src,
width: widthInt || 400,
quality: qualityInt || 75
});
let url;
try {
url = new URL(urlStr);
} catch (err) {}
if (urlStr === src || url && url.pathname === src && !url.search) {
(0, _warnonce.warnOnce)('Image with src "' + src + '" has a "loader" property that does not implement width. Please implement it or use the "unoptimized" property instead.' + "\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width");
}
}
if (onLoadingComplete) {
(0, _warnonce.warnOnce)('Image with src "' + src + '" is using deprecated "onLoadingComplete" property. Please use the "onLoad" property instead.');
}
for (const [legacyKey, legacyValue] of Object.entries({
layout,
objectFit,
objectPosition,
lazyBoundary,
lazyRoot
})){
if (legacyValue) {
(0, _warnonce.warnOnce)('Image with src "' + src + '" has legacy prop "' + legacyKey + '". Did you forget to run the codemod?' + "\nRead more: https://nextjs.org/docs/messages/next-image-upgrade-to-13");
}
}
if (typeof window !== 'undefined' && !perfObserver && window.PerformanceObserver) {
perfObserver = new PerformanceObserver((entryList)=>{
for (const entry of entryList.getEntries()){
var _entry_element;
// @ts-ignore - missing "LargestContentfulPaint" class with "element" prop
const imgSrc = (entry == null ? void 0 : (_entry_element = entry.element) == null ? void 0 : _entry_element.src) || '';
const lcpImage = allImgs.get(imgSrc);
if (lcpImage && !lcpImage.priority && lcpImage.placeholder === 'empty' && !lcpImage.src.startsWith('data:') && !lcpImage.src.startsWith('blob:')) {
// https://web.dev/lcp/#measure-lcp-in-javascript
(0, _warnonce.warnOnce)('Image with src "' + lcpImage.src + '" was detected as the Largest Contentful Paint (LCP). Please add the "priority" property if this image is above the fold.' + "\nRead more: https://nextjs.org/docs/api-reference/next/image#priority");
}
}
});
try {
perfObserver.observe({
type: 'largest-contentful-paint',
buffered: true
});
} catch (err) {
// Log error but don't crash the app
console.error(err);
}
}
}
const imgStyle = Object.assign(fill ? {
position: 'absolute',
height: '100%',
width: '100%',
left: 0,
top: 0,
right: 0,
bottom: 0,
objectFit,
objectPosition
} : {}, showAltText ? {} : {
color: 'transparent'
}, style);
const backgroundImage = !blurComplete && placeholder !== 'empty' ? placeholder === 'blur' ? 'url("data:image/svg+xml;charset=utf-8,' + (0, _imageblursvg.getImageBlurSvg)({
widthInt,
heightInt,
blurWidth,
blurHeight,
blurDataURL: blurDataURL || '',
objectFit: imgStyle.objectFit
}) + '")' : 'url("' + placeholder + '")' // assume `data:image/`
: null;
const backgroundSize = !INVALID_BACKGROUND_SIZE_VALUES.includes(imgStyle.objectFit) ? imgStyle.objectFit : imgStyle.objectFit === 'fill' ? '100% 100%' // the background-size equivalent of `fill`
: 'cover';
let placeholderStyle = backgroundImage ? {
backgroundSize,
backgroundPosition: imgStyle.objectPosition || '50% 50%',
backgroundRepeat: 'no-repeat',
backgroundImage
} : {};
if ("TURBOPACK compile-time truthy", 1) {
if (placeholderStyle.backgroundImage && placeholder === 'blur' && (blurDataURL == null ? void 0 : blurDataURL.startsWith('/'))) {
// During `next dev`, we don't want to generate blur placeholders with webpack
// because it can delay starting the dev server. Instead, `next-image-loader.js`
// will inline a special url to lazily generate the blur placeholder at request time.
placeholderStyle.backgroundImage = 'url("' + blurDataURL + '")';
}
}
const imgAttributes = generateImgAttrs({
config,
src,
unoptimized,
width: widthInt,
quality: qualityInt,
sizes,
loader
});
if ("TURBOPACK compile-time truthy", 1) {
if (typeof window !== 'undefined') {
let fullUrl;
try {
fullUrl = new URL(imgAttributes.src);
} catch (e) {
fullUrl = new URL(imgAttributes.src, window.location.href);
}
allImgs.set(fullUrl.href, {
src,
priority,
placeholder
});
}
}
const props = {
...rest,
loading: isLazy ? 'lazy' : loading,
fetchPriority,
width: widthInt,
height: heightInt,
decoding,
className,
style: {
...imgStyle,
...placeholderStyle
},
sizes: imgAttributes.sizes,
srcSet: imgAttributes.srcSet,
src: overrideSrc || imgAttributes.src
};
const meta = {
unoptimized,
priority,
placeholder,
fill
};
return {
props,
meta
};
} //# sourceMappingURL=get-img-props.js.map
}),
"[project]/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "ImageConfigContext", {
enumerable: true,
get: function() {
return ImageConfigContext;
}
});
const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)");
const _react = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"));
const _imageconfig = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-config.js [app-client] (ecmascript)");
const ImageConfigContext = _react.default.createContext(_imageconfig.imageConfigDefault);
if ("TURBOPACK compile-time truthy", 1) {
ImageConfigContext.displayName = 'ImageConfigContext';
} //# sourceMappingURL=image-config-context.shared-runtime.js.map
}),
"[project]/node_modules/next/dist/shared/lib/router-context.shared-runtime.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "RouterContext", {
enumerable: true,
get: function() {
return RouterContext;
}
});
const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)");
const _react = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"));
const RouterContext = _react.default.createContext(null);
if ("TURBOPACK compile-time truthy", 1) {
RouterContext.displayName = 'RouterContext';
} //# sourceMappingURL=router-context.shared-runtime.js.map
}),
"[project]/node_modules/next/dist/compiled/picomatch/index.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
(()=>{
"use strict";
var t = {
170: (t, e, u)=>{
const n = u(510);
const isWindows = ()=>{
if (typeof navigator !== "undefined" && navigator.platform) {
const t = navigator.platform.toLowerCase();
return t === "win32" || t === "windows";
}
if (typeof __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] !== "undefined" && __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].platform) {
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].platform === "win32";
}
return false;
};
function picomatch(t, e) {
let u = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
if (e && (e.windows === null || e.windows === undefined)) {
e = {
...e,
windows: isWindows()
};
}
return n(t, e, u);
}
Object.assign(picomatch, n);
t.exports = picomatch;
},
154: (t)=>{
const e = "\\\\/";
const u = "[^".concat(e, "]");
const n = "\\.";
const o = "\\+";
const s = "\\?";
const r = "\\/";
const a = "(?=.)";
const i = "[^/]";
const c = "(?:".concat(r, "|$)");
const p = "(?:^|".concat(r, ")");
const l = "".concat(n, "{1,2}").concat(c);
const f = "(?!".concat(n, ")");
const A = "(?!".concat(p).concat(l, ")");
const _ = "(?!".concat(n, "{0,1}").concat(c, ")");
const R = "(?!".concat(l, ")");
const E = "[^.".concat(r, "]");
const h = "".concat(i, "*?");
const g = "/";
const b = {
DOT_LITERAL: n,
PLUS_LITERAL: o,
QMARK_LITERAL: s,
SLASH_LITERAL: r,
ONE_CHAR: a,
QMARK: i,
END_ANCHOR: c,
DOTS_SLASH: l,
NO_DOT: f,
NO_DOTS: A,
NO_DOT_SLASH: _,
NO_DOTS_SLASH: R,
QMARK_NO_DOT: E,
STAR: h,
START_ANCHOR: p,
SEP: g
};
const C = {
...b,
SLASH_LITERAL: "[".concat(e, "]"),
QMARK: u,
STAR: "".concat(u, "*?"),
DOTS_SLASH: "".concat(n, "{1,2}(?:[").concat(e, "]|$)"),
NO_DOT: "(?!".concat(n, ")"),
NO_DOTS: "(?!(?:^|[".concat(e, "])").concat(n, "{1,2}(?:[").concat(e, "]|$))"),
NO_DOT_SLASH: "(?!".concat(n, "{0,1}(?:[").concat(e, "]|$))"),
NO_DOTS_SLASH: "(?!".concat(n, "{1,2}(?:[").concat(e, "]|$))"),
QMARK_NO_DOT: "[^.".concat(e, "]"),
START_ANCHOR: "(?:^|[".concat(e, "])"),
END_ANCHOR: "(?:[".concat(e, "]|$)"),
SEP: "\\"
};
const y = {
alnum: "a-zA-Z0-9",
alpha: "a-zA-Z",
ascii: "\\x00-\\x7F",
blank: " \\t",
cntrl: "\\x00-\\x1F\\x7F",
digit: "0-9",
graph: "\\x21-\\x7E",
lower: "a-z",
print: "\\x20-\\x7E ",
punct: "\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~",
space: " \\t\\r\\n\\v\\f",
upper: "A-Z",
word: "A-Za-z0-9_",
xdigit: "A-Fa-f0-9"
};
t.exports = {
MAX_LENGTH: 1024 * 64,
POSIX_REGEX_SOURCE: y,
REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g,
REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/,
REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/,
REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g,
REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g,
REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g,
REPLACEMENTS: {
"***": "*",
"**/**": "**",
"**/**/**": "**"
},
CHAR_0: 48,
CHAR_9: 57,
CHAR_UPPERCASE_A: 65,
CHAR_LOWERCASE_A: 97,
CHAR_UPPERCASE_Z: 90,
CHAR_LOWERCASE_Z: 122,
CHAR_LEFT_PARENTHESES: 40,
CHAR_RIGHT_PARENTHESES: 41,
CHAR_ASTERISK: 42,
CHAR_AMPERSAND: 38,
CHAR_AT: 64,
CHAR_BACKWARD_SLASH: 92,
CHAR_CARRIAGE_RETURN: 13,
CHAR_CIRCUMFLEX_ACCENT: 94,
CHAR_COLON: 58,
CHAR_COMMA: 44,
CHAR_DOT: 46,
CHAR_DOUBLE_QUOTE: 34,
CHAR_EQUAL: 61,
CHAR_EXCLAMATION_MARK: 33,
CHAR_FORM_FEED: 12,
CHAR_FORWARD_SLASH: 47,
CHAR_GRAVE_ACCENT: 96,
CHAR_HASH: 35,
CHAR_HYPHEN_MINUS: 45,
CHAR_LEFT_ANGLE_BRACKET: 60,
CHAR_LEFT_CURLY_BRACE: 123,
CHAR_LEFT_SQUARE_BRACKET: 91,
CHAR_LINE_FEED: 10,
CHAR_NO_BREAK_SPACE: 160,
CHAR_PERCENT: 37,
CHAR_PLUS: 43,
CHAR_QUESTION_MARK: 63,
CHAR_RIGHT_ANGLE_BRACKET: 62,
CHAR_RIGHT_CURLY_BRACE: 125,
CHAR_RIGHT_SQUARE_BRACKET: 93,
CHAR_SEMICOLON: 59,
CHAR_SINGLE_QUOTE: 39,
CHAR_SPACE: 32,
CHAR_TAB: 9,
CHAR_UNDERSCORE: 95,
CHAR_VERTICAL_LINE: 124,
CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279,
extglobChars (t) {
return {
"!": {
type: "negate",
open: "(?:(?!(?:",
close: "))".concat(t.STAR, ")")
},
"?": {
type: "qmark",
open: "(?:",
close: ")?"
},
"+": {
type: "plus",
open: "(?:",
close: ")+"
},
"*": {
type: "star",
open: "(?:",
close: ")*"
},
"@": {
type: "at",
open: "(?:",
close: ")"
}
};
},
globChars (t) {
return t === true ? C : b;
}
};
},
697: (t, e, u)=>{
const n = u(154);
const o = u(96);
const { MAX_LENGTH: s, POSIX_REGEX_SOURCE: r, REGEX_NON_SPECIAL_CHARS: a, REGEX_SPECIAL_CHARS_BACKREF: i, REPLACEMENTS: c } = n;
const expandRange = (t, e)=>{
if (typeof e.expandRange === "function") {
return e.expandRange(...t, e);
}
t.sort();
const u = "[".concat(t.join("-"), "]");
try {
new RegExp(u);
} catch (e) {
return t.map((t)=>o.escapeRegex(t)).join("..");
}
return u;
};
const syntaxError = (t, e)=>"Missing ".concat(t, ': "').concat(e, '" - use "\\\\').concat(e, '" to match literal characters');
const parse = (t, e)=>{
if (typeof t !== "string") {
throw new TypeError("Expected a string");
}
t = c[t] || t;
const u = {
...e
};
const p = typeof u.maxLength === "number" ? Math.min(s, u.maxLength) : s;
let l = t.length;
if (l > p) {
throw new SyntaxError("Input length: ".concat(l, ", exceeds maximum allowed length: ").concat(p));
}
const f = {
type: "bos",
value: "",
output: u.prepend || ""
};
const A = [
f
];
const _ = u.capture ? "" : "?:";
const R = n.globChars(u.windows);
const E = n.extglobChars(R);
const { DOT_LITERAL: h, PLUS_LITERAL: g, SLASH_LITERAL: b, ONE_CHAR: C, DOTS_SLASH: y, NO_DOT: $, NO_DOT_SLASH: x, NO_DOTS_SLASH: S, QMARK: H, QMARK_NO_DOT: v, STAR: d, START_ANCHOR: L } = R;
const globstar = (t)=>"(".concat(_, "(?:(?!").concat(L).concat(t.dot ? y : h, ").)*?)");
const T = u.dot ? "" : $;
const O = u.dot ? H : v;
let k = u.bash === true ? globstar(u) : d;
if (u.capture) {
k = "(".concat(k, ")");
}
if (typeof u.noext === "boolean") {
u.noextglob = u.noext;
}
const m = {
input: t,
index: -1,
start: 0,
dot: u.dot === true,
consumed: "",
output: "",
prefix: "",
backtrack: false,
negated: false,
brackets: 0,
braces: 0,
parens: 0,
quotes: 0,
globstar: false,
tokens: A
};
t = o.removePrefix(t, m);
l = t.length;
const w = [];
const N = [];
const I = [];
let B = f;
let G;
const eos = ()=>m.index === l - 1;
const D = m.peek = function() {
let e = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : 1;
return t[m.index + e];
};
const M = m.advance = ()=>t[++m.index] || "";
const remaining = ()=>t.slice(m.index + 1);
const consume = function() {
let t = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : "", e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : 0;
m.consumed += t;
m.index += e;
};
const append = (t)=>{
m.output += t.output != null ? t.output : t.value;
consume(t.value);
};
const negate = ()=>{
let t = 1;
while(D() === "!" && (D(2) !== "(" || D(3) === "?")){
M();
m.start++;
t++;
}
if (t % 2 === 0) {
return false;
}
m.negated = true;
m.start++;
return true;
};
const increment = (t)=>{
m[t]++;
I.push(t);
};
const decrement = (t)=>{
m[t]--;
I.pop();
};
const push = (t)=>{
if (B.type === "globstar") {
const e = m.braces > 0 && (t.type === "comma" || t.type === "brace");
const u = t.extglob === true || w.length && (t.type === "pipe" || t.type === "paren");
if (t.type !== "slash" && t.type !== "paren" && !e && !u) {
m.output = m.output.slice(0, -B.output.length);
B.type = "star";
B.value = "*";
B.output = k;
m.output += B.output;
}
}
if (w.length && t.type !== "paren") {
w[w.length - 1].inner += t.value;
}
if (t.value || t.output) append(t);
if (B && B.type === "text" && t.type === "text") {
B.output = (B.output || B.value) + t.value;
B.value += t.value;
return;
}
t.prev = B;
A.push(t);
B = t;
};
const extglobOpen = (t, e)=>{
const n = {
...E[e],
conditions: 1,
inner: ""
};
n.prev = B;
n.parens = m.parens;
n.output = m.output;
const o = (u.capture ? "(" : "") + n.open;
increment("parens");
push({
type: t,
value: e,
output: m.output ? "" : C
});
push({
type: "paren",
extglob: true,
value: M(),
output: o
});
w.push(n);
};
const extglobClose = (t)=>{
let n = t.close + (u.capture ? ")" : "");
let o;
if (t.type === "negate") {
let s = k;
if (t.inner && t.inner.length > 1 && t.inner.includes("/")) {
s = globstar(u);
}
if (s !== k || eos() || /^\)+$/.test(remaining())) {
n = t.close = ")$))".concat(s);
}
if (t.inner.includes("*") && (o = remaining()) && /^\.[^\\/.]+$/.test(o)) {
const u = parse(o, {
...e,
fastpaths: false
}).output;
n = t.close = ")".concat(u, ")").concat(s, ")");
}
if (t.prev.type === "bos") {
m.negatedExtglob = true;
}
}
push({
type: "paren",
extglob: true,
value: G,
output: n
});
decrement("parens");
};
if (u.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(t)) {
let n = false;
let s = t.replace(i, (t, e, u, o, s, r)=>{
if (o === "\\") {
n = true;
return t;
}
if (o === "?") {
if (e) {
return e + o + (s ? H.repeat(s.length) : "");
}
if (r === 0) {
return O + (s ? H.repeat(s.length) : "");
}
return H.repeat(u.length);
}
if (o === ".") {
return h.repeat(u.length);
}
if (o === "*") {
if (e) {
return e + o + (s ? k : "");
}
return k;
}
return e ? t : "\\".concat(t);
});
if (n === true) {
if (u.unescape === true) {
s = s.replace(/\\/g, "");
} else {
s = s.replace(/\\+/g, (t)=>t.length % 2 === 0 ? "\\\\" : t ? "\\" : "");
}
}
if (s === t && u.contains === true) {
m.output = t;
return m;
}
m.output = o.wrapOutput(s, m, e);
return m;
}
while(!eos()){
G = M();
if (G === "\0") {
continue;
}
if (G === "\\") {
const t = D();
if (t === "/" && u.bash !== true) {
continue;
}
if (t === "." || t === ";") {
continue;
}
if (!t) {
G += "\\";
push({
type: "text",
value: G
});
continue;
}
const e = /^\\+/.exec(remaining());
let n = 0;
if (e && e[0].length > 2) {
n = e[0].length;
m.index += n;
if (n % 2 !== 0) {
G += "\\";
}
}
if (u.unescape === true) {
G = M();
} else {
G += M();
}
if (m.brackets === 0) {
push({
type: "text",
value: G
});
continue;
}
}
if (m.brackets > 0 && (G !== "]" || B.value === "[" || B.value === "[^")) {
if (u.posix !== false && G === ":") {
const t = B.value.slice(1);
if (t.includes("[")) {
B.posix = true;
if (t.includes(":")) {
const t = B.value.lastIndexOf("[");
const e = B.value.slice(0, t);
const u = B.value.slice(t + 2);
const n = r[u];
if (n) {
B.value = e + n;
m.backtrack = true;
M();
if (!f.output && A.indexOf(B) === 1) {
f.output = C;
}
continue;
}
}
}
}
if (G === "[" && D() !== ":" || G === "-" && D() === "]") {
G = "\\".concat(G);
}
if (G === "]" && (B.value === "[" || B.value === "[^")) {
G = "\\".concat(G);
}
if (u.posix === true && G === "!" && B.value === "[") {
G = "^";
}
B.value += G;
append({
value: G
});
continue;
}
if (m.quotes === 1 && G !== '"') {
G = o.escapeRegex(G);
B.value += G;
append({
value: G
});
continue;
}
if (G === '"') {
m.quotes = m.quotes === 1 ? 0 : 1;
if (u.keepQuotes === true) {
push({
type: "text",
value: G
});
}
continue;
}
if (G === "(") {
increment("parens");
push({
type: "paren",
value: G
});
continue;
}
if (G === ")") {
if (m.parens === 0 && u.strictBrackets === true) {
throw new SyntaxError(syntaxError("opening", "("));
}
const t = w[w.length - 1];
if (t && m.parens === t.parens + 1) {
extglobClose(w.pop());
continue;
}
push({
type: "paren",
value: G,
output: m.parens ? ")" : "\\)"
});
decrement("parens");
continue;
}
if (G === "[") {
if (u.nobracket === true || !remaining().includes("]")) {
if (u.nobracket !== true && u.strictBrackets === true) {
throw new SyntaxError(syntaxError("closing", "]"));
}
G = "\\".concat(G);
} else {
increment("brackets");
}
push({
type: "bracket",
value: G
});
continue;
}
if (G === "]") {
if (u.nobracket === true || B && B.type === "bracket" && B.value.length === 1) {
push({
type: "text",
value: G,
output: "\\".concat(G)
});
continue;
}
if (m.brackets === 0) {
if (u.strictBrackets === true) {
throw new SyntaxError(syntaxError("opening", "["));
}
push({
type: "text",
value: G,
output: "\\".concat(G)
});
continue;
}
decrement("brackets");
const t = B.value.slice(1);
if (B.posix !== true && t[0] === "^" && !t.includes("/")) {
G = "/".concat(G);
}
B.value += G;
append({
value: G
});
if (u.literalBrackets === false || o.hasRegexChars(t)) {
continue;
}
const e = o.escapeRegex(B.value);
m.output = m.output.slice(0, -B.value.length);
if (u.literalBrackets === true) {
m.output += e;
B.value = e;
continue;
}
B.value = "(".concat(_).concat(e, "|").concat(B.value, ")");
m.output += B.value;
continue;
}
if (G === "{" && u.nobrace !== true) {
increment("braces");
const t = {
type: "brace",
value: G,
output: "(",
outputIndex: m.output.length,
tokensIndex: m.tokens.length
};
N.push(t);
push(t);
continue;
}
if (G === "}") {
const t = N[N.length - 1];
if (u.nobrace === true || !t) {
push({
type: "text",
value: G,
output: G
});
continue;
}
let e = ")";
if (t.dots === true) {
const t = A.slice();
const n = [];
for(let e = t.length - 1; e >= 0; e--){
A.pop();
if (t[e].type === "brace") {
break;
}
if (t[e].type !== "dots") {
n.unshift(t[e].value);
}
}
e = expandRange(n, u);
m.backtrack = true;
}
if (t.comma !== true && t.dots !== true) {
const u = m.output.slice(0, t.outputIndex);
const n = m.tokens.slice(t.tokensIndex);
t.value = t.output = "\\{";
G = e = "\\}";
m.output = u;
for (const t of n){
m.output += t.output || t.value;
}
}
push({
type: "brace",
value: G,
output: e
});
decrement("braces");
N.pop();
continue;
}
if (G === "|") {
if (w.length > 0) {
w[w.length - 1].conditions++;
}
push({
type: "text",
value: G
});
continue;
}
if (G === ",") {
let t = G;
const e = N[N.length - 1];
if (e && I[I.length - 1] === "braces") {
e.comma = true;
t = "|";
}
push({
type: "comma",
value: G,
output: t
});
continue;
}
if (G === "/") {
if (B.type === "dot" && m.index === m.start + 1) {
m.start = m.index + 1;
m.consumed = "";
m.output = "";
A.pop();
B = f;
continue;
}
push({
type: "slash",
value: G,
output: b
});
continue;
}
if (G === ".") {
if (m.braces > 0 && B.type === "dot") {
if (B.value === ".") B.output = h;
const t = N[N.length - 1];
B.type = "dots";
B.output += G;
B.value += G;
t.dots = true;
continue;
}
if (m.braces + m.parens === 0 && B.type !== "bos" && B.type !== "slash") {
push({
type: "text",
value: G,
output: h
});
continue;
}
push({
type: "dot",
value: G,
output: h
});
continue;
}
if (G === "?") {
const t = B && B.value === "(";
if (!t && u.noextglob !== true && D() === "(" && D(2) !== "?") {
extglobOpen("qmark", G);
continue;
}
if (B && B.type === "paren") {
const t = D();
let e = G;
if (B.value === "(" && !/[!=<:]/.test(t) || t === "<" && !/<([!=]|\w+>)/.test(remaining())) {
e = "\\".concat(G);
}
push({
type: "text",
value: G,
output: e
});
continue;
}
if (u.dot !== true && (B.type === "slash" || B.type === "bos")) {
push({
type: "qmark",
value: G,
output: v
});
continue;
}
push({
type: "qmark",
value: G,
output: H
});
continue;
}
if (G === "!") {
if (u.noextglob !== true && D() === "(") {
if (D(2) !== "?" || !/[!=<:]/.test(D(3))) {
extglobOpen("negate", G);
continue;
}
}
if (u.nonegate !== true && m.index === 0) {
negate();
continue;
}
}
if (G === "+") {
if (u.noextglob !== true && D() === "(" && D(2) !== "?") {
extglobOpen("plus", G);
continue;
}
if (B && B.value === "(" || u.regex === false) {
push({
type: "plus",
value: G,
output: g
});
continue;
}
if (B && (B.type === "bracket" || B.type === "paren" || B.type === "brace") || m.parens > 0) {
push({
type: "plus",
value: G
});
continue;
}
push({
type: "plus",
value: g
});
continue;
}
if (G === "@") {
if (u.noextglob !== true && D() === "(" && D(2) !== "?") {
push({
type: "at",
extglob: true,
value: G,
output: ""
});
continue;
}
push({
type: "text",
value: G
});
continue;
}
if (G !== "*") {
if (G === "$" || G === "^") {
G = "\\".concat(G);
}
const t = a.exec(remaining());
if (t) {
G += t[0];
m.index += t[0].length;
}
push({
type: "text",
value: G
});
continue;
}
if (B && (B.type === "globstar" || B.star === true)) {
B.type = "star";
B.star = true;
B.value += G;
B.output = k;
m.backtrack = true;
m.globstar = true;
consume(G);
continue;
}
let e = remaining();
if (u.noextglob !== true && /^\([^?]/.test(e)) {
extglobOpen("star", G);
continue;
}
if (B.type === "star") {
if (u.noglobstar === true) {
consume(G);
continue;
}
const n = B.prev;
const o = n.prev;
const s = n.type === "slash" || n.type === "bos";
const r = o && (o.type === "star" || o.type === "globstar");
if (u.bash === true && (!s || e[0] && e[0] !== "/")) {
push({
type: "star",
value: G,
output: ""
});
continue;
}
const a = m.braces > 0 && (n.type === "comma" || n.type === "brace");
const i = w.length && (n.type === "pipe" || n.type === "paren");
if (!s && n.type !== "paren" && !a && !i) {
push({
type: "star",
value: G,
output: ""
});
continue;
}
while(e.slice(0, 3) === "/**"){
const u = t[m.index + 4];
if (u && u !== "/") {
break;
}
e = e.slice(3);
consume("/**", 3);
}
if (n.type === "bos" && eos()) {
B.type = "globstar";
B.value += G;
B.output = globstar(u);
m.output = B.output;
m.globstar = true;
consume(G);
continue;
}
if (n.type === "slash" && n.prev.type !== "bos" && !r && eos()) {
m.output = m.output.slice(0, -(n.output + B.output).length);
n.output = "(?:".concat(n.output);
B.type = "globstar";
B.output = globstar(u) + (u.strictSlashes ? ")" : "|$)");
B.value += G;
m.globstar = true;
m.output += n.output + B.output;
consume(G);
continue;
}
if (n.type === "slash" && n.prev.type !== "bos" && e[0] === "/") {
const t = e[1] !== void 0 ? "|$" : "";
m.output = m.output.slice(0, -(n.output + B.output).length);
n.output = "(?:".concat(n.output);
B.type = "globstar";
B.output = "".concat(globstar(u)).concat(b, "|").concat(b).concat(t, ")");
B.value += G;
m.output += n.output + B.output;
m.globstar = true;
consume(G + M());
push({
type: "slash",
value: "/",
output: ""
});
continue;
}
if (n.type === "bos" && e[0] === "/") {
B.type = "globstar";
B.value += G;
B.output = "(?:^|".concat(b, "|").concat(globstar(u)).concat(b, ")");
m.output = B.output;
m.globstar = true;
consume(G + M());
push({
type: "slash",
value: "/",
output: ""
});
continue;
}
m.output = m.output.slice(0, -B.output.length);
B.type = "globstar";
B.output = globstar(u);
B.value += G;
m.output += B.output;
m.globstar = true;
consume(G);
continue;
}
const n = {
type: "star",
value: G,
output: k
};
if (u.bash === true) {
n.output = ".*?";
if (B.type === "bos" || B.type === "slash") {
n.output = T + n.output;
}
push(n);
continue;
}
if (B && (B.type === "bracket" || B.type === "paren") && u.regex === true) {
n.output = G;
push(n);
continue;
}
if (m.index === m.start || B.type === "slash" || B.type === "dot") {
if (B.type === "dot") {
m.output += x;
B.output += x;
} else if (u.dot === true) {
m.output += S;
B.output += S;
} else {
m.output += T;
B.output += T;
}
if (D() !== "*") {
m.output += C;
B.output += C;
}
}
push(n);
}
while(m.brackets > 0){
if (u.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "]"));
m.output = o.escapeLast(m.output, "[");
decrement("brackets");
}
while(m.parens > 0){
if (u.strictBrackets === true) throw new SyntaxError(syntaxError("closing", ")"));
m.output = o.escapeLast(m.output, "(");
decrement("parens");
}
while(m.braces > 0){
if (u.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "}"));
m.output = o.escapeLast(m.output, "{");
decrement("braces");
}
if (u.strictSlashes !== true && (B.type === "star" || B.type === "bracket")) {
push({
type: "maybe_slash",
value: "",
output: "".concat(b, "?")
});
}
if (m.backtrack === true) {
m.output = "";
for (const t of m.tokens){
m.output += t.output != null ? t.output : t.value;
if (t.suffix) {
m.output += t.suffix;
}
}
}
return m;
};
parse.fastpaths = (t, e)=>{
const u = {
...e
};
const r = typeof u.maxLength === "number" ? Math.min(s, u.maxLength) : s;
const a = t.length;
if (a > r) {
throw new SyntaxError("Input length: ".concat(a, ", exceeds maximum allowed length: ").concat(r));
}
t = c[t] || t;
const { DOT_LITERAL: i, SLASH_LITERAL: p, ONE_CHAR: l, DOTS_SLASH: f, NO_DOT: A, NO_DOTS: _, NO_DOTS_SLASH: R, STAR: E, START_ANCHOR: h } = n.globChars(u.windows);
const g = u.dot ? _ : A;
const b = u.dot ? R : A;
const C = u.capture ? "" : "?:";
const y = {
negated: false,
prefix: ""
};
let $ = u.bash === true ? ".*?" : E;
if (u.capture) {
$ = "(".concat($, ")");
}
const globstar = (t)=>{
if (t.noglobstar === true) return $;
return "(".concat(C, "(?:(?!").concat(h).concat(t.dot ? f : i, ").)*?)");
};
const create = (t)=>{
switch(t){
case "*":
return "".concat(g).concat(l).concat($);
case ".*":
return "".concat(i).concat(l).concat($);
case "*.*":
return "".concat(g).concat($).concat(i).concat(l).concat($);
case "*/*":
return "".concat(g).concat($).concat(p).concat(l).concat(b).concat($);
case "**":
return g + globstar(u);
case "**/*":
return "(?:".concat(g).concat(globstar(u)).concat(p, ")?").concat(b).concat(l).concat($);
case "**/*.*":
return "(?:".concat(g).concat(globstar(u)).concat(p, ")?").concat(b).concat($).concat(i).concat(l).concat($);
case "**/.*":
return "(?:".concat(g).concat(globstar(u)).concat(p, ")?").concat(i).concat(l).concat($);
default:
{
const e = /^(.*?)\.(\w+)$/.exec(t);
if (!e) return;
const u = create(e[1]);
if (!u) return;
return u + i + e[2];
}
}
};
const x = o.removePrefix(t, y);
let S = create(x);
if (S && u.strictSlashes !== true) {
S += "".concat(p, "?");
}
return S;
};
t.exports = parse;
},
510: (t, e, u)=>{
const n = u(716);
const o = u(697);
const s = u(96);
const r = u(154);
const isObject = (t)=>t && typeof t === "object" && !Array.isArray(t);
const picomatch = function(t, e) {
let u = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false;
if (Array.isArray(t)) {
const n = t.map((t)=>picomatch(t, e, u));
const arrayMatcher = (t)=>{
for (const e of n){
const u = e(t);
if (u) return u;
}
return false;
};
return arrayMatcher;
}
const n = isObject(t) && t.tokens && t.input;
if (t === "" || typeof t !== "string" && !n) {
throw new TypeError("Expected pattern to be a non-empty string");
}
const o = e || {};
const s = o.windows;
const r = n ? picomatch.compileRe(t, e) : picomatch.makeRe(t, e, false, true);
const a = r.state;
delete r.state;
let isIgnored = ()=>false;
if (o.ignore) {
const t = {
...e,
ignore: null,
onMatch: null,
onResult: null
};
isIgnored = picomatch(o.ignore, t, u);
}
const matcher = function(u) {
let n = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : false;
const { isMatch: i, match: c, output: p } = picomatch.test(u, r, e, {
glob: t,
posix: s
});
const l = {
glob: t,
state: a,
regex: r,
posix: s,
input: u,
output: p,
match: c,
isMatch: i
};
if (typeof o.onResult === "function") {
o.onResult(l);
}
if (i === false) {
l.isMatch = false;
return n ? l : false;
}
if (isIgnored(u)) {
if (typeof o.onIgnore === "function") {
o.onIgnore(l);
}
l.isMatch = false;
return n ? l : false;
}
if (typeof o.onMatch === "function") {
o.onMatch(l);
}
return n ? l : true;
};
if (u) {
matcher.state = a;
}
return matcher;
};
picomatch.test = function(t, e, u) {
let { glob: n, posix: o } = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : {};
if (typeof t !== "string") {
throw new TypeError("Expected input to be a string");
}
if (t === "") {
return {
isMatch: false,
output: ""
};
}
const r = u || {};
const a = r.format || (o ? s.toPosixSlashes : null);
let i = t === n;
let c = i && a ? a(t) : t;
if (i === false) {
c = a ? a(t) : t;
i = c === n;
}
if (i === false || r.capture === true) {
if (r.matchBase === true || r.basename === true) {
i = picomatch.matchBase(t, e, u, o);
} else {
i = e.exec(c);
}
}
return {
isMatch: Boolean(i),
match: i,
output: c
};
};
picomatch.matchBase = (t, e, u)=>{
const n = e instanceof RegExp ? e : picomatch.makeRe(e, u);
return n.test(s.basename(t));
};
picomatch.isMatch = (t, e, u)=>picomatch(e, u)(t);
picomatch.parse = (t, e)=>{
if (Array.isArray(t)) return t.map((t)=>picomatch.parse(t, e));
return o(t, {
...e,
fastpaths: false
});
};
picomatch.scan = (t, e)=>n(t, e);
picomatch.compileRe = function(t, e) {
let u = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
if (u === true) {
return t.output;
}
const o = e || {};
const s = o.contains ? "" : "^";
const r = o.contains ? "" : "$";
let a = "".concat(s, "(?:").concat(t.output, ")").concat(r);
if (t && t.negated === true) {
a = "^(?!".concat(a, ").*$");
}
const i = picomatch.toRegex(a, e);
if (n === true) {
i.state = t;
}
return i;
};
picomatch.makeRe = function(t) {
let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, u = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : false, n = arguments.length > 3 && arguments[3] !== void 0 ? arguments[3] : false;
if (!t || typeof t !== "string") {
throw new TypeError("Expected a non-empty string");
}
let s = {
negated: false,
fastpaths: true
};
if (e.fastpaths !== false && (t[0] === "." || t[0] === "*")) {
s.output = o.fastpaths(t, e);
}
if (!s.output) {
s = o(t, e);
}
return picomatch.compileRe(s, e, u, n);
};
picomatch.toRegex = (t, e)=>{
try {
const u = e || {};
return new RegExp(t, u.flags || (u.nocase ? "i" : ""));
} catch (t) {
if (e && e.debug === true) throw t;
return /$^/;
}
};
picomatch.constants = r;
t.exports = picomatch;
},
716: (t, e, u)=>{
const n = u(96);
const { CHAR_ASTERISK: o, CHAR_AT: s, CHAR_BACKWARD_SLASH: r, CHAR_COMMA: a, CHAR_DOT: i, CHAR_EXCLAMATION_MARK: c, CHAR_FORWARD_SLASH: p, CHAR_LEFT_CURLY_BRACE: l, CHAR_LEFT_PARENTHESES: f, CHAR_LEFT_SQUARE_BRACKET: A, CHAR_PLUS: _, CHAR_QUESTION_MARK: R, CHAR_RIGHT_CURLY_BRACE: E, CHAR_RIGHT_PARENTHESES: h, CHAR_RIGHT_SQUARE_BRACKET: g } = u(154);
const isPathSeparator = (t)=>t === p || t === r;
const depth = (t)=>{
if (t.isPrefix !== true) {
t.depth = t.isGlobstar ? Infinity : 1;
}
};
const scan = (t, e)=>{
const u = e || {};
const b = t.length - 1;
const C = u.parts === true || u.scanToEnd === true;
const y = [];
const $ = [];
const x = [];
let S = t;
let H = -1;
let v = 0;
let d = 0;
let L = false;
let T = false;
let O = false;
let k = false;
let m = false;
let w = false;
let N = false;
let I = false;
let B = false;
let G = false;
let D = 0;
let M;
let P;
let K = {
value: "",
depth: 0,
isGlob: false
};
const eos = ()=>H >= b;
const peek = ()=>S.charCodeAt(H + 1);
const advance = ()=>{
M = P;
return S.charCodeAt(++H);
};
while(H < b){
P = advance();
let t;
if (P === r) {
N = K.backslashes = true;
P = advance();
if (P === l) {
w = true;
}
continue;
}
if (w === true || P === l) {
D++;
while(eos() !== true && (P = advance())){
if (P === r) {
N = K.backslashes = true;
advance();
continue;
}
if (P === l) {
D++;
continue;
}
if (w !== true && P === i && (P = advance()) === i) {
L = K.isBrace = true;
O = K.isGlob = true;
G = true;
if (C === true) {
continue;
}
break;
}
if (w !== true && P === a) {
L = K.isBrace = true;
O = K.isGlob = true;
G = true;
if (C === true) {
continue;
}
break;
}
if (P === E) {
D--;
if (D === 0) {
w = false;
L = K.isBrace = true;
G = true;
break;
}
}
}
if (C === true) {
continue;
}
break;
}
if (P === p) {
y.push(H);
$.push(K);
K = {
value: "",
depth: 0,
isGlob: false
};
if (G === true) continue;
if (M === i && H === v + 1) {
v += 2;
continue;
}
d = H + 1;
continue;
}
if (u.noext !== true) {
const t = P === _ || P === s || P === o || P === R || P === c;
if (t === true && peek() === f) {
O = K.isGlob = true;
k = K.isExtglob = true;
G = true;
if (P === c && H === v) {
B = true;
}
if (C === true) {
while(eos() !== true && (P = advance())){
if (P === r) {
N = K.backslashes = true;
P = advance();
continue;
}
if (P === h) {
O = K.isGlob = true;
G = true;
break;
}
}
continue;
}
break;
}
}
if (P === o) {
if (M === o) m = K.isGlobstar = true;
O = K.isGlob = true;
G = true;
if (C === true) {
continue;
}
break;
}
if (P === R) {
O = K.isGlob = true;
G = true;
if (C === true) {
continue;
}
break;
}
if (P === A) {
while(eos() !== true && (t = advance())){
if (t === r) {
N = K.backslashes = true;
advance();
continue;
}
if (t === g) {
T = K.isBracket = true;
O = K.isGlob = true;
G = true;
break;
}
}
if (C === true) {
continue;
}
break;
}
if (u.nonegate !== true && P === c && H === v) {
I = K.negated = true;
v++;
continue;
}
if (u.noparen !== true && P === f) {
O = K.isGlob = true;
if (C === true) {
while(eos() !== true && (P = advance())){
if (P === f) {
N = K.backslashes = true;
P = advance();
continue;
}
if (P === h) {
G = true;
break;
}
}
continue;
}
break;
}
if (O === true) {
G = true;
if (C === true) {
continue;
}
break;
}
}
if (u.noext === true) {
k = false;
O = false;
}
let U = S;
let X = "";
let F = "";
if (v > 0) {
X = S.slice(0, v);
S = S.slice(v);
d -= v;
}
if (U && O === true && d > 0) {
U = S.slice(0, d);
F = S.slice(d);
} else if (O === true) {
U = "";
F = S;
} else {
U = S;
}
if (U && U !== "" && U !== "/" && U !== S) {
if (isPathSeparator(U.charCodeAt(U.length - 1))) {
U = U.slice(0, -1);
}
}
if (u.unescape === true) {
if (F) F = n.removeBackslashes(F);
if (U && N === true) {
U = n.removeBackslashes(U);
}
}
const Q = {
prefix: X,
input: t,
start: v,
base: U,
glob: F,
isBrace: L,
isBracket: T,
isGlob: O,
isExtglob: k,
isGlobstar: m,
negated: I,
negatedExtglob: B
};
if (u.tokens === true) {
Q.maxDepth = 0;
if (!isPathSeparator(P)) {
$.push(K);
}
Q.tokens = $;
}
if (u.parts === true || u.tokens === true) {
let e;
for(let n = 0; n < y.length; n++){
const o = e ? e + 1 : v;
const s = y[n];
const r = t.slice(o, s);
if (u.tokens) {
if (n === 0 && v !== 0) {
$[n].isPrefix = true;
$[n].value = X;
} else {
$[n].value = r;
}
depth($[n]);
Q.maxDepth += $[n].depth;
}
if (n !== 0 || r !== "") {
x.push(r);
}
e = s;
}
if (e && e + 1 < t.length) {
const n = t.slice(e + 1);
x.push(n);
if (u.tokens) {
$[$.length - 1].value = n;
depth($[$.length - 1]);
Q.maxDepth += $[$.length - 1].depth;
}
}
Q.slashes = y;
Q.parts = x;
}
return Q;
};
t.exports = scan;
},
96: (t, e, u)=>{
const { REGEX_BACKSLASH: n, REGEX_REMOVE_BACKSLASH: o, REGEX_SPECIAL_CHARS: s, REGEX_SPECIAL_CHARS_GLOBAL: r } = u(154);
e.isObject = (t)=>t !== null && typeof t === "object" && !Array.isArray(t);
e.hasRegexChars = (t)=>s.test(t);
e.isRegexChar = (t)=>t.length === 1 && e.hasRegexChars(t);
e.escapeRegex = (t)=>t.replace(r, "\\$1");
e.toPosixSlashes = (t)=>t.replace(n, "/");
e.removeBackslashes = (t)=>t.replace(o, (t)=>t === "\\" ? "" : t);
e.escapeLast = (t, u, n)=>{
const o = t.lastIndexOf(u, n);
if (o === -1) return t;
if (t[o - 1] === "\\") return e.escapeLast(t, u, o - 1);
return "".concat(t.slice(0, o), "\\").concat(t.slice(o));
};
e.removePrefix = function(t) {
let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
let u = t;
if (u.startsWith("./")) {
u = u.slice(2);
e.prefix = "./";
}
return u;
};
e.wrapOutput = function(t) {
let e = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {}, u = arguments.length > 2 && arguments[2] !== void 0 ? arguments[2] : {};
const n = u.contains ? "" : "^";
const o = u.contains ? "" : "$";
let s = "".concat(n, "(?:").concat(t, ")").concat(o);
if (e.negated === true) {
s = "(?:^(?!".concat(s, ").*$)");
}
return s;
};
e.basename = function(t) {
let { windows: e } = arguments.length > 1 && arguments[1] !== void 0 ? arguments[1] : {};
const u = t.split(e ? /[\\/]/ : "/");
const n = u[u.length - 1];
if (n === "") {
return u[u.length - 2];
}
return n;
};
}
};
var e = {};
function __nccwpck_require__(u) {
var n = e[u];
if (n !== undefined) {
return n.exports;
}
var o = e[u] = {
exports: {}
};
var s = true;
try {
t[u](o, o.exports, __nccwpck_require__);
s = false;
} finally{
if (s) delete e[u];
}
return o.exports;
}
if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/node_modules/next/dist/compiled/picomatch") + "/";
var u = __nccwpck_require__(170);
module.exports = u;
})();
}),
"[project]/node_modules/next/dist/shared/lib/match-local-pattern.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
hasLocalMatch: null,
matchLocalPattern: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
hasLocalMatch: function() {
return hasLocalMatch;
},
matchLocalPattern: function() {
return matchLocalPattern;
}
});
const _picomatch = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/picomatch/index.js [app-client] (ecmascript)");
function matchLocalPattern(pattern, url) {
if (pattern.search !== undefined) {
if (pattern.search !== url.search) {
return false;
}
}
var _pattern_pathname;
if (!(0, _picomatch.makeRe)((_pattern_pathname = pattern.pathname) != null ? _pattern_pathname : '**', {
dot: true
}).test(url.pathname)) {
return false;
}
return true;
}
function hasLocalMatch(localPatterns, urlPathAndQuery) {
if (!localPatterns) {
// if the user didn't define "localPatterns", we allow all local images
return true;
}
const url = new URL(urlPathAndQuery, 'http://n');
return localPatterns.some((p)=>matchLocalPattern(p, url));
} //# sourceMappingURL=match-local-pattern.js.map
}),
"[project]/node_modules/next/dist/shared/lib/match-remote-pattern.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
0 && (module.exports = {
hasRemoteMatch: null,
matchRemotePattern: null
});
function _export(target, all) {
for(var name in all)Object.defineProperty(target, name, {
enumerable: true,
get: all[name]
});
}
_export(exports, {
hasRemoteMatch: function() {
return hasRemoteMatch;
},
matchRemotePattern: function() {
return matchRemotePattern;
}
});
const _picomatch = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/picomatch/index.js [app-client] (ecmascript)");
function matchRemotePattern(pattern, url) {
if (pattern.protocol !== undefined) {
if (pattern.protocol.replace(/:$/, '') !== url.protocol.replace(/:$/, '')) {
return false;
}
}
if (pattern.port !== undefined) {
if (pattern.port !== url.port) {
return false;
}
}
if (pattern.hostname === undefined) {
throw Object.defineProperty(new Error("Pattern should define hostname but found\n" + JSON.stringify(pattern)), "__NEXT_ERROR_CODE", {
value: "E410",
enumerable: false,
configurable: true
});
} else {
if (!(0, _picomatch.makeRe)(pattern.hostname).test(url.hostname)) {
return false;
}
}
if (pattern.search !== undefined) {
if (pattern.search !== url.search) {
return false;
}
}
var _pattern_pathname;
// Should be the same as writeImagesManifest()
if (!(0, _picomatch.makeRe)((_pattern_pathname = pattern.pathname) != null ? _pattern_pathname : '**', {
dot: true
}).test(url.pathname)) {
return false;
}
return true;
}
function hasRemoteMatch(domains, remotePatterns, url) {
return domains.some((domain)=>url.hostname === domain) || remotePatterns.some((p)=>matchRemotePattern(p, url));
} //# sourceMappingURL=match-remote-pattern.js.map
}),
"[project]/node_modules/next/dist/shared/lib/image-loader.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return _default;
}
});
const DEFAULT_Q = 75;
function defaultLoader(param) {
let { config, src, width, quality } = param;
var _config_qualities;
if ("TURBOPACK compile-time truthy", 1) {
const missingValues = [];
// these should always be provided but make sure they are
if (!src) missingValues.push('src');
if (!width) missingValues.push('width');
if (missingValues.length > 0) {
throw Object.defineProperty(new Error("Next Image Optimization requires " + missingValues.join(', ') + " to be provided. Make sure you pass them as props to the `next/image` component. Received: " + JSON.stringify({
src,
width,
quality
})), "__NEXT_ERROR_CODE", {
value: "E188",
enumerable: false,
configurable: true
});
}
if (src.startsWith('//')) {
throw Object.defineProperty(new Error('Failed to parse src "' + src + '" on `next/image`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)'), "__NEXT_ERROR_CODE", {
value: "E360",
enumerable: false,
configurable: true
});
}
if (src.startsWith('/') && config.localPatterns) {
if ("TURBOPACK compile-time truthy", 1) {
// We use dynamic require because this should only error in development
const { hasLocalMatch } = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/match-local-pattern.js [app-client] (ecmascript)");
if (!hasLocalMatch(config.localPatterns, src)) {
throw Object.defineProperty(new Error("Invalid src prop (" + src + ") on `next/image` does not match `images.localPatterns` configured in your `next.config.js`\n" + "See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns"), "__NEXT_ERROR_CODE", {
value: "E426",
enumerable: false,
configurable: true
});
}
}
}
if (!src.startsWith('/') && (config.domains || config.remotePatterns)) {
let parsedSrc;
try {
parsedSrc = new URL(src);
} catch (err) {
console.error(err);
throw Object.defineProperty(new Error('Failed to parse src "' + src + '" on `next/image`, if using relative image it must start with a leading slash "/" or be an absolute URL (http:// or https://)'), "__NEXT_ERROR_CODE", {
value: "E63",
enumerable: false,
configurable: true
});
}
if ("TURBOPACK compile-time truthy", 1) {
// We use dynamic require because this should only error in development
const { hasRemoteMatch } = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/match-remote-pattern.js [app-client] (ecmascript)");
if (!hasRemoteMatch(config.domains, config.remotePatterns, parsedSrc)) {
throw Object.defineProperty(new Error("Invalid src prop (" + src + ') on `next/image`, hostname "' + parsedSrc.hostname + '" is not configured under images in your `next.config.js`\n' + "See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host"), "__NEXT_ERROR_CODE", {
value: "E231",
enumerable: false,
configurable: true
});
}
}
}
if (quality && config.qualities && !config.qualities.includes(quality)) {
throw Object.defineProperty(new Error("Invalid quality prop (" + quality + ") on `next/image` does not match `images.qualities` configured in your `next.config.js`\n" + "See more info: https://nextjs.org/docs/messages/next-image-unconfigured-qualities"), "__NEXT_ERROR_CODE", {
value: "E623",
enumerable: false,
configurable: true
});
}
}
const q = quality || ((_config_qualities = config.qualities) == null ? void 0 : _config_qualities.reduce((prev, cur)=>Math.abs(cur - DEFAULT_Q) < Math.abs(prev - DEFAULT_Q) ? cur : prev)) || DEFAULT_Q;
return config.path + "?url=" + encodeURIComponent(src) + "&w=" + width + "&q=" + q + (src.startsWith('/_next/static/media/') && ("TURBOPACK compile-time value", false) ? "TURBOPACK unreachable" : '');
}
// We use this to determine if the import is the default loader
// or a custom loader defined by the user in next.config.js
defaultLoader.__next_img_default = true;
const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
}),
"[project]/node_modules/next/dist/client/image-component.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
"use strict";
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
'use client';
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "Image", {
enumerable: true,
get: function() {
return Image;
}
});
const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)");
const _interop_require_wildcard = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs [app-client] (ecmascript)");
const _jsxruntime = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
const _react = /*#__PURE__*/ _interop_require_wildcard._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"));
const _reactdom = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react-dom/index.js [app-client] (ecmascript)"));
const _head = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/head.js [app-client] (ecmascript)"));
const _getimgprops = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/get-img-props.js [app-client] (ecmascript)");
const _imageconfig = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-config.js [app-client] (ecmascript)");
const _imageconfigcontextsharedruntime = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js [app-client] (ecmascript)");
const _warnonce = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils/warn-once.js [app-client] (ecmascript)");
const _routercontextsharedruntime = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router-context.shared-runtime.js [app-client] (ecmascript)");
const _imageloader = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-loader.js [app-client] (ecmascript)"));
const _usemergedref = __turbopack_context__.r("[project]/node_modules/next/dist/client/use-merged-ref.js [app-client] (ecmascript)");
// This is replaced by webpack define plugin
const configEnv = ("TURBOPACK compile-time value", {
"deviceSizes": ("TURBOPACK compile-time value", [
("TURBOPACK compile-time value", 640),
("TURBOPACK compile-time value", 750),
("TURBOPACK compile-time value", 828),
("TURBOPACK compile-time value", 1080),
("TURBOPACK compile-time value", 1200),
("TURBOPACK compile-time value", 1920),
("TURBOPACK compile-time value", 2048)
]),
"imageSizes": ("TURBOPACK compile-time value", [
("TURBOPACK compile-time value", 16),
("TURBOPACK compile-time value", 32),
("TURBOPACK compile-time value", 48),
("TURBOPACK compile-time value", 64),
("TURBOPACK compile-time value", 96),
("TURBOPACK compile-time value", 128),
("TURBOPACK compile-time value", 256),
("TURBOPACK compile-time value", 384)
]),
"path": ("TURBOPACK compile-time value", "/_next/image"),
"loader": ("TURBOPACK compile-time value", "default"),
"dangerouslyAllowSVG": ("TURBOPACK compile-time value", false),
"unoptimized": ("TURBOPACK compile-time value", false),
"domains": ("TURBOPACK compile-time value", []),
"remotePatterns": ("TURBOPACK compile-time value", [
("TURBOPACK compile-time value", {
"protocol": ("TURBOPACK compile-time value", "https"),
"hostname": ("TURBOPACK compile-time value", "**.githubusercontent.com")
}),
("TURBOPACK compile-time value", {
"protocol": ("TURBOPACK compile-time value", "https"),
"hostname": ("TURBOPACK compile-time value", "images.unsplash.com")
})
]),
"output": ("TURBOPACK compile-time value", "standalone")
});
if (typeof window === 'undefined') {
;
globalThis.__NEXT_IMAGE_IMPORTED = true;
}
// See https://stackoverflow.com/q/39777833/266535 for why we use this ref
// handler instead of the img's onLoad attribute.
function handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput) {
const src = img == null ? void 0 : img.src;
if (!img || img['data-loaded-src'] === src) {
return;
}
img['data-loaded-src'] = src;
const p = 'decode' in img ? img.decode() : Promise.resolve();
p.catch(()=>{}).then(()=>{
if (!img.parentElement || !img.isConnected) {
// Exit early in case of race condition:
// - onload() is called
// - decode() is called but incomplete
// - unmount is called
// - decode() completes
return;
}
if (placeholder !== 'empty') {
setBlurComplete(true);
}
if (onLoadRef == null ? void 0 : onLoadRef.current) {
// Since we don't have the SyntheticEvent here,
// we must create one with the same shape.
// See https://reactjs.org/docs/events.html
const event = new Event('load');
Object.defineProperty(event, 'target', {
writable: false,
value: img
});
let prevented = false;
let stopped = false;
onLoadRef.current({
...event,
nativeEvent: event,
currentTarget: img,
target: img,
isDefaultPrevented: ()=>prevented,
isPropagationStopped: ()=>stopped,
persist: ()=>{},
preventDefault: ()=>{
prevented = true;
event.preventDefault();
},
stopPropagation: ()=>{
stopped = true;
event.stopPropagation();
}
});
}
if (onLoadingCompleteRef == null ? void 0 : onLoadingCompleteRef.current) {
onLoadingCompleteRef.current(img);
}
if ("TURBOPACK compile-time truthy", 1) {
const origSrc = new URL(src, 'http://n').searchParams.get('url') || src;
if (img.getAttribute('data-nimg') === 'fill') {
if (!unoptimized && (!sizesInput || sizesInput === '100vw')) {
let widthViewportRatio = img.getBoundingClientRect().width / window.innerWidth;
if (widthViewportRatio < 0.6) {
if (sizesInput === '100vw') {
(0, _warnonce.warnOnce)('Image with src "' + origSrc + '" has "fill" prop and "sizes" prop of "100vw", but image is not rendered at full viewport width. Please adjust "sizes" to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes');
} else {
(0, _warnonce.warnOnce)('Image with src "' + origSrc + '" has "fill" but is missing "sizes" prop. Please add it to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes');
}
}
}
if (img.parentElement) {
const { position } = window.getComputedStyle(img.parentElement);
const valid = [
'absolute',
'fixed',
'relative'
];
if (!valid.includes(position)) {
(0, _warnonce.warnOnce)('Image with src "' + origSrc + '" has "fill" and parent element with invalid "position". Provided "' + position + '" should be one of ' + valid.map(String).join(',') + ".");
}
}
if (img.height === 0) {
(0, _warnonce.warnOnce)('Image with src "' + origSrc + '" has "fill" and a height value of 0. This is likely because the parent element of the image has not been styled to have a set height.');
}
}
const heightModified = img.height.toString() !== img.getAttribute('height');
const widthModified = img.width.toString() !== img.getAttribute('width');
if (heightModified && !widthModified || !heightModified && widthModified) {
(0, _warnonce.warnOnce)('Image with src "' + origSrc + '" has either width or height modified, but not the other. If you use CSS to change the size of your image, also include the styles \'width: "auto"\' or \'height: "auto"\' to maintain the aspect ratio.');
}
}
});
}
function getDynamicProps(fetchPriority) {
if (Boolean(_react.use)) {
// In React 19.0.0 or newer, we must use camelCase
// prop to avoid "Warning: Invalid DOM property".
// See https://github.com/facebook/react/pull/25927
return {
fetchPriority
};
}
// In React 18.2.0 or older, we must use lowercase prop
// to avoid "Warning: Invalid DOM property".
return {
fetchpriority: fetchPriority
};
}
const ImageElement = /*#__PURE__*/ (0, _react.forwardRef)((param, forwardedRef)=>{
let { src, srcSet, sizes, height, width, decoding, className, style, fetchPriority, placeholder, loading, unoptimized, fill, onLoadRef, onLoadingCompleteRef, setBlurComplete, setShowAltText, sizesInput, onLoad, onError, ...rest } = param;
const ownRef = (0, _react.useCallback)((img)=>{
if (!img) {
return;
}
if (onError) {
// If the image has an error before react hydrates, then the error is lost.
// The workaround is to wait until the image is mounted which is after hydration,
// then we set the src again to trigger the error handler (if there was an error).
// eslint-disable-next-line no-self-assign
img.src = img.src;
}
if ("TURBOPACK compile-time truthy", 1) {
if (!src) {
console.error('Image is missing required "src" property:', img);
}
if (img.getAttribute('alt') === null) {
console.error('Image is missing required "alt" property. Please add Alternative Text to describe the image for screen readers and search engines.');
}
}
if (img.complete) {
handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput);
}
}, [
src,
placeholder,
onLoadRef,
onLoadingCompleteRef,
setBlurComplete,
onError,
unoptimized,
sizesInput
]);
const ref = (0, _usemergedref.useMergedRef)(forwardedRef, ownRef);
return /*#__PURE__*/ (0, _jsxruntime.jsx)("img", {
...rest,
...getDynamicProps(fetchPriority),
// It's intended to keep `loading` before `src` because React updates
// props in order which causes Safari/Firefox to not lazy load properly.
// See https://github.com/facebook/react/issues/25883
loading: loading,
width: width,
height: height,
decoding: decoding,
"data-nimg": fill ? 'fill' : '1',
className: className,
style: style,
// It's intended to keep `src` the last attribute because React updates
// attributes in order. If we keep `src` the first one, Safari will
// immediately start to fetch `src`, before `sizes` and `srcSet` are even
// updated by React. That causes multiple unnecessary requests if `srcSet`
// and `sizes` are defined.
// This bug cannot be reproduced in Chrome or Firefox.
sizes: sizes,
srcSet: srcSet,
src: src,
ref: ref,
onLoad: (event)=>{
const img = event.currentTarget;
handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput);
},
onError: (event)=>{
// if the real image fails to load, this will ensure "alt" is visible
setShowAltText(true);
if (placeholder !== 'empty') {
// If the real image fails to load, this will still remove the placeholder.
setBlurComplete(true);
}
if (onError) {
onError(event);
}
}
});
});
function ImagePreload(param) {
let { isAppRouter, imgAttributes } = param;
const opts = {
as: 'image',
imageSrcSet: imgAttributes.srcSet,
imageSizes: imgAttributes.sizes,
crossOrigin: imgAttributes.crossOrigin,
referrerPolicy: imgAttributes.referrerPolicy,
...getDynamicProps(imgAttributes.fetchPriority)
};
if (isAppRouter && _reactdom.default.preload) {
_reactdom.default.preload(imgAttributes.src, opts);
return null;
}
return /*#__PURE__*/ (0, _jsxruntime.jsx)(_head.default, {
children: /*#__PURE__*/ (0, _jsxruntime.jsx)("link", {
rel: "preload",
// Note how we omit the `href` attribute, as it would only be relevant
// for browsers that do not support `imagesrcset`, and in those cases
// it would cause the incorrect image to be preloaded.
//
// https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset
href: imgAttributes.srcSet ? undefined : imgAttributes.src,
...opts
}, '__nimg-' + imgAttributes.src + imgAttributes.srcSet + imgAttributes.sizes)
});
}
const Image = /*#__PURE__*/ (0, _react.forwardRef)((props, forwardedRef)=>{
const pagesRouter = (0, _react.useContext)(_routercontextsharedruntime.RouterContext);
// We're in the app directory if there is no pages router.
const isAppRouter = !pagesRouter;
const configContext = (0, _react.useContext)(_imageconfigcontextsharedruntime.ImageConfigContext);
const config = (0, _react.useMemo)(()=>{
var _c_qualities;
const c = configEnv || configContext || _imageconfig.imageConfigDefault;
const allSizes = [
...c.deviceSizes,
...c.imageSizes
].sort((a, b)=>a - b);
const deviceSizes = c.deviceSizes.sort((a, b)=>a - b);
const qualities = (_c_qualities = c.qualities) == null ? void 0 : _c_qualities.sort((a, b)=>a - b);
return {
...c,
allSizes,
deviceSizes,
qualities
};
}, [
configContext
]);
const { onLoad, onLoadingComplete } = props;
const onLoadRef = (0, _react.useRef)(onLoad);
(0, _react.useEffect)(()=>{
onLoadRef.current = onLoad;
}, [
onLoad
]);
const onLoadingCompleteRef = (0, _react.useRef)(onLoadingComplete);
(0, _react.useEffect)(()=>{
onLoadingCompleteRef.current = onLoadingComplete;
}, [
onLoadingComplete
]);
const [blurComplete, setBlurComplete] = (0, _react.useState)(false);
const [showAltText, setShowAltText] = (0, _react.useState)(false);
const { props: imgAttributes, meta: imgMeta } = (0, _getimgprops.getImgProps)(props, {
defaultLoader: _imageloader.default,
imgConf: config,
blurComplete,
showAltText
});
return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, {
children: [
/*#__PURE__*/ (0, _jsxruntime.jsx)(ImageElement, {
...imgAttributes,
unoptimized: imgMeta.unoptimized,
placeholder: imgMeta.placeholder,
fill: imgMeta.fill,
onLoadRef: onLoadRef,
onLoadingCompleteRef: onLoadingCompleteRef,
setBlurComplete: setBlurComplete,
setShowAltText: setShowAltText,
sizesInput: props.sizes,
ref: forwardedRef
}),
imgMeta.priority ? /*#__PURE__*/ (0, _jsxruntime.jsx)(ImagePreload, {
isAppRouter: isAppRouter,
imgAttributes: imgAttributes
}) : null
]
});
});
if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') {
Object.defineProperty(exports.default, '__esModule', {
value: true
});
Object.assign(exports.default, exports);
module.exports = exports.default;
} //# sourceMappingURL=image-component.js.map
}),
]);
//# sourceMappingURL=node_modules_next_dist_619bb38e._.js.map