Files
webstudio/apps/builder/app/shared/hook-utils/use-effect-queue.ts
T
Oleg Isonen 5f6b8cad6a feat: Ai placeholder + select prompt text after inserting prompt from history (#2499)
## Description

- When inserting prompt from history, now I can hit enter right away or
delete or copy.
- Update placeholder text
- Prevent inserting prompts when textarea disabled

## Steps for reproduction

1. click history item
2. see inserted text being selected

## Code Review

- [ ] hi @istarkov , 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
2023-10-17 16:07:34 +02:00

24 lines
615 B
TypeScript

import { useCallback, useEffect, useState } from "react";
/**
* Debounce task execution until useEffect
* Example:
* const scheduleEffect = useEffectQueue();
* scheduleEffect(() => { ... })
*/
export const useEffectQueue = () => {
const [updateCallback, setUpdateCallback] = useState(() => () => {
/* empty */
});
useEffect(() => {
// Because of how our styles works we need to update after React render to be sure that
// all styles are applied
updateCallback();
}, [updateCallback]);
return useCallback((task: () => void) => {
setUpdateCallback(() => task);
}, []);
};