Files
webstudio/apps/builder/app/shared/hook-utils/effect-event.ts
T
Ivan Starkov 348b5709b5 fix: Text Content does not propagate changes from Settings Panel if Previous Edit was on Canvas (#3040)
## Description

Closes #3021

The issue was that TextEditor when you switch on setting panel were
active and in no way synchronized with state having it's uncontrollable
nature.

Here we are disabling editing mode on editor blur.


## Steps for reproduction

1. click button
2. expect xyz

## Code Review

- [ ] hi @kof, I need you to do
  - conceptual review (architecture, feature-correctness)
  - detailed review (read every line)
  - test it on preview

## Before requesting a review

- [ ] made a self-review
- [ ] added inline comments where things may be not obvious (the "why",
not "what")

## Before merging

- [ ] tested locally and on preview environment (preview dev login:
5de6)
- [ ] updated [test
cases](https://github.com/webstudio-is/webstudio/blob/main/apps/builder/docs/test-cases.md)
document
- [ ] added tests
- [ ] if any new env variables are added, added them to `.env.example`
and the `builder/env-check.js` if mandatory
2024-03-25 19:02:50 +03:00

24 lines
595 B
TypeScript

import { useRef, useInsertionEffect, useCallback } from "react";
const useSafeInsertionEffect =
typeof window !== "undefined"
? useInsertionEffect
: (fn: () => void) => {
fn();
};
// eslint-disable-next-line @typescript-eslint/ban-types
export const useEffectEvent = <T extends Function>(callback?: T) => {
const ref = useRef(callback);
useSafeInsertionEffect(() => {
ref.current = callback;
});
// eslint-disable-next-line react-hooks/exhaustive-deps
return useCallback<T>(
((...args: unknown[]) => ref.current?.(...args)) as never,
[]
);
};