framer-motion 5.5.4 → 5.5.5

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.
@@ -295,6 +295,12 @@ var motion = new Proxy(custom, {
295
295
 
296
296
  var MotionCanvasContext = React.createContext(undefined);
297
297
 
298
+ var devicePixelRatio = typeof window !== "undefined" ? window.devicePixelRatio : 1;
299
+ var calculateDpr = function (dpr) {
300
+ return Array.isArray(dpr)
301
+ ? popmotion.clamp(dpr[0], dpr[1], devicePixelRatio)
302
+ : dpr || devicePixelRatio;
303
+ };
298
304
  /**
299
305
  * This file contains a version of R3F's Canvas component that uses our projection
300
306
  * system for layout measurements instead of use-react-measure so we can keep the
@@ -368,7 +374,11 @@ function CanvasComponent(_a, forwardedRef) {
368
374
  if (size.width > 0 && size.height > 0) {
369
375
  fiber.render(React__namespace.createElement(ErrorBoundary, { set: setError },
370
376
  React__namespace.createElement(React__namespace.Suspense, { fallback: React__namespace.createElement(Block, { set: setBlock }) },
371
- React__namespace.createElement(MotionCanvasContext.Provider, { value: { dimensions: dimensions, layoutCamera: layoutCamera } },
377
+ React__namespace.createElement(MotionCanvasContext.Provider, { value: {
378
+ dimensions: dimensions,
379
+ layoutCamera: layoutCamera,
380
+ requestedDpr: calculateDpr(props.dpr),
381
+ } },
372
382
  React__namespace.createElement(useMotionValue.MotionConfigContext.Provider, { value: configContext },
373
383
  React__namespace.createElement(useMotionValue.MotionContext.Provider, { value: motionContext }, children))))), canvasRef.current, tslib.__assign(tslib.__assign({}, props), { dpr: dpr || props.dpr, size: size, events: events || fiber.events }));
374
384
  }
@@ -392,7 +402,7 @@ function useLayoutCamera(_a, updateCamera) {
392
402
  var _b = _a.makeDefault, makeDefault = _b === void 0 ? true : _b;
393
403
  var context = React.useContext(MotionCanvasContext);
394
404
  heyListen.invariant(Boolean(context), "No MotionCanvas detected. Replace Canvas from @react-three/fiber with MotionCanvas from framer-motion.");
395
- var _c = context, dimensions = _c.dimensions, layoutCamera = _c.layoutCamera;
405
+ var _c = context, dimensions = _c.dimensions, layoutCamera = _c.layoutCamera, requestedDpr = _c.requestedDpr;
396
406
  var advance = fiber.useThree(function (three) { return three.advance; });
397
407
  var set = fiber.useThree(function (three) { return three.set; });
398
408
  var camera = fiber.useThree(function (three) { return three.camera; });
@@ -418,7 +428,7 @@ function useLayoutCamera(_a, updateCamera) {
418
428
  */
419
429
  var removeLayoutMeasureListener = projection.addEventListener("measure", function (newLayout) {
420
430
  var newSize = calcBoxSize(newLayout);
421
- var dpr = window.devicePixelRatio;
431
+ var dpr = requestedDpr;
422
432
  var _a = dimensions.current.size, width = _a.width, height = _a.height;
423
433
  var xScale = width / newSize.width;
424
434
  var yScale = height / newSize.height;
@@ -443,7 +453,7 @@ function useLayoutCamera(_a, updateCamera) {
443
453
  updateCamera(newSize);
444
454
  dimensions.current = { size: newSize };
445
455
  gl.setSize(newSize.width, newSize.height);
446
- gl.setPixelRatio(window.devicePixelRatio);
456
+ gl.setPixelRatio(requestedDpr);
447
457
  }, 50);
448
458
  }
449
459
  });
@@ -8,7 +8,14 @@ import { useIsomorphicLayoutEffect } from '../../utils/use-isomorphic-effect.mjs
8
8
  import { MotionConfigContext } from '../../context/MotionConfigContext.mjs';
9
9
  import { MotionCanvasContext } from './MotionCanvasContext.mjs';
10
10
  import { useForceUpdate } from '../../utils/use-force-update.mjs';
11
+ import { clamp } from 'popmotion';
11
12
 
13
+ var devicePixelRatio = typeof window !== "undefined" ? window.devicePixelRatio : 1;
14
+ var calculateDpr = function (dpr) {
15
+ return Array.isArray(dpr)
16
+ ? clamp(dpr[0], dpr[1], devicePixelRatio)
17
+ : dpr || devicePixelRatio;
18
+ };
12
19
  /**
13
20
  * This file contains a version of R3F's Canvas component that uses our projection
14
21
  * system for layout measurements instead of use-react-measure so we can keep the
@@ -82,7 +89,11 @@ function CanvasComponent(_a, forwardedRef) {
82
89
  if (size.width > 0 && size.height > 0) {
83
90
  render(React.createElement(ErrorBoundary, { set: setError },
84
91
  React.createElement(React.Suspense, { fallback: React.createElement(Block, { set: setBlock }) },
85
- React.createElement(MotionCanvasContext.Provider, { value: { dimensions: dimensions, layoutCamera: layoutCamera } },
92
+ React.createElement(MotionCanvasContext.Provider, { value: {
93
+ dimensions: dimensions,
94
+ layoutCamera: layoutCamera,
95
+ requestedDpr: calculateDpr(props.dpr),
96
+ } },
86
97
  React.createElement(MotionConfigContext.Provider, { value: configContext },
87
98
  React.createElement(MotionContext.Provider, { value: motionContext }, children))))), canvasRef.current, __assign(__assign({}, props), { dpr: dpr || props.dpr, size: size, events: events$1 || events }));
88
99
  }
@@ -17,7 +17,7 @@ function useLayoutCamera(_a, updateCamera) {
17
17
  var _b = _a.makeDefault, makeDefault = _b === void 0 ? true : _b;
18
18
  var context = useContext(MotionCanvasContext);
19
19
  invariant(Boolean(context), "No MotionCanvas detected. Replace Canvas from @react-three/fiber with MotionCanvas from framer-motion.");
20
- var _c = context, dimensions = _c.dimensions, layoutCamera = _c.layoutCamera;
20
+ var _c = context, dimensions = _c.dimensions, layoutCamera = _c.layoutCamera, requestedDpr = _c.requestedDpr;
21
21
  var advance = useThree(function (three) { return three.advance; });
22
22
  var set = useThree(function (three) { return three.set; });
23
23
  var camera = useThree(function (three) { return three.camera; });
@@ -43,7 +43,7 @@ function useLayoutCamera(_a, updateCamera) {
43
43
  */
44
44
  var removeLayoutMeasureListener = projection.addEventListener("measure", function (newLayout) {
45
45
  var newSize = calcBoxSize(newLayout);
46
- var dpr = window.devicePixelRatio;
46
+ var dpr = requestedDpr;
47
47
  var _a = dimensions.current.size, width = _a.width, height = _a.height;
48
48
  var xScale = width / newSize.width;
49
49
  var yScale = height / newSize.height;
@@ -68,7 +68,7 @@ function useLayoutCamera(_a, updateCamera) {
68
68
  updateCamera(newSize);
69
69
  dimensions.current = { size: newSize };
70
70
  gl.setSize(newSize.width, newSize.height);
71
- gl.setPixelRatio(window.devicePixelRatio);
71
+ gl.setPixelRatio(requestedDpr);
72
72
  }, 50);
73
73
  }
74
74
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "framer-motion",
3
- "version": "5.5.4",
3
+ "version": "5.5.5",
4
4
  "description": "A simple and powerful React animation library",
5
5
  "main": "dist/cjs/index.js",
6
6
  "module": "dist/es/index.mjs",
@@ -9,5 +9,6 @@ export declare type SetDimensions = (state: DimensionsState) => void;
9
9
  export interface MotionCanvasContextProps {
10
10
  layoutCamera: RefObject<any>;
11
11
  dimensions: MutableRefObject<DimensionsState>;
12
+ requestedDpr: number;
12
13
  }
13
14
  export declare const MotionCanvasContext: import("react").Context<MotionCanvasContextProps | undefined>;