@bigbluebutton/tldraw 2.0.0-alpha.33 → 2.0.0-alpha.35
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.js +4 -4
- package/dist-cjs/index.js.map +1 -1
- package/dist-cjs/lib/Tldraw.js +1 -2
- package/dist-cjs/lib/Tldraw.js.map +1 -1
- package/dist-cjs/lib/canvas/TldrawHandles.js +1 -2
- package/dist-cjs/lib/canvas/TldrawHandles.js.map +1 -1
- package/dist-cjs/lib/canvas/TldrawHoveredShapeIndicator.js +1 -2
- package/dist-cjs/lib/canvas/TldrawHoveredShapeIndicator.js.map +1 -1
- package/dist-cjs/lib/canvas/TldrawScribble.js +1 -2
- package/dist-cjs/lib/canvas/TldrawScribble.js.map +1 -1
- package/dist-cjs/lib/canvas/TldrawSelectionBackground.js +1 -2
- package/dist-cjs/lib/canvas/TldrawSelectionBackground.js.map +1 -1
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js +1 -2
- package/dist-cjs/lib/canvas/TldrawSelectionForeground.js.map +1 -1
- package/dist-cjs/lib/defaultExternalContentHandlers.js +3 -6
- package/dist-cjs/lib/defaultExternalContentHandlers.js.map +1 -1
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js +7 -14
- package/dist-cjs/lib/shapes/arrow/ArrowShapeUtil.js.map +1 -1
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js +1 -2
- package/dist-cjs/lib/shapes/arrow/toolStates/Idle.js.map +1 -1
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js +6 -12
- package/dist-cjs/lib/shapes/arrow/toolStates/Pointing.js.map +1 -1
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js +12 -24
- package/dist-cjs/lib/shapes/draw/toolStates/Drawing.js.map +1 -1
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js +1 -2
- package/dist-cjs/lib/shapes/embed/EmbedShapeUtil.js.map +1 -1
- package/dist-cjs/lib/shapes/frame/FrameShapeTool.js +4 -8
- package/dist-cjs/lib/shapes/frame/FrameShapeTool.js.map +1 -1
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js +3 -6
- package/dist-cjs/lib/shapes/frame/FrameShapeUtil.js.map +1 -1
- package/dist-cjs/lib/shapes/frame/components/FrameHeading.js +1 -2
- package/dist-cjs/lib/shapes/frame/components/FrameHeading.js.map +1 -1
- package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js +4 -8
- package/dist-cjs/lib/shapes/frame/components/FrameLabelInput.js.map +1 -1
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js +1 -2
- package/dist-cjs/lib/shapes/geo/toolStates/Idle.js.map +1 -1
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js +2 -4
- package/dist-cjs/lib/shapes/geo/toolStates/Pointing.js.map +1 -1
- package/dist-cjs/lib/shapes/image/ImageShapeUtil.js +5 -10
- package/dist-cjs/lib/shapes/image/ImageShapeUtil.js.map +1 -1
- package/dist-cjs/lib/shapes/line/components/svg.js +1 -2
- package/dist-cjs/lib/shapes/line/components/svg.js.map +1 -1
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js +5 -10
- package/dist-cjs/lib/shapes/line/toolStates/Pointing.js.map +1 -1
- package/dist-cjs/lib/shapes/poll/components/CustomizedAxisTick.js +1 -2
- package/dist-cjs/lib/shapes/poll/components/CustomizedAxisTick.js.map +1 -1
- package/dist-cjs/lib/shapes/poll/components/poll-content.js +1 -2
- package/dist-cjs/lib/shapes/poll/components/poll-content.js.map +1 -1
- package/dist-cjs/lib/shapes/shared/TextHelpers.js +2 -4
- package/dist-cjs/lib/shapes/shared/TextHelpers.js.map +1 -1
- package/dist-cjs/lib/shapes/shared/createTextSvgElementFromSpans.js +1 -2
- package/dist-cjs/lib/shapes/shared/createTextSvgElementFromSpans.js.map +1 -1
- package/dist-cjs/lib/shapes/shared/defaultStyleDefs.js +8 -16
- package/dist-cjs/lib/shapes/shared/defaultStyleDefs.js.map +1 -1
- package/dist-cjs/lib/shapes/shared/freehand/getStrokePoints.js +6 -12
- package/dist-cjs/lib/shapes/shared/freehand/getStrokePoints.js.map +1 -1
- package/dist-cjs/lib/shapes/shared/freehand/setStrokePointRadii.js +1 -2
- package/dist-cjs/lib/shapes/shared/freehand/setStrokePointRadii.js.map +1 -1
- package/dist-cjs/lib/shapes/shared/freehand/svgInk.js +2 -4
- package/dist-cjs/lib/shapes/shared/freehand/svgInk.js.map +1 -1
- package/dist-cjs/lib/shapes/shared/useEditableText.js +5 -10
- package/dist-cjs/lib/shapes/shared/useEditableText.js.map +1 -1
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js +6 -12
- package/dist-cjs/lib/shapes/text/TextShapeUtil.js.map +1 -1
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js +1 -2
- package/dist-cjs/lib/shapes/text/toolStates/Idle.js.map +1 -1
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js +1 -2
- package/dist-cjs/lib/shapes/text/toolStates/Pointing.js.map +1 -1
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js +2 -4
- package/dist-cjs/lib/shapes/video/VideoShapeUtil.js.map +1 -1
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js +2 -4
- package/dist-cjs/lib/tools/EraserTool/childStates/Erasing.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js +1 -2
- package/dist-cjs/lib/tools/SelectTool/DragAndDropManager.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js +25 -30
- package/dist-cjs/lib/tools/SelectTool/childStates/Brushing.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js +12 -24
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/Idle.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js +1 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Cropping.js +8 -16
- package/dist-cjs/lib/tools/SelectTool/childStates/Cropping.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js +3 -6
- package/dist-cjs/lib/tools/SelectTool/childStates/DraggingHandle.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js +2 -4
- package/dist-cjs/lib/tools/SelectTool/childStates/EditingShape.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js +21 -42
- package/dist-cjs/lib/tools/SelectTool/childStates/Idle.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCropHandle.js +1 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingCropHandle.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js +1 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingSelection.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js +1 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/PointingShape.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js +5 -10
- package/dist-cjs/lib/tools/SelectTool/childStates/Resizing.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js +2 -4
- package/dist-cjs/lib/tools/SelectTool/childStates/Rotating.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js +1 -2
- package/dist-cjs/lib/tools/SelectTool/childStates/ScribbleBrushing.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js +4 -8
- package/dist-cjs/lib/tools/SelectTool/childStates/Translating.js.map +1 -1
- package/dist-cjs/lib/tools/SelectTool/children/DraggingHandle.js +3 -6
- package/dist-cjs/lib/tools/SelectTool/children/DraggingHandle.js.map +1 -1
- package/dist-cjs/lib/tools/selection-logic/updateHoveredId.js +1 -2
- package/dist-cjs/lib/tools/selection-logic/updateHoveredId.js.map +1 -1
- package/dist-cjs/lib/ui/assetUrls.js +1 -2
- package/dist-cjs/lib/ui/assetUrls.js.map +1 -1
- package/dist-cjs/lib/ui/components/ActionsMenu.js +2 -4
- package/dist-cjs/lib/ui/components/ActionsMenu.js.map +1 -1
- package/dist-cjs/lib/ui/components/BackToContent.js +1 -2
- package/dist-cjs/lib/ui/components/BackToContent.js.map +1 -1
- package/dist-cjs/lib/ui/components/ContextMenu.js +3 -6
- package/dist-cjs/lib/ui/components/ContextMenu.js.map +1 -1
- package/dist-cjs/lib/ui/components/DebugPanel.js +2 -4
- package/dist-cjs/lib/ui/components/DebugPanel.js.map +1 -1
- package/dist-cjs/lib/ui/components/EditLinkDialog.js +2 -4
- package/dist-cjs/lib/ui/components/EditLinkDialog.js.map +1 -1
- package/dist-cjs/lib/ui/components/EmbedDialog.js +1 -2
- package/dist-cjs/lib/ui/components/EmbedDialog.js.map +1 -1
- package/dist-cjs/lib/ui/components/FollowingIndicator.js +2 -4
- package/dist-cjs/lib/ui/components/FollowingIndicator.js.map +1 -1
- package/dist-cjs/lib/ui/components/HelpMenu.js +2 -4
- package/dist-cjs/lib/ui/components/HelpMenu.js.map +1 -1
- package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog.js +2 -4
- package/dist-cjs/lib/ui/components/KeyboardShortcutsDialog.js.map +1 -1
- package/dist-cjs/lib/ui/components/Menu.js +5 -10
- package/dist-cjs/lib/ui/components/Menu.js.map +1 -1
- package/dist-cjs/lib/ui/components/NavigationZone/Minimap.js +3 -6
- package/dist-cjs/lib/ui/components/NavigationZone/Minimap.js.map +1 -1
- package/dist-cjs/lib/ui/components/PageMenu/PageMenu.js +5 -10
- package/dist-cjs/lib/ui/components/PageMenu/PageMenu.js.map +1 -1
- package/dist-cjs/lib/ui/components/PenModeToggle.js +1 -2
- package/dist-cjs/lib/ui/components/PenModeToggle.js.map +1 -1
- package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js +1 -2
- package/dist-cjs/lib/ui/components/StylePanel/DoubleDropdownPicker.js.map +1 -1
- package/dist-cjs/lib/ui/components/StylePanel/StylePanel.js +1 -2
- package/dist-cjs/lib/ui/components/StylePanel/StylePanel.js.map +1 -1
- package/dist-cjs/lib/ui/components/Toasts.js +1 -2
- package/dist-cjs/lib/ui/components/Toasts.js.map +1 -1
- package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js +1 -2
- package/dist-cjs/lib/ui/components/Toolbar/ToggleToolLockedButton.js.map +1 -1
- package/dist-cjs/lib/ui/components/TrashButton.js +1 -2
- package/dist-cjs/lib/ui/components/TrashButton.js.map +1 -1
- package/dist-cjs/lib/ui/components/primitives/ButtonPicker.js +2 -4
- package/dist-cjs/lib/ui/components/primitives/ButtonPicker.js.map +1 -1
- package/dist-cjs/lib/ui/components/primitives/Input.js +1 -2
- package/dist-cjs/lib/ui/components/primitives/Input.js.map +1 -1
- package/dist-cjs/lib/ui/components/primitives/Slider.js +1 -2
- package/dist-cjs/lib/ui/components/primitives/Slider.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/clipboard/pasteExcalidrawContent.js +2 -4
- package/dist-cjs/lib/ui/hooks/clipboard/pasteExcalidrawContent.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/menuHelpers.js +5 -10
- package/dist-cjs/lib/ui/hooks/menuHelpers.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useActions.js +73 -146
- package/dist-cjs/lib/ui/hooks/useActions.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useClipboardEvents.js +6 -12
- package/dist-cjs/lib/ui/hooks/useClipboardEvents.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useHighDpiCanvas.js +1 -2
- package/dist-cjs/lib/ui/hooks/useHighDpiCanvas.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useInsertMedia.js +1 -2
- package/dist-cjs/lib/ui/hooks/useInsertMedia.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js +8 -16
- package/dist-cjs/lib/ui/hooks/useKeyboardShortcuts.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useMenuIsOpen.js +1 -2
- package/dist-cjs/lib/ui/hooks/useMenuIsOpen.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useMenuSchema.js +2 -4
- package/dist-cjs/lib/ui/hooks/useMenuSchema.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/usePreloadAssets.js +2 -4
- package/dist-cjs/lib/ui/hooks/usePreloadAssets.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/usePreloadIcons.js +1 -2
- package/dist-cjs/lib/ui/hooks/usePreloadIcons.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/usePrint.js +2 -4
- package/dist-cjs/lib/ui/hooks/usePrint.js.map +1 -1
- package/dist-cjs/lib/ui/hooks/useRevelantStyles.js +1 -2
- package/dist-cjs/lib/ui/hooks/useRevelantStyles.js.map +1 -1
- package/dist-cjs/lib/utils/assets/is-gif-animated.js +9 -0
- package/dist-cjs/lib/utils/assets/is-gif-animated.js.map +1 -1
- package/dist-cjs/lib/utils/export/export.js +2 -4
- package/dist-cjs/lib/utils/export/export.js.map +1 -1
- package/dist-cjs/lib/utils/export/exportAs.js +1 -2
- package/dist-cjs/lib/utils/export/exportAs.js.map +1 -1
- package/dist-cjs/lib/utils/frames/frames.js +4 -8
- package/dist-cjs/lib/utils/frames/frames.js.map +1 -1
- package/dist-cjs/lib/utils/static-assets/assetUrls.js +1 -2
- package/dist-cjs/lib/utils/static-assets/assetUrls.js.map +1 -1
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js +10 -20
- package/dist-cjs/lib/utils/tldr/buildFromV1Document.js.map +1 -1
- package/dist-cjs/lib/utils/tldr/file.js +1 -2
- package/dist-cjs/lib/utils/tldr/file.js.map +1 -1
- package/dist-esm/lib/Tldraw.mjs +1 -2
- package/dist-esm/lib/Tldraw.mjs.map +1 -1
- package/dist-esm/lib/canvas/TldrawHandles.mjs +1 -2
- package/dist-esm/lib/canvas/TldrawHandles.mjs.map +1 -1
- package/dist-esm/lib/canvas/TldrawHoveredShapeIndicator.mjs +1 -2
- package/dist-esm/lib/canvas/TldrawHoveredShapeIndicator.mjs.map +1 -1
- package/dist-esm/lib/canvas/TldrawScribble.mjs +1 -2
- package/dist-esm/lib/canvas/TldrawScribble.mjs.map +1 -1
- package/dist-esm/lib/canvas/TldrawSelectionBackground.mjs +1 -2
- package/dist-esm/lib/canvas/TldrawSelectionBackground.mjs.map +1 -1
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs +1 -2
- package/dist-esm/lib/canvas/TldrawSelectionForeground.mjs.map +1 -1
- package/dist-esm/lib/defaultExternalContentHandlers.mjs +3 -6
- package/dist-esm/lib/defaultExternalContentHandlers.mjs.map +1 -1
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs +7 -14
- package/dist-esm/lib/shapes/arrow/ArrowShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs +1 -2
- package/dist-esm/lib/shapes/arrow/toolStates/Idle.mjs.map +1 -1
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs +6 -12
- package/dist-esm/lib/shapes/arrow/toolStates/Pointing.mjs.map +1 -1
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs +12 -24
- package/dist-esm/lib/shapes/draw/toolStates/Drawing.mjs.map +1 -1
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs +1 -2
- package/dist-esm/lib/shapes/embed/EmbedShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/shapes/frame/FrameShapeTool.mjs +4 -8
- package/dist-esm/lib/shapes/frame/FrameShapeTool.mjs.map +1 -1
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs +3 -6
- package/dist-esm/lib/shapes/frame/FrameShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs +1 -2
- package/dist-esm/lib/shapes/frame/components/FrameHeading.mjs.map +1 -1
- package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs +4 -8
- package/dist-esm/lib/shapes/frame/components/FrameLabelInput.mjs.map +1 -1
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs +1 -2
- package/dist-esm/lib/shapes/geo/toolStates/Idle.mjs.map +1 -1
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs +2 -4
- package/dist-esm/lib/shapes/geo/toolStates/Pointing.mjs.map +1 -1
- package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs +5 -10
- package/dist-esm/lib/shapes/image/ImageShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/shapes/line/components/svg.mjs +1 -2
- package/dist-esm/lib/shapes/line/components/svg.mjs.map +1 -1
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs +5 -10
- package/dist-esm/lib/shapes/line/toolStates/Pointing.mjs.map +1 -1
- package/dist-esm/lib/shapes/poll/components/CustomizedAxisTick.mjs +1 -2
- package/dist-esm/lib/shapes/poll/components/CustomizedAxisTick.mjs.map +1 -1
- package/dist-esm/lib/shapes/poll/components/poll-content.mjs +1 -2
- package/dist-esm/lib/shapes/poll/components/poll-content.mjs.map +1 -1
- package/dist-esm/lib/shapes/shared/TextHelpers.mjs +2 -4
- package/dist-esm/lib/shapes/shared/TextHelpers.mjs.map +1 -1
- package/dist-esm/lib/shapes/shared/createTextSvgElementFromSpans.mjs +1 -2
- package/dist-esm/lib/shapes/shared/createTextSvgElementFromSpans.mjs.map +1 -1
- package/dist-esm/lib/shapes/shared/defaultStyleDefs.mjs +8 -16
- package/dist-esm/lib/shapes/shared/defaultStyleDefs.mjs.map +1 -1
- package/dist-esm/lib/shapes/shared/freehand/getStrokePoints.mjs +6 -12
- package/dist-esm/lib/shapes/shared/freehand/getStrokePoints.mjs.map +1 -1
- package/dist-esm/lib/shapes/shared/freehand/setStrokePointRadii.mjs +1 -2
- package/dist-esm/lib/shapes/shared/freehand/setStrokePointRadii.mjs.map +1 -1
- package/dist-esm/lib/shapes/shared/freehand/svgInk.mjs +2 -4
- package/dist-esm/lib/shapes/shared/freehand/svgInk.mjs.map +1 -1
- package/dist-esm/lib/shapes/shared/useEditableText.mjs +5 -10
- package/dist-esm/lib/shapes/shared/useEditableText.mjs.map +1 -1
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs +6 -12
- package/dist-esm/lib/shapes/text/TextShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs +1 -2
- package/dist-esm/lib/shapes/text/toolStates/Idle.mjs.map +1 -1
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs +1 -2
- package/dist-esm/lib/shapes/text/toolStates/Pointing.mjs.map +1 -1
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs +2 -4
- package/dist-esm/lib/shapes/video/VideoShapeUtil.mjs.map +1 -1
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs +2 -4
- package/dist-esm/lib/tools/EraserTool/childStates/Erasing.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs +1 -2
- package/dist-esm/lib/tools/SelectTool/DragAndDropManager.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs +25 -30
- package/dist-esm/lib/tools/SelectTool/childStates/Brushing.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs +12 -24
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/Idle.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs +1 -2
- package/dist-esm/lib/tools/SelectTool/childStates/Crop/children/TranslatingCrop.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Cropping.mjs +8 -16
- package/dist-esm/lib/tools/SelectTool/childStates/Cropping.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs +3 -6
- package/dist-esm/lib/tools/SelectTool/childStates/DraggingHandle.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs +2 -4
- package/dist-esm/lib/tools/SelectTool/childStates/EditingShape.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs +21 -42
- package/dist-esm/lib/tools/SelectTool/childStates/Idle.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCropHandle.mjs +1 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingCropHandle.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs +1 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingSelection.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs +1 -2
- package/dist-esm/lib/tools/SelectTool/childStates/PointingShape.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs +5 -10
- package/dist-esm/lib/tools/SelectTool/childStates/Resizing.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs +2 -4
- package/dist-esm/lib/tools/SelectTool/childStates/Rotating.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs +1 -2
- package/dist-esm/lib/tools/SelectTool/childStates/ScribbleBrushing.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs +4 -8
- package/dist-esm/lib/tools/SelectTool/childStates/Translating.mjs.map +1 -1
- package/dist-esm/lib/tools/SelectTool/children/DraggingHandle.mjs +3 -6
- package/dist-esm/lib/tools/SelectTool/children/DraggingHandle.mjs.map +1 -1
- package/dist-esm/lib/tools/selection-logic/updateHoveredId.mjs +1 -2
- package/dist-esm/lib/tools/selection-logic/updateHoveredId.mjs.map +1 -1
- package/dist-esm/lib/ui/assetUrls.mjs +1 -2
- package/dist-esm/lib/ui/assetUrls.mjs.map +1 -1
- package/dist-esm/lib/ui/components/ActionsMenu.mjs +2 -4
- package/dist-esm/lib/ui/components/ActionsMenu.mjs.map +1 -1
- package/dist-esm/lib/ui/components/BackToContent.mjs +1 -2
- package/dist-esm/lib/ui/components/BackToContent.mjs.map +1 -1
- package/dist-esm/lib/ui/components/ContextMenu.mjs +3 -6
- package/dist-esm/lib/ui/components/ContextMenu.mjs.map +1 -1
- package/dist-esm/lib/ui/components/DebugPanel.mjs +2 -4
- package/dist-esm/lib/ui/components/DebugPanel.mjs.map +1 -1
- package/dist-esm/lib/ui/components/EditLinkDialog.mjs +2 -4
- package/dist-esm/lib/ui/components/EditLinkDialog.mjs.map +1 -1
- package/dist-esm/lib/ui/components/EmbedDialog.mjs +1 -2
- package/dist-esm/lib/ui/components/EmbedDialog.mjs.map +1 -1
- package/dist-esm/lib/ui/components/FollowingIndicator.mjs +2 -4
- package/dist-esm/lib/ui/components/FollowingIndicator.mjs.map +1 -1
- package/dist-esm/lib/ui/components/HelpMenu.mjs +2 -4
- package/dist-esm/lib/ui/components/HelpMenu.mjs.map +1 -1
- package/dist-esm/lib/ui/components/KeyboardShortcutsDialog.mjs +2 -4
- package/dist-esm/lib/ui/components/KeyboardShortcutsDialog.mjs.map +1 -1
- package/dist-esm/lib/ui/components/Menu.mjs +5 -10
- package/dist-esm/lib/ui/components/Menu.mjs.map +1 -1
- package/dist-esm/lib/ui/components/NavigationZone/Minimap.mjs +3 -6
- package/dist-esm/lib/ui/components/NavigationZone/Minimap.mjs.map +1 -1
- package/dist-esm/lib/ui/components/PageMenu/PageMenu.mjs +5 -10
- package/dist-esm/lib/ui/components/PageMenu/PageMenu.mjs.map +1 -1
- package/dist-esm/lib/ui/components/PenModeToggle.mjs +1 -2
- package/dist-esm/lib/ui/components/PenModeToggle.mjs.map +1 -1
- package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs +1 -2
- package/dist-esm/lib/ui/components/StylePanel/DoubleDropdownPicker.mjs.map +1 -1
- package/dist-esm/lib/ui/components/StylePanel/StylePanel.mjs +1 -2
- package/dist-esm/lib/ui/components/StylePanel/StylePanel.mjs.map +1 -1
- package/dist-esm/lib/ui/components/Toasts.mjs +1 -2
- package/dist-esm/lib/ui/components/Toasts.mjs.map +1 -1
- package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs +1 -2
- package/dist-esm/lib/ui/components/Toolbar/ToggleToolLockedButton.mjs.map +1 -1
- package/dist-esm/lib/ui/components/TrashButton.mjs +1 -2
- package/dist-esm/lib/ui/components/TrashButton.mjs.map +1 -1
- package/dist-esm/lib/ui/components/primitives/ButtonPicker.mjs +2 -4
- package/dist-esm/lib/ui/components/primitives/ButtonPicker.mjs.map +1 -1
- package/dist-esm/lib/ui/components/primitives/Input.mjs +1 -2
- package/dist-esm/lib/ui/components/primitives/Input.mjs.map +1 -1
- package/dist-esm/lib/ui/components/primitives/Slider.mjs +1 -2
- package/dist-esm/lib/ui/components/primitives/Slider.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/clipboard/pasteExcalidrawContent.mjs +2 -4
- package/dist-esm/lib/ui/hooks/clipboard/pasteExcalidrawContent.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/menuHelpers.mjs +5 -10
- package/dist-esm/lib/ui/hooks/menuHelpers.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/useActions.mjs +73 -146
- package/dist-esm/lib/ui/hooks/useActions.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs +6 -12
- package/dist-esm/lib/ui/hooks/useClipboardEvents.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/useHighDpiCanvas.mjs +1 -2
- package/dist-esm/lib/ui/hooks/useHighDpiCanvas.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/useInsertMedia.mjs +1 -2
- package/dist-esm/lib/ui/hooks/useInsertMedia.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs +8 -16
- package/dist-esm/lib/ui/hooks/useKeyboardShortcuts.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/useMenuIsOpen.mjs +1 -2
- package/dist-esm/lib/ui/hooks/useMenuIsOpen.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/useMenuSchema.mjs +2 -4
- package/dist-esm/lib/ui/hooks/useMenuSchema.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/usePreloadAssets.mjs +2 -4
- package/dist-esm/lib/ui/hooks/usePreloadAssets.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/usePreloadIcons.mjs +1 -2
- package/dist-esm/lib/ui/hooks/usePreloadIcons.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/usePrint.mjs +2 -4
- package/dist-esm/lib/ui/hooks/usePrint.mjs.map +1 -1
- package/dist-esm/lib/ui/hooks/useRevelantStyles.mjs +1 -2
- package/dist-esm/lib/ui/hooks/useRevelantStyles.mjs.map +1 -1
- package/dist-esm/lib/utils/assets/is-gif-animated.mjs +9 -0
- package/dist-esm/lib/utils/assets/is-gif-animated.mjs.map +1 -1
- package/dist-esm/lib/utils/export/export.mjs +2 -4
- package/dist-esm/lib/utils/export/export.mjs.map +1 -1
- package/dist-esm/lib/utils/export/exportAs.mjs +1 -2
- package/dist-esm/lib/utils/export/exportAs.mjs.map +1 -1
- package/dist-esm/lib/utils/frames/frames.mjs +4 -8
- package/dist-esm/lib/utils/frames/frames.mjs.map +1 -1
- package/dist-esm/lib/utils/static-assets/assetUrls.mjs +1 -2
- package/dist-esm/lib/utils/static-assets/assetUrls.mjs.map +1 -1
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs +10 -20
- package/dist-esm/lib/utils/tldr/buildFromV1Document.mjs.map +1 -1
- package/dist-esm/lib/utils/tldr/file.mjs +1 -2
- package/dist-esm/lib/utils/tldr/file.mjs.map +1 -1
- package/package.json +2 -2
|
@@ -89,8 +89,7 @@ class Translating extends StateNode {
|
|
|
89
89
|
this.cancel();
|
|
90
90
|
};
|
|
91
91
|
startCloning() {
|
|
92
|
-
if (this.isCreating)
|
|
93
|
-
return;
|
|
92
|
+
if (this.isCreating) return;
|
|
94
93
|
this.isCloning = true;
|
|
95
94
|
this.reset();
|
|
96
95
|
this.markId = "translating";
|
|
@@ -198,8 +197,7 @@ class Translating extends StateNode {
|
|
|
198
197
|
const movingShapes = [];
|
|
199
198
|
shapeSnapshots.forEach((shapeSnapshot) => {
|
|
200
199
|
const shape = editor.getShape(shapeSnapshot.shape.id);
|
|
201
|
-
if (!shape)
|
|
202
|
-
return null;
|
|
200
|
+
if (!shape) return null;
|
|
203
201
|
movingShapes.push(shape);
|
|
204
202
|
const parentTransform = isPageId(shape.parentId) ? null : Matrix2d.Inverse(editor.getShapePageTransform(shape.parentId));
|
|
205
203
|
shapeSnapshot.parentTransform = parentTransform;
|
|
@@ -212,12 +210,10 @@ function getTranslatingSnapshot(editor) {
|
|
|
212
210
|
const shapeSnapshots = compact(
|
|
213
211
|
editor.getSelectedShapeIds().map((id) => {
|
|
214
212
|
const shape = editor.getShape(id);
|
|
215
|
-
if (!shape)
|
|
216
|
-
return null;
|
|
213
|
+
if (!shape) return null;
|
|
217
214
|
movingShapes.push(shape);
|
|
218
215
|
const pagePoint = editor.getShapePageTransform(id).point();
|
|
219
|
-
if (!pagePoint)
|
|
220
|
-
return null;
|
|
216
|
+
if (!pagePoint) return null;
|
|
221
217
|
pagePoints.push(pagePoint);
|
|
222
218
|
const parentTransform = PageRecordType.isId(shape.parentId) ? null : Matrix2d.Inverse(editor.getShapePageTransform(shape.parentId));
|
|
223
219
|
return {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/lib/tools/SelectTool/childStates/Translating.ts"],
|
|
4
4
|
"sourcesContent": ["import {\n\tBox2d,\n\tEditor,\n\tMatrix2d,\n\tMatrix2dModel,\n\tPageRecordType,\n\tSnapPoint,\n\tStateNode,\n\tTLEventHandlers,\n\tTLPointerEventInfo,\n\tTLShape,\n\tTLShapePartial,\n\tTLTickEventHandler,\n\tVec2d,\n\tcompact,\n\tisPageId,\n\tmoveCameraWhenCloseToEdge,\n} from '@bigbluebutton/editor'\nimport { DragAndDropManager } from '../DragAndDropManager'\n\nexport class Translating extends StateNode {\n\tstatic override id = 'translating'\n\n\tinfo = {} as TLPointerEventInfo & {\n\t\ttarget: 'shape'\n\t\tisCreating?: boolean\n\t\tonCreate?: () => void\n\t\tonInteractionEnd?: string\n\t}\n\n\tselectionSnapshot: TranslatingSnapshot = {} as any\n\n\tsnapshot: TranslatingSnapshot = {} as any\n\n\tmarkId = ''\n\n\tisCloning = false\n\tisCreating = false\n\tonCreate: (shape: TLShape | null) => void = () => void null\n\n\tdragAndDropManager = new DragAndDropManager(this.editor)\n\n\toverride onEnter = (\n\t\tinfo: TLPointerEventInfo & {\n\t\t\ttarget: 'shape'\n\t\t\tisCreating?: boolean\n\t\t\tonCreate?: () => void\n\t\t\tonInteractionEnd?: string\n\t\t}\n\t) => {\n\t\tconst { isCreating = false, onCreate = () => void null } = info\n\n\t\tthis.info = info\n\t\tthis.parent.setCurrentToolIdMask(info.onInteractionEnd)\n\t\tthis.isCreating = isCreating\n\t\tthis.onCreate = onCreate\n\n\t\tif (isCreating) {\n\t\t\tthis.markId = `creating:${this.editor.getOnlySelectedShape()!.id}`\n\t\t} else {\n\t\t\tthis.markId = 'translating'\n\t\t\tthis.editor.mark(this.markId)\n\t\t}\n\n\t\tthis.isCloning = false\n\t\tthis.info = info\n\n\t\tthis.editor.setCursor({ type: 'move', rotation: 0 })\n\t\tthis.selectionSnapshot = getTranslatingSnapshot(this.editor)\n\n\t\t// Don't clone on create; otherwise clone on altKey\n\t\tif (!this.isCreating) {\n\t\t\tif (this.editor.inputs.altKey) {\n\t\t\t\tthis.startCloning()\n\t\t\t\treturn\n\t\t\t}\n\t\t}\n\n\t\tthis.snapshot = this.selectionSnapshot\n\t\tthis.handleStart()\n\t\tthis.updateShapes()\n\t}\n\n\toverride onExit = () => {\n\t\tthis.parent.setCurrentToolIdMask(undefined)\n\t\tthis.selectionSnapshot = {} as any\n\t\tthis.snapshot = {} as any\n\t\tthis.editor.snaps.clear()\n\t\tthis.editor.updateInstanceState(\n\t\t\t{ cursor: { type: 'default', rotation: 0 } },\n\t\t\t{ ephemeral: true }\n\t\t)\n\t\tthis.dragAndDropManager.clear()\n\t}\n\n\toverride onTick: TLTickEventHandler = () => {\n\t\tthis.dragAndDropManager.updateDroppingNode(\n\t\t\tthis.snapshot.movingShapes,\n\t\t\tthis.updateParentTransforms\n\t\t)\n\t\tmoveCameraWhenCloseToEdge(this.editor)\n\t}\n\n\toverride onPointerMove = () => {\n\t\tthis.updateShapes()\n\t}\n\n\toverride onKeyDown = () => {\n\t\tif (this.editor.inputs.altKey && !this.isCloning) {\n\t\t\tthis.startCloning()\n\t\t\treturn\n\t\t}\n\n\t\t// need to update in case user pressed a different modifier key\n\t\tthis.updateShapes()\n\t}\n\n\toverride onKeyUp: TLEventHandlers['onKeyUp'] = () => {\n\t\tif (!this.editor.inputs.altKey && this.isCloning) {\n\t\t\tthis.stopCloning()\n\t\t\treturn\n\t\t}\n\n\t\t// need to update in case user pressed a different modifier key\n\t\tthis.updateShapes()\n\t}\n\n\toverride onPointerUp: TLEventHandlers['onPointerUp'] = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onCancel: TLEventHandlers['onCancel'] = () => {\n\t\tthis.cancel()\n\t}\n\n\tprotected startCloning() {\n\t\tif (this.isCreating) return\n\n\t\tthis.isCloning = true\n\t\tthis.reset()\n\t\tthis.markId = 'translating'\n\t\tthis.editor.mark(this.markId)\n\n\t\tthis.editor.duplicateShapes(Array.from(this.editor.getSelectedShapeIds()))\n\n\t\tthis.snapshot = getTranslatingSnapshot(this.editor)\n\t\tthis.handleStart()\n\t\tthis.updateShapes()\n\t}\n\n\tprotected stopCloning() {\n\t\tthis.isCloning = false\n\t\tthis.snapshot = this.selectionSnapshot\n\t\tthis.reset()\n\t\tthis.markId = 'translating'\n\t\tthis.editor.mark(this.markId)\n\t\tthis.updateShapes()\n\t}\n\n\treset() {\n\t\tthis.editor.bailToMark(this.markId)\n\t}\n\n\tprotected complete() {\n\t\tthis.updateShapes()\n\t\tthis.dragAndDropManager.dropShapes(this.snapshot.movingShapes)\n\t\tthis.handleEnd()\n\n\t\tif (this.editor.getInstanceState().isToolLocked && this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd)\n\t\t} else {\n\t\t\tif (this.isCreating) {\n\t\t\t\tthis.onCreate?.(this.editor.getOnlySelectedShape())\n\t\t\t} else {\n\t\t\t\tthis.parent.transition('idle')\n\t\t\t}\n\t\t}\n\t}\n\n\tprivate cancel() {\n\t\tthis.reset()\n\t\tif (this.info.onInteractionEnd) {\n\t\t\tthis.editor.setCurrentTool(this.info.onInteractionEnd)\n\t\t} else {\n\t\t\tthis.parent.transition('idle', this.info)\n\t\t}\n\t}\n\n\tprotected handleStart() {\n\t\tconst { movingShapes } = this.snapshot\n\n\t\tconst changes: TLShapePartial[] = []\n\n\t\tmovingShapes.forEach((shape) => {\n\t\t\tconst util = this.editor.getShapeUtil(shape)\n\t\t\tconst change = util.onTranslateStart?.(shape)\n\t\t\tif (change) {\n\t\t\t\tchanges.push(change)\n\t\t\t}\n\t\t})\n\n\t\tif (changes.length > 0) {\n\t\t\tthis.editor.updateShapes(changes)\n\t\t}\n\n\t\tthis.editor.setHoveredShape(null)\n\t}\n\n\tprotected handleEnd() {\n\t\tconst { movingShapes } = this.snapshot\n\n\t\tconst changes: TLShapePartial[] = []\n\n\t\tmovingShapes.forEach((shape) => {\n\t\t\tconst current = this.editor.getShape(shape.id)!\n\t\t\tconst util = this.editor.getShapeUtil(shape)\n\t\t\tconst change = util.onTranslateEnd?.(shape, current)\n\t\t\tif (change) {\n\t\t\t\tchanges.push(change)\n\t\t\t}\n\t\t})\n\n\t\tif (changes.length > 0) {\n\t\t\tthis.editor.updateShapes(changes)\n\t\t}\n\t}\n\n\tprotected handleChange() {\n\t\tconst { movingShapes } = this.snapshot\n\n\t\tconst changes: TLShapePartial[] = []\n\n\t\tmovingShapes.forEach((shape) => {\n\t\t\tconst current = this.editor.getShape(shape.id)!\n\t\t\tconst util = this.editor.getShapeUtil(shape)\n\t\t\tconst change = util.onTranslate?.(shape, current)\n\t\t\tif (change) {\n\t\t\t\tchanges.push(change)\n\t\t\t}\n\t\t})\n\n\t\tif (changes.length > 0) {\n\t\t\tthis.editor.updateShapes(changes)\n\t\t}\n\t}\n\n\tprotected updateShapes() {\n\t\tconst { snapshot } = this\n\t\tthis.dragAndDropManager.updateDroppingNode(snapshot.movingShapes, this.updateParentTransforms)\n\n\t\tmoveShapesToPoint({\n\t\t\teditor: this.editor,\n\t\t\tshapeSnapshots: snapshot.shapeSnapshots,\n\t\t\taveragePagePoint: snapshot.averagePagePoint,\n\t\t\tinitialSelectionPageBounds: snapshot.initialPageBounds,\n\t\t\tinitialSelectionSnapPoints: snapshot.initialSnapPoints,\n\t\t})\n\n\t\tthis.handleChange()\n\t}\n\n\tprotected updateParentTransforms = () => {\n\t\tconst {\n\t\t\teditor,\n\t\t\tsnapshot: { shapeSnapshots },\n\t\t} = this\n\t\tconst movingShapes: TLShape[] = []\n\n\t\tshapeSnapshots.forEach((shapeSnapshot) => {\n\t\t\tconst shape = editor.getShape(shapeSnapshot.shape.id)\n\t\t\tif (!shape) return null\n\t\t\tmovingShapes.push(shape)\n\n\t\t\tconst parentTransform = isPageId(shape.parentId)\n\t\t\t\t? null\n\t\t\t\t: Matrix2d.Inverse(editor.getShapePageTransform(shape.parentId)!)\n\n\t\t\tshapeSnapshot.parentTransform = parentTransform\n\t\t})\n\t}\n}\n\nfunction getTranslatingSnapshot(editor: Editor) {\n\tconst movingShapes: TLShape[] = []\n\tconst pagePoints: Vec2d[] = []\n\n\tconst shapeSnapshots = compact(\n\t\teditor.getSelectedShapeIds().map((id): null | MovingShapeSnapshot => {\n\t\t\tconst shape = editor.getShape(id)\n\t\t\tif (!shape) return null\n\t\t\tmovingShapes.push(shape)\n\n\t\t\tconst pagePoint = editor.getShapePageTransform(id)!.point()\n\t\t\tif (!pagePoint) return null\n\t\t\tpagePoints.push(pagePoint)\n\n\t\t\tconst parentTransform = PageRecordType.isId(shape.parentId)\n\t\t\t\t? null\n\t\t\t\t: Matrix2d.Inverse(editor.getShapePageTransform(shape.parentId)!)\n\n\t\t\treturn {\n\t\t\t\tshape,\n\t\t\t\tpagePoint,\n\t\t\t\tparentTransform,\n\t\t\t}\n\t\t})\n\t)\n\n\tlet initialSnapPoints: SnapPoint[] = []\n\tif (editor.getSelectedShapeIds().length === 1) {\n\t\tinitialSnapPoints = editor.snaps.getSnapPointsCache().get(editor.getSelectedShapeIds()[0])!\n\t} else {\n\t\tconst selectionPageBounds = editor.getSelectionPageBounds()\n\t\tif (selectionPageBounds) {\n\t\t\tinitialSnapPoints = selectionPageBounds.snapPoints.map((p, i) => ({\n\t\t\t\tid: 'selection:' + i,\n\t\t\t\tx: p.x,\n\t\t\t\ty: p.y,\n\t\t\t}))\n\t\t}\n\t}\n\n\treturn {\n\t\taveragePagePoint: Vec2d.Average(pagePoints),\n\t\tmovingShapes,\n\t\tshapeSnapshots,\n\t\tinitialPageBounds: editor.getSelectionPageBounds()!,\n\t\tinitialSnapPoints,\n\t}\n}\n\nexport type TranslatingSnapshot = ReturnType<typeof getTranslatingSnapshot>\n\nexport interface MovingShapeSnapshot {\n\tshape: TLShape\n\tpagePoint: Vec2d\n\tparentTransform: Matrix2dModel | null\n}\n\nexport function moveShapesToPoint({\n\teditor,\n\tshapeSnapshots: snapshots,\n\taveragePagePoint,\n\tinitialSelectionPageBounds,\n\tinitialSelectionSnapPoints,\n}: {\n\teditor: Editor\n\tshapeSnapshots: MovingShapeSnapshot[]\n\taveragePagePoint: Vec2d\n\tinitialSelectionPageBounds: Box2d\n\tinitialSelectionSnapPoints: SnapPoint[]\n}) {\n\tconst { inputs } = editor\n\n\tconst isGridMode = editor.getInstanceState().isGridMode\n\n\tconst gridSize = editor.getDocumentSettings().gridSize\n\n\tconst delta = Vec2d.Sub(inputs.currentPagePoint, inputs.originPagePoint)\n\n\tconst flatten: 'x' | 'y' | null = editor.inputs.shiftKey\n\t\t? Math.abs(delta.x) < Math.abs(delta.y)\n\t\t\t? 'x'\n\t\t\t: 'y'\n\t\t: null\n\n\tif (flatten === 'x') {\n\t\tdelta.x = 0\n\t} else if (flatten === 'y') {\n\t\tdelta.y = 0\n\t}\n\n\t// Provisional snapping\n\teditor.snaps.clear()\n\n\tconst shouldSnap =\n\t\t(editor.user.getIsSnapMode() ? !inputs.ctrlKey : inputs.ctrlKey) &&\n\t\teditor.inputs.pointerVelocity.len() < 0.5 // ...and if the user is not dragging fast\n\n\tif (shouldSnap) {\n\t\tconst { nudge } = editor.snaps.snapTranslate({\n\t\t\tdragDelta: delta,\n\t\t\tinitialSelectionPageBounds,\n\t\t\tlockedAxis: flatten,\n\t\t\tinitialSelectionSnapPoints,\n\t\t})\n\n\t\tdelta.add(nudge)\n\t}\n\n\tconst averageSnappedPoint = Vec2d.Add(averagePagePoint, delta)\n\n\tif (isGridMode && !inputs.ctrlKey) {\n\t\taverageSnappedPoint.snapToGrid(gridSize)\n\t}\n\n\tconst averageSnap = Vec2d.Sub(averageSnappedPoint, averagePagePoint)\n\n\teditor.updateShapes(\n\t\tcompact(\n\t\t\tsnapshots.map(({ shape, pagePoint, parentTransform }): TLShapePartial | null => {\n\t\t\t\tconst newPagePoint = Vec2d.Add(pagePoint, averageSnap)\n\t\t\t\tconst newLocalPoint = parentTransform\n\t\t\t\t\t? Matrix2d.applyToPoint(parentTransform, newPagePoint)\n\t\t\t\t\t: newPagePoint\n\n\t\t\t\treturn {\n\t\t\t\t\tid: shape.id,\n\t\t\t\t\ttype: shape.type,\n\t\t\t\t\tx: newLocalPoint.x,\n\t\t\t\t\ty: newLocalPoint.y,\n\t\t\t\t}\n\t\t\t})\n\t\t),\n\t\t{ squashing: true }\n\t)\n}\n"],
|
|
5
|
-
"mappings": "AAAA;AAAA,EAGC;AAAA,EAEA;AAAA,EAEA;AAAA,EAMA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AACP,SAAS,0BAA0B;AAE5B,MAAM,oBAAoB,UAAU;AAAA,EAC1C,OAAgB,KAAK;AAAA,EAErB,OAAO,CAAC;AAAA,EAOR,oBAAyC,CAAC;AAAA,EAE1C,WAAgC,CAAC;AAAA,EAEjC,SAAS;AAAA,EAET,YAAY;AAAA,EACZ,aAAa;AAAA,EACb,WAA4C,MAAM;AAAA,EAElD,qBAAqB,IAAI,mBAAmB,KAAK,MAAM;AAAA,EAE9C,UAAU,CAClB,SAMI;AACJ,UAAM,EAAE,aAAa,OAAO,WAAW,MAAM,OAAU,IAAI;AAE3D,SAAK,OAAO;AACZ,SAAK,OAAO,qBAAqB,KAAK,gBAAgB;AACtD,SAAK,aAAa;AAClB,SAAK,WAAW;AAEhB,QAAI,YAAY;AACf,WAAK,SAAS,YAAY,KAAK,OAAO,qBAAqB,EAAG,EAAE;AAAA,IACjE,OAAO;AACN,WAAK,SAAS;AACd,WAAK,OAAO,KAAK,KAAK,MAAM;AAAA,IAC7B;AAEA,SAAK,YAAY;AACjB,SAAK,OAAO;AAEZ,SAAK,OAAO,UAAU,EAAE,MAAM,QAAQ,UAAU,EAAE,CAAC;AACnD,SAAK,oBAAoB,uBAAuB,KAAK,MAAM;AAG3D,QAAI,CAAC,KAAK,YAAY;AACrB,UAAI,KAAK,OAAO,OAAO,QAAQ;AAC9B,aAAK,aAAa;AAClB;AAAA,MACD;AAAA,IACD;AAEA,SAAK,WAAW,KAAK;AACrB,SAAK,YAAY;AACjB,SAAK,aAAa;AAAA,EACnB;AAAA,EAES,SAAS,MAAM;AACvB,SAAK,OAAO,qBAAqB,MAAS;AAC1C,SAAK,oBAAoB,CAAC;AAC1B,SAAK,WAAW,CAAC;AACjB,SAAK,OAAO,MAAM,MAAM;AACxB,SAAK,OAAO;AAAA,MACX,EAAE,QAAQ,EAAE,MAAM,WAAW,UAAU,EAAE,EAAE;AAAA,MAC3C,EAAE,WAAW,KAAK;AAAA,IACnB;AACA,SAAK,mBAAmB,MAAM;AAAA,EAC/B;AAAA,EAES,SAA6B,MAAM;AAC3C,SAAK,mBAAmB;AAAA,MACvB,KAAK,SAAS;AAAA,MACd,KAAK;AAAA,IACN;AACA,8BAA0B,KAAK,MAAM;AAAA,EACtC;AAAA,EAES,gBAAgB,MAAM;AAC9B,SAAK,aAAa;AAAA,EACnB;AAAA,EAES,YAAY,MAAM;AAC1B,QAAI,KAAK,OAAO,OAAO,UAAU,CAAC,KAAK,WAAW;AACjD,WAAK,aAAa;AAClB;AAAA,IACD;AAGA,SAAK,aAAa;AAAA,EACnB;AAAA,EAES,UAAsC,MAAM;AACpD,QAAI,CAAC,KAAK,OAAO,OAAO,UAAU,KAAK,WAAW;AACjD,WAAK,YAAY;AACjB;AAAA,IACD;AAGA,SAAK,aAAa;AAAA,EACnB;AAAA,EAES,cAA8C,MAAM;AAC5D,SAAK,SAAS;AAAA,EACf;AAAA,EAES,aAA4C,MAAM;AAC1D,SAAK,SAAS;AAAA,EACf;AAAA,EAES,WAAwC,MAAM;AACtD,SAAK,OAAO;AAAA,EACb;AAAA,EAEU,eAAe;AACxB,QAAI,KAAK;
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -25,8 +25,7 @@ class DraggingHandle extends StateNode {
|
|
|
25
25
|
this.parent.setCurrentToolIdMask(info.onInteractionEnd);
|
|
26
26
|
this.shapeId = shape.id;
|
|
27
27
|
this.markId = isCreating ? `creating:${shape.id}` : "dragging handle";
|
|
28
|
-
if (!isCreating)
|
|
29
|
-
this.editor.mark(this.markId);
|
|
28
|
+
if (!isCreating) this.editor.mark(this.markId);
|
|
30
29
|
this.initialHandle = deepCopy(handle);
|
|
31
30
|
this.initialPageTransform = this.editor.getShapePageTransform(shape);
|
|
32
31
|
this.initialPageRotation = this.initialPageTransform.rotation();
|
|
@@ -150,8 +149,7 @@ class DraggingHandle extends StateNode {
|
|
|
150
149
|
} = editor;
|
|
151
150
|
const initial = this.info.shape;
|
|
152
151
|
const shape = editor.getShape(shapeId);
|
|
153
|
-
if (!shape)
|
|
154
|
-
return;
|
|
152
|
+
if (!shape) return;
|
|
155
153
|
const util = editor.getShapeUtil(shape);
|
|
156
154
|
let point = currentPagePoint.clone().sub(initialPagePoint).rot(-initialPageRotation).add(initialHandle);
|
|
157
155
|
if (shiftKey && initialAdjacentHandle && initialHandle.id !== "middle") {
|
|
@@ -163,8 +161,7 @@ class DraggingHandle extends StateNode {
|
|
|
163
161
|
editor.snaps.clear();
|
|
164
162
|
if (initialHandle.canSnap && (isSnapMode ? !ctrlKey : ctrlKey)) {
|
|
165
163
|
const pageTransform = editor.getShapePageTransform(shape.id);
|
|
166
|
-
if (!pageTransform)
|
|
167
|
-
throw Error("Expected a page transform");
|
|
164
|
+
if (!pageTransform) throw Error("Expected a page transform");
|
|
168
165
|
const handleIndex = editor.getShapeHandles(shape).filter(({ type }) => type === "vertex").sort(sortByIndex).findIndex(({ index }) => initialHandle.index === index);
|
|
169
166
|
const additionalSegments = util.getOutlineSegments(shape).map((segment) => Matrix2d.applyToPoints(pageTransform, segment)).filter((_segment, i) => i !== handleIndex - 1 && i !== handleIndex);
|
|
170
167
|
const snapDelta = snaps.getSnappingHandleDelta({
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../../src/lib/tools/SelectTool/children/DraggingHandle.ts"],
|
|
4
4
|
"sourcesContent": ["import {\n\tMatrix2d,\n\tStateNode,\n\tTLArrowShape,\n\tTLArrowShapeTerminal,\n\tTLCancelEvent,\n\tTLEnterEventHandler,\n\tTLEventHandlers,\n\tTLHandle,\n\tTLKeyboardEvent,\n\tTLPointerEventInfo,\n\tTLShapeId,\n\tTLShapePartial,\n\tVec2d,\n\tdeepCopy,\n\tsnapAngle,\n\tsortByIndex,\n} from '@bigbluebutton/editor'\n\nexport class DraggingHandle extends StateNode {\n\tstatic override id = 'dragging_handle'\n\n\tshapeId = '' as TLShapeId\n\tinitialHandle = {} as TLHandle\n\tinitialAdjacentHandle = null as TLHandle | null\n\tinitialPagePoint = {} as Vec2d\n\n\tmarkId = ''\n\tinitialPageTransform: any\n\tinitialPageRotation: any\n\n\tinfo = {} as TLPointerEventInfo & {\n\t\tshape: TLArrowShape\n\t\ttarget: 'handle'\n\t\tonInteractionEnd?: string\n\t\tisCreating: boolean\n\t}\n\n\tisPrecise = false\n\tisPreciseId = null as TLShapeId | null\n\tpointingId = null as TLShapeId | null\n\n\toverride onEnter: TLEnterEventHandler = (\n\t\tinfo: TLPointerEventInfo & {\n\t\t\tshape: TLArrowShape\n\t\t\ttarget: 'handle'\n\t\t\tonInteractionEnd?: string\n\t\t\tisCreating: boolean\n\t\t}\n\t) => {\n\t\tconst { shape, isCreating, handle } = info\n\t\tthis.info = info\n\t\tthis.parent.setCurrentToolIdMask(info.onInteractionEnd)\n\t\tthis.shapeId = shape.id\n\t\tthis.markId = isCreating ? `creating:${shape.id}` : 'dragging handle'\n\t\tif (!isCreating) this.editor.mark(this.markId)\n\t\tthis.initialHandle = deepCopy(handle)\n\t\tthis.initialPageTransform = this.editor.getShapePageTransform(shape)!\n\t\tthis.initialPageRotation = this.initialPageTransform.rotation()\n\t\tthis.initialPagePoint = this.editor.inputs.originPagePoint.clone()\n\n\t\tthis.editor.updateInstanceState(\n\t\t\t{ cursor: { type: isCreating ? 'cross' : 'grabbing', rotation: 0 } },\n\t\t\t{ ephemeral: true }\n\t\t)\n\n\t\t// <!-- Only relevant to arrows\n\t\tconst handles = this.editor.getShapeHandles(shape)!.sort(sortByIndex)\n\t\tconst index = handles.findIndex((h) => h.id === info.handle.id)\n\n\t\t// Find the adjacent handle\n\t\tthis.initialAdjacentHandle = null\n\n\t\t// Start from the handle and work forward\n\t\tfor (let i = index + 1; i < handles.length; i++) {\n\t\t\tconst handle = handles[i]\n\t\t\tif (handle.type === 'vertex' && handle.id !== 'middle' && handle.id !== info.handle.id) {\n\t\t\t\tthis.initialAdjacentHandle = handle\n\t\t\t\tbreak\n\t\t\t}\n\t\t}\n\n\t\t// If still no handle, start from the end and work backward\n\t\tif (!this.initialAdjacentHandle) {\n\t\t\tfor (let i = handles.length - 1; i >= 0; i--) {\n\t\t\t\tconst handle = handles[i]\n\t\t\t\tif (handle.type === 'vertex' && handle.id !== 'middle' && handle.id !== info.handle.id) {\n\t\t\t\t\tthis.initialAdjacentHandle = handle\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst initialTerminal = shape.props[info.handle.id as 'start' | 'end']\n\n\t\tthis.isPrecise = false\n\n\t\tif (initialTerminal?.type === 'binding') {\n\t\t\tthis.editor.setHintingShapes([initialTerminal.boundShapeId])\n\n\t\t\tthis.isPrecise = initialTerminal.isPrecise\n\t\t\tif (this.isPrecise) {\n\t\t\t\tthis.isPreciseId = initialTerminal.boundShapeId\n\t\t\t} else {\n\t\t\t\tthis.resetExactTimeout()\n\t\t\t}\n\t\t} else {\n\t\t\tthis.editor.setHintingShapes([])\n\t\t}\n\t\t// -->\n\n\t\tthis.update()\n\n\t\tthis.editor.select(this.shapeId)\n\t}\n\n\t// Only relevant to arrows\n\tprivate exactTimeout = -1 as any\n\n\t// Only relevant to arrows\n\tprivate resetExactTimeout() {\n\t\tif (this.exactTimeout !== -1) {\n\t\t\tthis.clearExactTimeout()\n\t\t}\n\n\t\tthis.exactTimeout = setTimeout(() => {\n\t\t\tif (this.getIsActive() && !this.isPrecise) {\n\t\t\t\tthis.isPrecise = true\n\t\t\t\tthis.isPreciseId = this.pointingId\n\t\t\t\tthis.update()\n\t\t\t}\n\t\t\tthis.exactTimeout = -1\n\t\t}, 750)\n\t}\n\n\t// Only relevant to arrows\n\tprivate clearExactTimeout() {\n\t\tif (this.exactTimeout !== -1) {\n\t\t\tclearTimeout(this.exactTimeout)\n\t\t\tthis.exactTimeout = -1\n\t\t}\n\t}\n\n\toverride onPointerMove: TLEventHandlers['onPointerMove'] = () => {\n\t\tthis.update()\n\t}\n\n\toverride onKeyDown: TLKeyboardEvent | undefined = () => {\n\t\tthis.update()\n\t}\n\n\toverride onKeyUp: TLKeyboardEvent | undefined = () => {\n\t\tthis.update()\n\t}\n\n\toverride onPointerUp: TLEventHandlers['onPointerUp'] = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onComplete: TLEventHandlers['onComplete'] = () => {\n\t\tthis.complete()\n\t}\n\n\toverride onCancel: TLCancelEvent = () => {\n\t\tthis.cancel()\n\t}\n\n\toverride onExit = () => {\n\t\tthis.parent.setCurrentToolIdMask(undefined)\n\t\tthis.editor.setHintingShapes([])\n\t\tthis.editor.snaps.clear()\n\t\tthis.editor.updateInstanceState(\n\t\t\t{ cursor: { type: 'default', rotation: 0 } },\n\t\t\t{ ephemeral: true }\n\t\t)\n\t}\n\n\tprivate complete() {\n\t\tthis.editor.snaps.clear()\n\n\t\tconst { onInteractionEnd } = this.info\n\t\tif (this.editor.getInstanceState().isToolLocked && onInteractionEnd) {\n\t\t\t// Return to the tool that was active before this one,\n\t\t\t// but only if tool lock is turned on!\n\t\t\tthis.editor.setCurrentTool(onInteractionEnd, { shapeId: this.shapeId })\n\t\t\treturn\n\t\t}\n\n\t\tthis.parent.transition('idle')\n\t}\n\n\tprivate cancel() {\n\t\tthis.editor.bailToMark(this.markId)\n\t\tthis.editor.snaps.clear()\n\n\t\tconst { onInteractionEnd } = this.info\n\t\tif (onInteractionEnd) {\n\t\t\t// Return to the tool that was active before this one,\n\t\t\t// whether tool lock is turned on or not!\n\t\t\tthis.editor.setCurrentTool(onInteractionEnd, { shapeId: this.shapeId })\n\t\t\treturn\n\t\t}\n\n\t\tthis.parent.transition('idle')\n\t}\n\n\tprivate update() {\n\t\tconst { editor, shapeId, initialPagePoint } = this\n\t\tconst { initialHandle, initialPageRotation, initialAdjacentHandle } = this\n\t\tconst hintingShapeIds = this.editor.getHintingShapeIds()\n\t\tconst isSnapMode = this.editor.user.getIsSnapMode()\n\t\tconst {\n\t\t\tsnaps,\n\t\t\tinputs: { currentPagePoint, shiftKey, ctrlKey, altKey, pointerVelocity },\n\t\t} = editor\n\n\t\tconst initial = this.info.shape\n\t\tconst shape = editor.getShape(shapeId)\n\t\tif (!shape) return\n\t\tconst util = editor.getShapeUtil(shape)\n\n\t\tlet point = currentPagePoint\n\t\t\t.clone()\n\t\t\t.sub(initialPagePoint)\n\t\t\t.rot(-initialPageRotation)\n\t\t\t.add(initialHandle)\n\n\t\tif (shiftKey && initialAdjacentHandle && initialHandle.id !== 'middle') {\n\t\t\tconst angle = Vec2d.Angle(initialAdjacentHandle, point)\n\t\t\tconst snappedAngle = snapAngle(angle, 24)\n\t\t\tconst angleDifference = snappedAngle - angle\n\t\t\tpoint = Vec2d.RotWith(point, initialAdjacentHandle, angleDifference)\n\t\t}\n\n\t\t// Clear any existing snaps\n\t\teditor.snaps.clear()\n\n\t\tif (initialHandle.canSnap && (isSnapMode ? !ctrlKey : ctrlKey)) {\n\t\t\t// We're snapping\n\t\t\tconst pageTransform = editor.getShapePageTransform(shape.id)\n\t\t\tif (!pageTransform) throw Error('Expected a page transform')\n\n\t\t\t// We want to skip the segments that include the handle, so\n\t\t\t// find the index of the handle that shares the same index property\n\t\t\t// as the initial dragging handle; this catches a quirk of create handles\n\t\t\tconst handleIndex = editor\n\t\t\t\t.getShapeHandles(shape)!\n\t\t\t\t.filter(({ type }) => type === 'vertex')\n\t\t\t\t.sort(sortByIndex)\n\t\t\t\t.findIndex(({ index }) => initialHandle.index === index)\n\n\t\t\t// Get all the outline segments from the shape\n\t\t\tconst additionalSegments = util\n\t\t\t\t.getOutlineSegments(shape)\n\t\t\t\t.map((segment) => Matrix2d.applyToPoints(pageTransform, segment))\n\t\t\t\t.filter((_segment, i) => i !== handleIndex - 1 && i !== handleIndex)\n\n\t\t\tconst snapDelta = snaps.getSnappingHandleDelta({\n\t\t\t\tadditionalSegments,\n\t\t\t\thandlePoint: Matrix2d.applyToPoint(pageTransform, point),\n\t\t\t})\n\n\t\t\tif (snapDelta) {\n\t\t\t\tsnapDelta.rot(-editor.getShapeParentTransform(shape)!.rotation())\n\t\t\t\tpoint.add(snapDelta)\n\t\t\t}\n\t\t}\n\n\t\tconst changes = util.onHandleChange?.(shape, {\n\t\t\thandle: {\n\t\t\t\t...initialHandle,\n\t\t\t\tx: point.x,\n\t\t\t\ty: point.y,\n\t\t\t},\n\t\t\tisPrecise: this.isPrecise || altKey,\n\t\t\tinitial: initial,\n\t\t})\n\n\t\tconst next: TLShapePartial<any> = { ...shape, ...changes }\n\n\t\t// Arrows\n\t\tif (initialHandle.canBind) {\n\t\t\tconst bindingAfter = (next.props as any)[initialHandle.id] as TLArrowShapeTerminal | undefined\n\n\t\t\tif (bindingAfter?.type === 'binding') {\n\t\t\t\tif (hintingShapeIds[0] !== bindingAfter.boundShapeId) {\n\t\t\t\t\teditor.setHintingShapes([bindingAfter.boundShapeId])\n\t\t\t\t\tthis.pointingId = bindingAfter.boundShapeId\n\t\t\t\t\tthis.isPrecise = pointerVelocity.len() < 0.5 || altKey\n\t\t\t\t\tthis.isPreciseId = this.isPrecise ? bindingAfter.boundShapeId : null\n\t\t\t\t\tthis.resetExactTimeout()\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (hintingShapeIds.length > 0) {\n\t\t\t\t\teditor.setHintingShapes([])\n\t\t\t\t\tthis.pointingId = null\n\t\t\t\t\tthis.isPrecise = false\n\t\t\t\t\tthis.isPreciseId = null\n\t\t\t\t\tthis.resetExactTimeout()\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (changes) {\n\t\t\teditor.updateShapes([next], { squashing: true })\n\t\t}\n\t}\n}\n"],
|
|
5
|
-
"mappings": "AAAA;AAAA,EACC;AAAA,EACA;AAAA,EAWA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACM;AAEA,MAAM,uBAAuB,UAAU;AAAA,EAC7C,OAAgB,KAAK;AAAA,EAErB,UAAU;AAAA,EACV,gBAAgB,CAAC;AAAA,EACjB,wBAAwB;AAAA,EACxB,mBAAmB,CAAC;AAAA,EAEpB,SAAS;AAAA,EACT;AAAA,EACA;AAAA,EAEA,OAAO,CAAC;AAAA,EAOR,YAAY;AAAA,EACZ,cAAc;AAAA,EACd,aAAa;AAAA,EAEJ,UAA+B,CACvC,SAMI;AACJ,UAAM,EAAE,OAAO,YAAY,OAAO,IAAI;AACtC,SAAK,OAAO;AACZ,SAAK,OAAO,qBAAqB,KAAK,gBAAgB;AACtD,SAAK,UAAU,MAAM;AACrB,SAAK,SAAS,aAAa,YAAY,MAAM,EAAE,KAAK;AACpD,QAAI,CAAC
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["handle"]
|
|
7
7
|
}
|
|
@@ -6,8 +6,7 @@ function updateHoveredId(editor) {
|
|
|
6
6
|
margin: HIT_TEST_MARGIN / editor.getZoomLevel(),
|
|
7
7
|
renderingOnly: true
|
|
8
8
|
});
|
|
9
|
-
if (!hitShape)
|
|
10
|
-
return editor.setHoveredShape(null);
|
|
9
|
+
if (!hitShape) return editor.setHoveredShape(null);
|
|
11
10
|
let shapeToHover = void 0;
|
|
12
11
|
const outermostShape = editor.getOutermostSelectableShape(hitShape);
|
|
13
12
|
if (outermostShape === hitShape) {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/tools/selection-logic/updateHoveredId.ts"],
|
|
4
4
|
"sourcesContent": ["import { Editor, HIT_TEST_MARGIN, TLShape } from '@bigbluebutton/editor'\n\nexport function updateHoveredId(editor: Editor) {\n\t// todo: consider replacing `get hoveredShapeId` with this; it would mean keeping hoveredShapeId in memory rather than in the store and possibly re-computing it more often than necessary\n\tconst hitShape = editor.getShapeAtPoint(editor.inputs.currentPagePoint, {\n\t\thitInside: false,\n\t\thitLabels: false,\n\t\tmargin: HIT_TEST_MARGIN / editor.getZoomLevel(),\n\t\trenderingOnly: true,\n\t})\n\n\tif (!hitShape) return editor.setHoveredShape(null)\n\n\tlet shapeToHover: TLShape | undefined = undefined\n\n\tconst outermostShape = editor.getOutermostSelectableShape(hitShape)\n\n\tif (outermostShape === hitShape) {\n\t\tshapeToHover = hitShape\n\t} else {\n\t\tif (\n\t\t\toutermostShape.id === editor.getFocusedGroupId() ||\n\t\t\teditor.getSelectedShapeIds().includes(outermostShape.id)\n\t\t) {\n\t\t\tshapeToHover = hitShape\n\t\t} else {\n\t\t\tshapeToHover = outermostShape\n\t\t}\n\t}\n\n\treturn editor.setHoveredShape(shapeToHover.id)\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAiB,uBAAgC;AAE1C,SAAS,gBAAgB,QAAgB;AAE/C,QAAM,WAAW,OAAO,gBAAgB,OAAO,OAAO,kBAAkB;AAAA,IACvE,WAAW;AAAA,IACX,WAAW;AAAA,IACX,QAAQ,kBAAkB,OAAO,aAAa;AAAA,IAC9C,eAAe;AAAA,EAChB,CAAC;AAED,MAAI,CAAC
|
|
5
|
+
"mappings": "AAAA,SAAiB,uBAAgC;AAE1C,SAAS,gBAAgB,QAAgB;AAE/C,QAAM,WAAW,OAAO,gBAAgB,OAAO,OAAO,kBAAkB;AAAA,IACvE,WAAW;AAAA,IACX,WAAW;AAAA,IACX,QAAQ,kBAAkB,OAAO,aAAa;AAAA,IAC9C,eAAe;AAAA,EAChB,CAAC;AAED,MAAI,CAAC,SAAU,QAAO,OAAO,gBAAgB,IAAI;AAEjD,MAAI,eAAoC;AAExC,QAAM,iBAAiB,OAAO,4BAA4B,QAAQ;AAElE,MAAI,mBAAmB,UAAU;AAChC,mBAAe;AAAA,EAChB,OAAO;AACN,QACC,eAAe,OAAO,OAAO,kBAAkB,KAC/C,OAAO,oBAAoB,EAAE,SAAS,eAAe,EAAE,GACtD;AACD,qBAAe;AAAA,IAChB,OAAO;AACN,qBAAe;AAAA,IAChB;AAAA,EACD;AAEA,SAAO,OAAO,gBAAgB,aAAa,EAAE;AAC9C;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -27,8 +27,7 @@ function setDefaultUiAssetUrls(urls) {
|
|
|
27
27
|
defaultUiAssetUrls = urls;
|
|
28
28
|
}
|
|
29
29
|
function useDefaultUiAssetUrlsWithOverrides(overrides) {
|
|
30
|
-
if (!overrides)
|
|
31
|
-
return defaultUiAssetUrls;
|
|
30
|
+
if (!overrides) return defaultUiAssetUrls;
|
|
32
31
|
return {
|
|
33
32
|
fonts: Object.assign({ ...defaultUiAssetUrls.fonts }, { ...overrides?.fonts }),
|
|
34
33
|
icons: Object.assign({ ...defaultUiAssetUrls.icons }, { ...overrides?.icons }),
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/lib/ui/assetUrls.ts"],
|
|
4
4
|
"sourcesContent": ["import { EMBED_DEFINITIONS, LANGUAGES, RecursivePartial } from '@bigbluebutton/editor'\nimport { version } from '../ui/version'\nimport { TLEditorAssetUrls, defaultEditorAssetUrls } from '../utils/static-assets/assetUrls'\nimport { TLUiIconType, iconTypes } from './icon-types'\n\nexport type TLUiAssetUrls = TLEditorAssetUrls & {\n\ticons: Record<TLUiIconType | Exclude<string, TLUiIconType>, string>\n\ttranslations: Record<(typeof LANGUAGES)[number]['locale'], string>\n\tembedIcons: Record<(typeof EMBED_DEFINITIONS)[number]['type'], string>\n}\n\n/** @public */\nexport type TLUiAssetUrlOverrides = RecursivePartial<TLUiAssetUrls>\n\nexport let defaultUiAssetUrls: TLUiAssetUrls = {\n\t...defaultEditorAssetUrls,\n\ticons: Object.fromEntries(\n\t\ticonTypes.map((name) => [\n\t\t\tname,\n\t\t\t`https://unpkg.com/@bigbluebutton/assets@${version}/icons/icon/${name}.svg`,\n\t\t])\n\t) as Record<TLUiIconType, string>,\n\ttranslations: Object.fromEntries(\n\t\tLANGUAGES.map((lang) => [\n\t\t\tlang.locale,\n\t\t\t`https://unpkg.com/@bigbluebutton/assets@${version}/translations/${lang.locale}.json`,\n\t\t])\n\t) as Record<(typeof LANGUAGES)[number]['locale'], string>,\n\tembedIcons: Object.fromEntries(\n\t\tEMBED_DEFINITIONS.map((def) => [\n\t\t\tdef.type,\n\t\t\t`https://unpkg.com/@bigbluebutton/assets@${version}/embed-icons/${def.type}.png`,\n\t\t])\n\t) as Record<(typeof EMBED_DEFINITIONS)[number]['type'], string>,\n}\n\n/** @internal */\nexport function setDefaultUiAssetUrls(urls: TLUiAssetUrls) {\n\tdefaultUiAssetUrls = urls\n}\n\n/** @internal */\nexport function useDefaultUiAssetUrlsWithOverrides(\n\toverrides?: RecursivePartial<TLUiAssetUrls>\n): TLUiAssetUrls {\n\tif (!overrides) return defaultUiAssetUrls\n\n\treturn {\n\t\tfonts: Object.assign({ ...defaultUiAssetUrls.fonts }, { ...overrides?.fonts }),\n\t\ticons: Object.assign({ ...defaultUiAssetUrls.icons }, { ...overrides?.icons }),\n\t\tembedIcons: Object.assign({ ...defaultUiAssetUrls.embedIcons }, { ...overrides?.embedIcons }),\n\t\ttranslations: Object.assign(\n\t\t\t{ ...defaultUiAssetUrls.translations },\n\t\t\t{ ...overrides?.translations }\n\t\t),\n\t}\n}\n"],
|
|
5
|
-
"mappings": "AAAA,SAAS,mBAAmB,iBAAmC;AAC/D,SAAS,eAAe;AACxB,SAA4B,8BAA8B;AAC1D,SAAuB,iBAAiB;AAWjC,IAAI,qBAAoC;AAAA,EAC9C,GAAG;AAAA,EACH,OAAO,OAAO;AAAA,IACb,UAAU,IAAI,CAAC,SAAS;AAAA,MACvB;AAAA,MACA,2CAA2C,OAAO,eAAe,IAAI;AAAA,IACtE,CAAC;AAAA,EACF;AAAA,EACA,cAAc,OAAO;AAAA,IACpB,UAAU,IAAI,CAAC,SAAS;AAAA,MACvB,KAAK;AAAA,MACL,2CAA2C,OAAO,iBAAiB,KAAK,MAAM;AAAA,IAC/E,CAAC;AAAA,EACF;AAAA,EACA,YAAY,OAAO;AAAA,IAClB,kBAAkB,IAAI,CAAC,QAAQ;AAAA,MAC9B,IAAI;AAAA,MACJ,2CAA2C,OAAO,gBAAgB,IAAI,IAAI;AAAA,IAC3E,CAAC;AAAA,EACF;AACD;AAGO,SAAS,sBAAsB,MAAqB;AAC1D,uBAAqB;AACtB;AAGO,SAAS,mCACf,WACgB;AAChB,MAAI,CAAC
|
|
5
|
+
"mappings": "AAAA,SAAS,mBAAmB,iBAAmC;AAC/D,SAAS,eAAe;AACxB,SAA4B,8BAA8B;AAC1D,SAAuB,iBAAiB;AAWjC,IAAI,qBAAoC;AAAA,EAC9C,GAAG;AAAA,EACH,OAAO,OAAO;AAAA,IACb,UAAU,IAAI,CAAC,SAAS;AAAA,MACvB;AAAA,MACA,2CAA2C,OAAO,eAAe,IAAI;AAAA,IACtE,CAAC;AAAA,EACF;AAAA,EACA,cAAc,OAAO;AAAA,IACpB,UAAU,IAAI,CAAC,SAAS;AAAA,MACvB,KAAK;AAAA,MACL,2CAA2C,OAAO,iBAAiB,KAAK,MAAM;AAAA,IAC/E,CAAC;AAAA,EACF;AAAA,EACA,YAAY,OAAO;AAAA,IAClB,kBAAkB,IAAI,CAAC,QAAQ;AAAA,MAC9B,IAAI;AAAA,MACJ,2CAA2C,OAAO,gBAAgB,IAAI,IAAI;AAAA,IAC3E,CAAC;AAAA,EACF;AACD;AAGO,SAAS,sBAAsB,MAAqB;AAC1D,uBAAqB;AACtB;AAGO,SAAS,mCACf,WACgB;AAChB,MAAI,CAAC,UAAW,QAAO;AAEvB,SAAO;AAAA,IACN,OAAO,OAAO,OAAO,EAAE,GAAG,mBAAmB,MAAM,GAAG,EAAE,GAAG,WAAW,MAAM,CAAC;AAAA,IAC7E,OAAO,OAAO,OAAO,EAAE,GAAG,mBAAmB,MAAM,GAAG,EAAE,GAAG,WAAW,MAAM,CAAC;AAAA,IAC7E,YAAY,OAAO,OAAO,EAAE,GAAG,mBAAmB,WAAW,GAAG,EAAE,GAAG,WAAW,WAAW,CAAC;AAAA,IAC5F,cAAc,OAAO;AAAA,MACpB,EAAE,GAAG,mBAAmB,aAAa;AAAA,MACrC,EAAE,GAAG,WAAW,aAAa;AAAA,IAC9B;AAAA,EACD;AACD;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -14,10 +14,8 @@ const ActionsMenu = memo(function ActionsMenu2() {
|
|
|
14
14
|
const menuSchema = useActionsMenuSchema();
|
|
15
15
|
const isReadonly = useReadonly();
|
|
16
16
|
function getActionMenuItem(item) {
|
|
17
|
-
if (!item)
|
|
18
|
-
|
|
19
|
-
if (isReadonly && !item.readonlyOk)
|
|
20
|
-
return null;
|
|
17
|
+
if (!item) return null;
|
|
18
|
+
if (isReadonly && !item.readonlyOk) return null;
|
|
21
19
|
switch (item.type) {
|
|
22
20
|
case "item": {
|
|
23
21
|
const { id, icon, label, kbd, onSelect } = item.actionItem;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/ui/components/ActionsMenu.tsx"],
|
|
4
4
|
"sourcesContent": ["import { useContainer } from '@bigbluebutton/editor'\nimport * as PopoverPrimitive from '@radix-ui/react-popover'\nimport { memo } from 'react'\nimport { TLUiMenuChild } from '../hooks/menuHelpers'\nimport { useActionsMenuSchema } from '../hooks/useActionsMenuSchema'\nimport { useReadonly } from '../hooks/useReadonly'\nimport { useTranslation } from '../hooks/useTranslation/useTranslation'\nimport { Button } from './primitives/Button'\nimport { Popover, PopoverTrigger } from './primitives/Popover'\nimport { kbdStr } from './primitives/shared'\n\nexport const ActionsMenu = memo(function ActionsMenu() {\n\tconst msg = useTranslation()\n\tconst container = useContainer()\n\tconst menuSchema = useActionsMenuSchema()\n\tconst isReadonly = useReadonly()\n\n\tfunction getActionMenuItem(item: TLUiMenuChild) {\n\t\tif (!item) return null\n\t\tif (isReadonly && !item.readonlyOk) return null\n\n\t\tswitch (item.type) {\n\t\t\tcase 'item': {\n\t\t\t\tconst { id, icon, label, kbd, onSelect } = item.actionItem\n\n\t\t\t\treturn (\n\t\t\t\t\t<Button\n\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\tdata-testid={`menu-item.${item.id}`}\n\t\t\t\t\t\ticon={icon}\n\t\t\t\t\t\ttype=\"icon\"\n\t\t\t\t\t\ttitle={\n\t\t\t\t\t\t\tlabel\n\t\t\t\t\t\t\t\t? kbd\n\t\t\t\t\t\t\t\t\t? `${msg(label)} ${kbdStr(kbd)}`\n\t\t\t\t\t\t\t\t\t: `${msg(label)}`\n\t\t\t\t\t\t\t\t: kbd\n\t\t\t\t\t\t\t\t? `${kbdStr(kbd)}`\n\t\t\t\t\t\t\t\t: ''\n\t\t\t\t\t\t}\n\t\t\t\t\t\tonClick={() => onSelect('actions-menu')}\n\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t/>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (\n\t\t<Popover id=\"actions-menu\">\n\t\t\t<PopoverTrigger>\n\t\t\t\t<Button\n\t\t\t\t\tclassName=\"tlui-menu__trigger\"\n\t\t\t\t\tdata-testid=\"main.action-menu\"\n\t\t\t\t\ticon=\"dots-vertical\"\n\t\t\t\t\ttitle={msg('actions-menu.title')}\n\t\t\t\t\ttype=\"icon\" // needs to be here because the trigger also passes down type=\"button\"\n\t\t\t\t\tsmallIcon\n\t\t\t\t/>\n\t\t\t</PopoverTrigger>\n\t\t\t<PopoverPrimitive.Portal container={container}>\n\t\t\t\t<PopoverPrimitive.Content\n\t\t\t\t\tclassName=\"tlui-popover__content\"\n\t\t\t\t\tside=\"bottom\"\n\t\t\t\t\tdir=\"ltr\"\n\t\t\t\t\tsideOffset={6}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"tlui-actions-menu tlui-buttons__grid\">\n\t\t\t\t\t\t{menuSchema.map(getActionMenuItem)}\n\t\t\t\t\t</div>\n\t\t\t\t</PopoverPrimitive.Content>\n\t\t\t</PopoverPrimitive.Portal>\n\t\t</Popover>\n\t)\n})\n"],
|
|
5
|
-
"mappings": "AA0BK,cAuBH,YAvBG;AA1BL,SAAS,oBAAoB;AAC7B,YAAY,sBAAsB;AAClC,SAAS,YAAY;AAErB,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,cAAc;AACvB,SAAS,SAAS,sBAAsB;AACxC,SAAS,cAAc;AAEhB,MAAM,cAAc,KAAK,SAASA,eAAc;AACtD,QAAM,MAAM,eAAe;AAC3B,QAAM,YAAY,aAAa;AAC/B,QAAM,aAAa,qBAAqB;AACxC,QAAM,aAAa,YAAY;AAE/B,WAAS,kBAAkB,MAAqB;AAC/C,QAAI,CAAC
|
|
5
|
+
"mappings": "AA0BK,cAuBH,YAvBG;AA1BL,SAAS,oBAAoB;AAC7B,YAAY,sBAAsB;AAClC,SAAS,YAAY;AAErB,SAAS,4BAA4B;AACrC,SAAS,mBAAmB;AAC5B,SAAS,sBAAsB;AAC/B,SAAS,cAAc;AACvB,SAAS,SAAS,sBAAsB;AACxC,SAAS,cAAc;AAEhB,MAAM,cAAc,KAAK,SAASA,eAAc;AACtD,QAAM,MAAM,eAAe;AAC3B,QAAM,YAAY,aAAa;AAC/B,QAAM,aAAa,qBAAqB;AACxC,QAAM,aAAa,YAAY;AAE/B,WAAS,kBAAkB,MAAqB;AAC/C,QAAI,CAAC,KAAM,QAAO;AAClB,QAAI,cAAc,CAAC,KAAK,WAAY,QAAO;AAE3C,YAAQ,KAAK,MAAM;AAAA,MAClB,KAAK,QAAQ;AACZ,cAAM,EAAE,IAAI,MAAM,OAAO,KAAK,SAAS,IAAI,KAAK;AAEhD,eACC;AAAA,UAAC;AAAA;AAAA,YAEA,eAAa,aAAa,KAAK,EAAE;AAAA,YACjC;AAAA,YACA,MAAK;AAAA,YACL,OACC,QACG,MACC,GAAG,IAAI,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC,KAC5B,GAAG,IAAI,KAAK,CAAC,KACd,MACA,GAAG,OAAO,GAAG,CAAC,KACd;AAAA,YAEJ,SAAS,MAAM,SAAS,cAAc;AAAA,YACtC,UAAU,KAAK;AAAA;AAAA,UAdV;AAAA,QAeN;AAAA,MAEF;AAAA,IACD;AAAA,EACD;AAEA,SACC,qBAAC,WAAQ,IAAG,gBACX;AAAA,wBAAC,kBACA;AAAA,MAAC;AAAA;AAAA,QACA,WAAU;AAAA,QACV,eAAY;AAAA,QACZ,MAAK;AAAA,QACL,OAAO,IAAI,oBAAoB;AAAA,QAC/B,MAAK;AAAA,QACL,WAAS;AAAA;AAAA,IACV,GACD;AAAA,IACA,oBAAC,iBAAiB,QAAjB,EAAwB,WACxB;AAAA,MAAC,iBAAiB;AAAA,MAAjB;AAAA,QACA,WAAU;AAAA,QACV,MAAK;AAAA,QACL,KAAI;AAAA,QACJ,YAAY;AAAA,QAEZ,8BAAC,SAAI,WAAU,wCACb,qBAAW,IAAI,iBAAiB,GAClC;AAAA;AAAA,IACD,GACD;AAAA,KACD;AAEF,CAAC;",
|
|
6
6
|
"names": ["ActionsMenu"]
|
|
7
7
|
}
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/ui/components/BackToContent.tsx"],
|
|
4
4
|
"sourcesContent": ["import { useEditor } from '@bigbluebutton/editor'\nimport { useEffect, useState } from 'react'\nimport { useActions } from '../hooks/useActions'\nimport { Button } from './primitives/Button'\n\nexport function BackToContent() {\n\tconst editor = useEditor()\n\n\tconst actions = useActions()\n\tconst action = actions['back-to-content']\n\n\tconst [showBackToContent, setShowBackToContent] = useState(false)\n\n\tuseEffect(() => {\n\t\tlet showBackToContentPrev = false\n\n\t\tconst interval = setInterval(() => {\n\t\t\tconst renderingShapes = editor.getRenderingShapes()\n\t\t\tconst renderingBounds = editor.getRenderingBounds()\n\n\t\t\t// renderingShapes will also include shapes that have the canUnmount flag\n\t\t\t// set to true. These shapes will be on the canvas but may not be in the\n\t\t\t// viewport... so we also need to narrow down the list to only shapes that\n\t\t\t// are ALSO in the viewport.\n\t\t\tconst visibleShapes = renderingShapes.filter(\n\t\t\t\t(s) => s.maskedPageBounds && renderingBounds.includes(s.maskedPageBounds)\n\t\t\t)\n\t\t\tconst showBackToContentNow =\n\t\t\t\tvisibleShapes.length === 0 && editor.getCurrentPageShapes().length > 0\n\n\t\t\tif (showBackToContentPrev !== showBackToContentNow) {\n\t\t\t\tsetShowBackToContent(showBackToContentNow)\n\t\t\t\tshowBackToContentPrev = showBackToContentNow\n\t\t\t}\n\t\t}, 1000)\n\n\t\treturn () => {\n\t\t\tclearInterval(interval)\n\t\t}\n\t}, [editor])\n\n\tif (!showBackToContent) return null\n\n\treturn (\n\t\t<Button\n\t\t\ticonLeft={action.icon}\n\t\t\tlabel={action.label}\n\t\t\ttype=\"low\"\n\t\t\tonClick={() => {\n\t\t\t\taction.onSelect('helper-buttons')\n\t\t\t\tsetShowBackToContent(false)\n\t\t\t}}\n\t\t/>\n\t)\n}\n"],
|
|
5
|
-
"mappings": "AA4CE;AA5CF,SAAS,iBAAiB;AAC1B,SAAS,WAAW,gBAAgB;AACpC,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AAEhB,SAAS,gBAAgB;AAC/B,QAAM,SAAS,UAAU;AAEzB,QAAM,UAAU,WAAW;AAC3B,QAAM,SAAS,QAAQ,iBAAiB;AAExC,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,KAAK;AAEhE,YAAU,MAAM;AACf,QAAI,wBAAwB;AAE5B,UAAM,WAAW,YAAY,MAAM;AAClC,YAAM,kBAAkB,OAAO,mBAAmB;AAClD,YAAM,kBAAkB,OAAO,mBAAmB;AAMlD,YAAM,gBAAgB,gBAAgB;AAAA,QACrC,CAAC,MAAM,EAAE,oBAAoB,gBAAgB,SAAS,EAAE,gBAAgB;AAAA,MACzE;AACA,YAAM,uBACL,cAAc,WAAW,KAAK,OAAO,qBAAqB,EAAE,SAAS;AAEtE,UAAI,0BAA0B,sBAAsB;AACnD,6BAAqB,oBAAoB;AACzC,gCAAwB;AAAA,MACzB;AAAA,IACD,GAAG,GAAI;AAEP,WAAO,MAAM;AACZ,oBAAc,QAAQ;AAAA,IACvB;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,MAAI,CAAC
|
|
5
|
+
"mappings": "AA4CE;AA5CF,SAAS,iBAAiB;AAC1B,SAAS,WAAW,gBAAgB;AACpC,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AAEhB,SAAS,gBAAgB;AAC/B,QAAM,SAAS,UAAU;AAEzB,QAAM,UAAU,WAAW;AAC3B,QAAM,SAAS,QAAQ,iBAAiB;AAExC,QAAM,CAAC,mBAAmB,oBAAoB,IAAI,SAAS,KAAK;AAEhE,YAAU,MAAM;AACf,QAAI,wBAAwB;AAE5B,UAAM,WAAW,YAAY,MAAM;AAClC,YAAM,kBAAkB,OAAO,mBAAmB;AAClD,YAAM,kBAAkB,OAAO,mBAAmB;AAMlD,YAAM,gBAAgB,gBAAgB;AAAA,QACrC,CAAC,MAAM,EAAE,oBAAoB,gBAAgB,SAAS,EAAE,gBAAgB;AAAA,MACzE;AACA,YAAM,uBACL,cAAc,WAAW,KAAK,OAAO,qBAAqB,EAAE,SAAS;AAEtE,UAAI,0BAA0B,sBAAsB;AACnD,6BAAqB,oBAAoB;AACzC,gCAAwB;AAAA,MACzB;AAAA,IACD,GAAG,GAAI;AAEP,WAAO,MAAM;AACZ,oBAAc,QAAQ;AAAA,IACvB;AAAA,EACD,GAAG,CAAC,MAAM,CAAC;AAEX,MAAI,CAAC,kBAAmB,QAAO;AAE/B,SACC;AAAA,IAAC;AAAA;AAAA,MACA,UAAU,OAAO;AAAA,MACjB,OAAO,OAAO;AAAA,MACd,MAAK;AAAA,MACL,SAAS,MAAM;AACd,eAAO,SAAS,gBAAgB;AAChC,6BAAqB,KAAK;AAAA,MAC3B;AAAA;AAAA,EACD;AAEF;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -76,10 +76,8 @@ const ContextMenuContent = forwardRef(function ContextMenuContent2() {
|
|
|
76
76
|
const container = useContainer();
|
|
77
77
|
const [disableClicks, setDisableClicks] = useState(false);
|
|
78
78
|
function getContextMenuItem(editor2, item, parent, depth) {
|
|
79
|
-
if (!item)
|
|
80
|
-
|
|
81
|
-
if (isReadonly && !item.readonlyOk)
|
|
82
|
-
return null;
|
|
79
|
+
if (!item) return null;
|
|
80
|
+
if (isReadonly && !item.readonlyOk) return null;
|
|
83
81
|
switch (item.type) {
|
|
84
82
|
case "custom": {
|
|
85
83
|
switch (item.id) {
|
|
@@ -118,8 +116,7 @@ const ContextMenuContent = forwardRef(function ContextMenuContent2() {
|
|
|
118
116
|
] }, item.id);
|
|
119
117
|
}
|
|
120
118
|
case "item": {
|
|
121
|
-
if (isReadonly && !item.readonlyOk)
|
|
122
|
-
return null;
|
|
119
|
+
if (isReadonly && !item.readonlyOk) return null;
|
|
123
120
|
const { id, checkbox, contextMenuLabel, label, onSelect, kbd, icon } = item.actionItem;
|
|
124
121
|
const labelToUse = contextMenuLabel ?? label;
|
|
125
122
|
const labelStr = labelToUse ? msg(labelToUse) : void 0;
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/ui/components/ContextMenu.tsx"],
|
|
4
4
|
"sourcesContent": ["import { Editor, preventDefault, useContainer, useEditor, useValue } from '@bigbluebutton/editor'\nimport * as _ContextMenu from '@radix-ui/react-context-menu'\nimport classNames from 'classnames'\nimport { forwardRef, useCallback, useState } from 'react'\nimport { TLUiMenuChild } from '../hooks/menuHelpers'\nimport { useBreakpoint } from '../hooks/useBreakpoint'\nimport { useContextMenuSchema } from '../hooks/useContextMenuSchema'\nimport { useMenuIsOpen } from '../hooks/useMenuIsOpen'\nimport { useReadonly } from '../hooks/useReadonly'\nimport { TLUiTranslationKey } from '../hooks/useTranslation/TLUiTranslationKey'\nimport { useTranslation } from '../hooks/useTranslation/useTranslation'\nimport { TLUiIconType } from '../icon-types'\nimport { MoveToPageMenu } from './MoveToPageMenu'\nimport { Button } from './primitives/Button'\nimport { Icon } from './primitives/Icon'\nimport { Kbd } from './primitives/Kbd'\n\n/** @public */\nexport interface TLUiContextMenuProps {\n\tchildren: any\n}\n\n/** @public */\nexport const ContextMenu = function ContextMenu({ children }: { children: any }) {\n\tconst editor = useEditor()\n\n\tconst contextTLUiMenuSchema = useContextMenuSchema()\n\n\tconst cb = useCallback(\n\t\t(isOpen: boolean) => {\n\t\t\tif (!isOpen) {\n\t\t\t\tconst onlySelectedShape = editor.getOnlySelectedShape()\n\n\t\t\t\tif (onlySelectedShape && editor.isShapeOrAncestorLocked(onlySelectedShape)) {\n\t\t\t\t\teditor.setSelectedShapes([])\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Weird route: selecting locked shapes on long press\n\t\t\t\tif (editor.getInstanceState().isCoarsePointer) {\n\t\t\t\t\tconst selectedShapes = editor.getSelectedShapes()\n\t\t\t\t\tconst {\n\t\t\t\t\t\tinputs: { currentPagePoint },\n\t\t\t\t\t} = editor\n\n\t\t\t\t\t// get all of the shapes under the current pointer\n\t\t\t\t\tconst shapesAtPoint = editor.getShapesAtPoint(currentPagePoint)\n\n\t\t\t\t\tif (\n\t\t\t\t\t\t// if there are no selected shapes\n\t\t\t\t\t\t!editor.getSelectedShapes().length ||\n\t\t\t\t\t\t// OR if none of the shapes at the point include the selected shape\n\t\t\t\t\t\t!shapesAtPoint.some((s) => selectedShapes.includes(s))\n\t\t\t\t\t) {\n\t\t\t\t\t\t// then are there any locked shapes under the current pointer?\n\t\t\t\t\t\tconst lockedShapes = shapesAtPoint.filter((s) => editor.isShapeOrAncestorLocked(s))\n\n\t\t\t\t\t\tif (lockedShapes.length) {\n\t\t\t\t\t\t\t// nice, let's select them\n\t\t\t\t\t\t\teditor.select(...lockedShapes.map((s) => s.id))\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t[editor]\n\t)\n\n\t// const container = useContainer()\n\n\tconst [isOpen, handleOpenChange] = useMenuIsOpen('context menu', cb)\n\n\t// If every item in the menu is readonly, then we don't want to show the menu\n\tconst isReadonly = useReadonly()\n\n\tconst noItemsToShow =\n\t\tcontextTLUiMenuSchema.length === 0 ||\n\t\t(isReadonly && contextTLUiMenuSchema.every((item) => !item.readonlyOk))\n\n\tconst selectToolActive = useValue(\n\t\t'isSelectToolActive',\n\t\t() => editor.getCurrentToolId() === 'select',\n\t\t[editor]\n\t)\n\n\tconst disabled = !selectToolActive || noItemsToShow\n\n\treturn (\n\t\t<_ContextMenu.Root dir=\"ltr\" onOpenChange={handleOpenChange} modal={false}>\n\t\t\t<_ContextMenu.Trigger\n\t\t\t\tonContextMenu={disabled ? preventDefault : undefined}\n\t\t\t\tdir=\"ltr\"\n\t\t\t\tdisabled={disabled}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</_ContextMenu.Trigger>\n\t\t\t{isOpen && <ContextMenuContent />}\n\t\t</_ContextMenu.Root>\n\t)\n}\n\nconst ContextMenuContent = forwardRef(function ContextMenuContent() {\n\tconst editor = useEditor()\n\tconst msg = useTranslation()\n\tconst menuSchema = useContextMenuSchema()\n\tconst [_, handleSubOpenChange] = useMenuIsOpen('context menu sub')\n\n\tconst isReadonly = useReadonly()\n\tconst breakpoint = useBreakpoint()\n\tconst container = useContainer()\n\n\tconst [disableClicks, setDisableClicks] = useState(false)\n\n\tfunction getContextMenuItem(\n\t\teditor: Editor,\n\t\titem: TLUiMenuChild,\n\t\tparent: TLUiMenuChild | null,\n\t\tdepth: number\n\t) {\n\t\tif (!item) return null\n\t\tif (isReadonly && !item.readonlyOk) return null\n\n\t\tswitch (item.type) {\n\t\t\tcase 'custom': {\n\t\t\t\tswitch (item.id) {\n\t\t\t\t\tcase 'MOVE_TO_PAGE_MENU': {\n\t\t\t\t\t\treturn <MoveToPageMenu key={item.id} />\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t}\n\t\t\tcase 'group': {\n\t\t\t\treturn (\n\t\t\t\t\t<_ContextMenu.Group\n\t\t\t\t\t\tdir=\"ltr\"\n\t\t\t\t\t\tclassName={classNames('tlui-menu__group', {\n\t\t\t\t\t\t\t'tlui-menu__group__small': parent?.type === 'submenu',\n\t\t\t\t\t\t})}\n\t\t\t\t\t\tdata-testid={`menu-item.${item.id}`}\n\t\t\t\t\t\tkey={item.id}\n\t\t\t\t\t>\n\t\t\t\t\t\t{item.children.map((child) => getContextMenuItem(editor, child, item, depth + 1))}\n\t\t\t\t\t</_ContextMenu.Group>\n\t\t\t\t)\n\t\t\t}\n\t\t\tcase 'submenu': {\n\t\t\t\treturn (\n\t\t\t\t\t<_ContextMenu.Sub key={item.id} onOpenChange={handleSubOpenChange}>\n\t\t\t\t\t\t<_ContextMenu.SubTrigger dir=\"ltr\" disabled={item.disabled} asChild>\n\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\t\t\t\tlabel={item.label as TLUiTranslationKey}\n\t\t\t\t\t\t\t\tdata-testid={`menu-item.${item.id}`}\n\t\t\t\t\t\t\t\ticon=\"chevron-right\"\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</_ContextMenu.SubTrigger>\n\t\t\t\t\t\t<_ContextMenu.Portal container={container}>\n\t\t\t\t\t\t\t<_ContextMenu.SubContent className=\"tlui-menu\" sideOffset={-4} collisionPadding={4}>\n\t\t\t\t\t\t\t\t{item.children.map((child) => getContextMenuItem(editor, child, item, depth + 1))}\n\t\t\t\t\t\t\t</_ContextMenu.SubContent>\n\t\t\t\t\t\t</_ContextMenu.Portal>\n\t\t\t\t\t</_ContextMenu.Sub>\n\t\t\t\t)\n\t\t\t}\n\t\t\tcase 'item': {\n\t\t\t\tif (isReadonly && !item.readonlyOk) return null\n\n\t\t\t\tconst { id, checkbox, contextMenuLabel, label, onSelect, kbd, icon } = item.actionItem\n\t\t\t\tconst labelToUse = contextMenuLabel ?? label\n\t\t\t\tconst labelStr = labelToUse ? msg(labelToUse as TLUiTranslationKey) : undefined\n\n\t\t\t\tif (checkbox) {\n\t\t\t\t\t// Item is in a checkbox group\n\t\t\t\t\treturn (\n\t\t\t\t\t\t<_ContextMenu.CheckboxItem\n\t\t\t\t\t\t\tkey={id}\n\t\t\t\t\t\t\tclassName=\"tlui-button tlui-button__menu tlui-button__checkbox\"\n\t\t\t\t\t\t\tdir=\"ltr\"\n\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\tonSelect={(e) => {\n\t\t\t\t\t\t\t\tonSelect('context-menu')\n\t\t\t\t\t\t\t\tpreventDefault(e)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\ttitle={labelStr ? labelStr : undefined}\n\t\t\t\t\t\t\tchecked={item.checked}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<Icon small icon={item.checked ? 'check' : 'checkbox-empty'} />\n\t\t\t\t\t\t\t{labelStr && (\n\t\t\t\t\t\t\t\t<span className=\"tlui-button__label\" draggable={false}>\n\t\t\t\t\t\t\t\t\t{labelStr}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t{kbd && <Kbd>{kbd}</Kbd>}\n\t\t\t\t\t\t</_ContextMenu.CheckboxItem>\n\t\t\t\t\t)\n\t\t\t\t}\n\n\t\t\t\treturn (\n\t\t\t\t\t<_ContextMenu.Item key={id} dir=\"ltr\" asChild>\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\t\t\tdata-testid={`menu-item.${id}`}\n\t\t\t\t\t\t\tkbd={kbd}\n\t\t\t\t\t\t\tlabel={labelToUse as TLUiTranslationKey}\n\t\t\t\t\t\t\tdisabled={item.disabled}\n\t\t\t\t\t\t\ticonLeft={breakpoint < 3 && depth > 2 ? (icon as TLUiIconType) : undefined}\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tif (disableClicks) {\n\t\t\t\t\t\t\t\t\tsetDisableClicks(false)\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tonSelect('context-menu')\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</_ContextMenu.Item>\n\t\t\t\t)\n\t\t\t}\n\t\t}\n\t}\n\n\treturn (\n\t\t<_ContextMenu.Portal container={container}>\n\t\t\t<_ContextMenu.Content\n\t\t\t\tclassName=\"tlui-menu scrollable\"\n\t\t\t\talignOffset={-4}\n\t\t\t\tcollisionPadding={4}\n\t\t\t\tonContextMenu={preventDefault}\n\t\t\t>\n\t\t\t\t{menuSchema.map((item) => getContextMenuItem(editor, item, null, 0))}\n\t\t\t</_ContextMenu.Content>\n\t\t</_ContextMenu.Portal>\n\t)\n})\n"],
|
|
5
|
-
"mappings": "AAuFE,SACC,KADD;AAvFF,SAAiB,gBAAgB,cAAc,WAAW,gBAAgB;AAC1E,YAAY,kBAAkB;AAC9B,OAAO,gBAAgB;AACvB,SAAS,YAAY,aAAa,gBAAgB;AAElD,SAAS,qBAAqB;AAC9B,SAAS,4BAA4B;AACrC,SAAS,qBAAqB;AAC9B,SAAS,mBAAmB;AAE5B,SAAS,sBAAsB;AAE/B,SAAS,sBAAsB;AAC/B,SAAS,cAAc;AACvB,SAAS,YAAY;AACrB,SAAS,WAAW;AAQb,MAAM,cAAc,SAASA,aAAY,EAAE,SAAS,GAAsB;AAChF,QAAM,SAAS,UAAU;AAEzB,QAAM,wBAAwB,qBAAqB;AAEnD,QAAM,KAAK;AAAA,IACV,CAACC,YAAoB;AACpB,UAAI,CAACA,SAAQ;AACZ,cAAM,oBAAoB,OAAO,qBAAqB;AAEtD,YAAI,qBAAqB,OAAO,wBAAwB,iBAAiB,GAAG;AAC3E,iBAAO,kBAAkB,CAAC,CAAC;AAAA,QAC5B;AAAA,MACD,OAAO;AAEN,YAAI,OAAO,iBAAiB,EAAE,iBAAiB;AAC9C,gBAAM,iBAAiB,OAAO,kBAAkB;AAChD,gBAAM;AAAA,YACL,QAAQ,EAAE,iBAAiB;AAAA,UAC5B,IAAI;AAGJ,gBAAM,gBAAgB,OAAO,iBAAiB,gBAAgB;AAE9D;AAAA;AAAA,YAEC,CAAC,OAAO,kBAAkB,EAAE;AAAA,YAE5B,CAAC,cAAc,KAAK,CAAC,MAAM,eAAe,SAAS,CAAC,CAAC;AAAA,YACpD;AAED,kBAAM,eAAe,cAAc,OAAO,CAAC,MAAM,OAAO,wBAAwB,CAAC,CAAC;AAElF,gBAAI,aAAa,QAAQ;AAExB,qBAAO,OAAO,GAAG,aAAa,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;AAAA,YAC/C;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA,IACA,CAAC,MAAM;AAAA,EACR;AAIA,QAAM,CAAC,QAAQ,gBAAgB,IAAI,cAAc,gBAAgB,EAAE;AAGnE,QAAM,aAAa,YAAY;AAE/B,QAAM,gBACL,sBAAsB,WAAW,KAChC,cAAc,sBAAsB,MAAM,CAAC,SAAS,CAAC,KAAK,UAAU;AAEtE,QAAM,mBAAmB;AAAA,IACxB;AAAA,IACA,MAAM,OAAO,iBAAiB,MAAM;AAAA,IACpC,CAAC,MAAM;AAAA,EACR;AAEA,QAAM,WAAW,CAAC,oBAAoB;AAEtC,SACC,qBAAC,aAAa,MAAb,EAAkB,KAAI,OAAM,cAAc,kBAAkB,OAAO,OACnE;AAAA;AAAA,MAAC,aAAa;AAAA,MAAb;AAAA,QACA,eAAe,WAAW,iBAAiB;AAAA,QAC3C,KAAI;AAAA,QACJ;AAAA,QAEC;AAAA;AAAA,IACF;AAAA,IACC,UAAU,oBAAC,sBAAmB;AAAA,KAChC;AAEF;AAEA,MAAM,qBAAqB,WAAW,SAASC,sBAAqB;AACnE,QAAM,SAAS,UAAU;AACzB,QAAM,MAAM,eAAe;AAC3B,QAAM,aAAa,qBAAqB;AACxC,QAAM,CAAC,GAAG,mBAAmB,IAAI,cAAc,kBAAkB;AAEjE,QAAM,aAAa,YAAY;AAC/B,QAAM,aAAa,cAAc;AACjC,QAAM,YAAY,aAAa;AAE/B,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,KAAK;AAExD,WAAS,mBACRC,SACA,MACA,QACA,OACC;AACD,QAAI,CAAC
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["ContextMenu", "isOpen", "ContextMenuContent", "editor"]
|
|
7
7
|
}
|
|
@@ -185,8 +185,7 @@ const DebugMenuContent = track(function DebugMenuContent2({
|
|
|
185
185
|
onClick: () => {
|
|
186
186
|
function countDescendants({ children }) {
|
|
187
187
|
let count = 0;
|
|
188
|
-
if (!children.length)
|
|
189
|
-
return 0;
|
|
188
|
+
if (!children.length) return 0;
|
|
190
189
|
for (const el of [...children]) {
|
|
191
190
|
count++;
|
|
192
191
|
count += countDescendants(el);
|
|
@@ -208,8 +207,7 @@ const DebugMenuContent = track(function DebugMenuContent2({
|
|
|
208
207
|
}
|
|
209
208
|
),
|
|
210
209
|
(() => {
|
|
211
|
-
if (error)
|
|
212
|
-
throw Error("oh no!");
|
|
210
|
+
if (error) throw Error("oh no!");
|
|
213
211
|
})(),
|
|
214
212
|
/* @__PURE__ */ jsx(
|
|
215
213
|
DropdownMenu.Item,
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/ui/components/DebugPanel.tsx"],
|
|
4
4
|
"sourcesContent": ["import {\n\tcreateShapeId,\n\tDebugFlag,\n\tdebugFlags,\n\tEditor,\n\tfeatureFlags,\n\thardResetEditor,\n\tTLShapePartial,\n\ttrack,\n\tuniqueId,\n\tuseEditor,\n\tuseValue,\n} from '@bigbluebutton/editor'\nimport * as React from 'react'\nimport { useDialogs } from '../hooks/useDialogsProvider'\nimport { useToasts } from '../hooks/useToastsProvider'\nimport { untranslated, useTranslation } from '../hooks/useTranslation/useTranslation'\nimport { Button } from './primitives/Button'\nimport * as Dialog from './primitives/Dialog'\nimport * as DropdownMenu from './primitives/DropdownMenu'\n\nlet t = 0\n\nfunction createNShapes(editor: Editor, n: number) {\n\tconst shapesToCreate: TLShapePartial[] = Array(n)\n\tconst cols = Math.floor(Math.sqrt(n))\n\n\tfor (let i = 0; i < n; i++) {\n\t\tt++\n\t\tshapesToCreate[i] = {\n\t\t\tid: createShapeId('box' + t),\n\t\t\ttype: 'geo',\n\t\t\tx: (i % cols) * 132,\n\t\t\ty: Math.floor(i / cols) * 132,\n\t\t}\n\t}\n\n\teditor.batch(() => {\n\t\teditor.createShapes(shapesToCreate).setSelectedShapes(shapesToCreate.map((s) => s.id))\n\t})\n}\n\n/** @internal */\nexport const DebugPanel = React.memo(function DebugPanel({\n\trenderDebugMenuItems,\n}: {\n\trenderDebugMenuItems: (() => React.ReactNode) | null\n}) {\n\tconst msg = useTranslation()\n\treturn (\n\t\t<div className=\"tlui-debug-panel\">\n\t\t\t<CurrentState />\n\t\t\t<ShapeCount />\n\t\t\t<DropdownMenu.Root id=\"debug\">\n\t\t\t\t<DropdownMenu.Trigger>\n\t\t\t\t\t<Button type=\"icon\" icon=\"dots-horizontal\" title={msg('debug-panel.more')} />\n\t\t\t\t</DropdownMenu.Trigger>\n\t\t\t\t<DropdownMenu.Content side=\"top\" align=\"end\" alignOffset={0}>\n\t\t\t\t\t<DebugMenuContent renderDebugMenuItems={renderDebugMenuItems} />\n\t\t\t\t</DropdownMenu.Content>\n\t\t\t</DropdownMenu.Root>\n\t\t</div>\n\t)\n})\n\nconst CurrentState = track(function CurrentState() {\n\tconst editor = useEditor()\n\treturn <div className=\"tlui-debug-panel__current-state\">{editor.getPath()}</div>\n})\n\nconst ShapeCount = function ShapeCount() {\n\tconst editor = useEditor()\n\tconst count = useValue('rendering shapes count', () => editor.getRenderingShapes().length, [\n\t\teditor,\n\t])\n\n\treturn <div>{count} Shapes</div>\n}\n\nconst DebugMenuContent = track(function DebugMenuContent({\n\trenderDebugMenuItems,\n}: {\n\trenderDebugMenuItems: (() => React.ReactNode) | null\n}) {\n\tconst editor = useEditor()\n\tconst { addToast } = useToasts()\n\tconst { addDialog } = useDialogs()\n\tconst [error, setError] = React.useState<boolean>(false)\n\n\treturn (\n\t\t<>\n\t\t\t<DropdownMenu.Group>\n\t\t\t\t<DropdownMenu.Item\n\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\taddToast({\n\t\t\t\t\t\t\tid: uniqueId(),\n\t\t\t\t\t\t\ttitle: 'Something happened',\n\t\t\t\t\t\t\tdescription: 'Hey, attend to this thing over here. It might be important!',\n\t\t\t\t\t\t\tkeepOpen: true,\n\t\t\t\t\t\t\t// icon?: string\n\t\t\t\t\t\t\t// title?: string\n\t\t\t\t\t\t\t// description?: string\n\t\t\t\t\t\t\t// actions?: TLUiToastAction[]\n\t\t\t\t\t\t})\n\t\t\t\t\t\taddToast({\n\t\t\t\t\t\t\tid: uniqueId(),\n\t\t\t\t\t\t\ttitle: 'Something happened',\n\t\t\t\t\t\t\tdescription: 'Hey, attend to this thing over here. It might be important!',\n\t\t\t\t\t\t\tkeepOpen: true,\n\t\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'Primary',\n\t\t\t\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\t\tvoid null\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'Normal',\n\t\t\t\t\t\t\t\t\ttype: 'normal',\n\t\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\t\tvoid null\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'Danger',\n\t\t\t\t\t\t\t\t\ttype: 'danger',\n\t\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\t\tvoid null\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t// icon?: string\n\t\t\t\t\t\t\t// title?: string\n\t\t\t\t\t\t\t// description?: string\n\t\t\t\t\t\t\t// actions?: TLUiToastAction[]\n\t\t\t\t\t\t})\n\t\t\t\t\t\taddToast({\n\t\t\t\t\t\t\tid: uniqueId(),\n\t\t\t\t\t\t\ttitle: 'Something happened',\n\t\t\t\t\t\t\tdescription: 'Hey, attend to this thing over here. It might be important!',\n\t\t\t\t\t\t\tkeepOpen: true,\n\t\t\t\t\t\t\ticon: 'twitter',\n\t\t\t\t\t\t\tactions: [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'Primary',\n\t\t\t\t\t\t\t\t\ttype: 'primary',\n\t\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\t\tvoid null\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'Normal',\n\t\t\t\t\t\t\t\t\ttype: 'normal',\n\t\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\t\tvoid null\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\tlabel: 'Danger',\n\t\t\t\t\t\t\t\t\ttype: 'danger',\n\t\t\t\t\t\t\t\t\tonClick: () => {\n\t\t\t\t\t\t\t\t\t\tvoid null\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\tlabel={untranslated('Show toast')}\n\t\t\t\t/>\n\n\t\t\t\t<DropdownMenu.Item\n\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\taddDialog({\n\t\t\t\t\t\t\tcomponent: ({ onClose }) => (\n\t\t\t\t\t\t\t\t<ExampleDialog\n\t\t\t\t\t\t\t\t\tdisplayDontShowAgain\n\t\t\t\t\t\t\t\t\tonCancel={() => {\n\t\t\t\t\t\t\t\t\t\tonClose()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t\tonContinue={() => {\n\t\t\t\t\t\t\t\t\t\tonClose()\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tonClose: () => {\n\t\t\t\t\t\t\t\tvoid null\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t})\n\t\t\t\t\t}}\n\t\t\t\t\tlabel={untranslated('Show dialog')}\n\t\t\t\t/>\n\t\t\t\t<DropdownMenu.Item\n\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\tonClick={() => createNShapes(editor, 100)}\n\t\t\t\t\tlabel={untranslated('Create 100 shapes')}\n\t\t\t\t/>\n\t\t\t\t<DropdownMenu.Item\n\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tfunction countDescendants({ children }: HTMLElement) {\n\t\t\t\t\t\t\tlet count = 0\n\t\t\t\t\t\t\tif (!children.length) return 0\n\t\t\t\t\t\t\tfor (const el of [...(children as any)]) {\n\t\t\t\t\t\t\t\tcount++\n\t\t\t\t\t\t\t\tcount += countDescendants(el)\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn count\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst selectedShapes = editor.getSelectedShapes()\n\n\t\t\t\t\t\tconst shapes =\n\t\t\t\t\t\t\tselectedShapes.length === 0 ? editor.getRenderingShapes() : selectedShapes\n\n\t\t\t\t\t\tconst elms = shapes.map(\n\t\t\t\t\t\t\t(shape) => (document.getElementById(shape.id) as HTMLElement)!.parentElement!\n\t\t\t\t\t\t)\n\n\t\t\t\t\t\tlet descendants = elms.length\n\n\t\t\t\t\t\tfor (const elm of elms) {\n\t\t\t\t\t\t\tdescendants += countDescendants(elm)\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\twindow.alert(`Shapes ${shapes.length}, DOM nodes:${descendants}`)\n\t\t\t\t\t}}\n\t\t\t\t\tlabel={untranslated('Count shapes / nodes')}\n\t\t\t\t/>\n\t\t\t\t{(() => {\n\t\t\t\t\tif (error) throw Error('oh no!')\n\t\t\t\t})()}\n\t\t\t\t<DropdownMenu.Item\n\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\tsetError(true)\n\t\t\t\t\t}}\n\t\t\t\t\tlabel={untranslated('Throw error')}\n\t\t\t\t/>\n\t\t\t\t<DropdownMenu.Item\n\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\thardResetEditor()\n\t\t\t\t\t}}\n\t\t\t\t\tlabel={untranslated('Hard reset')}\n\t\t\t\t/>\n\t\t\t</DropdownMenu.Group>\n\t\t\t<DropdownMenu.Group>\n\t\t\t\t<DebugFlagToggle flag={debugFlags.debugSvg} />\n\t\t\t\t<DebugFlagToggle flag={debugFlags.forceSrgb} />\n\t\t\t\t<DebugFlagToggle flag={debugFlags.debugGeometry} />\n\t\t\t\t<DebugFlagToggle flag={debugFlags.hideShapes} />\n\t\t\t</DropdownMenu.Group>\n\t\t\t<DropdownMenu.Group>\n\t\t\t\t{Object.values(featureFlags).map((flag) => {\n\t\t\t\t\treturn <DebugFlagToggle key={flag.name} flag={flag} />\n\t\t\t\t})}\n\t\t\t</DropdownMenu.Group>\n\t\t\t{renderDebugMenuItems?.()}\n\t\t</>\n\t)\n})\n\nfunction Toggle({\n\tlabel,\n\tvalue,\n\tonChange,\n}: {\n\tlabel: string\n\tvalue: boolean\n\tonChange: (newValue: boolean) => void\n}) {\n\treturn (\n\t\t<DropdownMenu.CheckboxItem\n\t\t\ttitle={untranslated(label)}\n\t\t\tchecked={value}\n\t\t\tonSelect={() => onChange(!value)}\n\t\t>\n\t\t\t<span className=\"tlui-button__label\" draggable={false}>\n\t\t\t\t{label}\n\t\t\t</span>\n\t\t</DropdownMenu.CheckboxItem>\n\t)\n}\n\nconst DebugFlagToggle = track(function DebugFlagToggle({\n\tflag,\n\tonChange,\n}: {\n\tflag: DebugFlag<boolean>\n\tonChange?: (newValue: boolean) => void\n}) {\n\treturn (\n\t\t<Toggle\n\t\t\tlabel={flag.name\n\t\t\t\t.replace(/([a-z0-9])([A-Z])/g, (m) => `${m[0]} ${m[1].toLowerCase()}`)\n\t\t\t\t.replace(/^[a-z]/, (m) => m.toUpperCase())}\n\t\t\tvalue={flag.get()}\n\t\t\tonChange={(newValue) => {\n\t\t\t\tflag.set(newValue)\n\t\t\t\tonChange?.(newValue)\n\t\t\t}}\n\t\t/>\n\t)\n})\n\nfunction ExampleDialog({\n\ttitle = 'title',\n\tbody = 'hello hello hello',\n\tcancel = 'Cancel',\n\tconfirm = 'Continue',\n\tdisplayDontShowAgain = false,\n\tonCancel,\n\tonContinue,\n}: {\n\ttitle?: string\n\tbody?: string\n\tcancel?: string\n\tconfirm?: string\n\tdisplayDontShowAgain?: boolean\n\tonCancel: () => void\n\tonContinue: () => void\n}) {\n\tconst [dontShowAgain, setDontShowAgain] = React.useState(false)\n\n\treturn (\n\t\t<>\n\t\t\t<Dialog.Header>\n\t\t\t\t<Dialog.Title>{title}</Dialog.Title>\n\t\t\t\t<Dialog.CloseButton />\n\t\t\t</Dialog.Header>\n\t\t\t<Dialog.Body style={{ maxWidth: 350 }}>{body}</Dialog.Body>\n\t\t\t<Dialog.Footer className=\"tlui-dialog__footer__actions\">\n\t\t\t\t{displayDontShowAgain && (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"normal\"\n\t\t\t\t\t\tonClick={() => setDontShowAgain(!dontShowAgain)}\n\t\t\t\t\t\ticonLeft={dontShowAgain ? 'check' : 'checkbox-empty'}\n\t\t\t\t\t\tstyle={{ marginRight: 'auto' }}\n\t\t\t\t\t>\n\t\t\t\t\t\t{`Don't show again`}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t\t<Button type=\"normal\" onClick={onCancel}>\n\t\t\t\t\t{cancel}\n\t\t\t\t</Button>\n\t\t\t\t<Button type=\"primary\" onClick={async () => onContinue()}>\n\t\t\t\t\t{confirm}\n\t\t\t\t</Button>\n\t\t\t</Dialog.Footer>\n\t\t</>\n\t)\n}\n"],
|
|
5
|
-
"mappings": "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
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["DebugPanel", "CurrentState", "ShapeCount", "DebugMenuContent", "DebugFlagToggle"]
|
|
7
7
|
}
|
|
@@ -56,8 +56,7 @@ const EditLinkDialogInner = track(function EditLinkDialogInner2({
|
|
|
56
56
|
}, []);
|
|
57
57
|
const handleClear = useCallback(() => {
|
|
58
58
|
const onlySelectedShape = editor.getOnlySelectedShape();
|
|
59
|
-
if (!onlySelectedShape)
|
|
60
|
-
return;
|
|
59
|
+
if (!onlySelectedShape) return;
|
|
61
60
|
editor.updateShapes([
|
|
62
61
|
{ id: onlySelectedShape.id, type: onlySelectedShape.type, props: { url: "" } }
|
|
63
62
|
]);
|
|
@@ -65,8 +64,7 @@ const EditLinkDialogInner = track(function EditLinkDialogInner2({
|
|
|
65
64
|
}, [editor, onClose]);
|
|
66
65
|
const handleComplete = useCallback(() => {
|
|
67
66
|
const onlySelectedShape = editor.getOnlySelectedShape();
|
|
68
|
-
if (!onlySelectedShape)
|
|
69
|
-
return;
|
|
67
|
+
if (!onlySelectedShape) return;
|
|
70
68
|
if (onlySelectedShape && "url" in onlySelectedShape.props) {
|
|
71
69
|
if (onlySelectedShape.props.url !== urlInputState.safe) {
|
|
72
70
|
editor.updateShapes([
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/ui/components/EditLinkDialog.tsx"],
|
|
4
4
|
"sourcesContent": ["import { TLBaseShape, isValidUrl, track, useEditor } from '@bigbluebutton/editor'\nimport { useCallback, useEffect, useRef, useState } from 'react'\nimport { TLUiDialogProps } from '../hooks/useDialogsProvider'\nimport { useTranslation } from '../hooks/useTranslation/useTranslation'\nimport { Button } from './primitives/Button'\nimport * as Dialog from './primitives/Dialog'\nimport { Input } from './primitives/Input'\n\n// A url can either be invalid, or valid with a protocol, or valid without a protocol.\n// For example, \"aol.com\" would be valid with a protocol ()\nfunction validateUrl(url: string) {\n\tif (isValidUrl(url)) {\n\t\treturn { isValid: true, hasProtocol: true }\n\t}\n\tif (isValidUrl('https://' + url)) {\n\t\treturn { isValid: true, hasProtocol: false }\n\t}\n\treturn { isValid: false, hasProtocol: false }\n}\n\ntype ShapeWithUrl = TLBaseShape<string, { url: string }>\n\nexport const EditLinkDialog = track(function EditLinkDialog({ onClose }: TLUiDialogProps) {\n\tconst editor = useEditor()\n\n\tconst selectedShape = editor.getOnlySelectedShape()\n\n\tif (\n\t\t!(selectedShape && 'url' in selectedShape.props && typeof selectedShape.props.url === 'string')\n\t) {\n\t\treturn null\n\t}\n\n\treturn <EditLinkDialogInner onClose={onClose} selectedShape={selectedShape as ShapeWithUrl} />\n})\n\nexport const EditLinkDialogInner = track(function EditLinkDialogInner({\n\tonClose,\n\tselectedShape,\n}: TLUiDialogProps & { selectedShape: ShapeWithUrl }) {\n\tconst editor = useEditor()\n\tconst msg = useTranslation()\n\n\tconst rInput = useRef<HTMLInputElement>(null)\n\n\tuseEffect(() => {\n\t\trequestAnimationFrame(() => rInput.current?.focus())\n\t}, [])\n\n\tconst rInitialValue = useRef(selectedShape.props.url)\n\n\tconst [urlInputState, setUrlInputState] = useState(() => {\n\t\tconst urlValidResult = validateUrl(selectedShape.props.url)\n\n\t\tconst initialValue =\n\t\t\turlValidResult.isValid === true\n\t\t\t\t? urlValidResult.hasProtocol\n\t\t\t\t\t? selectedShape.props.url\n\t\t\t\t\t: 'https://' + selectedShape.props.url\n\t\t\t\t: 'https://'\n\n\t\treturn {\n\t\t\tactual: initialValue,\n\t\t\tsafe: initialValue,\n\t\t\tvalid: true,\n\t\t}\n\t})\n\n\tconst handleChange = useCallback((rawValue: string) => {\n\t\t// Just auto-correct double https:// from a bad paste.\n\t\tconst fixedRawValue = rawValue.replace(/https?:\\/\\/(https?:\\/\\/)/, (_match, arg1) => {\n\t\t\treturn arg1\n\t\t})\n\n\t\tconst urlValidResult = validateUrl(fixedRawValue)\n\n\t\tconst safeValue =\n\t\t\turlValidResult.isValid === true\n\t\t\t\t? urlValidResult.hasProtocol\n\t\t\t\t\t? fixedRawValue\n\t\t\t\t\t: 'https://' + fixedRawValue\n\t\t\t\t: 'https://'\n\n\t\tsetUrlInputState({\n\t\t\tactual: fixedRawValue,\n\t\t\tsafe: safeValue,\n\t\t\tvalid: urlValidResult.isValid,\n\t\t})\n\t}, [])\n\n\tconst handleClear = useCallback(() => {\n\t\tconst onlySelectedShape = editor.getOnlySelectedShape()\n\t\tif (!onlySelectedShape) return\n\t\teditor.updateShapes([\n\t\t\t{ id: onlySelectedShape.id, type: onlySelectedShape.type, props: { url: '' } },\n\t\t])\n\t\tonClose()\n\t}, [editor, onClose])\n\n\tconst handleComplete = useCallback(() => {\n\t\tconst onlySelectedShape = editor.getOnlySelectedShape()\n\n\t\tif (!onlySelectedShape) return\n\n\t\t// ? URL is a magic value\n\t\tif (onlySelectedShape && 'url' in onlySelectedShape.props) {\n\t\t\t// Here would be a good place to validate the next shape\u2014would setting the empty\n\t\t\tif (onlySelectedShape.props.url !== urlInputState.safe) {\n\t\t\t\teditor.updateShapes([\n\t\t\t\t\t{\n\t\t\t\t\t\tid: onlySelectedShape.id,\n\t\t\t\t\t\ttype: onlySelectedShape.type,\n\t\t\t\t\t\tprops: { url: urlInputState.safe },\n\t\t\t\t\t},\n\t\t\t\t])\n\t\t\t}\n\t\t}\n\t\tonClose()\n\t}, [editor, onClose, urlInputState])\n\n\tconst handleCancel = useCallback(() => {\n\t\tonClose()\n\t}, [onClose])\n\n\tif (!selectedShape) {\n\t\t// dismiss modal\n\t\tonClose()\n\t\treturn null\n\t}\n\n\t// Are we going from a valid state to an invalid state?\n\tconst isRemoving = rInitialValue.current && !urlInputState.valid\n\n\treturn (\n\t\t<>\n\t\t\t<Dialog.Header>\n\t\t\t\t<Dialog.Title>{msg('edit-link-dialog.title')}</Dialog.Title>\n\t\t\t\t<Dialog.CloseButton />\n\t\t\t</Dialog.Header>\n\t\t\t<Dialog.Body>\n\t\t\t\t<div className=\"tlui-edit-link-dialog\">\n\t\t\t\t\t<Input\n\t\t\t\t\t\tref={rInput}\n\t\t\t\t\t\tclassName=\"tlui-edit-link-dialog__input\"\n\t\t\t\t\t\tlabel=\"edit-link-dialog.url\"\n\t\t\t\t\t\tautofocus\n\t\t\t\t\t\tvalue={urlInputState.actual}\n\t\t\t\t\t\tonValueChange={handleChange}\n\t\t\t\t\t\tonComplete={handleComplete}\n\t\t\t\t\t\tonCancel={handleCancel}\n\t\t\t\t\t/>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{urlInputState.valid\n\t\t\t\t\t\t\t? msg('edit-link-dialog.detail')\n\t\t\t\t\t\t\t: msg('edit-link-dialog.invalid-url')}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</Dialog.Body>\n\t\t\t<Dialog.Footer className=\"tlui-dialog__footer__actions\">\n\t\t\t\t<Button type=\"normal\" onClick={handleCancel} onTouchEnd={handleCancel}>\n\t\t\t\t\t{msg('edit-link-dialog.cancel')}\n\t\t\t\t</Button>\n\t\t\t\t{isRemoving ? (\n\t\t\t\t\t<Button type={'danger'} onTouchEnd={handleClear} onClick={handleClear}>\n\t\t\t\t\t\t{msg('edit-link-dialog.clear')}\n\t\t\t\t\t</Button>\n\t\t\t\t) : (\n\t\t\t\t\t<Button\n\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\tdisabled={!urlInputState.valid}\n\t\t\t\t\t\tonTouchEnd={handleComplete}\n\t\t\t\t\t\tonClick={handleComplete}\n\t\t\t\t\t>\n\t\t\t\t\t\t{msg('edit-link-dialog.save')}\n\t\t\t\t\t</Button>\n\t\t\t\t)}\n\t\t\t</Dialog.Footer>\n\t\t</>\n\t)\n})\n"],
|
|
5
|
-
"mappings": "AAiCQ,SAqGN,UArGM,KAsGL,YAtGK;AAjCR,SAAsB,YAAY,OAAO,iBAAiB;AAC1D,SAAS,aAAa,WAAW,QAAQ,gBAAgB;AAEzD,SAAS,sBAAsB;AAC/B,SAAS,cAAc;AACvB,YAAY,YAAY;AACxB,SAAS,aAAa;AAItB,SAAS,YAAY,KAAa;AACjC,MAAI,WAAW,GAAG,GAAG;AACpB,WAAO,EAAE,SAAS,MAAM,aAAa,KAAK;AAAA,EAC3C;AACA,MAAI,WAAW,aAAa,GAAG,GAAG;AACjC,WAAO,EAAE,SAAS,MAAM,aAAa,MAAM;AAAA,EAC5C;AACA,SAAO,EAAE,SAAS,OAAO,aAAa,MAAM;AAC7C;AAIO,MAAM,iBAAiB,MAAM,SAASA,gBAAe,EAAE,QAAQ,GAAoB;AACzF,QAAM,SAAS,UAAU;AAEzB,QAAM,gBAAgB,OAAO,qBAAqB;AAElD,MACC,EAAE,iBAAiB,SAAS,cAAc,SAAS,OAAO,cAAc,MAAM,QAAQ,WACrF;AACD,WAAO;AAAA,EACR;AAEA,SAAO,oBAAC,uBAAoB,SAAkB,eAA8C;AAC7F,CAAC;AAEM,MAAM,sBAAsB,MAAM,SAASC,qBAAoB;AAAA,EACrE;AAAA,EACA;AACD,GAAsD;AACrD,QAAM,SAAS,UAAU;AACzB,QAAM,MAAM,eAAe;AAE3B,QAAM,SAAS,OAAyB,IAAI;AAE5C,YAAU,MAAM;AACf,0BAAsB,MAAM,OAAO,SAAS,MAAM,CAAC;AAAA,EACpD,GAAG,CAAC,CAAC;AAEL,QAAM,gBAAgB,OAAO,cAAc,MAAM,GAAG;AAEpD,QAAM,CAAC,eAAe,gBAAgB,IAAI,SAAS,MAAM;AACxD,UAAM,iBAAiB,YAAY,cAAc,MAAM,GAAG;AAE1D,UAAM,eACL,eAAe,YAAY,OACxB,eAAe,cACd,cAAc,MAAM,MACpB,aAAa,cAAc,MAAM,MAClC;AAEJ,WAAO;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO;AAAA,IACR;AAAA,EACD,CAAC;AAED,QAAM,eAAe,YAAY,CAAC,aAAqB;AAEtD,UAAM,gBAAgB,SAAS,QAAQ,4BAA4B,CAAC,QAAQ,SAAS;AACpF,aAAO;AAAA,IACR,CAAC;AAED,UAAM,iBAAiB,YAAY,aAAa;AAEhD,UAAM,YACL,eAAe,YAAY,OACxB,eAAe,cACd,gBACA,aAAa,gBACd;AAEJ,qBAAiB;AAAA,MAChB,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,OAAO,eAAe;AAAA,IACvB,CAAC;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,QAAM,cAAc,YAAY,MAAM;AACrC,UAAM,oBAAoB,OAAO,qBAAqB;AACtD,QAAI,CAAC;
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["EditLinkDialog", "EditLinkDialogInner"]
|
|
7
7
|
}
|
|
@@ -83,8 +83,7 @@ const EmbedDialog = track(function EmbedDialog2({ onClose }) {
|
|
|
83
83
|
disabled: !embedInfoForUrl,
|
|
84
84
|
label: "embed-dialog.create",
|
|
85
85
|
onClick: () => {
|
|
86
|
-
if (!embedInfoForUrl)
|
|
87
|
-
return;
|
|
86
|
+
if (!embedInfoForUrl) return;
|
|
88
87
|
editor.putExternalContent({
|
|
89
88
|
type: "embed",
|
|
90
89
|
url,
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/ui/components/EmbedDialog.tsx"],
|
|
4
4
|
"sourcesContent": ["import { EMBED_DEFINITIONS, EmbedDefinition, track, useEditor } from '@bigbluebutton/editor'\nimport { useRef, useState } from 'react'\nimport { TLEmbedResult, getEmbedInfo } from '../../utils/embeds/embeds'\nimport { useAssetUrls } from '../hooks/useAssetUrls'\nimport { TLUiDialogProps } from '../hooks/useDialogsProvider'\nimport { untranslated, useTranslation } from '../hooks/useTranslation/useTranslation'\nimport { Button } from './primitives/Button'\nimport * as Dialog from './primitives/Dialog'\nimport { Icon } from './primitives/Icon'\nimport { Input } from './primitives/Input'\n\nexport const EmbedDialog = track(function EmbedDialog({ onClose }: TLUiDialogProps) {\n\tconst editor = useEditor()\n\tconst msg = useTranslation()\n\tconst assetUrls = useAssetUrls()\n\n\t// The embed definition for the user's selected embed (set by the user clicking on an embed in stage 1)\n\tconst [embedDefinition, setEmbedDefinition] = useState<null | EmbedDefinition>(null)\n\n\t// The URL that the user has typed into (in stage 2)\n\tconst [url, setUrl] = useState<string>('')\n\n\t// The embed info for the user's selected embed (based on the URL they've entered in stage 2)\n\tconst [embedInfoForUrl, setEmbedInfoForUrl] = useState<null | TLEmbedResult>(null)\n\n\t// Should we show the \"invalid URL\" error message?\n\tconst [showError, setShowError] = useState(false)\n\tconst rShowErrorTimeout = useRef<any>(-1)\n\n\treturn (\n\t\t<>\n\t\t\t<Dialog.Header>\n\t\t\t\t<Dialog.Title>\n\t\t\t\t\t{embedDefinition\n\t\t\t\t\t\t? `${msg('embed-dialog.title')} \u2014 ${embedDefinition.title}`\n\t\t\t\t\t\t: msg('embed-dialog.title')}\n\t\t\t\t</Dialog.Title>\n\t\t\t\t<Dialog.CloseButton />\n\t\t\t</Dialog.Header>\n\t\t\t{embedDefinition ? (\n\t\t\t\t<>\n\t\t\t\t\t<Dialog.Body className=\"tlui-embed-dialog__enter\">\n\t\t\t\t\t\t<Input\n\t\t\t\t\t\t\tclassName=\"tlui-embed-dialog__input\"\n\t\t\t\t\t\t\tlabel=\"embed-dialog.url\"\n\t\t\t\t\t\t\tplaceholder=\"http://example.com\"\n\t\t\t\t\t\t\tautofocus\n\t\t\t\t\t\t\tonValueChange={(value) => {\n\t\t\t\t\t\t\t\t// Set the url that the user has typed into the input\n\t\t\t\t\t\t\t\tsetUrl(value)\n\n\t\t\t\t\t\t\t\t// Set the embed info to either the embed info for the URL (if\n\t\t\t\t\t\t\t\t// that embed info can be found and of a type that matches the\n\t\t\t\t\t\t\t\t// user's selected definition type)\n\t\t\t\t\t\t\t\tconst embedInfo = getEmbedInfo(value)\n\t\t\t\t\t\t\t\tsetEmbedInfoForUrl(\n\t\t\t\t\t\t\t\t\tembedInfo && embedInfo.definition.type === embedDefinition.type ? embedInfo : null\n\t\t\t\t\t\t\t\t)\n\n\t\t\t\t\t\t\t\t// We want to hide the error when the user enters text,\n\t\t\t\t\t\t\t\t// and then show an error after a short delay if the user\n\t\t\t\t\t\t\t\t// has not yet entered a valid URL.\n\t\t\t\t\t\t\t\tsetShowError(false)\n\t\t\t\t\t\t\t\tclearTimeout(rShowErrorTimeout.current)\n\t\t\t\t\t\t\t\trShowErrorTimeout.current = setTimeout(() => setShowError(!embedInfo), 320)\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t{url === '' ? (\n\t\t\t\t\t\t\t<div className=\"tlui-embed-dialog__instruction\">\n\t\t\t\t\t\t\t\t<span>{msg('embed-dialog.instruction')}</span>{' '}\n\t\t\t\t\t\t\t\t{embedDefinition.instructionLink && (\n\t\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t\t\t\t\t\trel=\"noopener noreferrer\"\n\t\t\t\t\t\t\t\t\t\thref={embedDefinition.instructionLink}\n\t\t\t\t\t\t\t\t\t\tclassName=\"tlui-embed-dialog__instruction__link\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\tLearn more.\n\t\t\t\t\t\t\t\t\t\t<Icon icon=\"external-link\" small />\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t)}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t) : (\n\t\t\t\t\t\t\t<div className=\"tlui-embed-dialog__warning\">\n\t\t\t\t\t\t\t\t{showError ? msg('embed-dialog.invalid-url') : '\\xa0'}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t)}\n\t\t\t\t\t</Dialog.Body>\n\t\t\t\t\t<Dialog.Footer className=\"tlui-dialog__footer__actions\">\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"normal\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tsetEmbedDefinition(null)\n\t\t\t\t\t\t\t\tsetEmbedInfoForUrl(null)\n\t\t\t\t\t\t\t\tsetUrl('')\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\tlabel=\"embed-dialog.back\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div className=\"tlui-embed__spacer\" />\n\t\t\t\t\t\t<Button type=\"normal\" label=\"embed-dialog.cancel\" onClick={onClose} />\n\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\ttype=\"primary\"\n\t\t\t\t\t\t\tdisabled={!embedInfoForUrl}\n\t\t\t\t\t\t\tlabel=\"embed-dialog.create\"\n\t\t\t\t\t\t\tonClick={() => {\n\t\t\t\t\t\t\t\tif (!embedInfoForUrl) return\n\n\t\t\t\t\t\t\t\teditor.putExternalContent({\n\t\t\t\t\t\t\t\t\ttype: 'embed',\n\t\t\t\t\t\t\t\t\turl,\n\t\t\t\t\t\t\t\t\tpoint: editor.getViewportPageCenter(),\n\t\t\t\t\t\t\t\t\tembed: embedInfoForUrl.definition,\n\t\t\t\t\t\t\t\t})\n\n\t\t\t\t\t\t\t\tonClose()\n\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</Dialog.Footer>\n\t\t\t\t</>\n\t\t\t) : (\n\t\t\t\t<>\n\t\t\t\t\t<Dialog.Body className=\"tlui-embed-dialog__list\">\n\t\t\t\t\t\t{EMBED_DEFINITIONS.map((def) => {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t<Button\n\t\t\t\t\t\t\t\t\ttype=\"menu\"\n\t\t\t\t\t\t\t\t\tkey={def.type}\n\t\t\t\t\t\t\t\t\tonClick={() => setEmbedDefinition(def)}\n\t\t\t\t\t\t\t\t\tlabel={untranslated(def.title)}\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\tclassName=\"tlui-embed-dialog__item__image\"\n\t\t\t\t\t\t\t\t\t\tstyle={{ backgroundImage: `url(${assetUrls.embedIcons[def.type]})` }}\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t</Button>\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t})}\n\t\t\t\t\t</Dialog.Body>\n\t\t\t\t</>\n\t\t\t)}\n\t\t</>\n\t)\n})\n"],
|
|
5
|
-
"mappings": "AA+BG,SASC,UARA,KADD;AA/BH,SAAS,mBAAoC,OAAO,iBAAiB;AACrE,SAAS,QAAQ,gBAAgB;AACjC,SAAwB,oBAAoB;AAC5C,SAAS,oBAAoB;AAE7B,SAAS,cAAc,sBAAsB;AAC7C,SAAS,cAAc;AACvB,YAAY,YAAY;AACxB,SAAS,YAAY;AACrB,SAAS,aAAa;AAEf,MAAM,cAAc,MAAM,SAASA,aAAY,EAAE,QAAQ,GAAoB;AACnF,QAAM,SAAS,UAAU;AACzB,QAAM,MAAM,eAAe;AAC3B,QAAM,YAAY,aAAa;AAG/B,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAiC,IAAI;AAGnF,QAAM,CAAC,KAAK,MAAM,IAAI,SAAiB,EAAE;AAGzC,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAA+B,IAAI;AAGjF,QAAM,CAAC,WAAW,YAAY,IAAI,SAAS,KAAK;AAChD,QAAM,oBAAoB,OAAY,EAAE;AAExC,SACC,iCACC;AAAA,yBAAC,OAAO,QAAP,EACA;AAAA,0BAAC,OAAO,OAAP,EACC,4BACE,GAAG,IAAI,oBAAoB,CAAC,WAAM,gBAAgB,KAAK,KACvD,IAAI,oBAAoB,GAC5B;AAAA,MACA,oBAAC,OAAO,aAAP,EAAmB;AAAA,OACrB;AAAA,IACC,kBACA,iCACC;AAAA,2BAAC,OAAO,MAAP,EAAY,WAAU,4BACtB;AAAA;AAAA,UAAC;AAAA;AAAA,YACA,WAAU;AAAA,YACV,OAAM;AAAA,YACN,aAAY;AAAA,YACZ,WAAS;AAAA,YACT,eAAe,CAAC,UAAU;AAEzB,qBAAO,KAAK;AAKZ,oBAAM,YAAY,aAAa,KAAK;AACpC;AAAA,gBACC,aAAa,UAAU,WAAW,SAAS,gBAAgB,OAAO,YAAY;AAAA,cAC/E;AAKA,2BAAa,KAAK;AAClB,2BAAa,kBAAkB,OAAO;AACtC,gCAAkB,UAAU,WAAW,MAAM,aAAa,CAAC,SAAS,GAAG,GAAG;AAAA,YAC3E;AAAA;AAAA,QACD;AAAA,QACC,QAAQ,KACR,qBAAC,SAAI,WAAU,kCACd;AAAA,8BAAC,UAAM,cAAI,0BAA0B,GAAE;AAAA,UAAQ;AAAA,UAC9C,gBAAgB,mBAChB;AAAA,YAAC;AAAA;AAAA,cACA,QAAO;AAAA,cACP,KAAI;AAAA,cACJ,MAAM,gBAAgB;AAAA,cACtB,WAAU;AAAA,cACV;AAAA;AAAA,gBAEA,oBAAC,QAAK,MAAK,iBAAgB,OAAK,MAAC;AAAA;AAAA;AAAA,UAClC;AAAA,WAEF,IAEA,oBAAC,SAAI,WAAU,8BACb,sBAAY,IAAI,0BAA0B,IAAI,QAChD;AAAA,SAEF;AAAA,MACA,qBAAC,OAAO,QAAP,EAAc,WAAU,gCACxB;AAAA;AAAA,UAAC;AAAA;AAAA,YACA,MAAK;AAAA,YACL,SAAS,MAAM;AACd,iCAAmB,IAAI;AACvB,iCAAmB,IAAI;AACvB,qBAAO,EAAE;AAAA,YACV;AAAA,YACA,OAAM;AAAA;AAAA,QACP;AAAA,QACA,oBAAC,SAAI,WAAU,sBAAqB;AAAA,QACpC,oBAAC,UAAO,MAAK,UAAS,OAAM,uBAAsB,SAAS,SAAS;AAAA,QACpE;AAAA,UAAC;AAAA;AAAA,YACA,MAAK;AAAA,YACL,UAAU,CAAC;AAAA,YACX,OAAM;AAAA,YACN,SAAS,MAAM;AACd,kBAAI,CAAC;
|
|
5
|
+
"mappings": "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",
|
|
6
6
|
"names": ["EmbedDialog"]
|
|
7
7
|
}
|
|
@@ -5,14 +5,12 @@ function FollowingIndicator() {
|
|
|
5
5
|
const followingUserId = useValue("follow", () => editor.getInstanceState().followingUserId, [
|
|
6
6
|
editor
|
|
7
7
|
]);
|
|
8
|
-
if (!followingUserId)
|
|
9
|
-
return null;
|
|
8
|
+
if (!followingUserId) return null;
|
|
10
9
|
return /* @__PURE__ */ jsx(FollowingIndicatorInner, { userId: followingUserId });
|
|
11
10
|
}
|
|
12
11
|
function FollowingIndicatorInner({ userId }) {
|
|
13
12
|
const presence = usePresence(userId);
|
|
14
|
-
if (!presence)
|
|
15
|
-
return null;
|
|
13
|
+
if (!presence) return null;
|
|
16
14
|
return /* @__PURE__ */ jsx("div", { className: "tlui-following-indicator", style: { borderColor: presence.color } });
|
|
17
15
|
}
|
|
18
16
|
export {
|
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../../src/lib/ui/components/FollowingIndicator.tsx"],
|
|
4
4
|
"sourcesContent": ["import { useEditor, usePresence, useValue } from '@bigbluebutton/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
|
|
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
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -42,10 +42,8 @@ function HelpMenuContent() {
|
|
|
42
42
|
const menuSchema = useHelpMenuSchema();
|
|
43
43
|
const isReadonly = useReadonly();
|
|
44
44
|
function getHelpMenuItem(item) {
|
|
45
|
-
if (!item)
|
|
46
|
-
|
|
47
|
-
if (isReadonly && !item.readonlyOk)
|
|
48
|
-
return null;
|
|
45
|
+
if (!item) return null;
|
|
46
|
+
if (isReadonly && !item.readonlyOk) return null;
|
|
49
47
|
switch (item.type) {
|
|
50
48
|
case "custom": {
|
|
51
49
|
if (item.id === "LANGUAGE_MENU") {
|