Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 7 additions & 1 deletion docs/api-reference/core/orthographic-view.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,15 @@ Distance of far clipping plane. Default `1000`.
To render, `OrthographicView` needs to be used together with a `viewState` with the following parameters:

* `target` (number[3], optional) - The world position at the center of the viewport. Default `[0, 0, 0]`.
* `zoom` (number | number[2], optional) - The zoom level of the viewport. `zoom: 0` maps one unit distance to one pixel on screen, and increasing `zoom` by `1` scales the same object to twice as large. For example `zoom: 1` is 2x the original size, `zoom: 2` is 4x, `zoom: 3` is 8x etc.. To apply independent zoom levels to the X and Y axes, supply an array `[zoomX, zoomY]`. Default `0`.
* `zoom` (number, optional) - The zoom level of the viewport. `zoom: 0` maps one unit distance to one pixel on screen, and increasing `zoom` by `1` scales the same object to twice as large. For example `zoom: 1` is 2x the original size, `zoom: 2` is 4x, `zoom: 3` is 8x etc.. To apply independent zoom levels to the X and Y axes, use `zoomX` and `zoomY`. Default `0`.
* `zoomX` (number, optional) - The zoom level along X axis. Overrides `zoom` if supplied.
* `zoomY` (number, optional) - The zoom level along Y axis. Overrides `zoom` if supplied.
* `minZoom` (number, optional) - The min zoom level of the viewport. Default `-Infinity`.
* `maxZoom` (number, optional) - The max zoom level of the viewport. Default `Infinity`.
* `minZoomX` (number, optional) - The min zoom level of the viewport on X axis. Default `minZoom`.
* `maxZoomX` (number, optional) - The max zoom level of the viewport on X axis. Default `maxZoom`.
* `minZoomY` (number, optional) - The min zoom level of the viewport on Y axis. Default `minZoom`.
* `maxZoomY` (number, optional) - The max zoom level of the viewport on Y axis. Default `maxZoom`.


## Controller
Expand Down
27 changes: 27 additions & 0 deletions docs/upgrade-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,33 @@

## Upgrading to v9.3

### OrthographicView

Supplying a 2D array to `zoom` for per-axis zoom has been deprecated.

```ts
// Before
new Deck({
views: new OrthographicView({controller: {zoomAxis: 'X'}}),
viewState: {
target: [0, 0, 0],
zoom: [0, 2]
},
});

// After
new Deck({
views: new OrthographicView({controller: {zoomAxis: 'X'}}),
viewState: {
target: [0, 0, 0],
zoomX: 0,
zoomY: 2
},
});
```

`zoom: [number, number]` will continue to work for the rest of v9.x if `zoomX` and `zoomY` are undefined. However, if you mutate `zoom` in the `onViewStateChange` callback, the change will not be picked up because `OrthographicController` always returns `zoomX` and `zoomY` which override `zoom`.

### Widgets

The following widgets have breaking changes in v9.3:
Expand Down
6 changes: 2 additions & 4 deletions modules/core/src/controllers/orbit-controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export type OrbitStateProps = {
width: number;
height: number;
target?: number[];
zoom?: number | number[];
zoom?: number;
rotationX?: number;
rotationOrbit?: number;

Expand Down Expand Up @@ -378,9 +378,7 @@ export class OrbitState extends ViewState<OrbitState, OrbitStateProps, OrbitStat
// Ensure zoom is within specified range
const {maxZoom, minZoom, zoom, maxRotationX, minRotationX, rotationOrbit} = props;

props.zoom = Array.isArray(zoom)
? [clamp(zoom[0], minZoom, maxZoom), clamp(zoom[1], minZoom, maxZoom)]
: clamp(zoom, minZoom, maxZoom);
props.zoom = clamp(zoom, minZoom, maxZoom);

props.rotationX = clamp(props.rotationX, minRotationX, maxRotationX);
if (rotationOrbit < -180 || rotationOrbit > 180) {
Expand Down
Loading
Loading