InvokeAI/invokeai/frontend/web
psychedelicious 3db69af220 refactor(ui): generalize stage event handlers
Create intermediary nanostores for values required by the event handlers. This allows the event handlers to be purely imperative, with no reactivity: instead of recreating/setting the handlers when a dependent piece of state changes, we use nanostores' imperative API to access dependent state.

For example, some handlers depend on brush size. If we used the standard declarative `useSelector` API, we'd need to recreate the event handler callback each time the brush size changed. This can be costly.

An intermediate `$brushSize` nanostore is set in a `useLayoutEffect()`, which responds to changes to the redux store. Then, in the event handler, we use the imperative API to access the brush size: `$brushSize.get()`.

This change allows the event handler logic to be shared with the pending canvas v2, and also more easily tested. It's a noticeable perf improvement, too, especially when changing brush size.
2024-06-06 07:45:13 +10:00
..
.storybook chore(ui): lint 2024-04-19 09:32:56 -04:00
patches feat(ui): patch reselect to use lruMemoize only 2024-01-06 00:03:07 +11:00
public translationBot(ui): update translation (Chinese (Traditional)) 2024-06-05 00:08:03 +10:00
scripts build(ui): add eslint no-console rule 2024-05-15 14:09:44 +10:00
src refactor(ui): generalize stage event handlers 2024-06-06 07:45:13 +10:00
static/docs feat(ui): update assets 2024-01-12 08:02:59 +11:00
__init__.py Run python black 2023-07-28 09:46:44 -04:00
.eslintignore fix(ui): fix workflow editor model selector, excise ONNX 2024-01-03 13:18:50 +11:00
.eslintrc.js build(ui): add eslint no-console rule 2024-05-15 14:09:44 +10:00
.gitignore tests(ui): set up vitest coverage 2024-05-15 14:09:44 +10:00
.prettierignore fix(ui): fix workflow editor model selector, excise ONNX 2024-01-03 13:18:50 +11:00
.prettierrc.js chore(ui): use new prettier config 2024-01-28 19:57:53 +11:00
index.html Add ID to the HTML link element 2024-04-15 07:54:36 +10:00
knip.ts Scope project files to src dir (enables --production) 2024-04-15 09:14:49 +10:00
package.json feat(ui): abstract out and share logic between comparisons 2024-06-02 15:30:00 +10:00
pnpm-lock.yaml feat(ui): abstract out and share logic between comparisons 2024-06-02 15:30:00 +10:00
README.md docs: move frontend docs to mkdocs 2024-03-13 22:43:20 +11:00
tsconfig.json build(ui): enable TS strictPropertyInitialization 2024-05-15 14:09:44 +10:00
tsconfig.node.json fix(ui): fix package build 2024-03-01 10:42:33 +11:00
vite.config.mts tests(ui): set up vitest coverage 2024-05-15 14:09:44 +10:00