@tsdraw/core 0.8.4 → 0.8.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.
- package/dist/index.cjs +15 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +14 -3
- package/dist/index.d.ts +14 -3
- package/dist/index.js +14 -8
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -249,8 +249,13 @@ function setViewport(viewport, updater) {
|
|
|
249
249
|
function panViewport(viewport, dx, dy) {
|
|
250
250
|
return { ...viewport, x: viewport.x + dx, y: viewport.y + dy };
|
|
251
251
|
}
|
|
252
|
-
|
|
253
|
-
|
|
252
|
+
var DEFAULT_ZOOM_RANGE = { min: 0.1, max: 4 };
|
|
253
|
+
function clampZoom(zoom, range) {
|
|
254
|
+
const { min, max } = range ?? DEFAULT_ZOOM_RANGE;
|
|
255
|
+
return Math.max(min, Math.min(max, zoom));
|
|
256
|
+
}
|
|
257
|
+
function zoomViewport(viewport, factor, centerX, centerY, zoomRange) {
|
|
258
|
+
const zoom = clampZoom(viewport.zoom * factor, zoomRange);
|
|
254
259
|
if (centerX == null || centerY == null) {
|
|
255
260
|
return { ...viewport, zoom };
|
|
256
261
|
}
|
|
@@ -305,7 +310,8 @@ var SLIDE_FRICTION = 0.92;
|
|
|
305
310
|
var SLIDE_MIN_SPEED = 0.01;
|
|
306
311
|
var SLIDE_MAX_SPEED = 2;
|
|
307
312
|
var SLIDE_MIN_VELOCITY_TO_START = 0.1;
|
|
308
|
-
function startCameraSlide(session, applyPan, onFrame) {
|
|
313
|
+
function startCameraSlide(session, applyPan, onFrame, slideOptions) {
|
|
314
|
+
const friction = slideOptions?.friction ?? SLIDE_FRICTION;
|
|
309
315
|
const timeSinceLastMove = performance.now() - session.lastMoveTime;
|
|
310
316
|
const FRAME_DURATION = 16;
|
|
311
317
|
const decayFactor = Math.pow(1 - VELOCITY_LERP_FACTOR, timeSinceLastMove / FRAME_DURATION);
|
|
@@ -325,7 +331,7 @@ function startCameraSlide(session, applyPan, onFrame) {
|
|
|
325
331
|
lastTime = now;
|
|
326
332
|
applyPan(dirX * currentSpeed * elapsed, dirY * currentSpeed * elapsed);
|
|
327
333
|
onFrame();
|
|
328
|
-
currentSpeed *=
|
|
334
|
+
currentSpeed *= friction;
|
|
329
335
|
if (currentSpeed < SLIDE_MIN_SPEED) {
|
|
330
336
|
rafId = 0;
|
|
331
337
|
return;
|
|
@@ -1711,7 +1717,7 @@ var Editor = class {
|
|
|
1711
1717
|
historyBatchChanged = false;
|
|
1712
1718
|
// Creates a new editor instance with the given options (with defaults if not provided)
|
|
1713
1719
|
constructor(opts = {}) {
|
|
1714
|
-
this.options = { dragDistanceSquared: opts.dragDistanceSquared ?? DRAG_DISTANCE_SQUARED };
|
|
1720
|
+
this.options = { dragDistanceSquared: opts.dragDistanceSquared ?? DRAG_DISTANCE_SQUARED, zoomRange: opts.zoomRange };
|
|
1715
1721
|
this.lastDocumentSnapshot = this.getDocumentSnapshot();
|
|
1716
1722
|
this.store.listen(() => {
|
|
1717
1723
|
this.captureDocumentHistory();
|
|
@@ -1825,7 +1831,7 @@ var Editor = class {
|
|
|
1825
1831
|
this.viewport = {
|
|
1826
1832
|
x: partial.x ?? this.viewport.x,
|
|
1827
1833
|
y: partial.y ?? this.viewport.y,
|
|
1828
|
-
zoom:
|
|
1834
|
+
zoom: clampZoom(rawZoom, this.options.zoomRange)
|
|
1829
1835
|
};
|
|
1830
1836
|
this.emitChange();
|
|
1831
1837
|
}
|
|
@@ -1836,7 +1842,7 @@ var Editor = class {
|
|
|
1836
1842
|
});
|
|
1837
1843
|
}
|
|
1838
1844
|
zoomAt(factor, screenX, screenY) {
|
|
1839
|
-
this.viewport = zoomViewport(this.viewport, factor, screenX, screenY);
|
|
1845
|
+
this.viewport = zoomViewport(this.viewport, factor, screenX, screenY, this.options.zoomRange);
|
|
1840
1846
|
this.emitChange();
|
|
1841
1847
|
}
|
|
1842
1848
|
deleteShapes(ids) {
|
|
@@ -2260,6 +2266,7 @@ exports.CanvasRenderer = CanvasRenderer;
|
|
|
2260
2266
|
exports.CircleDrawingState = CircleDrawingState;
|
|
2261
2267
|
exports.CircleIdleState = CircleIdleState;
|
|
2262
2268
|
exports.DEFAULT_COLORS = DEFAULT_COLORS;
|
|
2269
|
+
exports.DEFAULT_ZOOM_RANGE = DEFAULT_ZOOM_RANGE;
|
|
2263
2270
|
exports.DRAG_DISTANCE_SQUARED = DRAG_DISTANCE_SQUARED;
|
|
2264
2271
|
exports.DocumentStore = DocumentStore;
|
|
2265
2272
|
exports.ERASER_MARGIN = ERASER_MARGIN;
|
|
@@ -2288,6 +2295,7 @@ exports.boundsIntersect = boundsIntersect;
|
|
|
2288
2295
|
exports.boundsOf = boundsOf;
|
|
2289
2296
|
exports.buildStartPositions = buildStartPositions;
|
|
2290
2297
|
exports.buildTransformSnapshots = buildTransformSnapshots;
|
|
2298
|
+
exports.clampZoom = clampZoom;
|
|
2291
2299
|
exports.closestOnSegment = closestOnSegment;
|
|
2292
2300
|
exports.createViewport = createViewport;
|
|
2293
2301
|
exports.decodeFirstPoint = decodeFirstPoint;
|