@crystaldesign/widget-library 25.9.0-rc.9 → 25.10.0-beta.10
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/build/esm/index.js +125 -28
- package/build/types/widget-library/src/components/Gallery/useGallery.d.ts.map +1 -1
- package/build/types/widget-library/src/components/MediaItem/ImageItem/index.d.ts +12 -0
- package/build/types/widget-library/src/components/MediaItem/ImageItem/index.d.ts.map +1 -0
- package/build/types/widget-library/src/components/MediaItem/index.d.ts +1 -0
- package/build/types/widget-library/src/components/MediaItem/index.d.ts.map +1 -1
- package/package.json +2 -2
package/build/esm/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useEffect, useMemo, useCallback, useState,
|
|
1
|
+
import { useEffect, useMemo, useCallback, useState, forwardRef, useRef } from 'react';
|
|
2
2
|
import { useDivaCore, getLogger, DivaError, useTranslation } from '@crystaldesign/diva-core';
|
|
3
3
|
import _asyncToGenerator from '@babel/runtime/helpers/asyncToGenerator';
|
|
4
4
|
import _slicedToArray from '@babel/runtime/helpers/slicedToArray';
|
|
@@ -805,23 +805,23 @@ function useGallery(_ref) {
|
|
|
805
805
|
add2DImage: add2DImage,
|
|
806
806
|
add3DImageAsFallback: add3DImageAsFallback
|
|
807
807
|
});
|
|
808
|
-
useRef(false);
|
|
809
808
|
|
|
810
809
|
// Update currentMediaIndex when currentProductIndex changes from outside
|
|
811
810
|
useEffect(function () {
|
|
812
811
|
var _medias$currentMediaI;
|
|
813
812
|
if (currentProductId !== undefined && ((_medias$currentMediaI = medias[currentMediaIndex]) === null || _medias$currentMediaI === void 0 ? void 0 : _medias$currentMediaI.productId) !== currentProductId) {
|
|
814
|
-
// Find the first media index that corresponds to this product index
|
|
815
813
|
var mediaIndex = medias.findIndex(function (media) {
|
|
816
814
|
return media.productId === currentProductId;
|
|
817
815
|
});
|
|
818
|
-
if (mediaIndex !== -1 && mediaIndex !== currentMediaIndex) {
|
|
819
|
-
var _swiper$params;
|
|
816
|
+
if (mediaIndex !== -1 && mediaIndex !== currentMediaIndex && swiper) {
|
|
820
817
|
setCurrentMediaIndex(mediaIndex);
|
|
821
|
-
if (swiper
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
818
|
+
if (swiper.realIndex !== mediaIndex) {
|
|
819
|
+
var _swiper$params;
|
|
820
|
+
if ((_swiper$params = swiper.params) !== null && _swiper$params !== void 0 && _swiper$params.loop) {
|
|
821
|
+
swiper.slideToLoop(mediaIndex, 0);
|
|
822
|
+
} else {
|
|
823
|
+
swiper.slideTo(mediaIndex, 0);
|
|
824
|
+
}
|
|
825
825
|
}
|
|
826
826
|
}
|
|
827
827
|
}
|
|
@@ -849,23 +849,19 @@ function useGallery(_ref) {
|
|
|
849
849
|
sirvLoaded = _useSirv.sirvLoaded;
|
|
850
850
|
var onSlideChange = function onSlideChange(swiper) {
|
|
851
851
|
if (swiper.el.classList.contains('gallery-main-nested-swiper')) return;
|
|
852
|
-
|
|
853
|
-
|
|
852
|
+
var newMediaIndex = swiper.realIndex;
|
|
853
|
+
var media = medias[newMediaIndex];
|
|
854
854
|
if (!swiperIsInitialized) {
|
|
855
855
|
setSwiperIsInitialized(true);
|
|
856
856
|
return;
|
|
857
857
|
}
|
|
858
|
-
if (
|
|
859
|
-
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
setCurrentProductId(media.productId);
|
|
858
|
+
if (newMediaIndex !== currentMediaIndex) {
|
|
859
|
+
setCurrentMediaIndex(newMediaIndex);
|
|
860
|
+
if (setCurrentProductId && (media === null || media === void 0 ? void 0 : media.productId) !== currentProductId) {
|
|
861
|
+
setCurrentProductId(media.productId);
|
|
862
|
+
}
|
|
864
863
|
}
|
|
865
864
|
};
|
|
866
|
-
|
|
867
|
-
// Get the current product index based on the current media index
|
|
868
|
-
medias[currentMediaIndex];
|
|
869
865
|
return {
|
|
870
866
|
medias: medias,
|
|
871
867
|
sirvLoaded: sirvLoaded,
|
|
@@ -976,6 +972,108 @@ var ArViewer = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
976
972
|
});
|
|
977
973
|
});
|
|
978
974
|
|
|
975
|
+
var ImageItem = function ImageItem(_ref) {
|
|
976
|
+
var url = _ref.url,
|
|
977
|
+
onClick = _ref.onClick,
|
|
978
|
+
className = _ref.className,
|
|
979
|
+
sirvProps = _ref.sirvProps;
|
|
980
|
+
var _useState = useState(''),
|
|
981
|
+
_useState2 = _slicedToArray(_useState, 2),
|
|
982
|
+
loadedMediaUrl = _useState2[0],
|
|
983
|
+
setLoadedMediaUrl = _useState2[1];
|
|
984
|
+
var _useState3 = useState(false),
|
|
985
|
+
_useState4 = _slicedToArray(_useState3, 2),
|
|
986
|
+
hasError = _useState4[0],
|
|
987
|
+
setHasError = _useState4[1];
|
|
988
|
+
useEffect(function () {
|
|
989
|
+
if (!url) return;
|
|
990
|
+
|
|
991
|
+
// Don't start loading if we're already loading the same URL
|
|
992
|
+
if (url === loadedMediaUrl && !hasError) return;
|
|
993
|
+
var preloadImage = /*#__PURE__*/function () {
|
|
994
|
+
var _ref2 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee(imageUrl) {
|
|
995
|
+
return _regeneratorRuntime.wrap(function _callee$(_context) {
|
|
996
|
+
while (1) switch (_context.prev = _context.next) {
|
|
997
|
+
case 0:
|
|
998
|
+
return _context.abrupt("return", new Promise(function (resolve) {
|
|
999
|
+
var img = new Image();
|
|
1000
|
+
img.onload = function () {
|
|
1001
|
+
resolve(true); // Successfully loaded
|
|
1002
|
+
};
|
|
1003
|
+
img.src = imageUrl;
|
|
1004
|
+
}));
|
|
1005
|
+
case 1:
|
|
1006
|
+
case "end":
|
|
1007
|
+
return _context.stop();
|
|
1008
|
+
}
|
|
1009
|
+
}, _callee);
|
|
1010
|
+
}));
|
|
1011
|
+
return function preloadImage(_x) {
|
|
1012
|
+
return _ref2.apply(this, arguments);
|
|
1013
|
+
};
|
|
1014
|
+
}();
|
|
1015
|
+
var preloadAndSet = /*#__PURE__*/function () {
|
|
1016
|
+
var _ref3 = _asyncToGenerator(/*#__PURE__*/_regeneratorRuntime.mark(function _callee2() {
|
|
1017
|
+
var success, finalUrl, urlObj;
|
|
1018
|
+
return _regeneratorRuntime.wrap(function _callee2$(_context2) {
|
|
1019
|
+
while (1) switch (_context2.prev = _context2.next) {
|
|
1020
|
+
case 0:
|
|
1021
|
+
setHasError(false);
|
|
1022
|
+
_context2.next = 3;
|
|
1023
|
+
return preloadImage(url);
|
|
1024
|
+
case 3:
|
|
1025
|
+
success = _context2.sent;
|
|
1026
|
+
if (success) {
|
|
1027
|
+
finalUrl = url;
|
|
1028
|
+
if (sirvProps && url) {
|
|
1029
|
+
urlObj = new URL(url);
|
|
1030
|
+
Object.entries(sirvProps).forEach(function (_ref4) {
|
|
1031
|
+
var _ref5 = _slicedToArray(_ref4, 2),
|
|
1032
|
+
key = _ref5[0],
|
|
1033
|
+
value = _ref5[1];
|
|
1034
|
+
urlObj.searchParams.append(key, value);
|
|
1035
|
+
});
|
|
1036
|
+
finalUrl = urlObj.toString();
|
|
1037
|
+
}
|
|
1038
|
+
setLoadedMediaUrl(finalUrl);
|
|
1039
|
+
setHasError(false);
|
|
1040
|
+
} else {
|
|
1041
|
+
setHasError(true);
|
|
1042
|
+
}
|
|
1043
|
+
case 5:
|
|
1044
|
+
case "end":
|
|
1045
|
+
return _context2.stop();
|
|
1046
|
+
}
|
|
1047
|
+
}, _callee2);
|
|
1048
|
+
}));
|
|
1049
|
+
return function preloadAndSet() {
|
|
1050
|
+
return _ref3.apply(this, arguments);
|
|
1051
|
+
};
|
|
1052
|
+
}();
|
|
1053
|
+
preloadAndSet();
|
|
1054
|
+
}, [url]);
|
|
1055
|
+
|
|
1056
|
+
// Don't render anything if no URL is provided
|
|
1057
|
+
if (!url) {
|
|
1058
|
+
return null;
|
|
1059
|
+
}
|
|
1060
|
+
|
|
1061
|
+
// Only render the image if we have a loaded URL
|
|
1062
|
+
if (loadedMediaUrl) {
|
|
1063
|
+
return /*#__PURE__*/jsx("img", {
|
|
1064
|
+
className: classNames('diva-widget-mediaitem', className),
|
|
1065
|
+
src: loadedMediaUrl,
|
|
1066
|
+
style: {
|
|
1067
|
+
cursor: onClick ? 'pointer' : 'default'
|
|
1068
|
+
},
|
|
1069
|
+
onClick: onClick
|
|
1070
|
+
});
|
|
1071
|
+
}
|
|
1072
|
+
|
|
1073
|
+
// Fallback: render nothing if we don't have a loaded image
|
|
1074
|
+
return null;
|
|
1075
|
+
};
|
|
1076
|
+
|
|
979
1077
|
var MediaItem = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
980
1078
|
var _media$url;
|
|
981
1079
|
var media = _ref.media,
|
|
@@ -983,7 +1081,8 @@ var MediaItem = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
983
1081
|
videoAutoplay = _ref.videoAutoplay,
|
|
984
1082
|
config = _ref.config,
|
|
985
1083
|
isCurrentlyVisible = _ref.isCurrentlyVisible,
|
|
986
|
-
onClick = _ref.onClick
|
|
1084
|
+
onClick = _ref.onClick,
|
|
1085
|
+
className = _ref.className;
|
|
987
1086
|
var useSirv = false;
|
|
988
1087
|
var _useDivaCore = useDivaCore(),
|
|
989
1088
|
baseSirvUrls = _useDivaCore.state.apiConfig.baseSirvUrls;
|
|
@@ -1052,14 +1151,12 @@ var MediaItem = /*#__PURE__*/forwardRef(function (_ref, ref) {
|
|
|
1052
1151
|
})
|
|
1053
1152
|
});
|
|
1054
1153
|
}
|
|
1055
|
-
return /*#__PURE__*/jsx(
|
|
1056
|
-
|
|
1057
|
-
src: url,
|
|
1154
|
+
return /*#__PURE__*/jsx(ImageItem, {
|
|
1155
|
+
url: url,
|
|
1058
1156
|
onClick: onClick,
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
}, url);
|
|
1157
|
+
className: classNames('diva-widget-mediaitem', className),
|
|
1158
|
+
sirvProps: config.sirvProps
|
|
1159
|
+
});
|
|
1063
1160
|
});
|
|
1064
1161
|
|
|
1065
1162
|
var Thumb = function Thumb(_ref) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useGallery.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Gallery/useGallery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAI9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,EACR,MAAM,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAC3D,gBAAgB,EAChB,mBAAmB,GACpB,EAAE,YAAY;;;;;;;;
|
|
1
|
+
{"version":3,"file":"useGallery.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Gallery/useGallery.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAI9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,QAAQ,EACR,MAAM,EAAE,EAAE,aAAa,EAAE,UAAU,EAAE,oBAAoB,EAAE,EAC3D,gBAAgB,EAChB,mBAAmB,GACpB,EAAE,YAAY;;;;;;;;4BAuCkB,WAAW;EA6B3C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
type Props = {
|
|
3
|
+
url?: string;
|
|
4
|
+
onClick?: () => void;
|
|
5
|
+
className: string;
|
|
6
|
+
sirvProps?: {
|
|
7
|
+
[data: string]: string;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
declare const ImageItem: ({ url, onClick, className, sirvProps }: Props) => React.JSX.Element | null;
|
|
11
|
+
export default ImageItem;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/MediaItem/ImageItem/index.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAGnD,KAAK,KAAK,GAAG;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE;QAAE,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;CAAE,CAAC;AAE/G,QAAA,MAAM,SAAS,2CAA4C,KAAK,6BA6D/D,CAAC;AAEF,eAAe,SAAS,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/MediaItem/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAe,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAiB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/MediaItem/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAe,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,KAAwC,MAAM,OAAO,CAAC;AAE7D,OAAiB,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAIzD,KAAK,KAAK,GAAG;IACX,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,eAAe,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,SAAS,mFA4ErB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@crystaldesign/widget-library",
|
|
3
|
-
"version": "25.
|
|
3
|
+
"version": "25.10.0-beta.10",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"storybook": "storybook dev -p 6006",
|
|
@@ -36,5 +36,5 @@
|
|
|
36
36
|
"suiteName": "widget-library",
|
|
37
37
|
"outputDirectory": "./test-reports"
|
|
38
38
|
},
|
|
39
|
-
"gitHead": "
|
|
39
|
+
"gitHead": "4e37b1b537663ccc501f024d16a771a526c5cc44"
|
|
40
40
|
}
|