tldraw 4.1.0-canary.3766a107225c → 4.1.0-canary.409c8df1947f

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (71) hide show
  1. package/dist-cjs/index.js +1 -1
  2. package/dist-cjs/lib/canvas/TldrawCropHandles.js +1 -1
  3. package/dist-cjs/lib/canvas/TldrawScribble.js +1 -1
  4. package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +1 -1
  5. package/dist-cjs/lib/defaultExternalContentHandlers.js +1 -1
  6. package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
  7. package/dist-cjs/lib/shapes/bookmark/BookmarkShapeUtil.js +1 -1
  8. package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +1 -1
  9. package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +1 -1
  10. package/dist-cjs/lib/shapes/shared/HyperlinkButton.js +1 -1
  11. package/dist-cjs/lib/shapes/shared/PlainTextLabel.js +1 -1
  12. package/dist-cjs/lib/shapes/shared/RichTextLabel.js +1 -1
  13. package/dist-cjs/lib/shapes/shared/ShapeFill.js +1 -1
  14. package/dist-cjs/lib/shapes/text/PlainTextArea.js +1 -1
  15. package/dist-cjs/lib/shapes/text/RichTextArea.js +1 -1
  16. package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +1 -1
  17. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js +1 -1
  18. package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js.map +2 -2
  19. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +1 -1
  20. package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +2 -2
  21. package/dist-cjs/lib/ui/TldrawUi.js +2 -2
  22. package/dist-cjs/lib/ui/components/DebugMenu/DefaultDebugMenuContent.js +1 -1
  23. package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialog.js +1 -1
  24. package/dist-cjs/lib/ui/components/Minimap/DefaultMinimap.js +1 -1
  25. package/dist-cjs/lib/ui/components/OfflineIndicator/OfflineIndicator.js +1 -1
  26. package/dist-cjs/lib/ui/components/SharePanel/UserPresenceColorPicker.js +1 -1
  27. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js +1 -1
  28. package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +1 -1
  29. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js +1 -1
  30. package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js +1 -1
  31. package/dist-cjs/lib/ui/components/Toolbar/DefaultToolbar.js +1 -1
  32. package/dist-cjs/lib/ui/components/Toolbar/OverflowingToolbar.js +1 -1
  33. package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +1 -1
  34. package/dist-cjs/lib/ui/components/primitives/Button/TldrawUiButton.js +2 -2
  35. package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +1 -1
  36. package/dist-cjs/lib/ui/components/primitives/TldrawUiDialog.js +1 -1
  37. package/dist-cjs/lib/ui/components/primitives/TldrawUiDropdownMenu.js +1 -1
  38. package/dist-cjs/lib/ui/components/primitives/TldrawUiIcon.js +1 -1
  39. package/dist-cjs/lib/ui/components/primitives/TldrawUiInput.js +2 -2
  40. package/dist-cjs/lib/ui/components/primitives/TldrawUiPopover.js +2 -2
  41. package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +1 -1
  42. package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +2 -2
  43. package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +1 -1
  44. package/dist-cjs/lib/ui/components/primitives/layout.js +1 -1
  45. package/dist-cjs/lib/ui/components/primitives/menus/TldrawUiMenuGroup.js +1 -1
  46. package/dist-cjs/lib/ui/context/actions.js +1 -1
  47. package/dist-cjs/lib/ui/context/breakpoints.js +1 -1
  48. package/dist-cjs/lib/ui/context/events.js +1 -1
  49. package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +1 -1
  50. package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +1 -1
  51. package/dist-cjs/lib/ui/hooks/useLocalStorageState.js +1 -1
  52. package/dist-cjs/lib/ui/hooks/useTools.js +1 -1
  53. package/dist-cjs/lib/ui/hooks/useTranslation/useTranslation.js +1 -1
  54. package/dist-cjs/lib/ui/version.js +3 -3
  55. package/dist-cjs/lib/ui/version.js.map +1 -1
  56. package/dist-cjs/lib/utils/text/richText.js +4 -4
  57. package/dist-esm/index.mjs +1 -1
  58. package/dist-esm/lib/defaultExternalContentHandlers.mjs +1 -1
  59. package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
  60. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs +1 -1
  61. package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs.map +2 -2
  62. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +1 -1
  63. package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +2 -2
  64. package/dist-esm/lib/ui/version.mjs +3 -3
  65. package/dist-esm/lib/ui/version.mjs.map +1 -1
  66. package/package.json +11 -11
  67. package/src/lib/defaultExternalContentHandlers.ts +1 -1
  68. package/src/lib/shapes/text/TextShapeTool.test.ts +74 -0
  69. package/src/lib/tools/SelectTool/childStates/Crop/children/Idle.ts +1 -1
  70. package/src/lib/tools/SelectTool/childStates/Idle.ts +1 -1
  71. package/src/lib/ui/version.ts +3 -3
@@ -86,6 +86,80 @@ describe('When in idle state', () => {
86
86
  editor.cancel()
87
87
  editor.expectToBeIn('select.idle')
88
88
  })
89
+
90
+ it('starts editing selected text shape on Enter key', () => {
91
+ // Create a text shape using the same method as other tests
92
+ expect(editor.getCurrentPageShapes().length).toBe(0)
93
+ editor.setCurrentTool('text')
94
+ editor.pointerDown(0, 0)
95
+ editor.pointerUp()
96
+ editor.expectToBeIn('select.editing_shape')
97
+
98
+ // Update the text shape with some content
99
+ editor.updateShapes<TLTextShape>([
100
+ {
101
+ ...editor.getCurrentPageShapes()[0]!,
102
+ type: 'text',
103
+ props: { richText: toRichText('Hello') },
104
+ },
105
+ ])
106
+
107
+ // Exit editing mode
108
+ editor.cancel()
109
+ editor.expectToBeIn('select.idle')
110
+
111
+ // Verify the text shape exists and is selected
112
+ expect(editor.getCurrentPageShapes().length).toBe(1)
113
+ const textShape = editor.getCurrentPageShapes()[0]
114
+ expect(textShape.type).toBe('text')
115
+ editor.setSelectedShapes([textShape])
116
+
117
+ // Switch to text tool and press Enter
118
+ editor.setCurrentTool('text')
119
+ editor.expectToBeIn('text.idle')
120
+ editor.keyDown('Enter')
121
+
122
+ // Should transition to editing the selected text shape
123
+ editor.expectToBeIn('select.editing_shape')
124
+ expect(editor.getEditingShapeId()).toBe(textShape.id)
125
+ })
126
+
127
+ it('starts editing selected text shape on numpad Enter key', () => {
128
+ // Create a text shape using the same method as other tests
129
+ expect(editor.getCurrentPageShapes().length).toBe(0)
130
+ editor.setCurrentTool('text')
131
+ editor.pointerDown(0, 0)
132
+ editor.pointerUp()
133
+ editor.expectToBeIn('select.editing_shape')
134
+
135
+ // Update the text shape with some content
136
+ editor.updateShapes<TLTextShape>([
137
+ {
138
+ ...editor.getCurrentPageShapes()[0]!,
139
+ type: 'text',
140
+ props: { richText: toRichText('Hello') },
141
+ },
142
+ ])
143
+
144
+ // Exit editing mode
145
+ editor.cancel()
146
+ editor.expectToBeIn('select.idle')
147
+
148
+ // Verify the text shape exists and is selected
149
+ expect(editor.getCurrentPageShapes().length).toBe(1)
150
+ const textShape = editor.getCurrentPageShapes()[0]
151
+ expect(textShape.type).toBe('text')
152
+ editor.setSelectedShapes([textShape])
153
+
154
+ // Switch to text tool and press numpad Enter
155
+ editor.setCurrentTool('text')
156
+ editor.expectToBeIn('text.idle')
157
+ editor.keyDown('Enter', { code: 'NumpadEnter' })
158
+
159
+ // Should transition to editing the selected text shape
160
+ editor.expectToBeIn('select.editing_shape')
161
+ expect(editor.getEditingShapeId()).toBe(textShape.id)
162
+ })
89
163
  })
90
164
 
91
165
  describe('When in the pointing state', () => {
@@ -143,7 +143,7 @@ export class Idle extends StateNode {
143
143
  }
144
144
 
145
145
  override onKeyUp(info: TLKeyboardEventInfo) {
146
- switch (info.code) {
146
+ switch (info.key) {
147
147
  case 'Enter': {
148
148
  this.editor.setCroppingShape(null)
149
149
  this.editor.setCurrentTool('select.idle', {})
@@ -516,7 +516,7 @@ export class Idle extends StateNode {
516
516
  }
517
517
 
518
518
  override onKeyUp(info: TLKeyboardEventInfo) {
519
- switch (info.code) {
519
+ switch (info.key) {
520
520
  case 'Enter': {
521
521
  // Because Enter onKeyDown can happen outside the canvas (but then focus the canvas potentially),
522
522
  // we need to check if the canvas was initially selecting something before continuing.
@@ -1,9 +1,9 @@
1
1
  // This file is automatically generated by internal/scripts/refresh-assets.ts.
2
2
  // Do not edit manually. Or do, I'm a comment, not a cop.
3
3
 
4
- export const version = '4.1.0-canary.3766a107225c'
4
+ export const version = '4.1.0-canary.409c8df1947f'
5
5
  export const publishDates = {
6
6
  major: '2025-09-18T14:39:22.803Z',
7
- minor: '2025-09-19T16:52:06.231Z',
8
- patch: '2025-09-19T16:52:06.231Z',
7
+ minor: '2025-10-01T09:57:23.714Z',
8
+ patch: '2025-10-01T09:57:23.714Z',
9
9
  }