@tldraw/commenting 5.4.0-next.ef99ab47e5ce → 5.5.0-canary.022e164c8709
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.
- package/LICENSE.md +1 -0
- package/dist-cjs/canvas/cluster-model.js +1 -0
- package/dist-cjs/canvas/cluster-model.js.map +2 -2
- package/dist-cjs/canvas/comments-overlay.js +11 -4
- package/dist-cjs/canvas/comments-overlay.js.map +2 -2
- package/dist-cjs/canvas/license.js +1 -1
- package/dist-cjs/canvas/license.js.map +2 -2
- package/dist-cjs/canvas/thread-state.js +1 -0
- package/dist-cjs/canvas/thread-state.js.map +2 -2
- package/dist-cjs/index.d.ts +24 -17
- package/dist-cjs/index.js +1 -1
- package/dist-cjs/ui/emoji-picker.js +1 -1
- package/dist-cjs/ui/emoji-picker.js.map +2 -2
- package/dist-cjs/ui/reaction-picker.js +9 -3
- package/dist-cjs/ui/reaction-picker.js.map +2 -2
- package/dist-esm/canvas/cluster-model.mjs +1 -0
- package/dist-esm/canvas/cluster-model.mjs.map +2 -2
- package/dist-esm/canvas/comments-overlay.mjs +11 -4
- package/dist-esm/canvas/comments-overlay.mjs.map +2 -2
- package/dist-esm/canvas/license.mjs +2 -2
- package/dist-esm/canvas/license.mjs.map +2 -2
- package/dist-esm/canvas/thread-state.mjs +1 -0
- package/dist-esm/canvas/thread-state.mjs.map +2 -2
- package/dist-esm/index.d.mts +24 -17
- package/dist-esm/index.mjs +1 -1
- package/dist-esm/ui/emoji-picker.mjs +1 -1
- package/dist-esm/ui/emoji-picker.mjs.map +2 -2
- package/dist-esm/ui/reaction-picker.mjs +9 -3
- package/dist-esm/ui/reaction-picker.mjs.map +2 -2
- package/package.json +13 -5
- package/src/canvas/cluster-model.test.ts +64 -1
- package/src/canvas/cluster-model.ts +1 -0
- package/src/canvas/comments-overlay.test.ts +43 -0
- package/src/canvas/comments-overlay.tsx +22 -6
- package/src/canvas/license.ts +5 -3
- package/src/canvas/thread-state.test.ts +35 -0
- package/src/canvas/thread-state.ts +1 -0
- package/src/ui/emoji-picker.tsx +7 -3
- package/src/ui/reaction-picker.test.ts +36 -0
- package/src/ui/reaction-picker.tsx +15 -4
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { useCallback, useId, type ComponentType } from 'react'
|
|
1
|
+
import { useCallback, useId, type ComponentType, type KeyboardEvent, type MouseEvent } from 'react'
|
|
2
2
|
import {
|
|
3
3
|
TldrawUiButton,
|
|
4
4
|
TldrawUiDropdownMenuContent,
|
|
@@ -40,6 +40,14 @@ export interface ReactionPickerProps {
|
|
|
40
40
|
className?: string
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* Whether a palette pick asked to keep the palette open (shift held) for multi-select.
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export function isMultiSelectPick(event?: MouseEvent | KeyboardEvent): boolean {
|
|
48
|
+
return !!event?.shiftKey
|
|
49
|
+
}
|
|
50
|
+
|
|
43
51
|
/**
|
|
44
52
|
* The add-reaction affordance: a smiley button that opens an emoji grid.
|
|
45
53
|
*
|
|
@@ -47,7 +55,8 @@ export interface ReactionPickerProps {
|
|
|
47
55
|
* reactions are added and the row reflows.
|
|
48
56
|
*
|
|
49
57
|
* Picking an emoji dismisses the grid — adding and removing alike, since either way the picker has
|
|
50
|
-
* done its job — and hands focus back to the trigger.
|
|
58
|
+
* done its job — and hands focus back to the trigger. Shift-picking keeps the grid open, for
|
|
59
|
+
* choosing several reactions in a row.
|
|
51
60
|
* @public @react
|
|
52
61
|
*/
|
|
53
62
|
export function ReactionPicker({
|
|
@@ -69,9 +78,11 @@ export function ReactionPicker({
|
|
|
69
78
|
// what closes it. The palette's tokens are plain buttons — a swappable component, not radix
|
|
70
79
|
// menu items — so nothing dismisses the menu on its own.
|
|
71
80
|
const handleSelect = useCallback(
|
|
72
|
-
(value: string) => {
|
|
81
|
+
(value: string, event?: MouseEvent | KeyboardEvent) => {
|
|
73
82
|
onSelect?.(value)
|
|
74
|
-
|
|
83
|
+
if (!isMultiSelectPick(event)) {
|
|
84
|
+
tlmenus.deleteOpenMenu(id, editor?.contextId)
|
|
85
|
+
}
|
|
75
86
|
},
|
|
76
87
|
[onSelect, id, editor]
|
|
77
88
|
)
|