tldraw 3.16.0-canary.947c633374a9 → 3.16.0-canary.99cd20c3ee29
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/dist-cjs/index.d.ts +21 -2
- package/dist-cjs/index.js +5 -1
- package/dist-cjs/index.js.map +2 -2
- package/dist-cjs/lib/Tldraw.js +12 -2
- package/dist-cjs/lib/Tldraw.js.map +2 -2
- package/dist-cjs/lib/defaultExternalContentHandlers.js +5 -4
- package/dist-cjs/lib/defaultExternalContentHandlers.js.map +2 -2
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +3 -0
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +2 -2
- package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +3 -0
- package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +2 -2
- package/dist-cjs/lib/ui/TldrawUi.js +13 -12
- package/dist-cjs/lib/ui/TldrawUi.js.map +2 -2
- package/dist-cjs/lib/ui/components/{FollowingIndicator.js → DefaultFollowingIndicator.js} +6 -6
- package/dist-cjs/lib/ui/components/DefaultFollowingIndicator.js.map +7 -0
- package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js +5 -5
- package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.js.map +1 -1
- package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js +1 -1
- package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +6 -4
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +31 -37
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
- package/dist-cjs/lib/ui/context/components.js +2 -0
- package/dist-cjs/lib/ui/context/components.js.map +2 -2
- package/dist-cjs/lib/ui/context/events.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +1 -0
- package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js.map +2 -2
- package/dist-cjs/lib/ui/kbd-utils.js +9 -3
- package/dist-cjs/lib/ui/kbd-utils.js.map +2 -2
- package/dist-cjs/lib/ui/version.js +3 -3
- package/dist-cjs/lib/ui/version.js.map +1 -1
- package/dist-esm/index.d.mts +21 -2
- package/dist-esm/index.mjs +7 -2
- package/dist-esm/index.mjs.map +2 -2
- package/dist-esm/lib/Tldraw.mjs +14 -4
- package/dist-esm/lib/Tldraw.mjs.map +2 -2
- package/dist-esm/lib/defaultExternalContentHandlers.mjs +5 -4
- package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +2 -2
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +3 -0
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +3 -0
- package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +2 -2
- package/dist-esm/lib/ui/TldrawUi.mjs +13 -12
- package/dist-esm/lib/ui/TldrawUi.mjs.map +2 -2
- package/dist-esm/lib/ui/components/{FollowingIndicator.mjs → DefaultFollowingIndicator.mjs} +3 -3
- package/dist-esm/lib/ui/components/DefaultFollowingIndicator.mjs.map +7 -0
- package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs +5 -5
- package/dist-esm/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.mjs.map +1 -1
- package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs +1 -1
- package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +6 -4
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +31 -37
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
- package/dist-esm/lib/ui/context/components.mjs +2 -0
- package/dist-esm/lib/ui/context/components.mjs.map +2 -2
- package/dist-esm/lib/ui/context/events.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +1 -0
- package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs.map +2 -2
- package/dist-esm/lib/ui/kbd-utils.mjs +9 -3
- package/dist-esm/lib/ui/kbd-utils.mjs.map +2 -2
- package/dist-esm/lib/ui/version.mjs +3 -3
- package/dist-esm/lib/ui/version.mjs.map +1 -1
- package/package.json +3 -3
- package/src/index.ts +3 -1
- package/src/lib/Tldraw.tsx +15 -2
- package/src/lib/defaultExternalContentHandlers.ts +12 -4
- package/src/lib/shapes/frame/FrameShapeUtil.tsx +4 -0
- package/src/lib/shapes/image/ImageShapeUtil.tsx +3 -0
- package/src/lib/ui/TldrawUi.tsx +16 -10
- package/src/lib/ui/components/{FollowingIndicator.tsx → DefaultFollowingIndicator.tsx} +2 -1
- package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx +5 -5
- package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +1 -1
- package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +35 -30
- package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +20 -22
- package/src/lib/ui/context/components.tsx +3 -0
- package/src/lib/ui/context/events.tsx +1 -1
- package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +1 -0
- package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +1 -0
- package/src/lib/ui/kbd-utils.ts +10 -3
- package/src/lib/ui/version.ts +3 -3
- package/src/lib/ui.css +3 -0
- package/tldraw.css +11 -0
- package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
- package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
|
@@ -2,6 +2,7 @@ import { Slider as _Slider } from 'radix-ui'
|
|
|
2
2
|
import React, { useCallback, useEffect, useState } from 'react'
|
|
3
3
|
import { TLUiTranslationKey } from '../../hooks/useTranslation/TLUiTranslationKey'
|
|
4
4
|
import { useTranslation } from '../../hooks/useTranslation/useTranslation'
|
|
5
|
+
import { TldrawUiTooltip, tooltipManager } from './TldrawUiTooltip'
|
|
5
6
|
|
|
6
7
|
/** @public */
|
|
7
8
|
export interface TLUiSliderProps {
|
|
@@ -49,6 +50,7 @@ export const TldrawUiSlider = React.forwardRef<HTMLDivElement, TLUiSliderProps>(
|
|
|
49
50
|
)
|
|
50
51
|
|
|
51
52
|
const handlePointerDown = useCallback(() => {
|
|
53
|
+
tooltipManager.hideAllTooltips()
|
|
52
54
|
onHistoryMark('click slider')
|
|
53
55
|
}, [onHistoryMark])
|
|
54
56
|
|
|
@@ -62,38 +64,41 @@ export const TldrawUiSlider = React.forwardRef<HTMLDivElement, TLUiSliderProps>(
|
|
|
62
64
|
}
|
|
63
65
|
}, [])
|
|
64
66
|
|
|
67
|
+
const titleAndLabel = title + ' — ' + msg(label as TLUiTranslationKey)
|
|
68
|
+
|
|
65
69
|
return (
|
|
66
70
|
<div className="tlui-slider__container">
|
|
67
|
-
<
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
71
|
+
<TldrawUiTooltip content={titleAndLabel}>
|
|
72
|
+
<_Slider.Root
|
|
73
|
+
data-testid={testId}
|
|
74
|
+
className="tlui-slider"
|
|
75
|
+
dir="ltr"
|
|
76
|
+
min={min ?? 0}
|
|
77
|
+
max={steps}
|
|
78
|
+
step={1}
|
|
79
|
+
value={value !== null ? [value] : undefined}
|
|
80
|
+
onPointerDown={handlePointerDown}
|
|
81
|
+
onValueChange={handleValueChange}
|
|
82
|
+
onKeyDownCapture={handleKeyEvent}
|
|
83
|
+
onKeyUpCapture={handleKeyEvent}
|
|
84
|
+
>
|
|
85
|
+
<_Slider.Track className="tlui-slider__track" dir="ltr">
|
|
86
|
+
{value !== null && <_Slider.Range className="tlui-slider__range" dir="ltr" />}
|
|
87
|
+
</_Slider.Track>
|
|
88
|
+
{value !== null && (
|
|
89
|
+
<_Slider.Thumb
|
|
90
|
+
aria-valuemin={(min ?? 0) * ariaValueModifier}
|
|
91
|
+
aria-valuenow={value * ariaValueModifier}
|
|
92
|
+
aria-valuemax={steps * ariaValueModifier}
|
|
93
|
+
aria-label={titleAndLabel}
|
|
94
|
+
className="tlui-slider__thumb"
|
|
95
|
+
dir="ltr"
|
|
96
|
+
ref={ref}
|
|
97
|
+
tabIndex={tabIndex}
|
|
98
|
+
/>
|
|
99
|
+
)}
|
|
100
|
+
</_Slider.Root>
|
|
101
|
+
</TldrawUiTooltip>
|
|
97
102
|
</div>
|
|
98
103
|
)
|
|
99
104
|
})
|
|
@@ -34,7 +34,7 @@ class TooltipManager {
|
|
|
34
34
|
sideOffset: number
|
|
35
35
|
showOnMobile: boolean
|
|
36
36
|
targetElement: HTMLElement
|
|
37
|
-
delayDuration: number
|
|
37
|
+
delayDuration: number
|
|
38
38
|
} | null>('current tooltip', null)
|
|
39
39
|
private destroyTimeoutId: number | null = null
|
|
40
40
|
|
|
@@ -52,7 +52,7 @@ class TooltipManager {
|
|
|
52
52
|
side: 'top' | 'right' | 'bottom' | 'left',
|
|
53
53
|
sideOffset: number,
|
|
54
54
|
showOnMobile: boolean,
|
|
55
|
-
delayDuration: number
|
|
55
|
+
delayDuration: number
|
|
56
56
|
) {
|
|
57
57
|
// Clear any existing destroy timeout
|
|
58
58
|
if (this.destroyTimeoutId) {
|
|
@@ -139,11 +139,9 @@ export function TldrawUiTooltipProvider({ children }: TldrawUiTooltipProviderPro
|
|
|
139
139
|
|
|
140
140
|
// The singleton tooltip component that renders once
|
|
141
141
|
function TooltipSingleton() {
|
|
142
|
-
const editor = useMaybeEditor()
|
|
143
142
|
const [isOpen, setIsOpen] = useState(false)
|
|
144
143
|
const triggerRef = useRef<HTMLDivElement>(null)
|
|
145
144
|
const isFirstShowRef = useRef(true)
|
|
146
|
-
const showTimeoutRef = useRef<number | null>(null)
|
|
147
145
|
|
|
148
146
|
const currentTooltip = useValue(
|
|
149
147
|
'current tooltip',
|
|
@@ -153,12 +151,7 @@ function TooltipSingleton() {
|
|
|
153
151
|
|
|
154
152
|
// Update open state and trigger position
|
|
155
153
|
useEffect(() => {
|
|
156
|
-
|
|
157
|
-
if (showTimeoutRef.current) {
|
|
158
|
-
clearTimeout(showTimeoutRef.current)
|
|
159
|
-
showTimeoutRef.current = null
|
|
160
|
-
}
|
|
161
|
-
|
|
154
|
+
let timer: ReturnType<typeof setTimeout> | null = null
|
|
162
155
|
if (currentTooltip && triggerRef.current) {
|
|
163
156
|
// Position the invisible trigger element over the active element
|
|
164
157
|
const activeRect = currentTooltip.targetElement.getBoundingClientRect()
|
|
@@ -173,11 +166,12 @@ function TooltipSingleton() {
|
|
|
173
166
|
trigger.style.zIndex = '9999'
|
|
174
167
|
|
|
175
168
|
// Handle delay for first show
|
|
176
|
-
if (isFirstShowRef.current
|
|
177
|
-
|
|
169
|
+
if (isFirstShowRef.current) {
|
|
170
|
+
// eslint-disable-next-line no-restricted-globals
|
|
171
|
+
timer = setTimeout(() => {
|
|
178
172
|
setIsOpen(true)
|
|
179
173
|
isFirstShowRef.current = false
|
|
180
|
-
}, currentTooltip.delayDuration
|
|
174
|
+
}, currentTooltip.delayDuration)
|
|
181
175
|
} else {
|
|
182
176
|
// Subsequent tooltips show immediately
|
|
183
177
|
setIsOpen(true)
|
|
@@ -188,7 +182,13 @@ function TooltipSingleton() {
|
|
|
188
182
|
// Reset first show state after tooltip is hidden
|
|
189
183
|
isFirstShowRef.current = true
|
|
190
184
|
}
|
|
191
|
-
|
|
185
|
+
|
|
186
|
+
return () => {
|
|
187
|
+
if (timer !== null) {
|
|
188
|
+
clearTimeout(timer)
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}, [currentTooltip])
|
|
192
192
|
|
|
193
193
|
if (!currentTooltip) {
|
|
194
194
|
return null
|
|
@@ -249,15 +249,13 @@ export const TldrawUiTooltip = forwardRef<HTMLButtonElement, TldrawUiTooltipProp
|
|
|
249
249
|
return <>{children}</>
|
|
250
250
|
}
|
|
251
251
|
|
|
252
|
+
const delayDurationToUse =
|
|
253
|
+
delayDuration ?? (editor?.options.tooltipDelayMs || DEFAULT_TOOLTIP_DELAY_MS)
|
|
254
|
+
|
|
252
255
|
// Fallback to old behavior if no provider
|
|
253
256
|
if (!hasProvider) {
|
|
254
257
|
return (
|
|
255
|
-
<_Tooltip.Root
|
|
256
|
-
delayDuration={
|
|
257
|
-
delayDuration ?? (editor?.options.tooltipDelayMs || DEFAULT_TOOLTIP_DELAY_MS)
|
|
258
|
-
}
|
|
259
|
-
disableHoverableContent
|
|
260
|
-
>
|
|
258
|
+
<_Tooltip.Root delayDuration={delayDurationToUse} disableHoverableContent>
|
|
261
259
|
<_Tooltip.Trigger asChild ref={ref}>
|
|
262
260
|
{children}
|
|
263
261
|
</_Tooltip.Trigger>
|
|
@@ -288,7 +286,7 @@ export const TldrawUiTooltip = forwardRef<HTMLButtonElement, TldrawUiTooltipProp
|
|
|
288
286
|
sideToUse,
|
|
289
287
|
sideOffset,
|
|
290
288
|
showOnMobile,
|
|
291
|
-
|
|
289
|
+
delayDurationToUse
|
|
292
290
|
)
|
|
293
291
|
}
|
|
294
292
|
|
|
@@ -306,7 +304,7 @@ export const TldrawUiTooltip = forwardRef<HTMLButtonElement, TldrawUiTooltipProp
|
|
|
306
304
|
sideToUse,
|
|
307
305
|
sideOffset,
|
|
308
306
|
showOnMobile,
|
|
309
|
-
|
|
307
|
+
delayDurationToUse
|
|
310
308
|
)
|
|
311
309
|
}
|
|
312
310
|
|
|
@@ -12,6 +12,7 @@ import {
|
|
|
12
12
|
import { CursorChatBubble } from '../components/CursorChatBubble'
|
|
13
13
|
import { DefaultDebugMenu } from '../components/DebugMenu/DefaultDebugMenu'
|
|
14
14
|
import { DefaultDebugPanel } from '../components/DefaultDebugPanel'
|
|
15
|
+
import { DefaultFollowingIndicator } from '../components/DefaultFollowingIndicator'
|
|
15
16
|
import { DefaultMenuPanel } from '../components/DefaultMenuPanel'
|
|
16
17
|
import { DefaultDialogs } from '../components/Dialogs'
|
|
17
18
|
import { TLUiHelpMenuProps } from '../components/HelpMenu/DefaultHelpMenu'
|
|
@@ -72,6 +73,7 @@ export interface TLUiComponents {
|
|
|
72
73
|
Dialogs?: ComponentType | null
|
|
73
74
|
Toasts?: ComponentType | null
|
|
74
75
|
A11y?: ComponentType | null
|
|
76
|
+
FollowingIndicator?: ComponentType | null
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
const TldrawUiComponentsContext = createContext<TLUiComponents | null>(null)
|
|
@@ -119,6 +121,7 @@ export function TldrawUiComponentsProvider({
|
|
|
119
121
|
Dialogs: DefaultDialogs,
|
|
120
122
|
Toasts: DefaultToasts,
|
|
121
123
|
A11y: DefaultA11yAnnouncer,
|
|
124
|
+
FollowingIndicator: DefaultFollowingIndicator,
|
|
122
125
|
..._overrides,
|
|
123
126
|
}),
|
|
124
127
|
[_overrides, showCollaborationUi]
|
|
@@ -123,7 +123,7 @@ export interface TLUiEventMap {
|
|
|
123
123
|
'shrink-shapes': null
|
|
124
124
|
'flatten-to-image': null
|
|
125
125
|
'a11y-repeat-shape-announce': null
|
|
126
|
-
'open-url': {
|
|
126
|
+
'open-url': { destinationUrl: string }
|
|
127
127
|
'open-context-menu': null
|
|
128
128
|
'adjust-shape-styles': null
|
|
129
129
|
'copy-link': null
|
|
@@ -187,6 +187,7 @@ export const DEFAULT_TRANSLATION = {
|
|
|
187
187
|
'geo-style.pentagon': 'Pentagon',
|
|
188
188
|
'geo-style.rectangle': 'Rectangle',
|
|
189
189
|
'geo-style.rhombus': 'Rhombus',
|
|
190
|
+
'geo-style.rhombus-2': 'Rhombus left',
|
|
190
191
|
'geo-style.star': 'Star',
|
|
191
192
|
'geo-style.trapezoid': 'Trapezoid',
|
|
192
193
|
'geo-style.triangle': 'Triangle',
|
package/src/lib/ui/kbd-utils.ts
CHANGED
|
@@ -31,9 +31,16 @@ export function kbd(str: string) {
|
|
|
31
31
|
)
|
|
32
32
|
.flat()
|
|
33
33
|
.map((sub, index) => {
|
|
34
|
-
if (sub === '
|
|
35
|
-
|
|
36
|
-
|
|
34
|
+
if (sub[0] === '+') return []
|
|
35
|
+
|
|
36
|
+
let modifiedKey
|
|
37
|
+
if (sub === '__CTRL__') {
|
|
38
|
+
modifiedKey = 'Ctrl'
|
|
39
|
+
} else if (sub === '__ALT__') {
|
|
40
|
+
modifiedKey = 'Alt'
|
|
41
|
+
} else {
|
|
42
|
+
modifiedKey = sub[0].toUpperCase() + sub.slice(1)
|
|
43
|
+
}
|
|
37
44
|
return tlenv.isDarwin || !index ? modifiedKey : ['+', modifiedKey]
|
|
38
45
|
})
|
|
39
46
|
.flat()
|
package/src/lib/ui/version.ts
CHANGED
|
@@ -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 = '3.16.0-canary.
|
|
4
|
+
export const version = '3.16.0-canary.99cd20c3ee29'
|
|
5
5
|
export const publishDates = {
|
|
6
6
|
major: '2024-09-13T14:36:29.063Z',
|
|
7
|
-
minor: '2025-08-
|
|
8
|
-
patch: '2025-08-
|
|
7
|
+
minor: '2025-08-27T11:23:48.026Z',
|
|
8
|
+
patch: '2025-08-27T11:23:48.026Z',
|
|
9
9
|
}
|
package/src/lib/ui.css
CHANGED
|
@@ -1047,6 +1047,9 @@
|
|
|
1047
1047
|
}
|
|
1048
1048
|
|
|
1049
1049
|
@media (hover: hover) {
|
|
1050
|
+
.tlui-style-panel .tlui-button[aria-expanded='true'] {
|
|
1051
|
+
background: none;
|
|
1052
|
+
}
|
|
1050
1053
|
.tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
|
|
1051
1054
|
opacity: 1;
|
|
1052
1055
|
background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
|
package/tldraw.css
CHANGED
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
--tl-layer-watermark: 200;
|
|
34
34
|
--tl-layer-canvas-shapes: 300;
|
|
35
35
|
--tl-layer-canvas-overlays: 500;
|
|
36
|
+
--tl-layer-canvas-in-front: 600;
|
|
36
37
|
--tl-layer-canvas-blocker: 10000;
|
|
37
38
|
|
|
38
39
|
/* Canvas overlays z-index */
|
|
@@ -301,6 +302,13 @@ input,
|
|
|
301
302
|
contain: strict;
|
|
302
303
|
}
|
|
303
304
|
|
|
305
|
+
.tl-canvas__in-front {
|
|
306
|
+
position: absolute;
|
|
307
|
+
inset: 0;
|
|
308
|
+
pointer-events: none;
|
|
309
|
+
z-index: var(--tl-layer-canvas-in-front);
|
|
310
|
+
}
|
|
311
|
+
|
|
304
312
|
.tl-shapes {
|
|
305
313
|
position: relative;
|
|
306
314
|
z-index: var(--tl-layer-canvas-shapes);
|
|
@@ -2830,6 +2838,9 @@ it from receiving any pointer events or affecting the cursor. */
|
|
|
2830
2838
|
}
|
|
2831
2839
|
|
|
2832
2840
|
@media (hover: hover) {
|
|
2841
|
+
.tlui-style-panel .tlui-button[aria-expanded='true'] {
|
|
2842
|
+
background: none;
|
|
2843
|
+
}
|
|
2833
2844
|
.tlui-style-panel .tlui-button[data-state='open']:not(:hover)::after {
|
|
2834
2845
|
opacity: 1;
|
|
2835
2846
|
background: linear-gradient(270deg, rgba(144, 144, 144, 0) 0%, var(--tl-color-muted-2) 100%);
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/lib/ui/components/FollowingIndicator.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useEditor, usePresence, useValue } from '@tldraw/editor'\n\nexport function FollowingIndicator() {\n\tconst editor = useEditor()\n\tconst followingUserId = useValue('follow', () => editor.getInstanceState().followingUserId, [\n\t\teditor,\n\t])\n\tif (!followingUserId) return null\n\treturn <FollowingIndicatorInner userId={followingUserId} />\n}\n\nfunction FollowingIndicatorInner({ userId }: { userId: string }) {\n\tconst presence = usePresence(userId)\n\tif (!presence) return null\n\treturn <div className=\"tlui-following-indicator\" style={{ borderColor: presence.color }} />\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAQQ;AARR,oBAAiD;AAE1C,SAAS,qBAAqB;AACpC,QAAM,aAAS,yBAAU;AACzB,QAAM,sBAAkB,wBAAS,UAAU,MAAM,OAAO,iBAAiB,EAAE,iBAAiB;AAAA,IAC3F;AAAA,EACD,CAAC;AACD,MAAI,CAAC,gBAAiB,QAAO;AAC7B,SAAO,4CAAC,2BAAwB,QAAQ,iBAAiB;AAC1D;AAEA,SAAS,wBAAwB,EAAE,OAAO,GAAuB;AAChE,QAAM,eAAW,2BAAY,MAAM;AACnC,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,4CAAC,SAAI,WAAU,4BAA2B,OAAO,EAAE,aAAa,SAAS,MAAM,GAAG;AAC1F;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../../../src/lib/ui/components/FollowingIndicator.tsx"],
|
|
4
|
-
"sourcesContent": ["import { useEditor, usePresence, useValue } from '@tldraw/editor'\n\nexport function FollowingIndicator() {\n\tconst editor = useEditor()\n\tconst followingUserId = useValue('follow', () => editor.getInstanceState().followingUserId, [\n\t\teditor,\n\t])\n\tif (!followingUserId) return null\n\treturn <FollowingIndicatorInner userId={followingUserId} />\n}\n\nfunction FollowingIndicatorInner({ userId }: { userId: string }) {\n\tconst presence = usePresence(userId)\n\tif (!presence) return null\n\treturn <div className=\"tlui-following-indicator\" style={{ borderColor: presence.color }} />\n}\n"],
|
|
5
|
-
"mappings": "AAQQ;AARR,SAAS,WAAW,aAAa,gBAAgB;AAE1C,SAAS,qBAAqB;AACpC,QAAM,SAAS,UAAU;AACzB,QAAM,kBAAkB,SAAS,UAAU,MAAM,OAAO,iBAAiB,EAAE,iBAAiB;AAAA,IAC3F;AAAA,EACD,CAAC;AACD,MAAI,CAAC,gBAAiB,QAAO;AAC7B,SAAO,oBAAC,2BAAwB,QAAQ,iBAAiB;AAC1D;AAEA,SAAS,wBAAwB,EAAE,OAAO,GAAuB;AAChE,QAAM,WAAW,YAAY,MAAM;AACnC,MAAI,CAAC,SAAU,QAAO;AACtB,SAAO,oBAAC,SAAI,WAAU,4BAA2B,OAAO,EAAE,aAAa,SAAS,MAAM,GAAG;AAC1F;",
|
|
6
|
-
"names": []
|
|
7
|
-
}
|