Skip to content

Commit b25ec3a

Browse files
committed
fix scale adjustment
1 parent c6aad06 commit b25ec3a

File tree

5 files changed

+45
-20
lines changed

5 files changed

+45
-20
lines changed

src/components/design-library-list/design-library-list-item.js

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,22 @@ const DesignLibraryListItem = forwardRef( ( props, ref ) => {
4646
const {
4747
blocks, enableBackground,
4848
shadowBodySizeRef, blocksForSubstitutionRef,
49-
adjustScale, onClickDesign,
49+
onClickDesign,
5050
} = usePreviewRenderer(
5151
previewProps, previewSize, plan, spacingSize,
5252
selectedTab, selectedNum, selectedData,
53-
ref, shadowRoot, setIsLoading
53+
ref, hostRef, shadowRoot, isLoading, setIsLoading,
5454
)
5555

5656
const {
5757
onMouseOut, onMouseOver, onMouseDown,
5858
} = useAutoScroll( hostRef, shadowBodySizeRef, selectedTab )
5959

6060
const getDesignPreviewSize = () => {
61+
if ( ! shadowRoot || isLoading ) {
62+
return 0
63+
}
64+
6165
return selectedNum && selectedData ? selectedData.selectedPreviewSize.preview
6266
: ( enableBackground ? previewSize.heightBackground : previewSize.heightNoBackground )
6367
}
@@ -106,11 +110,10 @@ const DesignLibraryListItem = forwardRef( ( props, ref ) => {
106110
} }
107111
>
108112
<div className="stk-block-design__host" ref={ hostRef }>
109-
{ shadowRoot && <DesignPreview
113+
{ shadowRoot && ! isLoading && <DesignPreview
110114
blocks={ blocks }
111115
shadowRoot={ shadowRoot }
112116
selectedTab={ selectedTab }
113-
adjustScale={ adjustScale }
114117
onMouseDown={ onMouseDown }
115118
/> }
116119
</div>

src/components/design-library-list/design-preview.js

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ export const DesignPreview = ( {
1313
blocks = '',
1414
shadowRoot,
1515
selectedTab,
16-
adjustScale = NOOP,
1716
onMouseDown = NOOP,
1817
} ) => {
1918
const ref = useRef( null )
@@ -72,11 +71,6 @@ export const DesignPreview = ( {
7271
}
7372
}, [ selectedTab ] )
7473

75-
useEffect( () => {
76-
// The scale might not be correct on first load, so adjust it again to be sure.
77-
setTimeout( adjustScale, 100 )
78-
}, [] )
79-
8074
const shadowBodyClasses = classnames( applyFilters( 'stackable.global-styles.classnames', [
8175
'entry-content',
8276
] ), {

src/components/design-library-list/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ const DesignLibraryList = props => {
5050
{ isBusy && <Spinner style={ { display: 'block', margin: '0 auto' } } /> }
5151
{ ! isBusy && <>
5252
<div className={ listClasses }>
53-
{ ( designs || [] ).map( ( design, i ) => {
53+
{ ( designs?.[ 0 ] ? [ designs[ 0 ] ] : [] ).map( ( design, i ) => {
5454
const selectedNum = selectedDesigns.indexOf( design.id || design.designId ) + 1
5555
const selectedData = selectedNum ? selectedDesignData[ selectedNum - 1 ] : null
5656

src/components/design-library-list/use-preview-renderer.js

Lines changed: 34 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ const DEFAULT_CONTENT = { ...DEFAULT }
3737
export const usePreviewRenderer = (
3838
props, previewSize, plan, spacingSize,
3939
selectedTab, selectedNum, selectedData,
40-
ref, shadowRoot, setIsLoading
40+
ref, hostRef, shadowRoot, isLoading, setIsLoading
4141
) => {
4242
const {
4343
designId,
@@ -61,23 +61,33 @@ export const usePreviewRenderer = (
6161
const hasBackgroundTargetRef = useRef( false )
6262
const initialRenderRef = useRef( null )
6363
const shadowBodySizeRef = useRef( null )
64-
const prevEnableBackgroundRef = useRef( false )
64+
const prevEnableBackgroundRef = useRef( null )
6565
const prevSelectedTabRef = useRef( selectedTab )
66+
const adjustAnimateFrameRef = useRef( null )
6667

6768
const siteTitle = useSelect( select => select( 'core' ).getEntityRecord( 'root', 'site' )?.title || 'InnovateCo', [] )
6869
const isDesignLibraryDevMode = devMode && localStorage.getItem( 'stk__design_library__dev_mode' ) === '1'
6970

7071
const addHasBackground = selectedTab === 'patterns'
7172

72-
const adjustScale = () => {
73-
const shouldAdjust = ref.current && shadowRoot &&
73+
const adjustScale = ( force = true ) => {
74+
const shouldAdjust = ref.current && hostRef.current && shadowRoot &&
7475
( ! selectedNum || // adjust if design is not selected
7576
prevSelectedTabRef.current !== selectedTab ) // adjust if selected tab changed even if design is selected
7677

7778
if ( shouldAdjust ) {
7879
const newPreviewSize = { ...previewSize }
7980
const newCardHeight = { ...cardHeight }
81+
8082
const cardRect = ref.current.getBoundingClientRect()
83+
const hostRect = hostRef.current.getBoundingClientRect()
84+
85+
const cardWidth = cardRect.width
86+
const hostWidth = hostRect.width
87+
88+
if ( ! force && cardWidth === hostWidth ) {
89+
return
90+
}
8191

8292
const shadowBody = shadowRoot.querySelector( 'body' )
8393
if ( shadowBody ) {
@@ -119,6 +129,9 @@ export const usePreviewRenderer = (
119129

120130
setTimeout( () => setCardHeight( newCardHeight ), 500 )
121131
}
132+
133+
cancelAnimationFrame( adjustAnimateFrameRef.current )
134+
adjustAnimateFrameRef.current = requestAnimationFrame( () => adjustScale( false ) )
122135
}
123136

124137
const renderPreview = ( blockContent = content ) => {
@@ -274,7 +287,8 @@ export const usePreviewRenderer = (
274287
useEffect( () => {
275288
if ( selectedNum === 0 && content && shadowRoot ) {
276289
renderPreview()
277-
setTimeout( adjustScale, 100 )
290+
cancelAnimationFrame( adjustAnimateFrameRef.current )
291+
adjustAnimateFrameRef.current = requestAnimationFrame( adjustScale )
278292
}
279293
}, [ selectedNum ] )
280294

@@ -285,7 +299,8 @@ export const usePreviewRenderer = (
285299

286300
if ( prevEnableBackgroundRef.current !== enableBackground ) {
287301
prevEnableBackgroundRef.current = enableBackground
288-
adjustScale()
302+
cancelAnimationFrame( adjustAnimateFrameRef.current )
303+
adjustAnimateFrameRef.current = requestAnimationFrame( adjustScale )
289304
}
290305
}, [ blocks ] )
291306

@@ -294,12 +309,22 @@ export const usePreviewRenderer = (
294309
if ( ! content || ! blocks.parsed || ! blocks.serialized ) {
295310
return
296311
}
297-
setTimeout( () => {
312+
313+
cancelAnimationFrame( adjustAnimateFrameRef.current )
314+
requestAnimationFrame( () => {
298315
adjustScale()
299316
prevSelectedTabRef.current = selectedTab
300-
}, 100 )
317+
} )
301318
}, [ content ] )
302319

320+
// cleanup any pending animation on unmount
321+
useEffect( () => {
322+
return () => {
323+
cancelAnimationFrame( adjustAnimateFrameRef.current )
324+
adjustAnimateFrameRef.current = null
325+
}
326+
}, [] )
327+
303328
const onClickDesign = () => {
304329
if ( ! isPro && plan !== 'free' ) {
305330
return
@@ -319,6 +344,6 @@ export const usePreviewRenderer = (
319344
return {
320345
blocks: blocks.serialized, enableBackground,
321346
shadowBodySizeRef, blocksForSubstitutionRef,
322-
adjustScale, onClickDesign,
347+
onClickDesign,
323348
}
324349
}

src/components/modal-design-library/editor.scss

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,9 @@
4545

4646
&.ugb-modal-design-library__full-pages {
4747
grid-template-rows: auto auto;
48+
.ugb-modal-design-library__designs {
49+
grid-row: 1 / 4;
50+
}
4851
}
4952
}
5053
.ugb-modal-design-library__sidebar {

0 commit comments

Comments
 (0)