@blocklet/pages-kit 0.2.451 → 0.2.452
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/lib/cjs/builtin/components/index.js +5 -3
- package/lib/cjs/components/ResponsiveImage/index.js +68 -0
- package/lib/cjs/components/index.js +3 -1
- package/lib/cjs/tsconfig.tsbuildinfo +1 -1
- package/lib/esm/builtin/components/index.js +3 -1
- package/lib/esm/components/ResponsiveImage/index.js +65 -0
- package/lib/esm/components/index.js +1 -0
- package/lib/esm/tsconfig.tsbuildinfo +1 -1
- package/lib/types/builtin/components/index.d.ts +3 -1
- package/lib/types/components/ResponsiveImage/index.d.ts +16 -0
- package/lib/types/components/index.d.ts +1 -0
- package/lib/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -3,6 +3,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.LanguageField = void 0;
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
exports.ResponsiveImage = exports.LanguageField = void 0;
|
|
7
|
+
const ResponsiveImage_1 = __importDefault(require("../../components/ResponsiveImage"));
|
|
8
|
+
exports.ResponsiveImage = ResponsiveImage_1.default;
|
|
9
|
+
const LanguageField_1 = __importDefault(require("./LanguageField"));
|
|
10
|
+
exports.LanguageField = LanguageField_1.default;
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
exports.default = ResponsiveImage;
|
|
15
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
16
|
+
const Theme_1 = require("@arcblock/ux/lib/Theme");
|
|
17
|
+
const material_1 = require("@mui/material");
|
|
18
|
+
function ResponsiveImage(_a) {
|
|
19
|
+
var { src, sizesAttr, quality = 90, sx, alt } = _a, props = __rest(_a, ["src", "sizesAttr", "quality", "sx", "alt"]);
|
|
20
|
+
const theme = (0, Theme_1.useTheme)();
|
|
21
|
+
const breakpoints = theme.breakpoints.values;
|
|
22
|
+
// Generate srcset based on each breakpoint width
|
|
23
|
+
const generateSrcSet = (baseUrl, breakpointWidths) => {
|
|
24
|
+
var _a;
|
|
25
|
+
// Check if URL already has query parameters
|
|
26
|
+
if (baseUrl.includes('?')) {
|
|
27
|
+
return '';
|
|
28
|
+
}
|
|
29
|
+
// Check file extension
|
|
30
|
+
const fileExtension = (_a = baseUrl.split('.').pop()) === null || _a === void 0 ? void 0 : _a.toLowerCase();
|
|
31
|
+
const supportedExtensions = ['png', 'jpg', 'jpeg', 'webp', 'gif'];
|
|
32
|
+
if (!fileExtension || !supportedExtensions.includes(fileExtension)) {
|
|
33
|
+
return '';
|
|
34
|
+
}
|
|
35
|
+
// Get unique widths and their 2x versions
|
|
36
|
+
const widths = new Set(Object.values(breakpointWidths)
|
|
37
|
+
.flatMap((width) => [width, width * 2])
|
|
38
|
+
.sort((a, b) => a - b));
|
|
39
|
+
return Array.from(widths)
|
|
40
|
+
.map((width) => {
|
|
41
|
+
const resizeParams = `?imageFilter=resize&w=${Math.round(width)}&q=${quality}&f=webp`;
|
|
42
|
+
return `${baseUrl}${resizeParams} ${width}w`;
|
|
43
|
+
})
|
|
44
|
+
.join(', ');
|
|
45
|
+
};
|
|
46
|
+
// Generate sizes attribute based on breakpoint widths
|
|
47
|
+
const generateSizes = (breakpointWidths) => {
|
|
48
|
+
if (!breakpointWidths) {
|
|
49
|
+
return '';
|
|
50
|
+
}
|
|
51
|
+
const entries = Object.entries(breakpointWidths);
|
|
52
|
+
return entries
|
|
53
|
+
.sort(([a], [b]) => breakpoints[a] - breakpoints[b])
|
|
54
|
+
.map(([breakpoint, width], index) => {
|
|
55
|
+
// Check if breakpoint exists in theme breakpoints
|
|
56
|
+
if (!(breakpoint in breakpoints)) {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
if (index === entries.length - 1) {
|
|
60
|
+
return `${width}px`;
|
|
61
|
+
}
|
|
62
|
+
return `(max-width: ${breakpoints[breakpoint]}px) ${width}px`;
|
|
63
|
+
})
|
|
64
|
+
.filter((size) => size !== null)
|
|
65
|
+
.join(', ');
|
|
66
|
+
};
|
|
67
|
+
return ((0, jsx_runtime_1.jsx)(material_1.Box, Object.assign({ component: "img", src: src, srcSet: generateSrcSet(src, sizesAttr), sizes: generateSizes(sizesAttr), alt: alt !== null && alt !== void 0 ? alt : '', loading: "lazy", sx: sx }, props)));
|
|
68
|
+
}
|
|
@@ -17,8 +17,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.CustomComponentRenderer = void 0;
|
|
20
|
+
exports.ResponsiveImage = exports.CustomComponentRenderer = void 0;
|
|
21
21
|
require("../utils/inject-global-components");
|
|
22
22
|
var CustomComponentRenderer_1 = require("./CustomComponentRenderer");
|
|
23
23
|
Object.defineProperty(exports, "CustomComponentRenderer", { enumerable: true, get: function () { return __importDefault(CustomComponentRenderer_1).default; } });
|
|
24
24
|
__exportStar(require("./CustomComponentRenderer"), exports);
|
|
25
|
+
var ResponsiveImage_1 = require("./ResponsiveImage");
|
|
26
|
+
Object.defineProperty(exports, "ResponsiveImage", { enumerable: true, get: function () { return __importDefault(ResponsiveImage_1).default; } });
|