@uxf/core 4.2.0 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@uxf/core",
3
- "version": "4.2.0",
3
+ "version": "4.3.0",
4
4
  "description": "UXF Core",
5
5
  "author": "Petr Vejvoda <vejvoda@uxf.cz>",
6
6
  "homepage": "https://gitlab.com/uxf-npm/core#readme",
@@ -0,0 +1,8 @@
1
+ import { ImageResponse } from "./resizer";
2
+ interface FileResponse {
3
+ uuid: string;
4
+ namespace?: string | null;
5
+ extension: string;
6
+ }
7
+ export declare function getFileUrl(file: FileResponse | ImageResponse): string;
8
+ export {};
package/utils/file.js ADDED
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFileUrl = void 0;
4
+ function getFileUrl(file) {
5
+ var ch1 = file.uuid.charAt(0);
6
+ var ch2 = file.uuid.charAt(1);
7
+ return file.namespace
8
+ ? "/upload/".concat(file.namespace, "/").concat(ch1, "/").concat(ch2, "/").concat(file.uuid, ".").concat(file.extension)
9
+ : "/upload/".concat(ch1, "/").concat(ch2, "/").concat(file.uuid, ".").concat(file.extension);
10
+ }
11
+ exports.getFileUrl = getFileUrl;
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQVFBLFNBQWdCLFVBQVUsQ0FBQyxJQUFrQztJQUN6RCxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNoQyxJQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUVoQyxPQUFPLElBQUksQ0FBQyxTQUFTO1FBQ2pCLENBQUMsQ0FBQyxrQkFBVyxJQUFJLENBQUMsU0FBUyxjQUFJLEdBQUcsY0FBSSxHQUFHLGNBQUksSUFBSSxDQUFDLElBQUksY0FBSSxJQUFJLENBQUMsU0FBUyxDQUFFO1FBQzFFLENBQUMsQ0FBQyxrQkFBVyxHQUFHLGNBQUksR0FBRyxjQUFJLElBQUksQ0FBQyxJQUFJLGNBQUksSUFBSSxDQUFDLFNBQVMsQ0FBRSxDQUFDO0FBQ2pFLENBQUM7QUFQRCxnQ0FPQyJ9
@@ -0,0 +1,20 @@
1
+ import { ImageSource, ResizerImageProps } from "./resizer";
2
+ import { FC } from "react";
3
+ export declare type Dimension = number | "auto";
4
+ export declare type Format = "avif" | "webp" | "original";
5
+ export declare type Quality = number | Record<Format, number>;
6
+ export declare function getSvgImgUrl(src: ImageSource): string | undefined;
7
+ export declare function getImgQuality(quality: Quality | undefined, format: Format): number | undefined;
8
+ export declare function getImgUniqueIdentifier(src: ImageSource): string | undefined;
9
+ export declare function getImgSrcSet(src?: ImageSource, width?: Dimension, height?: Dimension, options?: ResizerImageProps): string | undefined;
10
+ interface ImageSourcesProps {
11
+ breakpointIndex?: number;
12
+ breakpoints?: string[];
13
+ height: Dimension;
14
+ options?: Omit<ResizerImageProps, "quality" | "toFormat">;
15
+ quality?: Quality;
16
+ src: ImageSource;
17
+ width: Dimension;
18
+ }
19
+ export declare const ImgSources: FC<ImageSourcesProps>;
20
+ export {};
package/utils/image.js ADDED
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ var __assign = (this && this.__assign) || function () {
3
+ __assign = Object.assign || function(t) {
4
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
5
+ s = arguments[i];
6
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
+ t[p] = s[p];
8
+ }
9
+ return t;
10
+ };
11
+ return __assign.apply(this, arguments);
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.ImgSources = exports.getImgSrcSet = exports.getImgUniqueIdentifier = exports.getImgQuality = exports.getSvgImgUrl = void 0;
18
+ var file_1 = require("./file");
19
+ var resizer_1 = require("./resizer");
20
+ var react_1 = __importDefault(require("react"));
21
+ function toImageResponse(src) {
22
+ return typeof src !== "string" && "uuid" in src ? src : undefined;
23
+ }
24
+ function toStaticImageData(src) {
25
+ return typeof src !== "string" && "src" in src ? src : undefined;
26
+ }
27
+ function parseImgExtension(src) {
28
+ var ext = src.slice(src.lastIndexOf(".") + 1);
29
+ return ext.length > 1 ? ext : undefined;
30
+ }
31
+ function getSvgImgUrl(src) {
32
+ if (typeof src === "string" && parseImgExtension(src) === "svg") {
33
+ return src;
34
+ }
35
+ var imageResponse = toImageResponse(src);
36
+ if (imageResponse && parseImgExtension(imageResponse.extension) === "svg") {
37
+ return (0, file_1.getFileUrl)(imageResponse);
38
+ }
39
+ var staticImageData = toStaticImageData(src);
40
+ if (staticImageData && parseImgExtension(staticImageData.src) === "svg") {
41
+ return staticImageData.src;
42
+ }
43
+ return undefined;
44
+ }
45
+ exports.getSvgImgUrl = getSvgImgUrl;
46
+ function getImgQuality(quality, format) {
47
+ return typeof quality === "number" ? quality : quality ? quality[format] : undefined;
48
+ }
49
+ exports.getImgQuality = getImgQuality;
50
+ function getImgUniqueIdentifier(src) {
51
+ var _a, _b, _c;
52
+ return typeof src === "string" ? src : (_b = (_a = toImageResponse(src)) === null || _a === void 0 ? void 0 : _a.uuid) !== null && _b !== void 0 ? _b : (_c = toStaticImageData(src)) === null || _c === void 0 ? void 0 : _c.src;
53
+ }
54
+ exports.getImgUniqueIdentifier = getImgUniqueIdentifier;
55
+ var HIDPI_SIZES = [3, 2, 1];
56
+ function getImgSrcSet(src, width, height, options) {
57
+ var _a, _b;
58
+ if (options === void 0) { options = {}; }
59
+ if (!src) {
60
+ return undefined;
61
+ }
62
+ var toFormat;
63
+ var h = height !== null && height !== void 0 ? height : "auto";
64
+ var w = width !== null && width !== void 0 ? width : "auto";
65
+ if (typeof src === "string") {
66
+ toFormat = parseImgExtension(src);
67
+ }
68
+ var imageResponse = toImageResponse(src);
69
+ if (imageResponse) {
70
+ if (!imageResponse.uuid) {
71
+ return undefined;
72
+ }
73
+ toFormat = parseImgExtension(imageResponse.extension);
74
+ h = (_a = (h || imageResponse.height)) !== null && _a !== void 0 ? _a : "auto";
75
+ w = (_b = (w || imageResponse.width)) !== null && _b !== void 0 ? _b : "auto";
76
+ }
77
+ var staticImageData = toStaticImageData(src);
78
+ if (staticImageData) {
79
+ if (!staticImageData.src) {
80
+ return undefined;
81
+ }
82
+ toFormat = parseImgExtension(staticImageData.src);
83
+ h = h || staticImageData.height;
84
+ w = w || staticImageData.width;
85
+ }
86
+ if (typeof h === "number" || typeof w === "number") {
87
+ return HIDPI_SIZES.map(function (size) {
88
+ return (0, resizer_1.resizerImageUrl)(src, w * size, h * size, __assign({ toFormat: toFormat }, options)) + (size > 1 ? " ".concat(size, "x") : "");
89
+ }).join(", ");
90
+ }
91
+ return (0, resizer_1.resizerImageUrl)(src, w, h, __assign({ toFormat: toFormat }, options));
92
+ }
93
+ exports.getImgSrcSet = getImgSrcSet;
94
+ var ImgSources = function (props) {
95
+ var _a, _b, _c;
96
+ if (!props.src) {
97
+ return null;
98
+ }
99
+ var imageResponse = toImageResponse(props.src);
100
+ if (imageResponse && !imageResponse.uuid) {
101
+ return null;
102
+ }
103
+ var staticImageData = toStaticImageData(props.src);
104
+ if (staticImageData && !staticImageData.src) {
105
+ return null;
106
+ }
107
+ var media;
108
+ if (props.breakpoints && props.breakpointIndex) {
109
+ media = "(min-width: ".concat(props.breakpoints[props.breakpointIndex], ")");
110
+ }
111
+ return (react_1.default.createElement(react_1.default.Fragment, null,
112
+ react_1.default.createElement("source", { media: media, srcSet: getImgSrcSet(props.src, props.width, props.height, __assign(__assign({}, ((_a = props.options) !== null && _a !== void 0 ? _a : {})), { quality: getImgQuality(props.quality, "avif"), toFormat: "avif" })), type: "image/avif" }),
113
+ react_1.default.createElement("source", { media: media, srcSet: getImgSrcSet(props.src, props.width, props.height, __assign(__assign({}, ((_b = props.options) !== null && _b !== void 0 ? _b : {})), { quality: getImgQuality(props.quality, "webp"), toFormat: "webp" })), type: "image/webp" }),
114
+ react_1.default.createElement("source", { media: media, srcSet: getImgSrcSet(props.src, props.width, props.height, __assign(__assign({}, ((_c = props.options) !== null && _c !== void 0 ? _c : {})), { quality: getImgQuality(props.quality, "original") })) })));
115
+ };
116
+ exports.ImgSources = ImgSources;
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW1hZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW1hZ2UudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0JBQW9DO0FBQ3BDLHFDQUE0RztBQUM1RyxnREFBa0M7QUFNbEMsU0FBUyxlQUFlLENBQUMsR0FBUTtJQUM3QixPQUFPLE9BQU8sR0FBRyxLQUFLLFFBQVEsSUFBSSxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUN0RSxDQUFDO0FBRUQsU0FBUyxpQkFBaUIsQ0FBQyxHQUFRO0lBQy9CLE9BQU8sT0FBTyxHQUFHLEtBQUssUUFBUSxJQUFJLEtBQUssSUFBSSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3JFLENBQUM7QUFFRCxTQUFTLGlCQUFpQixDQUFDLEdBQVc7SUFDbEMsSUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWhELE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQzVDLENBQUM7QUFFRCxTQUFnQixZQUFZLENBQUMsR0FBZ0I7SUFDekMsSUFBSSxPQUFPLEdBQUcsS0FBSyxRQUFRLElBQUksaUJBQWlCLENBQUMsR0FBRyxDQUFDLEtBQUssS0FBSyxFQUFFO1FBQzdELE9BQU8sR0FBRyxDQUFDO0tBQ2Q7SUFFRCxJQUFNLGFBQWEsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFM0MsSUFBSSxhQUFhLElBQUksaUJBQWlCLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssRUFBRTtRQUN2RSxPQUFPLElBQUEsaUJB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