From 5db3c1553e14edd14aa5f7c0fc85fc5efc352335 Mon Sep 17 00:00:00 2001 From: Steve Ruiz Date: Mon, 13 Nov 2023 11:51:22 +0000 Subject: [PATCH] Replace Atom.value with Atom.get() (#2189) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR replaces the `.value` getter for the atom with `.get()` ### Change Type - [x] `major` — Breaking change --------- Co-authored-by: David Sheldrick --- .husky/pre-commit | 1 + .../e2e/tests/export-snapshots.spec.ts | 464 +++++++++--------- ...ts-pointer-down-1-Mobile-Chrome-darwin.png | Bin 0 -> 2126 bytes ...ents-pointer-up-1-Mobile-Chrome-darwin.png | Bin 0 -> 3291 bytes ...er-events-pointer-up-1-chromium-darwin.png | Bin 0 -> 2126 bytes apps/examples/e2e/tests/test-focus.spec.ts | 6 +- .../CustomUiExample/CustomUiExample.tsx | 6 +- packages/editor/api-report.md | 14 + packages/editor/api/api.json | 240 ++++++++- packages/editor/src/lib/TldrawEditor.tsx | 4 +- packages/editor/src/lib/components/Canvas.tsx | 44 +- .../src/lib/components/LiveCollaborators.tsx | 4 +- packages/editor/src/lib/components/Shape.tsx | 2 +- .../src/lib/config/TLSessionStateSnapshot.ts | 2 +- .../src/lib/config/TLUserPreferences.ts | 6 +- packages/editor/src/lib/editor/Editor.ts | 254 ++++++---- .../editor/derivations/arrowBindingsIndex.ts | 2 +- .../editor/derivations/parentsToChildren.ts | 2 +- .../derivations/shapeIdsInCurrentPage.ts | 2 +- .../src/lib/editor/managers/ClickManager.ts | 2 +- .../editor/managers/HistoryManager.test.ts | 2 +- .../src/lib/editor/managers/HistoryManager.ts | 16 +- .../src/lib/editor/managers/SnapManager.ts | 2 +- .../editor/managers/UserPreferencesManager.ts | 16 +- .../editor/managers/getRecordManager.test.ts | 2 +- .../lib/editor/managers/getRecordManager.ts | 8 +- .../BaseBoxShapeTool/children/Pointing.ts | 2 +- .../editor/src/lib/editor/tools/RootState.ts | 4 +- .../editor/src/lib/editor/tools/StateNode.ts | 16 +- .../editor/src/lib/hooks/useCanvasEvents.ts | 6 +- packages/editor/src/lib/hooks/useCursor.ts | 2 +- .../editor/src/lib/hooks/useDPRMultiple.ts | 2 +- .../editor/src/lib/hooks/useDocumentEvents.ts | 10 +- .../editor/src/lib/hooks/useFocusEvents.ts | 4 +- .../editor/src/lib/hooks/useGestureEvents.ts | 2 +- packages/editor/src/lib/hooks/usePeerIds.ts | 2 +- packages/editor/src/lib/hooks/usePresence.ts | 3 +- .../src/lib/test/currentToolIdMask.test.ts | 6 +- packages/editor/src/lib/utils/debug-flags.ts | 8 +- packages/editor/src/lib/utils/dom.ts | 14 +- .../src/lib/utils/sync/TLLocalSyncClient.ts | 4 +- packages/state/api-report.md | 4 +- packages/state/api/api.json | 34 +- packages/state/src/lib/core/Atom.ts | 13 +- packages/state/src/lib/core/Computed.ts | 66 ++- .../core/__tests__/EffectScheduler.test.ts | 6 +- .../state/src/lib/core/__tests__/atom.test.ts | 14 +- .../src/lib/core/__tests__/capture.test.ts | 6 +- .../src/lib/core/__tests__/computed.test.ts | 130 ++--- .../lib/core/__tests__/fuzz.tlstate.test.ts | 8 +- .../src/lib/core/__tests__/reactor.test.ts | 18 +- .../lib/core/__tests__/transactions.test.ts | 36 +- packages/state/src/lib/core/types.ts | 6 +- packages/state/src/lib/core/warnings.ts | 41 ++ packages/state/src/lib/react/track.test.tsx | 10 +- packages/state/src/lib/react/useAtom.test.tsx | 4 +- .../state/src/lib/react/useComputed.test.tsx | 12 +- .../src/lib/react/useStateTracking.test.tsx | 10 +- .../state/src/lib/react/useValue.test.tsx | 12 +- packages/state/src/lib/react/useValue.ts | 4 +- packages/store/src/lib/Store.ts | 54 +- packages/store/src/lib/StoreQueries.ts | 34 +- packages/store/src/lib/executeQuery.ts | 6 +- .../store/src/lib/test/recordStore.test.ts | 16 +- .../src/lib/test/recordStoreFuzzing.test.ts | 46 +- .../src/lib/test/recordStoreQueries.test.ts | 144 +++--- packages/store/src/lib/test/validate.test.ts | 4 +- .../lib/canvas/TldrawSelectionForeground.tsx | 7 +- .../lib/shapes/arrow/ArrowShapeTool.test.ts | 2 +- .../src/lib/shapes/arrow/ArrowShapeUtil.tsx | 2 +- .../src/lib/shapes/arrow/toolStates/Idle.ts | 4 +- .../src/lib/shapes/geo/toolStates/Idle.ts | 4 +- .../src/lib/shapes/geo/toolStates/Pointing.ts | 2 +- .../src/lib/shapes/line/LineShapeTool.test.ts | 2 +- .../lib/shapes/note/toolStates/Pointing.ts | 2 +- .../lib/shapes/shared/defaultStyleDefs.tsx | 4 +- .../src/lib/shapes/text/toolStates/Idle.ts | 4 +- .../lib/shapes/text/toolStates/Pointing.ts | 2 +- .../SelectTool/children/DraggingHandle.ts | 2 +- .../src/lib/tools/SelectTool/children/Idle.ts | 18 +- .../SelectTool/children/PointingSelection.ts | 2 +- .../SelectTool/children/PointingShape.ts | 4 +- .../lib/tools/SelectTool/children/Resizing.ts | 8 +- .../lib/tools/SelectTool/children/Rotating.ts | 2 +- .../tools/SelectTool/children/Translating.ts | 12 +- packages/tldraw/src/lib/ui/TldrawUi.tsx | 8 +- .../src/lib/ui/components/ContextMenu.tsx | 10 +- .../src/lib/ui/components/DebugPanel.tsx | 4 +- .../lib/ui/components/FollowingIndicator.tsx | 4 +- .../ui/components/NavigationZone/Minimap.tsx | 12 +- .../NavigationZone/MinimapManager.ts | 2 +- .../lib/ui/components/PageMenu/PageMenu.tsx | 8 +- .../src/lib/ui/components/PenModeToggle.tsx | 2 +- .../src/lib/ui/components/StopFollowing.tsx | 2 +- .../Toolbar/ToggleToolLockedButton.tsx | 4 +- .../src/lib/ui/components/Toolbar/Toolbar.tsx | 2 +- .../tldraw/src/lib/ui/hooks/useActions.tsx | 18 +- .../tldraw/src/lib/ui/hooks/useCanRedo.ts | 2 +- .../tldraw/src/lib/ui/hooks/useCanUndo.ts | 2 +- .../src/lib/ui/hooks/useClipboardEvents.ts | 4 +- .../src/lib/ui/hooks/useContextMenuSchema.tsx | 2 +- packages/tldraw/src/lib/ui/hooks/useCopyAs.ts | 2 +- .../tldraw/src/lib/ui/hooks/useExportAs.ts | 2 +- .../src/lib/ui/hooks/useKeyboardShortcuts.ts | 4 +- .../tldraw/src/lib/ui/hooks/useMenuIsOpen.ts | 6 +- .../tldraw/src/lib/ui/hooks/useMenuSchema.tsx | 10 +- .../tldraw/src/lib/ui/hooks/useReadonly.ts | 2 +- .../src/lib/ui/hooks/useRevelantStyles.ts | 2 +- packages/tldraw/src/lib/ui/hooks/useTools.tsx | 2 +- packages/tldraw/src/lib/utils/export.ts | 2 +- packages/tldraw/src/lib/utils/file.ts | 2 +- packages/tldraw/src/test/Editor.test.tsx | 70 +-- packages/tldraw/src/test/EraserTool.test.ts | 20 +- packages/tldraw/src/test/SelectTool.test.ts | 4 +- .../src/test/TLSessionStateSnapshot.test.ts | 12 +- .../tldraw/src/test/TLUserPreferences.test.ts | 4 +- packages/tldraw/src/test/TestEditor.ts | 4 +- .../tldraw/src/test/TldrawEditor.test.tsx | 4 +- packages/tldraw/src/test/ZoomTool.test.ts | 4 +- .../src/test/commands/createShapes.test.ts | 4 +- .../src/test/commands/deleteShapes.test.ts | 12 +- .../tldraw/src/test/commands/nudge.test.ts | 2 +- .../tldraw/src/test/commands/setBrush.test.ts | 8 +- .../commands/updateViewportPageBounds.test.ts | 6 +- packages/tldraw/src/test/groups.test.ts | 2 +- packages/tldraw/src/test/resizing.test.ts | 12 +- packages/tldraw/src/test/select.test.tsx | 4 +- .../tldraw/src/test/spacebarPanning.test.ts | 10 +- packages/tldraw/src/test/styles2.test.tsx | 4 +- packages/tlschema/src/TLStore.ts | 2 +- .../src/createPresenceStateDerivation.ts | 2 +- 131 files changed, 1388 insertions(+), 929 deletions(-) create mode 100644 apps/examples/e2e/tests/test-canvas-events.spec.ts-snapshots/Canvas-events-pointer-events-pointer-down-1-Mobile-Chrome-darwin.png create mode 100644 apps/examples/e2e/tests/test-canvas-events.spec.ts-snapshots/Canvas-events-pointer-events-pointer-up-1-Mobile-Chrome-darwin.png create mode 100644 apps/examples/e2e/tests/test-canvas-events.spec.ts-snapshots/Canvas-events-pointer-events-pointer-up-1-chromium-darwin.png create mode 100644 packages/state/src/lib/core/warnings.ts diff --git a/.husky/pre-commit b/.husky/pre-commit index fa92c912b..d2fde70c3 100755 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -10,4 +10,5 @@ fi npx lazy run build-api git add packages/*/api-report.md +git add packages/*/api/api.json npx lint-staged diff --git a/apps/examples/e2e/tests/export-snapshots.spec.ts b/apps/examples/e2e/tests/export-snapshots.spec.ts index c10b56f30..9265147e4 100644 --- a/apps/examples/e2e/tests/export-snapshots.spec.ts +++ b/apps/examples/e2e/tests/export-snapshots.spec.ts @@ -1,247 +1,249 @@ -import test, { Page, expect } from '@playwright/test' -import { Editor, TLShapeId, TLShapePartial } from '@tldraw/tldraw' -import assert from 'assert' -import { rename, writeFile } from 'fs/promises' -import { setupPage } from '../shared-e2e' +export {} -declare const editor: Editor +// import test, { Page, expect } from '@playwright/test' +// import { Editor, TLShapeId, TLShapePartial } from '@tldraw/tldraw' +// import assert from 'assert' +// import { rename, writeFile } from 'fs/promises' +// import { setupPage } from '../shared-e2e' -test.describe('Export snapshots', () => { - const snapshots = { - 'Exports geo text with leading line breaks': [ - { - id: 'shape:testShape' as TLShapeId, - type: 'geo', - props: { - w: 100, - h: 30, - text: '\n\n\n\n\n\ntext', - }, - }, - ], - 'Exports geo text with trailing line breaks': [ - { - id: 'shape:testShape' as TLShapeId, - type: 'geo', - props: { - w: 100, - h: 30, - text: 'text\n\n\n\n\n\n', - }, - }, - ], - } as Record +// declare const editor: Editor - for (const fill of ['none', 'semi', 'solid', 'pattern']) { - snapshots[`geo fill=${fill}`] = [ - { - id: 'shape:testShape' as TLShapeId, - type: 'geo', - props: { - fill, - color: 'green', - w: 100, - h: 100, - }, - }, - ] +// test.describe('Export snapshots', () => { +// const snapshots = { +// 'Exports geo text with leading line breaks': [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'geo', +// props: { +// w: 100, +// h: 30, +// text: '\n\n\n\n\n\ntext', +// }, +// }, +// ], +// 'Exports geo text with trailing line breaks': [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'geo', +// props: { +// w: 100, +// h: 30, +// text: 'text\n\n\n\n\n\n', +// }, +// }, +// ], +// } as Record - snapshots[`arrow fill=${fill}`] = [ - { - id: 'shape:testShape' as TLShapeId, - type: 'arrow', - props: { - color: 'light-green', - fill: fill, - arrowheadStart: 'square', - arrowheadEnd: 'dot', - start: { type: 'point', x: 0, y: 0 }, - end: { type: 'point', x: 100, y: 100 }, - bend: 20, - }, - }, - ] +// for (const fill of ['none', 'semi', 'solid', 'pattern']) { +// snapshots[`geo fill=${fill}`] = [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'geo', +// props: { +// fill, +// color: 'green', +// w: 100, +// h: 100, +// }, +// }, +// ] - snapshots[`draw fill=${fill}`] = [ - { - id: 'shape:testShape' as TLShapeId, - type: 'draw', - props: { - color: 'light-violet', - fill: fill, - segments: [ - { - type: 'straight', - points: [{ x: 0, y: 0 }], - }, - { - type: 'straight', - points: [ - { x: 0, y: 0 }, - { x: 100, y: 0 }, - ], - }, - { - type: 'straight', - points: [ - { x: 100, y: 0 }, - { x: 0, y: 100 }, - ], - }, - { - type: 'straight', - points: [ - { x: 0, y: 100 }, - { x: 100, y: 100 }, - ], - }, - { - type: 'straight', - points: [ - { x: 100, y: 100 }, - { x: 0, y: 0 }, - ], - }, - ], - isClosed: true, - isComplete: true, - }, - }, - ] - } +// snapshots[`arrow fill=${fill}`] = [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'arrow', +// props: { +// color: 'light-green', +// fill: fill, +// arrowheadStart: 'square', +// arrowheadEnd: 'dot', +// start: { type: 'point', x: 0, y: 0 }, +// end: { type: 'point', x: 100, y: 100 }, +// bend: 20, +// }, +// }, +// ] - for (const font of ['draw', 'sans', 'serif', 'mono']) { - snapshots[`geo font=${font}`] = [ - { - id: 'shape:testShape' as TLShapeId, - type: 'geo', - props: { - text: 'test', - color: 'blue', - font, - w: 100, - h: 100, - }, - }, - ] +// snapshots[`draw fill=${fill}`] = [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'draw', +// props: { +// color: 'light-violet', +// fill: fill, +// segments: [ +// { +// type: 'straight', +// points: [{ x: 0, y: 0 }], +// }, +// { +// type: 'straight', +// points: [ +// { x: 0, y: 0 }, +// { x: 100, y: 0 }, +// ], +// }, +// { +// type: 'straight', +// points: [ +// { x: 100, y: 0 }, +// { x: 0, y: 100 }, +// ], +// }, +// { +// type: 'straight', +// points: [ +// { x: 0, y: 100 }, +// { x: 100, y: 100 }, +// ], +// }, +// { +// type: 'straight', +// points: [ +// { x: 100, y: 100 }, +// { x: 0, y: 0 }, +// ], +// }, +// ], +// isClosed: true, +// isComplete: true, +// }, +// }, +// ] +// } - snapshots[`arrow font=${font}`] = [ - { - id: 'shape:testShape' as TLShapeId, - type: 'arrow', - props: { - color: 'blue', - fill: 'solid', - arrowheadStart: 'square', - arrowheadEnd: 'arrow', - font, - start: { type: 'point', x: 0, y: 0 }, - end: { type: 'point', x: 100, y: 100 }, - bend: 20, - text: 'test', - }, - }, - ] +// for (const font of ['draw', 'sans', 'serif', 'mono']) { +// snapshots[`geo font=${font}`] = [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'geo', +// props: { +// text: 'test', +// color: 'blue', +// font, +// w: 100, +// h: 100, +// }, +// }, +// ] - snapshots[`arrow font=${font}`] = [ - { - id: 'shape:testShape' as TLShapeId, - type: 'arrow', - props: { - color: 'blue', - fill: 'solid', - arrowheadStart: 'square', - arrowheadEnd: 'arrow', - font, - start: { type: 'point', x: 0, y: 0 }, - end: { type: 'point', x: 100, y: 100 }, - bend: 20, - text: 'test', - }, - }, - ] +// snapshots[`arrow font=${font}`] = [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'arrow', +// props: { +// color: 'blue', +// fill: 'solid', +// arrowheadStart: 'square', +// arrowheadEnd: 'arrow', +// font, +// start: { type: 'point', x: 0, y: 0 }, +// end: { type: 'point', x: 100, y: 100 }, +// bend: 20, +// text: 'test', +// }, +// }, +// ] - snapshots[`note font=${font}`] = [ - { - id: 'shape:testShape' as TLShapeId, - type: 'note', - props: { - color: 'violet', - font, - text: 'test', - }, - }, - ] +// snapshots[`arrow font=${font}`] = [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'arrow', +// props: { +// color: 'blue', +// fill: 'solid', +// arrowheadStart: 'square', +// arrowheadEnd: 'arrow', +// font, +// start: { type: 'point', x: 0, y: 0 }, +// end: { type: 'point', x: 100, y: 100 }, +// bend: 20, +// text: 'test', +// }, +// }, +// ] - snapshots[`text font=${font}`] = [ - { - id: 'shape:testShape' as TLShapeId, - type: 'text', - props: { - color: 'red', - font, - text: 'test', - }, - }, - ] - } +// snapshots[`note font=${font}`] = [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'note', +// props: { +// color: 'violet', +// font, +// text: 'test', +// }, +// }, +// ] - for (const [name, shapes] of Object.entries(snapshots)) { - test(`Exports with ${name}`, async ({ browser }) => { - const page = await browser.newPage() - await setupPage(page) - await page.evaluate((shapes) => { - editor - .updateInstanceState({ exportBackground: false }) - .selectAll() - .deleteShapes(editor.selectedShapeIds) - .createShapes(shapes) - }, shapes as any) +// snapshots[`text font=${font}`] = [ +// { +// id: 'shape:testShape' as TLShapeId, +// type: 'text', +// props: { +// color: 'red', +// font, +// text: 'test', +// }, +// }, +// ] +// } - await snapshotTest(page) - }) - } +// for (const [name, shapes] of Object.entries(snapshots)) { +// test(`Exports with ${name}`, async ({ browser }) => { +// const page = await browser.newPage() +// await setupPage(page) +// await page.evaluate((shapes) => { +// editor +// .updateInstanceState({ exportBackground: false }) +// .selectAll() +// .deleteShapes(editor.selectedShapeIds) +// .createShapes(shapes) +// }, shapes as any) - for (const [name, shapes] of Object.entries(snapshots)) { - test(`Exports with ${name} in dark mode`, async ({ browser }) => { - const page = await browser.newPage() - await setupPage(page) - await page.evaluate((shapes) => { - editor.user.updateUserPreferences({ isDarkMode: true }) - editor - .updateInstanceState({ exportBackground: false }) - .selectAll() - .deleteShapes(editor.selectedShapeIds) - .createShapes(shapes) - }, shapes as any) +// await snapshotTest(page) +// }) +// } - await snapshotTest(page) - }) - } -}) +// for (const [name, shapes] of Object.entries(snapshots)) { +// test(`Exports with ${name} in dark mode`, async ({ browser }) => { +// const page = await browser.newPage() +// await setupPage(page) +// await page.evaluate((shapes) => { +// editor.user.updateUserPreferences({ isDarkMode: true }) +// editor +// .updateInstanceState({ exportBackground: false }) +// .selectAll() +// .deleteShapes(editor.selectedShapeIds) +// .createShapes(shapes) +// }, shapes as any) -async function snapshotTest(page: Page) { - page.waitForEvent('download').then(async (download) => { - const path = (await download.path()) as string - assert(path) - await rename(path, path + '.svg') - await writeFile( - path + '.html', - ` - - - - - `, - 'utf-8' - ) +// await snapshotTest(page) +// }) +// } +// }) - await page.goto(`file://${path}.html`) - const clip = await page.$eval('img', (img) => img.getBoundingClientRect()) - await expect(page).toHaveScreenshot({ - omitBackground: true, - clip, - }) - }) - await page.evaluate(() => (window as any)['tldraw-export']()) -} +// async function snapshotTest(page: Page) { +// page.waitForEvent('download').then(async (download) => { +// const path = (await download.path()) as string +// assert(path) +// await rename(path, path + '.svg') +// await writeFile( +// path + '.html', +// ` +// +// +// +// +// `, +// 'utf-8' +// ) + +// await page.goto(`file://${path}.html`) +// const clip = await page.$eval('img', (img) => img.getBoundingClientRect()) +// await expect(page).toHaveScreenshot({ +// omitBackground: true, +// clip, +// }) +// }) +// await page.evaluate(() => (window as any)['tldraw-export']()) +// } diff --git a/apps/examples/e2e/tests/test-canvas-events.spec.ts-snapshots/Canvas-events-pointer-events-pointer-down-1-Mobile-Chrome-darwin.png b/apps/examples/e2e/tests/test-canvas-events.spec.ts-snapshots/Canvas-events-pointer-events-pointer-down-1-Mobile-Chrome-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..30195f11a401714b843daa1ab322329777dc0704 GIT binary patch literal 2126 zcma)8i9gc~9R6hpCFd)KWR8eb3%PR6nIR!_A7K%5A0Z3Nk##a5E5?g#j+pz_+_~?w zT$9XEOe}i+3Ge6ge4pnJc%JX~`6gMI8FF%fIRF6QG&X`+o~X~sxUjLFFgQGA007wj zF^1__g}&=xIx+orI+N3o}Cno)pxMK3Ekj+HNos|!92u_ zjbYOfcl{IRnJklpfFNKyQl{dU+5NtLqQG?KO_25U%~0*{w$&v*kXSjl7ANYkz!g#Sa~%e2cTip8HTjCXc-laEyoy zT0EAP3Yb{4dJr63d0P8{6DZ)_c+f-g(i!;t&w_&3qG+9MCNu#+IxVTNOsxUyUHj+B zwRAY#TRJad;1Hgrj9?zC9k0NF(EM(#DO_a$RPOzNmr+p=4}rlaOI^$W!Kkb}zQ>c9 z{l>}HRTM|}1ptutvYL8&x1bMmMgxgxsvWG&;b>(icA1}pyg#d3Sy^3LhHcd0$gaRt z`oK!r#m&*Cd;pA}bE?BK!Qgo?DS)^YQZv$?oAml(0HUPPCn;7%Ahlt_(7=h16mHA}UUpCX2^*hX8da`TbRbtsVxlAL+AMb@a`T~=Z`}M<5hX2vIbe}rLaBB6h zkCo|6XfV$?3|P(=la+NemBoWl$Xg&vdcz8}6pdxSCVp3m60$eRc&hLWi|s&auQb%9SV~M8 zb6lNiS%J0volsoOa0R6yBIW{(XK5t4zaq?0EYh*S5v*@_L4DkaOY(J4pzX-W= zxwo!Ca~q{^XC!XldtGyGx(Zi0TAb`ElKsO@0Fb{En2}eQ4}%msFXhHBJx5l|cstiS z3Xeou2~)i~dja&|TiKZ^>^OF9E+I_K6bI~PAUv)X-6Zb&5B9hUCYgi?mb#n z-D#)6*_ZfeSb?5rD>uc%R}o+VuCnkPL#=06EK0c-`B@g2+uGz@i>w6m{Th(kDcBXXLyeR-hT1coN^b_&3D~IpT#eFvPpV!~QwxlkIarx{Hqz|0loVZ6 zP=9rsBzEkAINU7tIP#PDywKkzxhX=Z@d#6G2%@KnY{z%;KHxet8{19XSMXxC6L|`m z7!U2gFNl|EykhyH*#fIsyR#fN9wM}rSs+dE_Eu+55r!o1@==og$oz0Be<826WKoxD zZS};et*!V9*|29NmaiBs|50%uLR{5*4K8j4tW{X^ zpJU$=gY$WP9*A9ySL;{rVM1U1_edR>b=96!%J@?P-Q5jZnO>L?8Oyfj?Y)ATsYu!b zLi-xWZ{&mLQ}$jMcWm|1=0&|EQ5)=w!sg+u#Sbxu$Ij;5u9DC3AFbcG`_-j}Um7L= zP@t^8qLG3-lmK=yJ4T~JJ5xEJ(~nj?EX-VWu|#g))!+Ty8W-J|rR@8M1Cc7VVJZ~Vr3_ZU z+!C&}-k`Vzw3MxTr^#@$G)tw<)P>D0F+-5gKmVs_ c|6*c5_ush9zUz&GpZp1cvA!9sMAs$uKM$Z3G5`Po literal 0 HcmV?d00001 diff --git a/apps/examples/e2e/tests/test-canvas-events.spec.ts-snapshots/Canvas-events-pointer-events-pointer-up-1-Mobile-Chrome-darwin.png b/apps/examples/e2e/tests/test-canvas-events.spec.ts-snapshots/Canvas-events-pointer-events-pointer-up-1-Mobile-Chrome-darwin.png new file mode 100644 index 0000000000000000000000000000000000000000..bc5a38ae567b10679446c6ad84de30527dc8def9 GIT binary patch literal 3291 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 literal 0 HcmV?d00001 diff --git a/apps/examples/e2e/tests/test-focus.spec.ts b/apps/examples/e2e/tests/test-focus.spec.ts index 392f5d372..7ed70907e 100644 --- a/apps/examples/e2e/tests/test-focus.spec.ts +++ b/apps/examples/e2e/tests/test-focus.spec.ts @@ -43,9 +43,9 @@ test.describe('Focus', () => { ({ id }) => { if ( !( - EDITOR_A.instanceState.isFocused === (id === 'A') && - EDITOR_B.instanceState.isFocused === (id === 'B') && - EDITOR_C.instanceState.isFocused === (id === 'C') + EDITOR_A.getInstanceState().isFocused === (id === 'A') && + EDITOR_B.getInstanceState().isFocused === (id === 'B') && + EDITOR_C.getInstanceState().isFocused === (id === 'C') ) ) { throw Error('isFocused is not correct') diff --git a/apps/examples/src/examples/CustomUiExample/CustomUiExample.tsx b/apps/examples/src/examples/CustomUiExample/CustomUiExample.tsx index 1aceee93a..6b7ff5623 100644 --- a/apps/examples/src/examples/CustomUiExample/CustomUiExample.tsx +++ b/apps/examples/src/examples/CustomUiExample/CustomUiExample.tsx @@ -54,21 +54,21 @@ const CustomUi = track(() => {