fitty icon indicating copy to clipboard operation
fitty copied to clipboard

Using fitty synchronously

Open miguelcobain opened this issue 1 year ago • 1 comments

Problem: we have text with font-size from fitty. When the user tries to print the page, the page size changes, but fitty does not update.

I tried calling fit() on the beforeprint event, but that didn't help. The font-size still didn't update. I then understood that fitty does its calculations and updates asynchronously in a requestAnimationFrame call. For the layout changes to be effective in the print layout, they need to be done synchronously inside the beforeprint event handler.

Proposed solutions:

  1. provide a way to make the calculations and updates synchronously fitSync() method?
  2. provide an observePrint option, much like the existing observeWindow, that listens to the beforeprint event and recalculates synchronously

miguelcobain avatar Nov 08 '23 16:11 miguelcobain

@miguelcobain appreciate the thorough ticket, and PR. 🙏

I like introducing a sync option better as it doesn't pull in additional specific functionality and is thus more flexibly towards future situations that might also require sync redraw.

Perhaps we can add an options object to requestRedraw(options = { sync: false }), then it cancels the animation frame and calls redraw immediately after.

redrawAll(type) = () => could then change to redrawAll(type) = (options = { sync: false }) => then you could call fitAll({ sync: true })

rikschennink avatar Nov 09 '23 16:11 rikschennink