tldraw 3.16.0-canary.e1b1e53d3c16 → 3.16.0-canary.eb9a487b3293
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 +143 -102
- package/dist-cjs/index.js +28 -14
- 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/shapes/arrow/arrowLabel.js +6 -0
- package/dist-cjs/lib/shapes/arrow/arrowLabel.js.map +3 -3
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +6 -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/shapes/shared/PlainTextLabel.js +1 -3
- package/dist-cjs/lib/shapes/shared/PlainTextLabel.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/useEditablePlainText.js +0 -2
- package/dist-cjs/lib/shapes/shared/useEditablePlainText.js.map +2 -2
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.js +0 -2
- package/dist-cjs/lib/shapes/shared/useImageOrVideoAsset.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/DefaultStylePanel.js +9 -4
- package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanel.js.map +2 -2
- package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js +255 -316
- package/dist-cjs/lib/ui/components/StylePanel/DefaultStylePanelContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/{primitives/TldrawUiButtonPicker.js → StylePanel/StylePanelButtonPicker.js} +52 -45
- package/dist-cjs/lib/ui/components/StylePanel/StylePanelButtonPicker.js.map +7 -0
- package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js +68 -0
- package/dist-cjs/lib/ui/components/StylePanel/StylePanelContext.js.map +7 -0
- package/dist-cjs/lib/ui/components/StylePanel/{DoubleDropdownPicker.js → StylePanelDoubleDropdownPicker.js} +23 -22
- package/dist-cjs/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.js.map +7 -0
- package/dist-cjs/lib/ui/components/StylePanel/{DropdownPicker.js → StylePanelDropdownPicker.js} +23 -20
- package/dist-cjs/lib/ui/components/StylePanel/StylePanelDropdownPicker.js.map +7 -0
- package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js +28 -0
- package/dist-cjs/lib/ui/components/StylePanel/StylePanelSubheading.js.map +7 -0
- package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js +3 -2
- package/dist-cjs/lib/ui/components/Toolbar/AltTextEditor.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js +38 -9
- package/dist-cjs/lib/ui/components/Toolbar/DefaultImageToolbarContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js +15 -3
- package/dist-cjs/lib/ui/components/Toolbar/DefaultVideoToolbarContent.js.map +2 -2
- package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js +3 -3
- package/dist-cjs/lib/ui/components/Toolbar/LinkEditor.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js +10 -1
- package/dist-cjs/lib/ui/components/primitives/TldrawUiContextualToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js +17 -4
- package/dist-cjs/lib/ui/components/primitives/TldrawUiSlider.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js +2 -0
- package/dist-cjs/lib/ui/components/primitives/TldrawUiToolbar.js.map +2 -2
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js +7 -0
- package/dist-cjs/lib/ui/components/primitives/TldrawUiTooltip.js.map +2 -2
- package/dist-cjs/lib/ui/context/actions.js +7 -8
- package/dist-cjs/lib/ui/context/actions.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/useExportAs.js +3 -2
- package/dist-cjs/lib/ui/hooks/useExportAs.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useTools.js +1 -1
- package/dist-cjs/lib/ui/hooks/useTools.js.map +2 -2
- package/dist-cjs/lib/ui/hooks/useTranslation/TLUiTranslationKey.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useTranslation/defaultTranslation.js +2 -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-cjs/lib/utils/export/copyAs.js +1 -2
- package/dist-cjs/lib/utils/export/copyAs.js.map +2 -2
- package/dist-cjs/lib/utils/export/export.js +0 -20
- package/dist-cjs/lib/utils/export/export.js.map +2 -2
- package/dist-cjs/lib/utils/export/exportAs.js +1 -2
- package/dist-cjs/lib/utils/export/exportAs.js.map +2 -2
- package/dist-esm/index.d.mts +143 -102
- package/dist-esm/index.mjs +55 -29
- 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/shapes/arrow/arrowLabel.mjs +6 -0
- package/dist-esm/lib/shapes/arrow/arrowLabel.mjs.map +3 -3
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +6 -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/shapes/shared/PlainTextLabel.mjs +1 -3
- package/dist-esm/lib/shapes/shared/PlainTextLabel.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs +0 -2
- package/dist-esm/lib/shapes/shared/useEditablePlainText.mjs.map +2 -2
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.mjs +0 -2
- package/dist-esm/lib/shapes/shared/useImageOrVideoAsset.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/DefaultStylePanel.mjs +14 -5
- package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanel.mjs.map +2 -2
- package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs +257 -320
- package/dist-esm/lib/ui/components/StylePanel/DefaultStylePanelContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/{primitives/TldrawUiButtonPicker.mjs → StylePanel/StylePanelButtonPicker.mjs} +54 -43
- package/dist-esm/lib/ui/components/StylePanel/StylePanelButtonPicker.mjs.map +7 -0
- package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs +48 -0
- package/dist-esm/lib/ui/components/StylePanel/StylePanelContext.mjs.map +7 -0
- package/dist-esm/lib/ui/components/StylePanel/{DoubleDropdownPicker.mjs → StylePanelDoubleDropdownPicker.mjs} +20 -19
- package/dist-esm/lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker.mjs.map +7 -0
- package/dist-esm/lib/ui/components/StylePanel/{DropdownPicker.mjs → StylePanelDropdownPicker.mjs} +20 -17
- package/dist-esm/lib/ui/components/StylePanel/StylePanelDropdownPicker.mjs.map +7 -0
- package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs +8 -0
- package/dist-esm/lib/ui/components/StylePanel/StylePanelSubheading.mjs.map +7 -0
- package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs +3 -2
- package/dist-esm/lib/ui/components/Toolbar/AltTextEditor.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs +38 -9
- package/dist-esm/lib/ui/components/Toolbar/DefaultImageToolbarContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs +15 -3
- package/dist-esm/lib/ui/components/Toolbar/DefaultVideoToolbarContent.mjs.map +2 -2
- package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs +3 -3
- package/dist-esm/lib/ui/components/Toolbar/LinkEditor.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs +10 -1
- package/dist-esm/lib/ui/components/primitives/TldrawUiContextualToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs +17 -4
- package/dist-esm/lib/ui/components/primitives/TldrawUiSlider.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs +2 -0
- package/dist-esm/lib/ui/components/primitives/TldrawUiToolbar.mjs.map +2 -2
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs +7 -0
- package/dist-esm/lib/ui/components/primitives/TldrawUiTooltip.mjs.map +2 -2
- package/dist-esm/lib/ui/context/actions.mjs +7 -8
- package/dist-esm/lib/ui/context/actions.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/useExportAs.mjs +3 -2
- package/dist-esm/lib/ui/hooks/useExportAs.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useTools.mjs +1 -1
- package/dist-esm/lib/ui/hooks/useTools.mjs.map +2 -2
- package/dist-esm/lib/ui/hooks/useTranslation/defaultTranslation.mjs +2 -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/dist-esm/lib/utils/export/copyAs.mjs +1 -2
- package/dist-esm/lib/utils/export/copyAs.mjs.map +2 -2
- package/dist-esm/lib/utils/export/export.mjs +0 -20
- package/dist-esm/lib/utils/export/export.mjs.map +2 -2
- package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
- package/dist-esm/lib/utils/export/exportAs.mjs.map +2 -2
- package/package.json +3 -3
- package/src/index.ts +40 -22
- package/src/lib/Tldraw.tsx +15 -2
- package/src/lib/shapes/arrow/arrowLabel.ts +8 -0
- package/src/lib/shapes/frame/FrameShapeUtil.tsx +8 -0
- package/src/lib/shapes/image/ImageShapeUtil.tsx +3 -0
- package/src/lib/shapes/shared/PlainTextLabel.tsx +0 -6
- package/src/lib/shapes/shared/useEditablePlainText.ts +0 -6
- package/src/lib/shapes/shared/useImageOrVideoAsset.ts +0 -7
- 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/DefaultStylePanel.tsx +27 -13
- package/src/lib/ui/components/StylePanel/DefaultStylePanelContent.tsx +260 -381
- package/src/lib/ui/components/{primitives/TldrawUiButtonPicker.tsx → StylePanel/StylePanelButtonPicker.tsx} +63 -50
- package/src/lib/ui/components/StylePanel/StylePanelContext.tsx +63 -0
- package/src/lib/ui/components/StylePanel/{DoubleDropdownPicker.tsx → StylePanelDoubleDropdownPicker.tsx} +28 -19
- package/src/lib/ui/components/StylePanel/StylePanelDropdownPicker.tsx +119 -0
- package/src/lib/ui/components/StylePanel/StylePanelSubheading.tsx +9 -0
- package/src/lib/ui/components/Toolbar/AltTextEditor.tsx +4 -3
- package/src/lib/ui/components/Toolbar/DefaultImageToolbarContent.tsx +32 -15
- package/src/lib/ui/components/Toolbar/DefaultVideoToolbarContent.tsx +12 -4
- package/src/lib/ui/components/Toolbar/LinkEditor.tsx +5 -5
- package/src/lib/ui/components/primitives/TldrawUiContextualToolbar.tsx +6 -1
- package/src/lib/ui/components/primitives/TldrawUiSlider.tsx +50 -30
- package/src/lib/ui/components/primitives/TldrawUiToolbar.tsx +3 -0
- package/src/lib/ui/components/primitives/TldrawUiTooltip.tsx +10 -0
- package/src/lib/ui/context/actions.tsx +7 -8
- package/src/lib/ui/context/components.tsx +3 -0
- package/src/lib/ui/context/events.tsx +1 -1
- package/src/lib/ui/hooks/useExportAs.ts +3 -2
- package/src/lib/ui/hooks/useTools.tsx +1 -1
- package/src/lib/ui/hooks/useTranslation/TLUiTranslationKey.ts +2 -0
- package/src/lib/ui/hooks/useTranslation/defaultTranslation.ts +2 -0
- package/src/lib/ui/kbd-utils.ts +10 -3
- package/src/lib/ui/version.ts +3 -3
- package/src/lib/ui.css +16 -2
- package/src/lib/utils/export/copyAs.ts +1 -24
- package/src/lib/utils/export/export.ts +0 -36
- package/src/lib/utils/export/exportAs.ts +1 -32
- package/src/test/custom-clipping.test.ts +436 -0
- package/tldraw.css +24 -2
- package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +0 -7
- package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +0 -7
- package/dist-cjs/lib/ui/components/StylePanel/DropdownPicker.js.map +0 -7
- package/dist-cjs/lib/ui/components/primitives/TldrawUiButtonPicker.js.map +0 -7
- package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +0 -7
- package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +0 -7
- package/dist-esm/lib/ui/components/StylePanel/DropdownPicker.mjs.map +0 -7
- package/dist-esm/lib/ui/components/primitives/TldrawUiButtonPicker.mjs.map +0 -7
- package/src/lib/ui/components/StylePanel/DropdownPicker.tsx +0 -110
package/src/index.ts
CHANGED
|
@@ -24,6 +24,7 @@ export { usePrefersReducedMotion } from './lib/shapes/shared/usePrefersReducedMo
|
|
|
24
24
|
export { DefaultA11yAnnouncer, useSelectedShapesAnnouncer } from './lib/ui/components/A11y'
|
|
25
25
|
export { AccessibilityMenu } from './lib/ui/components/AccessibilityMenu'
|
|
26
26
|
export { ColorSchemeMenu } from './lib/ui/components/ColorSchemeMenu'
|
|
27
|
+
export { DefaultFollowingIndicator } from './lib/ui/components/DefaultFollowingIndicator'
|
|
27
28
|
export { DefaultDialogs } from './lib/ui/components/Dialogs'
|
|
28
29
|
export {
|
|
29
30
|
TldrawUiColumn,
|
|
@@ -170,11 +171,7 @@ export {
|
|
|
170
171
|
export { getStrokePoints } from './lib/shapes/shared/freehand/getStrokePoints'
|
|
171
172
|
export { getSvgPathFromStrokePoints } from './lib/shapes/shared/freehand/svg'
|
|
172
173
|
export { type StrokeOptions, type StrokePoint } from './lib/shapes/shared/freehand/types'
|
|
173
|
-
export {
|
|
174
|
-
PlainTextLabel,
|
|
175
|
-
TextLabel,
|
|
176
|
-
type PlainTextLabelProps,
|
|
177
|
-
} from './lib/shapes/shared/PlainTextLabel'
|
|
174
|
+
export { PlainTextLabel, type PlainTextLabelProps } from './lib/shapes/shared/PlainTextLabel'
|
|
178
175
|
export {
|
|
179
176
|
RichTextLabel,
|
|
180
177
|
RichTextSVG,
|
|
@@ -182,10 +179,9 @@ export {
|
|
|
182
179
|
type RichTextSVGProps,
|
|
183
180
|
} from './lib/shapes/shared/RichTextLabel'
|
|
184
181
|
export { useDefaultColorTheme } from './lib/shapes/shared/useDefaultColorTheme'
|
|
185
|
-
export { useEditablePlainText
|
|
182
|
+
export { useEditablePlainText } from './lib/shapes/shared/useEditablePlainText'
|
|
186
183
|
export { useEditableRichText } from './lib/shapes/shared/useEditableRichText'
|
|
187
184
|
export {
|
|
188
|
-
useAsset,
|
|
189
185
|
useImageOrVideoAsset,
|
|
190
186
|
type UseImageOrVideoAssetOptions,
|
|
191
187
|
} from './lib/shapes/shared/useImageOrVideoAsset'
|
|
@@ -364,10 +360,6 @@ export {
|
|
|
364
360
|
TldrawUiMenuSubmenu,
|
|
365
361
|
type TLUiMenuSubmenuProps,
|
|
366
362
|
} from './lib/ui/components/primitives/menus/TldrawUiMenuSubmenu'
|
|
367
|
-
export {
|
|
368
|
-
TldrawUiButtonPicker,
|
|
369
|
-
type TLUiButtonPickerProps,
|
|
370
|
-
} from './lib/ui/components/primitives/TldrawUiButtonPicker'
|
|
371
363
|
export {
|
|
372
364
|
TldrawUiContextualToolbar,
|
|
373
365
|
type TLUiContextualToolbarProps,
|
|
@@ -447,17 +439,44 @@ export {
|
|
|
447
439
|
type TLUiStylePanelProps,
|
|
448
440
|
} from './lib/ui/components/StylePanel/DefaultStylePanel'
|
|
449
441
|
export {
|
|
450
|
-
ArrowheadStylePickerSet,
|
|
451
|
-
CommonStylePickerSet,
|
|
452
442
|
DefaultStylePanelContent,
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
443
|
+
StylePanelArrowheadPicker,
|
|
444
|
+
StylePanelArrowKindPicker,
|
|
445
|
+
StylePanelColorPicker,
|
|
446
|
+
StylePanelDashPicker,
|
|
447
|
+
StylePanelFillPicker,
|
|
448
|
+
StylePanelFontPicker,
|
|
449
|
+
StylePanelGeoShapePicker,
|
|
450
|
+
StylePanelLabelAlignPicker,
|
|
451
|
+
StylePanelOpacityPicker,
|
|
452
|
+
StylePanelSection,
|
|
453
|
+
StylePanelSizePicker,
|
|
454
|
+
StylePanelSplinePicker,
|
|
455
|
+
StylePanelTextAlignPicker,
|
|
456
|
+
type StylePanelSectionProps,
|
|
460
457
|
} from './lib/ui/components/StylePanel/DefaultStylePanelContent'
|
|
458
|
+
export {
|
|
459
|
+
StylePanelButtonPicker,
|
|
460
|
+
type StylePanelButtonPickerProps,
|
|
461
|
+
} from './lib/ui/components/StylePanel/StylePanelButtonPicker'
|
|
462
|
+
export {
|
|
463
|
+
StylePanelContextProvider,
|
|
464
|
+
useStylePanelContext,
|
|
465
|
+
type StylePanelContext,
|
|
466
|
+
type StylePanelContextProviderProps,
|
|
467
|
+
} from './lib/ui/components/StylePanel/StylePanelContext'
|
|
468
|
+
export {
|
|
469
|
+
StylePanelDoubleDropdownPicker,
|
|
470
|
+
type StylePanelDoubleDropdownPickerProps,
|
|
471
|
+
} from './lib/ui/components/StylePanel/StylePanelDoubleDropdownPicker'
|
|
472
|
+
export {
|
|
473
|
+
StylePanelDropdownPicker,
|
|
474
|
+
type StylePanelDropdownPickerProps,
|
|
475
|
+
} from './lib/ui/components/StylePanel/StylePanelDropdownPicker'
|
|
476
|
+
export {
|
|
477
|
+
StylePanelSubheading,
|
|
478
|
+
type StylePanelSubheadingProps,
|
|
479
|
+
} from './lib/ui/components/StylePanel/StylePanelSubheading'
|
|
461
480
|
export {
|
|
462
481
|
DefaultImageToolbar,
|
|
463
482
|
type TLUiImageToolbarProps,
|
|
@@ -629,13 +648,12 @@ export {
|
|
|
629
648
|
} from './lib/ui/hooks/useTranslation/useTranslation'
|
|
630
649
|
export { type TLUiIconType } from './lib/ui/icon-types'
|
|
631
650
|
export { useDefaultHelpers, type TLUiOverrideHelpers, type TLUiOverrides } from './lib/ui/overrides'
|
|
632
|
-
export { TldrawUi, type TldrawUiProps } from './lib/ui/TldrawUi'
|
|
651
|
+
export { TldrawUi, TldrawUiInFrontOfTheCanvas, type TldrawUiProps } from './lib/ui/TldrawUi'
|
|
633
652
|
export { containBoxSize, downsizeImage, type BoxWidthHeight } from './lib/utils/assets/assets'
|
|
634
653
|
export { preloadFont, type TLTypeFace } from './lib/utils/assets/preload-font'
|
|
635
654
|
export { getEmbedInfo, type TLEmbedResult } from './lib/utils/embeds/embeds'
|
|
636
655
|
export { putExcalidrawContent } from './lib/utils/excalidraw/putExcalidrawContent'
|
|
637
656
|
export { copyAs, type CopyAsOptions, type TLCopyType } from './lib/utils/export/copyAs'
|
|
638
|
-
export { exportToBlob } from './lib/utils/export/export'
|
|
639
657
|
export { downloadFile, exportAs, type ExportAsOptions } from './lib/utils/export/exportAs'
|
|
640
658
|
export { fitFrameToContent, removeFrame } from './lib/utils/frames/frames'
|
|
641
659
|
export {
|
package/src/lib/Tldraw.tsx
CHANGED
|
@@ -33,7 +33,7 @@ import { registerDefaultSideEffects } from './defaultSideEffects'
|
|
|
33
33
|
import { defaultTools } from './defaultTools'
|
|
34
34
|
import { EmbedShapeUtil } from './shapes/embed/EmbedShapeUtil'
|
|
35
35
|
import { allDefaultFontFaces } from './shapes/shared/defaultFonts'
|
|
36
|
-
import { TldrawUi, TldrawUiProps } from './ui/TldrawUi'
|
|
36
|
+
import { TldrawUi, TldrawUiInFrontOfTheCanvas, TldrawUiProps } from './ui/TldrawUi'
|
|
37
37
|
import { TLUiAssetUrlOverrides, useDefaultUiAssetUrlsWithOverrides } from './ui/assetUrls'
|
|
38
38
|
import { LoadingScreen } from './ui/components/LoadingScreen'
|
|
39
39
|
import { Spinner } from './ui/components/Spinner'
|
|
@@ -118,6 +118,18 @@ export function Tldraw(props: TldrawProps) {
|
|
|
118
118
|
|
|
119
119
|
const _components = useShallowObjectIdentity(components)
|
|
120
120
|
|
|
121
|
+
const CustomInFrontOfTheCanvas = components?.InFrontOfTheCanvas
|
|
122
|
+
const InFrontOfTheCanvas = useMemo(() => {
|
|
123
|
+
if (rest.hideUi) return CustomInFrontOfTheCanvas ?? null
|
|
124
|
+
if (!CustomInFrontOfTheCanvas) return TldrawUiInFrontOfTheCanvas
|
|
125
|
+
|
|
126
|
+
return () => (
|
|
127
|
+
<>
|
|
128
|
+
<TldrawUiInFrontOfTheCanvas />
|
|
129
|
+
<CustomInFrontOfTheCanvas />
|
|
130
|
+
</>
|
|
131
|
+
)
|
|
132
|
+
}, [rest.hideUi, CustomInFrontOfTheCanvas])
|
|
121
133
|
const componentsWithDefault = useMemo(
|
|
122
134
|
() => ({
|
|
123
135
|
Scribble: TldrawScribble,
|
|
@@ -129,8 +141,9 @@ export function Tldraw(props: TldrawProps) {
|
|
|
129
141
|
Spinner,
|
|
130
142
|
LoadingScreen,
|
|
131
143
|
..._components,
|
|
144
|
+
InFrontOfTheCanvas,
|
|
132
145
|
}),
|
|
133
|
-
[_components]
|
|
146
|
+
[_components, InFrontOfTheCanvas]
|
|
134
147
|
)
|
|
135
148
|
|
|
136
149
|
const _shapeUtils = useShallowArrayIdentity(shapeUtils)
|
|
@@ -227,6 +227,14 @@ interface ArrowheadInfo {
|
|
|
227
227
|
hasEndArrowhead: boolean
|
|
228
228
|
}
|
|
229
229
|
export function getArrowLabelPosition(editor: Editor, shape: TLArrowShape) {
|
|
230
|
+
const isEditing = editor.getEditingShapeId() === shape.id
|
|
231
|
+
if (!isEditing && isEmptyRichText(shape.props.richText)) {
|
|
232
|
+
// Short-circuit for empty labels.
|
|
233
|
+
const bodyGeom = getArrowBodyGeometry(editor, shape)
|
|
234
|
+
const labelCenter = bodyGeom.interpolateAlongEdge(0.5)
|
|
235
|
+
return { box: Box.FromCenter(labelCenter, new Vec(0, 0)), debugGeom: [] }
|
|
236
|
+
}
|
|
237
|
+
|
|
230
238
|
const debugGeom: Geometry2d[] = []
|
|
231
239
|
const info = getArrowInfo(editor, shape)!
|
|
232
240
|
|
|
@@ -100,6 +100,10 @@ export class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {
|
|
|
100
100
|
return false
|
|
101
101
|
}
|
|
102
102
|
|
|
103
|
+
override isExportBoundsContainer(): boolean {
|
|
104
|
+
return true
|
|
105
|
+
}
|
|
106
|
+
|
|
103
107
|
override getDefaultProps(): TLFrameShape['props'] {
|
|
104
108
|
return { w: 160 * 2, h: 90 * 2, name: '', color: 'black' }
|
|
105
109
|
}
|
|
@@ -335,6 +339,10 @@ export class FrameShapeUtil extends BaseBoxShapeUtil<TLFrameShape> {
|
|
|
335
339
|
return true
|
|
336
340
|
}
|
|
337
341
|
|
|
342
|
+
override getClipPath(shape: TLFrameShape) {
|
|
343
|
+
return this.editor.getShapeGeometry(shape.id).vertices
|
|
344
|
+
}
|
|
345
|
+
|
|
338
346
|
override canReceiveNewChildrenOfType(shape: TLShape) {
|
|
339
347
|
return !shape.isLocked
|
|
340
348
|
}
|
package/src/lib/ui/TldrawUi.tsx
CHANGED
|
@@ -3,7 +3,6 @@ import classNames from 'classnames'
|
|
|
3
3
|
import React, { ReactNode, useMemo, useRef, useState } from 'react'
|
|
4
4
|
import { TLUiAssetUrlOverrides } from './assetUrls'
|
|
5
5
|
import { SkipToMainContent } from './components/A11y'
|
|
6
|
-
import { FollowingIndicator } from './components/FollowingIndicator'
|
|
7
6
|
import { TldrawUiButton } from './components/primitives/Button/TldrawUiButton'
|
|
8
7
|
import { TldrawUiButtonIcon } from './components/primitives/Button/TldrawUiButtonIcon'
|
|
9
8
|
import { PORTRAIT_BREAKPOINT, PORTRAIT_BREAKPOINTS } from './constants'
|
|
@@ -108,10 +107,6 @@ const TldrawUiContent = React.memo(function TldrawUI() {
|
|
|
108
107
|
NavigationPanel,
|
|
109
108
|
HelperButtons,
|
|
110
109
|
DebugPanel,
|
|
111
|
-
CursorChatBubble,
|
|
112
|
-
RichTextToolbar,
|
|
113
|
-
ImageToolbar,
|
|
114
|
-
VideoToolbar,
|
|
115
110
|
Toasts,
|
|
116
111
|
Dialogs,
|
|
117
112
|
A11y,
|
|
@@ -223,13 +218,24 @@ const TldrawUiContent = React.memo(function TldrawUI() {
|
|
|
223
218
|
</div>
|
|
224
219
|
</>
|
|
225
220
|
)}
|
|
226
|
-
{RichTextToolbar && <RichTextToolbar />}
|
|
227
|
-
{ImageToolbar && <ImageToolbar />}
|
|
228
|
-
{VideoToolbar && <VideoToolbar />}
|
|
229
221
|
{Toasts && <Toasts />}
|
|
230
222
|
{Dialogs && <Dialogs />}
|
|
231
|
-
<FollowingIndicator />
|
|
232
|
-
{CursorChatBubble && <CursorChatBubble />}
|
|
233
223
|
</div>
|
|
234
224
|
)
|
|
235
225
|
})
|
|
226
|
+
|
|
227
|
+
/** @public @react */
|
|
228
|
+
export function TldrawUiInFrontOfTheCanvas() {
|
|
229
|
+
const { RichTextToolbar, ImageToolbar, VideoToolbar, CursorChatBubble, FollowingIndicator } =
|
|
230
|
+
useTldrawUiComponents()
|
|
231
|
+
|
|
232
|
+
return (
|
|
233
|
+
<>
|
|
234
|
+
{RichTextToolbar && <RichTextToolbar />}
|
|
235
|
+
{ImageToolbar && <ImageToolbar />}
|
|
236
|
+
{VideoToolbar && <VideoToolbar />}
|
|
237
|
+
{FollowingIndicator && <FollowingIndicator />}
|
|
238
|
+
{CursorChatBubble && <CursorChatBubble />}
|
|
239
|
+
</>
|
|
240
|
+
)
|
|
241
|
+
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { useEditor, usePresence, useValue } from '@tldraw/editor'
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/** @public @react */
|
|
4
|
+
export function DefaultFollowingIndicator() {
|
|
4
5
|
const editor = useEditor()
|
|
5
6
|
const followingUserId = useValue('follow', () => editor.getInstanceState().followingUserId, [
|
|
6
7
|
editor,
|
package/src/lib/ui/components/KeyboardShortcutsDialog/DefaultKeyboardShortcutsDialogContent.tsx
CHANGED
|
@@ -157,7 +157,7 @@ export function DefaultKeyboardShortcutsDialogContent() {
|
|
|
157
157
|
<TldrawUiMenuItem
|
|
158
158
|
id="a11y-select-next-shape-direction"
|
|
159
159
|
label="a11y.select-shape-direction"
|
|
160
|
-
kbd="cmd
|
|
160
|
+
kbd="cmd+[[↑→↓←]]"
|
|
161
161
|
onSelect={() => {
|
|
162
162
|
/* do nothing */
|
|
163
163
|
}}
|
|
@@ -165,7 +165,7 @@ export function DefaultKeyboardShortcutsDialogContent() {
|
|
|
165
165
|
<TldrawUiMenuItem
|
|
166
166
|
id="a11y-select-next-shape-container"
|
|
167
167
|
label="a11y.enter-leave-container"
|
|
168
|
-
kbd="cmd+shift
|
|
168
|
+
kbd="cmd+shift+[[↑→]]"
|
|
169
169
|
onSelect={() => {
|
|
170
170
|
/* do nothing */
|
|
171
171
|
}}
|
|
@@ -173,7 +173,7 @@ export function DefaultKeyboardShortcutsDialogContent() {
|
|
|
173
173
|
<TldrawUiMenuItem
|
|
174
174
|
id="a11y-pan-camera"
|
|
175
175
|
label="a11y.pan-camera"
|
|
176
|
-
kbd="[[Space]]
|
|
176
|
+
kbd="[[Space]]+[[↑→↓←]]"
|
|
177
177
|
onSelect={() => {
|
|
178
178
|
/* do nothing */
|
|
179
179
|
}}
|
|
@@ -197,7 +197,7 @@ export function DefaultKeyboardShortcutsDialogContent() {
|
|
|
197
197
|
<TldrawUiMenuItem
|
|
198
198
|
id="a11y-move-shape"
|
|
199
199
|
label="a11y.move-shape"
|
|
200
|
-
kbd="↑→↓←"
|
|
200
|
+
kbd="[[↑→↓←]]"
|
|
201
201
|
onSelect={() => {
|
|
202
202
|
/* do nothing */
|
|
203
203
|
}}
|
|
@@ -205,7 +205,7 @@ export function DefaultKeyboardShortcutsDialogContent() {
|
|
|
205
205
|
<TldrawUiMenuItem
|
|
206
206
|
id="a11y-move-shape-faster"
|
|
207
207
|
label="a11y.move-shape-faster"
|
|
208
|
-
kbd="shift
|
|
208
|
+
kbd="shift+[[↑→↓←]]"
|
|
209
209
|
onSelect={() => {
|
|
210
210
|
/* do nothing */
|
|
211
211
|
}}
|
|
@@ -1,18 +1,26 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
ReadonlySharedStyleMap,
|
|
3
|
+
useEditor,
|
|
4
|
+
usePassThroughWheelEvents,
|
|
5
|
+
useValue,
|
|
6
|
+
} from '@tldraw/editor'
|
|
2
7
|
import classNames from 'classnames'
|
|
3
8
|
import { ReactNode, memo, useCallback, useEffect, useRef } from 'react'
|
|
4
9
|
import { useRelevantStyles } from '../../hooks/useRelevantStyles'
|
|
5
10
|
import { DefaultStylePanelContent } from './DefaultStylePanelContent'
|
|
11
|
+
import { StylePanelContextProvider } from './StylePanelContext'
|
|
6
12
|
|
|
7
13
|
/** @public */
|
|
8
14
|
export interface TLUiStylePanelProps {
|
|
9
15
|
isMobile?: boolean
|
|
16
|
+
styles?: ReadonlySharedStyleMap | null
|
|
10
17
|
children?: ReactNode
|
|
11
18
|
}
|
|
12
19
|
|
|
13
20
|
/** @public @react */
|
|
14
21
|
export const DefaultStylePanel = memo(function DefaultStylePanel({
|
|
15
22
|
isMobile,
|
|
23
|
+
styles,
|
|
16
24
|
children,
|
|
17
25
|
}: TLUiStylePanelProps) {
|
|
18
26
|
const editor = useEditor()
|
|
@@ -21,15 +29,16 @@ export const DefaultStylePanel = memo(function DefaultStylePanel({
|
|
|
21
29
|
const ref = useRef<HTMLDivElement>(null)
|
|
22
30
|
usePassThroughWheelEvents(ref)
|
|
23
31
|
|
|
24
|
-
const styles = useRelevantStyles()
|
|
25
|
-
|
|
26
32
|
const handlePointerOut = useCallback(() => {
|
|
27
33
|
if (!isMobile) {
|
|
28
34
|
editor.updateInstanceState({ isChangingStyle: false })
|
|
29
35
|
}
|
|
30
36
|
}, [editor, isMobile])
|
|
31
37
|
|
|
32
|
-
const
|
|
38
|
+
const defaultStyles = useRelevantStyles()
|
|
39
|
+
if (styles === undefined) {
|
|
40
|
+
styles = defaultStyles
|
|
41
|
+
}
|
|
33
42
|
|
|
34
43
|
useEffect(() => {
|
|
35
44
|
function handleKeyDown(event: KeyboardEvent) {
|
|
@@ -47,14 +56,19 @@ export const DefaultStylePanel = memo(function DefaultStylePanel({
|
|
|
47
56
|
}, [editor])
|
|
48
57
|
|
|
49
58
|
return (
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
+
styles && (
|
|
60
|
+
<div
|
|
61
|
+
ref={ref}
|
|
62
|
+
data-testid="style.panel"
|
|
63
|
+
className={classNames('tlui-style-panel', { 'tlui-style-panel__wrapper': !isMobile })}
|
|
64
|
+
data-ismobile={isMobile}
|
|
65
|
+
data-show-ui-labels={showUiLabels}
|
|
66
|
+
onPointerLeave={handlePointerOut}
|
|
67
|
+
>
|
|
68
|
+
<StylePanelContextProvider styles={styles}>
|
|
69
|
+
{children ?? <DefaultStylePanelContent />}
|
|
70
|
+
</StylePanelContextProvider>
|
|
71
|
+
</div>
|
|
72
|
+
)
|
|
59
73
|
)
|
|
60
74
|
})
|