@crystaldesign/widget-library 26.11.0-beta.3 → 26.11.0-beta.31

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.
@@ -823,7 +823,8 @@ function useGallery(_ref) {
823
823
  add3DImageAsFallback = _ref$config.add3DImageAsFallback,
824
824
  currentProductId = _ref.currentProductId,
825
825
  setCurrentProductId = _ref.setCurrentProductId,
826
- disableAnimation = _ref.disableAnimation;
826
+ disableAnimation = _ref.disableAnimation,
827
+ initialRenderJobId = _ref.initialRenderJobId;
827
828
  var _useDivaCore = useDivaCore(),
828
829
  baseSirvUrls = _useDivaCore.state.apiConfig.baseSirvUrls;
829
830
  var _useState = useState(null),
@@ -834,7 +835,18 @@ function useGallery(_ref) {
834
835
  _useState4 = _slicedToArray(_useState3, 2),
835
836
  swiper = _useState4[0],
836
837
  setSwiper = _useState4[1];
837
- var _useState5 = useState(0),
838
+ var medias = useMedia({
839
+ products: products,
840
+ functionTypes: functionTypes,
841
+ add2DImage: add2DImage,
842
+ add3DImageAsFallback: add3DImageAsFallback
843
+ });
844
+ var _useState5 = useState(function () {
845
+ var index = initialRenderJobId ? medias.findIndex(function (media) {
846
+ return media.renderJob === initialRenderJobId;
847
+ }) : -1;
848
+ return index === -1 ? 0 : index;
849
+ }),
838
850
  _useState6 = _slicedToArray(_useState5, 2),
839
851
  currentMediaIndex = _useState6[0],
840
852
  setCurrentMediaIndex = _useState6[1];
@@ -842,12 +854,30 @@ function useGallery(_ref) {
842
854
  _useState8 = _slicedToArray(_useState7, 2),
843
855
  swiperIsInitialized = _useState8[0],
844
856
  setSwiperIsInitialized = _useState8[1];
845
- var medias = useMedia({
846
- products: products,
847
- functionTypes: functionTypes,
848
- add2DImage: add2DImage,
849
- add3DImageAsFallback: add3DImageAsFallback
850
- });
857
+
858
+ // Re-sync currentMediaIndex to the media matching initialRenderJobId whenever medias or
859
+ // initialRenderJobId change, including the empty-to-populated transition (the initial useState
860
+ // above only runs once and can't find a match if medias hasn't loaded yet).
861
+ useEffect(function () {
862
+ if (!initialRenderJobId) return;
863
+ var mediaIndex = medias.findIndex(function (media) {
864
+ return media.renderJob === initialRenderJobId;
865
+ });
866
+ if (mediaIndex === -1) return;
867
+ if (mediaIndex !== currentMediaIndex) {
868
+ setCurrentMediaIndex(mediaIndex);
869
+ }
870
+ [swiper, thumbsSwiper].forEach(function (swiperInstance) {
871
+ if (swiperInstance && swiperInstance.realIndex !== mediaIndex) {
872
+ var _swiperInstance$param;
873
+ if ((_swiperInstance$param = swiperInstance.params) !== null && _swiperInstance$param !== void 0 && _swiperInstance$param.loop) {
874
+ swiperInstance.slideToLoop(mediaIndex, 0);
875
+ } else {
876
+ swiperInstance.slideTo(mediaIndex, 0);
877
+ }
878
+ }
879
+ });
880
+ }, [medias, initialRenderJobId, swiper, thumbsSwiper]);
851
881
 
852
882
  // Update currentMediaIndex when currentProductIndex changes from outside
853
883
  useEffect(function () {
@@ -1441,6 +1471,7 @@ var Gallery = function Gallery(props) {
1441
1471
  className: classNames('gallery-main', props.nestedSwiper ? 'gallery-main-popup-swiper' : ''),
1442
1472
  speed: props.disableAnimation ? 0 : 500
1443
1473
  }, props.config.sliderProp), {}, {
1474
+ initialSlide: currentIndex,
1444
1475
  loop: true,
1445
1476
  children: medias.map(function (media, i) {
1446
1477
  return /*#__PURE__*/jsx(SwiperSlide, {
@@ -1463,6 +1494,7 @@ var Gallery = function Gallery(props) {
1463
1494
  modules: [Navigation, Thumbs],
1464
1495
  className: "gallery-thumb"
1465
1496
  }, props.config.thumbSliderProp), {}, {
1497
+ initialSlide: currentIndex,
1466
1498
  children: medias.map(function (media, i) {
1467
1499
  var _media$url;
1468
1500
  return /*#__PURE__*/jsx(SwiperSlide, {
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Gallery/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AASvC,cAAc,SAAS,CAAC;AAKxB,eAAO,MAAM,OAAO,UAAW,YAAY,sBA8D1C,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Gallery/index.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA4B,MAAM,OAAO,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AASvC,cAAc,SAAS,CAAC;AAKxB,eAAO,MAAM,OAAO,UAAW,YAAY,sBAgE1C,CAAC"}
@@ -26,6 +26,8 @@ export interface GalleryProps {
26
26
  disableAnimation?: boolean;
27
27
  setCurrentMedia?: (m: MediaWithProductIndex) => void;
28
28
  nestedSwiper?: boolean;
29
+ /** Id of the render job whose media item to open on, instead of the first one. Falls back to the first item if no media matches. */
30
+ initialRenderJobId?: string;
29
31
  }
30
32
  export interface MediaWithProductIndex extends Media {
31
33
  productIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Gallery/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,aAAc,SAAQ,iBAAiB,EAAE,eAAe;IACvE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,qBAAsB,SAAQ,KAAK;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../src/components/Gallery/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,WAAW,aAAc,SAAQ,iBAAiB,EAAE,eAAe;IACvE,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,UAAU,CAAC,EAAE,WAAW,CAAC;IACzB,eAAe,CAAC,EAAE,WAAW,CAAC;IAC9B,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,kBAAmB,SAAQ,iBAAiB;IAC3D,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,eAAe,CAAC,EAAE,CAAC,CAAC,EAAE,qBAAqB,KAAK,IAAI,CAAC;IACrD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,oIAAoI;IACpI,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,qBAAsB,SAAQ,KAAK;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -1,6 +1,6 @@
1
1
  import { GalleryProps, MediaWithProductIndex } from './types';
2
2
  import { SwiperClass } from 'swiper/react';
3
- export default function useGallery({ products, config: { functionTypes, add2DImage, add3DImageAsFallback }, currentProductId, setCurrentProductId, disableAnimation, }: GalleryProps): {
3
+ export default function useGallery({ products, config: { functionTypes, add2DImage, add3DImageAsFallback }, currentProductId, setCurrentProductId, disableAnimation, initialRenderJobId, }: GalleryProps): {
4
4
  medias: MediaWithProductIndex[];
5
5
  sirvLoaded: boolean;
6
6
  thumbsSwiper: SwiperClass | null;
@@ -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,EACnB,gBAAgB,GACjB,EAAE,YAAY;;;;;;;;4BAoDkB,WAAW;uCAoBA,GAAG;EA8B9C"}
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,EACnB,gBAAgB,EAChB,kBAAkB,GACnB,EAAE,YAAY;;;;;;;;4BA+EkB,WAAW;uCAoBA,GAAG;EA8B9C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=useGallery.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useGallery.test.d.ts","sourceRoot":"","sources":["../../../../../../../src/tests/components/Gallery/useGallery.test.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "name": "@crystaldesign/widget-library",
3
- "version": "26.11.0-beta.3",
3
+ "version": "26.11.0-beta.31",
4
+ "description": "Shared infrastructure for the embeddable widgets: components, hooks, types and utils.",
4
5
  "license": "MIT",
5
6
  "scripts": {
6
7
  "storybook": "storybook dev -p 6006",
@@ -15,7 +16,7 @@
15
16
  "@storybook/react": "7.0.2",
16
17
  "@storybook/react-webpack5": "7.0.2",
17
18
  "@storybook/testing-library": "0.2.2",
18
- "@testing-library/jest-dom": "^6.5.0",
19
+ "@testing-library/jest-dom": "^7.0.1",
19
20
  "@testing-library/react": "^16.0.1",
20
21
  "react": "^18.3.1",
21
22
  "react-dom": "^18.3.1",
@@ -35,5 +36,5 @@
35
36
  "suiteName": "widget-library",
36
37
  "outputDirectory": "./test-reports"
37
38
  },
38
- "gitHead": "ae30511f2c6a75c3f34786d056cbd7dfac42d07a"
39
+ "gitHead": "baa35f906d86d73097b79f3fa0563a76482717a4"
39
40
  }