7477.js 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631
  1. exports.id = 7477;
  2. exports.ids = [7477];
  3. exports.modules = {
  4. /***/ 7477:
  5. /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
  6. module.exports = __webpack_require__(82003)
  7. /***/ }),
  8. /***/ 82003:
  9. /***/ ((module, exports, __webpack_require__) => {
  10. "use strict";
  11. "client";
  12. Object.defineProperty(exports, "__esModule", ({
  13. value: true
  14. }));
  15. exports["default"] = Image;
  16. var _extends = (__webpack_require__(25550)/* ["default"] */ .Z);
  17. var _interop_require_default = (__webpack_require__(40213)/* ["default"] */ .Z);
  18. var _interop_require_wildcard = (__webpack_require__(95928)/* ["default"] */ .Z);
  19. var _object_without_properties_loose = (__webpack_require__(36969)/* ["default"] */ .Z);
  20. var _react = _interop_require_wildcard(__webpack_require__(16689));
  21. var _head = _interop_require_default(__webpack_require__(94957));
  22. var _imageConfig = __webpack_require__(35843);
  23. var _useIntersection = __webpack_require__(99879);
  24. var _imageConfigContext = __webpack_require__(50744);
  25. var _utils = __webpack_require__(59232);
  26. var _normalizeTrailingSlash = __webpack_require__(68641);
  27. function Image(_param) {
  28. var { src , sizes , unoptimized =false , priority =false , loading , lazyRoot =null , lazyBoundary , className , quality , width , height , style , objectFit , objectPosition , onLoadingComplete , placeholder ="empty" , blurDataURL } = _param, all = _object_without_properties_loose(_param, [
  29. "src",
  30. "sizes",
  31. "unoptimized",
  32. "priority",
  33. "loading",
  34. "lazyRoot",
  35. "lazyBoundary",
  36. "className",
  37. "quality",
  38. "width",
  39. "height",
  40. "style",
  41. "objectFit",
  42. "objectPosition",
  43. "onLoadingComplete",
  44. "placeholder",
  45. "blurDataURL"
  46. ]);
  47. const configContext = (0, _react).useContext(_imageConfigContext.ImageConfigContext);
  48. const config = (0, _react).useMemo(()=>{
  49. const c = configEnv || configContext || _imageConfig.imageConfigDefault;
  50. const allSizes = [
  51. ...c.deviceSizes,
  52. ...c.imageSizes
  53. ].sort((a, b)=>a - b);
  54. const deviceSizes = c.deviceSizes.sort((a, b)=>a - b);
  55. return _extends({}, c, {
  56. allSizes,
  57. deviceSizes
  58. });
  59. }, [
  60. configContext
  61. ]);
  62. let rest = all;
  63. let layout = sizes ? "responsive" : "intrinsic";
  64. if ("layout" in rest) {
  65. // Override default layout if the user specified one:
  66. if (rest.layout) layout = rest.layout;
  67. // Remove property so it's not spread on <img>:
  68. delete rest.layout;
  69. }
  70. let loader = defaultImageLoader;
  71. if ("loader" in rest) {
  72. if (rest.loader) {
  73. const customImageLoader = rest.loader;
  74. var _tmp;
  75. _tmp = (obj)=>{
  76. const { config: _ } = obj, opts = _object_without_properties_loose(obj, [
  77. "config"
  78. ]);
  79. // The config object is internal only so we must
  80. // not pass it to the user-defined loader()
  81. return customImageLoader(opts);
  82. }, loader = _tmp, _tmp;
  83. }
  84. // Remove property so it's not spread on <img>
  85. delete rest.loader;
  86. }
  87. let staticSrc = "";
  88. if (isStaticImport(src)) {
  89. const staticImageData = isStaticRequire(src) ? src.default : src;
  90. if (!staticImageData.src) {
  91. throw 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)}`);
  92. }
  93. blurDataURL = blurDataURL || staticImageData.blurDataURL;
  94. staticSrc = staticImageData.src;
  95. if (!layout || layout !== "fill") {
  96. height = height || staticImageData.height;
  97. width = width || staticImageData.width;
  98. if (!staticImageData.height || !staticImageData.width) {
  99. throw 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)}`);
  100. }
  101. }
  102. }
  103. src = typeof src === "string" ? src : staticSrc;
  104. let isLazy = !priority && (loading === "lazy" || typeof loading === "undefined");
  105. if (src.startsWith("data:") || src.startsWith("blob:")) {
  106. // https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
  107. unoptimized = true;
  108. isLazy = false;
  109. }
  110. if (false) {}
  111. if (config.unoptimized) {
  112. unoptimized = true;
  113. }
  114. const [blurComplete, setBlurComplete] = (0, _react).useState(false);
  115. const [setIntersection, isIntersected, resetIntersected] = (0, _useIntersection).useIntersection({
  116. rootRef: lazyRoot,
  117. rootMargin: lazyBoundary || "200px",
  118. disabled: !isLazy
  119. });
  120. const isVisible = !isLazy || isIntersected;
  121. const wrapperStyle = {
  122. boxSizing: "border-box",
  123. display: "block",
  124. overflow: "hidden",
  125. width: "initial",
  126. height: "initial",
  127. background: "none",
  128. opacity: 1,
  129. border: 0,
  130. margin: 0,
  131. padding: 0
  132. };
  133. const sizerStyle = {
  134. boxSizing: "border-box",
  135. display: "block",
  136. width: "initial",
  137. height: "initial",
  138. background: "none",
  139. opacity: 1,
  140. border: 0,
  141. margin: 0,
  142. padding: 0
  143. };
  144. let hasSizer = false;
  145. let sizerSvgUrl;
  146. const layoutStyle = {
  147. position: "absolute",
  148. top: 0,
  149. left: 0,
  150. bottom: 0,
  151. right: 0,
  152. boxSizing: "border-box",
  153. padding: 0,
  154. border: "none",
  155. margin: "auto",
  156. display: "block",
  157. width: 0,
  158. height: 0,
  159. minWidth: "100%",
  160. maxWidth: "100%",
  161. minHeight: "100%",
  162. maxHeight: "100%",
  163. objectFit,
  164. objectPosition
  165. };
  166. let widthInt = getInt(width);
  167. let heightInt = getInt(height);
  168. const qualityInt = getInt(quality);
  169. if (false) {}
  170. const imgStyle = Object.assign({}, style, layoutStyle);
  171. const blurStyle = placeholder === "blur" && !blurComplete ? {
  172. backgroundSize: objectFit || "cover",
  173. backgroundPosition: objectPosition || "0% 0%",
  174. filter: "blur(20px)",
  175. backgroundImage: `url("${blurDataURL}")`
  176. } : {};
  177. if (layout === "fill") {
  178. // <Image src="i.png" layout="fill" />
  179. wrapperStyle.display = "block";
  180. wrapperStyle.position = "absolute";
  181. wrapperStyle.top = 0;
  182. wrapperStyle.left = 0;
  183. wrapperStyle.bottom = 0;
  184. wrapperStyle.right = 0;
  185. } else if (typeof widthInt !== "undefined" && typeof heightInt !== "undefined") {
  186. // <Image src="i.png" width="100" height="100" />
  187. const quotient = heightInt / widthInt;
  188. const paddingTop = isNaN(quotient) ? "100%" : `${quotient * 100}%`;
  189. if (layout === "responsive") {
  190. // <Image src="i.png" width="100" height="100" layout="responsive" />
  191. wrapperStyle.display = "block";
  192. wrapperStyle.position = "relative";
  193. hasSizer = true;
  194. sizerStyle.paddingTop = paddingTop;
  195. } else if (layout === "intrinsic") {
  196. // <Image src="i.png" width="100" height="100" layout="intrinsic" />
  197. wrapperStyle.display = "inline-block";
  198. wrapperStyle.position = "relative";
  199. wrapperStyle.maxWidth = "100%";
  200. hasSizer = true;
  201. sizerStyle.maxWidth = "100%";
  202. sizerSvgUrl = `data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27${widthInt}%27%20height=%27${heightInt}%27/%3e`;
  203. } else if (layout === "fixed") {
  204. // <Image src="i.png" width="100" height="100" layout="fixed" />
  205. wrapperStyle.display = "inline-block";
  206. wrapperStyle.position = "relative";
  207. wrapperStyle.width = widthInt;
  208. wrapperStyle.height = heightInt;
  209. }
  210. } else {
  211. // <Image src="i.png" />
  212. if (false) {}
  213. }
  214. let imgAttributes = {
  215. src: emptyDataURL,
  216. srcSet: undefined,
  217. sizes: undefined
  218. };
  219. if (isVisible) {
  220. imgAttributes = generateImgAttrs({
  221. config,
  222. src,
  223. unoptimized,
  224. layout,
  225. width: widthInt,
  226. quality: qualityInt,
  227. sizes,
  228. loader
  229. });
  230. }
  231. let srcString = src;
  232. if (false) {}
  233. let imageSrcSetPropName = "imagesrcset";
  234. let imageSizesPropName = "imagesizes";
  235. if (false) {}
  236. const linkProps = {
  237. // Note: imagesrcset and imagesizes are not in the link element type with react 17.
  238. [imageSrcSetPropName]: imgAttributes.srcSet,
  239. [imageSizesPropName]: imgAttributes.sizes,
  240. crossOrigin: rest.crossOrigin
  241. };
  242. const useLayoutEffect = true ? _react.default.useEffect : 0;
  243. const onLoadingCompleteRef = (0, _react).useRef(onLoadingComplete);
  244. const previousImageSrc = (0, _react).useRef(src);
  245. (0, _react).useEffect(()=>{
  246. onLoadingCompleteRef.current = onLoadingComplete;
  247. }, [
  248. onLoadingComplete
  249. ]);
  250. useLayoutEffect(()=>{
  251. if (previousImageSrc.current !== src) {
  252. resetIntersected();
  253. previousImageSrc.current = src;
  254. }
  255. }, [
  256. resetIntersected,
  257. src
  258. ]);
  259. const imgElementArgs = _extends({
  260. isLazy,
  261. imgAttributes,
  262. heightInt,
  263. widthInt,
  264. qualityInt,
  265. layout,
  266. className,
  267. imgStyle,
  268. blurStyle,
  269. loading,
  270. config,
  271. unoptimized,
  272. placeholder,
  273. loader,
  274. srcString,
  275. onLoadingCompleteRef,
  276. setBlurComplete,
  277. setIntersection,
  278. isVisible,
  279. noscriptSizes: sizes
  280. }, rest);
  281. return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement("span", {
  282. style: wrapperStyle
  283. }, hasSizer ? /*#__PURE__*/ _react.default.createElement("span", {
  284. style: sizerStyle
  285. }, sizerSvgUrl ? /*#__PURE__*/ _react.default.createElement("img", {
  286. style: {
  287. display: "block",
  288. maxWidth: "100%",
  289. width: "initial",
  290. height: "initial",
  291. background: "none",
  292. opacity: 1,
  293. border: 0,
  294. margin: 0,
  295. padding: 0
  296. },
  297. alt: "",
  298. "aria-hidden": true,
  299. src: sizerSvgUrl
  300. }) : null) : null, /*#__PURE__*/ _react.default.createElement(ImageElement, Object.assign({}, imgElementArgs))), priority ? // for browsers that do not support `imagesrcset`, and in those cases
  301. // it would likely cause the incorrect image to be preloaded.
  302. //
  303. // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset
  304. /*#__PURE__*/ _react.default.createElement(_head.default, null, /*#__PURE__*/ _react.default.createElement("link", Object.assign({
  305. key: "__nimg-" + imgAttributes.src + imgAttributes.srcSet + imgAttributes.sizes,
  306. rel: "preload",
  307. as: "image",
  308. href: imgAttributes.srcSet ? undefined : imgAttributes.src
  309. }, linkProps))) : null);
  310. }
  311. "client";
  312. function normalizeSrc(src) {
  313. return src[0] === "/" ? src.slice(1) : src;
  314. }
  315. const configEnv = {"deviceSizes":[640,750,828,1080,1200,1920,2048,3840],"imageSizes":[16,32,48,64,96,128,256,384],"path":"/_next/image","loader":"default","dangerouslyAllowSVG":false,"unoptimized":false};
  316. const loadedImageURLs = new Set();
  317. const allImgs = new Map();
  318. let perfObserver;
  319. const emptyDataURL = "data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7";
  320. if (true) {
  321. global.__NEXT_IMAGE_IMPORTED = true;
  322. }
  323. const VALID_LOADING_VALUES = (/* unused pure expression or super */ null && ([
  324. "lazy",
  325. "eager",
  326. undefined
  327. ]));
  328. function imgixLoader({ config , src , width , quality }) {
  329. // Demo: https://static.imgix.net/daisy.png?auto=format&fit=max&w=300
  330. const url = new URL(`${config.path}${normalizeSrc(src)}`);
  331. const params = url.searchParams;
  332. // auto params can be combined with comma separation, or reiteration
  333. params.set("auto", params.getAll("auto").join(",") || "format");
  334. params.set("fit", params.get("fit") || "max");
  335. params.set("w", params.get("w") || width.toString());
  336. if (quality) {
  337. params.set("q", quality.toString());
  338. }
  339. return url.href;
  340. }
  341. function akamaiLoader({ config , src , width }) {
  342. return `${config.path}${normalizeSrc(src)}?imwidth=${width}`;
  343. }
  344. function cloudinaryLoader({ config , src , width , quality }) {
  345. // Demo: https://res.cloudinary.com/demo/image/upload/w_300,c_limit,q_auto/turtles.jpg
  346. const params = [
  347. "f_auto",
  348. "c_limit",
  349. "w_" + width,
  350. "q_" + (quality || "auto")
  351. ];
  352. const paramsString = params.join(",") + "/";
  353. return `${config.path}${paramsString}${normalizeSrc(src)}`;
  354. }
  355. function customLoader({ src }) {
  356. throw new Error(`Image with src "${src}" is missing "loader" prop.` + `\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader`);
  357. }
  358. function defaultLoader({ config , src , width , quality }) {
  359. if (false) {}
  360. if (src.endsWith(".svg") && !config.dangerouslyAllowSVG) {
  361. // Special case to make svg serve as-is to avoid proxying
  362. // through the built-in Image Optimization API.
  363. return src;
  364. }
  365. return `${(0, _normalizeTrailingSlash).normalizePathTrailingSlash(config.path)}?url=${encodeURIComponent(src)}&w=${width}&q=${quality || 75}`;
  366. }
  367. const loaders = new Map([
  368. [
  369. "default",
  370. defaultLoader
  371. ],
  372. [
  373. "imgix",
  374. imgixLoader
  375. ],
  376. [
  377. "cloudinary",
  378. cloudinaryLoader
  379. ],
  380. [
  381. "akamai",
  382. akamaiLoader
  383. ],
  384. [
  385. "custom",
  386. customLoader
  387. ],
  388. ]);
  389. const VALID_LAYOUT_VALUES = (/* unused pure expression or super */ null && ([
  390. "fill",
  391. "fixed",
  392. "intrinsic",
  393. "responsive",
  394. undefined,
  395. ]));
  396. function isStaticRequire(src) {
  397. return src.default !== undefined;
  398. }
  399. function isStaticImageData(src) {
  400. return src.src !== undefined;
  401. }
  402. function isStaticImport(src) {
  403. return typeof src === "object" && (isStaticRequire(src) || isStaticImageData(src));
  404. }
  405. function getWidths({ deviceSizes , allSizes }, width, layout, sizes) {
  406. if (sizes && (layout === "fill" || layout === "responsive")) {
  407. // Find all the "vw" percent sizes used in the sizes prop
  408. const viewportWidthRe = /(^|\s)(1?\d?\d)vw/g;
  409. const percentSizes = [];
  410. for(let match; match = viewportWidthRe.exec(sizes); match){
  411. percentSizes.push(parseInt(match[2]));
  412. }
  413. if (percentSizes.length) {
  414. const smallestRatio = Math.min(...percentSizes) * 0.01;
  415. return {
  416. widths: allSizes.filter((s)=>s >= deviceSizes[0] * smallestRatio),
  417. kind: "w"
  418. };
  419. }
  420. return {
  421. widths: allSizes,
  422. kind: "w"
  423. };
  424. }
  425. if (typeof width !== "number" || layout === "fill" || layout === "responsive") {
  426. return {
  427. widths: deviceSizes,
  428. kind: "w"
  429. };
  430. }
  431. const widths = [
  432. ...new Set(// > are actually 3x in the green color, but only 1.5x in the red and
  433. // > blue colors. Showing a 3x resolution image in the app vs a 2x
  434. // > resolution image will be visually the same, though the 3x image
  435. // > takes significantly more data. Even true 3x resolution screens are
  436. // > wasteful as the human eye cannot see that level of detail without
  437. // > something like a magnifying glass.
  438. // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html
  439. [
  440. width,
  441. width * 2 /*, width * 3*/
  442. ].map((w)=>allSizes.find((p)=>p >= w) || allSizes[allSizes.length - 1])),
  443. ];
  444. return {
  445. widths,
  446. kind: "x"
  447. };
  448. }
  449. function generateImgAttrs({ config , src , unoptimized , layout , width , quality , sizes , loader }) {
  450. if (unoptimized) {
  451. return {
  452. src,
  453. srcSet: undefined,
  454. sizes: undefined
  455. };
  456. }
  457. const { widths , kind } = getWidths(config, width, layout, sizes);
  458. const last = widths.length - 1;
  459. return {
  460. sizes: !sizes && kind === "w" ? "100vw" : sizes,
  461. srcSet: widths.map((w, i)=>`${loader({
  462. config,
  463. src,
  464. quality,
  465. width: w
  466. })} ${kind === "w" ? w : i + 1}${kind}`).join(", "),
  467. // It's intended to keep `src` the last attribute because React updates
  468. // attributes in order. If we keep `src` the first one, Safari will
  469. // immediately start to fetch `src`, before `sizes` and `srcSet` are even
  470. // updated by React. That causes multiple unnecessary requests if `srcSet`
  471. // and `sizes` are defined.
  472. // This bug cannot be reproduced in Chrome or Firefox.
  473. src: loader({
  474. config,
  475. src,
  476. quality,
  477. width: widths[last]
  478. })
  479. };
  480. }
  481. function getInt(x) {
  482. if (typeof x === "number") {
  483. return x;
  484. }
  485. if (typeof x === "string") {
  486. return parseInt(x, 10);
  487. }
  488. return undefined;
  489. }
  490. function defaultImageLoader(loaderProps) {
  491. var ref;
  492. const loaderKey = ((ref = loaderProps.config) == null ? void 0 : ref.loader) || "default";
  493. const load = loaders.get(loaderKey);
  494. if (load) {
  495. return load(loaderProps);
  496. }
  497. throw new Error(`Unknown "loader" found in "next.config.js". Expected: ${_imageConfig.VALID_LOADERS.join(", ")}. Received: ${loaderKey}`);
  498. }
  499. // See https://stackoverflow.com/q/39777833/266535 for why we use this ref
  500. // handler instead of the img's onLoad attribute.
  501. function handleLoading(img, src, layout, placeholder, onLoadingCompleteRef, setBlurComplete) {
  502. if (!img || img.src === emptyDataURL || img["data-loaded-src"] === src) {
  503. return;
  504. }
  505. img["data-loaded-src"] = src;
  506. const p = "decode" in img ? img.decode() : Promise.resolve();
  507. p.catch(()=>{}).then(()=>{
  508. if (!img.parentNode) {
  509. // Exit early in case of race condition:
  510. // - onload() is called
  511. // - decode() is called but incomplete
  512. // - unmount is called
  513. // - decode() completes
  514. return;
  515. }
  516. loadedImageURLs.add(src);
  517. if (placeholder === "blur") {
  518. setBlurComplete(true);
  519. }
  520. if (onLoadingCompleteRef == null ? void 0 : onLoadingCompleteRef.current) {
  521. const { naturalWidth , naturalHeight } = img;
  522. // Pass back read-only primitive values but not the
  523. // underlying DOM element because it could be misused.
  524. onLoadingCompleteRef.current({
  525. naturalWidth,
  526. naturalHeight
  527. });
  528. }
  529. if (false) { var ref; }
  530. });
  531. }
  532. const ImageElement = (_param)=>{
  533. var { imgAttributes , heightInt , widthInt , qualityInt , layout , className , imgStyle , blurStyle , isLazy , placeholder , loading , srcString , config , unoptimized , loader , onLoadingCompleteRef , setBlurComplete , setIntersection , onLoad , onError , isVisible , noscriptSizes } = _param, rest = _object_without_properties_loose(_param, [
  534. "imgAttributes",
  535. "heightInt",
  536. "widthInt",
  537. "qualityInt",
  538. "layout",
  539. "className",
  540. "imgStyle",
  541. "blurStyle",
  542. "isLazy",
  543. "placeholder",
  544. "loading",
  545. "srcString",
  546. "config",
  547. "unoptimized",
  548. "loader",
  549. "onLoadingCompleteRef",
  550. "setBlurComplete",
  551. "setIntersection",
  552. "onLoad",
  553. "onError",
  554. "isVisible",
  555. "noscriptSizes"
  556. ]);
  557. loading = isLazy ? "lazy" : loading;
  558. return /*#__PURE__*/ _react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/ _react.default.createElement("img", Object.assign({}, rest, imgAttributes, {
  559. decoding: "async",
  560. "data-nimg": layout,
  561. className: className,
  562. style: _extends({}, imgStyle, blurStyle),
  563. ref: (0, _react).useCallback((img)=>{
  564. if (false) {}
  565. setIntersection(img);
  566. if (img == null ? void 0 : img.complete) {
  567. handleLoading(img, srcString, layout, placeholder, onLoadingCompleteRef, setBlurComplete);
  568. }
  569. }, [
  570. setIntersection,
  571. srcString,
  572. layout,
  573. placeholder,
  574. onLoadingCompleteRef,
  575. setBlurComplete,
  576. ]),
  577. onLoad: (event)=>{
  578. const img = event.currentTarget;
  579. handleLoading(img, srcString, layout, placeholder, onLoadingCompleteRef, setBlurComplete);
  580. if (onLoad) {
  581. onLoad(event);
  582. }
  583. },
  584. onError: (event)=>{
  585. if (placeholder === "blur") {
  586. // If the real image fails to load, this will still remove the placeholder.
  587. setBlurComplete(true);
  588. }
  589. if (onError) {
  590. onError(event);
  591. }
  592. }
  593. })), (isLazy || placeholder === "blur") && /*#__PURE__*/ _react.default.createElement("noscript", null, /*#__PURE__*/ _react.default.createElement("img", Object.assign({}, rest, generateImgAttrs({
  594. config,
  595. src: srcString,
  596. unoptimized,
  597. layout,
  598. width: widthInt,
  599. quality: qualityInt,
  600. sizes: noscriptSizes,
  601. loader
  602. }), {
  603. decoding: "async",
  604. "data-nimg": layout,
  605. style: imgStyle,
  606. className: className,
  607. // @ts-ignore - TODO: upgrade to `@types/react@17`
  608. loading: loading
  609. }))));
  610. };
  611. if ((typeof exports.default === "function" || typeof exports.default === "object" && exports.default !== null) && typeof exports.default.__esModule === "undefined") {
  612. Object.defineProperty(exports.default, "__esModule", {
  613. value: true
  614. });
  615. Object.assign(exports.default, exports);
  616. module.exports = exports.default;
  617. } //# sourceMappingURL=image.js.map
  618. /***/ })
  619. };
  620. ;
  621. //# sourceMappingURL=7477.js.map