UNPKG

@prass/betterimage

Version:

BetterImage is a Next.js-focused library for building optimized image components with advanced features, including fallback animations. It enhances Next.js's built-in Image component, offering seamless optimization and an improved user experience for your

1 lines 4.74 kB
{"version":3,"sources":["../src/components/ui/BetterImage.ts","../src/components/ui/svg/Loader.tsx"],"sourcesContent":["\"use client\";\n\nimport * as React from \"react\";\nimport * as BetterThings from \"../../index\";\nimport { jsx } from \"react/jsx-runtime\";\nimport { pras } from \"../../lib/utils\";\nimport Loader from \"./svg/Loader\";\n\nconst BetterVersion = React.forwardRef<\n React.ComponentRef<typeof BetterThings.Root>,\n React.ComponentPropsWithoutRef<typeof BetterThings.Root>\n>(({ className, ...props }, ref) => {\n return jsx(BetterThings.Root, {\n ...props,\n ref,\n className: pras(\"relative flex h-full w-full\", className),\n });\n});\n\nBetterVersion.displayName = BetterThings.Root.displayName;\n\nconst Img = React.forwardRef<\n React.ComponentRef<typeof BetterThings.Image>,\n React.ComponentPropsWithoutRef<typeof BetterThings.Image>\n>(({ className, ...props }, ref) => {\n return jsx(BetterThings.Image, {\n ...props,\n ref,\n className: pras(\"h-full w-full\", className),\n });\n});\n\nImg.displayName = BetterThings.Image.displayName;\n\nconst Fallback = React.forwardRef<\n React.ComponentRef<typeof BetterThings.Fallback>,\n React.ComponentPropsWithoutRef<typeof BetterThings.Fallback>\n>(({ className, ...props }, ref) => {\n return jsx(BetterThings.Fallback, {\n ...props,\n ref,\n className: pras(\n \"flex h-full w-full items-center justify-center\",\n className\n ),\n children: jsx(Loader, { className: \"h-4 w-4 animate-spin\", size: 24 }),\n });\n});\n\nFallback.displayName = BetterThings.Fallback.displayName;\n\ntype BetterImageProps = React.ComponentPropsWithoutRef<\n typeof BetterThings.Image\n> & {\n onFailString?: string;\n delay?: number;\n};\n\nconst BetterImage = React.forwardRef<\n React.ComponentRef<typeof BetterThings.Image>,\n BetterImageProps\n>(({ src, alt, className, onFailString, delay, ...props }, ref) => {\n return jsx(BetterVersion, {\n ref,\n children: [\n jsx(Img, { src, alt, className, ...props }, \"image\"),\n jsx(Fallback, { onFailString, delay }, \"fallback\"),\n ],\n });\n});\nBetterImage.displayName = \"BetterImage\";\n\nexport { BetterVersion, Img, Fallback, BetterImage };\n","\"use client\";\nimport React from \"react\";\n\ntype SVGProps = React.ComponentPropsWithoutRef<\"svg\"> & {\n size?: number;\n}\n\nconst Loader = React.forwardRef<SVGElement, SVGProps>(({ size, ...props }, ref) => {\n return (\n <svg\n {...props}\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size || 24}\n height={size || 24}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <path d=\"M12 2v4\" />\n <path d=\"m16.2 7.8 2.9-2.9\" />\n <path d=\"M18 12h4\" />\n <path d=\"m16.2 16.2 2.9 2.9\" />\n <path d=\"M12 18v4\" />\n <path d=\"m4.9 19.1 2.9-2.9\" />\n <path d=\"M2 12h4\" />\n <path d=\"m4.9 4.9 2.9 2.9\" />\n </svg>\n );\n})\n\nexport default Loader;\n"],"mappings":";;;;;;;;;;;;AAEA,YAAYA,YAAW;AAEvB,SAAS,OAAAC,YAAW;;;ACHpB,OAAO,WAAW;AAQd,SAYE,KAZF;AAFJ,IAAM,SAAS,MAAM,WAAiC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ;AACjF,SACE;AAAA,IAAC;AAAA;AAAA,MACE,GAAG;AAAA,MACJ,OAAM;AAAA,MACN,OAAO,QAAQ;AAAA,MACf,QAAQ,QAAQ;AAAA,MAChB,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,QAAO;AAAA,MACP,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,MAEf;AAAA,4BAAC,UAAK,GAAE,WAAU;AAAA,QAClB,oBAAC,UAAK,GAAE,qBAAoB;AAAA,QAC5B,oBAAC,UAAK,GAAE,YAAW;AAAA,QACnB,oBAAC,UAAK,GAAE,sBAAqB;AAAA,QAC7B,oBAAC,UAAK,GAAE,YAAW;AAAA,QACnB,oBAAC,UAAK,GAAE,qBAAoB;AAAA,QAC5B,oBAAC,UAAK,GAAE,WAAU;AAAA,QAClB,oBAAC,UAAK,GAAE,oBAAmB;AAAA;AAAA;AAAA,EAC7B;AAEJ,CAAC;AAED,IAAO,iBAAQ;;;ADzBf,IAAM,gBAAsB,kBAG1B,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SAAOC,KAAiB,MAAM;AAAA,IAC5B,GAAG;AAAA,IACH;AAAA,IACA,WAAW,KAAK,+BAA+B,SAAS;AAAA,EAC1D,CAAC;AACH,CAAC;AAED,cAAc,cAA2B,KAAK;AAE9C,IAAM,MAAY,kBAGhB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SAAOA,KAAiB,OAAO;AAAA,IAC7B,GAAG;AAAA,IACH;AAAA,IACA,WAAW,KAAK,iBAAiB,SAAS;AAAA,EAC5C,CAAC;AACH,CAAC;AAED,IAAI,cAA2B,MAAM;AAErC,IAAMC,YAAiB,kBAGrB,CAAC,EAAE,WAAW,GAAG,MAAM,GAAG,QAAQ;AAClC,SAAOD,KAAiB,UAAU;AAAA,IAChC,GAAG;AAAA,IACH;AAAA,IACA,WAAW;AAAA,MACT;AAAA,MACA;AAAA,IACF;AAAA,IACA,UAAUA,KAAI,gBAAQ,EAAE,WAAW,wBAAwB,MAAM,GAAG,CAAC;AAAA,EACvE,CAAC;AACH,CAAC;AAEDC,UAAS,cAA2B,SAAS;AAS7C,IAAM,cAAoB,kBAGxB,CAAC,EAAE,KAAK,KAAK,WAAW,cAAc,OAAO,GAAG,MAAM,GAAG,QAAQ;AACjE,SAAOD,KAAI,eAAe;AAAA,IACxB;AAAA,IACA,UAAU;AAAA,MACRA,KAAI,KAAK,EAAE,KAAK,KAAK,WAAW,GAAG,MAAM,GAAG,OAAO;AAAA,MACnDA,KAAIC,WAAU,EAAE,cAAc,MAAM,GAAG,UAAU;AAAA,IACnD;AAAA,EACF,CAAC;AACH,CAAC;AACD,YAAY,cAAc;","names":["React","jsx","jsx","Fallback"]}