Skip to content

Commit 9cc1880

Browse files
committed
fix: change globalObject value in build
1 parent ec5adeb commit 9cc1880

File tree

7 files changed

+32
-27
lines changed

7 files changed

+32
-27
lines changed

dist/index.d.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,3 @@ export interface ILayeredImageProps extends React.HTMLProps<HTMLDivElement> {
1111
shadowOpacity?: React.CSSProperties["opacity"]
1212
}
1313
export declare const LayeredImage: React.FC<ILayeredImageProps>
14-
export default LayeredImage

dist/index.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

dist/index.js.map

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/LayeredImage.tsx

Lines changed: 12 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,6 @@ interface Size {
88
height: number
99
}
1010

11-
interface Position {
12-
x: number
13-
y: number
14-
}
15-
1611
enum Interaction {
1712
None = "NONE",
1813
Resize = "RESIZE",
@@ -55,7 +50,6 @@ export const LayeredImage: React.FC<ILayeredImageProps> = ({
5550
style,
5651
}) => {
5752
const [size, setSize] = useState<Size>({ width: 0, height: 0 })
58-
const [scrollPosition, setScrollPosition] = useState<Position>({ x: 0, y: 0 })
5953
const [interaction, setInteraction] = useState<Interaction>(Interaction.None)
6054
const [loaded, setLoaded] = useState<number>(0)
6155
const [, setError] = useState<number>(0)
@@ -132,7 +126,18 @@ export const LayeredImage: React.FC<ILayeredImageProps> = ({
132126
preventDefault = false,
133127
) => {
134128
const { width, height } = _interaction === Interaction.Resize ? getDimensions() : size
135-
const { x: scrollLeft, y: scrollTop } = scrollPosition
129+
130+
const scrollLeft =
131+
document.documentElement.scrollLeft ||
132+
document.scrollingElement.scrollLeft ||
133+
window.scrollX ||
134+
window.pageXOffset
135+
// prettier-ignore
136+
const scrollTop =
137+
document.documentElement.scrollTop ||
138+
document.scrollingElement.scrollTop ||
139+
window.scrollY ||
140+
window.pageYOffset
136141

137142
const containerRect = elementsRef.current.container.current.getBoundingClientRect()
138143

@@ -231,20 +236,6 @@ export const LayeredImage: React.FC<ILayeredImageProps> = ({
231236

232237
useEffect(() => {
233238
const handleWindowResize = () => computeStyles(Interaction.Resize)
234-
const handleWindowScroll = () => {
235-
setScrollPosition({
236-
x:
237-
document.documentElement.scrollLeft ||
238-
document.scrollingElement.scrollLeft ||
239-
window.scrollX ||
240-
window.pageXOffset,
241-
y:
242-
document.documentElement.scrollTop ||
243-
document.scrollingElement.scrollTop ||
244-
window.scrollY ||
245-
window.pageYOffset,
246-
})
247-
}
248239

249240
layers.forEach((layer) => {
250241
const image = new Image()
@@ -255,11 +246,9 @@ export const LayeredImage: React.FC<ILayeredImageProps> = ({
255246
})
256247

257248
window.addEventListener("resize", handleWindowResize)
258-
window.addEventListener("scroll", handleWindowScroll)
259249

260250
return () => {
261251
window.removeEventListener("resize", handleWindowResize)
262-
window.removeEventListener("scroll", handleWindowScroll)
263252
}
264253
}, [])
265254

lib/utils.ts

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,13 @@
33
*/
44
export const applyStyles = (element: HTMLDivElement, styles: React.CSSProperties) => {
55
for (const [style, value] of Object.entries(styles)) {
6-
element.style[style] = value
6+
if (isSafariDesktop()) {
7+
element.style[style] = value
8+
} else {
9+
requestAnimationFrame(() => {
10+
element.style[style] = value
11+
})
12+
}
713
}
814
}
915

@@ -21,3 +27,12 @@ export const clamp = (value: number, min: number, max: number) => {
2127
*/
2228
// eslint-disable-next-line @typescript-eslint/ban-types
2329
export const isFunction = (value: unknown): value is Function => typeof value === "function"
30+
31+
/**
32+
* Detect whether the current browser is a desktop version of Safari.
33+
*/
34+
export const isSafariDesktop = () => {
35+
const { userAgent, vendor } = navigator
36+
37+
return /Safari/i.test(userAgent) && /Apple Computer/.test(vendor) && !/Mobi|Android/i.test(userAgent)
38+
}

webpack.dev.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ module.exports = {
1313
filename: "index.js",
1414
library: "react-layered-image",
1515
libraryTarget: "umd",
16+
globalObject: "this",
1617
},
1718
devServer: {
1819
contentBase: "./example/build",

webpack.prod.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ module.exports = {
1515
filename: "index.js",
1616
library: "react-layered-image",
1717
libraryTarget: "umd",
18+
globalObject: "this",
1819
},
1920
devtool: "source-map",
2021
externals: {

0 commit comments

Comments
 (0)