Skip to main content

3 posts tagged with "resizer"

View All Tags

Forestry Pixi UX 1.2 Release Notes

· 2 min read

1.2.x standardizes drag behavior across the package set by moving to @wonderlandlabs-pixi-ux/observe-drag. 1.2.1 follows with a ticker compatibility fix and coordinated package version bumps.

Highlights

  • Added dragObserverFactory in @wonderlandlabs-pixi-ux/observe-drag with:
    • module-level singleton pointer lock by default
    • optional custom activePointer$ injection at factory creation
    • configurable inactivity failsafe (abortTime, 0 disables)
    • optional drag render throttle via renderThrottleMs (default 30ms)
  • Migrated window dragging to observer-based drag subscriptions coordinated through WindowsManager.
  • Kept compatibility aliases where needed (observeDrag, dragTargetDecorator) while moving new usage toward dragObserverFactory + dragDecorator.

Deprecations

  • @wonderlandlabs-pixi-ux/drag is now deprecated for 1.2.x.
    • Migration target: @wonderlandlabs-pixi-ux/observe-drag.
  • trackDrag is no longer exported from @wonderlandlabs-pixi-ux/resizer.
    • Legacy implementation remains under _deprecated internally, but public API consumers should migrate to observer-based drag flows.

Migration Direction

For direct container dragging, use dragDecorator() with dragObserverFactory.

Prefer:

import dragObserverFactory, {dragDecorator} from '@wonderlandlabs-pixi-ux/observe-drag';

const observeDown = dragObserverFactory({
stage: app.stage,
app,
renderThrottleMs: 30,
});

const subscription = observeDown(target, dragDecorator(), {
dragTarget: container,
abortTime: 1000,
});

Over legacy DragStore or trackDrag entrypoint usage.

More advanced side effects can be managed with custom hooks: { onStart, onMove, onUp, onBlocked, onError }.

1.2.1 Patch

1.2.1 includes a ticker-forest fix for environments that provide minimal ticker mocks (for example, tests with addOnce/remove but without add/remove):

  • Scale observer binding now validates ticker capabilities before subscribing.
  • This prevents unhandled binding.ticker.add is not a function errors.

To keep dependency metadata aligned, the primary ticker consumers were also bumped to 1.2.1:

  • @wonderlandlabs-pixi-ux/button
  • @wonderlandlabs-pixi-ux/caption
  • @wonderlandlabs-pixi-ux/grid
  • @wonderlandlabs-pixi-ux/resizer
  • @wonderlandlabs-pixi-ux/toolbar
  • @wonderlandlabs-pixi-ux/window

Resizer Updates (March 2026)

· One min read

Recent updates landed for @wonderlandlabs-pixi-ux/resizer:

  • Resize handles now remain visually consistent under parent/super-container scaling by counter-scaling against world transform.
  • Added optional rectTransform support for coordinate transforms like snapping, with a single-argument object:
    • rectTransform({ rect, phase, handle })
  • Added optional transformed-rectangle preview callback:
    • onTransformedRect(rawRect, transformedRect, phase)
  • On drag release, transformed coordinates are committed before onRelease runs.

Validation demos in package-validator were also expanded:

  • /resizer/* remains the basic always-visible handles demo.
  • /resizer-snap/* demonstrates snapping + transformed preview with a gray marching-ants overlay.

Window Drag/Resize + Validator Source Fixes (March 2026)

· One min read

Today we addressed a group of related issues across drag, resizer, window, and the package-validator app:

  • Fixed zoom/scaling delta mismatches for drag + resize interactions by moving pointer-delta math into the correct local coordinate space.
  • Updated resizer drag flow so drag-phase transforms/snapping are committed to current rect state during drag, which keeps handles aligned with snapped geometry before release.
  • Updated window-to-resizer syncing so handle positions follow full window rect changes (x, y, width, height) and use the current window rect for external repositioning.
  • Added validator heartbeat coverage for:
    • scaled drag behavior
    • drag-phase snapping behavior
    • window handle updates during snap drag and external window movement
  • Fixed validator source separation so published mode does not accidentally resolve nested imports back to workspace packages.

Result: published and workspace routes now show meaningful behavioral differences when package versions differ, and interaction fidelity under zoom/scale is consistent.