oolong-engine 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/AppStage.d.ts +5 -0
- package/dist/ability/copyPaste/copy/CopyWorker.d.ts +7 -0
- package/dist/ability/copyPaste/duplicate/DuplicateWorker.d.ts +7 -0
- package/dist/ability/copyPaste/paste/AbsPasteWorker.d.ts +16 -0
- package/dist/ability/copyPaste/paste/CrossPasteWorker.d.ts +5 -0
- package/dist/ability/copyPaste/paste/PasteWorker.d.ts +5 -0
- package/dist/ability/copyPaste/paste/propsHandler/AbsPropsHandler.d.ts +5 -0
- package/dist/ability/copyPaste/paste/propsHandler/BasePropsHandler.d.ts +6 -0
- package/dist/ability/copyPaste/paste/propsHandler/ConnectPropsHandler.d.ts +6 -0
- package/dist/ability/copyPaste/paste/propsHandler/ImgPropsHandler.d.ts +6 -0
- package/dist/ability/copyPaste/paste/propsHandler/LinePropsHandler.d.ts +6 -0
- package/dist/ability/copyPaste/paste/propsHandler/SvgPropsHandler.d.ts +6 -0
- package/dist/ability/crop/CropWorker.d.ts +6 -0
- package/dist/ability/delete/DeleteWorker.d.ts +5 -0
- package/dist/ability/drawer/FallbackDrawer.d.ts +4 -0
- package/dist/ability/group/GroupWorker.d.ts +7 -0
- package/dist/ability/group/RelatedGroupBaseWorker.d.ts +7 -0
- package/dist/ability/image/ImageWorker.d.ts +5 -0
- package/dist/ability/index.d.ts +1 -0
- package/dist/ability/line/LayoutConst.d.ts +1 -0
- package/dist/ability/line/LayoutUtils.d.ts +17 -0
- package/dist/ability/line/LayoutWorker.d.ts +11 -0
- package/dist/ability/line/handler/AbsLineLayoutHandler.d.ts +13 -0
- package/dist/ability/line/handler/CurveLayoutHandler.d.ts +13 -0
- package/dist/ability/line/handler/SimpleLineLayoutHandler.d.ts +10 -0
- package/dist/ability/line/handler/polyline/PolyLineLayoutHandler.d.ts +20 -0
- package/dist/ability/line/handler/polyline/handler/AbsLayoutHandler.d.ts +11 -0
- package/dist/ability/line/handler/polyline/handler/BottomLayoutHandler.d.ts +12 -0
- package/dist/ability/line/handler/polyline/handler/FreePointLayoutHandler.d.ts +10 -0
- package/dist/ability/line/handler/polyline/handler/LeftLayoutHandler.d.ts +12 -0
- package/dist/ability/line/handler/polyline/handler/RightLayoutHandler.d.ts +12 -0
- package/dist/ability/line/handler/polyline/handler/TopLayoutHandler.d.ts +12 -0
- package/dist/ability/moveLayer/MoveLayerWorker.d.ts +15 -0
- package/dist/ability/quickCreate/QuickCreateWorker.d.ts +14 -0
- package/dist/ability/svg/CreateSvgWorker.d.ts +10 -0
- package/dist/ability/svg/GenSvgBitmapWorker.d.ts +5 -0
- package/dist/action/ActionConfig.d.ts +2 -0
- package/dist/action/ActionManager.d.ts +45 -0
- package/dist/action/base/ActionType.d.ts +9 -0
- package/dist/action/cache/ActionCache.d.ts +8 -0
- package/dist/action/executor/AbsActionExecutor.d.ts +10 -0
- package/dist/action/executor/ExecutorContext.d.ts +21 -0
- package/dist/action/executor/ExecutorManager.d.ts +10 -0
- package/dist/action/executor/common/EndExecutor.d.ts +9 -0
- package/dist/action/executor/common/StartExecutor.d.ts +9 -0
- package/dist/action/executor/node/AddExecutor.d.ts +13 -0
- package/dist/action/executor/node/SelectNodeExecutor.d.ts +14 -0
- package/dist/action/executor/node/TextFocusExecutor.d.ts +11 -0
- package/dist/action/executor/node/remove/RemoveExecutor.d.ts +10 -0
- package/dist/action/executor/node/update/UpdateExecutor.d.ts +17 -0
- package/dist/action/executor/node/update/handler/AbsPropsHandler.d.ts +5 -0
- package/dist/action/executor/node/update/handler/ConnectPropsHandler.d.ts +6 -0
- package/dist/action/executor/node/update/handler/ImagePropsHandler.d.ts +6 -0
- package/dist/action/executor/node/update/handler/SvgPropsHandler.d.ts +6 -0
- package/dist/action/index.d.ts +35 -0
- package/dist/action/log/AbsActionLog.d.ts +12 -0
- package/dist/action/log/ActionLogGroup.d.ts +6 -0
- package/dist/action/log/ActionMeta.d.ts +4 -0
- package/dist/action/log/ActionOp.d.ts +6 -0
- package/dist/action/log/IActionLog.d.ts +11 -0
- package/dist/action/log/common/EndLog.d.ts +8 -0
- package/dist/action/log/common/StartLog.d.ts +8 -0
- package/dist/action/log/data/AddNodeData.d.ts +12 -0
- package/dist/action/log/data/RemoveNodeData.d.ts +3 -0
- package/dist/action/log/data/SelectNodeData.d.ts +3 -0
- package/dist/action/log/data/TextFocusData.d.ts +25 -0
- package/dist/action/log/data/UpdateNodeData.d.ts +10 -0
- package/dist/action/log/node/AddNodeLog.d.ts +9 -0
- package/dist/action/log/node/RemoveNodeLog.d.ts +9 -0
- package/dist/action/log/node/SelectNodeLog.d.ts +9 -0
- package/dist/action/log/node/TextFocusLog.d.ts +13 -0
- package/dist/action/log/node/UpdateNodeLog.d.ts +11 -0
- package/dist/action/msgPack/NodeMsgPkg.d.ts +9 -0
- package/dist/action/render/RenderConst.d.ts +2 -0
- package/dist/action/render/RenderManager.d.ts +34 -0
- package/dist/action/render/export/ExportWorker.d.ts +5 -0
- package/dist/action/render/zoom/ZoomWorker.d.ts +13 -0
- package/dist/action/undo/UndoRedoManager.d.ts +10 -0
- package/dist/app/AbsNetworkPlugin.d.ts +12 -0
- package/dist/app/AppEventContext.d.ts +56 -0
- package/dist/app/IPlugin.d.ts +14 -0
- package/dist/app/OolongApp.d.ts +52 -0
- package/dist/app/api/OolongAPI.d.ts +37 -0
- package/dist/app/api/module/CopyPasteAPI.d.ts +8 -0
- package/dist/app/api/module/CropAPI.d.ts +8 -0
- package/dist/app/api/module/ImageAPI.d.ts +8 -0
- package/dist/app/api/module/createAPI.d.ts +20 -0
- package/dist/app/docState/DocState.d.ts +26 -0
- package/dist/app/docState/Permission.d.ts +3 -0
- package/dist/app/index.d.ts +7 -0
- package/dist/application/AbsNodeManager.d.ts +33 -0
- package/dist/application/CanvasRender.d.ts +27 -0
- package/dist/application/GMLRender.d.ts +85 -0
- package/dist/application/IApplication.d.ts +41 -0
- package/dist/application/index.d.ts +5 -0
- package/dist/application/nodeManager/ConnectInfo.d.ts +14 -0
- package/dist/application/nodeManager/NodeManager.d.ts +26 -0
- package/dist/asyncRender/AsyncRenderNodeManager.d.ts +23 -0
- package/dist/asyncRender/ImgTextureTask.d.ts +6 -0
- package/dist/asyncRender/SvgTextureTask.d.ts +6 -0
- package/dist/asyncRender/TextureTaskType.d.ts +4 -0
- package/dist/auxiliary/AuxGraphicFactory.d.ts +8 -0
- package/dist/auxiliary/AuxUtils.d.ts +4 -0
- package/dist/auxiliary/AuxiliaryManager.d.ts +29 -0
- package/dist/auxiliary/AuxiliaryStyleConst.d.ts +18 -0
- package/dist/auxiliary/CollaborationManager.d.ts +2 -0
- package/dist/auxiliary/graphics/AbsAuxGraphic.d.ts +7 -0
- package/dist/auxiliary/graphics/AuxiliaryType.d.ts +32 -0
- package/dist/auxiliary/graphics/align/AlignLine.d.ts +13 -0
- package/dist/auxiliary/graphics/align/AlignStretchLine.d.ts +12 -0
- package/dist/auxiliary/graphics/create/CreateRectBound.d.ts +12 -0
- package/dist/auxiliary/graphics/crop/CropBounds.d.ts +12 -0
- package/dist/auxiliary/graphics/crop/CropOriginImg.d.ts +15 -0
- package/dist/auxiliary/graphics/group/SelectGroup.d.ts +13 -0
- package/dist/auxiliary/graphics/hover/HoverAnchorPoint.d.ts +12 -0
- package/dist/auxiliary/graphics/hover/HoverBound.d.ts +12 -0
- package/dist/auxiliary/graphics/hover/HoverConnectAnchor.d.ts +10 -0
- package/dist/auxiliary/graphics/hover/HoverConnectAnchorPoint.d.ts +10 -0
- package/dist/auxiliary/graphics/hover/HoverConnectPoint.d.ts +10 -0
- package/dist/auxiliary/graphics/hover/HoverContainer.d.ts +10 -0
- package/dist/auxiliary/graphics/hover/HoverLine.d.ts +12 -0
- package/dist/auxiliary/graphics/hover/HoverSizer.d.ts +12 -0
- package/dist/auxiliary/graphics/preview/PreviewGraphics.d.ts +13 -0
- package/dist/auxiliary/graphics/select/ExpandShapeButton.d.ts +12 -0
- package/dist/auxiliary/graphics/select/HighlightRects.d.ts +10 -0
- package/dist/auxiliary/graphics/select/MultiSelectBound.d.ts +13 -0
- package/dist/auxiliary/graphics/select/SelectConnectAnchor.d.ts +10 -0
- package/dist/auxiliary/graphics/select/SelectLine.d.ts +10 -0
- package/dist/auxiliary/graphics/select/SelectLineEnd.d.ts +16 -0
- package/dist/auxiliary/graphics/select/SelectLineTextRect.d.ts +10 -0
- package/dist/auxiliary/graphics/select/SelectPolyLineControlPoint.d.ts +12 -0
- package/dist/auxiliary/graphics/select/SingleSelectBound.d.ts +17 -0
- package/dist/auxiliary/graphics/select/StretchRect.d.ts +12 -0
- package/dist/auxiliary/graphics/text/PlaceHolder.d.ts +10 -0
- package/dist/auxiliary/graphics/text/TextSelection.d.ts +12 -0
- package/dist/auxiliary/index.d.ts +18 -0
- package/dist/common/IRectNode.d.ts +9 -0
- package/dist/common/LinkNode.d.ts +24 -0
- package/dist/common/OSType.d.ts +8 -0
- package/dist/common/Point.d.ts +7 -0
- package/dist/common/Rect.d.ts +19 -0
- package/dist/common/RectNode.d.ts +10 -0
- package/dist/common/detect/AbsDetector.d.ts +13 -0
- package/dist/common/detect/DetectorEnum.d.ts +21 -0
- package/dist/common/index.d.ts +11 -0
- package/dist/common/interact/IConfig.d.ts +5 -0
- package/dist/common/interact/InteractiveEvent.d.ts +14 -0
- package/dist/common/interact/StretchType.d.ts +10 -0
- package/dist/common/paste/PasteData.d.ts +29 -0
- package/dist/component/canvas/CanvasConfig.d.ts +4 -0
- package/dist/component/canvas/CanvasContainer.d.ts +8 -0
- package/dist/component/canvas/dhp/DHPCanvas.d.ts +7 -0
- package/dist/component/canvasInput/CanvasInput.d.ts +7 -0
- package/dist/component/index.d.ts +4 -0
- package/dist/config/ShapeCategoryType.d.ts +10 -0
- package/dist/config/defaultBorderConfig.d.ts +10 -0
- package/dist/config/defaultColorConfig.d.ts +10 -0
- package/dist/config/defaultSectionConfig.d.ts +9 -0
- package/dist/config/shapeCategory.d.ts +4 -0
- package/dist/crop/CropManager.d.ts +5 -0
- package/dist/cursor/CursorManager.d.ts +4 -0
- package/dist/cursor/CursorStyle.d.ts +7 -0
- package/dist/engine.js +23371 -0
- package/dist/engine.umd.cjs +54 -0
- package/dist/file/DocSettingDO.d.ts +6 -0
- package/dist/file/SerializeManager.d.ts +10 -0
- package/dist/graphics/ConnectorPoint.d.ts +13 -0
- package/dist/graphics/ControlPoint.d.ts +4 -0
- package/dist/graphics/GraphicConst.d.ts +2 -0
- package/dist/graphics/IDrawer.d.ts +9 -0
- package/dist/graphics/OolongGroup.d.ts +22 -0
- package/dist/graphics/OolongImgNode.d.ts +10 -0
- package/dist/graphics/OolongNode.d.ts +51 -0
- package/dist/graphics/OolongSVGNode.d.ts +13 -0
- package/dist/graphics/OolongSVGUtils.d.ts +15 -0
- package/dist/graphics/OolongSection.d.ts +16 -0
- package/dist/graphics/base/LineShapeType.d.ts +6 -0
- package/dist/graphics/base/NodeConnectEndType.d.ts +16 -0
- package/dist/graphics/base/SectionType.d.ts +6 -0
- package/dist/graphics/base/ShapeType.d.ts +28 -0
- package/dist/graphics/drawer/AbsDrawer.d.ts +12 -0
- package/dist/graphics/drawer/BasePolyLineDrawer.d.ts +13 -0
- package/dist/graphics/drawer/EllipseDrawer.d.ts +11 -0
- package/dist/graphics/drawer/LingxingDrawer.d.ts +10 -0
- package/dist/graphics/drawer/PureTextDrawer.d.ts +7 -0
- package/dist/graphics/drawer/RectDrawer.d.ts +5 -0
- package/dist/graphics/drawer/RoundRectDrawer.d.ts +8 -0
- package/dist/graphics/drawer/TriangleDrawer.d.ts +12 -0
- package/dist/graphics/drawer/line/CurveDrawer.d.ts +12 -0
- package/dist/graphics/drawer/line/PolyLineDrawer.d.ts +12 -0
- package/dist/graphics/drawer/line/RoundPolyLineDrawer.d.ts +24 -0
- package/dist/graphics/drawer/line/SimpleLineDrawer.d.ts +11 -0
- package/dist/graphics/img/AbsImgNode.d.ts +28 -0
- package/dist/graphics/index.d.ts +29 -0
- package/dist/graphics/line/LineIntersectionUtils.d.ts +10 -0
- package/dist/graphics/line/OolongLine.d.ts +69 -0
- package/dist/graphics/line/arrow/AbsArrowDrawer.d.ts +4 -0
- package/dist/graphics/line/arrow/ArrowConst.d.ts +4 -0
- package/dist/graphics/line/arrow/DiamondArrowDrawer.d.ts +5 -0
- package/dist/graphics/line/arrow/EmptyDiamondArrowDrawer.d.ts +5 -0
- package/dist/graphics/line/arrow/EmptyTriangleArrowDrawer.d.ts +5 -0
- package/dist/graphics/line/arrow/SimpleArrowDrawer.d.ts +8 -0
- package/dist/graphics/line/arrow/TriangleArrowDrawer.d.ts +5 -0
- package/dist/graphics/node/GraphicNode.d.ts +84 -0
- package/dist/graphics/node/NodeFactory.d.ts +10 -0
- package/dist/graphics/node/RootNode.d.ts +15 -0
- package/dist/graphics/props/AbsProps.d.ts +6 -0
- package/dist/graphics/props/ArrowProps.d.ts +13 -0
- package/dist/graphics/props/BaseProps.d.ts +15 -0
- package/dist/graphics/props/BorderProps.d.ts +15 -0
- package/dist/graphics/props/ColorProps.d.ts +12 -0
- package/dist/graphics/props/ConnectProps.d.ts +11 -0
- package/dist/graphics/props/CropProps.d.ts +11 -0
- package/dist/graphics/props/ImageProps.d.ts +10 -0
- package/dist/graphics/props/LineProps.d.ts +16 -0
- package/dist/graphics/props/LineTextRectProps.d.ts +12 -0
- package/dist/graphics/props/PropType.d.ts +14 -0
- package/dist/graphics/props/ShapeProps.d.ts +11 -0
- package/dist/graphics/props/SvgProps.d.ts +10 -0
- package/dist/graphics/props/TextProps.d.ts +24 -0
- package/dist/graphics/utils/GraphicUtils.d.ts +184 -0
- package/dist/graphics/utils/GroupUtils.d.ts +7 -0
- package/dist/graphics/utils/ImageUtils.d.ts +6 -0
- package/dist/idl/DocumentInfo.d.ts +5 -0
- package/dist/idl/NodeInfo.d.ts +23 -0
- package/dist/idl/NodeType.d.ts +9 -0
- package/dist/idl/capInfo/IArrowProps.d.ts +11 -0
- package/dist/idl/capInfo/IBaseProps.d.ts +7 -0
- package/dist/idl/capInfo/IBorderProps.d.ts +7 -0
- package/dist/idl/capInfo/ICapInfo.d.ts +26 -0
- package/dist/idl/capInfo/IColorProps.d.ts +4 -0
- package/dist/idl/capInfo/IConnectProps.d.ts +9 -0
- package/dist/idl/capInfo/ICropProps.d.ts +16 -0
- package/dist/idl/capInfo/IImageProps.d.ts +3 -0
- package/dist/idl/capInfo/ILineProps.d.ts +5 -0
- package/dist/idl/capInfo/ILineTextRectProps.d.ts +5 -0
- package/dist/idl/capInfo/IShapeProps.d.ts +3 -0
- package/dist/idl/capInfo/ISvgProps.d.ts +3 -0
- package/dist/idl/capInfo/ITextProps.d.ts +16 -0
- package/dist/idl/capInfo/LineDashType.d.ts +6 -0
- package/dist/idl/common/IPoint.d.ts +4 -0
- package/dist/idl/common/LineArrowType.d.ts +17 -0
- package/dist/idl/common/TextAlignType.d.ts +5 -0
- package/dist/idl/common/TextSizeMode.d.ts +5 -0
- package/dist/idl/index.d.ts +18 -0
- package/dist/idl/ws/MsgPkg.d.ts +24 -0
- package/dist/index.css +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/input/EditTextInfo.d.ts +8 -0
- package/dist/input/InputManager.d.ts +24 -0
- package/dist/input/RenderInput.d.ts +15 -0
- package/dist/input/selection/TextSelectionInfo.d.ts +7 -0
- package/dist/input/selection/TextSelectionManager.d.ts +12 -0
- package/dist/math/AffineMatrix.d.ts +51 -0
- package/dist/math/QuadBezierCurve.d.ts +28 -0
- package/dist/math/index.d.ts +2 -0
- package/dist/plugin-copy-paste/CopyPastePlugin.d.ts +13 -0
- package/dist/plugin-copy-paste/copy-paste/CopyPasteManager.d.ts +12 -0
- package/dist/plugin-copy-paste/copy-paste/copy/CopyNodeHandler.d.ts +7 -0
- package/dist/plugin-copy-paste/copy-paste/copy/ICopyHandler.d.ts +4 -0
- package/dist/plugin-copy-paste/copy-paste/paste/IPasteHandler.d.ts +4 -0
- package/dist/plugin-copy-paste/copy-paste/paste/img/ImgPasteHandler.d.ts +8 -0
- package/dist/plugin-copy-paste/copy-paste/paste/oolongData/IOolongDataHandler.d.ts +5 -0
- package/dist/plugin-copy-paste/copy-paste/paste/oolongData/OolongDataPasteHandler.d.ts +7 -0
- package/dist/plugin-copy-paste/copy-paste/paste/oolongData/pasteNode/PasteNodeHandler.d.ts +13 -0
- package/dist/plugin-copy-paste/copy-paste/paste/svg/OolongSvgPasteHandler.d.ts +7 -0
- package/dist/plugin-copy-paste/copy-paste/utils/CopyPasteUtils.d.ts +6 -0
- package/dist/plugin-copy-paste/index.d.ts +7 -0
- package/dist/plugin-hotkey/KeyEventPlugin.d.ts +12 -0
- package/dist/plugin-hotkey/hotkey/HotKey.d.ts +10 -0
- package/dist/plugin-hotkey/hotkey/HotKeyManager.d.ts +12 -0
- package/dist/plugin-hotkey/hotkey/common/RedoKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/common/UndoKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/config/HotKeyConfig.d.ts +6 -0
- package/dist/plugin-hotkey/hotkey/config/KeyCodeConfig.d.ts +50 -0
- package/dist/plugin-hotkey/hotkey/config/NormalConfig.d.ts +2 -0
- package/dist/plugin-hotkey/hotkey/config/TextConfig.d.ts +2 -0
- package/dist/plugin-hotkey/hotkey/normal/AKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/BackspaceKey.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/CKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/CopyKey.d.ts +8 -0
- package/dist/plugin-hotkey/hotkey/normal/CropKey.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/DKey.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/DeleteKey.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/EscKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/FKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/HKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/LKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/PasteKey.d.ts +8 -0
- package/dist/plugin-hotkey/hotkey/normal/RKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/SKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/SelectAllKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/SpaceKey.d.ts +8 -0
- package/dist/plugin-hotkey/hotkey/normal/TKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/group/GKey.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/group/UnGroupKey.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/moveLayer/BracketLeft.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/moveLayer/BracketRight.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/moveLayer/MoveToBack.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/moveLayer/MoveToTop.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/normal/zoom/ZoomTo100Key.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/zoom/ZoomToFitKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/normal/zoom/ZoomToSelectKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/text/AbsArrowKey.d.ts +9 -0
- package/dist/plugin-hotkey/hotkey/text/ArrowDownKey.d.ts +6 -0
- package/dist/plugin-hotkey/hotkey/text/ArrowLeftKey.d.ts +6 -0
- package/dist/plugin-hotkey/hotkey/text/ArrowRightKey.d.ts +6 -0
- package/dist/plugin-hotkey/hotkey/text/ArrowUpKey.d.ts +6 -0
- package/dist/plugin-hotkey/hotkey/text/EnterHotKey.d.ts +10 -0
- package/dist/plugin-hotkey/hotkey/text/SelectAllKey.d.ts +7 -0
- package/dist/plugin-hotkey/hotkey/text/TextDeleteKey.d.ts +11 -0
- package/dist/plugin-hotkey/index.d.ts +21 -0
- package/dist/plugin-input/InputEventPlugin.d.ts +20 -0
- package/dist/plugin-input/common/ICompositionRecord.d.ts +5 -0
- package/dist/plugin-input/handler/AbsInputHandler.d.ts +15 -0
- package/dist/plugin-input/handler/InputCompositionEndHandler.d.ts +13 -0
- package/dist/plugin-input/handler/InputCompositionHandler.d.ts +10 -0
- package/dist/plugin-input/handler/InputNormalHandler.d.ts +9 -0
- package/dist/plugin-input/index.d.ts +6 -0
- package/dist/plugin-network/EmptyNetworkPlugin.d.ts +12 -0
- package/dist/plugin-network/index.d.ts +1 -0
- package/dist/plugin-pointer/PointerEventPlugin.d.ts +17 -0
- package/dist/plugin-pointer/index.d.ts +72 -0
- package/dist/plugin-pointer/interact/InteractiveManager.d.ts +17 -0
- package/dist/plugin-pointer/interact/InteractiveUtils.d.ts +51 -0
- package/dist/plugin-pointer/interact/align/AlignConst.d.ts +3 -0
- package/dist/plugin-pointer/interact/align/AlignResult.d.ts +54 -0
- package/dist/plugin-pointer/interact/align/AlignWorker.d.ts +19 -0
- package/dist/plugin-pointer/interact/align/common/AbsAlignCommonHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/align/common/AlignHorizonHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/align/common/AlignVerticalHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/align/lineEnd/AlignLineEndWorker.d.ts +9 -0
- package/dist/plugin-pointer/interact/align/move/AlignMoveWorker.d.ts +12 -0
- package/dist/plugin-pointer/interact/align/move/handler/AbsAlignHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/align/move/handler/AlignBottomHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/align/move/handler/AlignHorizonMidHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/align/move/handler/AlignLeftHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/align/move/handler/AlignRightHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/align/move/handler/AlignTopHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/align/move/handler/AlignVerticalMidHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/align/stretch/AlignStretchWorker.d.ts +9 -0
- package/dist/plugin-pointer/interact/align/stretch/handler/AbsAlignSideHandler.d.ts +10 -0
- package/dist/plugin-pointer/interact/align/stretch/handler/AlignHeightSideHandler.d.ts +11 -0
- package/dist/plugin-pointer/interact/align/stretch/handler/AlignWidthSideHandler.d.ts +11 -0
- package/dist/plugin-pointer/interact/basic/ClickHandler.d.ts +6 -0
- package/dist/plugin-pointer/interact/basic/ClickMode.d.ts +13 -0
- package/dist/plugin-pointer/interact/basic/ClickProcessor.d.ts +16 -0
- package/dist/plugin-pointer/interact/basic/DbClickMode.d.ts +13 -0
- package/dist/plugin-pointer/interact/basic/DownAndMoveStreamMode.d.ts +17 -0
- package/dist/plugin-pointer/interact/basic/IProcessor.d.ts +7 -0
- package/dist/plugin-pointer/interact/basic/MainMode.d.ts +13 -0
- package/dist/plugin-pointer/interact/basic/StreamMode.d.ts +15 -0
- package/dist/plugin-pointer/interact/basic/StreamProcessor.d.ts +10 -0
- package/dist/plugin-pointer/interact/basic/SubMode.d.ts +12 -0
- package/dist/plugin-pointer/interact/basic/constants.d.ts +1 -0
- package/dist/plugin-pointer/interact/basic/cursor/AbsCursorProcessor.d.ts +9 -0
- package/dist/plugin-pointer/interact/basic/cursor/handler/AbsCursorHandler.d.ts +6 -0
- package/dist/plugin-pointer/interact/basic/cursor/handler/ToolCursorHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/config/AbsInteractConfig.d.ts +6 -0
- package/dist/plugin-pointer/interact/config/InteractConfig.d.ts +11 -0
- package/dist/plugin-pointer/interact/crop/CropCursorProcessor.d.ts +5 -0
- package/dist/plugin-pointer/interact/crop/CropMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/crop/CropNormalMode.d.ts +8 -0
- package/dist/plugin-pointer/interact/crop/cropClick/CancelCropHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/crop/cropClick/CropClickMode.d.ts +4 -0
- package/dist/plugin-pointer/interact/crop/cropClick/CropClickProcessor.d.ts +4 -0
- package/dist/plugin-pointer/interact/crop/cropStretch/CropStretchProcessorV2.d.ts +19 -0
- package/dist/plugin-pointer/interact/crop/cropStretch/CropStretchStreamMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/crop/dragCrop/DragCropMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/crop/dragCrop/DragCropProcessor.d.ts +19 -0
- package/dist/plugin-pointer/interact/crop/originImgStretch/OriginImgProcessor.d.ts +26 -0
- package/dist/plugin-pointer/interact/crop/originImgStretch/OriginImgStretchHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/crop/originImgStretch/OriginImgStretchMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/crop/processor/OriginImgStretchCursorHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/DefaultMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/click/AnchorClickMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/click/AnchorClickProcessor.d.ts +4 -0
- package/dist/plugin-pointer/interact/default/click/DefaultClickMode.d.ts +4 -0
- package/dist/plugin-pointer/interact/default/click/DefaultClickProcessor.d.ts +4 -0
- package/dist/plugin-pointer/interact/default/click/handler/AbsFocusNodeHandler.d.ts +10 -0
- package/dist/plugin-pointer/interact/default/click/handler/AnchorQuickCreateHandler.d.ts +17 -0
- package/dist/plugin-pointer/interact/default/click/handler/ClearFocusNodeHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/click/handler/ClickCreateTextHandler.d.ts +16 -0
- package/dist/plugin-pointer/interact/default/click/handler/ClickExpandShapeHandler.d.ts +11 -0
- package/dist/plugin-pointer/interact/default/click/handler/ClickImageHandler.d.ts +10 -0
- package/dist/plugin-pointer/interact/default/click/handler/ClickTextHandler.d.ts +17 -0
- package/dist/plugin-pointer/interact/default/click/handler/FocusNodeHandler.d.ts +6 -0
- package/dist/plugin-pointer/interact/default/click/handler/ShiftDownNodeHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/click/handler/ShiftUpClickHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/click/handler/UpFocusNodeHandler.d.ts +6 -0
- package/dist/plugin-pointer/interact/default/connectAnchor/ConnectAnchorMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/connectAnchor/ConnectAnchorProcessor.d.ts +16 -0
- package/dist/plugin-pointer/interact/default/create/CreateColorConfig.d.ts +50 -0
- package/dist/plugin-pointer/interact/default/create/CreateCursorProcessor.d.ts +5 -0
- package/dist/plugin-pointer/interact/default/create/CreateMainMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/CreateRectMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/CreateTextMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/RectCreateDragProcessor.d.ts +18 -0
- package/dist/plugin-pointer/interact/default/create/TextCreateDragProcessor.d.ts +15 -0
- package/dist/plugin-pointer/interact/default/create/base/AbsCreateDragProcessor.d.ts +28 -0
- package/dist/plugin-pointer/interact/default/create/click/create/CreateClickMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/click/create/CreateClickProcessor.d.ts +4 -0
- package/dist/plugin-pointer/interact/default/create/click/create/TextToolClickTextHandler.d.ts +15 -0
- package/dist/plugin-pointer/interact/default/create/click/createLine/CreateLineClickMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/click/createLine/CreateLineClickProcessor.d.ts +4 -0
- package/dist/plugin-pointer/interact/default/create/click/handler/ClickCreateEndLineHandler.d.ts +12 -0
- package/dist/plugin-pointer/interact/default/create/click/handler/UpClickCreateLineHandler.d.ts +11 -0
- package/dist/plugin-pointer/interact/default/create/line/CreateLineMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/line/LineCreateDragProcessor.d.ts +17 -0
- package/dist/plugin-pointer/interact/default/create/line/handler/AbsLineCreateHandler.d.ts +18 -0
- package/dist/plugin-pointer/interact/default/create/line/handler/CurveCreateHandler.d.ts +6 -0
- package/dist/plugin-pointer/interact/default/create/line/handler/LineCreateHandler.d.ts +6 -0
- package/dist/plugin-pointer/interact/default/create/line/handler/PolyLineCreateHandler.d.ts +10 -0
- package/dist/plugin-pointer/interact/default/create/normal/CreateNormalMode.d.ts +8 -0
- package/dist/plugin-pointer/interact/default/create/normal/grab/CreateUpProcessor.d.ts +12 -0
- package/dist/plugin-pointer/interact/default/create/normal/grab/handler/AbsCreateUpHandler.d.ts +12 -0
- package/dist/plugin-pointer/interact/default/create/normal/grab/handler/CreateUpResourceHandler.d.ts +13 -0
- package/dist/plugin-pointer/interact/default/create/normal/grab/handler/CreateUpSectionHandler.d.ts +13 -0
- package/dist/plugin-pointer/interact/default/create/normal/grab/handler/CreateUpShapeHandler.d.ts +13 -0
- package/dist/plugin-pointer/interact/default/create/normal/hover/CreateHoverNodeProcessor.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/normal/hover/CreateHoverProcessor.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/normal/hover/CreateLineMoveProcessor.d.ts +12 -0
- package/dist/plugin-pointer/interact/default/create/normal/hover/HoverNodeAnchorProcessor.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/normal/preview/NormalPreviewProcessor.d.ts +10 -0
- package/dist/plugin-pointer/interact/default/create/section/CreateSectionMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/create/section/SectionCreateDragProcessor.d.ts +20 -0
- package/dist/plugin-pointer/interact/default/dbClick/DbClickProcessor.d.ts +4 -0
- package/dist/plugin-pointer/interact/default/dbClick/DefaultDbClickMode.d.ts +4 -0
- package/dist/plugin-pointer/interact/default/dbClick/handler/DBClickTextHandler.d.ts +15 -0
- package/dist/plugin-pointer/interact/default/dbClick/handler/FocusInGroupHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/drag/DragMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/drag/DragProcessor.d.ts +31 -0
- package/dist/plugin-pointer/interact/default/drag/handler/AbsMoveHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/drag/handler/GroupNodeMoveHandler.d.ts +11 -0
- package/dist/plugin-pointer/interact/default/drag/handler/HandlerCtx.d.ts +10 -0
- package/dist/plugin-pointer/interact/default/drag/handler/LineMoveHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/drag/handler/NormalNodeMoveHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/default/dragSelectText/DragSelectTextMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/dragSelectText/DragSelectTextProcessor.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/group/GroupMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/group/GroupProcessor.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/lineControlPoint/LineControlPointMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/lineControlPoint/LineControlPointProcessor.d.ts +14 -0
- package/dist/plugin-pointer/interact/default/lineControlPoint/handler/AbsControlPointHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/lineControlPoint/handler/EndPolyControlPointHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/default/lineControlPoint/handler/MidControlPointHandler.d.ts +10 -0
- package/dist/plugin-pointer/interact/default/lineControlPoint/handler/StartPolyControlPointHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/default/lineControlPoint/handler/StraightLineControlPointHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/default/lineEnd/DragLineEndMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/lineEnd/DragLineEndProcessor.d.ts +28 -0
- package/dist/plugin-pointer/interact/default/lineEnd/handler/AbsDragLineEndHandler.d.ts +12 -0
- package/dist/plugin-pointer/interact/default/lineEnd/handler/DragPolyLineEndHandler.d.ts +17 -0
- package/dist/plugin-pointer/interact/default/lineEnd/handler/DragSimpleLineEndHandler.d.ts +13 -0
- package/dist/plugin-pointer/interact/default/normal/NormalMode.d.ts +8 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/CursorProcessor.d.ts +5 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/handler/EditTextCursorHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/handler/ExpandCursorHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/handler/HoverNodeCursorHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/handler/ImgCursorHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/handler/LineEndCursorHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/handler/NormalCursorHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/handler/PolyLineControlPointCursorHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/handler/RotateCursorHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/cursor/handler/StretchCursorHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/hover/HoverProcessor.d.ts +10 -0
- package/dist/plugin-pointer/interact/default/normal/hover/handler/AbsHoverHandler.d.ts +6 -0
- package/dist/plugin-pointer/interact/default/normal/hover/handler/HoverGroupHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/hover/handler/HoverLineHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/hover/handler/HoverNodeHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/normal/hover/handler/HoverSectionHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/rightClick/FocusAndContextMenuHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/rightClick/RightClickMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/rightClick/RightClickProcessor.d.ts +4 -0
- package/dist/plugin-pointer/interact/default/rotate/RotateMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/rotate/RotateProcessor.d.ts +25 -0
- package/dist/plugin-pointer/interact/default/rotate/handler/AbsRotateHandler.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/rotate/handler/RotateLineHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/default/rotate/handler/RotateNodeHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/default/rotate/handler/RotatePolyLineHandler.d.ts +10 -0
- package/dist/plugin-pointer/interact/default/stretch/AbsStretchProcessor.d.ts +69 -0
- package/dist/plugin-pointer/interact/default/stretch/SingleStretchMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/stretch/SingleStretchProcessorV2.d.ts +15 -0
- package/dist/plugin-pointer/interact/default/stretch/StretchMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/default/stretch/StretchProcessorV2.d.ts +15 -0
- package/dist/plugin-pointer/interact/default/stretch/handler/AbsStretchHandler.d.ts +8 -0
- package/dist/plugin-pointer/interact/default/stretch/handler/SingleStretchNodeHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/stretch/handler/StretchCropNodeHandler.d.ts +10 -0
- package/dist/plugin-pointer/interact/default/stretch/handler/StretchLineHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/default/stretch/handler/StretchNodeHandler.d.ts +9 -0
- package/dist/plugin-pointer/interact/detector/CropOriginImgDetector.d.ts +8 -0
- package/dist/plugin-pointer/interact/detector/DetectorResult.d.ts +34 -0
- package/dist/plugin-pointer/interact/detector/ExpandDetector.d.ts +10 -0
- package/dist/plugin-pointer/interact/detector/LineEndPointDetector.d.ts +12 -0
- package/dist/plugin-pointer/interact/detector/PolyLineControlPointDetector.d.ts +14 -0
- package/dist/plugin-pointer/interact/detector/RotateDetector.d.ts +12 -0
- package/dist/plugin-pointer/interact/detector/connect/HoverConnectAnchorDetector.d.ts +13 -0
- package/dist/plugin-pointer/interact/detector/connect/HoverNodeAnchorDetector.d.ts +12 -0
- package/dist/plugin-pointer/interact/detector/connect/NodeEdgeDetector.d.ts +13 -0
- package/dist/plugin-pointer/interact/detector/hover/BufferHoverNodeDetector.d.ts +6 -0
- package/dist/plugin-pointer/interact/detector/hover/HoverContainerDetector.d.ts +6 -0
- package/dist/plugin-pointer/interact/detector/hover/HoverNodeDetector.d.ts +6 -0
- package/dist/plugin-pointer/interact/detector/img/ImgDetector.d.ts +6 -0
- package/dist/plugin-pointer/interact/detector/node/BufferNodeDetector.d.ts +6 -0
- package/dist/plugin-pointer/interact/detector/node/NodeDetector.d.ts +6 -0
- package/dist/plugin-pointer/interact/detector/stretch/StretchDetector.d.ts +16 -0
- package/dist/plugin-pointer/interact/dragCanvas/DragCanvasCursorProcessor.d.ts +7 -0
- package/dist/plugin-pointer/interact/dragCanvas/DragCanvasMainMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/dragCanvas/DragCanvasProcessor.d.ts +10 -0
- package/dist/plugin-pointer/interact/dragCanvas/submode/ContextDragCanvasMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/dragCanvas/submode/DragCanvasMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/dragCanvas/submode/DragCanvasNormalMode.d.ts +8 -0
- package/dist/plugin-pointer/interact/utils/RectUtils.d.ts +7 -0
- package/dist/plugin-pointer/interact/viewOnly/ViewOnlyMode.d.ts +7 -0
- package/dist/plugin-pointer/interact/viewOnly/click/ViewOnlyClickMode.d.ts +4 -0
- package/dist/plugin-pointer/interact/viewOnly/click/ViewOnlyClickProcessor.d.ts +4 -0
- package/dist/plugin-pointer/interact/viewOnly/click/ViewOnlyDbClickMode.d.ts +4 -0
- package/dist/plugin-pointer/interact/viewOnly/click/ViewOnlyDbClickProcessor.d.ts +4 -0
- package/dist/plugin-pointer/interact/viewOnly/normal/ViewOnlyCursorProcessor.d.ts +5 -0
- package/dist/plugin-pointer/interact/viewOnly/normal/ViewOnlyNormalMode.d.ts +8 -0
- package/dist/plugin-resize/WindowResizePlugin.d.ts +13 -0
- package/dist/plugin-resize/index.d.ts +1 -0
- package/dist/plugin-wheel/WheelEventPlugin.d.ts +11 -0
- package/dist/plugin-wheel/WheelUtils.d.ts +12 -0
- package/dist/plugin-wheel/index.d.ts +2 -0
- package/dist/preview/PreviewManager.d.ts +13 -0
- package/dist/preview/PreviewQuickCreateManager.d.ts +22 -0
- package/dist/preview/PreviewResourceManager.d.ts +6 -0
- package/dist/preview/previewCreate/PreviewCreateManager.d.ts +15 -0
- package/dist/preview/previewCreate/handler/AbsPreviewHandler.d.ts +7 -0
- package/dist/preview/previewCreate/handler/PreviewResourceHandler.d.ts +12 -0
- package/dist/preview/previewCreate/handler/PreviewSectionHandler.d.ts +10 -0
- package/dist/preview/previewCreate/handler/PreviewShapeHandler.d.ts +10 -0
- package/dist/renderText/RenderText.d.ts +63 -0
- package/dist/renderText/TextCharacter.d.ts +16 -0
- package/dist/renderText/TextConstants.d.ts +8 -0
- package/dist/renderText/TextLine.d.ts +40 -0
- package/dist/renderText/TextParagraph.d.ts +36 -0
- package/dist/renderText/TextWord.d.ts +6 -0
- package/dist/renderText/cursor/TextCursorMoveWorker.d.ts +17 -0
- package/dist/renderText/editInfo/EditTextWorker.d.ts +23 -0
- package/dist/renderText/editInfo/TextCursorPosition.d.ts +14 -0
- package/dist/renderText/index.d.ts +18 -0
- package/dist/renderText/measure/MeasureWorker.d.ts +5 -0
- package/dist/renderText/selection/TextSelectionDeleteWorker.d.ts +8 -0
- package/dist/renderText/selection/TextSelectionWorker.d.ts +9 -0
- package/dist/renderText/selection/handler/AbsTextSelectionHandler.d.ts +7 -0
- package/dist/renderText/selection/handler/DiffParaHandler.d.ts +10 -0
- package/dist/renderText/selection/handler/SameParaDiffLineHandler.d.ts +11 -0
- package/dist/renderText/selection/handler/SameParaSameLineHandler.d.ts +11 -0
- package/dist/renderText/split/GraphemeSplit.d.ts +4 -0
- package/dist/renderText/split/IntlSplit.d.ts +4 -0
- package/dist/resource-manager/AbsResourceInstance.d.ts +12 -0
- package/dist/resource-manager/IResourceInfo.d.ts +4 -0
- package/dist/resource-manager/NormalResourceInstance.d.ts +13 -0
- package/dist/resource-manager/ResourceManager.d.ts +21 -0
- package/dist/resource-manager/index.d.ts +5 -0
- package/dist/resource-manager/resourceTypes.d.ts +4 -0
- package/dist/select/OptionHelper.d.ts +10 -0
- package/dist/select/SelectManager.d.ts +26 -0
- package/dist/select/index.d.ts +5 -0
- package/dist/select/status/AbsStatusHandler.d.ts +7 -0
- package/dist/select/status/SelectStatusContext.d.ts +6 -0
- package/dist/select/status/multi/MultiSelectHandler.d.ts +7 -0
- package/dist/select/status/single/CropStatusHandler.d.ts +8 -0
- package/dist/select/status/single/SingleEditLineTextStatusHandler.d.ts +8 -0
- package/dist/select/status/single/SingleGroupStatusHandler.d.ts +7 -0
- package/dist/select/status/single/SingleLineStatusHandler.d.ts +7 -0
- package/dist/select/status/single/SinglePolyLineStatusHandler.d.ts +7 -0
- package/dist/select/status/single/SingleStatusHandler.d.ts +7 -0
- package/dist/slot/ISlotInfo.d.ts +4 -0
- package/dist/slot/SlotKeyType.d.ts +11 -0
- package/dist/slot/SlotManager.d.ts +10 -0
- package/dist/slot/index.d.ts +6 -0
- package/dist/slot/info/ContextMenuInfo.d.ts +6 -0
- package/dist/slot/info/ImageInfo.d.ts +5 -0
- package/dist/slot/info/QuickCreateInfo.d.ts +6 -0
- package/dist/tool/ToolEnum.d.ts +10 -0
- package/dist/tool/ToolManager.d.ts +20 -0
- package/dist/tool/index.d.ts +2 -0
- package/dist/utils/CommonUtils.d.ts +4 -0
- package/dist/utils/IdGenerator.d.ts +25 -0
- package/package.json +85 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
(function(P,Kt){typeof exports=="object"&&typeof module<"u"?Kt(exports,require("react")):typeof define=="function"&&define.amd?define(["exports","react"],Kt):(P=typeof globalThis<"u"?globalThis:P||self,Kt(P.engine={},P.React))})(this,function(P,Kt){"use strict";var Wg=Object.defineProperty;var Gg=(P,Kt,xn)=>Kt in P?Wg(P,Kt,{enumerable:!0,configurable:!0,writable:!0,value:xn}):P[Kt]=xn;var g=(P,Kt,xn)=>Gg(P,typeof Kt!="symbol"?Kt+"":Kt,xn);var xn=document.createElement("style");xn.textContent=`.canvas-container .auxiliary-canvas{position:absolute;left:0;top:0;width:100%;height:100%;z-index:2;pointer-events:none}.canvas-container .content-canvas{position:absolute;left:0;top:0;width:100%;height:100%;z-index:1}.canvas-container .page-canvas{position:absolute;left:0;top:0;width:100%;height:100%;z-index:0}.normal-container,.normal-container .normal-canvas{width:100%;height:100%}.canvas-input{position:absolute;border:none;outline:none;-webkit-user-select:none;user-select:none;width:1px;z-index:3;opacity:0;pointer-events:none}@keyframes van-cursor-flicker{0%{opacity:1}50%{opacity:0}to{opacity:1}}.render-input{position:absolute;background-color:#000;width:1px;height:12px;z-index:4;pointer-events:none;animation:.6s van-cursor-flicker infinite}
|
|
2
|
+
/*$vite$:1*/`,document.head.appendChild(xn);class El{constructor(e){g(this,"ctx");this.ctx=e,e.actionManager.addNetworkPlugin(this)}onEnable(e){return!0}}const Il={default:"default",rotate:`url("data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20fill='none'%20xmlns='http://www.w3.org/2000/svg'%3e%3cpath%20d='M11.9082%203.85059C14.0928%203.85261%2016.1881%204.7106%2017.7334%206.23828C19.2787%207.7661%2020.1483%209.83859%2020.1504%2012L20.1396%2012.4043C20.0368%2014.4183%2019.1819%2016.3285%2017.7334%2017.7607C16.2848%2019.1931%2014.3533%2020.0379%2012.3174%2020.1396L11.9092%2020.1504C10.3162%2020.1491%208.75743%2019.6911%207.42188%2018.832C6.08627%2017.9729%205.03078%2016.7489%204.38379%2015.3086V15.3076L4.29785%2015.1328L4.23047%2014.9922L4.37402%2014.9297L5.4707%2014.4541L5.60547%2014.3955L5.66699%2014.5293L5.74512%2014.7002V14.7012C6.27672%2015.8811%207.1437%2016.8836%208.24023%2017.5869C9.33678%2018.2902%2010.6165%2018.664%2011.9238%2018.6631C13.7117%2018.6611%2015.4257%2017.9583%2016.6895%2016.709C17.9531%2015.4596%2018.664%2013.7661%2018.666%2012L18.6572%2011.6699C18.5727%2010.0241%2017.8741%208.46224%2016.6895%207.29102C15.5048%206.11991%2013.9246%205.4294%2012.2588%205.3457L11.9238%205.33691C10.2576%205.32911%208.65157%205.93764%207.41797%207.03809L8.37988%207.81738C8.47241%207.89286%208.54347%207.99116%208.58594%208.10254C8.62839%208.21416%208.64053%208.33534%208.62109%208.45312C8.60162%208.57095%208.55163%208.68212%208.47559%208.77441C8.39959%208.86659%208.30039%208.93712%208.18848%208.97949H8.1875L4.76953%2010.2441L4.76855%2010.2451C4.54271%2010.3263%204.28941%2010.2846%204.10254%2010.1348C4.00925%2010.0601%203.93741%209.96188%203.89453%209.85059C3.85169%209.73932%203.83987%209.61856%203.85938%209.50098L4.45801%205.94336C4.47668%205.82506%204.52762%205.71411%204.60449%205.62207C4.68015%205.5316%204.77874%205.46232%204.88965%205.42188C5.00155%205.37708%205.1242%205.36412%205.24316%205.38379C5.36053%205.40323%205.46998%205.45444%205.56055%205.53125H5.56152L6.24902%206.08789C7.77116%204.64779%209.79863%203.84478%2011.9082%203.85059Z'%20fill='black'%20stroke='black'%20stroke-width='0.3'/%3e%3c/svg%3e") 12 12,auto`};class qo{constructor(){g(this,"currentCursor","default")}setCursor(e){if(this.currentCursor!==e){const t=Il[e];t?document.body.style.cursor=t:document.body.style.cursor=e,this.currentCursor=e}}}let m=class Nl{constructor(e=0,t=0){g(this,"x");g(this,"y");this.x=e,this.y=t}clone(){return new Nl(this.x,this.y)}};var $o=(l=>(l.LEFT="LEFT",l.TOP="TOP",l.RIGHT="RIGHT",l.BOTTOM="BOTTOM",l))($o||{});class kl extends m{constructor(t,n,s,r){super(t.x,t.y);g(this,"xPos");g(this,"yPos");g(this,"nodeSide");this.xPos=n,this.yPos=s,this.nodeSide=r}}class Bl extends m{constructor(){super(...arguments);g(this,"isHorizon",!0)}}const Un="ROOT",Qo="ROOT";var A=(l=>(l[l.Shape=0]="Shape",l[l.Line=1]="Line",l[l.SVG=2]="SVG",l[l.IMG=3]="IMG",l[l.Section=4]="Section",l[l.Group=5]="Group",l[l.ROOT=99]="ROOT",l))(A||{}),Ee=(l=>(l[l.None=0]="None",l[l.Solid=1]="Solid",l[l.Dash1=2]="Dash1",l[l.Dash2=3]="Dash2",l))(Ee||{}),we=(l=>(l[l.None=0]="None",l[l.Arrow=1]="Arrow",l[l.Triangle=2]="Triangle",l[l.EmptyTriangle=3]="EmptyTriangle",l[l.Diamond=4]="Diamond",l[l.EmptyDiamond=5]="EmptyDiamond",l))(we||{}),xe=(l=>(l[l.Top=0]="Top",l[l.Middle=1]="Middle",l[l.Bottom=2]="Bottom",l))(xe||{}),le=(l=>(l[l.fix=0]="fix",l[l.autoHeight=1]="autoHeight",l[l.autoWidth=2]="autoWidth",l))(le||{}),R=(l=>(l[l.Base=0]="Base",l[l.Color=1]="Color",l[l.Border=2]="Border",l[l.Text=3]="Text",l[l.Shape=4]="Shape",l[l.Line=5]="Line",l[l.Arrow=6]="Arrow",l[l.Connect=7]="Connect",l[l.LineTextRect=8]="LineTextRect",l[l.Svg=9]="Svg",l[l.Image=10]="Image",l[l.Crop=11]="Crop",l))(R||{});class Pe{}class ps extends Pe{constructor(){super(...arguments);g(this,"type",R.Image);g(this,"url","")}static from(t){const n=new ps;return n.url=t.url,n}clone(){const t=new ps;return t.url=this.url,t}update(t){const{url:n}=t;n!==void 0&&(this.url=n)}}class gt extends Pe{constructor(){super(...arguments);g(this,"type",R.Base);g(this,"x",0);g(this,"y",0);g(this,"width",100);g(this,"height",100);g(this,"angle",0)}static create(t){const n=new gt;return n.update(t),n}static from(t){const n=new gt;return n.x=t.x,n.y=t.y,n.width=t.width,n.height=t.height,n.angle=t.angle,n}update(t){const{x:n,y:s,height:r,width:o,angle:i}=t;n!==void 0&&(this.x=n),s!==void 0&&(this.y=s),r!==void 0&&(this.height=r),o!==void 0&&(this.width=o),i!==void 0&&(this.angle=i)}clone(){const t=new gt;return t.x=this.x,t.y=this.y,t.width=this.width,t.height=this.height,t.angle=this.angle,t}}class Ot extends Pe{constructor(){super(...arguments);g(this,"type",R.Border);g(this,"color","#000000");g(this,"alpha",1);g(this,"width",2);g(this,"dashType",Ee.Solid)}static create(t){const n=new Ot;return n.update(t),n}static from(t){const n=new Ot;return n.color=t.color,n.alpha=t.alpha,n.width=t.width,n.dashType=t.dashType,n}update(t){const{color:n,alpha:s,width:r,dashType:o}=t;n!==void 0&&(this.color=n),s!==void 0&&(this.alpha=s),r!==void 0&&(this.width=r),o!==void 0&&(this.dashType=o)}clone(){const t=new Ot;return t.color=this.color,t.alpha=this.alpha,t.width=this.width,t.dashType=this.dashType,t}}class Z{constructor(){g(this,"a",1);g(this,"b",0);g(this,"c",0);g(this,"d",1);g(this,"e",0);g(this,"f",0)}static generateMatrix(){return new Z}setTransform(e,t,n,s,r,o){this.a=e,this.b=t,this.c=n,this.d=s,this.e=r,this.f=o}rotate(e){const t=e/180*Math.PI;return this.rotate2(t),this}rotate2(e){return this.a=Math.cos(e),this.c=-Math.sin(e),this.b=Math.sin(e),this.d=Math.cos(e),this}scale(e,t){return this.a=e,this.d=t,this}translate(e,t){return this.e=e,this.f=t,this}crossProduct(e){const t=new Z;return t.a=this.a*e.a+this.c*e.b,t.b=this.b*e.a+this.d*e.b,t.c=this.a*e.c+this.c*e.d,t.d=this.b*e.c+this.d*e.d,t.e=this.a*e.e+this.c*e.f+this.e,t.f=this.b*e.e+this.d*e.f+this.f,t}crossPoint(e){return new m(this.a*e.x+this.c*e.y+this.e,this.b*e.x+this.d*e.y+this.f)}inverseMatrix(){const{a:e,b:t,c:n,d:s,e:r,f:o}=this,i=e*s-t*n;if(Math.abs(i)<1e-4)throw new Error("该仿射变换不可逆");const a=s/i,c=-t/i,h=-n/i,d=e/i,u=(n*o-s*r)/i,p=(t*r-e*o)/i,f=Z.generateMatrix();return f.a=a,f.b=c,f.c=h,f.d=d,f.e=u,f.f=p,f}clone(){const e=new Z;return e.a=this.a,e.b=this.b,e.c=this.c,e.d=this.d,e.e=this.e,e.f=this.f,e}}class Ol{constructor(e,t,n){g(this,"p0");g(this,"p1");g(this,"p2");this.p0=e,this.p1=t,this.p2=n}xStationaryPoint(){return(this.p0.x-this.p1.x)/(this.p0.x-2*this.p1.x+this.p2.x)}dxdt(e){return 2*e*(this.p0.x-2*this.p1.x+this.p2.x)-2*(this.p0.x-this.p1.x)}xValue(e){const t=1-e;return t*t*this.p0.x+2*e*t*this.p1.x+e*e*this.p2.x}yValue(e){const t=1-e;return t*t*this.p0.y+2*e*t*this.p1.y+e*e*this.p2.y}newtonSolveX(e,t,n){let r=.5*(t+n),o=0;for(;;){o++;const i=this.xValue(r)-e,a=this.dxdt(r),c=r-i/a;if(Math.abs(c-r)<.01)return c;if(o>20)return null;r=c}return null}solve(e,t=6){const n=this.xStationaryPoint();if(n<0||n>1)return this.monotonicSolve(e,0,1,t);let s=this.monotonicSolve(e,0,n,t);return s?!0:(s=this.monotonicSolve(e,n,1,t),s)}monotonicSolve(e,t,n,s){const r=this.xValue(t),o=this.xValue(n),i=e.x,a=e.y;if((i-r)*(i-o)>0)return!1;const c=this.newtonSolveX(i,t,n);return c===null?(console.warn("newton 迭代求解贝塞尔曲线出错."),!1):Math.abs(a-this.yValue(c))<s}}class Ws{constructor(e){g(this,"prev",null);g(this,"next",null);g(this,"data",null);this.data=e}breakOff(){this.prev=null,this.next=null}toString(){return this.data?this.data.toString():""}add(e){const t=this.next;this.next=e,e.prev=this,e.next=t,t&&(t.prev=e)}pushAdd(e){this.next=e,e.prev=this}removeSelf(){const e=this.next,t=this.prev;this.next=null,this.prev=null,e.prev=t,t.next=e}getIndex(){let e=this.prev,t=0;for(;e&&e.data;)t++,e=e.prev;return t}static generateLink(){const e=new Ws(null),t=new Ws(null);return e.add(t),e}}class D{constructor(e=0,t=0,n=100,s=100){g(this,"x");g(this,"y");g(this,"width");g(this,"height");this.x=e,this.y=t,this.width=n,this.height=s}clone(){return new D(this.x,this.y,this.width,this.height)}static baseProps2Rect(e){const{x:t,y:n,width:s,height:r}=e;return new D(t,n,s,r)}static rectNode2Rect(e){const{minY:t,minX:n,maxY:s,maxX:r}=e;return new D(n,t,r-n,s-t)}static toRectNode(e){const{x:t,y:n,width:s,height:r}=e;return{minX:t,minY:n,maxX:t+s,maxY:n+r}}}var Gs=(l=>(l[l.Image=0]="Image",l[l.SVG=1]="SVG",l))(Gs||{});class ne{constructor(){g(this,"result",null)}detect(e,t){return this.result?!0:this.onDetect(e,t)}reset(){this.result=null}}var W=(l=>(l[l.Node=0]="Node",l[l.Stretch=1]="Stretch",l[l.HoverNode=2]="HoverNode",l[l.ParagraphHead=3]="ParagraphHead",l[l.PolyControlPoint=4]="PolyControlPoint",l[l.CurveControlPoint=5]="CurveControlPoint",l[l.LineEndPoint=6]="LineEndPoint",l[l.ConnectorPoint=7]="ConnectorPoint",l[l.Rotate=8]="Rotate",l[l.SingleStretch=9]="SingleStretch",l[l.ExpandShape=10]="ExpandShape",l[l.NodeEdge=11]="NodeEdge",l[l.BufferNode=12]="BufferNode",l[l.BufferHoverNode=13]="BufferHoverNode",l[l.HoverNodeAnchor=14]="HoverNodeAnchor",l[l.HoverConnectAnchor=15]="HoverConnectAnchor",l[l.HoverOnContainer=16]="HoverOnContainer",l[l.Image=17]="Image",l[l.ImageOriginBounds=18]="ImageOriginBounds",l))(W||{}),yt=(l=>(l.pointerDown="pointerdown",l.pointermove="pointermove",l.pointermoveOutside="pointermoveOutside",l.pointerup="pointerup",l.unknown="unknown",l))(yt||{}),G=(l=>(l[l.TOP=0]="TOP",l[l.LEFT=1]="LEFT",l[l.BOTTOM=2]="BOTTOM",l[l.RIGHT=3]="RIGHT",l[l.TOP_LEFT=4]="TOP_LEFT",l[l.TOP_RIGHT=5]="TOP_RIGHT",l[l.BOTTOM_LEFT=6]="BOTTOM_LEFT",l[l.BOTTOM_RIGHT=7]="BOTTOM_RIGHT",l))(G||{});class Jt extends Pe{constructor(){super(...arguments);g(this,"type",R.Color);g(this,"color","#ffccff");g(this,"alpha",1)}static create(t){const n=new Jt;return n.update(t),n}static from(t){const n=new Jt;return n.color=t.color,n.alpha=t.alpha,n}update(t){const{color:n,alpha:s}=t;n!==void 0&&(this.color=n),s!==void 0&&(this.alpha=s)}clone(){const t=new Jt;return t.color=this.color,t.alpha=this.alpha,t}}class se extends Pe{constructor(){super(...arguments);g(this,"type",R.Text);g(this,"text","");g(this,"fontSize",14);g(this,"fontFamily","Noto Sans");g(this,"fontColor","#000000");g(this,"fontBgColor","");g(this,"bold",!1);g(this,"italic",!1);g(this,"underline",!1);g(this,"strikethrough",!1);g(this,"verticalAlign",xe.Middle);g(this,"horizonAlign",xe.Middle);g(this,"sizeMode",le.fix)}static create(t){const n=new se;return n.update(t),n}static from(t){const n=new se;return n.text=t.text,n.fontSize=t.fontSize,n.fontFamily=t.fontFamily,n.fontColor=t.fontColor,n.fontBgColor=t.fontBgColor,n.bold=t.bold,n.italic=t.italic,n.underline=t.underline,n.strikethrough=t.strikethrough,n.verticalAlign=t.verticalAlign,n.horizonAlign=t.horizonAlign,n.sizeMode=t.sizeMode,n}update(t){const{sizeMode:n,verticalAlign:s,horizonAlign:r,fontFamily:o,fontSize:i,text:a,bold:c,italic:h,fontColor:d,fontBgColor:u,underline:p,strikethrough:f}=t;a!==void 0&&(this.text=a),o!==void 0&&(this.fontFamily=o),i!==void 0&&(this.fontSize=i),d!==void 0&&(this.fontColor=d),u!==void 0&&(this.fontBgColor=u),c!==void 0&&(this.bold=c),h!==void 0&&(this.italic=h),p!==void 0&&(this.underline=p),f!==void 0&&(this.strikethrough=f),s!==void 0&&(this.verticalAlign=s),r!==void 0&&(this.horizonAlign=r),n!==void 0&&(this.sizeMode=n)}clone(){const t=new se;return t.text=this.text,t.fontFamily=this.fontFamily,t.fontSize=this.fontSize,t.fontColor=this.fontColor,t.fontBgColor=this.fontBgColor,t.bold=this.bold,t.italic=this.italic,t.underline=this.underline,t.strikethrough=this.strikethrough,t.horizonAlign=this.horizonAlign,t.verticalAlign=this.verticalAlign,t.sizeMode=this.sizeMode,t}}class jt extends Pe{constructor(t=1){super();g(this,"type",R.Shape);g(this,"shapeCode",1);this.shapeCode=t}static from(t){const n=new jt;return n.shapeCode=t.shapeCode,n}update(t){const{shapeCode:n}=t;n!==void 0&&(this.shapeCode=n)}clone(){const t=new jt;return t.shapeCode=this.shapeCode,t}}class he extends Pe{constructor(){super(...arguments);g(this,"type",R.Line);g(this,"points",[]);g(this,"auto",!0)}static create(t,n=!0){const s=new he;return s.auto=n,s.points=t,s}static from(t){const n=new he;return n.points=t.points,n.auto=t.auto,n}clone(){const t=new he,n=[];for(const s of this.points)n.push(T.cloneIPoint(s));return t.points=n,t.auto=this.auto,t}update(t){const{points:n,auto:s}=t;n!==void 0&&(this.points=n),s!==void 0&&(this.auto=s)}}class Pn extends Pe{constructor(){super(...arguments);g(this,"type",R.Connect);g(this,"start",null);g(this,"end",null)}static from(t){const n=new Pn;return n.start=t.start,n.end=t.end,n}clone(){const t=new Pn;return t.start=this.start,t.end=this.end,t}update(t){const{start:n,end:s}=t;n!==void 0&&(this.start=n),s!==void 0&&(this.end=s)}}class Ie extends Pe{constructor(){super(...arguments);g(this,"type",R.Arrow);g(this,"lArrow",we.None);g(this,"rArrow",we.None)}static create(t){const n=new Ie;return n.update(t),n}static from(t){const n=new Ie;return n.lArrow=t.lArrow,n.rArrow=t.rArrow,n}clone(){const t=new Ie;return t.rArrow=this.rArrow,t.lArrow=this.lArrow,t}update(t){const{lArrow:n,rArrow:s}=t;n!==void 0&&(this.lArrow=n),s!==void 0&&(this.rArrow=s)}}var Mt=(l=>(l[l.Top=0]="Top",l[l.Right=1]="Right",l[l.Bottom=2]="Bottom",l[l.Left=3]="Left",l))(Mt||{});class bn extends Pe{constructor(){super(...arguments);g(this,"type",R.LineTextRect);g(this,"width",20);g(this,"height",20);g(this,"t",.5)}static from(t){const n=new bn;return n.width=t.width,n.height=t.height,n.t=t.t,n}update(t){const{t:n,height:s,width:r}=t;n!==void 0&&(this.t=n),s!==void 0&&(this.height=s),r!==void 0&&(this.width=r)}clone(){const t=new bn;return t.width=this.width,t.height=this.height,t.t=this.t,t}}var N=(l=>(l[l.HoverBounds=0]="HoverBounds",l[l.HoverLine=1]="HoverLine",l[l.SelectLine=2]="SelectLine",l[l.MultiSelectBound=3]="MultiSelectBound",l[l.TextSelection=4]="TextSelection",l[l.SelectGroup=5]="SelectGroup",l[l.SelectRect=6]="SelectRect",l[l.HighLightLine=7]="HighLightLine",l[l.AlignLine=8]="AlignLine",l[l.AlignStretchLine=9]="AlignStretchLine",l[l.SingleSelectBound=10]="SingleSelectBound",l[l.RotateLine=11]="RotateLine",l[l.HighlightRects=12]="HighlightRects",l[l.CreateRectBound=13]="CreateRectBound",l[l.ExpandShape=14]="ExpandShape",l[l.SelectLineEnd=15]="SelectLineEnd",l[l.HoverConnectPoint=16]="HoverConnectPoint",l[l.HoverConnectAnchorPoint=17]="HoverConnectAnchorPoint",l[l.HoverAnchorPoint=18]="HoverAnchorPoint",l[l.SelectPolyLineControlPoint=19]="SelectPolyLineControlPoint",l[l.SelectLineTextRect=20]="SelectLineTextRect",l[l.PlaceHolder=21]="PlaceHolder",l[l.SelectConnectAnchor=22]="SelectConnectAnchor",l[l.HoverConnectAnchor=23]="HoverConnectAnchor",l[l.PreviewGraphics=24]="PreviewGraphics",l[l.HoverContainer=25]="HoverContainer",l[l.CropBounds=26]="CropBounds",l[l.CropOriginImg=27]="CropOriginImg",l[l.StretchRect=28]="StretchRect",l[l.HoverSize=29]="HoverSize",l))(N||{});class Ct{constructor(){g(this,"prop")}update(e){this.prop=e}}const sn="#FFFFFF",Or="#000000",vn="#647ee5",re="#545DE7",Dr="#32a8f2",Zo="#3370FF",Jo=8,ti=18,ei=5,Hr=11,ni="#B7BEF5",si="#DADEFA";class ri extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.HoverBounds)}draw(t,n){const{node:s,transform:r}=this.prop;t.save(),t.strokeStyle=vn,t.lineWidth=2/n,t.globalAlpha=1;const{x:o,y:i,width:a,height:c}=s.baseProps,{a:h,b:d,c:u,d:p,e:f,f:y}=r;t.transform(h,d,u,p,f,y),t.beginPath(),t.strokeRect(0,0,a,c),t.restore()}}class oi extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.SingleSelectBound)}draw(t,n){const{x:s,y:r,width:o,height:i,transform:a}=this.prop;t.save(),t.strokeStyle=re,t.lineWidth=1/n,t.globalAlpha=1;const{a:c,b:h,c:d,d:u,e:p,f}=a;t.transform(c,h,d,u,p,f),t.beginPath(),t.strokeRect(s,r,o,i),t.restore()}}class ii extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.MultiSelectBound)}draw(t,n){const{rect:s}=this.prop;t.save(),t.strokeStyle=re,t.lineWidth=1/n,t.globalAlpha=1;const{x:r,y:o,width:i,height:a}=s;t.beginPath(),t.strokeRect(r,o,i,a),t.restore()}}class ai extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.HighlightRects)}draw(t,n){const{rects:s}=this.prop;for(const r of s){t.save(),t.strokeStyle=re,t.lineWidth=1/n,t.globalAlpha=1;const{x:o,y:i,width:a,height:c}=r;t.beginPath(),t.strokeRect(o,i,a,c),t.restore()}}}class ci extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.SelectGroup)}draw(t,n){const{rect:s}=this.prop;t.save(),t.beginPath(),t.strokeStyle=Dr,t.fillStyle=Dr,t.rect(s.x,s.y,s.width,s.height),t.lineWidth=1/n,t.stroke(),t.globalAlpha=.2,t.fill(),t.restore()}}class li extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.TextSelection)}draw(t){const{selectionList:n,node:s}=this.prop;if(n.length===0)return;t.save(),t.fillStyle=Zo,t.globalAlpha=.5;const{a:r,b:o,c:i,d:a,e:c,f:h}=s.transform;t.transform(r,o,i,a,c,h);for(const d of n)t.fillRect(d.x,d.y,d.width,d.height);t.restore()}}class hi{static computeStretchRects(e,t){const n=Jo/t,s=.5*n;return[new D(e.x-s,e.y-s,n,n),new D(e.x+e.width-s,e.y-s,n,n),new D(e.x+e.width-s,e.y+e.height-s,n,n),new D(e.x-s,e.y+e.height-s,n,n)]}}class di extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.StretchRect)}draw(t,n){const{rect:s,transform:r}=this.prop,o=hi.computeStretchRects(s,n);t.save();const{a:i,b:a,c,d:h,e:d,f:u}=r;t.transform(i,a,c,h,d,u),t.strokeStyle=re,t.fillStyle=sn,t.lineWidth=1/n,t.globalAlpha=1,t.beginPath();for(const p of o)t.roundRect(p.x,p.y,p.width,p.height,1/n),t.fill(),t.stroke();t.restore()}}class ui extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.CreateRectBound)}draw(t,n){const{rect:s,transform:r}=this.prop;t.save();const{a:o,b:i,c:a,d:c,e:h,f:d}=r;t.transform(o,i,a,c,h,d),t.strokeStyle=re,t.lineWidth=1/n,t.globalAlpha=1;const{width:u,height:p}=s;t.beginPath(),t.strokeRect(0,0,u,p),t.restore()}}class pi extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.ExpandShape)}draw(t,n){const{rect:s,transform:r}=this.prop,{width:o,height:i}=s,a=1.5/n,c=Z.generateMatrix().scale(a,a),h=Z.generateMatrix().translate(.5*o-.5*a*14,i-.5*a*8),d=r.crossProduct(h.crossProduct(c));t.save(),t.beginPath();const{a:u,b:p,c:f,d:y,e:w,f:b}=d;t.transform(u,p,f,y,w,b),t.fillStyle=re,t.roundRect(0,0,14,7.58333,2),t.fill(),t.beginPath(),t.fillStyle=sn,t.rect(1.75,2.91666,2.33333,2.33333),t.rect(5.83333,2.91666,2.33333,2.33333),t.rect(9.91667,2.91666,2.33333,2.33333),t.fill(),t.restore()}}class fi extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.AlignLine)}draw(t,n){const{lines:s}=this.prop;t.save(),t.beginPath(),t.strokeStyle=re,t.lineWidth=1/n,t.globalAlpha=1,t.setLineDash([4,2]);for(const r of s){const{start:o,end:i}=r;t.moveTo(o.x,o.y),t.lineTo(i.x,i.y)}t.stroke(),t.restore()}}class gi extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.AlignStretchLine)}draw(t,n){const s=10/n,{alignInfo:r}=this.prop,{width:o,height:i}=r;t.save(),t.beginPath(),t.strokeStyle=re,t.lineWidth=1/n,t.globalAlpha=1,o&&this.drawWidth(t,o,s),i&&this.drawHeight(t,i,s),t.restore()}drawWidth(t,n,s){const{lines:r}=n;for(const o of r){const{line:i,transform:a}=o,{start:c,end:h}=i;t.save();const{a:d,b:u,c:p,d:f,e:y,f:w}=a;t.transform(d,u,p,f,y,w);const b={x:c.x,y:c.y},x={x:c.x,y:c.y+2*s};t.moveTo(b.x,b.y),t.lineTo(x.x,x.y);const v={x:h.x,y:h.y},C={x:h.x,y:h.y+2*s};t.moveTo(v.x,v.y),t.lineTo(C.x,C.y),t.moveTo(c.x,c.y+s),t.lineTo(h.x,h.y+s),t.stroke(),t.restore()}}drawHeight(t,n,s){const{lines:r}=n;for(const o of r){const{line:i,transform:a}=o,{start:c,end:h}=i;t.save();const{a:d,b:u,c:p,d:f,e:y,f:w}=a;t.transform(d,u,p,f,y,w);const b={x:c.x,y:c.y},x={x:c.x+2*s,y:c.y};t.moveTo(b.x,b.y),t.lineTo(x.x,x.y);const v={x:h.x,y:h.y},C={x:h.x+2*s,y:h.y};t.moveTo(v.x,v.y),t.lineTo(C.x,C.y),t.moveTo(c.x+s,c.y),t.lineTo(h.x+s,h.y),t.stroke(),t.restore()}}}class Dl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.SingleSelectBound)}draw(t,n){const{start:s,end:r,transform:o}=this.prop,i=5/n;t.save();const{a,b:c,c:h,d,e:u,f:p}=o;t.transform(a,c,h,d,u,p),t.strokeStyle=re,t.fillStyle=sn,t.lineWidth=2/n,t.globalAlpha=1,t.beginPath(),t.arc(s.x,s.y,i,0,2*Math.PI),t.fill(),t.stroke(),t.beginPath(),t.arc(r.x,r.y,i,0,2*Math.PI),t.fill(),t.stroke(),t.restore()}}class Hl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.HoverLine)}draw(t,n){const{node:s,transform:r}=this.prop;t.save();const{a:o,b:i,c:a,d:c,e:h,f:d}=r;t.transform(o,i,a,c,h,d),t.strokeStyle=vn,t.lineWidth=2/n,t.globalAlpha=1,t.beginPath(),s.drawer.draw(s,t),t.restore()}}class zl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.SelectLine)}draw(t,n){const{node:s}=this.prop;t.save();const{a:r,b:o,c:i,d:a,e:c,f:h}=s.globalTransform();t.transform(r,o,i,a,c,h),t.strokeStyle=re,t.lineWidth=2/n,t.globalAlpha=1,t.beginPath(),s.drawer.draw(s,t),t.restore()}}class Xl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.HoverConnectPoint)}draw(t,n){const{point:s}=this.prop,r=4/n;t.save(),t.fillStyle=vn,t.strokeStyle=vn,t.lineWidth=2/n,t.globalAlpha=1,t.beginPath(),t.arc(s.x,s.y,r,0,2*Math.PI),t.fill(),t.restore()}}class Yl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.HoverConnectAnchorPoint)}draw(t,n){const{node:s}=this.prop;if(!s.canBeConnected())return;const r=5/n,{width:o,height:i}=s.baseProps,{a,b:c,c:h,d,e:u,f:p}=s.transform,f=s.getConnectAnchor(),y=[];for(const w of f)y.push(new m(w.x*o,w.y*i));t.save(),t.transform(a,c,h,d,u,p),t.fillStyle=sn,t.strokeStyle=re;for(const w of y)t.beginPath(),t.arc(w.x,w.y,r,0,2*Math.PI),t.fill(),t.stroke();t.restore()}}class Fl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.HoverConnectAnchorPoint)}draw(t,n){const{node:s,localPoint:r}=this.prop;if(!s.canBeConnected())return;const o=6/n,{a:i,b:a,c,d:h,e:d,f:u}=s.transform;t.save(),t.transform(i,a,c,h,d,u),t.fillStyle=vn,t.beginPath(),t.arc(r.x,r.y,o,0,2*Math.PI),t.fill(),t.stroke(),t.restore()}}const M=22;class Vl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.SelectPolyLineControlPoint)}draw(t,n){const{points:s,transform:r}=this.prop;t.save(),t.fillStyle=re,t.strokeStyle=sn,t.lineWidth=2/n,t.globalAlpha=1;const{a:o,b:i,c:a,d:c,e:h,f:d}=r;t.transform(o,i,a,c,h,d);for(let u=0;u<s.length-1;u++){const p=s[u],f=s[u+1];if(T.distance(p,f)<(M+6)/n)continue;const w=T.judgeHorizon(p,f),b=.5*(p.x+f.x),x=.5*(p.y+f.y);if(t.beginPath(),w){const v=new m(b-6/n,x);t.roundRect(v.x,v.y-2/n,12/n,4/n,2/n)}else{const v=new m(b,x-6/n);t.roundRect(v.x-2/n,v.y,4/n,12/n,2/n)}t.stroke(),t.fill()}t.restore()}}class Wl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.SelectLineTextRect)}draw(t,n){const{node:r}=this.prop,o=r.getTextContentRect();t.save(),t.strokeStyle=re,t.lineWidth=2/n,t.globalAlpha=1,t.beginPath(),t.strokeRect(o.x-2,o.y-2,o.width+2*2,o.height+2*2),t.restore()}}const yi="输入文本";class Gl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.PlaceHolder)}draw(t,n){const{node:s}=this.prop,r=s.shapeType!==_.PureText,o=s.renderText,i=o.paragraphs[0],a=i.lines[0],c=o.x+i.x+a.x,h=o.y+i.y+a.y,{fontSize:d,fontFamily:u,bold:p,italic:f}=o.textProps;t.save();const{a:y,b:w,c:b,d:x,e:v,f:C}=s.globalTransform();t.transform(y,w,b,x,v,C),t.textAlign="left",t.textBaseline="alphabetic",t.fillStyle="#000000",t.globalAlpha=.5,t.font=T.calcFont(d,u,p,f);const E=t.measureText(yi),k=E.fontBoundingBoxAscent,I=E.width,V=r?c-.5*I:c;t.fillText(yi,V,h+k),t.restore()}}class Ul extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.SelectConnectAnchor)}draw(t,n){const{node:s}=this.prop,r=ei/n,o=T.computeNodeConnectAnchor(s,n);t.save(),t.fillStyle=ni,t.globalAlpha=1;const{a:i,b:a,c,d:h,e:d,f:u}=s.globalTransform();t.transform(i,a,c,h,d,u);for(const p of o)t.beginPath(),t.arc(p.x,p.y,r,0,2*Math.PI),t.fill();t.restore()}}class _l extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.HoverConnectAnchor)}draw(t,n){const{point:s}=this.prop,r=Hr/n;t.save(),t.strokeStyle=re,t.fillStyle=si,t.globalAlpha=1,t.lineWidth=2/n,t.beginPath(),t.arc(s.x,s.y,r,0,2*Math.PI),t.fill(),t.stroke(),t.restore()}}class Kl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.PreviewGraphics)}draw(t,n){const{previewNodes:s}=this.prop;for(const r of s)r.drawOnGLCtx(t)}}class jl extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.HoverContainer)}draw(t,n){const{node:s}=this.prop;t.save(),t.strokeStyle=vn,t.lineWidth=2/n,t.globalAlpha=1;const{width:r,height:o}=s.baseProps,{a:i,b:a,c,d:h,e:d,f:u}=s.globalTransform();t.transform(i,a,c,h,d,u),t.beginPath(),t.strokeRect(0,0,r,o),t.restore()}}class ql extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.CropBounds)}draw(t,n){const{node:s,transform:r}=this.prop,o=12/n;t.save(),t.strokeStyle=Or,t.lineWidth=2/n,t.globalAlpha=1;const{width:i,height:a}=s.baseProps,{a:c,b:h,c:d,d:u,e:p,f}=r;t.transform(c,h,d,u,p,f),t.beginPath(),t.moveTo(0,o),t.lineTo(0,0),t.lineTo(o,0),t.moveTo(i-o,0),t.lineTo(i,0),t.lineTo(i,o),t.moveTo(i-o,a),t.lineTo(i,a),t.lineTo(i,a-o),t.moveTo(0,a-o),t.lineTo(0,a),t.lineTo(o,a),t.moveTo(.5*i-.5*o,0),t.lineTo(.5*i+.5*o,0),t.moveTo(.5*i-.5*o,a),t.lineTo(.5*i+.5*o,a),t.moveTo(0,.5*a-.5*o),t.lineTo(0,.5*a+.5*o),t.moveTo(i,.5*a-.5*o),t.lineTo(i,.5*a+.5*o),t.stroke(),t.beginPath(),t.setLineDash([2,2]),t.lineWidth=1/n,t.strokeRect(0,0,i,a),t.restore()}}class $l extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.CropOriginImg)}draw(t,n){const{imgBitmap:s,transform:r,x:o,y:i,width:a,height:c}=this.prop;t.save();const{a:h,b:d,c:u,d:p,e:f,f:y}=r;t.transform(h,d,u,p,f,y),t.globalAlpha=.4,t.drawImage(s,o,i,a,c),t.restore()}}class Ql extends Ct{constructor(){super(...arguments);g(this,"auxiliaryType",N.HoverSize)}draw(t,n){const{rect:s,transform:r}=this.prop,{width:o,height:i}=s,a=Math.round(o),c=Math.round(i),h=`${a}x${c}`,d=12/n,u="Noto Sans",p=T.measureTextByFont(t,h,d,"Noto Sans",!1,!1);t.save();const f=Z.generateMatrix().translate(o-p.width,i),{a:y,b:w,c:b,d:x,e:v,f:C}=r.crossProduct(f);t.transform(y,w,b,x,v,C),t.fillStyle=re,t.globalAlpha=1,t.fillRect(0,0,p.width,p.height),t.fillStyle=sn,t.font=T.calcFont(d,u),t.textAlign="left",t.textBaseline="top",t.fillText(h,0,2/n),t.restore()}}class zr{static create(e){const t=this.constructorMap[e];return t?new t:(console.error("缺少对应构造函数"),null)}}g(zr,"constructorMap",{[N.HoverBounds]:ri,[N.SingleSelectBound]:oi,[N.MultiSelectBound]:ii,[N.HighlightRects]:ai,[N.SelectGroup]:ci,[N.TextSelection]:li,[N.StretchRect]:di,[N.CreateRectBound]:ui,[N.ExpandShape]:pi,[N.AlignLine]:fi,[N.AlignStretchLine]:gi,[N.SelectLineEnd]:Dl,[N.HoverLine]:Hl,[N.SelectLine]:zl,[N.HoverConnectPoint]:Xl,[N.HoverConnectAnchorPoint]:Yl,[N.HoverAnchorPoint]:Fl,[N.SelectPolyLineControlPoint]:Vl,[N.SelectLineTextRect]:Wl,[N.PlaceHolder]:Gl,[N.SelectConnectAnchor]:Ul,[N.HoverConnectAnchor]:_l,[N.PreviewGraphics]:Kl,[N.HoverContainer]:jl,[N.CropBounds]:ql,[N.CropOriginImg]:$l,[N.HoverSize]:Ql});class mi{constructor(){g(this,"isWorking",!1);g(this,"idList",[]);g(this,"originX",0);g(this,"originY",0)}startWorking(e,t,n){this.idList=e,this.originX=t,this.originY=n,this.isWorking=!0}selectChange(e){if(!this.isWorking)return;e.size!==this.idList.length&&this.stopWork();const t=new Set(this.idList);for(const n of e)t.has(n.id)||this.stopWork(),t.delete(n.id);t.size!==0&&this.stopWork()}stopWork(){this.idList=[],this.isWorking=!1}}class rn{}const Zl=new Set([A.Shape,A.SVG,A.IMG,A.Group,A.Section]);class wi extends rn{enable(e){return e.length===1&&Zl.has(e[0].type)}handle(e,t){const n=e[0],s=n.globalTransform().clone(),{width:r,height:o}=n.baseProps;t.addOrUpdate(N.SingleSelectBound,{x:0,y:0,width:r,height:o,transform:s});const i=D.baseProps2Rect(n.baseProps);if(t.addOrUpdate(N.StretchRect,{transform:s,rect:new D(0,0,i.width,i.height)}),n.canBeConnected()&&t.addOrUpdate(N.SelectConnectAnchor,{node:n}),n instanceof qe&&n.shapeType!==_.PureText){const c=n.drawer.fullTextNodeHeight(n);n.baseProps.height<c&&t.addOrUpdate(N.ExpandShape,{transform:s,rect:i})}}}class xi extends rn{enable(e){return e.length>1}handle(e,t){const n=[],s=[];e.forEach(i=>{const a=i.getBounds();n.push(a),s.push(D.rectNode2Rect(a))});const r=T.getBounds(n),o=D.rectNode2Rect(r);t.addOrUpdate(N.MultiSelectBound,{rect:o}),t.addOrUpdate(N.HighlightRects,{rects:s}),t.addOrUpdate(N.StretchRect,{rect:new D(0,0,o.width,o.height),transform:Z.generateMatrix().translate(o.x,o.y)})}}var te=(l=>(l[l.Scale=0]="Scale",l[l.Focus=1]="Focus",l[l.FocusPropsChange=2]="FocusPropsChange",l[l.ToolChange=3]="ToolChange",l[l.QuickCreate=4]="QuickCreate",l[l.ClickImg=5]="ClickImg",l[l.ImgUrls=6]="ImgUrls",l[l.ContextMenu=7]="ContextMenu",l[l.ExitCrop=8]="ExitCrop",l))(te||{});class Pi{constructor(){g(this,"slotMap",new Map);g(this,"slotCallBack",new Map);g(this,"tickerRun",()=>{for(const[e,t]of this.slotMap){const n=this.slotCallBack.get(e);n&&n(t)}this.slotMap.clear(),requestAnimationFrame(this.tickerRun)})}start(){this.tickerRun()}addSlotState(e,t){this.slotMap.set(e,t)}registerSlotCallback(e,t){this.slotCallBack.set(e,t)}}class Jl extends rn{enable(e){return e.length===1&&e[0].type===A.Line}handle(e,t){const n=e[0],s=n.points,r=n.globalTransform();t.addOrUpdate(N.SelectLineEnd,{start:s[0],end:s[s.length-1],transform:r}),t.addOrUpdate(N.SelectLine,{node:n})}}class th extends rn{enable(e){if(e.length!==1)return!1;const t=e[0];return t.type!==A.Line?!1:!!t.isPolyLine()}handle(e,t){const n=e[0],s=n.points,r=n.globalTransform();t.addOrUpdate(N.SelectLineEnd,{start:s[0],end:s[s.length-1],transform:r}),t.addOrUpdate(N.SelectPolyLineControlPoint,{points:n.points,transform:r})}}class eh extends rn{enable(e,t){if(e.length!==1)return!1;const n=e[0];if(n.type!==A.Line)return!1;const s=t.inputManager.editTextInfo;if(!s)return!1;const r=n;return s.node.id===r.id}handle(e,t){const n=e[0];t.addOrUpdate(N.SelectLineTextRect,{node:n})}}class nh extends rn{enable(e){return e.length===1&&e[0].type===A.Group}handle(e,t){const n=e[0],s=n.nameGlobalTransform().clone(),{width:r,height:o}=n.baseProps;t.addOrUpdate(N.SingleSelectBound,{x:0,y:0,width:r,height:o,transform:s});const i=D.baseProps2Rect(n.baseProps);t.addOrUpdate(N.StretchRect,{transform:s,rect:new D(0,0,i.width,i.height)})}}const sh=new Set([A.SVG,A.IMG]);class rh extends rn{enable(e,t){if(e.length!==1)return!1;const n=e[0];return!(!sh.has(n.type)||!t.cropManager.duringCrop||!n.imgBitmap)}handle(e,t){const n=e[0],s=n.globalTransform().clone();t.addOrUpdate(N.CropBounds,{node:n,transform:s});const{cropType:r,cropInfo:o}=n.cropProps,{x:i,y:a,width:c,height:h}=n.baseProps;if(r===0||!o){t.addOrUpdate(N.SingleSelectBound,{x:0,y:0,width:c,height:h,transform:s});const d=new D(0,0,c,h);t.addOrUpdate(N.StretchRect,{transform:s,rect:d})}else{const d=n.getOriginImageRect();t.addOrUpdate(N.SingleSelectBound,{x:d.x,y:d.y,width:d.width,height:d.height,transform:s}),t.addOrUpdate(N.StretchRect,{transform:s,rect:d}),t.addOrUpdate(N.CropOriginImg,{x:d.x,y:d.y,width:d.width,height:d.height,transform:s,imgBitmap:n.imgBitmap})}}}class bi{constructor(e,t,n){g(this,"selectNodes",new Set);g(this,"optionHelper");g(this,"auxiliaryManager");g(this,"inputManager");g(this,"cropManager");g(this,"statusHandlers",[new nh,new eh,new th,new Jl,new rh,new wi,new xi]);this.auxiliaryManager=t,this.optionHelper=new mi,this.cropManager=n}register(e){this.inputManager=e}refreshSelectStatus(){this.auxiliaryManager.removeSelectGraphics();const e=[...this.selectNodes],t=this.selectStatusContext();for(const n of this.statusHandlers)if(n.enable(e,t)){n.handle(e,this.auxiliaryManager);return}}selectStatusContext(){return{inputManager:this.inputManager,cropManager:this.cropManager}}getSelectNodes(){return[...this.selectNodes]}getSelectBounds(){const e=[];for(const t of this.selectNodes)e.push(t.getRectNode());return T.getBounds(e,"selectBounds")}set(e){this.selectNodes=e,this.optionHelper.selectChange(e),this.auxiliaryManager.slotManager.addSlotState(te.Focus,[...e]),this.auxiliaryManager.slotManager.addSlotState(te.FocusPropsChange,!0),this.refreshSelectStatus()}startOptWorking(e,t,n){this.optionHelper.startWorking(e,t,n)}include(e){return this.selectNodes.has(e)}}class vi{constructor(e,t,n){g(this,"gmlRender");g(this,"selectManager");g(this,"graphicMap");g(this,"slotManager");this.gmlRender=e,this.slotManager=t,this.selectManager=new bi(e,this,n),this.graphicMap=new Map}start(){}addOrUpdate(e,t){const n=this.graphicMap.get(e);if(n){n.update(t);return}const s=zr.create(e);s&&(this.graphicMap.set(e,s),s.update(t))}remove(e){this.graphicMap.delete(e)}redraw(){const e=this.gmlRender.getViewPortBounds();this.gmlRender.glCtx.clearRect(e.minX,e.minY,e.maxX-e.minX,e.maxY-e.minY);const t=this.gmlRender.getScale(),n=[...this.graphicMap.values()];n.sort((s,r)=>s.auxiliaryType-r.auxiliaryType);for(const s of n)s.draw(this.gmlRender.glCtx,t)}removeHoverGraphics(){this.remove(N.HoverBounds),this.remove(N.HoverLine),this.remove(N.HoverConnectPoint),this.remove(N.HoverConnectAnchorPoint),this.remove(N.HoverAnchorPoint),this.remove(N.HoverConnectAnchor),this.remove(N.PreviewGraphics),this.remove(N.HoverContainer),this.remove(N.HoverSize)}removeSelectGraphics(){this.remove(N.SingleSelectBound),this.remove(N.MultiSelectBound),this.remove(N.HighlightRects),this.remove(N.TextSelection),this.remove(N.StretchRect),this.remove(N.ExpandShape),this.remove(N.SelectLineEnd),this.remove(N.SelectLine),this.remove(N.SelectPolyLineControlPoint),this.remove(N.SelectLineTextRect),this.remove(N.SelectConnectAnchor),this.remove(N.CropBounds),this.remove(N.CropOriginImg)}removeAlignGraphics(){this.remove(N.AlignLine),this.remove(N.AlignStretchLine)}}class oh{}class fs extends Pe{constructor(){super(...arguments);g(this,"type",R.Svg);g(this,"url","")}static from(t){const n=new fs;return n.url=t.url,n}clone(){const t=new fs;return t.url=this.url,t}update(t){const{url:n}=t;n!==void 0&&(this.url=n)}}var de=(l=>(l[l.None=0]="None",l[l.Rect=1]="Rect",l[l.RoundRect=2]="RoundRect",l[l.Circle=3]="Circle",l))(de||{});class Mn extends Pe{constructor(){super(...arguments);g(this,"type",R.Crop);g(this,"cropType",de.None);g(this,"cropInfo")}static from(t){const n=new Mn;return n.cropType=t.cropType||de.None,n.cropInfo=t.cropInfo,n}clone(){const t=new Mn;return t.cropType=this.cropType,this.cropInfo&&(t.cropInfo={imgX:this.cropInfo.imgX,imgY:this.cropInfo.imgY,imgWidth:this.cropInfo.imgWidth,imgHeight:this.cropInfo.imgHeight}),t}update(t){const{cropInfo:n,cropType:s}=t;n!==void 0&&(this.cropInfo=n),s!==void 0&&(this.cropType=s)}}class T{static makeSortGraphic(e){const t=[e];let n=e.parent;for(;n&&n.id!==Un;)t.unshift(n),n=n.parent;return{graphics:t}}static sortGraphics(e){const t=e.map(this.makeSortGraphic);return t.sort((n,s)=>{const r=Math.min(n.graphics.length,s.graphics.length);for(let o=0;o<r;o++){const i=n.graphics[o],a=s.graphics[o];if(i!==a)return i.zIndex>a.zIndex?1:-1}return n.graphics.length-s.graphics.length}),t.map(n=>n.graphics[n.graphics.length-1])}static setDashLine(e,t){e.dashType===Ee.Dash1?t.setLineDash([4,2]):e.dashType===Ee.Dash2&&t.setLineDash([2,2])}static convertPropsToCapInfo(e){const t={},n=e.get(R.Base);n&&(t.baseProps=n);const s=e.get(R.Color);s&&(t.colorProps=s);const r=e.get(R.Border);r&&(t.borderProps=r);const o=e.get(R.Text);o&&(t.textProps=o);const i=e.get(R.Shape);i&&(t.shapeProps=i);const a=e.get(R.Line);a&&(t.lineProps=a);const c=e.get(R.Connect);c&&(t.connectProps=c);const h=e.get(R.Arrow);h&&(t.arrowProps=h);const d=e.get(R.LineTextRect);d&&(t.lineTextRectProps=d);const u=e.get(R.Svg);u&&(t.svgProps=u);const p=e.get(R.Image);p&&(t.imageProps=p);const f=e.get(R.Crop);return f&&(t.cropProps=f),t}static convertCapInfoToProps(e){const t=[],{baseProps:n,borderProps:s,shapeProps:r,colorProps:o,textProps:i,lineProps:a,connectProps:c,arrowProps:h,lineTextRectProps:d,svgProps:u,imageProps:p,cropProps:f}=e;return s&&t.push(Ot.from(s)),o&&t.push(Jt.from(o)),i&&t.push(se.from(i)),n&&t.push(gt.from(n)),r&&t.push(jt.from(r)),a&&t.push(he.from(a)),c&&t.push(Pn.from(c)),h&&t.push(Ie.from(h)),d&&t.push(bn.from(d)),u&&t.push(fs.from(u)),p&&t.push(ps.from(p)),f&&t.push(Mn.from(f)),t}static centerPoint(e){const t=e.baseProps;return new m(t.x+.5*t.width,t.y+.5*t.height)}static topPoint(e){const t=e.baseProps;return new m(t.x+.5*t.width,t.y)}static rightPoint(e){const t=e.baseProps;return new m(t.x+t.width,t.y+.5*t.height)}static bottomPoint(e){const t=e.baseProps;return new m(t.x+.5*t.width,t.y+t.height)}static leftPoint(e){const t=e.baseProps;return new m(t.x,t.y+.5*t.height)}static topLeft(e){const t=e.baseProps;return new m(t.x,t.y)}static topRight(e){const t=e.baseProps;return new m(t.x+t.width,t.x+t.width)}static bottomLeft(e){const t=e.baseProps;return new m(t.x,t.y+t.height)}static bottomRight(e){const t=e.baseProps;return new m(t.x+t.width,t.y+t.height)}static middleInsertPoint(e,t,n){const s=new m(e.x,t.y);n.push(e,s,t)}static doubleMiddleInsertPoint(e,t,n){const s=new m(.5*(e.x+t.x),e.y),r=new m(.5*(e.x+t.x),t.y);n.push(e,s,r,t)}static rectContains(e,t){return e.x>t.x&&e.x<t.x+t.width&&e.y>t.y&&e.y<t.y+t.height}static rectContains2(e,t){return e.x>=t.minX&&e.x<=t.maxX&&e.y>=t.minY&&e.y<=t.maxY}static circleContains(e,t,n=2){return(e.x-t.x)*(e.x-t.x)+(e.y-t.y)*(e.y-t.y)<n*n}static overlapRect(e,t){return!(e.maxX<t.minX||e.minX>t.maxX||e.maxY<t.minY||e.minY>t.maxY)}static containRect(e,t){return e.minX<=t.minX&&e.minY<=t.minY&&e.maxX>=t.maxX&&e.maxY>=t.maxY}static distance(e,t){return Math.sqrt((e.x-t.x)*(e.x-t.x)+(e.y-t.y)*(e.y-t.y))}static lineAngle(e,t){if(Math.abs(e.x-t.x)<.001)return t.y>e.y?Math.PI*.5:-Math.PI*.5;const n=(t.y-e.y)/(t.x-e.x);let s=Math.atan(n);return t.x<e.x&&(s+=Math.PI),s}static basicGetArrowPoint(e,t,n,s){const r=T.lineAngle(e,t),o=Z.generateMatrix().translate(e.x,e.y).rotate2(r),i=o.crossPoint(n),a=o.crossPoint(s);return{a:i,b:a}}static getLArrowPoint(e,t,n=5){const s=new m(Math.sqrt(3)*.5*n,.5*n),r=new m(Math.sqrt(3)*.5*n,-.5*n);return T.basicGetArrowPoint(e,t,s,r)}static getRArrowPoint(e,t,n=5){const s=T.distance(e,t),r=new m(s-Math.sqrt(3)*.5*n,.5*n),o=new m(s-Math.sqrt(3)*.5*n,-.5*n);return T.basicGetArrowPoint(e,t,r,o)}static getNodeBounds(e){const t=[];e.forEach(s=>t.push(s.getBounds()));const n=this.getBounds(t);return D.rectNode2Rect(n)}static cloneIRectNode(e){return{minX:e.minX,maxX:e.maxX,minY:e.minY,maxY:e.maxY}}static cloneIPoint(e){return{x:e.x,y:e.y}}static getBoundsByBaseProps(e){const{x:t,y:n,width:s,height:r,angle:o}=e,i=Z.generateMatrix().rotate(o),a=Z.generateMatrix().translate(t,n),c=[new m(0,0),new m(0,r),new m(s,0),new m(s,r)],h=a.crossProduct(i),d=c.map(u=>h.crossPoint(u));return this.getBoundsByPoints(d)}static getBoundsByBasePropsList(e){const t=[];for(const n of e){const{x:s,y:r,width:o,height:i,angle:a}=n,c=Z.generateMatrix().rotate(a),d=Z.generateMatrix().translate(s,r).crossProduct(c),p=[new m(0,0),new m(0,i),new m(o,0),new m(o,i)].map(f=>d.crossPoint(f));t.push(...p)}return this.getBoundsByPoints(t)}static getBounds(e,t="getBounds"){const n=[],s=[];for(const r of e)n.push(r.maxX,r.minX),s.push(r.maxY,r.minY);return{id:t,minX:Math.min(...n),maxX:Math.max(...n),minY:Math.min(...s),maxY:Math.max(...s)}}static getBoundsByPoints(e){const t=[],n=[];for(const s of e)t.push(s.x),n.push(s.y);return{id:"getBounds",minX:Math.min(...t),maxX:Math.max(...t),minY:Math.min(...n),maxY:Math.max(...n)}}static calcFont(e,t,n=!1,s=!1){let r=`${e.toString()}px ${t}`;return n?r=`700 ${r}`:r=`400 ${r}`,s&&(r=`italic ${r}`),r}static calcFontByTextProps(e){const{fontSize:t,fontFamily:n,bold:s,italic:r}=e;return this.calcFont(t,n,s,r)}static measureText(e,t){const n=e.measureText(t),s=n.width,r=n.fontBoundingBoxDescent+n.fontBoundingBoxAscent,o=n.fontBoundingBoxAscent;return{width:s,height:r,boxAscent:o}}static measureTextByFont(e,t,n,s,r,o){e.save(),e.font=this.calcFont(n,s,r,o);const i=e.measureText(t);e.restore();const a=i.width,c=i.fontBoundingBoxDescent+i.fontBoundingBoxAscent,h=i.fontBoundingBoxAscent;return{width:a,height:c,boxAscent:h}}static judgeHorizon(e,t,n=.01){return Math.abs(e.y-t.y)<n}static judgeVertical(e,t,n=.01){return Math.abs(e.x-t.x)<n}static computePolyLinePoints(e,t){const n=[],s=new m(t.x-e.x,t.y-e.y);if(Math.abs(s.x)<.001||Math.abs(s.y)<.001)n.push(e,t);else if(Math.abs(s.x)>Math.abs(s.y)){const r=new m(e.x+.5*s.x,e.y),o=new m(t.x-.5*s.x,t.y);n.push(e,r,o,t)}else{const r=new m(e.x,e.y+.5*s.y),o=new m(t.x,t.y-.5*s.y);n.push(e,r,o,t)}return n}static normalizeAngle(e){let t=e%360;return t<0&&(t+=360),t}static computeOriginNodeConnectEnd(e){const{x:t,y:n}=e,s=Math.atan2(n-.5,t-.5)/Math.PI*180,r=this.normalizeAngle(s);if(r<45||r>315)return Mt.Right;if(Math.abs(r-90)<45)return Mt.Bottom;if(Math.abs(r-180)<45)return Mt.Left;if(Math.abs(r-270)<45)return Mt.Top;throw new Error("没有正确的end type")}static computeNodeConnectEnd(e,t){const{x:n,y:s}=e,r=Math.atan2(s-.5,n-.5)/Math.PI*180+t,o=this.normalizeAngle(r);if(o<45||o>315)return Mt.Right;if(Math.abs(o-90)<45)return Mt.Bottom;if(Math.abs(o-180)<45)return Mt.Left;if(Math.abs(o-270)<45)return Mt.Top;throw new Error("没有正确的end type")}static inDistance(e,t,n){return Math.abs(e-t-.5*n)<.5*n}static dealWithEndPolyPointsInUp(e,t,n){if(e.length<4)return e;const s=e.length;if(n){const a=e[s-1],c=e[s-2],h=e[s-3];return T.distance(c,h)<3/t&&(T.judgeHorizon(a,c)?a.y=h.y:a.x=h.x,e.splice(s-3,2)),e}const r=e[0],o=e[1],i=e[2];return T.distance(i,o)<3/t&&(T.judgeHorizon(r,o)?r.y=i.y:r.x=i.x,e.splice(1,2)),e}static dealWithEndPolyPoints(e,t,n){if(e.length<4)return e;const s=e.length;if(n){const a=e[s-1],c=e[s-2],h=e[s-3];return T.distance(c,h)<3/t&&(T.judgeHorizon(a,c)?(c.y=h.y,a.y=h.y):(c.x=h.x,a.x=h.x)),e}const r=e[0],o=e[1],i=e[2];return T.distance(i,o)<3/t&&(T.judgeHorizon(r,o)?(o.y=i.y,r.y=i.y):(o.x=i.x,r.x=i.x)),e}static dealWithPolyPoints(e,t){if(e.length===0)return[];const n=[e[0]];for(let s=1;s<e.length-1;s++){const r=e[s],o=e[s+1];if(T.distance(r,o)<3/t){const i=e[s+2],a=e[s-1];T.judgeHorizon(a,r)?a.y=i.y:a.x=i.x,s=s+1}else n.push(r)}return n.push(e[e.length-1]),n}static computePointByT(e,t){const n=e.points;if(e.isPolyLine()){let s=0;for(let o=0;o<n.length-1;o++){const i=n[o],a=n[o+1],c=T.distance(i,a);s+=c}const r=t*s;s=0;for(let o=0;o<n.length-1;o++){const i=n[o],a=n[o+1],c=T.distance(i,a);if(r>s&&r<=s+c)if(T.judgeHorizon(i,a)){const d=a.x>i.x?1:-1;return new m(i.x+(r-s)*d,i.y)}else{const d=a.y>i.y?1:-1;return new m(i.x,i.y+(r-s)*d)}s+=c}}return T.centerPoint(e)}static computeNodeConnectAnchor(e,t){const{width:n,height:s}=e.baseProps,r=ti/t;return[{x:.5*n,y:-r},{x:n+r,y:.5*s},{x:.5*n,y:s+r},{x:-r,y:.5*s}]}static computeSelectNode(e,t){const n=new Set(e.getSelectNodes());let s=t.parent;for(;s;)n.has(s)&&n.delete(s),s=s.parent;return this.filterChildInSet(n,t),n.add(t),n}static filterChildInSet(e,t){const n=t.children;if(n.size!==0)for(const s of n)e.has(s)&&e.delete(s),this.filterChildInSet(e,s)}static computeSelectNodes(e){const t=new Set(e);for(const n of e)this.filterChildInSet(t,n);return[...t]}static filterToGroupNodes(e){const t=[];for(const n of e)if(n.type!==A.Section){if(n.type===A.Line){const s=n,{start:r,end:o}=s.connectProps;if(r&&o){const i=e.find(c=>c.id===r.objectId),a=e.find(c=>c.id===o.objectId);i&&a&&t.push(n);continue}if(r&&!o){e.find(a=>a.id===r.objectId)&&t.push(n);continue}if(o&&!r){e.find(a=>a.id===o.objectId)&&t.push(n);continue}t.push(n);continue}t.push(n)}return t}static detectRectBounds(e,t,n){const{x:s,y:r,width:o,height:i}=e;return T.circleContains(new m(s,r),t,n)?{type:G.TOP_LEFT}:T.circleContains(new m(s+o,r),t,n)?{type:G.TOP_RIGHT}:T.circleContains(new m(s+o,r+i),t,n)?{type:G.BOTTOM_RIGHT}:T.circleContains(new m(s,r+i),t,n)?{type:G.BOTTOM_LEFT}:T.rectContains(t,new D(s,r-.5*n,o,n))?{type:G.TOP}:T.rectContains(t,new D(s+o-.5*n,r,n,i))?{type:G.RIGHT}:T.rectContains(t,new D(s,r+i-.5*n,o,n))?{type:G.BOTTOM}:T.rectContains(t,new D(s-.5*n,r,n,i))?{type:G.LEFT}:null}}class Sn{constructor(e,t){g(this,"type",A.Shape);g(this,"id");g(this,"parent",null);g(this,"children",new Set);g(this,"zIndex",0);g(this,"graphicContext");g(this,"props",new Map);g(this,"transform",Z.generateMatrix());this.id=e,this.graphicContext=t}get baseProps(){return this.props.get(R.Base)}get globalBaseProps(){const e=this.baseProps.clone(),t=this.globalPos;return e.x=t.x,e.y=t.y,e}get pos(){const e=this.baseProps;return new m(e.x,e.y)}get globalPos(){return this.globalTransform().crossPoint(new m)}setParent(e){this.parent=e,e.children.add(this)}updateProps(e){for(const t of e){if(t.type===void 0)continue;const n=this.props.get(t.type);n&&n.update(t)}}getProp(e){const t=this.props.get(e);return t||null}updateTransformMatrix(){const e=this.baseProps,t=Z.generateMatrix().rotate(e.angle),n=Z.generateMatrix().translate(e.x,e.y);this.transform=n.crossProduct(t)}contains(e,t=1){const{width:n,height:s}=this.baseProps,r=this.toLocal(e);return T.rectContains(r,new D(0,0,n,s))}canBeConnected(){return!0}getConnectAnchor(){return[]}borderContains(e,t){return null}draw(){return this.drawOnGLCtx(this.graphicContext)}globalTransform(){const e=[this];let t=this.parent;for(;t;)e.push(t),t=t.parent;let n=Z.generateMatrix();for(const s of e.reverse())n=n.crossProduct(s.transform);return n}getRectNode(){const{width:e,height:t}=this.baseProps,n=this.getProp(R.Border),s=n?n.width:0,r=[new m(-s,-s),new m(e+s,-s),new m(e+s,t+s),new m(-s,t+s)],o=[];for(const a of r)o.push(this.toGlobal(a));const i=T.getBoundsByPoints(o);return i.id=this.id,i}getBounds(){const e=this.baseProps,t={id:this.id,minX:0,minY:0,maxX:e.width,maxY:e.height},n=[new m(t.minX,t.minY),new m(t.maxX,t.minY),new m(t.maxX,t.maxY),new m(t.minX,t.maxY)],s=[];for(const o of n)s.push(this.toGlobal(o));const r=T.getBoundsByPoints(s);return r.id=this.id,r}getStretchMinSize(){return{x:10,y:10}}overlapRect(e){return T.overlapRect(e,this.getBounds())}toLocal(e){return this.globalTransform().inverseMatrix().crossPoint(e)}toGlobal(e){return this.globalTransform().crossPoint(e)}modifyPosInEditing(e){return!1}resetFromEditing(){}serializeTo(){const e=T.convertPropsToCapInfo(this.props);return{type:this.type,zIndex:this.zIndex,id:this.id,parentId:"",capInfo:e,children:[]}}}class ih{fallbackDraw(e,t){const{width:n,height:s}=e.baseProps;t.save();const{a:r,b:o,c:i,d:a,e:c,f:h}=e.globalTransform();t.transform(r,o,i,a,c,h),t.beginPath();let d=!1;const u=n/3,p=s/3;for(let f=0;f<3;f++)for(let y=0;y<3;y++){const w=d?sn:Or,b=u*f,x=p*y;t.fillStyle=w,t.fillRect(b,x,u,p),d=!d}t.restore()}}class at{constructor(e=0,t=0){this.x=e,this.y=t}clone(){return new this.constructor(this.x,this.y)}add(e){return new this.constructor(this.x+e.x,this.y+e.y)}subtract(e){return new this.constructor(this.x-e.x,this.y-e.y)}multiply(e){return new this.constructor(this.x*e,this.y*e)}divide(e){return new this.constructor(this.x/e,this.y/e)}equals(e){return this.x===e.x&&this.y===e.y}precisionEquals(e,t){return Math.abs(this.x-e.x)<t&&Math.abs(this.y-e.y)<t}lerp(e,t){const n=1-t;return new this.constructor(this.x*n+e.x*t,this.y*n+e.y*t)}distanceFrom(e){const t=this.x-e.x,n=this.y-e.y;return Math.sqrt(t*t+n*n)}min(e){return new this.constructor(Math.min(this.x,e.x),Math.min(this.y,e.y))}max(e){return new this.constructor(Math.max(this.x,e.x),Math.max(this.y,e.y))}transform(e){return new this.constructor(e.a*this.x+e.c*this.y+e.e,e.b*this.x+e.d*this.y+e.f)}toString(){return`point(${this.x},${this.y})`}}class qt{constructor(e=0,t=0){this.x=e,this.y=t}static fromPoints(e,t){return new qt(t.x-e.x,t.y-e.y)}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}magnitude(){return this.x*this.x+this.y*this.y}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}determinant(e){return this.x*e.y-this.y*e.x}unit(){return this.divide(this.length())}add(e){return new this.constructor(this.x+e.x,this.y+e.y)}subtract(e){return new this.constructor(this.x-e.x,this.y-e.y)}multiply(e){return new this.constructor(this.x*e,this.y*e)}divide(e){return new this.constructor(this.x/e,this.y/e)}angleBetween(e){let t=this.dot(e)/(this.length()*e.length());t=Math.max(-1,Math.min(t,1));const n=Math.acos(t);return this.cross(e)<0?-n:n}perp(){return new this.constructor(-this.y,this.x)}perpendicular(e){return this.subtract(this.project(e))}project(e){const t=this.dot(e)/e.dot(e);return e.multiply(t)}transform(e){return new this.constructor(e.a*this.x+e.c*this.y,e.b*this.x+e.d*this.y)}equals(e){return this.x===e.x&&this.y===e.y}precisionEquals(e,t){return Math.abs(this.x-e.x)<t&&Math.abs(this.y-e.y)<t}toString(){return`vector(${this.x},${this.y})`}}class oe{constructor(e=1,t=0,n=0,s=1,r=0,o=0){this.a=e,this.b=t,this.c=n,this.d=s,this.e=r,this.f=o}static translation(e,t){return new oe(1,0,0,1,e,t)}static scaling(e){return new oe(e,0,0,e,0,0)}static scalingAt(e,t){return new oe(e,0,0,e,t.x-t.x*e,t.y-t.y*e)}static nonUniformScaling(e,t){return new oe(e,0,0,t,0,0)}static nonUniformScalingAt(e,t,n){return new oe(e,0,0,t,n.x-n.x*e,n.y-n.y*t)}static rotation(e){const t=Math.cos(e),n=Math.sin(e);return new oe(t,n,-n,t,0,0)}static rotationAt(e,t){const n=Math.cos(e),s=Math.sin(e);return new oe(n,s,-s,n,t.x-t.x*n+t.y*s,t.y-t.y*n-t.x*s)}static rotationFromVector(e){const t=e.unit(),n=t.x,s=t.y;return new oe(n,s,-s,n,0,0)}static xFlip(){return new oe(-1,0,0,1,0,0)}static yFlip(){return new oe(1,0,0,-1,0,0)}static xSkew(e){const t=Math.tan(e);return new oe(1,0,t,1,0,0)}static ySkew(e){const t=Math.tan(e);return new oe(1,t,0,1,0,0)}multiply(e){return this.isIdentity()?e:e.isIdentity()?this:new this.constructor(this.a*e.a+this.c*e.b,this.b*e.a+this.d*e.b,this.a*e.c+this.c*e.d,this.b*e.c+this.d*e.d,this.a*e.e+this.c*e.f+this.e,this.b*e.e+this.d*e.f+this.f)}inverse(){if(this.isIdentity())return this;const e=this.a*this.d-this.b*this.c;if(e===0)throw new Error("Matrix is not invertible");const t=1/e,n=this.f*this.c-this.e*this.d,s=this.e*this.b-this.f*this.a;return new this.constructor(this.d*t,-this.b*t,-this.c*t,this.a*t,n*t,s*t)}translate(e,t){return new this.constructor(this.a,this.b,this.c,this.d,this.a*e+this.c*t+this.e,this.b*e+this.d*t+this.f)}scale(e){return new this.constructor(this.a*e,this.b*e,this.c*e,this.d*e,this.e,this.f)}scaleAt(e,t){const n=t.x-e*t.x,s=t.y-e*t.y;return new this.constructor(this.a*e,this.b*e,this.c*e,this.d*e,this.a*n+this.c*s+this.e,this.b*n+this.d*s+this.f)}scaleNonUniform(e,t){return new this.constructor(this.a*e,this.b*e,this.c*t,this.d*t,this.e,this.f)}scaleNonUniformAt(e,t,n){const s=n.x-e*n.x,r=n.y-t*n.y;return new this.constructor(this.a*e,this.b*e,this.c*t,this.d*t,this.a*s+this.c*r+this.e,this.b*s+this.d*r+this.f)}rotate(e){const t=Math.cos(e),n=Math.sin(e);return new this.constructor(this.a*t+this.c*n,this.b*t+this.d*n,this.a*-n+this.c*t,this.b*-n+this.d*t,this.e,this.f)}rotateAt(e,t){const n=Math.cos(e),s=Math.sin(e),r=t.x,o=t.y,i=this.a*n+this.c*s,a=this.b*n+this.d*s,c=this.c*n-this.a*s,h=this.d*n-this.b*s;return new this.constructor(i,a,c,h,(this.a-i)*r+(this.c-c)*o+this.e,(this.b-a)*r+(this.d-h)*o+this.f)}rotateFromVector(e){const t=e.unit(),n=t.x,s=t.y;return new this.constructor(this.a*n+this.c*s,this.b*n+this.d*s,this.a*-s+this.c*n,this.b*-s+this.d*n,this.e,this.f)}flipX(){return new this.constructor(-this.a,-this.b,this.c,this.d,this.e,this.f)}flipY(){return new this.constructor(this.a,this.b,-this.c,-this.d,this.e,this.f)}skewX(e){const t=Math.tan(e);return new this.constructor(this.a,this.b,this.c+this.a*t,this.d+this.b*t,this.e,this.f)}skewY(e){const t=Math.tan(e);return new this.constructor(this.a+this.c*t,this.b+this.d*t,this.c,this.d,this.e,this.f)}isIdentity(){return this.a===1&&this.b===0&&this.c===0&&this.d===1&&this.e===0&&this.f===0}isInvertible(){return this.a*this.d-this.b*this.c!==0}getScale(){return{scaleX:Math.sqrt(this.a*this.a+this.c*this.c),scaleY:Math.sqrt(this.b*this.b+this.d*this.d)}}getDecomposition(){const e=(this.a+this.d)*.5,t=(this.a-this.d)*.5,n=(this.b+this.c)*.5,s=(this.b-this.c)*.5,r=Math.sqrt(e*e+s*s),o=Math.sqrt(t*t+n*n),i=r+o,a=r-o,c=Math.atan2(n,t),h=Math.atan2(s,e),d=(h-c)*.5,u=(h+c)*.5;return{translation:this.constructor.translation(this.e,this.f),rotation:this.constructor.rotation(u),scale:this.constructor.nonUniformScaling(i,a),rotation0:this.constructor.rotation(d)}}equals(e){return this.a===e.a&&this.b===e.b&&this.c===e.c&&this.d===e.d&&this.e===e.e&&this.f===e.f}precisionEquals(e,t){return Math.abs(this.a-e.a)<t&&Math.abs(this.b-e.b)<t&&Math.abs(this.c-e.c)<t&&Math.abs(this.d-e.d)<t&&Math.abs(this.e-e.e)<t&&Math.abs(this.f-e.f)<t}toString(){return`matrix(${this.a},${this.b},${this.c},${this.d},${this.e},${this.f})`}}oe.IDENTITY=new oe,oe.IDENTITY.isIdentity=()=>!0;function fe(l){return typeof l=="number"?l?l<0?-1:1:l===l?l:NaN:NaN}class Dt{constructor(...e){this.coefs=[];for(let t=e.length-1;t>=0;t--)this.coefs.push(e[t]);this._variable="t",this._s=0}static interpolate(e,t,n,s,r){if(e.constructor!==Array||t.constructor!==Array)throw new TypeError("xs and ys must be arrays");if(isNaN(n)||isNaN(s)||isNaN(r))throw new TypeError("n, offset, and x must be numbers");let o,i,a=0;const c=new Array(n),h=new Array(n);let d=0,u=Math.abs(r-e[s]);for(o=0;o<n;o++){const p=Math.abs(r-e[s+o]);p<u&&(d=o,u=p),c[o]=h[o]=t[s+o]}i=t[s+d],d--;for(let p=1;p<n;p++){for(o=0;o<n-p;o++){const f=e[s+o]-r,y=e[s+o+p]-r,w=c[o+1]-h[o];let b=f-y;if(b===0)throw new RangeError("Unable to interpolate polynomial. Two numbers in n were identical (to within roundoff)");b=w/b,h[o]=y*b,c[o]=f*b}a=2*(d+1)<n-p?c[d+1]:h[d--],i+=a}return{y:i,dy:a}}static newtonSecantBisection(e,t,n,s,r,o){let i,a=0,c,h=0,d,u,p,f,y;i=e;const w=Math.pow(10,-14),b=typeof r=="number"&&typeof o=="number";if(b){if(r>o)throw new RangeError("Min must be greater than max");if(f=t(r),y=t(o),fe(f)===fe(y))throw new RangeError("Y values of bounds must be of opposite sign")}const x=function(){return Math.abs(d)<=w*Math.abs(i)||h===i-d-i};for(let v=0;v<s;v++){if(c=n(i),c===0){if(a===0)throw new RangeError("df(x) is zero");c=a}if(a=c,p=t(i),d=p/c,u=i-d,x())break;if(b){if(fe(p)===fe(y))o=i,y=p;else if(fe(p)===fe(f))r=i,f=p;else{i=u;break}if(u<r||u>o){if(fe(f)===fe(y))break;const C=50,E=.25,k=y-f,I=o-r;if(k===0?d=i-(r+I*.5):Math.abs(k/Math.min(f,y))>C?d=i-(r+I*(.5+(Math.abs(f)<Math.abs(y)?-E:E))):d=i-(r-f/k*I),u=i-d,x())break}}h=i-u,i=u}return i}clone(){const e=new Dt;return e.coefs=this.coefs.slice(),e}eval(e){if(isNaN(e))throw new TypeError(`Parameter must be a number. Found '${e}'`);let t=0;for(let n=this.coefs.length-1;n>=0;n--)t=t*e+this.coefs[n];return t}add(e){const t=new Dt,n=this.getDegree(),s=e.getDegree(),r=Math.max(n,s);for(let o=0;o<=r;o++){const i=o<=n?this.coefs[o]:0,a=o<=s?e.coefs[o]:0;t.coefs[o]=i+a}return t}multiply(e){const t=new Dt;for(let n=0;n<=this.getDegree()+e.getDegree();n++)t.coefs.push(0);for(let n=0;n<=this.getDegree();n++)for(let s=0;s<=e.getDegree();s++)t.coefs[n+s]+=this.coefs[n]*e.coefs[s];return t}divideEqualsScalar(e){for(let t=0;t<this.coefs.length;t++)this.coefs[t]/=e}simplifyEquals(e=1e-12){for(let t=this.getDegree();t>=0&&Math.abs(this.coefs[t])<=e;t--)this.coefs.pop()}removeZerosEquals(e=1e-15){const t=this.coefs,n=10*e*Math.abs(t.reduce((s,r)=>Math.abs(r)>Math.abs(s)?r:s));for(let s=0;s<t.length-1;s++)Math.abs(t[s])<n&&(t[s]=0);return this}monicEquals(){const e=this.coefs;return e[e.length-1]!==1&&this.divideEqualsScalar(e[e.length-1]),this}toString(){const e=[],t=[];for(let s=this.coefs.length-1;s>=0;s--){let r=Math.round(this.coefs[s]*1e3)/1e3;if(r!==0){const o=r<0?" - ":" + ";r=Math.abs(r),s>0&&(r===1?r=this._variable:r+=this._variable),s>1&&(r+="^"+s),t.push(o),e.push(r)}}t[0]=t[0]===" + "?"":"-";let n="";for(let s=0;s<e.length;s++)n+=t[s]+e[s];return n}bisection(e,t,n=1e-6,s=15){let r=this.eval(e),o=this.eval(t),i;if(Math.abs(r)<=n)i=e;else if(Math.abs(o)<=n)i=t;else if(r*o<=0){const a=Math.log(t-e),c=Math.LN10*s,h=Math.ceil((a+c)/Math.LN2);for(let d=0;d<h;d++){i=.5*(e+t);const u=this.eval(i);if(Math.abs(u)<=n)break;u*r<0?(t=i,o=u):(e=i,r=u)}}return i}trapezoid(e,t,n){if(isNaN(e)||isNaN(t)||isNaN(n))throw new TypeError("Parameters must be numbers");const s=t-e;if(n===1){const r=this.eval(e),o=this.eval(t);this._s=.5*s*(r+o)}else{const r=1<<n-2,o=s/r;let i=e+.5*o,a=0;for(let c=0;c<r;c++)a+=this.eval(i),i+=o;this._s=.5*(this._s+s*a/r)}if(isNaN(this._s))throw new TypeError("this._s is NaN");return this._s}simpson(e,t){if(isNaN(e)||isNaN(t))throw new TypeError("Parameters must be numbers");const n=t-e;let s=.5*n*(this.eval(e)+this.eval(t)),r=s,o=4*s/3,i=o,a=s;const c=1e-7;let h=1;for(let d=2;d<=20;d++){const u=n/h;let p=e+.5*u,f=0;for(let y=1;y<=h;y++)f+=this.eval(p),p+=u;if(r=.5*(r+n*f/h),s=r,o=(4*s-a)/3,Math.abs(o-i)<c*Math.abs(i))break;i=o,a=s,h<<=1}return o}romberg(e,t){if(isNaN(e)||isNaN(t))throw new TypeError("Parameters must be numbers");const n=20,s=3,r=1e-6,o=new Array(n+1),i=new Array(n+1);let a={y:0,dy:0};i[0]=1;for(let c=1;c<=n&&(o[c-1]=this.trapezoid(e,t,c),!(c>=s&&(a=Dt.interpolate(i,o,s,c-s,0),Math.abs(a.dy)<=r*a.y)));c++)o[c]=o[c-1],i[c]=.25*i[c-1];return a.y}zeroErrorEstimate(e){const t=this,n=1e-15;if(typeof e>"u"){const o=t.bounds();e=Math.max(Math.abs(o.minX),Math.abs(o.maxX))}if(e<.001)return 2*Math.abs(t.eval(n));const s=t.coefs.length-1,r=t.coefs[s];return 10*n*t.coefs.reduce((o,i,a)=>{const c=i/r*Math.pow(e,a);return c>o?c:o},0)}boundsUpperRealFujiwara(){let e=this.coefs;const t=e.length-1,n=e[t];n!==1&&(e=this.coefs.map(c=>c/n));const s=e.map((c,h)=>h<t?Math.pow(Math.abs(h===0?c/2:c),1/(t-h)):c);let r;const o=function(c,h,d){return r(d)&&(c.max<h?(c.nearmax=c.max,c.max=h):c.nearmax<h&&(c.nearmax=h)),c};r=function(c){return c<t&&e[c]<0};const i=s.reduce(o,{max:0,nearmax:0});return r=function(c){return c<t&&(t%2===c%2?e[c]<0:e[c]>0)},{negX:-2*s.reduce(o,{max:0,nearmax:0}).max,posX:2*i.max}}boundsLowerRealFujiwara(){const e=new Dt;e.coefs=this.coefs.slice().reverse();const t=e.boundsUpperRealFujiwara();return t.negX=1/t.negX,t.posX=1/t.posX,t}bounds(){const e=this.boundsUpperRealFujiwara(),t={minX:e.negX,maxX:e.posX};return e.negX===0&&e.posX===0||(e.negX===0?t.minX=this.boundsLowerRealFujiwara().posX:e.posX===0&&(t.maxX=this.boundsLowerRealFujiwara().negX),t.minX>t.maxX&&(t.minX=t.maxX=0)),t}boundUpperAbsRouche(){const e=this.coefs,t=e.length-1;return 1+e.reduce((s,r,o)=>o!==t?(r=Math.abs(r),s<r?r:s):s,0)/Math.abs(e[t])}boundLowerAbsRouche(){const e=this.coefs,t=e.reduce((n,s,r)=>r!==0?(s=Math.abs(s),n<s?s:n):n,0);return Math.abs(e[0])/(Math.abs(e[0])+t)}boundsRealLaguerre(){const e=this.coefs,t=e.length-1,n=-e[t-1]/(t*e[t]),s=e[t-1]*e[t-1]-2*t/(t-1)*e[t]*e[t-2];let r=(t-1)/(t*e[t])*Math.sqrt(s);return r<0&&(r=-r),{minX:n-r,maxX:n+r}}countRootsDescartes(){const e=this.coefs,t=e.length-1,n=e.reduce((s,r,o)=>(s.prev_a!==0&&r!==0&&(s.prev_a<0==r>0&&s.pos++,o%2===0!=s.prev_a<0==(o%2===1!=r>0)&&s.neg++),s.prev_a=r,s),{pos:0,neg:0,prev_a:0});return{maxRealPos:n.pos,maxRealNeg:n.neg,minComplex:t-(n.pos+n.neg)}}getDegree(){return this.coefs.length-1}getDerivative(){const e=new Dt;for(let t=1;t<this.coefs.length;t++)e.coefs.push(t*this.coefs[t]);return e}getRoots(){let e;switch(this.simplifyEquals(),this.getDegree()){case 0:e=[];break;case 1:e=this.getLinearRoot();break;case 2:e=this.getQuadraticRoots();break;case 3:e=this.getCubicRoots();break;case 4:e=this.getQuarticRoots();break;default:e=[]}return e}getRootsInInterval(e,t){const n=[];function s(r){typeof r=="number"&&n.push(r)}if(this.getDegree()===0)throw new RangeError("Unexpected empty polynomial");if(this.getDegree()===1)s(this.bisection(e,t));else{const o=this.getDerivative().getRootsInInterval(e,t);if(o.length>0){s(this.bisection(e,o[0]));for(let i=0;i<=o.length-2;i++)s(this.bisection(o[i],o[i+1]));s(this.bisection(o[o.length-1],t))}else s(this.bisection(e,t))}return n}getLinearRoot(){const e=[],t=this.coefs[1];return t!==0&&e.push(-this.coefs[0]/t),e}getQuadraticRoots(){const e=[];if(this.getDegree()===2){const t=this.coefs[2],n=this.coefs[1]/t,s=this.coefs[0]/t,r=n*n-4*s;if(r>0){const o=Math.sqrt(r);e.push(.5*(-n+o)),e.push(.5*(-n-o))}else r===0&&e.push(.5*-n)}return e}getCubicRoots(){const e=[];if(this.getDegree()===3){const t=this.coefs[3],n=this.coefs[2]/t,s=this.coefs[1]/t,r=this.coefs[0]/t,o=(3*s-n*n)/3,i=(2*n*n*n-9*s*n+27*r)/27,a=n/3;let c=i*i/4+o*o*o/27;const h=i/2,d=this.zeroErrorEstimate();if(Math.abs(c)<=d&&(c=0),c>0){const u=Math.sqrt(c);let p,f=-h+u;f>=0?p=Math.pow(f,1/3):p=-Math.pow(-f,1/3),f=-h-u,f>=0?p+=Math.pow(f,1/3):p-=Math.pow(-f,1/3),e.push(p-a)}else if(c<0){const u=Math.sqrt(-o/3),p=Math.atan2(Math.sqrt(-c),-h)/3,f=Math.cos(p),y=Math.sin(p),w=Math.sqrt(3);e.push(2*u*f-a),e.push(-u*(f+w*y)-a),e.push(-u*(f-w*y)-a)}else{let u;h>=0?u=-Math.pow(h,1/3):u=Math.pow(-h,1/3),e.push(2*u-a),e.push(-u-a)}}return e}getQuarticRoots(){let e=[];const t=this.getDegree();if(t===4){const n=new Dt;n.coefs=this.coefs.slice(),n.divideEqualsScalar(n.coefs[t]);const s=1e-15;Math.abs(n.coefs[0])<10*s*Math.abs(n.coefs[3])&&(n.coefs[0]=0);const r=n.getDerivative(),o=r.getRoots().sort((x,v)=>x-v),i=[],a=o.length-1,c=this.bounds(),h=Math.max(Math.abs(c.minX),Math.abs(c.maxX)),d=this.zeroErrorEstimate(h);for(let x=0;x<=a;x++)i.push(n.eval(o[x]));for(let x=0;x<=a;x++)Math.abs(i[x])<d&&(i[x]=0);let u=0;const p=Math.max(.1*(c.maxX-c.minX)/t,s),f=[],y=[];if(a>-1){for(i[0]!==0?fe(i[0])!==fe(n.eval(o[0]-p)-i[0])&&(f.push(o[0]-p),y.push([c.minX,o[0]])):(e.push(o[0],o[0]),u++);u<a;u++)i[u+1]===0?(e.push(o[u+1],o[u+1]),u++):fe(i[u])!==fe(i[u+1])&&(f.push((o[u]+o[u+1])/2),y.push([o[u],o[u+1]]));i[a]!==0&&fe(i[a])!==fe(n.eval(o[a]+p)-i[a])&&(f.push(o[a]+p),y.push([o[a],c.maxX]))}const w=function(x){return n.eval(x)},b=function(x){return r.eval(x)};if(f.length>0)for(u=0;u<f.length;u++)f[u]=Dt.newtonSecantBisection(f[u],w,b,32,y[u][0],y[u][1]);e=e.concat(f)}return e}}class ie{constructor(e,t){this.type=e,this.text=t}typeis(e){return this.type===e}}ie.UNDEFINED=0,ie.COMMAND=1,ie.NUMBER=2,ie.EOD=3;class ah{constructor(e){e==null&&(e=""),this.setPathData(e)}setPathData(e){if(typeof e!="string")throw new TypeError("The first parameter must be a string");this._pathData=e}getNextToken(){let e=null,t=this._pathData;for(;e===null;)if(t===null||t==="")e=new ie(ie.EOD,"");else if(t.match(/^([ \t\r\n,]+)/))t=t.substr(RegExp.$1.length);else if(t.match(/^([AaCcHhLlMmQqSsTtVvZz])/))e=new ie(ie.COMMAND,RegExp.$1),t=t.substr(RegExp.$1.length);else if(t.match(/^(([-+]?\d+(\.\d*)?|[-+]?\.\d+)([eE][-+]?\d+)?)/))e=new ie(ie.NUMBER,RegExp.$1),t=t.substr(RegExp.$1.length);else throw new SyntaxError(`Unrecognized path data: ${t}`);return this._pathData=t,e}}const Xr="BOP";let Yr=class Br{constructor(){this._lexer=new ah,this._handler=null}parseData(e){if(typeof e!="string")throw new TypeError(`The first parameter must be a string: ${e}`);this._handler!==null&&typeof this._handler.beginParse=="function"&&this._handler.beginParse();const t=this._lexer;t.setPathData(e);let n=Xr,s=null,r=t.getNextToken();for(;r.typeis(ie.EOD)===!1;){let o;const i=[];switch(r.type){case ie.COMMAND:if(n===Xr&&r.text!=="M"&&r.text!=="m")throw new SyntaxError(`New paths must begin with a moveto command. Found '${r.text}'`);n=r.text,o=Br.PARAMCOUNT[r.text.toUpperCase()],r=t.getNextToken();break;case ie.NUMBER:if(n===Xr)throw new SyntaxError(`New paths must begin with a moveto command. Found '${r.text}'`);o=Br.PARAMCOUNT[n.toUpperCase()];break;default:throw new SyntaxError(`Unrecognized command type: ${r.type}`)}for(let a=0;a<o;a++){switch(r.type){case ie.COMMAND:throw new SyntaxError(`Parameter must be a number. Found '${r.text}'`);case ie.NUMBER:i[a]=parseFloat(r.text);break;case ie.EOD:throw new SyntaxError("Unexpected end of string");default:throw new SyntaxError(`Unrecognized parameter type. Found type '${r.type}'`)}r=t.getNextToken()}if(this._handler!==null){const a=this._handler,c=Br.METHODNAME[n];(n==="a"||n==="A")&&(i[3]=i[3]!==0,i[4]=i[4]!==0),a!==null&&typeof a[c]=="function"&&a[c](...i)}switch(n){case"M":n="L";break;case"m":n="l";break;case"Z":case"z":n="BOP";break}if(r===s)throw new SyntaxError(`Parser stalled on '${r.text}'`);s=r}this._handler!==null&&typeof this._handler.endParse=="function"&&this._handler.endParse()}setHandler(e){this._handler=e}};Yr.PARAMCOUNT={A:7,C:6,H:1,L:2,M:2,Q:4,S:4,T:2,V:1,Z:0},Yr.METHODNAME={A:"arcAbs",a:"arcRel",C:"curvetoCubicAbs",c:"curvetoCubicRel",H:"linetoHorizontalAbs",h:"linetoHorizontalRel",L:"linetoAbs",l:"linetoRel",M:"movetoAbs",m:"movetoRel",Q:"curvetoQuadraticAbs",q:"curvetoQuadraticRel",S:"curvetoCubicSmoothAbs",s:"curvetoCubicSmoothRel",T:"curvetoQuadraticSmoothAbs",t:"curvetoQuadraticSmoothRel",V:"linetoVerticalAbs",v:"linetoVerticalRel",Z:"closePath",z:"closePath"};const ch=2*Math.PI;function Mi(l,e,t,n,s,r,o){s=s*Math.PI/180;const i=Math.cos(s),a=Math.sin(s),c=1e-6,h=l.subtract(e).multiply(.5),d=h.x*i+h.y*a,u=h.x*-a+h.y*i;t=Math.abs(t),n=Math.abs(n);const p=d*d,f=u*u,y=p/(t*t)+f/(n*n);if(y>1){const ht=Math.sqrt(y);t*=ht,n*=ht}const w=t*t,b=n*n,x=w*f,v=b*p;let C=(w*b-x-v)/(x+v);Math.abs(C)<c&&(C=0);let E=Math.sqrt(C);r===o&&(E=-E);const k=l.add(e).multiply(.5),I=E*t*u/n,V=E*-n*d/t,U=(d-I)/t,J=(d+I)/t,j=(u-V)/n,st=(u+V)/n,tt=new qt(1,0).angleBetween(new qt(U,j));let it=new qt(U,j).angleBetween(new qt(-J,-st));return o===!1&&(it-=ch),[I*i-V*a+k.x,I*a+V*i+k.y,t,n,tt,tt+it]}class lh{constructor(e){this.shapeCreator=e,this.shapes=[],this.firstX=null,this.firstY=null,this.lastX=null,this.lastY=null,this.lastCommand=null}beginParse(){this.shapes=[],this.firstX=null,this.firstY=null,this.lastX=null,this.lastY=null,this.lastCommand=null}addShape(e){this.shapes.push(e)}arcAbs(e,t,n,s,r,o,i){if(e===0||t===0)this.addShape(this.shapeCreator.line(this.lastX,this.lastY,o,i));else{const a=Mi(new at(this.lastX,this.lastY),new at(o,i),e,t,n,s,r);this.addShape(this.shapeCreator.arc(...a))}this.lastCommand="A",this.lastX=o,this.lastY=i}arcRel(e,t,n,s,r,o,i){if(e===0||t===0)this.addShape(this.shapeCreator.line(this.lastX,this.lastY,this.lastX+o,this.lastY+i));else{const a=Mi(new at(this.lastX,this.lastY),new at(this.lastX+o,this.lastY+i),e,t,n,s,r);this.addShape(this.shapeCreator.arc(...a))}this.lastCommand="a",this.lastX+=o,this.lastY+=i}curvetoCubicAbs(e,t,n,s,r,o){this.addShape(this.shapeCreator.cubicBezier(this.lastX,this.lastY,e,t,n,s,r,o)),this.lastX=r,this.lastY=o,this.lastCommand="C"}curvetoCubicRel(e,t,n,s,r,o){this.addShape(this.shapeCreator.cubicBezier(this.lastX,this.lastY,this.lastX+e,this.lastY+t,this.lastX+n,this.lastY+s,this.lastX+r,this.lastY+o)),this.lastX+=r,this.lastY+=o,this.lastCommand="c"}linetoHorizontalAbs(e){this.addShape(this.shapeCreator.line(this.lastX,this.lastY,e,this.lastY)),this.lastX=e,this.lastCommand="H"}linetoHorizontalRel(e){this.addShape(this.shapeCreator.line(this.lastX,this.lastY,this.lastX+e,this.lastY)),this.lastX+=e,this.lastCommand="h"}linetoAbs(e,t){this.addShape(this.shapeCreator.line(this.lastX,this.lastY,e,t)),this.lastX=e,this.lastY=t,this.lastCommand="L"}linetoRel(e,t){this.addShape(this.shapeCreator.line(this.lastX,this.lastY,this.lastX+e,this.lastY+t)),this.lastX+=e,this.lastY+=t,this.lastCommand="l"}movetoAbs(e,t){this.firstX=e,this.firstY=t,this.lastX=e,this.lastY=t,this.lastCommand="M"}movetoRel(e,t){this.firstX+=e,this.firstY+=t,this.lastX+=e,this.lastY+=t,this.lastCommand="m"}curvetoQuadraticAbs(e,t,n,s){this.addShape(this.shapeCreator.quadraticBezier(this.lastX,this.lastY,e,t,n,s)),this.lastX=n,this.lastY=s,this.lastCommand="Q"}curvetoQuadraticRel(e,t,n,s){this.addShape(this.shapeCreator.quadraticBezier(this.lastX,this.lastY,this.lastX+e,this.lastY+t,this.lastX+n,this.lastY+s)),this.lastX+=n,this.lastY+=s,this.lastCommand="q"}curvetoCubicSmoothAbs(e,t,n,s){let r,o;if(this.lastCommand.match(/^[SsCc]$/)){const i=this.shapes[this.shapes.length-1].args[2];r=2*this.lastX-i.x,o=2*this.lastY-i.y}else r=this.lastX,o=this.lastY;this.addShape(this.shapeCreator.cubicBezier(this.lastX,this.lastY,r,o,e,t,n,s)),this.lastX=n,this.lastY=s,this.lastCommand="S"}curvetoCubicSmoothRel(e,t,n,s){let r,o;if(this.lastCommand.match(/^[SsCc]$/)){const i=this.shapes[this.shapes.length-1].args[2];r=2*this.lastX-i.x,o=2*this.lastY-i.y}else r=this.lastX,o=this.lastY;this.addShape(this.shapeCreator.cubicBezier(this.lastX,this.lastY,r,o,this.lastX+e,this.lastY+t,this.lastX+n,this.lastY+s)),this.lastX+=n,this.lastY+=s,this.lastCommand="s"}curvetoQuadraticSmoothAbs(e,t){let n,s;if(this.lastCommand.match(/^[QqTt]$/)){const r=this.shapes[this.shapes.length-1].args[1];n=2*this.lastX-r.x,s=2*this.lastY-r.y}else n=this.lastX,s=this.lastY;this.addShape(this.shapeCreator.quadraticBezier(this.lastX,this.lastY,n,s,e,t)),this.lastX=e,this.lastY=t,this.lastCommand="T"}curvetoQuadraticSmoothRel(e,t){let n,s;if(this.lastCommand.match(/^[QqTt]$/)){const r=this.shapes[this.shapes.length-1].args[1];n=2*this.lastX-r.x,s=2*this.lastY-r.y}else n=this.lastX,s=this.lastY;this.addShape(this.shapeCreator.quadraticBezier(this.lastX,this.lastY,n,s,this.lastX+e,this.lastY+t)),this.lastX+=e,this.lastY+=t,this.lastCommand="t"}linetoVerticalAbs(e){this.addShape(this.shapeCreator.line(this.lastX,this.lastY,this.lastX,e)),this.lastY=e,this.lastCommand="V"}linetoVerticalRel(e){this.addShape(this.shapeCreator.line(this.lastX,this.lastY,this.lastX,this.lastY+e)),this.lastY+=e,this.lastCommand="v"}closePath(){this.addShape(this.shapeCreator.line(this.lastX,this.lastY,this.firstX,this.firstY)),this.lastX=this.firstX,this.lastY=this.firstY,this.lastCommand="z"}}const Tn=Math.PI*.5,Si=new Yr;function _e(l,e){const t=[];for(const[n,s]of l){let r=null;if(s==="Point2D")r=Fr(n,e);else if(s==="Number")r=Ti(n,e);else if(s==="Array<Point2D>"||s==="Point2D[]"){const o=[];for(;e.length>0;)o.push(Fr(n,e));o.length>0&&(r=o)}else if(s==="Optional<Number>"||s==="Number?")r=Ti(n,e),r===null&&(r=void 0);else throw new TypeError(`Unrecognized value type: ${s}`);if(r!==null)t.push(r);else throw new TypeError(`Unable to extract value for ${n}`)}return t}function Ti(l,e){let t=null;if(e.length>0){const n=e[0],s=typeof n;if(s==="number")return e.shift();if(s==="object"){for(const r of l)if(r in n&&typeof n[r]=="number"){t=n[r];break}}}return t}function Fr(l,e){let t=null;if(e.length>0){const n=e[0],s=typeof n;if(s==="number"){if(e.length>1){const r=e.shift(),o=e.shift();t=new at(r,o)}}else if(Array.isArray(n)&&n.length>1)if(n.length===2){const[r,o]=e.shift();t=new at(r,o)}else throw new TypeError(`Unhandled array of length ${n.length}`);else if(s==="object"){if("x"in n&&"y"in n)t=new at(n.x,n.y),e.shift();else for(const r of l)if(Array.isArray(r)){if(r.every(o=>o in n)){t=new at(n[r[0]],n[r[1]]);break}}else if(r in n){t=Fr([],[n[r]]);break}}}return t}class K{constructor(e,t){this.name=e,this.args=t}static arc(...e){const n=_e([[["center",["centerX","centerY"],["cx","cy"]],"Point2D"],[["radiusX","rx"],"Number"],[["radiusY","ry"],"Number"],[["startRadians"],"Number"],[["endRadians"],"Number"]],e);return new K(K.ARC,n)}static quadraticBezier(...e){const n=_e([[["p1",["p1x","p1y"]],"Point2D"],[["p2",["p2x","p2y"]],"Point2D"],[["p3",["p3x","p3y"]],"Point2D"]],e);return new K(K.QUADRATIC_BEZIER,n)}static cubicBezier(...e){const n=_e([[["p1",["p1x","p1y"]],"Point2D"],[["p2",["p2x","p2y"]],"Point2D"],[["p3",["p3x","p3y"]],"Point2D"],[["p4",["p4x","p4y"]],"Point2D"]],e);return new K(K.CUBIC_BEZIER,n)}static circle(...e){const n=_e([[["center",["centerX","centerY"],["cx","cy"]],"Point2D"],[["radius","r"],"Number"]],e);return new K(K.CIRCLE,n)}static ellipse(...e){const n=_e([[["center",["centerX","centerY"],["cx","cy"]],"Point2D"],[["radiusX","rx"],"Number"],[["radiusY","ry"],"Number"]],e);return new K(K.ELLIPSE,n)}static line(...e){const n=_e([[["p1",["p1x","p1y"],["x1","y1"]],"Point2D"],[["p2",["p2x","p2y"],["x2","y2"]],"Point2D"]],e);return new K(K.LINE,n)}static path(...e){return Si.parseData(e[0]),new K(K.PATH,Ci.shapes)}static polygon(...e){const n=_e([[[],"Array<Point2D>"]],e.length===1&&Array.isArray(e[0])?e[0]:e);return new K(K.POLYGON,n)}static polyline(...e){const n=_e([[[],"Array<Point2D>"]],e.length===1&&Array.isArray(e[0])?e[0]:e);return new K(K.POLYLINE,n)}static rectangle(...e){const n=_e([[["topLeft",["x","y"],["left","top"]],"Point2D"],[["size",["width","height"],["w","h"]],"Point2D"],[["radiusX","rx"],"Optional<Number>"],[["radiusY","ry"],"Optional<Number>"]],e),s=n[0],r=n[1];n[1]=new at(s.x+r.x,s.y+r.y);const o=new K(K.RECTANGLE,n);let i=o.args.pop(),a=o.args.pop();if(a=a===void 0?0:a,i=i===void 0?0:i,a===0&&i===0)return o;const{x:c,y:h}=o.args[0],{x:d,y:u}=o.args[1],p=d-c,f=u-h;a===0&&(a=i),i===0&&(i=a),a>p*.5&&(a=p*.5),i>f*.5&&(i=f*.5);const y=c,w=h,b=c+a,x=h+i,v=d-a,C=u-i,E=d,k=u,I=[K.arc(b,x,a,i,2*Tn,3*Tn),K.line(b,w,v,w),K.arc(v,x,a,i,3*Tn,4*Tn),K.line(E,x,E,C),K.arc(v,C,a,i,0,Tn),K.line(v,k,b,k),K.arc(b,C,a,i,Tn,2*Tn),K.line(y,C,y,x)];return new K(K.PATH,I)}}K.ARC="Arc",K.QUADRATIC_BEZIER="Bezier2",K.CUBIC_BEZIER="Bezier3",K.CIRCLE="Circle",K.ELLIPSE="Ellipse",K.LINE="Line",K.PATH="Path",K.POLYGON="Polygon",K.POLYLINE="Polyline",K.RECTANGLE="Rectangle";const Ci=new lh(K);Si.setHandler(Ci);const gs=2*Math.PI,hh=new qt(1,0);function Li(l){return l==null}function dh(l,e){const t=l[0]*e[1]-e[0]*l[1],n=l[0]*e[2]-e[0]*l[2],s=l[0]*e[3]-e[0]*l[3],r=l[0]*e[4]-e[0]*l[4],o=l[0]*e[5]-e[0]*l[5],i=l[1]*e[2]-e[1]*l[2],a=l[1]*e[4]-e[1]*l[4],c=l[1]*e[5]-e[1]*l[5],h=l[2]*e[3]-e[2]*l[3],d=l[3]*e[4]-e[3]*l[4],u=l[3]*e[5]-e[3]*l[5],p=c+d,f=a-h;return new Dt(t*i-n*n,t*f+s*i-2*n*r,t*p+s*f-r*r-2*n*o,t*u+s*p-2*r*o,s*u-o*o)}function uh(l){const e=l%gs;return e<0?e+gs:e}function ph(l,e,t,n,s,r){if(l.points.length===0)return l;const o=new O("No Intersection");r<s&&([s,r]=[r,s]),(s<0||r<0)&&(s+=gs,r+=gs);for(const i of l.points){let a=uh(hh.angleBetween(qt.fromPoints(e,i)));a<s&&(a+=gs),s<=a&&a<=r&&o.appendPoint(i)}return o.points.length>0&&(o.status="Intersection"),o}function Ke(l){const e=l.slice();return e.push(l[0]),e}class O{constructor(e){this.init(e)}init(e){this.status=e,this.points=[]}static intersect(e,t){let n;if(!Li(e)&&!Li(t))if(e.name==="Path")n=O.intersectPathShape(e,t);else if(t.name==="Path")n=O.intersectPathShape(t,e);else if(e.name==="Arc")n=O.intersectArcShape(e,t);else if(t.name==="Arc")n=O.intersectArcShape(t,e);else{let s,r;if(e.name<t.name?(s="intersect"+e.name+t.name,r=e.args.concat(t.args)):(s="intersect"+t.name+e.name,r=t.args.concat(e.args)),!(s in O))throw new TypeError("Intersection not available: "+s);n=O[s].apply(null,r)}else n=new O("No Intersection");return n}static intersectPathShape(e,t){const n=new O("No Intersection");for(const s of e.args){const r=O.intersect(s,t);n.appendPoints(r.points)}return n.points.length>0&&(n.status="Intersection"),n}static intersectArcShape(e,t){const[n,s,r,o,i]=e.args,a=new K(K.ELLIPSE,[n,s,r]),c=O.intersect(a,t);return ph(c,n,s,r,o,i)}static intersectBezier2Bezier2(e,t,n,s,r,o){let i,a;const c=new O("No Intersection");i=t.multiply(-2);const h=e.add(i.add(n));i=e.multiply(-2),a=t.multiply(2);const d=i.add(a),u=new at(e.x,e.y);i=r.multiply(-2);const p=s.add(i.add(o));i=s.multiply(-2),a=r.multiply(2);const f=i.add(a),y=new at(s.x,s.y);i=h.x*d.y-d.x*h.y,a=p.x*d.y-d.x*p.y;const w=f.x*d.y-d.x*f.y,b=d.x*(u.y-y.y)+d.y*(-u.x+y.x),x=p.x*h.y-h.x*p.y,v=f.x*h.y-h.x*f.y,C=h.x*(u.y-y.y)+h.y*(-u.x+y.x),k=new Dt(-x*x,-2*x*v,i*a-v*v-2*x*C,i*w-2*v*C,i*b-C*C).getRoots();for(const I of k)if(0<=I&&I<=1){const V=new Dt(h.x,d.x,u.x-y.x-I*f.x-I*I*p.x);V.simplifyEquals();const U=V.getRoots(),J=new Dt(h.y,d.y,u.y-y.y-I*f.y-I*I*p.y);J.simplifyEquals();const j=J.getRoots();if(U.length>0&&j.length>0){t:for(const tt of U)if(0<=tt&&tt<=1){for(let it=0;it<j.length;it++)if(Math.abs(tt-j[it])<1e-4){c.points.push(p.multiply(I*I).add(f.multiply(I).add(y)));break t}}}}return c.points.length>0&&(c.status="Intersection"),c}static intersectBezier2Bezier3(e,t,n,s,r,o,i){let a,c,h,d;const u=new O("No Intersection");a=t.multiply(-2);const p=e.add(a.add(n));a=e.multiply(-2),c=t.multiply(2);const f=a.add(c),y=new at(e.x,e.y);a=s.multiply(-1),c=r.multiply(3),h=o.multiply(-3),d=a.add(c.add(h.add(i)));const w=new at(d.x,d.y);a=s.multiply(3),c=r.multiply(-6),h=o.multiply(3),d=a.add(c.add(h));const b=new at(d.x,d.y);a=s.multiply(-3),c=r.multiply(3),h=a.add(c);const x=new at(h.x,h.y),v=new at(s.x,s.y),C=y.x*y.x,E=y.y*y.y,k=f.x*f.x,I=f.y*f.y,V=p.x*p.x,U=p.y*p.y,J=v.x*v.x,j=v.y*v.y,st=x.x*x.x,tt=x.y*x.y,it=b.x*b.x,ht=b.y*b.y,xt=w.x*w.x,mt=w.y*w.y,ot=new Dt(-2*p.x*p.y*w.x*w.y+V*mt+U*xt,-2*p.x*p.y*b.x*w.y-2*p.x*p.y*b.y*w.x+2*U*b.x*w.x+2*V*b.y*w.y,-2*p.x*x.x*p.y*w.y-2*p.x*p.y*x.y*w.x-2*p.x*p.y*b.x*b.y+2*x.x*U*w.x+U*it+V*(2*x.y*w.y+ht),2*y.x*p.x*p.y*w.y+2*y.y*p.x*p.y*w.x+f.x*f.y*p.x*w.y+f.x*f.y*p.y*w.x-2*v.x*p.x*p.y*w.y-2*p.x*v.y*p.y*w.x-2*p.x*x.x*p.y*b.y-2*p.x*p.y*x.y*b.x-2*y.x*U*w.x-2*y.y*V*w.y+2*v.x*U*w.x+2*x.x*U*b.x-I*p.x*w.x-k*p.y*w.y+V*(2*v.y*w.y+2*x.y*b.y),2*y.x*p.x*p.y*b.y+2*y.y*p.x*p.y*b.x+f.x*f.y*p.x*b.y+f.x*f.y*p.y*b.x-2*v.x*p.x*p.y*b.y-2*p.x*v.y*p.y*b.x-2*p.x*x.x*p.y*x.y-2*y.x*U*b.x-2*y.y*V*b.y+2*v.x*U*b.x-I*p.x*b.x-k*p.y*b.y+st*U+V*(2*v.y*b.y+tt),2*y.x*p.x*p.y*x.y+2*y.y*p.x*x.x*p.y+f.x*f.y*p.x*x.y+f.x*f.y*x.x*p.y-2*v.x*p.x*p.y*x.y-2*p.x*v.y*x.x*p.y-2*y.x*x.x*U-2*y.y*V*x.y+2*v.x*x.x*U-I*p.x*x.x-k*p.y*x.y+2*V*v.y*x.y,-2*y.x*y.y*p.x*p.y-y.x*f.x*f.y*p.y-y.y*f.x*f.y*p.x+2*y.x*p.x*v.y*p.y+2*y.y*v.x*p.x*p.y+f.x*v.x*f.y*p.y+f.x*f.y*p.x*v.y-2*v.x*p.x*v.y*p.y-2*y.x*v.x*U+y.x*I*p.x+y.y*k*p.y-2*y.y*V*v.y-v.x*I*p.x-k*v.y*p.y+C*U+E*V+J*U+V*j).getRootsInInterval(0,1);for(const q of ot){const B=new Dt(p.x,f.x,y.x-v.x-q*x.x-q*q*b.x-q*q*q*w.x).getRoots(),H=new Dt(p.y,f.y,y.y-v.y-q*x.y-q*q*b.y-q*q*q*w.y).getRoots();if(B.length>0&&H.length>0){t:for(const X of B)if(0<=X&&X<=1){for(let Ft=0;Ft<H.length;Ft++)if(Math.abs(X-H[Ft])<1e-4){u.points.push(w.multiply(q*q*q).add(b.multiply(q*q).add(x.multiply(q).add(v))));break t}}}}return u.points.length>0&&(u.status="Intersection"),u}static intersectBezier2Circle(e,t,n,s,r){return O.intersectBezier2Ellipse(e,t,n,s,r,r)}static intersectBezier2Ellipse(e,t,n,s,r,o){let i;const a=new O("No Intersection");i=t.multiply(-2);const c=e.add(i.add(n));i=e.multiply(-2);const h=t.multiply(2),d=i.add(h),u=new at(e.x,e.y),p=r*r,f=o*o,y=new Dt(f*c.x*c.x+p*c.y*c.y,2*(f*c.x*d.x+p*c.y*d.y),f*(2*c.x*u.x+d.x*d.x)+p*(2*c.y*u.y+d.y*d.y)-2*(f*s.x*c.x+p*s.y*c.y),2*(f*d.x*(u.x-s.x)+p*d.y*(u.y-s.y)),f*(u.x*u.x+s.x*s.x)+p*(u.y*u.y+s.y*s.y)-2*(f*s.x*u.x+p*s.y*u.y)-p*f).getRoots();for(const w of y)0<=w&&w<=1&&a.points.push(c.multiply(w*w).add(d.multiply(w).add(u)));return a.points.length>0&&(a.status="Intersection"),a}static intersectBezier2Line(e,t,n,s,r){let o;const i=s.min(r),a=s.max(r),c=new O("No Intersection");o=t.multiply(-2);const h=e.add(o.add(n));o=e.multiply(-2);const d=t.multiply(2),u=o.add(d),p=new at(e.x,e.y),f=new qt(s.y-r.y,r.x-s.x),y=s.x*r.y-r.x*s.y,w=new Dt(f.dot(h),f.dot(u),f.dot(p)+y).getRoots();for(const b of w)if(0<=b&&b<=1){const x=e.lerp(t,b),v=t.lerp(n,b),C=x.lerp(v,b);s.x===r.x?i.y<=C.y&&C.y<=a.y&&(c.status="Intersection",c.appendPoint(C)):s.y===r.y?i.x<=C.x&&C.x<=a.x&&(c.status="Intersection",c.appendPoint(C)):i.x<=C.x&&C.x<=a.x&&i.y<=C.y&&C.y<=a.y&&(c.status="Intersection",c.appendPoint(C))}return c}static intersectBezier2Polygon(e,t,n,s){return O.intersectBezier2Polyline(e,t,n,Ke(s))}static intersectBezier2Polyline(e,t,n,s){const r=new O("No Intersection"),{length:o}=s;for(let i=0;i<o-1;i++){const a=s[i],c=s[i+1],h=O.intersectBezier2Line(e,t,n,a,c);r.appendPoints(h.points)}return r.points.length>0&&(r.status="Intersection"),r}static intersectBezier2Rectangle(e,t,n,s,r){const o=s.min(r),i=s.max(r),a=new at(i.x,o.y),c=new at(o.x,i.y),h=O.intersectBezier2Line(e,t,n,o,a),d=O.intersectBezier2Line(e,t,n,a,i),u=O.intersectBezier2Line(e,t,n,i,c),p=O.intersectBezier2Line(e,t,n,c,o),f=new O("No Intersection");return f.appendPoints(h.points),f.appendPoints(d.points),f.appendPoints(u.points),f.appendPoints(p.points),f.points.length>0&&(f.status="Intersection"),f}static intersectBezier3Bezier3(e,t,n,s,r,o,i,a){let c,h,d,u;const p=new O("No Intersection");c=e.multiply(-1),h=t.multiply(3),d=n.multiply(-3),u=c.add(h.add(d.add(s)));const f=new at(u.x,u.y);c=e.multiply(3),h=t.multiply(-6),d=n.multiply(3),u=c.add(h.add(d));const y=new at(u.x,u.y);c=e.multiply(-3),h=t.multiply(3),d=c.add(h);const w=new at(d.x,d.y),b=new at(e.x,e.y);c=r.multiply(-1),h=o.multiply(3),d=i.multiply(-3),u=c.add(h.add(d.add(a)));const x=new at(u.x,u.y);c=r.multiply(3),h=o.multiply(-6),d=i.multiply(3),u=c.add(h.add(d));const v=new at(u.x,u.y);c=r.multiply(-3),h=o.multiply(3),d=c.add(h);const C=new at(d.x,d.y),E=new at(r.x,r.y);c=f.x*y.y-y.x*f.y,h=f.x*w.y-w.x*f.y;const k=f.x*b.y-b.x*f.y+E.x*f.y-f.x*E.y,I=C.x*f.y-f.x*C.y,V=v.x*f.y-f.x*v.y,U=x.x*f.y-f.x*x.y;u=f.x*w.y-w.x*f.y;const J=f.x*b.y+y.x*w.y-w.x*y.y-b.x*f.y+E.x*f.y-f.x*E.y,j=C.x*f.y-f.x*C.y,st=v.x*f.y-f.x*v.y,tt=x.x*f.y-f.x*x.y,it=y.x*b.y-b.x*y.y+E.x*y.y-y.x*E.y,ht=C.x*y.y-y.x*C.y,xt=v.x*y.y-y.x*v.y,mt=x.x*y.y-y.x*x.y,ut=f.x*b.y-b.x*f.y+E.x*f.y-f.x*E.y,ot=C.x*f.y-f.x*C.y,q=v.x*f.y-f.x*v.y,B=x.x*f.y-f.x*x.y,H=y.x*b.y-b.x*y.y+E.x*y.y-y.x*E.y,z=C.x*y.y-y.x*C.y,X=v.x*y.y-y.x*v.y,Ft=x.x*y.y-y.x*x.y,ye=w.x*b.y-b.x*w.y+E.x*w.y-w.x*E.y,Se=C.x*w.y-w.x*C.y,Me=v.x*w.y-w.x*v.y,Te=x.x*w.y-w.x*x.y,Ce=new Dt(-U*tt*B,-U*tt*q-U*st*B-V*tt*B,-U*tt*ot-U*st*q-V*tt*q-U*j*B-V*st*B-I*tt*B,-U*tt*ut-U*st*ot-V*tt*ot-U*j*q-V*st*q-I*tt*q-U*J*B-V*j*B-I*st*B-k*tt*B+h*mt*B+U*u*Ft-c*mt*Ft+c*tt*Te,-U*st*ut-V*tt*ut-U*j*ot-V*st*ot-I*tt*ot-U*J*q-V*j*q-I*st*q-k*tt*q+h*mt*q-V*J*B-I*j*B-k*st*B+h*xt*B+U*u*X-c*mt*X+V*u*Ft-c*xt*Ft+c*tt*Me+c*st*Te,-U*j*ut-V*st*ut-I*tt*ut-U*J*ot-V*j*ot-I*st*ot-k*tt*ot+h*mt*ot-V*J*q-I*j*q-k*st*q+h*xt*q-I*J*B-k*j*B+h*ht*B+U*u*z-c*mt*z+V*u*X-c*xt*X+I*u*Ft-c*ht*Ft+c*tt*Se+c*st*Me+c*j*Te,-U*J*ut-V*j*ut-I*st*ut-k*tt*ut+h*mt*ut-V*J*ot-I*j*ot-k*st*ot+h*xt*ot-I*J*q-k*j*q+h*ht*q-k*J*B+h*it*B+U*u*H-c*mt*H+V*u*z-c*xt*z+I*u*X-c*ht*X+k*u*Ft-c*it*Ft+c*tt*ye+c*st*Se+c*j*Me-h*u*Te+c*J*Te,-V*J*ut-I*j*ut-k*st*ut+h*xt*ut-I*J*ot-k*j*ot+h*ht*ot-k*J*q+h*it*q+V*u*H-c*xt*H+I*u*z-c*ht*z+k*u*X-c*it*X+c*st*ye+c*j*Se-h*u*Me+c*J*Me,-I*J*ut-k*j*ut+h*ht*ut-k*J*ot+h*it*ot+I*u*H-c*ht*H+k*u*z-c*it*z+c*j*ye-h*u*Se+c*J*Se,-k*J*ut+h*it*ut+k*u*H-c*it*H-h*u*ye+c*J*ye);Ce.simplifyEquals();const zn=Ce.getRootsInInterval(0,1);for(const Bt of zn){const mn=new Dt(f.x,y.x,w.x,b.x-E.x-Bt*C.x-Bt*Bt*v.x-Bt*Bt*Bt*x.x);mn.simplifyEquals();const Le=mn.getRoots(),Ae=new Dt(f.y,y.y,w.y,b.y-E.y-Bt*C.y-Bt*Bt*v.y-Bt*Bt*Bt*x.y);Ae.simplifyEquals();const Re=Ae.getRoots();if(Le.length>0&&Re.length>0){t:for(const tn of Le)if(0<=tn&&tn<=1){for(let ze=0;ze<Re.length;ze++)if(Math.abs(tn-Re[ze])<1e-4){p.points.push(x.multiply(Bt*Bt*Bt).add(v.multiply(Bt*Bt).add(C.multiply(Bt).add(E))));break t}}}}return p.points.length>0&&(p.status="Intersection"),p}static intersectBezier3Circle(e,t,n,s,r,o){return O.intersectBezier3Ellipse(e,t,n,s,r,o,o)}static intersectBezier3Ellipse(e,t,n,s,r,o,i){let a,c,h,d;const u=new O("No Intersection");a=e.multiply(-1),c=t.multiply(3),h=n.multiply(-3),d=a.add(c.add(h.add(s)));const p=new at(d.x,d.y);a=e.multiply(3),c=t.multiply(-6),h=n.multiply(3),d=a.add(c.add(h));const f=new at(d.x,d.y);a=e.multiply(-3),c=t.multiply(3),h=a.add(c);const y=new at(h.x,h.y),w=new at(e.x,e.y),b=o*o,x=i*i,C=new Dt(p.x*p.x*x+p.y*p.y*b,2*(p.x*f.x*x+p.y*f.y*b),2*(p.x*y.x*x+p.y*y.y*b)+f.x*f.x*x+f.y*f.y*b,2*p.x*x*(w.x-r.x)+2*p.y*b*(w.y-r.y)+2*(f.x*y.x*x+f.y*y.y*b),2*f.x*x*(w.x-r.x)+2*f.y*b*(w.y-r.y)+y.x*y.x*x+y.y*y.y*b,2*y.x*x*(w.x-r.x)+2*y.y*b*(w.y-r.y),w.x*w.x*x-2*w.y*r.y*b-2*w.x*r.x*x+w.y*w.y*b+r.x*r.x*x+r.y*r.y*b-b*x).getRootsInInterval(0,1);for(const E of C)u.points.push(p.multiply(E*E*E).add(f.multiply(E*E).add(y.multiply(E).add(w))));return u.points.length>0&&(u.status="Intersection"),u}static intersectBezier3Line(e,t,n,s,r,o){let i,a,c,h;const d=r.min(o),u=r.max(o),p=new O("No Intersection");i=e.multiply(-1),a=t.multiply(3),c=n.multiply(-3),h=i.add(a.add(c.add(s)));const f=new qt(h.x,h.y);i=e.multiply(3),a=t.multiply(-6),c=n.multiply(3),h=i.add(a.add(c));const y=new qt(h.x,h.y);i=e.multiply(-3),a=t.multiply(3),c=i.add(a);const w=new qt(c.x,c.y),b=new qt(e.x,e.y),x=new qt(r.y-o.y,o.x-r.x),v=r.x*o.y-o.x*r.y,C=new Dt(x.dot(f),x.dot(y),x.dot(w),x.dot(b)+v).getRoots();for(const E of C)if(0<=E&&E<=1){const k=e.lerp(t,E),I=t.lerp(n,E),V=n.lerp(s,E),U=k.lerp(I,E),J=I.lerp(V,E),j=U.lerp(J,E);r.x===o.x?d.y<=j.y&&j.y<=u.y&&(p.status="Intersection",p.appendPoint(j)):r.y===o.y?d.x<=j.x&&j.x<=u.x&&(p.status="Intersection",p.appendPoint(j)):d.x<=j.x&&j.x<=u.x&&d.y<=j.y&&j.y<=u.y&&(p.status="Intersection",p.appendPoint(j))}return p}static intersectBezier3Polygon(e,t,n,s,r){return O.intersectBezier3Polyline(e,t,n,s,Ke(r))}static intersectBezier3Polyline(e,t,n,s,r){const o=new O("No Intersection"),{length:i}=r;for(let a=0;a<i-1;a++){const c=r[a],h=r[a+1],d=O.intersectBezier3Line(e,t,n,s,c,h);o.appendPoints(d.points)}return o.points.length>0&&(o.status="Intersection"),o}static intersectBezier3Rectangle(e,t,n,s,r,o){const i=r.min(o),a=r.max(o),c=new at(a.x,i.y),h=new at(i.x,a.y),d=O.intersectBezier3Line(e,t,n,s,i,c),u=O.intersectBezier3Line(e,t,n,s,c,a),p=O.intersectBezier3Line(e,t,n,s,a,h),f=O.intersectBezier3Line(e,t,n,s,h,i),y=new O("No Intersection");return y.appendPoints(d.points),y.appendPoints(u.points),y.appendPoints(p.points),y.appendPoints(f.points),y.points.length>0&&(y.status="Intersection"),y}static intersectCircleCircle(e,t,n,s){let r;const o=t+s,i=Math.abs(t-s),a=e.distanceFrom(n);if(a>o)r=new O("Outside");else if(a<i)r=new O("Inside");else{r=new O("Intersection");const c=(t*t-s*s+a*a)/(2*a),h=Math.sqrt(t*t-c*c),d=e.lerp(n,c/a),u=h/a;r.points.push(new at(d.x-u*(n.y-e.y),d.y+u*(n.x-e.x))),r.points.push(new at(d.x+u*(n.y-e.y),d.y-u*(n.x-e.x)))}return r}static intersectCircleEllipse(e,t,n,s,r){return O.intersectEllipseEllipse(e,t,t,n,s,r)}static intersectCircleLine(e,t,n,s){let r;const o=(s.x-n.x)*(s.x-n.x)+(s.y-n.y)*(s.y-n.y),i=2*((s.x-n.x)*(n.x-e.x)+(s.y-n.y)*(n.y-e.y)),a=e.x*e.x+e.y*e.y+n.x*n.x+n.y*n.y-2*(e.x*n.x+e.y*n.y)-t*t,c=i*i-4*o*a;if(c<0)r=new O("Outside");else if(c===0)r=new O("Tangent");else{const h=Math.sqrt(c),d=(-i+h)/(2*o),u=(-i-h)/(2*o);(d<0||d>1)&&(u<0||u>1)?d<0&&u<0||d>1&&u>1?r=new O("Outside"):r=new O("Inside"):(r=new O("Intersection"),0<=d&&d<=1&&r.points.push(n.lerp(s,d)),0<=u&&u<=1&&r.points.push(n.lerp(s,u)))}return r}static intersectCirclePolygon(e,t,n){return O.intersectCirclePolyline(e,t,Ke(n))}static intersectCirclePolyline(e,t,n){const s=new O("No Intersection"),{length:r}=n;let o;for(let i=0;i<r-1;i++){const a=n[i],c=n[i+1];o=O.intersectCircleLine(e,t,a,c),s.appendPoints(o.points)}return s.points.length>0?s.status="Intersection":s.status=o.status,s}static intersectCircleRectangle(e,t,n,s){const r=n.min(s),o=n.max(s),i=new at(o.x,r.y),a=new at(r.x,o.y),c=O.intersectCircleLine(e,t,r,i),h=O.intersectCircleLine(e,t,i,o),d=O.intersectCircleLine(e,t,o,a),u=O.intersectCircleLine(e,t,a,r),p=new O("No Intersection");return p.appendPoints(c.points),p.appendPoints(h.points),p.appendPoints(d.points),p.appendPoints(u.points),p.points.length>0?p.status="Intersection":p.status=c.status,p}static intersectEllipseEllipse(e,t,n,s,r,o){const i=[n*n,0,t*t,-2*n*n*e.x,-2*t*t*e.y,n*n*e.x*e.x+t*t*e.y*e.y-t*t*n*n],a=[o*o,0,r*r,-2*o*o*s.x,-2*r*r*s.y,o*o*s.x*s.x+r*r*s.y*s.y-r*r*o*o],h=dh(i,a).getRoots(),d=.001,u=(i[0]*i[0]+2*i[1]*i[1]+i[2]*i[2])*d,p=(a[0]*a[0]+2*a[1]*a[1]+a[2]*a[2])*d,f=new O("No Intersection");for(let y=0;y<h.length;y++){const b=new Dt(i[0],i[3]+h[y]*i[1],i[5]+h[y]*(i[4]+h[y]*i[2])).getRoots();for(let x=0;x<b.length;x++){let v=(i[0]*b[x]+i[1]*h[y]+i[3])*b[x]+(i[2]*h[y]+i[4])*h[y]+i[5];Math.abs(v)<u&&(v=(a[0]*b[x]+a[1]*h[y]+a[3])*b[x]+(a[2]*h[y]+a[4])*h[y]+a[5],Math.abs(v)<p&&f.appendPoint(new at(b[x],h[y])))}}return f.points.length>0&&(f.status="Intersection"),f}static intersectEllipseLine(e,t,n,s,r){let o;const i=new qt(s.x,s.y),a=qt.fromPoints(s,r),c=new qt(e.x,e.y),h=i.subtract(c),d=new qt(a.x/(t*t),a.y/(n*n)),u=new qt(h.x/(t*t),h.y/(n*n)),p=a.dot(d),f=a.dot(u);e=h.dot(u)-1;const y=f*f-p*e;if(y<0)o=new O("Outside");else if(y>0){const w=Math.sqrt(y),b=(-f-w)/p,x=(-f+w)/p;(b<0||1<b)&&(x<0||1<x)?b<0&&x<0||b>1&&x>1?o=new O("Outside"):o=new O("Inside"):(o=new O("Intersection"),0<=b&&b<=1&&o.appendPoint(s.lerp(r,b)),0<=x&&x<=1&&o.appendPoint(s.lerp(r,x)))}else{const w=-f/p;0<=w&&w<=1?(o=new O("Intersection"),o.appendPoint(s.lerp(r,w))):o=new O("Outside")}return o}static intersectEllipsePolygon(e,t,n,s){return O.intersectEllipsePolyline(e,t,n,Ke(s))}static intersectEllipsePolyline(e,t,n,s){const r=new O("No Intersection"),{length:o}=s;for(let i=0;i<o-1;i++){const a=s[i],c=s[i+1],h=O.intersectEllipseLine(e,t,n,a,c);r.appendPoints(h.points)}return r.points.length>0&&(r.status="Intersection"),r}static intersectEllipseRectangle(e,t,n,s,r){const o=s.min(r),i=s.max(r),a=new at(i.x,o.y),c=new at(o.x,i.y),h=O.intersectEllipseLine(e,t,n,o,a),d=O.intersectEllipseLine(e,t,n,a,i),u=O.intersectEllipseLine(e,t,n,i,c),p=O.intersectEllipseLine(e,t,n,c,o),f=new O("No Intersection");return f.appendPoints(h.points),f.appendPoints(d.points),f.appendPoints(u.points),f.appendPoints(p.points),f.points.length>0&&(f.status="Intersection"),f}static intersectLineLine(e,t,n,s){let r;const o=(s.x-n.x)*(e.y-n.y)-(s.y-n.y)*(e.x-n.x),i=(t.x-e.x)*(e.y-n.y)-(t.y-e.y)*(e.x-n.x),a=(s.y-n.y)*(t.x-e.x)-(s.x-n.x)*(t.y-e.y);if(a!==0){const c=o/a,h=i/a;0<=c&&c<=1&&0<=h&&h<=1?(r=new O("Intersection"),r.points.push(new at(e.x+c*(t.x-e.x),e.y+c*(t.y-e.y)))):r=new O("No Intersection")}else o===0||i===0?r=new O("Coincident"):r=new O("Parallel");return r}static intersectLinePolygon(e,t,n){return O.intersectLinePolyline(e,t,Ke(n))}static intersectLinePolyline(e,t,n){const s=new O("No Intersection"),{length:r}=n;for(let o=0;o<r-1;o++){const i=n[o],a=n[o+1],c=O.intersectLineLine(e,t,i,a);s.appendPoints(c.points)}return s.points.length>0&&(s.status="Intersection"),s}static intersectLineRectangle(e,t,n,s){const r=n.min(s),o=n.max(s),i=new at(o.x,r.y),a=new at(r.x,o.y),c=O.intersectLineLine(r,i,e,t),h=O.intersectLineLine(i,o,e,t),d=O.intersectLineLine(o,a,e,t),u=O.intersectLineLine(a,r,e,t),p=new O("No Intersection");return p.appendPoints(c.points),p.appendPoints(h.points),p.appendPoints(d.points),p.appendPoints(u.points),p.points.length>0&&(p.status="Intersection"),p}static intersectPolygonPolygon(e,t){return O.intersectPolylinePolyline(Ke(e),Ke(t))}static intersectPolygonPolyline(e,t){return O.intersectPolylinePolyline(Ke(e),t)}static intersectPolygonRectangle(e,t,n){return O.intersectPolylineRectangle(Ke(e),t,n)}static intersectPolylinePolyline(e,t){const n=new O("No Intersection"),{length:s}=e;for(let r=0;r<s-1;r++){const o=e[r],i=e[r+1],a=O.intersectLinePolyline(o,i,t);n.appendPoints(a.points)}return n.points.length>0&&(n.status="Intersection"),n}static intersectPolylineRectangle(e,t,n){const s=t.min(n),r=t.max(n),o=new at(r.x,s.y),i=new at(s.x,r.y),a=O.intersectLinePolyline(s,o,e),c=O.intersectLinePolyline(o,r,e),h=O.intersectLinePolyline(r,i,e),d=O.intersectLinePolyline(i,s,e),u=new O("No Intersection");return u.appendPoints(a.points),u.appendPoints(c.points),u.appendPoints(h.points),u.appendPoints(d.points),u.points.length>0&&(u.status="Intersection"),u}static intersectRectangleRectangle(e,t,n,s){const r=e.min(t),o=e.max(t),i=new at(o.x,r.y),a=new at(r.x,o.y),c=O.intersectLineRectangle(r,i,n,s),h=O.intersectLineRectangle(i,o,n,s),d=O.intersectLineRectangle(o,a,n,s),u=O.intersectLineRectangle(a,r,n,s),p=new O("No Intersection");return p.appendPoints(c.points),p.appendPoints(h.points),p.appendPoints(d.points),p.appendPoints(u.points),p.points.length>0&&(p.status="Intersection"),p}static intersectRayRay(e,t,n,s){let r;const o=(s.x-n.x)*(e.y-n.y)-(s.y-n.y)*(e.x-n.x),i=(t.x-e.x)*(e.y-n.y)-(t.y-e.y)*(e.x-n.x),a=(s.y-n.y)*(t.x-e.x)-(s.x-n.x)*(t.y-e.y);if(a!==0){const c=o/a;r=new O("Intersection"),r.points.push(new at(e.x+c*(t.x-e.x),e.y+c*(t.y-e.y)))}else o===0||i===0?r=new O("Coincident"):r=new O("Parallel");return r}appendPoint(e){this.points.push(e)}appendPoints(e){this.points=this.points.concat(e)}}class _n extends Sn{constructor(){super(...arguments);g(this,"imgBitmap",null);g(this,"fallbackDrawer",new ih);g(this,"broken",!1)}setBroken(t=!0){this.broken=t}setImageBitmap(t){this.imgBitmap=t}get borderProps(){return this.props.get(R.Border)}get cropProps(){return this.props.get(R.Crop)}updateProps(t){super.updateProps(t),t.find(s=>s.type===R.Base)&&this.updateTransformMatrix()}drawOnGLCtx(t){if(!this.imgBitmap){this.broken&&this.fallbackDrawer.fallbackDraw(this,t);return}t.save();const{a:n,b:s,c:r,d:o,e:i,f:a}=this.globalTransform();t.transform(n,s,r,o,i,a),this.clipDrawImage(t,this.imgBitmap),this.clipDrawBorder(t),t.restore()}clipDrawBorder(t){const n=this.borderProps,s=this.cropProps,r=this.baseProps;if(n.color!==""&&n.dashType!==Ee.None){if(T.setDashLine(n,t),t.strokeStyle=n.color,t.lineWidth=n.width,t.globalAlpha=n.alpha,s.cropType===de.Circle){const o=.5*Math.min(r.width,r.height);t.beginPath(),t.arc(.5*r.width,.5*r.height,o,0,2*Math.PI),t.stroke();return}if(s.cropType===de.RoundRect){t.beginPath(),t.roundRect(0,0,r.width,r.height,10),t.stroke();return}t.strokeRect(0,0,r.width,r.height)}}clipDrawImage(t,n){const s=this.cropProps,r=this.baseProps;if(s.cropType===de.None)t.drawImage(n,0,0,r.width,r.height);else{if(t.save(),s.cropType===de.RoundRect&&(t.beginPath(),t.roundRect(0,0,r.width,r.height,10),t.clip()),s.cropType===de.Circle){const b=.5*Math.min(r.width,r.height);t.beginPath(),t.arc(.5*r.width,.5*r.height,b,0,2*Math.PI),t.clip()}const{imgX:o,imgY:i,imgWidth:a,imgHeight:c}=s.cropInfo,h=this.getImgSize(),d=a/h.imgWidth,u=c/h.imgHeight,p=-o/d,f=-i/u,y=r.width/d,w=r.height/u;t.drawImage(n,p,f,y,w,0,0,r.width,r.height),t.restore()}}getImgSize(){if(!this.imgBitmap){console.warn("img bitmap不存在,已经降级处理");const{width:s,height:r}=this.baseProps;return{imgWidth:s,imgHeight:r}}const t=this.imgBitmap.width,n=this.imgBitmap.height;return{imgWidth:t,imgHeight:n}}getOriginImageRect(){const{cropType:t,cropInfo:n}=this.cropProps;if(t===de.None||!n){const a=this.baseProps;return new D(0,0,a.width,a.height)}const{imgX:s,imgY:r,imgWidth:o,imgHeight:i}=n;return new D(s,r,o,i)}getTextContentRect(){return this.baseProps}getConnectAnchor(){return[new m(.5,0),new m(1,.5),new m(.5,1),new m(0,.5)]}borderContains(t,n){const s=this.toLocal(t),{width:r,height:o}=this.baseProps,i=K.rectangle({top:0,left:0,width:r,height:o}),a=K.line({x:s.x-n,y:s.y},{x:s.x+n,y:s.y}),c=K.line({x:s.x,y:s.y-n},{x:s.x,y:s.y+n});for(const h of[a,c]){const d=O.intersect(i,h);if(d.points.length>0)return d.points[0]}return null}}class ys extends _n{constructor(t,n){super(t,n);g(this,"type",A.IMG);this.props.set(R.Base,new gt),this.props.set(R.Border,new Ot),this.props.set(R.Image,new ps),this.props.set(R.Crop,new Mn)}get imgSrc(){return this.getProp(R.Image).url}static load(t,n,s,r,o,i){const a=new ys(t,i);return a.type=n,a.zIndex=s,a.setParent(o),a.updateProps(r),a}}class fh{draw(e,t){const n=e.getDrawPoints();if(n.length<2){console.error("line has no point!");return}const s=n[0],r=n.length>1?n[n.length-1]:{...s};t.beginPath(),t.moveTo(s.x,s.y),t.lineTo(r.x,r.y),t.stroke()}textContentBounds(e){const t=e.baseProps;return{x:t.x,y:t.y,width:t.width,height:t.height}}borderContains(e,t,n){return null}getConnectAnchor(){return[]}}var Lt=(l=>(l[l.Line=0]="Line",l[l.PolyLine=1]="PolyLine",l[l.RoundPolyLine=2]="RoundPolyLine",l[l.Curve=3]="Curve",l))(Lt||{});class Ai{static lineContainsPoint(e,t,n){const s=e.shapeType,r=[...e.points];return s===Lt.Line?this.simpleLineContains(r,t,n):e.isPolyLine()?this.polyLineContains(r,t,n):s===Lt.Curve?this.curveLineContains(r,t,n):!1}static overlapRectNode(e,t){const n=e.shapeType,s=[...e.points],r=K.rectangle({top:t.minY,left:t.minX,width:t.maxX-t.minX,height:t.maxY-t.minY});if(n===Lt.Line){const o=K.line(s[0],s[s.length-1]);if(O.intersect(r,o).points.length>0)return!0}if(e.isPolyLine()){const o=K.polyline(s);if(O.intersect(r,o).points.length>0)return!0}if(n===Lt.Curve)for(let o=0;o<s.length-2;o=o+3){const i=s[o],a=s[o+1],c=s[o+2],h=s[o+3],d=K.cubicBezier(i,a,c,h);if(O.intersect(r,d).points.length>0)return!0}return!1}static curveLineContains(e,t,n){for(let s=0;s<e.length-2;s=s+3){const r=e[s],o=e[s+1],i=e[s+2],a=e[s+3],c=K.cubicBezier(r,o,i,a),h=K.circle(t,n);if(O.intersect(h,c).points.length>0)return!0}return!1}static polyLineContains(e,t,n){const s=K.polyline(e),r=K.circle(t,n);return O.intersect(r,s).points.length>0}static simpleLineContains(e,t,n){const s=K.line(e[0],e[e.length-1]),r=K.circle(t,n);return O.intersect(r,s).points.length>0}}class gh{constructor(){g(this,"radius",8)}draw(e,t){const n=e.getDrawPoints();if(n.length<2)return;t.save(),t.beginPath();const s=n[0];t.moveTo(s.x,s.y);for(const r of n)t.lineTo(r.x,r.y);t.stroke(),t.restore()}textContentBounds(e){const t=e.baseProps;return new D(t.x,t.y,t.width,t.height)}borderContains(e,t,n){return null}getConnectAnchor(){return[]}}class yh{draw(e,t){const n=e.getDrawPoints();if(!(n.length<3)){t.save(),t.beginPath();for(let s=1;s<n.length-2;s=s+3){const r=n[s-1],o=n[s],i=n[s+1],a=n[s+2];t.moveTo(r.x,r.y),t.bezierCurveTo(o.x,o.y,i.x,i.y,a.x,a.y)}t.stroke(),t.restore()}}textContentBounds(e){const t=e.baseProps;return{x:t.x,y:t.y,width:t.width,height:t.height}}borderContains(e,t,n){return null}getConnectAnchor(){return[]}}class mh{constructor(){g(this,"radius",8)}draw(e,t){const n=e.getDrawPoints();n.length<2||(t.save(),t.beginPath(),e.points.length===2?(t.moveTo(n[0].x,n[0].y),t.lineTo(n[1].x,n[1].y),t.stroke()):this.acrPolyDraw(t,n),t.restore())}textContentBounds(e){const t=e.baseProps;return new D(t.x,t.y,t.width,t.height)}acrPolyDraw(e,t){const n=t[t.length-1],s=this.dealArcPoly(t);for(const r of s)e.moveTo(r.p0.x,r.p0.y),e.lineTo(r.p1.x,r.p1.y),e.arcTo(r.arcDraw.a.x,r.arcDraw.a.y,r.arcDraw.b.x,r.arcDraw.b.y,r.arcDraw.r);e.lineTo(n.x,n.y),e.stroke()}dealArcPoly(e){const t=[];let n=e[0];for(let s=0;s<e.length-2;s=s+1){const r=n,o=e[s+1],i=e[s+2];if(T.judgeHorizon(r,o)){const c=.5*Math.abs(r.x-o.x),h=.5*Math.abs(o.y-i.y),d=c>h?h:c,u=this.radius<d?this.radius:d,p=u,f=o.x>r.x?1:-1,y=i.y>o.y?1:-1;n=new m(o.x,o.y+y*p);const w={p0:r,p1:new m(o.x-f*p,o.y),arcDraw:{a:o,b:n,r:u}};t.push(w)}else{const c=.5*Math.abs(r.y-o.y),h=.5*Math.abs(o.x-i.x),d=c>h?h:c,u=this.radius<d?this.radius:d,p=u,f=o.y>r.y?1:-1,y=i.x>o.x?1:-1;n=new m(o.x+y*p,o.y);const w={p0:r,p1:new m(o.x,o.y-f*p),arcDraw:{a:o,b:n,r:u}};t.push(w)}}return t}borderContains(e,t,n){return null}getConnectAnchor(){return[]}}class Ht{constructor(e,t,n){g(this,"paragraphIndex");g(this,"lineIndex");g(this,"charIndex");this.paragraphIndex=e,this.lineIndex=t,this.charIndex=n}static head(){return new Ht(0,0,-1)}clone(){return new Ht(this.paragraphIndex,this.lineIndex,this.charIndex)}equal(e){return this.paragraphIndex===e.paragraphIndex&&this.lineIndex===e.lineIndex&&this.charIndex===e.charIndex}greaterThan(e){return this.paragraphIndex>e.paragraphIndex?!0:this.paragraphIndex<e.paragraphIndex?!1:this.lineIndex>e.lineIndex?!0:this.lineIndex<e.lineIndex?!1:this.charIndex>e.charIndex?!0:!(this.charIndex<e.charIndex)}}class Vr{constructor(){g(this,"lines",[]);g(this,"index",0);g(this,"x",0);g(this,"y",0);g(this,"width",0);g(this,"height",0)}addLine(e){e.y=this.height,e.index=this.lines.length,this.lines.push(e),this.width=Math.max(e.width,this.width),this.height=this.height+e.height}contains(e){return T.rectContains2(e,{minX:this.x,maxX:this.x+this.width,minY:this.y,maxY:this.y+this.height})}headCursorPosition(){return new Ht(this.index,0,-1)}tailCursorPosition(){if(this.lines.length===0)return new Ht(this.index,-1,-1);const e=this.lines.length-1,t=this.lines[e];return t.characters.length===0?new Ht(this.index,e,-1):new Ht(this.index,e,t.characters.length-1)}detect(e){const{x:t,y:n}=e;if(n<0||t<0||n>this.height||this.lines.length===0)return null;for(let s=0;s<this.lines.length;s++){const r=this.lines[s];if(n>=r.y&&n<r.y+r.height){const o=new m(e.x-r.x,e.y-r.y),i=r.detect(o);return{lineIndex:r.index,charIndex:i}}}return null}getLine(e){return e<0||this.lines.length===0?null:e>this.lines.length-1?(console.warn("index 超出该段最大数目,fall back处理"),this.lines[this.lines.length-1]):this.lines[e]}draw(e,t){for(const n of this.lines){const s=new m(t.x+this.x,t.y+this.y);n.draw(e,s)}}alignHorizon(e,t){for(const n of this.lines)e===xe.Bottom&&(n.x=t-n.width),e===xe.Middle&&(n.x=.5*t-.5*n.width)}toString(){let e="";for(const t of this.lines)e+=t.toString();return e+`
|
|
3
|
+
`}}class Ri{constructor(){g(this,"segmentWorker",new Intl.Segmenter("en",{granularity:"word"}))}split(e){return Array.from(this.segmentWorker.segment(e)).map(n=>n.segment)}}class Ni{constructor(){g(this,"characters",[]);g(this,"width",0)}addCharacter(e){this.characters.push(e),this.width=this.width+e.width}}class Ei{constructor(e,t,n,s,r,o){g(this,"charText");g(this,"index",0);g(this,"x");g(this,"y");g(this,"width");g(this,"height");g(this,"boxAscent");this.charText=e,this.x=t,this.y=n,this.width=s,this.height=r,this.boxAscent=o}contains(e){return T.rectContains2(e,{minX:this.x,maxX:this.x+this.width,minY:this.y,maxY:this.y+this.height})}toString(){return this.charText}}class Ii{measure(e,t,n){const s=[];e.font=T.calcFontByTextProps(n);for(const r of t){const o=new Ni;for(const i of[...r]){const{width:a,height:c,boxAscent:h}=T.measureText(e,i),d=new Ei(i,0,0,a,c,h);o.addCharacter(d)}s.push(o)}return s}}class ms{constructor(e){g(this,"characters",[]);g(this,"index",0);g(this,"x",0);g(this,"y",0);g(this,"width",0);g(this,"height",0);g(this,"boxAscent",0);g(this,"textProps");this.textProps=e}contains(e){return T.rectContains2(e,{minX:this.x,maxX:this.x+this.width,minY:this.y,maxY:this.y+this.height})}detect(e){const{x:t,y:n}=e;if(n<0||t<0)return-1;if(n>this.height)return this.characters.length-1;if(t>this.width)return this.characters.length-1;if(this.characters.length===0)return-1;for(let s=0;s<this.characters.length;s++){const r=this.characters[s],o=r.x+.5*r.width;if(t<o)return s-1}return this.characters.length-1}addCharacter(e){e.x=this.width,e.index=this.characters.length,this.characters.push(e),this.width=this.width+e.width,this.height=Math.max(this.height,e.height),this.boxAscent=Math.max(e.boxAscent,this.boxAscent)}getCharacter(e){return e<0||this.characters.length===0?null:e>this.characters.length-1?(console.warn("index 超出该行最大字符数目,fall back处理"),this.characters[this.characters.length-1]):this.characters[e]}draw(e,t){const{fontBgColor:n,underline:s,strikethrough:r,fontColor:o}=this.textProps,i=t.x+this.x,a=t.y+this.y+this.boxAscent;n&&(e.save(),e.fillStyle=n,e.fillRect(i,a-this.boxAscent,this.width,this.height),e.restore()),e.fillText(this.toString(),i,a),s&&(e.strokeStyle=o,e.lineWidth=1,e.beginPath(),e.moveTo(i,a),e.lineTo(i+this.width,a),e.stroke()),r&&(e.strokeStyle=o,e.lineWidth=1,e.beginPath(),e.moveTo(i,a-.4*this.boxAscent),e.lineTo(i+this.width,a-.4*this.boxAscent),e.stroke())}toString(){let e="";for(const t of this.characters)e+=t.toString();return e}}class Wr{constructor(){g(this,"paragraphs",[]);g(this,"x",0);g(this,"y",0);g(this,"width",0);g(this,"height",0);g(this,"textProps",new se);g(this,"rect",new D);g(this,"splitWorker",new Ri);g(this,"measureWorker",new Ii)}draw(e,t){const{fontSize:n,fontFamily:s,fontColor:r,bold:o,italic:i}=this.textProps,a=T.calcFont(n,s,o,i);e.save(),e.textAlign="left",e.textBaseline="alphabetic",e.font=a,e.fillStyle=r,e.globalAlpha=1;for(const c of this.paragraphs){const h=new m(t.x+this.x,t.y+this.y);c.draw(e,h)}e.restore()}contains(e){return T.rectContains2(e,{minX:this.rect.x,maxX:this.rect.x+this.rect.width,minY:this.rect.y,maxY:this.rect.y+this.rect.height})}detect(e){let{x:t,y:n}=e;if(this.paragraphs.length===0)return new Ht(-1,-1,-1);if(n<this.y)return this.headTextCursorPosition();if(t<this.x)return this.headTextCursorPosition();if(n>this.y+this.height)return this.tailTextCursorPosition();if(t>this.x+this.rect.width)return this.tailTextCursorPosition();t=t-this.x,n=n-this.y;for(const s of this.paragraphs){const r=new m(t-s.x,n-s.y),o=s.detect(r);if(o)return new Ht(s.index,o.lineIndex,o.charIndex)}return this.tailTextCursorPosition()}headTextCursorPosition(){return Ht.head()}tailTextCursorPosition(){const e=this.paragraphs[this.paragraphs.length-1],t=e.lines[e.lines.length-1],n=t.characters.length===0?-1:t.characters.length-1;return new Ht(e.index,t.index,n)}addParagraph(e){e.y=this.height,e.index=this.paragraphs.length,this.paragraphs.push(e),this.width=Math.max(e.width,this.width),this.height=this.height+e.height}getParagraph(e){return e<0||this.paragraphs.length===0?null:e>this.paragraphs.length-1?(console.warn("index 超出该文本最大段落数目,fall back处理"),this.paragraphs[this.paragraphs.length-1]):this.paragraphs[e]}getPosByCursorPosition(e){const t=this.textProps,n=new m(this.x,this.y),{charIndex:s,lineIndex:r,paragraphIndex:o}=e,i=this.getParagraph(o);if(i===null)return{relativePos:n,height:t.fontSize};n.x+=i.x,n.y+=i.y;const a=i.getLine(r);if(a===null)return{relativePos:n,height:t.fontSize};n.x+=a.x,n.y+=a.y;const c=a.getCharacter(s);return c===null?{relativePos:n,height:a.height}:(n.x+=c.x+c.width,n.y+=c.y,{relativePos:n,height:c.height})}reset(){this.paragraphs=[],this.x=0,this.y=0,this.width=0,this.height=0}typesetting(e,t=this.textProps,n){this.reset(),this.rect=n,this.x=0,this.y=0,this.textProps=t;const{text:s,sizeMode:r}=t,o=r===le.autoWidth,i=s.split(`
|
|
4
|
+
`);for(const a of i){const c=this.typesettingParagraph(e,a,n.width,o);this.addParagraph(c)}this.alignVertical(n),this.alignHorizon(n)}typesettingParagraph(e,t,n,s){if(t===""){const c=new Vr,h=new ms(this.textProps),{fontSize:d,fontFamily:u,bold:p,italic:f}=this.textProps,{height:y}=T.measureTextByFont(e,"1",d,u,p,f);return h.height=y,c.addLine(h),c}const r=this.splitWorker.split(t),o=this.measureWorker.measure(e,r,this.textProps),i=new Vr;let a=new ms(this.textProps);for(const c of o)if(s)c.characters.forEach(h=>a.addCharacter(h));else if(a.width+c.width<n)c.characters.forEach(h=>a.addCharacter(h));else if(c.width>n)for(const h of c.characters)a.width+h.width<n||(i.addLine(a),a=new ms(this.textProps)),a.addCharacter(h);else i.addLine(a),a=new ms(this.textProps),c.characters.forEach(h=>a.addCharacter(h));return i.addLine(a),i}alignVertical(e){const t=this.textProps.verticalAlign;if(t===xe.Top){this.y=e.y;return}if(t===xe.Bottom){this.y=e.y+e.height-this.height;return}if(t===xe.Middle){this.y=e.y+.5*e.height-.5*this.height;return}}alignHorizon(e){this.x=this.rect.x;const t=this.textProps.horizonAlign;for(const n of this.paragraphs)n.alignHorizon(t,e.width)}modifyPosInEditing(e,t){const n=new m;let s=!1;const{relativePos:r,height:o}=this.getPosByCursorPosition(t);return r.x<e.x&&(n.x=e.x-r.x,s=!0),r.x>e.x+e.width&&(n.x=-(r.x-(e.x+e.width)),s=!0),r.y<e.y&&(n.y=e.y-r.y,s=!0),r.y+o>e.y+e.height&&(n.y=-(r.y+o-(e.y+e.height)),s=!0),s&&(this.x+=n.x,this.y+=n.y),s}resetFromEditing(e){this.alignVertical(e),this.x=e.x}isEmptyText(){return this.textProps.text===""}}const wh="pingfang",Wt=5,xh=2,Ph=5,bh=50,vh="main_text_id",Mh=14,Sh=10;class ki{checkValid(e,t){const{paragraphIndex:n,lineIndex:s,charIndex:r}=t;if(n<0||s<0||r<-1||n>e.paragraphs.length-1)return console.warn("警告,光标位置异常,",t),null;const o=e.paragraphs[n];if(s>o.lines.length-1)return console.warn("警告,光标位置异常,",t),null;const i=o.lines[s];return r>i.characters.length-1?(console.warn("警告,光标位置异常,",t),null):{paragraph:o,line:i}}moveRight(e,t){const{paragraphIndex:n,lineIndex:s,charIndex:r}=t,o=this.checkValid(e,t);if(!o)return t;const{paragraph:i,line:a}=o;return t.equal(e.tailTextCursorPosition())?t:s===i.lines.length-1&&r===a.characters.length-1?new Ht(n+1,0,-1):r===a.characters.length-1?new Ht(n,s+1,-1):new Ht(n,s,r+1)}moveLeft(e,t){const{paragraphIndex:n,lineIndex:s,charIndex:r}=t,o=this.checkValid(e,t);if(!o)return t;const{paragraph:i,line:a}=o;if(t.equal(e.headTextCursorPosition()))return t;if(s===0&&r===-1)return e.paragraphs[n-1].tailCursorPosition();if(r===-1){const c=i.lines[s-1];return c.characters.length>0?new Ht(n,s-1,c.characters.length-2):new Ht(n,s-1,-1)}return new Ht(n,s,r-1)}moveUp(e,t){const{paragraphIndex:n,lineIndex:s,charIndex:r}=t,o=this.checkValid(e,t);if(!o)return t;const{paragraph:i,line:a}=o;if(n===0&&s===0)return t;const{relativePos:c,height:h}=e.getPosByCursorPosition(t),d=new m(c.x,c.y-1);return e.detect(d)}moveDown(e,t){const{paragraphIndex:n,lineIndex:s,charIndex:r}=t,o=this.checkValid(e,t);if(!o)return t;const{paragraph:i}=o;if(n===e.paragraphs.length-1&&s===i.lines.length-1)return t;const{relativePos:a,height:c}=e.getPosByCursorPosition(t),h=new m(a.x,a.y+c+1);return e.detect(h)}}class on{exec(e,t){const n=e.data;e.reverseLog=this.reverseLog(n,t),this.execData(n,t)}}var zt=(l=>(l[l.Start=0]="Start",l[l.End=1]="End",l[l.AddNode=2]="AddNode",l[l.RemoveNode=3]="RemoveNode",l[l.UpdateNode=4]="UpdateNode",l[l.SelectNode=5]="SelectNode",l[l.TextFocus=6]="TextFocus",l))(zt||{});class Bi{constructor(){g(this,"streaming",!1)}}class an{constructor(e,t){g(this,"meta",new Bi);g(this,"data");g(this,"reverseLog",null);this.data=e,t&&(this.meta=t)}reverse(){if(this.reverseLog===null)throw new Error("缺少对应逆消息");return this.reverseLog}}class Fe extends an{constructor(){super(...arguments);g(this,"type",zt.RemoveNode)}static create(t){return new Fe({idList:t})}clone(){const t=JSON.parse(JSON.stringify(this.data));return new Fe(t,this.meta)}}let Gr=class{},Oi=class extends Gr{handle(e,t,n){const s=t.find(i=>i.type===R.Connect);if(!s)return;const{start:r,end:o}=s;if(r!==void 0)if(r!==null){const i=n.nodeManager.getNode(r.objectId)||null;n.nodeManager.addLink(e,i,!0)}else n.nodeManager.addLink(e,null,!0);if(o!==void 0)if(o!==null){const i=n.nodeManager.getNode(o.objectId)||null;n.nodeManager.addLink(e,i,!1)}else n.nodeManager.addLink(e,null,!1)}};class Th extends Gr{handle(e,t,n){if(!t.find(o=>o.type===R.Image)||e.type!==A.IMG)return;const r=e;n.asyncRenderNodeManager.addRenderNode(r)}}let Ch=class extends Gr{handle(e,t,n){const s=t.find(o=>o.type===R.Svg);if(!s||e.type!==A.SVG)return;const r=e;n.resourceManager.loadSvgUrl(s.url).then(o=>{const i=$n.trimSvgCode(o);r.setSvgCode(i.svgCode),n.asyncRenderNodeManager.addRenderNode(r)}).catch(o=>{console.error("加载图片出现问题",o),r.setBroken(),n.renderManager.dirtyDraw(e.getBounds())})}};class Di extends on{constructor(){super(...arguments);g(this,"type",zt.AddNode);g(this,"handlers",[new Oi,new Th,new Ch])}execData(t,n){const s=t.nodes;for(const r of s)this.execNodeInfo(r,n);n.renderManager.addContentRenderTask()}execNodeInfo(t,n){const s=n.gmlRender.glCtx,r=n.nodeManager.getParentNode(t.parentId),o=Ge.getInstance().create(t.id,t.type,t.zIndex,t.props,r,s);n.nodeManager.addNode(o);for(const i of this.handlers)i.handle(o,t.props,n)}reverseLog(t,n){const s=t.nodes.map(r=>r.id);return new Fe({idList:s})}}class Yt extends an{constructor(){super(...arguments);g(this,"type",zt.AddNode)}static create(t){return new Yt({nodes:[t]})}clone(){const t=JSON.parse(JSON.stringify(this.data));return new Yt(t,this.meta)}}class Hi extends on{constructor(){super(...arguments);g(this,"type",zt.RemoveNode)}execData(t,n){for(const s of t.idList)n.nodeManager.getNode(s)&&n.nodeManager.removeNode(s);n.renderManager.addContentRenderTask(),n.renderManager.addAuxiliaryDrawTask()}reverseLog(t,n){var r;const s=[];for(const o of t.idList){const i=n.nodeManager.getNode(o);if(!i){console.error("错误,生成逆消息时节点不存在:",o);continue}const a=[...i.props.values()];s.push({id:i.id,type:i.type,zIndex:i.zIndex,parentId:((r=i.parent)==null?void 0:r.id)||Un,props:a})}return new Yt({nodes:s})}}class ct extends an{constructor(){super(...arguments);g(this,"type",zt.UpdateNode)}static create(t,n,s){const r={id:t,props:n};return new ct({infos:[r]},s)}clone(){const t=JSON.parse(JSON.stringify(this.data));return new ct(t,this.meta)}}class zi extends on{constructor(){super(...arguments);g(this,"type",zt.UpdateNode);g(this,"handlers",[new Oi])}execData(t,n){for(const s of t.infos)this.execNodeInfo(s,n);n.renderManager.addContentRenderTask()}execNodeInfo(t,n){const{id:s,zIndex:r,props:o,parentId:i}=t,a=n.nodeManager.getNode(s);if(!a){console.error("错误:节点不存在:",s);return}if(this.removeIndexNode(a,n),r!==void 0&&(a.zIndex=r),this.changeParent(a,n,i),o.length>0){a.updateProps(o);for(const c of this.handlers)c.handle(a,o,n)}this.addIndexNode(a,n),n.auxiliaryManager.selectManager.include(a)&&(n.auxiliaryManager.selectManager.refreshSelectStatus(),n.renderManager.addAuxiliaryDrawTask(),n.auxiliaryManager.slotManager.addSlotState(te.FocusPropsChange,!0))}changeParent(t,n,s){if(s===void 0||s===t.parent.id)return;const r=n.nodeManager.getNode(s);r&&(t.parent.children.delete(t),r.children.add(t),t.parent=r)}removeIndexNode(t,n){n.nodeManager.removeIndexNode(t.getRectNode());for(const s of t.children)this.removeIndexNode(s,n)}addIndexNode(t,n){n.nodeManager.addIndexNode(t.getRectNode());for(const s of t.children)this.addIndexNode(s,n)}reverseLog(t,n){const s=[];for(const r of t.infos){const o=n.nodeManager.getNode(r.id);if(!o)continue;const i=o.serializeTo(),a=T.convertCapInfoToProps(i.capInfo);s.push({id:o.id,zIndex:o.zIndex,props:a})}return new ct({infos:s})}}class Pt extends an{constructor(){super(...arguments);g(this,"type",zt.SelectNode)}static create(t){return new Pt({idList:t})}clone(){const t=JSON.parse(JSON.stringify(this.data));return new Pt(t,this.meta)}}class Xi extends on{constructor(){super(...arguments);g(this,"type",zt.SelectNode)}execData(t,n){const s=t.idList,r=new Set;s.forEach(o=>{const i=n.nodeManager.getNode(o);i&&r.add(i)}),n.auxiliaryManager.selectManager.set(r),n.renderManager.addAuxiliaryDrawTask(),n.auxiliaryManager.slotManager.addSlotState(te.FocusPropsChange,!0)}reverseLog(t,n){const r=n.auxiliaryManager.selectManager.getSelectNodes().map(o=>o.id);return new Pt({idList:r})}}class et extends an{constructor(){super(null);g(this,"type",zt.End)}clone(){return new et}}class Yi extends on{constructor(){super(...arguments);g(this,"type",zt.Start)}execData(t,n){}reverseLog(t,n){return new et}}class nt extends an{constructor(){super(null);g(this,"type",zt.Start)}clone(){return new nt}}class Fi extends on{constructor(){super(...arguments);g(this,"type",zt.End)}execData(t,n){}reverseLog(t,n){return new nt}}var be=(l=>(l[l.Focus=0]="Focus",l[l.Selection=1]="Selection",l[l.Blur=2]="Blur",l[l.Empty=3]="Empty",l))(be||{});class lt extends an{constructor(){super(...arguments);g(this,"type",zt.TextFocus)}static focus(t,n=Ht.head()){return new lt({focusType:be.Focus,focus:{id:t,textCursorPosition:n}})}static selection(t,n,s){return new lt({focusType:be.Selection,selection:{id:t,start:n,end:s}})}static blur(t){return new lt({blur:{id:t},focusType:be.Blur})}static empty(){return new lt({focusType:be.Empty})}clone(){const t=JSON.parse(JSON.stringify(this.data));return new lt(t,this.meta)}}class Vi extends on{constructor(){super(...arguments);g(this,"type",zt.TextFocus)}checkValidNode(t,n){const s=n.nodeManager.getNode(t);if(!s)throw new Error("错误:节点不存在:"+t);const r=s.renderText;return{node:s,renderText:r}}execData(t,n){var a;const{focusType:s,blur:r,selection:o,focus:i}=t;if(s===be.Empty){n.auxiliaryManager.remove(N.TextSelection);return}if(n.renderManager.addAuxiliaryDrawTask(),s===be.Focus){n.auxiliaryManager.remove(N.TextSelection);const{id:c,textCursorPosition:h}=i,{node:d,renderText:u}=this.checkValidNode(c,n);d.modifyPosInEditing(h)&&n.renderManager.addContentRenderTask(),n.inputManager.focus({node:d,renderText:u,textCursorPosition:h}),u.isEmptyText()?d.type===A.Shape&&n.auxiliaryManager.addOrUpdate(N.PlaceHolder,{node:d}):n.auxiliaryManager.remove(N.PlaceHolder),n.auxiliaryManager.selectManager.refreshSelectStatus();return}if(s===be.Selection){const{id:c,start:h,end:d}=o,{node:u,renderText:p}=this.checkValidNode(c,n);n.inputManager.selection(u,p,h,d);const f=(a=n.inputManager.selectionManager.selectionInfo)==null?void 0:a.selectionList;f&&(n.auxiliaryManager.addOrUpdate(N.TextSelection,{selectionList:f,node:u}),n.renderManager.addAuxiliaryDrawTask()),n.auxiliaryManager.remove(N.PlaceHolder);return}if(s===be.Blur){n.inputManager.blur(),n.auxiliaryManager.remove(N.PlaceHolder);return}}reverseLog(t,n){const{focusType:s}=t,r=n.inputManager.editTextInfo,o=n.inputManager.selectionManager.selectionInfo;if(s===be.Focus){const i=t.focus.id;return r?o?lt.selection(r.node.id,o.start,o.end):lt.focus(r.node.id,r.textCursorPosition):lt.blur(i)}if(s===be.Blur)return r?o?lt.selection(r.node.id,o.start,o.end):lt.focus(r.node.id,r.textCursorPosition):(console.warn("选中消息不符合预期,已容错处理"),lt.empty());if(s===be.Selection){const i=t.selection.id;return r?o?lt.selection(r.node.id,o.start,o.end):lt.focus(r.node.id,r.textCursorPosition):lt.blur(i)}return lt.empty()}}const Wi=[new Di,new Hi,new zi,new Xi,new Vi,new Yi,new Fi];class Gi{constructor(e){g(this,"executors",new Map);for(const t of e)this.executors.set(t.type,t)}exec(e,t,n=null){const s=this.executors.get(e.type);if(!s){console.error("缺乏对应的消息处理器,已忽略该消息");return}s.exec(e,t)}}class Ui{constructor(){g(this,"undoStack",[]);g(this,"redoStack",[])}add(e){const t=e.reverse();this.undoStack.push(t),this.redoStack=[]}undo(e,t){const n=this.undoStack.pop()||null;if(!n)return null;for(const s of n.actionLogs)e.exec(s,t);return this.redoStack.push(n.reverse()),n}redo(e,t){const n=this.redoStack.pop()||null;if(!n)return null;for(const s of n.actionLogs)e.exec(s,t);return this.undoStack.push(n.reverse()),n}}class Us{constructor(e=[]){g(this,"actionLogs",[]);this.actionLogs=e}reverse(){const e=new Us;for(let t=this.actionLogs.length-1;t>-1;t--){const n=this.actionLogs[t];e.actionLogs.push(n.reverse())}return e}}class _i{constructor(){g(this,"cacheLogs",[]);g(this,"duringGroup",!1)}add(e){e.type===zt.Start&&(this.duringGroup=!0),this.cacheLogs.push(e),e.type===zt.End&&(this.duringGroup=!1)}getActionGroup(){if(this.duringGroup)return null;const e=new Us(this.cacheLogs);return this.cacheLogs=[],e}}const Ki=new Set([zt.Start,zt.End,zt.SelectNode,zt.TextFocus]);class ji{constructor(e,t,n,s,r,o,i,a,c,h,d){g(this,"execCtx");g(this,"executor");g(this,"undoManager");g(this,"networkPlugin",null);g(this,"actionCache");g(this,"renderManager");g(this,"docState");this.executor=new Gi(Wi),this.undoManager=new Ui,this.renderManager=o,this.execCtx={inputManager:t,nodeManager:e,gmlRender:n,auxiliaryManager:s,toolManager:r,renderManager:this.renderManager,resourceManager:i,idGenerator:c,slotManager:h,asyncRenderNodeManager:d},this.actionCache=new _i,this.docState=a}addNetworkPlugin(e){this.networkPlugin=e}execAction(e){var n;this.dealDocSeq(e),this.executor.exec(e,this.execCtx),Ki.has(e.type)||(n=this.networkPlugin)==null||n.addMessage(e),this.actionCache.add(e);const t=this.actionCache.getActionGroup();t&&this.undoManager.add(t)}dealDocSeq(e){Ki.has(e.type)||this.docState.seq++}undo(){var t;const e=this.undoManager.undo(this.executor,this.execCtx);e&&((t=this.networkPlugin)==null||t.addActionGroup(e))}redo(){var t;const e=this.undoManager.redo(this.executor,this.execCtx);e&&((t=this.networkPlugin)==null||t.addActionGroup(e))}}function Lh(l){return l.type===zt.AddNode?{addNodeData:{data:l.data.nodes.map(n=>{const s=n.props,r=new Map;s.forEach(a=>r.set(a.type,a));const o=T.convertPropsToCapInfo(r);return{id:n.id,type:n.type,zIndex:n.zIndex,parentId:n.parentId,capInfo:o}})}}:l.type===zt.UpdateNode?{updateNodeData:{data:l.data.infos.map(n=>{const s=n.props,r=new Map;s.forEach(a=>r.set(a.type,a));const o=T.convertPropsToCapInfo(r);return{id:n.id,zIndex:n.zIndex,parentId:n.parentId,capInfo:o}})}}:l instanceof Fe?{removeNodeData:{data:l.data.idList}}:null}function Ah(l){const{updateNodeData:e,addNodeData:t,removeNodeData:n}=l;if(t){const s=[];for(const r of t.data)s.push({id:r.id,parentId:r.parentId,zIndex:r.zIndex,type:r.type,props:T.convertCapInfoToProps(r.capInfo)});return new Yt({nodes:s})}if(e){const s=[];for(const r of e.data)s.push({id:r.id,zIndex:r.zIndex,parentId:r.parentId,props:T.convertCapInfoToProps(r.capInfo)});return new ct({infos:s})}if(n)return Fe.create(n.data);throw new Error("类型转换错误!")}const Ur=.04,_r=4,qi=70;class Rh{zoomScale(e,t,n,s){const r=n.getScale();let o=e;r*e>_r&&(o=_r/r),r*e<Ur&&(o=Ur/r),this.zoomToScale(o,t,n.gmlRender),this.zoomToScale(o,t,n.auxiliaryManager.gmlRender);const i=n.getScale();if(i!==r)for(const[a,c]of n.nodeManager.nodeMap)c.type===A.SVG&&s.addRenderNode(c);n.slotManager.addSlotState(te.Scale,i),n.addContentRenderTask(),n.addAuxiliaryDrawTask()}zoomToSelect(e,t){if(e.auxiliaryManager.selectManager.getSelectNodes().length===0)return;const s=e.auxiliaryManager.selectManager.getSelectBounds();this.zoomToBounds(s,e,t)}zoomToFit(e,t){if(e.nodeManager.nodeMap.size===0)return;const s=e.nodeManager.getNodeBounds();this.zoomToBounds(s,e,t)}zoomTo100(e,t){if(e.nodeManager.nodeMap.size===0)return;const s=e.getScale(),r=e.nodeManager.getNodeBounds(),o=e.gmlRender.canvas.getBoundingClientRect(),i=window.devicePixelRatio,a=1*i,c=new m(.5*i*o.width,.5*i*o.height),h=new m(.5*(r.minX+r.maxX),.5*(r.minY+r.maxY)),d=new m(-h.x*a+c.x,-h.y*a+c.y);this.zoomToMatrix(a,d.x,d.y,e.gmlRender),this.zoomToMatrix(a,d.x,d.y,e.auxiliaryManager.gmlRender);const u=e.getScale();if(u!==s)for(const[p,f]of e.nodeManager.nodeMap)f.type===A.SVG&&t.addRenderNode(f);e.slotManager.addSlotState(te.Scale,u),e.addContentRenderTask(),e.addAuxiliaryDrawTask()}zoomToBounds(e,t,n){const s=D.rectNode2Rect(e),r=t.getScale(),o=t.gmlRender.canvas.getBoundingClientRect(),i=window.devicePixelRatio,a=o.width-qi*i,c=o.height-qi*2*i,h=a/s.width,d=c/s.height,u=Math.min(h,d)*i,p=new m(.5*i*o.width,.5*i*o.height),f=new m(.5*(e.minX+e.maxX),.5*(e.minY+e.maxY)),y=new m(-f.x*u+p.x,-f.y*u+p.y);this.zoomToMatrix(u,y.x,y.y,t.gmlRender),this.zoomToMatrix(u,y.x,y.y,t.auxiliaryManager.gmlRender);const w=t.getScale();if(w!==r)for(const[b,x]of t.nodeManager.nodeMap)x.type===A.SVG&&n.addRenderNode(x);t.slotManager.addSlotState(te.Scale,w),t.addContentRenderTask(),t.addAuxiliaryDrawTask()}zoomToScale(e,t,n){n.scale(e,e,t);const s=n.glCtx,{a:r,b:o,c:i,d:a,e:c,f:h}=n.globalTransform;s.setTransform(r,o,i,a,c,h)}zoomToMatrix(e,t,n,s){const r=e,o=e,i=t,a=n;s.setTransform(r,0,0,o,i,a)}}class Nh{exportToOfflineCanvas(e,t,n,s){const r=D.rectNode2Rect(e),o=document.createElement("canvas");o.width=n*r.width,o.height=n*r.height;const i=o.getContext("2d");i.scale(n,n),i.translate(-r.x,-r.y);let a=t.searchNodesByRectNode(e);a=T.sortGraphics(a),i.save(),s&&(i.fillStyle=s,i.fillRect(r.x,r.y,r.width,r.height)),i.restore();for(const c of a)c.drawOnGLCtx(i);return o}}class $i{constructor(e,t,n,s){g(this,"gmlRender");g(this,"nodeManager");g(this,"auxiliaryManager");g(this,"slotManager");g(this,"zoomWorker",new Rh);g(this,"exportWorker",new Nh);g(this,"contentDraw",!1);g(this,"auxiliaryDraw",!1);g(this,"tickerRun",()=>{if(this.contentDraw){const e=this.gmlRender.getViewPortBounds(),t=this.nodeManager.tree.search(e),n=new Set;for(const r of t){const o=this.nodeManager.nodeMap.get(r.id);o&&n.add(o)}let s=[...n];s=T.sortGraphics(s),this.gmlRender.dirtyDraw(e,s),this.contentDraw=!1}this.auxiliaryDraw&&(this.auxiliaryManager.redraw(),this.auxiliaryDraw=!1),requestAnimationFrame(this.tickerRun)});this.gmlRender=e,this.nodeManager=t,this.auxiliaryManager=n,this.slotManager=s}getScale(){return this.gmlRender.getScale()}zoomScale(e,t,n){this.zoomWorker.zoomScale(e,t,this,n)}zoomToFit(e){this.zoomWorker.zoomToFit(this,e)}zoomToSelect(e){this.zoomWorker.zoomToSelect(this,e)}zoomTo100(e){this.zoomWorker.zoomTo100(this,e)}exportOfflineCanvas(e,t,n){return this.exportWorker.exportToOfflineCanvas(e,this.nodeManager,t,n)}scroll(e,t){this.scrollTo(e,t,this.gmlRender),this.scrollTo(e,t,this.auxiliaryManager.gmlRender),this.addContentRenderTask(),this.addAuxiliaryDrawTask()}start(){this.tickerRun()}addAuxiliaryDrawTask(){this.auxiliaryDraw=!0}addContentRenderTask(){this.contentDraw=!0}dirtyDraw(e){const t=this.nodeManager.tree.search(e),n=new Set;for(const r of t){const o=this.nodeManager.nodeMap.get(r.id);o&&n.add(o)}let s=[...n];s=T.sortGraphics(s),this.gmlRender.dirtyDraw(e,s)}async drawAsyncNodes(e){const t=[];for(const s of e)t.push(s.getRectNode());const n=T.getBounds(t);this.dirtyDraw(n)}scrollTo(e,t,n){const s=n.getScale();n.translation(-e/s,-t/s);const r=n.glCtx,{a:o,b:i,c:a,d:c,e:h,f:d}=n.globalTransform;r.setTransform(o,i,a,c,h,d)}}class Kr{handle(e,t){const n=this.layoutToPoints(e,t);return this.getUpdateNodeData(e.id,n)}getNodePos(e,{x:t,y:n}){const s=new m,{width:r,height:o}=e.baseProps;return s.x=t*r,s.y=n*o,e.toGlobal(s)}getUpdateNodeData(e,t){return{infos:[{id:e,props:[{type:R.Line,points:t}]}]}}}class Qi extends Kr{enable(e){return e.shapeType===Lt.Line}layoutToPoints(e,t){const{start:n,end:s}=e.connectProps,r=e.globalLinePoints;let o=r[0],i=r[r.length-1];if(n){const d=t.nodeManager.getNode(n.objectId);d&&(o=this.getNodePos(d,n))}if(s){const d=t.nodeManager.getNode(s.objectId);d&&(i=this.getNodePos(d,s))}const a=[o,i],c=e.globalTransform().inverseMatrix();return a.map(d=>c.crossPoint(d))}layoutToPointsPro(e,t){return[e.point,t.point]}}class Zi extends Kr{enable(e){return e.shapeType===Lt.Curve}handle(e,t){const{start:n,end:s}=e.connectProps,r=e.globalLinePoints;let o=r[0],i=r[r.length-1];if(n){const d=t.nodeManager.getNode(n.objectId);d&&(o=this.getNodePos(d,n))}if(s){const d=t.nodeManager.getNode(s.objectId);d&&(i=this.getNodePos(d,s))}const a=this.computeLinePoints(o,i),c=e.globalTransform().inverseMatrix(),h=a.map(d=>c.crossPoint(d));return this.getUpdateNodeData(e.id,h)}computeLinePoints(e,t){const n=[],s=new m(t.x-e.x,t.y-e.y);if(Math.abs(s.x)>Math.abs(s.y)){const r=new m(e.x+.5*s.x,e.y),o=new m(t.x-.5*s.x,t.y);n.push(e,r,o,t)}else{const r=new m(e.x,e.y+.5*s.y),o=new m(t.x,t.y-.5*s.y);n.push(e,r,o,t)}return n}layoutToPoints(e,t){const{start:n,end:s}=e.connectProps,r=e.points,o=r[0],i=r[r.length-1];return this.computeLinePoints(o,i)}layoutToPointsPro(e,t){return this.computeLinePoints(e.point,t.point)}}class ws{constructor(e){g(this,"startPoint");this.startPoint=e}}class L{static computeZLinePoints(e,t,n){if(n){const o=new m(e.x,.5*(e.y+t.y)),i=new m(t.x,.5*(e.y+t.y));return[e,o,i,t]}const s=new m(.5*(e.x+t.x),e.y),r=new m(.5*(e.x+t.x),t.y);return[e,s,r,t]}static computeLLinePoints(e,t,n){if(n){const r=new m(e.x,t.y);return[e,r,t]}const s=new m(t.x,e.y);return[e,s,t]}}class Eh extends ws{constructor(t,n){super(t);g(this,"rect");this.rect=n}bottom(t,n){const s=this.startPoint;if(t.y<s.y)return Math.abs(s.x-t.x)<.01?[s,t]:L.computeZLinePoints(s,t,!0);const r=new m(.5*(s.x+t.x),s.y-M);if(Math.abs(r.x-this.rect.x-.5*this.rect.width)<.5*this.rect.width||Math.abs(r.x-n.x-.5*n.width)<.5*n.width)if(s.x>t.x){const c=new m(Math.min(this.rect.x-M,n.x-M),Math.min(n.y-M,this.rect.y-M)),h=new m(t.x,Math.max(this.rect.y+this.rect.height+M,n.y+n.height+M)),d=L.computeLLinePoints(s,c,!0),u=L.computeLLinePoints(c,h,!0);return u.shift(),[...d,...u,t]}else{const c=new m(n.x+n.width+M,Math.min(n.y-M,this.rect.y-M)),h=new m(t.x,Math.max(this.rect.y+this.rect.height+M,n.y+n.height+M)),d=L.computeLLinePoints(s,c,!0),u=L.computeLLinePoints(c,h,!0);return u.shift(),[...d,...u,t]}const o=new m(t.x,t.y+M),i=L.computeLLinePoints(s,r,!0),a=L.computeLLinePoints(r,o,!0);return a.shift(),[...i,...a,t]}left(t,n){const s=this.startPoint;if(t.y<s.y&&t.x>s.x)return L.computeLLinePoints(s,t,!0);if(t.y<s.y){const a=new m(Math.min(this.rect.x-M,n.x-M),.5*(s.y+t.y));if(Math.abs(a.y-this.rect.y-.5*this.rect.height)<.5*this.rect.height||Math.abs(a.y-n.y-.5*n.height)<.5*n.height){const d=new m(Math.min(this.rect.x-M,n.x-M),Math.min(this.rect.y-M,n.y-M)),u=L.computeLLinePoints(s,d,!0),p=L.computeLLinePoints(d,t,!0);return p.shift(),[...u,...p]}const c=L.computeLLinePoints(s,a,!0),h=L.computeLLinePoints(a,t,!0);return h.shift(),[...c,...h]}if(t.x>this.rect.x+this.rect.width+M){const a=new m(.5*(this.rect.x+this.rect.width+n.x),this.rect.y-M),c=L.computeLLinePoints(s,a,!0),h=L.computeLLinePoints(a,t,!0);return h.shift(),[...c,...h]}const r=new m(Math.min(this.rect.x-M,n.x-M),this.rect.y-M),o=L.computeLLinePoints(s,r,!0),i=L.computeLLinePoints(r,t,!0);return i.shift(),[...o,...i]}right(t,n){const s=this.startPoint;if(t.y<s.y&&t.x<s.x)return L.computeLLinePoints(s,t,!0);if(t.y<s.y){const a=new m(Math.max(this.rect.x+this.rect.width+M,n.x+n.width+M),.5*(s.y+t.y));if(Math.abs(a.y-this.rect.y-.5*this.rect.height)<.5*this.rect.height||Math.abs(a.y-n.y-.5*n.height)<.5*n.height){const d=new m(Math.min(this.rect.x+this.rect.width+M,n.x+n.width+M),Math.min(this.rect.y-M,n.y-M)),u=L.computeLLinePoints(s,d,!0),p=L.computeLLinePoints(d,t,!0);return p.shift(),[...u,...p]}const c=L.computeLLinePoints(s,a,!0),h=L.computeLLinePoints(a,t,!0);return h.shift(),[...c,...h]}if(t.x<this.rect.x-M){const a=new m(.5*(this.rect.x+n.x),this.rect.y-M),c=L.computeLLinePoints(s,a,!0),h=L.computeLLinePoints(a,t,!0);return h.shift(),[...c,...h]}const r=new m(Math.min(this.rect.x+this.rect.width+M,n.x+n.width+M),this.rect.y-M),o=L.computeLLinePoints(s,r,!0),i=L.computeLLinePoints(r,t,!0);return i.shift(),[...o,...i]}top(t,n){const s=this.startPoint;if(t.y>this.rect.y+this.rect.height+M&&Math.abs(t.x-this.rect.x-.5*this.rect.width)<.5*this.rect.width){if(t.x>s.x){const d=new m(this.rect.x+this.rect.width+M,this.rect.y-M),u=new m(t.x,n.y-M),p=L.computeLLinePoints(s,d,!0),f=L.computeLLinePoints(d,u,!0);return f.shift(),[...p,...f,t]}const i=new m(this.rect.x-M,this.rect.y-M),a=new m(t.x,n.y-M),c=L.computeLLinePoints(s,i,!0),h=L.computeLLinePoints(i,a,!0);return h.shift(),[...c,...h,t]}if(n.y+n.height<this.rect.y){if(t.x>s.x){const d=new m(n.x-M,this.rect.y-M),u=new m(t.x,n.y-M),p=L.computeLLinePoints(s,d,!0),f=L.computeLLinePoints(d,u,!0);return f.shift(),[...p,...f,t]}const i=new m(n.x+n.width+M,this.rect.y-M),a=new m(t.x,n.y-M),c=L.computeLLinePoints(s,i,!0),h=L.computeLLinePoints(i,a,!0);return h.shift(),[...c,...h,t]}const r=new m(t.x,Math.min(this.rect.y-M,n.y-M));return[...L.computeLLinePoints(s,r,!0),t]}toPoint(t){if(T.rectContains(t,new D(this.rect.x-M,this.rect.y,2*M,this.rect.height))){const o=new m(this.rect.x-M,this.rect.y-M),i=L.computeLLinePoints(this.startPoint,o,!0),a=L.computeLLinePoints(o,t,!0);return a.shift(),[...i,...a]}if(T.rectContains(t,new D(this.rect.x+this.rect.width-M,this.rect.y,2*M,this.rect.height))){const o=new m(this.rect.x+this.rect.width+M,this.rect.y-M),i=L.computeLLinePoints(this.startPoint,o,!0),a=L.computeLLinePoints(o,t,!0);return a.shift(),[...i,...a]}if(T.rectContains(t,new D(this.rect.x,this.rect.y+this.rect.height-M,this.rect.width,2*M))){const o=new m(this.rect.x-M,this.rect.y-M),i=new m(t.x,this.rect.y+this.rect.height+M),a=L.computeLLinePoints(this.startPoint,o,!0),c=L.computeLLinePoints(o,i,!0);return c.shift(),[...a,...c,t]}if(T.rectContains(t,new D(this.rect.x,this.rect.y-M,this.rect.width,2*M))){const o=new m(t.x,this.rect.y-M);return[...L.computeLLinePoints(this.startPoint,o,!0),t]}if(t.y<this.startPoint.y)return L.computeZLinePoints(this.startPoint,t,!0);if(t.x<this.rect.x||t.x>this.rect.x+this.rect.width)return[...L.computeLLinePoints(this.startPoint,new m(t.x,this.rect.y-M),!0),t];if(t.x<this.rect.x+.5*this.rect.width){const o=new m(this.rect.x-M,this.rect.y-M),i=L.computeLLinePoints(this.startPoint,o,!0),a=L.computeLLinePoints(o,t,!0);return a.shift(),[...i,...a]}const n=new m(this.rect.x+this.rect.width+M,this.rect.y-M),s=L.computeLLinePoints(this.startPoint,n,!0),r=L.computeLLinePoints(n,t,!0);return r.shift(),[...s,...r]}}class Ji extends ws{bottom(e,t){const n=this.startPoint;if(e.y<n.y)return L.computeZLinePoints(n,e,!0);if(T.inDistance(n.x,t.x,t.width))if(n.x<t.x+.5*t.width){const o=new m(t.x-M,t.y+t.height+M),i=L.computeLLinePoints(n,o,!1),a=L.computeLLinePoints(o,e,!1);return a.shift(),[...i,...a]}else{const o=new m(t.x+t.width+M,t.y+t.height+M),i=L.computeLLinePoints(n,o,!1),a=L.computeLLinePoints(o,e,!1);return a.shift(),[...i,...a]}const s=new m(e.x,t.y+t.height+M);return[...L.computeLLinePoints(n,s,!0),e]}left(e,t){const n=this.startPoint;if(e.x>n.x)return L.computeZLinePoints(n,e,!1);if(T.inDistance(n.y,t.y,t.height))if(n.y<t.y+.5*t.height){const o=new m(t.x-M,t.y-M),i=L.computeLLinePoints(n,o,!0),a=L.computeLLinePoints(o,e,!0);return a.shift(),[...i,...a]}else{const o=new m(t.x-M,t.y+t.height+M),i=L.computeLLinePoints(n,o,!0),a=L.computeLLinePoints(o,e,!0);return a.shift(),[...i,...a]}const s=new m(t.x-M,e.y);return[...L.computeLLinePoints(n,s,!1),e]}right(e,t){const n=this.startPoint;if(e.x<n.x)return L.computeZLinePoints(n,e,!1);if(T.inDistance(n.y,t.y,t.height))if(n.y<t.y+.5*t.height){const o=new m(t.x+t.width+M,t.y-M),i=L.computeLLinePoints(n,o,!0),a=L.computeLLinePoints(o,e,!0);return a.shift(),[...i,...a]}else{const o=new m(t.x+t.width+M,t.y+t.height+M),i=L.computeLLinePoints(n,o,!0),a=L.computeLLinePoints(o,e,!0);return a.shift(),[...i,...a]}const s=new m(t.x+t.width+M,e.y);return[...L.computeLLinePoints(n,s,!1),e]}toPoint(e){return T.computePolyLinePoints(this.startPoint,e)}top(e,t){const n=this.startPoint;if(e.y>n.y)return L.computeZLinePoints(n,e,!0);if(T.inDistance(n.x,t.x,t.width))if(n.x<t.x+.5*t.width){const o=new m(t.x-M,t.y-M),i=L.computeLLinePoints(n,o,!1),a=L.computeLLinePoints(o,e,!1);return a.shift(),[...i,...a]}else{const o=new m(t.x+t.width+M,t.y-M),i=L.computeLLinePoints(n,o,!1),a=L.computeLLinePoints(o,e,!1);return a.shift(),[...i,...a]}const s=new m(e.x,t.y-M);return[...L.computeLLinePoints(n,s,!0),e]}}class Ih extends ws{constructor(t,n){super(t);g(this,"rect");this.rect=n}bottom(t,n){const s=this.startPoint;if(t.y+M<this.rect.y&&T.inDistance(t.x,this.rect.x,this.rect.width))if(t.x>this.rect.x+.5*this.rect.width){const i=new m(this.rect.x+this.rect.width+M,this.rect.y+this.rect.height+M),a=new m(t.x,n.y+n.height+M),c=L.computeLLinePoints(s,i,!0),h=L.computeLLinePoints(i,a,!0);return h.shift(),[...c,...h,t]}else{const i=new m(this.rect.x-M,this.rect.y+this.rect.height+M),a=new m(t.x,n.y+n.height+M),c=L.computeLLinePoints(s,i,!0),h=L.computeLLinePoints(i,a,!0);return h.shift(),[...c,...h,t]}if(s.y+M<n.y&&T.inDistance(s.x,n.x,n.width)){if(s.x<n.x+.5*n.width){const d=new m(n.x-M,this.rect.y+this.rect.height+M),u=new m(t.x,n.y+n.height+M),p=L.computeLLinePoints(s,d,!0),f=L.computeLLinePoints(d,u,!0);return f.shift(),[...p,...f,t]}const i=new m(n.x+n.width+M,this.rect.y+this.rect.height+M),a=new m(t.x,n.y+n.height+M),c=L.computeLLinePoints(s,i,!0),h=L.computeLLinePoints(i,a,!0);return h.shift(),[...c,...h,t]}const r=new m(t.x,Math.max(n.y+n.height+M,this.rect.y+this.rect.height+M));return[...L.computeLLinePoints(s,r,!0),t]}left(t,n){const s=this.startPoint;if(t.x>s.x&&t.y>s.y)return L.computeLLinePoints(s,t,!0);if(t.x>this.rect.x+this.rect.width+M&&t.y<s.y){const a=new m(this.rect.x+this.rect.width+M,this.rect.y+this.rect.height+M),c=L.computeLLinePoints(s,a,!0),h=L.computeLLinePoints(a,t,!0);return h.shift(),[...c,...h]}if(t.x<this.rect.x+this.rect.width+M){const a=new m(Math.min(n.x-M,this.rect.x-M),Math.max(n.y+n.height+M,this.rect.y+this.rect.height+M)),c=L.computeLLinePoints(s,a,!0),h=L.computeLLinePoints(a,t,!0);return h.shift(),[...c,...h]}const r=new m(n.x-M,n.y-M),o=L.computeLLinePoints(s,r,!0),i=L.computeLLinePoints(r,t,!0);return i.shift(),[...o,...i]}right(t,n){const s=this.startPoint;if(t.x<s.x&&t.y>s.y)return L.computeLLinePoints(s,t,!0);if(n.x+n.width>this.rect.x-M){if(n.y<this.rect.y+this.rect.height+M){const a=new m(Math.max(n.x+n.width+M,this.rect.x+this.rect.width+M),Math.max(this.rect.y+this.rect.height+M,n.y+n.height+M)),c=L.computeLLinePoints(s,a,!0),h=L.computeLLinePoints(a,t,!0);return h.shift(),[...c,...h]}const r=new m(n.x+n.width+M,this.rect.y+this.rect.height+M),o=L.computeLLinePoints(s,r,!0),i=L.computeLLinePoints(r,t,!0);return i.shift(),[...o,...i]}if(t.y<this.rect.y+this.rect.height+M){const r=new m(this.rect.x-M,this.rect.y+this.rect.height+M),o=L.computeLLinePoints(s,r,!0),i=L.computeLLinePoints(r,t,!0);return i.shift(),[...o,...i]}return L.computeLLinePoints(s,t,!0)}toPoint(t){const n=this.startPoint;if(t.y>n.y)return L.computeZLinePoints(n,t,!0);if(T.inDistance(t.x,this.rect.x,this.rect.width))if(t.x<this.rect.x+.5*this.rect.width){const o=new m(this.rect.x-M,this.rect.y+this.rect.height+M),i=L.computeLLinePoints(n,o,!0),a=L.computeLLinePoints(o,t,!0);return a.shift(),[...i,...a]}else{const o=new m(this.rect.x+this.rect.width+M,this.rect.y+this.rect.height+M),i=L.computeLLinePoints(n,o,!0),a=L.computeLLinePoints(o,t,!0);return a.shift(),[...i,...a]}const s=new m(n.x,this.rect.y+this.rect.height+M),r=L.computeLLinePoints(s,t,!1);return[n,...r]}top(t,n){const s=this.startPoint;if(t.y>s.y)return L.computeZLinePoints(s,t,!0);if(n.x+n.width+M<this.rect.x){const c=new m(n.x+n.width+M,this.rect.y+this.rect.height+M),h=new m(t.x,n.y-M),d=L.computeLLinePoints(s,c,!0),u=L.computeLLinePoints(c,h,!0);return u.shift(),[...d,...u,t]}if(n.x+n.width<s.x){const c=new m(n.x+-M,this.rect.y+this.rect.height+M),h=new m(t.x,n.y-M),d=L.computeLLinePoints(s,c,!0),u=L.computeLLinePoints(c,h,!0);return u.shift(),[...d,...u,t]}if(n.x>this.rect.x+this.rect.width+M){const c=new m(n.x-M,this.rect.y+this.rect.height+M),h=new m(t.x,n.y-M),d=L.computeLLinePoints(s,c,!0),u=L.computeLLinePoints(c,h,!0);return u.shift(),[...d,...u,t]}const r=new m(Math.max(n.x+n.width+M,this.rect.x+this.rect.width+M),this.rect.y+this.rect.height+M),o=new m(t.x,n.y-M),i=L.computeLLinePoints(s,r,!0),a=L.computeLLinePoints(r,o,!0);return a.shift(),[...i,...a,t]}}class kh extends ws{constructor(t,n){super(t);g(this,"rect");this.rect=n}bottom(t,n){const s=this.startPoint;if(t.y<s.y){if(t.x<s.x)return L.computeLLinePoints(s,t,!1);const a=new m(this.rect.x-M,n.y+n.height+M),c=L.computeLLinePoints(s,a,!1),h=L.computeLLinePoints(a,t,!1);return h.shift(),[...c,...h]}if(t.y>s.y&&t.x<s.x){const a=new m(this.rect.x-M,t.y+M),c=L.computeLLinePoints(s,a,!1),h=L.computeLLinePoints(a,t,!1);return h.shift(),[...c,...h]}const r=new m(this.rect.x-M,t.y+M),o=L.computeLLinePoints(s,r,!1),i=L.computeLLinePoints(r,t,!1);return i.shift(),[...o,...i]}left(t,n){const s=this.startPoint;if(t.y<this.rect.y){const i=new m(Math.min(this.rect.x-M,n.x-M),t.y);return[...L.computeLLinePoints(s,i,!1),t]}if(t.y>this.rect.y+this.rect.height){const i=new m(Math.min(this.rect.x-M,n.x-M),t.y);return[...L.computeLLinePoints(s,i,!1),t]}if(t.y<this.rect.y+this.rect.height&&t.x>this.rect.x+this.rect.width){const i=new m(this.rect.x-M,this.rect.y-M),a=new m(n.x-M,t.y),c=L.computeLLinePoints(s,i,!1),h=L.computeLLinePoints(i,a,!1);return h.shift(),[...c,...h,t]}const r=new m(Math.min(this.rect.x-M,n.x-M),t.y);return[...L.computeLLinePoints(s,r,!1),t]}right(t,n){const s=this.startPoint;if(t.x<s.x)return L.computeZLinePoints(s,t,!1);if(t.y<s.y){const c=new m(this.rect.x-M,n.y+n.height+M),h=new m(n.x+n.width+M,t.y),d=L.computeLLinePoints(s,c,!1),u=L.computeLLinePoints(c,h,!1);return u.shift(),[...d,...u,t]}const r=new m(this.rect.x-M,n.y-M),o=new m(n.x+n.width+M,t.y),i=L.computeLLinePoints(s,r,!1),a=L.computeLLinePoints(r,o,!1);return a.shift(),[...i,...a,t]}toPoint(t){const n=this.startPoint;if(t.x>n.x&&t.y<this.rect.y){const o=new m(this.rect.x-M,t.y);return[...L.computeLLinePoints(n,o,!1),t]}if(t.x>n.x&&t.y>this.rect.y&&t.y<n.y){const o=new m(this.rect.x-M,this.rect.y-M),i=L.computeLLinePoints(n,o,!1),a=L.computeLLinePoints(o,t,!1);return a.shift(),[...i,...a]}if(t.x>n.x&&t.y>n.y&&t.y<this.rect.y+this.rect.height){const o=new m(this.rect.x-M,this.rect.y+this.rect.height+M),i=L.computeLLinePoints(n,o,!1),a=L.computeLLinePoints(o,t,!1);return a.shift(),[...i,...a]}if(t.x<n.x)return L.computeZLinePoints(n,t,!1);const s=new m(this.rect.x-M,t.y);return[...L.computeLLinePoints(n,s,!1),t]}top(t,n){const s=this.startPoint;if(t.x>s.x&&t.y<this.rect.y+this.rect.height+M){const r=new m(this.rect.x-M,Math.min(this.rect.y-M,n.y-M)),o=L.computeLLinePoints(s,r,!1),i=L.computeLLinePoints(r,t,!1);return i.shift(),[...o,...i]}if(t.y<s.y+2&&t.x<s.x){const r=new m(this.rect.x-M,n.y-M),o=L.computeLLinePoints(s,r,!1),i=L.computeLLinePoints(r,t,!1);return i.shift(),[...o,...i]}if(t.x>s.x&&t.y>this.rect.y+this.rect.height+M){const r=new m(this.rect.x-M,this.rect.y+this.rect.height+M),o=L.computeLLinePoints(s,r,!1),i=L.computeLLinePoints(r,t,!1);return i.shift(),[...o,...i]}return L.computeLLinePoints(s,t,!1)}}class Bh extends ws{constructor(t,n){super(t);g(this,"rect");this.rect=n}bottom(t,n){const s=this.startPoint;if(t.x>s.x){if(t.y<s.y)return L.computeLLinePoints(s,t,!1);const a=new m(this.rect.x+this.rect.width+M,n.y+n.height+M),c=L.computeLLinePoints(s,a,!1),h=L.computeLLinePoints(a,t,!1);return h.shift(),[...c,...h]}if(t.y<this.rect.y){const a=new m(this.rect.x+this.rect.width+M,n.y+n.height+M),c=L.computeLLinePoints(s,a,!1),h=L.computeLLinePoints(a,t,!1);return h.shift(),[...c,...h]}const r=new m(this.rect.x+this.rect.width+M,Math.max(n.y+n.height+M,this.rect.y+this.rect.height+M)),o=L.computeLLinePoints(s,r,!1),i=L.computeLLinePoints(r,t,!1);return i.shift(),[...o,...i]}left(t,n){const s=this.startPoint;if(t.x>s.x)return L.computeZLinePoints(s,t,!1);if(t.y<this.rect.y){const c=new m(this.rect.x+this.rect.width+M,n.y+n.height+M),h=new m(n.x-M,t.y),d=L.computeLLinePoints(s,c,!1),u=L.computeLLinePoints(c,h,!1);return u.shift(),[...d,...u,t]}if(t.y>this.rect.y+this.rect.height){const c=new m(this.rect.x+this.rect.width+M,n.y-M),h=new m(n.x-M,t.y),d=L.computeLLinePoints(s,c,!1),u=L.computeLLinePoints(c,h,!1);return u.shift(),[...d,...u,t]}if(t.y<this.rect.y+.5*this.rect.height){const c=new m(this.rect.x+this.rect.width+M,Math.min(n.y-M,this.rect.y-M)),h=new m(n.x-M,t.y),d=L.computeLLinePoints(s,c,!1),u=L.computeLLinePoints(c,h,!1);return u.shift(),[...d,...u,t]}const r=new m(this.rect.x+this.rect.width+M,Math.max(n.y+n.height+M,this.rect.y+this.rect.height+M)),o=new m(n.x-M,t.y),i=L.computeLLinePoints(s,r,!1),a=L.computeLLinePoints(r,o,!1);return a.shift(),[...i,...a,t]}right(t,n){const s=this.startPoint;if(t.y<this.rect.y||t.y>this.rect.y+this.rect.height){const c=new m(Math.max(n.x+n.width+M,this.rect.x+this.rect.width+M),t.y);return[...L.computeLLinePoints(s,c,!1),t]}if(t.y<this.rect.y+.5*this.rect.height){const c=new m(this.rect.x+this.rect.width+M,this.rect.y-M),h=new m(n.x+n.width+M,t.y),d=L.computeLLinePoints(s,c,!1),u=L.computeLLinePoints(c,h,!1);return u.shift(),[...d,...u,t]}const r=new m(this.rect.x+this.rect.width+M,this.rect.y+this.rect.height+M),o=new m(n.x+n.width+M,t.y),i=L.computeLLinePoints(s,r,!1),a=L.computeLLinePoints(r,o,!1);return a.shift(),[...i,...a,t]}toPoint(t){const n=this.startPoint;if(t.x>n.x)return L.computeZLinePoints(n,t,!1);if(t.y<this.rect.y||t.y>this.rect.y+this.rect.height){const i=new m(this.rect.x+this.rect.width+M,t.y);return[...L.computeLLinePoints(n,i,!1),t]}if(t.y<this.rect.y+.5*this.rect.height){const i=new m(this.rect.x+this.rect.width+M,this.rect.y-M),a=L.computeLLinePoints(n,i,!1),c=L.computeLLinePoints(i,t,!1);return c.shift(),[...a,...c]}const s=new m(this.rect.x+this.rect.width+M,this.rect.y+this.rect.height+M),r=L.computeLLinePoints(n,s,!1),o=L.computeLLinePoints(s,t,!1);return o.shift(),[...r,...o]}top(t,n){const s=this.startPoint;if(t.y>s.y&&t.x>s.x)return L.computeLLinePoints(s,t,!1);if(t.y>this.rect.y+this.rect.height){const a=new m(this.rect.x+this.rect.width+M,this.rect.y+this.rect.height+M),c=L.computeLLinePoints(s,a,!1),h=L.computeLLinePoints(a,t,!1);return h.shift(),[...c,...h]}if(n.x<this.rect.x+this.rect.width+M){const a=new m(Math.max(this.rect.x+this.rect.width+M,n.x+n.width+M),Math.min(n.y-M,this.rect.y-M)),c=L.computeLLinePoints(s,a,!1),h=L.computeLLinePoints(a,t,!1);return h.shift(),[...c,...h]}const r=new m(this.rect.x+this.rect.width+M,n.y-M),o=L.computeLLinePoints(s,r,!1),i=L.computeLLinePoints(r,t,!1);return i.shift(),[...o,...i]}}class $t{static mockPointermoveEvent(e){return{pointerId:1,width:1,height:1,pressure:.5,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,type:"pointermove",pointerType:"mouse",isPrimary:!0,bubbles:!0,cancelable:!0,composed:!0,clientX:e.x,clientY:e.y}}static getNodePos(e,{x:t,y:n}){const s=new m,{width:r,height:o}=e.baseProps;return s.x=t*r,s.y=n*o,e.toGlobal(s)}static computeConnectInfo(e,t,n,s=!1){const r=e.globalLinePoints,o={point:s?r[r.length-1]:r[0]};if(t){const i=n.nodeManager.getNode(t.objectId);i&&(o.nodeConnect={rect:D.rectNode2Rect(i.getBounds()),endType:T.computeNodeConnectEnd(t,i.baseProps.angle)},o.point=this.getNodePos(i,t))}return o}static computeLinePoints(e,t,n,s,r){const o=s.detect(W.NodeEdge,n),a={point:r.alignLineEndAndDrawAlignLines(n,s)};return o&&(a.point=new m(o.point.x,o.point.y),a.nodeConnect={rect:D.rectNode2Rect(o.node.getBounds()),endType:T.computeNodeConnectEnd(o.relativePos,o.node.baseProps.angle)}),t.layoutToPointsPro(e,a)}static trimAngle(e){const t=Math.floor(e/360);return e-t*360}static calculateAngle(e,t){return Math.abs(e.x-t.x)<.01?t.y>e.y?90:-90:Math.atan2(t.y-e.y,t.x-e.x)/Math.PI*180}static calculateAngle2(e,t){return Math.abs(e.x-t.x)<.01?t.y>e.y?.5*Math.PI:-.5*Math.PI:Math.atan2(t.y-e.y,t.x-e.x)}static trimPoint(e){return new m(Math.floor(e.x),Math.floor(e.y))}static overlapHorizonVertical(e,t,n){if($t.judgeHorizon(e,t)){if(e.y<n.minY||e.y>n.maxY)return!1;const r=e.x>t.x?t.x:e.x,o=e.x<t.x?t.x:e.x;if(r>n.maxX||o<n.minX)return!1}else{if(e.x<n.minX||e.x>n.maxX)return!1;const r=e.y>t.y?t.y:e.y,o=e.y<t.y?t.y:e.y;if(r>n.maxY||o<n.minY)return!1}return!0}static overlapHorizon(e,t,n,s,r){const o=s.y>r.y?r.y:s.y,i=s.y<r.y?r.y:s.y;if(o>n||i<n)return!1;const a=s.x>r.x?r.x:s.x,c=s.x<r.x?r.x:s.x;return!(a>t||c<e)}static overlapVertical(e,t,n,s,r){const o=s.x>r.x?r.x:s.x,i=s.x<r.x?r.x:s.x;if(o>n||i<n)return!1;const a=s.y>r.y?r.y:s.y,c=s.y<r.y?r.y:s.y;return!(a>t||c<e)}static overlapSimpleLine(e,t,n){if(this.overlapHorizon(n.minX,n.maxX,n.minY,e,t)||this.overlapHorizon(n.minX,n.maxX,n.maxY,e,t)||this.overlapVertical(n.minY,n.maxY,n.maxX,e,t)||this.overlapVertical(n.minY,n.maxY,n.minX,e,t))return!0;const s=e.x>t.x?t.x:e.x,r=e.x<t.x?t.x:e.x,o=e.y>t.y?t.y:e.y,i=e.y<t.y?t.y:e.y;return r<=n.maxX&&s>=n.minX&&i<=n.maxY&&o>=n.minY}static overlapPolyLine(e,t){for(let n=0;n<e.length-1;n++){const s=e[n],r=e[n+1];if(this.overlapHorizonVertical(s,r,t))return!0}return!1}static interactRect(e,t){return{minX:Math.max(e.minX,t.minX),maxX:Math.min(e.maxX,t.maxX),minY:Math.max(e.minY,t.minY),maxY:Math.min(e.maxY,t.maxY)}}static needDrawByDelete(e,t,n,s,r){const o=e.nodeManager.tree.search(t),i=new Set;for(const c of o){const h=e.nodeManager.nodeMap.get(c.id);h&&i.add(h)}r||i.add(s);const a=[...i];return a.sort((c,h)=>c.zIndex-h.zIndex),a}static layout(e,t){const n=[];return T.doubleMiddleInsertPoint(e,t,n),n}static judgeHorizon(e,t,n=.01){return Math.abs(e.y-t.y)<n}static judgeVertical(e,t,n=.01){return Math.abs(e.x-t.x)<n}static getOfflineCanvas(e,t,n){const s=D.rectNode2Rect(e),r=document.createElement("canvas");r.width=n*s.width,r.height=n*s.height;const o=r.getContext("2d");o.scale(n,n),o.translate(-s.x,-s.y);const i=t.searchNodesByRectNode(e);for(const a of i)a.drawOnGLCtx(o);return r}}class ta{constructor(e){g(this,"modes",[]);g(this,"currentMode");this.modes=e.modes,this.currentMode=e.modes[e.modes.length-1]}onEvent(e,t){this.reset(e,t);const n=this.convertInteractiveEvent(e,t);this.detect(n,t),this.currentMode.work(n,t),this.afterOnEvent(n,t)}refreshEvent(e){const t=e.lastInteractiveEvent.originEvent,n=new m(t.clientX,t.clientY),s=$t.mockPointermoveEvent(n);s.target=e.gmlRender.canvas,this.onEvent(s,e)}detect(e,t){if(this.currentMode.canBeExit(e,t)){for(const n of this.modes)if(n.canBeEnable(e,t)){this.currentMode=n;return}}}reset(e,t){var n;t.reset();for(const[s,r]of t.detectors)r.reset();e.type!==((n=t.lastInteractiveEvent)==null?void 0:n.type)&&(t.lastDiffTypeEvent=t.lastInteractiveEvent)}afterOnEvent(e,t){this.record(e,t)}record(e,t){t.lastInteractiveEvent=e}convertInteractiveEvent(e,t){const n=t.gmlRender.canvas.getBoundingClientRect(),s=new m(e.clientX-n.x,e.clientY-n.y),r=t.gmlRender.transformToGlobal(s);return{clientPoint:new m(e.clientX,e.clientY),globalPoint:r,type:this.convertEventType(e,t),originEvent:e}}convertEventType(e,t){const n=e.type;return n==="pointerdown"?yt.pointerDown:n==="pointermove"?e.target!=t.gmlRender.canvas?yt.pointermoveOutside:yt.pointermove:n==="pointerup"?yt.pointerup:yt.unknown}}class _s{constructor(e,t){g(this,"eventCtx");g(this,"interactiveManager");g(this,"onContextMenu",e=>{e.preventDefault()});g(this,"onPointerDown",e=>{this.triggerEvent(e)});g(this,"onPointerMove",e=>{this.triggerEvent(e)});g(this,"onPointerUp",e=>{this.triggerEvent(e)});this.eventCtx=e,this.interactiveManager=new ta(t)}start(){document.addEventListener("pointerdown",this.onPointerDown),document.addEventListener("pointermove",this.onPointerMove),document.addEventListener("pointerup",this.onPointerUp),document.addEventListener("contextmenu",this.onContextMenu)}stop(){document.removeEventListener("pointerdown",this.onPointerDown),document.removeEventListener("pointermove",this.onPointerMove),document.removeEventListener("pointerup",this.onPointerUp),document.removeEventListener("contextmenu",this.onContextMenu)}triggerEvent(e){this.onEnable(e)&&(this.interactiveManager.onEvent(e,this.eventCtx),this.afterEvent())}onEnable(e){return!(e.type!=="pointermove"&&e.target!==this.eventCtx.gmlRender.canvas)}afterEvent(){}}const jr=8,Ks=8,js=500;var It=(l=>(l[l.width=0]="width",l[l.height=1]="height",l[l.both=2]="both",l))(It||{});const Cn=new Set([A.Line,A.Group]);class Ln{}class ea extends Ln{align(e,t,n,s,r,o){const i={minX:s.minX,maxX:s.maxX,minY:n.minY-o,maxY:n.minY+o},a=e.nodeManager.searchNodesByRectNode(i),c=[];for(const p of a){if(t.has(p)||Cn.has(p.type))continue;const f=p.getBounds();if(Math.abs(n.minY-f.minY)<o){let y;n.minX<f.minX?y={start:new m(n.minX,f.minY),end:new m(f.minX,f.minY)}:y={start:new m(f.maxX,f.minY),end:new m(n.minX,f.minY)},c.push({line:y,dx:0,dy:f.minY-n.minY})}if(Math.abs(n.minY-f.maxY)<o){let y;n.minX<f.minX?y={start:new m(n.minX,f.maxY),end:new m(f.minX,f.maxY)}:y={start:new m(f.maxX,f.maxY),end:new m(n.minX,f.maxY)},c.push({line:y,dx:0,dy:f.maxY-n.minY})}}if(c.length===0)return;const h=c.map(p=>p.dy),d=Math.min(...h),u={dx:0,dy:d,lines:[]};for(const p of c)Math.abs(p.dy-d)<.01&&u.lines.push(p.line);r.top=u}}class na extends Ln{align(e,t,n,s,r,o=2){const i={minX:s.minX,maxX:s.maxX,minY:n.maxY-o,maxY:n.maxY+o},a=e.nodeManager.searchNodesByRectNode(i),c=[];for(const p of a){if(t.has(p)||Cn.has(p.type))continue;const f=p.getBounds();if(Math.abs(n.maxY-f.minY)<o){let y;n.minX<f.minX?y={start:new m(n.minX,f.minY),end:new m(f.minX,f.minY)}:y={start:new m(f.maxX,f.minY),end:new m(n.minX,f.minY)},c.push({line:y,dx:0,dy:f.minY-n.maxY})}if(Math.abs(n.maxY-f.maxY)<o){let y;n.minX<f.minX?y={start:new m(n.minX,f.maxY),end:new m(f.minX,f.maxY)}:y={start:new m(f.maxX,f.maxY),end:new m(n.minX,f.maxY)},c.push({line:y,dx:0,dy:f.maxY-n.maxY})}}if(c.length===0)return;const h=c.map(p=>p.dy),d=Math.min(...h),u={dx:0,dy:d,lines:[]};for(const p of c)Math.abs(p.dy-d)<.01&&u.lines.push(p.line);r.bottom=u}}class sa extends Ln{align(e,t,n,s,r,o){const i={minX:n.minX-o,maxX:n.minX+o,minY:s.minY,maxY:s.maxY},a=e.nodeManager.searchNodesByRectNode(i),c=[];for(const p of a){if(t.has(p)||Cn.has(p.type))continue;const f=p.getBounds();if(Math.abs(n.minX-f.minX)<o){let y;n.minY<f.minY?y={start:new m(f.minX,n.maxY),end:new m(f.minX,f.minY)}:y={start:new m(f.minX,f.maxY),end:new m(f.minX,n.minY)},c.push({line:y,dy:0,dx:f.minX-n.minX})}if(Math.abs(n.minX-f.maxX)<o){let y;n.minX<f.minX?y={start:new m(f.maxX,n.maxY),end:new m(f.maxX,f.minY)}:y={start:new m(f.maxX,f.maxY),end:new m(f.maxX,n.minY)},c.push({line:y,dy:0,dx:f.maxX-n.minX})}}if(c.length===0)return;const h=c.map(p=>p.dx),d=Math.min(...h),u={dy:0,dx:d,lines:[]};for(const p of c)Math.abs(p.dx-d)<.01&&u.lines.push(p.line);r.left=u}}class ra extends Ln{align(e,t,n,s,r,o){const i={minX:n.maxX-o,maxX:n.maxX+o,minY:s.minY,maxY:s.maxY},a=e.nodeManager.searchNodesByRectNode(i),c=[];for(const p of a){if(t.has(p)||Cn.has(p.type))continue;const f=p.getBounds();if(Math.abs(n.maxX-f.minX)<o){let y;n.minY<f.minY?y={start:new m(f.minX,n.maxY),end:new m(f.minX,f.minY)}:y={start:new m(f.minX,f.maxY),end:new m(f.minX,n.minY)},c.push({line:y,dy:0,dx:f.minX-n.maxX})}if(Math.abs(n.maxX-f.maxX)<o){let y;n.maxX<f.minX?y={start:new m(f.maxX,n.maxY),end:new m(f.maxX,f.minY)}:y={start:new m(f.maxX,f.maxY),end:new m(f.maxX,n.minY)},c.push({line:y,dy:0,dx:f.maxX-n.maxX})}}if(c.length===0)return;const h=c.map(p=>p.dx),d=Math.min(...h),u={dy:0,dx:d,lines:[]};for(const p of c)Math.abs(p.dx-d)<.01&&u.lines.push(p.line);r.right=u}}class Oh extends Ln{align(e,t,n,s,r,o){const i=.5*(n.minY+n.maxY),a={minX:s.minX,maxX:s.maxX,minY:i-o,maxY:i+o},c=e.nodeManager.searchNodesByRectNode(a),h=[];for(const f of c){if(t.has(f)||Cn.has(f.type))continue;const y=f.getBounds(),w=.5*(y.minY+y.maxY);if(Math.abs(i-w)<o){const b=Math.min(n.minX,n.maxX,y.maxX,y.minX),x=Math.max(n.minX,n.maxX,y.maxX,y.minX),v={start:new m(b,w),end:new m(x,w)};h.push({line:v,dx:0,dy:w-i})}}if(h.length===0)return;const d=h.map(f=>f.dy),u=Math.min(...d),p={dx:0,dy:u,lines:[]};for(const f of h)Math.abs(f.dy-u)<.01&&p.lines.push(f.line);r.horizonMid=p}}class Dh extends Ln{align(e,t,n,s,r,o){const i=.5*(n.minX+n.maxX),a={minX:i-o,maxX:i+o,minY:s.minY,maxY:s.maxY},c=e.nodeManager.searchNodesByRectNode(a),h=[];for(const f of c){if(t.has(f)||Cn.has(f.type))continue;const y=f.getBounds(),w=.5*(y.minX+y.maxX);if(Math.abs(i-w)<o){const b=Math.min(n.minY,n.maxY,y.maxY,y.minY),x=Math.max(n.minY,n.maxY,y.maxY,y.minY),v={start:new m(w,b),end:new m(w,x)};h.push({line:v,dx:w-i,dy:0})}}if(h.length===0)return;const d=h.map(f=>f.dx),u=Math.min(...d),p={dx:u,dy:0,lines:[]};for(const f of h)Math.abs(f.dx-u)<.01&&p.lines.push(f.line);r.verticalMid=p}}class oa{constructor(){g(this,"handlers",[new ea,new Oh,new na,new sa,new Dh,new ra])}align(e,t,n){const s=n.gmlRender.getViewPortBounds(),r=jr/n.gmlRender.getScale(),o=new Set;for(const a of t)this.computeFilterSet(a,o);const i={};for(const a of this.handlers)a.align(n,o,e,s,i,r);return this.dealAlignTopBottom(i),this.dealAlignLeftRight(i),i}computeFilterSet(e,t){t.add(e);const n=e.children;for(const s of n)this.computeFilterSet(s,t)}dealAlignTopBottom(e){const{top:t,bottom:n,horizonMid:s}=e,r=[t,s,n].map(i=>i==null?void 0:i.dy).filter(i=>i!==void 0);if(r.length===0)return;const o=Math.min(...r);for(const i of["top","bottom","horizonMid"]){const a=e[i];a&&Math.abs(o-a.dy)>.01&&(e[i]=void 0)}}dealAlignLeftRight(e){const{left:t,right:n,verticalMid:s}=e,r=[t,n,s].map(i=>i==null?void 0:i.dx).filter(i=>i!==void 0);if(r.length===0)return;const o=Math.min(...r);for(const i of["left","right","verticalMid"]){const a=e[i];a&&Math.abs(o-a.dx)>.01&&(e[i]=void 0)}if(t&&n){if(Math.abs(t.dx-n.dx)<.01)return;t.dx<n.dx?e.right=void 0:e.left=void 0}}}const qr=new Set([A.Group,A.Line]);class $r{}class ia extends $r{enable(e){return e===It.both||e===It.width}align(e,t,n,s,r,o,i,a){const c=n.maxX-n.minX,h=this.searchNodes(e,c,r,n,s,o,i,a);if(h.length===0)return;const d=h.map(y=>y.dt),u=Math.min(...d),p=[];for(const y of h)Math.abs(y.dt-u)<.01&&p.push(y.info);const f={dt:u,sideSize:c,lines:p};t.width=f}searchNodes(e,t,n,s,r,o,i,a){let c=200;const h={minX:s.minX-c,maxX:s.maxX+c,minY:s.minY-c,maxY:s.maxY+c},d=[];for(;d.length===0&&!(c>i||T.containRect(h,o));){const u=this.searchNodesForOffset(e,t,n,h,r,o,c,a);d.push(...u),c=2*c}return d}searchNodesForOffset(e,t,n,s,r,o,i,a){const c=e.nodeManager.searchNodesByRectNode(o),h=[];for(const d of c){if(r.has(d)||qr.has(d.type))continue;const{width:u,height:p,angle:f}=d.baseProps,y=f%360;if(!(Math.abs(y)>30)&&Math.abs(u-t)<a){const w={x:0,y:p},b={x:u,y:p};h.push({dt:u-t,sideSize:u,info:{line:{start:w,end:b},transform:d.globalTransform().clone()}})}}return h}}class aa extends $r{enable(e){return e===It.both||e===It.height}align(e,t,n,s,r,o,i,a){const c=n.maxY-n.minY,h=this.searchNodes(e,c,r,n,s,o,i,a);if(h.length===0)return;const d=h.map(y=>y.dt),u=Math.min(...d),p=[];for(const y of h)Math.abs(y.dt-u)<.01&&p.push(y.info);const f={dt:u,sideSize:c,lines:p};t.height=f}searchNodes(e,t,n,s,r,o,i,a){let c=200;const h={minX:s.minX-c,maxX:s.maxX+c,minY:s.minY-c,maxY:s.maxY+c},d=[];for(;d.length===0&&!(c>i||T.containRect(h,o));){const u=this.searchNodesForOffset(e,t,n,h,r,o,c,a);d.push(...u),c=2*c}return d}searchNodesForOffset(e,t,n,s,r,o,i,a){const c=e.nodeManager.searchNodesByRectNode(o),h=[];for(const d of c){if(r.has(d)||qr.has(d.type))continue;const{width:u,height:p,angle:f}=d.baseProps,y=f%360;if(!(Math.abs(y)>30)&&Math.abs(p-t)<a){const w={x:u,y:0},b={x:u,y:p};h.push({dt:p-t,sideSize:p,info:{line:{start:w,end:b},transform:d.transform.clone()}})}}return h}}class ca{constructor(){g(this,"handlers",[new ia,new aa])}align(e,t,n,s,r,o,i){const a={};for(const c of this.handlers)c.enable(s)&&c.align(e,a,t,n,s,r,o,i);return a}}class la{}class Hh extends la{align(e,t,n,s,r,o){const i={minX:s.minX,maxX:s.maxX,minY:n.y-o,maxY:n.y+o},a=e.nodeManager.searchNodesByRectNode(i),c=[];for(const p of a){if(t.has(p)||p.type===A.Line||p.type===A.Group)continue;const f=p.getBounds(),y=[f.minY,f.maxY];for(const w of y)if(Math.abs(n.y-w)<o){const b=Math.min(n.x,f.minX,f.maxX),x=Math.max(n.x,f.minX,f.maxX),v={start:new m(b,w),end:new m(x,w)};c.push({line:v,dx:0,dy:w-n.y})}}if(c.length===0)return;const h=c.map(p=>p.dy),d=Math.min(...h),u={dx:0,dy:d,lines:[]};for(const p of c)Math.abs(p.dy-d)<.01&&u.lines.push(p.line);r.horizon=u}}class zh extends la{align(e,t,n,s,r,o){const i={minY:s.minY,maxY:s.maxY,minX:n.x-o,maxX:n.x+o},a=e.nodeManager.searchNodesByRectNode(i),c=[];for(const p of a){if(t.has(p)||p.type===A.Line||p.type===A.Group)continue;const f=p.getBounds(),y=[f.minX,f.maxX];for(const w of y)if(Math.abs(n.x-w)<o){const b=Math.min(n.y,f.minY,f.maxY),x=Math.max(n.y,f.minY,f.maxY),v={start:new m(w,b),end:new m(w,x)};c.push({line:v,dx:w-n.x,dy:0})}}if(c.length===0)return;const h=c.map(p=>p.dx),d=Math.min(...h),u={dx:d,dy:0,lines:[]};for(const p of c)Math.abs(p.dx-d)<.01&&u.lines.push(p.line);r.vertical=u}}class Xh{constructor(){g(this,"handlers",[new Hh,new zh])}align(e,t,n){const s=n.gmlRender.getViewPortBounds(),r=jr/n.gmlRender.getScale(),o={};for(const i of this.handlers)i.align(n,t,e,s,o,r);return o}}class xs{static addAllParentToSet(e,t){let n=e.parent;for(;n&&n.type===A.Group;)t.add(n),n=n.parent}static findHoverNode(e,t){if(e.parent.type!==A.Group)return e;const n=new Set;for(const r of t)n.add(r.parent);let s=e.parent;if(n.has(s))return e;for(;s;){const r=s.parent;if(n.has(r))return s;if(r.type!==A.Group)break;s=r}return s}static flattenNodes(e){const t=new Set;for(const n of e)this.flattenGroupNodes(n,t);return[...t]}static flattenGroupNodes(e,t){if(e.type!==A.Group){t.add(e);return}const s=e.children;for(const r of s)this.flattenGroupNodes(r,t)}}class cn{constructor(){g(this,"alignMoveWorker",new oa);g(this,"alignStretchWorker",new ca);g(this,"alignLineEndWorker",new Xh)}alignLineEnd(e,t,n){return this.alignLineEndWorker.align(e,t,n)}alignMove(e,t,n){const s=new Set;for(const r of t)this.addChildrenToFilterSet(r,s);return this.alignMoveWorker.align(e,s,n)}alignStretch(e,t,n,s,r,o,i){const a=D.toRectNode(t),c=new Set(n);for(const d of[...n])xs.addAllParentToSet(d,c);return this.alignStretchWorker.align(e,a,c,s,r,o,i)}alignLineEndAndDrawAlignLines(e,t,n=t.getSelectNodes()){const s=e.globalPoint.clone(),r=this.alignLineEnd(s,n,t),o=[];return r.horizon&&(o.push(...r.horizon.lines),s.y+=r.horizon.dy),r.vertical&&(o.push(...r.vertical.lines),s.x+=r.vertical.dx),t.addOrUpdate(N.AlignLine,{lines:o}),s}drawAlignLines(e,t){const{top:n,bottom:s,horizonMid:r,right:o,left:i,verticalMid:a}=e,c=[],h=new m;return n&&(h.y=n.dy,c.push(...n.lines)),r&&(h.y=r.dy,c.push(...r.lines)),s&&(h.y=s.dy,c.push(...s.lines)),i&&(h.x=i.dx,c.push(...i.lines)),a&&(h.x=a.dx,c.push(...a.lines)),o&&(h.x=o.dx,c.push(...o.lines)),t.addOrUpdate(N.AlignLine,{lines:c}),h}addChildrenToFilterSet(e,t){t.add(e);const n=e.children;for(const s of n)this.addChildrenToFilterSet(s,t)}}class ee{}class Ve{constructor(e){g(this,"processors",[]);this.processors=e}work(e,t){for(const n of this.processors)n.allowEventTypeSet.has(e.type)&&n.process(e,t)}stop(e,t){for(const n of this.processors)n.stop&&n.stop(e,t)}isStreaming(){return!1}}class ln extends Ve{constructor(t){super(t);g(this,"deltaDistance",1);g(this,"locked",!1)}clickEnable(t,n){return!0}canBeEnable(t,n){if(t.type!==yt.pointerDown)return!1;const s=this.clickEnable(t,n);return s&&(this.locked=!0),s}work(t,n){t.type===yt.pointerup&&(this.locked=!1),T.distance(n.lastDiffTypeEvent.globalPoint,t.globalPoint)>this.deltaDistance/n.gmlRender.getScale()&&(this.locked=!1),super.work(t,n)}canBeExit(t,n){const s=!this.locked;return s&&this.stop(t,n),s}}class We{constructor(){g(this,"downHandlers",[]);g(this,"upHandlers",[]);g(this,"hasWorking",!1);g(this,"allowEventTypeSet",new Set([yt.pointerDown,yt.pointerup]))}registerDownHandler(e){this.downHandlers.push(e)}registerUpHandler(e){this.upHandlers.push(e)}process(e,t){this.downProcess(e,t),this.upProcess(e,t)}stop(e,t){this.hasWorking=!1}downProcess(e,t){if(e.type===yt.pointerDown){for(const n of this.downHandlers)if(n.enable(e,t)){this.hasWorking=!0,n.handle(e,t);return}}}upProcess(e,t){if(e.type===yt.pointerup){if(this.hasWorking){this.hasWorking=!1;return}for(const n of this.upHandlers)if(n.enable(e,t)){n.handle(e,t);return}}}}class Qr extends Ve{constructor(t){super(t);g(this,"deltaDistance",1);g(this,"locked",!1);g(this,"firstPointerDown",!1)}canBeEnable(t,n){return t.type===yt.pointerDown?this.firstPointerDown?(this.locked=!0,!0):(this.firstPointerDown=!0,setTimeout(()=>{this.firstPointerDown=!1},300),!1):!1}work(t,n){this.firstPointerDown&&t.type===yt.pointerup&&(this.locked=!1),t.type===yt.pointermove&&T.distance(n.lastInteractiveEvent.globalPoint,t.globalPoint)>this.deltaDistance/n.gmlRender.getScale()&&(this.locked=!1),this.firstPointerDown||(this.locked=!1),super.work(t,n)}canBeExit(t,n){const s=!this.locked;return s&&this.stop(t,n),s}}class ae extends Ve{constructor(t,n=[]){super(n);g(this,"streamProcessor");g(this,"deltaDistance",1);g(this,"locked",!1);this.streamProcessor=t}onDown(t,n){}canBeEnable(t,n){var i;if(t.type===yt.pointerDown&&this.onDown(t,n),!(((i=n.lastDiffTypeEvent)==null?void 0:i.type)===yt.pointerDown&&t.type===yt.pointermove))return!1;const r=n.lastDiffTypeEvent.globalPoint;if(T.distance(r,t.globalPoint)<this.deltaDistance/n.gmlRender.getScale())return!1;const o=this.streamEnable(n.lastDiffTypeEvent,n);if(o){this.locked=!0;for(const a of this.streamProcessor)a.onStart(n.lastDiffTypeEvent,n)}return o}work(t,n){if(t.type===yt.pointermove)for(const s of this.streamProcessor)s.onMove(t,n);if(t.type===yt.pointerup){for(const s of this.streamProcessor)s.onUp(t,n);this.locked=!1}super.work(t,n)}canBeExit(t,n){const s=!this.locked;return s&&this.stop(t,n),s}isStreaming(){return this.locked}}class Kn{constructor(e){g(this,"currentSubMode");g(this,"subModes",[]);this.subModes=e,this.currentSubMode=e[e.length-1]}canBeExit(e,t){return this.currentSubMode.canBeExit(e,t)}work(e,t){this.detect(e,t),this.currentSubMode.work(e,t)}detect(e,t){if(this.currentSubMode.canBeExit(e,t)){for(const n of this.subModes)if(n.canBeEnable(e,t)){this.currentSubMode=n;return}}}}class qs extends Ve{constructor(t,n=[]){super(n);g(this,"streamProcessor");g(this,"locked",!1);this.streamProcessor=t}canBeEnable(t,n){if(t.type!==yt.pointerDown)return!1;const s=this.streamEnable(t,n);return s&&(this.locked=!0),s}work(t,n){if(t.type===yt.pointerDown)for(const s of this.streamProcessor)s.onStart(t,n);if(t.type===yt.pointermove)for(const s of this.streamProcessor)s.onMove(t,n);if(t.type===yt.pointerup){for(const s of this.streamProcessor)s.onUp(t,n);this.locked=!1}super.work(t,n)}canBeExit(t,n){const s=!this.locked;return s&&this.stop(t,n),s}isStreaming(){return this.locked}}class ge{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointerDown,yt.pointermove,yt.pointerup]))}process(e,t){}}const Yh=5;class ha{}class da extends ne{onDetect(e,t){if(t.detect(W.Stretch,e)||t.detect(W.Rotate,e)||t.detect(W.LineEndPoint,e))return!1;const o=e.globalPoint,i=t.nodeManager.searchNodes(o.x,o.y);let a=[];for(const c of i)c.type!==A.Group&&c.contains(e.globalPoint,t.gmlRender.getScale())&&a.push(c);return a.length===0?(this.result=null,!1):(a=T.sortGraphics(a),a.reverse(),this.result=a,!0)}}class ua extends ne{onDetect(e,t){const n=t.detect(W.Node,e);if(!n)return!1;const s=n[0];if(n.length===1&&t.auxiliaryManager.selectManager.include(s))return!1;if(e.originEvent.metaKey)return this.result=s,!0;const r=t.getSelectNodes(),o=xs.findHoverNode(s,r);return o?(this.result=o,!0):(this.result=s,!0)}}const Ar=class Ar extends ne{computeLocalPoint(e,t,n){if(e.length===1){const i=e[0],a=i.baseProps,c=i.toLocal(t.globalPoint),h=D.baseProps2Rect(a);return{localPoint:c,rect:h}}const s=n.auxiliaryManager.selectManager.getSelectBounds(),r=D.rectNode2Rect(s);return{localPoint:new m(t.globalPoint.x-r.x,t.globalPoint.y-r.y),rect:r}}onDetect(e,t){const n=t.auxiliaryManager.selectManager.selectNodes;if(n.size===0)return!1;const s=xs.flattenNodes([...n]),r=t.gmlRender.getScale(),o=Ar.HOT_DISTANCE/r,{rect:i,localPoint:a}=this.computeLocalPoint(s,e,t),c=new D(0,0,i.width,i.height),h=T.detectRectBounds(c,a,o);return h?(this.result={nodes:s,type:h.type},!0):!1}};g(Ar,"HOT_DISTANCE",8);let $s=Ar;class pa extends ge{constructor(){super(...arguments);g(this,"start",null)}onStart(t,n){const{renderText:s,node:r}=n.inputManager.editTextInfo,o=r.toLocal(t.globalPoint),i=s.detect(o);n.setCursor("text"),this.start=i,n.execAction(new nt)}onMove(t,n){const{renderText:s,node:r}=n.inputManager.editTextInfo,o=r.toLocal(t.globalPoint),i=s.detect(o);n.execAction(lt.selection(r.id,this.start,i))}onUp(t,n){const{renderText:s,node:r}=n.inputManager.editTextInfo,o=r.toLocal(t.globalPoint),i=s.detect(o);this.start.equal(i)?n.execAction(lt.focus(r.id,this.start)):n.execAction(lt.selection(r.id,this.start,i)),n.execAction(new et)}}class fa extends ae{constructor(){super([new pa])}streamEnable(e,t){const n=t.inputManager.editTextInfo;if(!n)return!1;const{node:s,renderText:r}=n,o=s.getTextContentRect(),i=s.toLocal(e.globalPoint);return!!T.rectContains(i,o)}}class Zr{constructor(){g(this,"parentGroupSet",new Set)}start(e){this.parentGroupSet.clear();for(const t of e)xs.addAllParentToSet(t,this.parentGroupSet)}work(e,t){if(this.parentGroupSet.size===0)return;const n=T.sortGraphics([...this.parentGroupSet]).reverse(),s=[];for(const r of n){const o=r.computeBasePropsByChildren();s.push({id:r.id,props:[o]})}e.execAction(new ct({infos:s},{streaming:t}))}}class Ps{}class Fh extends Ps{enable(e){return!(!(e instanceof _n)||e.cropProps.cropType===de.None||!e.cropProps.cropInfo)}handle(e,t,n,s,r){const o=this.handleCropProp(e,t,n,s,r);return[{id:e.id,props:[o]}]}handleCropProp(e,t,n,s,r){const o=t.crop,i=t.crop.globalImgPos,a=o.originCropProps,c=a.cropType,h=r.crossPoint(new m(i.x,i.y)),d=e.toLocal(h);return{type:R.Crop,cropInfo:{imgX:d.x,imgY:d.y,imgWidth:a.cropInfo.imgWidth*n,imgHeight:a.cropInfo.imgHeight*s},cropType:c}}}class Qs extends ge{constructor(){super(...arguments);g(this,"minStretchSize",new m(0,0));g(this,"originPos",new m(0,0));g(this,"originStretchRect");g(this,"propsMap",new Map);g(this,"originTransform",Z.generateMatrix());g(this,"viewBounds");g(this,"target",null);g(this,"alignWorker",new cn);g(this,"alignType",It.width);g(this,"originWidthHeightRatio",1);g(this,"isUniform",!1);g(this,"relatedLines",new Set);g(this,"layoutWorker",new Ms);g(this,"cropStretchHandler",new Fh);g(this,"groupBaseWorker",new Zr)}recordNodePropInfo(t){const{x:n,y:s,width:r,height:o}=t.globalBaseProps,i=this.originTransform.crossPoint({x:n,y:s}),a={x:i.x,y:i.y,width:r,height:o};if(t instanceof _n){const c=t.cropProps,h=t.getOriginImageRect().clone(),d=t.toGlobal({x:h.x,y:h.y}),u={originCropProps:c.clone(),originImgRect:h,originTransform:t.globalTransform().inverseMatrix().clone(),globalImgPos:this.originTransform.crossPoint(d)};a.crop=u}return a}computeAnchorPoint(t,n){const{width:s,height:r}=n;switch(t.type){case G.TOP:return this.alignType=It.height,{x:.5*s,y:r};case G.RIGHT:return this.alignType=It.width,{x:0,y:.5*r};case G.BOTTOM:return this.alignType=It.height,{x:.5*s,y:0};case G.LEFT:return this.alignType=It.width,{x:s,y:.5*r};case G.TOP_LEFT:return this.alignType=It.both,{x:s,y:r};case G.TOP_RIGHT:return this.alignType=It.both,{x:0,y:r};case G.BOTTOM_RIGHT:return this.alignType=It.both,{x:0,y:0};case G.BOTTOM_LEFT:default:return this.alignType=It.both,{x:s,y:0}}}judgeUniform(t){this.isUniform=!1;const n=this.target.nodes;for(const s of n){if(Math.abs(s.baseProps.angle)>.1){this.isUniform=!0;return}if(s.type===A.SVG||s.type===A.IMG){this.isUniform=!0;return}}}computeStretchRect(t,n){switch(this.target.type){case G.BOTTOM:t.height+=n.y;break;case G.LEFT:t.x+=n.x,t.width-=n.x;break;case G.RIGHT:t.width+=n.x;break;case G.TOP:t.y+=n.y,t.height-=n.y;break;case G.BOTTOM_LEFT:t.height+=n.y,t.x+=n.x,t.width-=n.x;break;case G.BOTTOM_RIGHT:t.height+=n.y,t.width+=n.x;break;case G.TOP_LEFT:t.y+=n.y,t.height-=n.y,t.x+=n.x,t.width-=n.x;break;case G.TOP_RIGHT:t.y+=n.y,t.height-=n.y,t.width+=n.x;break}t.width<this.minStretchSize.x&&(t.width=this.minStretchSize.x),t.height<this.minStretchSize.y&&(t.height=this.minStretchSize.y)}computeTarget(t,n){this.target=n.detect(W.Stretch,t)}onStart(t,n){this.computeTarget(t,n),this.originStretchRect=this.getStretchRect(n),this.originWidthHeightRatio=this.originStretchRect.width/this.originStretchRect.height,this.computeOriginTransform(n),this.minStretchSize=this.getMiniSize(n),this.judgeUniform(n),this.originPos=this.originTransform.crossPoint(n.lastDiffTypeEvent.globalPoint),this.recordPropsMap(n),this.relatedLines.clear();for(const r of this.target.nodes)this.layoutWorker.collectNodeLinks(r,n,this.relatedLines);this.groupBaseWorker.start(this.target.nodes),this.viewBounds=n.gmlRender.getViewPortBounds(),n.actionManager.execAction(new nt);const s=[];if(this.target.type===G.BOTTOM||this.target.type===G.BOTTOM_LEFT||this.target.type===G.BOTTOM_RIGHT)for(const r of this.target.nodes)s.push({id:r.id,props:[{type:R.Text,sizeMode:le.fix}]});n.actionManager.execAction(new ct({infos:s})),n.inputManager.editTextInfo&&n.execAction(lt.blur(n.inputManager.editTextInfo.node.id))}onMove(t,n){n.auxiliaryManager.removeAlignGraphics(),this.stretchNode(t,n,!0)}onUp(t,n){this.stretchNode(t,n,!1),n.actionManager.execAction(new et),n.auxiliaryManager.removeAlignGraphics()}alignStretchGlobalPoint(t,n){const s=new Set(this.target.nodes);return this.alignWorker.alignLineEndAndDrawAlignLines(t,n,s)}stretchNode(t,n,s){const r=this.alignStretchGlobalPoint(t,n),o=this.originTransform.crossPoint(r),i=new m(o.x-this.originPos.x,o.y-this.originPos.y),a=this.originStretchRect.clone();this.computeStretchRect(a,i);const c=n.gmlRender.getScale(),h=new Set(this.target.nodes),d=this.alignWorker.alignStretch(n,a,h,this.alignType,this.viewBounds,js/c,Ks/c);this.drawAlignLine(a,d,n);const{sx:u,sy:p}=this.computeScale(a),f=Z.generateMatrix().scale(u,p),y=this.originTransform.inverseMatrix().crossProduct(f),w=[],b=[],x=[];for(const[v,C]of this.propsMap){for(const E of this.handlers)if(E.enable(v)){const k=E.handle(v,C,u,p,y);w.push(...k);break}v.type===A.SVG&&b.push(v),this.cropStretchHandler.enable(v)&&x.push(v)}n.execAction(new ct({infos:w},{streaming:s})),this.afterStretchNode(n,u,p,y,s,x,b),this.layoutWorker.work([...this.relatedLines],n,s),this.groupBaseWorker.work(n,s)}afterStretchNode(t,n,s,r,o,i,a){if(i.length>0){const c=[];i.forEach(h=>{c.push(...this.cropStretchHandler.handle(h,this.propsMap.get(h),n,s,r))}),t.execAction(new ct({infos:c},{streaming:o}))}if(t.asyncRenderNodeManager.batchAddRenderNode(a),this.target.type===G.BOTTOM_RIGHT){const c=[...this.target.nodes],h=c[0];if(c.length===1)t.addOrUpdate(N.HoverSize,{rect:D.baseProps2Rect(h.baseProps),transform:h.globalTransform().clone()});else{const d=t.auxiliaryManager.selectManager.getSelectBounds();t.addOrUpdate(N.HoverSize,{rect:D.rectNode2Rect(d),transform:Z.generateMatrix().translate(d.minX,d.minY)})}}}computeScale(t){let n=t.width/this.originStretchRect.width,s=t.height/this.originStretchRect.height;if(!this.isUniform)return{sx:n,sy:s};const r=this.target.type;if(r===G.BOTTOM||r===G.TOP)return n=s,{sx:n,sy:s};if(r===G.LEFT||r===G.RIGHT)return s=n,{sx:n,sy:s};const o=t.width/t.height;return o>this.originWidthHeightRatio?s=n:o<this.originWidthHeightRatio&&(n=s),{sx:n,sy:s}}}class Vh extends Ps{enable(e){return!0}handle(e,t,n,s,r){const o=r.crossPoint({x:t.x,y:t.y}),i=e.parent.toLocal(o);return[{id:e.id,props:[{type:R.Base,x:i.x,y:i.y,width:t.width*n,height:t.height*s}]}]}}class ga extends Qs{constructor(){super(...arguments);g(this,"handlers",[new Vh])}getStretchRect(t){const n=[...t.getSelectNodes()];return D.baseProps2Rect(n[0].baseProps)}getMiniSize(t){return[...t.getSelectNodes()][0].getStretchMinSize()}recordPropsMap(t){this.propsMap.clear();const n=this.target.nodes;for(const s of n){const r=this.recordNodePropInfo(s);this.propsMap.set(s,r)}}judgeUniform(t){this.isUniform=!1;const n=this.target.nodes[0];if(n.type===A.SVG||n.type===A.IMG){this.isUniform=!0;return}}computeOriginTransform(t){const n=this.target,s=[...t.getSelectNodes()][0],{x:r,y:o,width:i,height:a,angle:c}=s.globalBaseProps,h=Z.generateMatrix().rotate(-c),d=Z.generateMatrix().translate(-r,-o),u=this.computeAnchorPoint(n,new D(0,0,i,a)),f=Z.generateMatrix().translate(-u.x,-u.y).crossProduct(h.crossProduct(d));this.originTransform=f}drawAlignLine(t,n,s){const r=this.target.nodes[0],o=r.baseProps,{width:i,height:a}=n,c=r.globalTransform().clone();if(i){t.width+=i.dt;const h={transform:c,line:{start:new m(0,o.height),end:new m(o.width,o.height)}};i.lines.push(h)}if(a){t.height+=a.dt;const h={transform:c,line:{start:new m(o.width,0),end:new m(o.width,o.height)}};a.lines.push(h)}s.addOrUpdate(N.AlignStretchLine,{alignInfo:n})}}class ya extends ae{constructor(){super([new ga])}streamEnable(e,t){const n=t.detect(W.Stretch,e);return n?n.nodes.length===1:!1}}class Jr{handleChangeRelation(e,t,n){if(e.parent===t)return[];if(e.parent.type===A.Group)return[];const s=e.globalPos,r=t.toLocal(s);return[{id:e.id,props:[{type:R.Base,x:r.x,y:r.y}],parentId:t.id,zIndex:n}]}}class Wh extends Jr{enable(e){return e.type===A.Line}handle(e,t){const n=e.baseProps.clone();n.x+=t.x,n.y+=t.y;const s=e.getProp(R.Line).clone();for(const r of s.points)r.x+=t.x,r.y+=t.y;return[{id:e.id,props:[n,s]}]}handleChangeRelation(e,t,n){if(e.parent===t)return[];const s=e.globalLinePoints,r=t.globalTransform().inverseMatrix(),o=s.map(a=>r.crossPoint(a)),i=T.getBoundsByPoints(o);return[{id:e.id,props:[{type:R.Base,x:i.minX,y:i.minY},{type:R.Line,points:o}],parentId:t.id,zIndex:n}]}}class Gh extends Jr{enable(e){return!0}handle(e,t){const n=e.baseProps.clone();return n.x+=t.x,n.y+=t.y,[{id:e.id,props:[n]}]}}class to{work(e){const t=e.getSelectNodes();if(t.size===0)return null;const n=D.rectNode2Rect(e.auxiliaryManager.selectManager.getSelectBounds()),s=[],r=[];for(const o of t){const i=this.makeupPasteDO(o,!0,r);s.push(i)}return{meta:{docId:e.docState.docId},nodes:s,bounds:n,resources:r}}makeupPasteDO(e,t=!1,n){const{id:s,zIndex:r,capInfo:o,type:i}=e.serializeTo(),a={id:s,type:i,zIndex:r,capInfo:o,children:[]};if(this.collectResourceInfo(e,n),t){const u=e.globalPos;a.capInfo.baseProps.x=u.x,a.capInfo.baseProps.y=u.y}const c=e.children;if(c.size===0)return a;const h=[],d=t&&e.type===A.Group;for(const u of c)h.push(this.makeupPasteDO(u,d,n));return a.children=h,a}collectResourceInfo(e,t){if(e.type===A.IMG){const n=e;t.push({type:Gs.Image,fileKey:n.imgSrc})}if(e.type===A.SVG){const n=e;t.push({type:Gs.SVG,fileKey:n.svgUrl})}}}class bs{}class ma extends bs{handle(e,t){const n=e.find(s=>s.type===R.Base);n&&(n.x+=t.x,n.y+=t.y)}}class wa extends bs{handle(e,t,n){const s=e.find(i=>i.type===R.Connect);if(!s)return;const{start:r,end:o}=s;if(r){const i=n.get(r.objectId);i?r.objectId=i:s.start=null}if(o){const i=n.get(o.objectId);i?o.objectId=i:s.end=null}}}class xa extends bs{handle(e,t){const n=e.find(s=>s.type===R.Line);if(n)for(const s of n.points)s.x+=t.x,s.y+=t.y}}var An=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof global<"u"?global:typeof self<"u"?self:{};function eo(l){return l&&l.__esModule&&Object.prototype.hasOwnProperty.call(l,"default")?l.default:l}function Uh(l){if(l.__esModule)return l;var e=l.default;if(typeof e=="function"){var t=function n(){return this instanceof n?Reflect.construct(e,arguments,this.constructor):e.apply(this,arguments)};t.prototype=e.prototype}else t={};return Object.defineProperty(t,"__esModule",{value:!0}),Object.keys(l).forEach(function(n){var s=Object.getOwnPropertyDescriptor(l,n);Object.defineProperty(t,n,s.get?s:{enumerable:!0,get:function(){return l[n]}})}),t}var Pa={exports:{}};function _h(l){throw new Error('Could not dynamically require "'+l+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var no={exports:{}};const Kh=Uh(Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"})));var ba;function jh(){return ba||(ba=1,function(l,e){(function(t,n){l.exports=n()})(An,function(){var t=t||function(n,s){var r;if(typeof window<"u"&&window.crypto&&(r=window.crypto),typeof self<"u"&&self.crypto&&(r=self.crypto),typeof globalThis<"u"&&globalThis.crypto&&(r=globalThis.crypto),!r&&typeof window<"u"&&window.msCrypto&&(r=window.msCrypto),!r&&typeof An<"u"&&An.crypto&&(r=An.crypto),!r&&typeof _h=="function")try{r=Kh}catch{}var o=function(){if(r){if(typeof r.getRandomValues=="function")try{return r.getRandomValues(new Uint32Array(1))[0]}catch{}if(typeof r.randomBytes=="function")try{return r.randomBytes(4).readInt32LE()}catch{}}throw new Error("Native crypto module could not be used to get secure random number.")},i=Object.create||function(){function x(){}return function(v){var C;return x.prototype=v,C=new x,x.prototype=null,C}}(),a={},c=a.lib={},h=c.Base=function(){return{extend:function(x){var v=i(this);return x&&v.mixIn(x),(!v.hasOwnProperty("init")||this.init===v.init)&&(v.init=function(){v.$super.init.apply(this,arguments)}),v.init.prototype=v,v.$super=this,v},create:function(){var x=this.extend();return x.init.apply(x,arguments),x},init:function(){},mixIn:function(x){for(var v in x)x.hasOwnProperty(v)&&(this[v]=x[v]);x.hasOwnProperty("toString")&&(this.toString=x.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),d=c.WordArray=h.extend({init:function(x,v){x=this.words=x||[],v!=s?this.sigBytes=v:this.sigBytes=x.length*4},toString:function(x){return(x||p).stringify(this)},concat:function(x){var v=this.words,C=x.words,E=this.sigBytes,k=x.sigBytes;if(this.clamp(),E%4)for(var I=0;I<k;I++){var V=C[I>>>2]>>>24-I%4*8&255;v[E+I>>>2]|=V<<24-(E+I)%4*8}else for(var U=0;U<k;U+=4)v[E+U>>>2]=C[U>>>2];return this.sigBytes+=k,this},clamp:function(){var x=this.words,v=this.sigBytes;x[v>>>2]&=4294967295<<32-v%4*8,x.length=n.ceil(v/4)},clone:function(){var x=h.clone.call(this);return x.words=this.words.slice(0),x},random:function(x){for(var v=[],C=0;C<x;C+=4)v.push(o());return new d.init(v,x)}}),u=a.enc={},p=u.Hex={stringify:function(x){for(var v=x.words,C=x.sigBytes,E=[],k=0;k<C;k++){var I=v[k>>>2]>>>24-k%4*8&255;E.push((I>>>4).toString(16)),E.push((I&15).toString(16))}return E.join("")},parse:function(x){for(var v=x.length,C=[],E=0;E<v;E+=2)C[E>>>3]|=parseInt(x.substr(E,2),16)<<24-E%8*4;return new d.init(C,v/2)}},f=u.Latin1={stringify:function(x){for(var v=x.words,C=x.sigBytes,E=[],k=0;k<C;k++){var I=v[k>>>2]>>>24-k%4*8&255;E.push(String.fromCharCode(I))}return E.join("")},parse:function(x){for(var v=x.length,C=[],E=0;E<v;E++)C[E>>>2]|=(x.charCodeAt(E)&255)<<24-E%4*8;return new d.init(C,v)}},y=u.Utf8={stringify:function(x){try{return decodeURIComponent(escape(f.stringify(x)))}catch{throw new Error("Malformed UTF-8 data")}},parse:function(x){return f.parse(unescape(encodeURIComponent(x)))}},w=c.BufferedBlockAlgorithm=h.extend({reset:function(){this._data=new d.init,this._nDataBytes=0},_append:function(x){typeof x=="string"&&(x=y.parse(x)),this._data.concat(x),this._nDataBytes+=x.sigBytes},_process:function(x){var v,C=this._data,E=C.words,k=C.sigBytes,I=this.blockSize,V=I*4,U=k/V;x?U=n.ceil(U):U=n.max((U|0)-this._minBufferSize,0);var J=U*I,j=n.min(J*4,k);if(J){for(var st=0;st<J;st+=I)this._doProcessBlock(E,st);v=E.splice(0,J),C.sigBytes-=j}return new d.init(v,j)},clone:function(){var x=h.clone.call(this);return x._data=this._data.clone(),x},_minBufferSize:0});c.Hasher=w.extend({cfg:h.extend(),init:function(x){this.cfg=this.cfg.extend(x),this.reset()},reset:function(){w.reset.call(this),this._doReset()},update:function(x){return this._append(x),this._process(),this},finalize:function(x){x&&this._append(x);var v=this._doFinalize();return v},blockSize:16,_createHelper:function(x){return function(v,C){return new x.init(C).finalize(v)}},_createHmacHelper:function(x){return function(v,C){return new b.HMAC.init(x,C).finalize(v)}}});var b=a.algo={};return a}(Math);return t})}(no)),no.exports}(function(l,e){(function(t,n){l.exports=n(jh())})(An,function(t){return function(n){var s=t,r=s.lib,o=r.WordArray,i=r.Hasher,a=s.algo,c=[];(function(){for(var y=0;y<64;y++)c[y]=n.abs(n.sin(y+1))*4294967296|0})();var h=a.MD5=i.extend({_doReset:function(){this._hash=new o.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(y,w){for(var b=0;b<16;b++){var x=w+b,v=y[x];y[x]=(v<<8|v>>>24)&16711935|(v<<24|v>>>8)&4278255360}var C=this._hash.words,E=y[w+0],k=y[w+1],I=y[w+2],V=y[w+3],U=y[w+4],J=y[w+5],j=y[w+6],st=y[w+7],tt=y[w+8],it=y[w+9],ht=y[w+10],xt=y[w+11],mt=y[w+12],ut=y[w+13],ot=y[w+14],q=y[w+15],B=C[0],H=C[1],z=C[2],X=C[3];B=d(B,H,z,X,E,7,c[0]),X=d(X,B,H,z,k,12,c[1]),z=d(z,X,B,H,I,17,c[2]),H=d(H,z,X,B,V,22,c[3]),B=d(B,H,z,X,U,7,c[4]),X=d(X,B,H,z,J,12,c[5]),z=d(z,X,B,H,j,17,c[6]),H=d(H,z,X,B,st,22,c[7]),B=d(B,H,z,X,tt,7,c[8]),X=d(X,B,H,z,it,12,c[9]),z=d(z,X,B,H,ht,17,c[10]),H=d(H,z,X,B,xt,22,c[11]),B=d(B,H,z,X,mt,7,c[12]),X=d(X,B,H,z,ut,12,c[13]),z=d(z,X,B,H,ot,17,c[14]),H=d(H,z,X,B,q,22,c[15]),B=u(B,H,z,X,k,5,c[16]),X=u(X,B,H,z,j,9,c[17]),z=u(z,X,B,H,xt,14,c[18]),H=u(H,z,X,B,E,20,c[19]),B=u(B,H,z,X,J,5,c[20]),X=u(X,B,H,z,ht,9,c[21]),z=u(z,X,B,H,q,14,c[22]),H=u(H,z,X,B,U,20,c[23]),B=u(B,H,z,X,it,5,c[24]),X=u(X,B,H,z,ot,9,c[25]),z=u(z,X,B,H,V,14,c[26]),H=u(H,z,X,B,tt,20,c[27]),B=u(B,H,z,X,ut,5,c[28]),X=u(X,B,H,z,I,9,c[29]),z=u(z,X,B,H,st,14,c[30]),H=u(H,z,X,B,mt,20,c[31]),B=p(B,H,z,X,J,4,c[32]),X=p(X,B,H,z,tt,11,c[33]),z=p(z,X,B,H,xt,16,c[34]),H=p(H,z,X,B,ot,23,c[35]),B=p(B,H,z,X,k,4,c[36]),X=p(X,B,H,z,U,11,c[37]),z=p(z,X,B,H,st,16,c[38]),H=p(H,z,X,B,ht,23,c[39]),B=p(B,H,z,X,ut,4,c[40]),X=p(X,B,H,z,E,11,c[41]),z=p(z,X,B,H,V,16,c[42]),H=p(H,z,X,B,j,23,c[43]),B=p(B,H,z,X,it,4,c[44]),X=p(X,B,H,z,mt,11,c[45]),z=p(z,X,B,H,q,16,c[46]),H=p(H,z,X,B,I,23,c[47]),B=f(B,H,z,X,E,6,c[48]),X=f(X,B,H,z,st,10,c[49]),z=f(z,X,B,H,ot,15,c[50]),H=f(H,z,X,B,J,21,c[51]),B=f(B,H,z,X,mt,6,c[52]),X=f(X,B,H,z,V,10,c[53]),z=f(z,X,B,H,ht,15,c[54]),H=f(H,z,X,B,k,21,c[55]),B=f(B,H,z,X,tt,6,c[56]),X=f(X,B,H,z,q,10,c[57]),z=f(z,X,B,H,j,15,c[58]),H=f(H,z,X,B,ut,21,c[59]),B=f(B,H,z,X,U,6,c[60]),X=f(X,B,H,z,xt,10,c[61]),z=f(z,X,B,H,I,15,c[62]),H=f(H,z,X,B,it,21,c[63]),C[0]=C[0]+B|0,C[1]=C[1]+H|0,C[2]=C[2]+z|0,C[3]=C[3]+X|0},_doFinalize:function(){var y=this._data,w=y.words,b=this._nDataBytes*8,x=y.sigBytes*8;w[x>>>5]|=128<<24-x%32;var v=n.floor(b/4294967296),C=b;w[(x+64>>>9<<4)+15]=(v<<8|v>>>24)&16711935|(v<<24|v>>>8)&4278255360,w[(x+64>>>9<<4)+14]=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360,y.sigBytes=(w.length+1)*4,this._process();for(var E=this._hash,k=E.words,I=0;I<4;I++){var V=k[I];k[I]=(V<<8|V>>>24)&16711935|(V<<24|V>>>8)&4278255360}return E},clone:function(){var y=i.clone.call(this);return y._hash=this._hash.clone(),y}});function d(y,w,b,x,v,C,E){var k=y+(w&b|~w&x)+v+E;return(k<<C|k>>>32-C)+w}function u(y,w,b,x,v,C,E){var k=y+(w&x|b&~x)+v+E;return(k<<C|k>>>32-C)+w}function p(y,w,b,x,v,C,E){var k=y+(w^b^x)+v+E;return(k<<C|k>>>32-C)+w}function f(y,w,b,x,v,C,E){var k=y+(b^(w|~x))+v+E;return(k<<C|k>>>32-C)+w}s.MD5=i._createHelper(h),s.HmacMD5=i._createHmacHelper(h)}(Math),t.MD5})})(Pa);var qh=Pa.exports;const $h=eo(qh);class Qt{constructor(){g(this,"prefix","001");g(this,"map",new Map);g(this,"zIndex",0)}setPrefix(e){this.prefix=e}genId(e){const t=(this.map.get(e)||0)+1;return this.map.set(e,t),Qt.type2NodePrefix(e)+this.prefix+":"+t}static genImgFileName(e,t){const n="img:"+e+"|"+t;return $h(n).toString()}loadNode(e){this.loadNodeId(e.id)}loadNodeId(e){const t=Qt.nodePrefix2Type(e[0]),n=e.split(":");try{const s=parseInt(n[1]),r=this.map.get(t);r!==void 0?r<s&&this.map.set(t,s):this.map.set(t,s)}catch(s){console.error("id错误",s)}}static genZIndex(e){return e.children.size===0?1:[...e.children].sort((n,s)=>s.zIndex-n.zIndex)[0].zIndex+1}static type2NodePrefix(e){switch(e){case A.Shape:return"a";case A.Line:return"c";case A.SVG:return"d";case A.IMG:return"e";case A.Section:return"f";case A.Group:return"g";default:return"x"}}static nodePrefix2Type(e){return e==="a"?A.Shape:e==="c"?A.Line:e==="d"?A.SVG:e==="e"?A.IMG:e==="f"?A.Section:e==="g"?A.Group:A.Shape}}class va{work(e,t,n,s){const r=new Map;this.recordIdMap(t,e,r);const o=[],i=[];for(const c of t){const h=this.convertToAddNodeInfo(e,c,r,n,o,Un,s);i.push(h)}return{addNodeData:{nodes:o},nextFocusIds:i}}convertToAddNodeInfo(e,t,n,s,r,o,i){const a=n.get(t.id),c=this.convertToProps(t.capInfo,s,n,i),h={id:a,type:t.type,zIndex:Qt.genZIndex(e.nodeManager.root),parentId:o,props:c};r.push(h);const d=new m;t.type===A.Group&&(d.x=s.x,d.y=s.y);for(const u of t.children)this.convertToAddNodeInfo(e,u,n,d,r,a,i);return a}convertToProps(e,t,n,s){const r=T.convertCapInfoToProps(e);for(const o of this.propsHandler)o.handle(r,t,n,s);return r}recordIdMap(e,t,n){for(const s of e){const r=t.idGenerator.genId(s.type);n.set(s.id,r);const o=s.children;this.recordIdMap(o,t,n)}}}class Ma extends va{constructor(){super(...arguments);g(this,"propsHandler",[new ma,new wa,new xa])}}class Sa{constructor(){g(this,"copyWorker",new to);g(this,"pasteWorker",new Ma)}work(e,t){const n=this.copyWorker.work(e);if(!n)return;let s;t?s=t:s=new m(20,20);const r=n.nodes,o=JSON.parse(JSON.stringify(r)),{addNodeData:i,nextFocusIds:a}=this.pasteWorker.work(e,o,s);e.execAction(new Yt(i)),e.execAction(Pt.create(a))}}class Qh extends Jr{enable(e){return e.type===A.Group}handle(e,t,n){const s=[],r=e.baseProps.clone();r.x+=t.x,r.y+=t.y,s.push({id:e.id,props:[r]});for(const o of e.children)s.push(...n.handle(o,t));return s}handleChangeRelation(e,t,n){if(e.parent===t)return[];if(e.parent.type===A.Group)return[];const s=e.globalPos,r=t.toLocal(s),o=[];o.push({id:e.id,props:[{type:R.Base,x:r.x,y:r.y}],parentId:t.id,zIndex:n});for(const i of e.children)this.handlePosChange(i,t,o);return o}handlePosChange(e,t,n){if(e.type===A.Line){const r=e.globalLinePoints.map(a=>t.toLocal(a)),o=D.rectNode2Rect(T.getBoundsByPoints(r)),i={id:e.id,props:[{type:R.Line,points:r},{type:R.Base,x:o.x,y:o.y,width:o.width,height:o.height}]};n.push(i)}else{const s=e.globalPos,r=t.toLocal(s),o={id:e.id,props:[{type:R.Base,x:r.x,y:r.y}]};n.push(o)}if(e.type===A.Group)for(const s of e.children)this.handlePosChange(s,t,n)}}class Zh{constructor(e){g(this,"handlers");this.handlers=e}handle(e,t){for(const n of this.handlers)if(n.enable(e))return n.handle(e,t,this);return[]}handleRelation(e,t,n){for(const s of this.handlers)if(s.enable(e))return s.handleChangeRelation(e,t,n);return[]}}class Ta extends ge{constructor(){super(...arguments);g(this,"moveRect",null);g(this,"lastPos",new m(0,0));g(this,"lastMoveRectPos",new m);g(this,"targetNodes",[]);g(this,"alignWorker",new cn);g(this,"layoutWorker",new Ms);g(this,"duplicateWorker",new Sa);g(this,"groupBaseWorker",new Zr);g(this,"handlerCtx",new Zh([new Wh,new Qh,new Gh]))}computeMoveNodes(t,n){t.originEvent.altKey&&this.duplicateWorker.work(n,new m);const s=n.getSelectNodes(),r=this.recordNodeMap(s),o=[];for(const i of s){if(i.type===A.Line){const a=i,{start:c,end:h}=a.connectProps;if(c&&h||!c&&h&&!r.has(h.objectId)||!h&&c&&!r.has(c.objectId))continue}o.push(i)}return o}recordNodeMap(t){const n=new Map;for(const s of t)n.set(s.id,s);return n}onStart(t,n){n.actionManager.execAction(new nt),this.targetNodes=this.computeMoveNodes(t,n),this.lastPos=t.globalPoint.clone(),this.moveRect=n.auxiliaryManager.selectManager.getSelectBounds(),this.lastMoveRectPos=new m(this.moveRect.minX,this.moveRect.minY),n.inputManager.editTextInfo&&n.execAction(lt.blur(n.inputManager.editTextInfo.node.id)),this.groupBaseWorker.start(this.targetNodes)}onMove(t,n){n.auxiliaryManager.removeAlignGraphics(),this.moveNode(t.globalPoint,n,!0);const s=this.hoverOnContainer(t,n);s&&n.addOrUpdate(N.HoverContainer,{node:s})}judgeLinkLineRelation(t,n,s){const{start:r,end:o}=t.connectProps;let i=null,a=null;return r&&(i=n.nodeManager.getNode(r.objectId)),o&&(a=n.nodeManager.getNode(o.objectId)),i?!!(!a||s.has(a)):a?!!s.has(a):!1}onUp(t,n){this.moveNode(t.globalPoint,n,!1),this.changeNodesRelation(t,n),n.actionManager.execAction(new et),n.auxiliaryManager.removeAlignGraphics()}changeNodesRelation(t,n){const s=this.hoverOnContainer(t,n)||n.nodeManager.root,r=n.getSelectNodes(),o=new Set(r),i=new Set;for(const u of r)n.nodeManager.getNodeLinks(u).forEach(f=>i.add(f));for(const u of i)this.judgeLinkLineRelation(u,n,r)&&o.add(u);const a=[],c=Math.max(...[...s.children].map(u=>u.zIndex));let h=1;const d=T.sortGraphics([...o]);for(const u of d){if(u.parent===s)continue;const p=this.handlerCtx.handleRelation(u,s,c+h);a.push(...p),h++}console.log("update nodes:",a.map(u=>u.id)),a.length>0&&n.execAction(new ct({infos:a}))}moveNode(t,n,s){const r=new m(t.x-this.lastPos.x,t.y-this.lastPos.y),o=T.cloneIRectNode(this.moveRect);this.moveRectChange(this.moveRect,r);const i=this.alignWorker.alignMove(this.moveRect,n.getSelectNodes(),n),a=this.alignWorker.drawAlignLines(i,n),c=this.checkAlign(i);r.x+=a.x,r.y+=a.y,this.moveRectChange(o,r);const h=c?o:this.moveRect,d=new m(h.minX,h.minY),u={x:d.x-this.lastMoveRectPos.x,y:d.y-this.lastMoveRectPos.y},p=[],f=new Set;for(const y of this.targetNodes){const w=this.handlerCtx.handle(y,u);p.push(...w),this.layoutWorker.collectNodeLinks(y,n,f)}n.execAction(new ct({infos:p},{streaming:s})),this.groupBaseWorker.work(n,s),this.layoutWorker.work([...f],n,s),this.lastPos=t,this.lastMoveRectPos=d}hoverOnContainer(t,n){const s=n.detect(W.HoverOnContainer,t);return s||null}moveRectChange(t,n){t.minX+=n.x,t.maxX+=n.x,t.minY+=n.y,t.maxY+=n.y}checkAlign(t){const{top:n,bottom:s,right:r,left:o,horizonMid:i,verticalMid:a}=t;return n!==void 0||s!==void 0||r!==void 0||o!==void 0||i!==void 0||a!==void 0}}class Ca extends ae{constructor(){super([new Ta])}streamEnable(e,t){if(t.auxiliaryManager.selectManager.selectNodes.size===0)return!1;const s=t.auxiliaryManager.selectManager.getSelectBounds(),r=D.rectNode2Rect(s);if(r.width<.1||r.height<.1){const i=K.line({x:r.x,y:r.y},{x:s.maxX,y:s.maxY}),a=K.circle(e.globalPoint,4/t.gmlRender.getScale());return O.intersect(i,a).points.length>0}return T.rectContains2(e.globalPoint,s)}}class La extends ge{constructor(){super(...arguments);g(this,"startPoint",null)}onStart(t,n){this.startPoint=t.globalPoint,n.actionManager.execAction(new nt),n.inputManager.editTextInfo&&n.execAction(lt.blur(n.inputManager.editTextInfo.node.id)),n.actionManager.execAction(Pt.create([]))}onMove(t,n){if(!this.startPoint)return;const s=Math.min(t.globalPoint.x,this.startPoint.x),r=Math.max(t.globalPoint.x,this.startPoint.x),o=Math.min(t.globalPoint.y,this.startPoint.y),i=Math.max(t.globalPoint.y,this.startPoint.y),a={id:"group-rect",minX:s,maxX:r,minY:o,maxY:i},c=D.rectNode2Rect(a);n.addOrUpdate(N.SelectGroup,{rect:c});const h=n.nodeManager.searchNodes(s,o,r,i),d=new Set;for(const f of h){if(f.type===A.Section){T.containRect(a,f.getBounds())&&d.add(f);continue}f.overlapRect(a)&&d.add(f)}const p=T.computeSelectNodes(d).map(f=>f.id);n.actionManager.execAction(Pt.create(p))}onUp(t,n){n.actionManager.execAction(new et),n.removeAuxGraphic(N.SelectGroup),this.startPoint=null}}class so extends ae{constructor(){super([new La])}streamEnable(e,t){return!0}}class ro extends ee{constructor(){super(...arguments);g(this,"node",null)}enable(t,n){if(!t.originEvent.shiftKey&&!t.originEvent.metaKey)return!1;if(t.originEvent.metaKey){const r=n.detect(W.Node,t);if(r&&r.length>0)return this.node=r[0],!0}const s=n.detect(W.HoverNode,t);return s?(this.node=s,!0):!1}handle(t,n){if(!this.node)return;const r=[...T.computeSelectNode(n,this.node)].map(o=>o.id);n.actionManager.execAction(new nt),n.actionManager.execAction(Pt.create([...r])),n.actionManager.execAction(new et)}}class Aa extends ee{constructor(){super(...arguments);g(this,"node",null)}enable(t,n){const s=n.auxiliaryManager.selectManager.getSelectBounds();if(n.getSelectNodes().size>1&&T.rectContains2(t.globalPoint,s))return!1;const r=n.detect(W.HoverNode,t);return r?n.auxiliaryManager.selectManager.include(r)||!this.canEnable(r)?!1:(this.node=r,!0):!1}handle(t,n){this.node&&(n.actionManager.execAction(new nt),n.inputManager.editTextInfo&&n.execAction(lt.blur(n.inputManager.editTextInfo.node.id)),n.actionManager.execAction(Pt.create([this.node.id])),n.actionManager.execAction(new et),this.node.type===A.IMG&&n.setCursor("zoom-in"))}}class oo extends Aa{constructor(){super(...arguments);g(this,"node",null)}canEnable(t){return t.type!==A.Section}}class Ra extends ee{constructor(){super(...arguments);g(this,"res",null)}enable(t,n){const s=n.detect(W.Node,t);if(s){const r=s[0];if(n.auxiliaryManager.selectManager.include(r)){const o=r.toLocal(t.globalPoint);if(r instanceof qe&&r.renderText.contains(o))return this.res={node:r,relativePos:o},!0;if(r instanceof dn)return this.res={node:r,relativePos:o},!0}}return!1}handle(t,n){if(!this.res)return;const{node:s,relativePos:r}=this.res,o=s.renderText.detect(r);this.shiftTextClick(t,n,o)||(n.execAction(new nt),n.execAction(lt.focus(s.id,o)),n.execAction(new et))}shiftTextClick(t,n,s){if(!t.originEvent.shiftKey)return!1;const r=n.inputManager.editTextInfo,{node:o}=this.res;return r&&!n.inputManager.selectionManager.selectionInfo&&!r.textCursorPosition.equal(s)?(n.execAction(new nt),n.execAction(lt.selection(o.id,s,r.textCursorPosition)),n.execAction(new et),!0):!1}}class io extends ee{constructor(){super(...arguments);g(this,"node",null)}enable(t,n){if(!t.originEvent.shiftKey&&!t.originEvent.metaKey)return!1;const s=n.detect(W.Node,t);if(s){const r=s[0];if(n.auxiliaryManager.selectManager.include(r))return this.node=r,!0}return!1}handle(t,n){if(!this.node)return;const s=n.getSelectNodes(),r=new Set;s.forEach(o=>r.add(o.id)),r.delete(this.node.id),n.actionManager.execAction(new nt),n.actionManager.execAction(Pt.create([...r])),n.actionManager.execAction(new et)}}class ao extends ee{enable(e,t){return!t.detect(W.Node,e)}handle(e,t){if(t.getSelectNodes().size===0){t.slotManager.addSlotState(te.QuickCreate,{show:!1});return}if(t.execAction(new nt),t.inputManager.editTextInfo){const n=t.inputManager.editTextInfo.node;if(t.execAction(lt.blur(t.inputManager.editTextInfo.node.id)),n.type===A.Shape&&n.shapeType===_.PureText){const s=n.getProp(R.Text);if(s&&s.text===""){t.execAction(Pt.create([])),t.execAction(Fe.create([n.id])),t.execAction(new et);return}}}t.execAction(Pt.create([])),t.execAction(new et)}}class Na extends ee{constructor(){super(...arguments);g(this,"res",null);g(this,"layoutWorker",new Ms)}enable(t,n){const s=n.detect(W.ExpandShape,t);return s?(this.res=s,!0):!1}handle(t,n){const{node:s,realHeight:r}=this.res,o={infos:[{id:s.id,props:[{height:r,type:R.Base},{type:R.Text,sizeMode:le.autoHeight}]}]};n.execAction(new nt),n.execAction(new ct(o));const i=[...n.nodeManager.getNodeLinks(s)];this.layoutWorker.work(i,n,!1),n.execAction(new et)}}class Ea extends Aa{constructor(){super(...arguments);g(this,"node",null)}canEnable(t){return t.type===A.Section}}class Jh extends ee{constructor(){super(...arguments);g(this,"node")}enable(t,n){const s=n.detect(W.Image,t);return s?(this.node=s,!0):!1}handle(t,n){const s=this.getFileKey(this.node),r={nodeId:this.node.id,fileKey:s,blobUrl:n.resourceManager.getBlobUrl(s)};n.slotManager.addSlotState(te.ClickImg,r)}getFileKey(t){return t.type===A.SVG?t.svgUrl:t.type===A.IMG?t.imgSrc:""}}class Ia extends We{constructor(){super(),this.registerDownHandler(new Na),this.registerDownHandler(new ro),this.registerDownHandler(new oo),this.registerUpHandler(new Ra),this.registerUpHandler(new io),this.registerUpHandler(new Ea),this.registerUpHandler(new Jh),this.registerUpHandler(new ao)}}class ka extends ln{constructor(){super([new Ia])}}class td{}class ed extends td{enable(e){return e.type===A.Line}handle(e,t){t.addOrUpdate(N.HoverLine,{node:e,transform:e.globalTransform()})}}class nd{enable(e){return!0}handle(e,t){t.addOrUpdate(N.HoverBounds,{node:e,transform:e.globalTransform()})}}class sd{enable(e){return e.type===A.Group}handle(e,t){const n=e;if(t.auxiliaryManager.selectManager.include(e))return;const s=n.nameGlobalTransform();t.addOrUpdate(N.HoverBounds,{node:e,transform:s})}}class rd{enable(e){return e.type===A.Section}handle(e,t){}}class co{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointermove]));g(this,"handlers",[new ed,new sd,new rd,new nd])}process(e,t){const n=t.detect(W.HoverConnectAnchor,e);if(n){n.node.type===A.Shape&&t.previewManager.quickCreateManager.enterQuickPreview(n.node,n.relative,t),t.addOrUpdate(N.HoverConnectAnchor,{point:n.globalPoint});return}t.previewManager.quickCreateManager.exitQuickPreview(t),this.hoverSizer(e,t);const s=t.detect(W.HoverNode,e);if(s){for(const r of this.handlers)if(r.enable(s)){r.handle(s,t);return}}}hoverSizer(e,t){const n=t.detect(W.Stretch,e);if(!n)return;const s=n.nodes,r=s[0];if(n.type===G.BOTTOM_RIGHT)if(s.length===1)t.addOrUpdate(N.HoverSize,{rect:D.baseProps2Rect(r.baseProps),transform:r.globalTransform().clone()});else{const o=t.auxiliaryManager.selectManager.getSelectBounds();t.addOrUpdate(N.HoverSize,{rect:D.rectNode2Rect(o),transform:Z.generateMatrix().translate(o.minX,o.minY)})}}}var ft=(l=>(l[l.DEFAULT=0]="DEFAULT",l[l.TEXT=1]="TEXT",l[l.SHAPE=2]="SHAPE",l[l.LINE=3]="LINE",l[l.SECTION=4]="SECTION",l[l.STICKY=5]="STICKY",l[l.HandTool=6]="HandTool",l[l.Resource=7]="Resource",l))(ft||{});class Ba{constructor(e,t,n,s){g(this,"nodeManager");g(this,"inputManager");g(this,"slotManager");g(this,"cursorManager");g(this,"currentTool",ft.DEFAULT);g(this,"shapeType",0);g(this,"grab",!1);g(this,"creatingLine",null);this.nodeManager=e,this.inputManager=t,this.slotManager=n,this.cursorManager=s}setCurrentTool(e,t=0,n=!1){this.currentTool=e,this.shapeType=t,this.grab=n,this.slotManager.addSlotState(te.ToolChange,{tool:e,shapeType:t}),e===ft.DEFAULT&&this.cursorManager.setCursor("default")}resetTool(){this.creatingLine||this.setCurrentTool(ft.DEFAULT)}setInCreatingLine(e){this.creatingLine=e}}class ke{}class Oa extends ke{constructor(){super(...arguments);g(this,"cursorMap",new Map([[ft.SHAPE,"crosshair"],[ft.SECTION,"crosshair"],[ft.TEXT,"text"],[ft.LINE,"crosshair"]]))}enable(t,n){return this.cursorMap.has(n.toolManager.currentTool)}handle(t,n){if(n.toolManager.grab){n.setCursor("grabbing");return}const s=this.cursorMap.get(n.toolManager.currentTool);n.setCursor(s)}}class od extends ke{enable(e,t){return!!t.detect(W.ExpandShape,e)}handle(e,t){t.setCursor("pointer")}}class id extends ke{enable(e,t){const n=t.inputManager.editTextInfo;if(!n)return!1;const{node:s}=n,r=s.getTextContentRect(),o=s.toLocal(e.globalPoint);return!!T.rectContains(o,r)}handle(e,t){t.setCursor("text")}}class Da extends ke{enable(e,t){return!!t.detect(W.Stretch,e)}handle(e,t){const n=t.detect(W.Stretch,e);n.type===G.BOTTOM||n.type===G.TOP?t.setCursor("ns-resize"):n.type===G.RIGHT||n.type===G.LEFT?t.setCursor("ew-resize"):n.type===G.TOP_LEFT||n.type===G.BOTTOM_RIGHT?t.setCursor("nwse-resize"):(n.type===G.TOP_RIGHT||n.type===G.BOTTOM_LEFT)&&t.setCursor("nesw-resize")}}class ad extends ke{enable(e,t){return!!t.detect(W.HoverNode,e)}handle(e,t){t.setCursor("default")}}class lo extends ke{enable(e,t){return!0}handle(e,t){t.setCursor("default")}}class Zs{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointermove]))}process(e,t){for(const n of this.handlers)if(n.enable(e,t)){n.handle(e,t);return}}}class cd extends ke{enable(e,t){return!!t.detect(W.LineEndPoint,e)}handle(e,t){t.setCursor("move")}}class ld extends ke{constructor(){super(...arguments);g(this,"res",null)}enable(t,n){const s=n.detect(W.PolyControlPoint,t);return s?(this.res=s,!0):!1}handle(t,n){if(!this.res)return;const{isHorizon:s}=this.res;s?n.setCursor("ns-resize"):n.setCursor("ew-resize")}}class hd extends ke{enable(e,t){return!!t.detect(W.Rotate,e)}handle(e,t){t.setCursor("rotate")}}class dd extends ke{enable(e,t){return!!t.detect(W.Image,e)}handle(e,t){t.setCursor("zoom-in")}}class Ha extends Zs{constructor(){super(...arguments);g(this,"handlers",[new Oa,new ld,new od,new cd,new id,new Da,new hd,new ad,new dd,new lo])}}class za extends Ve{constructor(){super([new co,new Ha])}canBeEnable(e,t){return!0}canBeExit(e,t){return!0}}class ud extends Ps{enable(e){return e.type===A.Line}handle(e,t,n,s,r){const i=e.parent.globalTransform().inverseMatrix().crossProduct(r),a=[];for(const h of t.points){const d=i.crossPoint(h);a.push(d)}const c=D.rectNode2Rect(T.getBoundsByPoints(a));return[{id:e.id,props:[{type:R.Line,points:a},{type:R.Base,x:c.x,y:c.y,width:c.width,height:c.height}]}]}}class pd extends Ps{enable(e){return!0}handle(e,t,n,s,r){const o=r.crossPoint({x:t.x,y:t.y}),i=e.parent.toLocal(o);return[{id:e.id,props:[{type:R.Base,x:i.x,y:i.y,width:t.width*n,height:t.height*s}]}]}}class Xa extends Qs{constructor(){super(...arguments);g(this,"handlers",[new ud,new pd])}computeOriginTransform(t){const n=this.target,{x:s,y:r}=this.originStretchRect,o=Z.generateMatrix().translate(-s,-r),i=this.computeAnchorPoint(n,this.originStretchRect),c=Z.generateMatrix().translate(-i.x,-i.y).crossProduct(o);this.originTransform=c}recordPropsMap(t){this.propsMap.clear();for(const n of this.target.nodes){const s=this.recordNodePropInfo(n);if(n.type===A.Line){const o=n.globalLinePoints.map(i=>this.originTransform.crossPoint(i));s.points=o}this.propsMap.set(n,s)}}drawAlignLine(t,n,s){const r=s.auxiliaryManager.selectManager.getSelectBounds(),o=D.rectNode2Rect(r),i=Z.generateMatrix().translate(r.minX,r.minY),{width:a,height:c}=n;if(a){t.width+=a.dt;const h={transform:i,line:{start:new m(0,o.height),end:new m(o.width,o.height)}};a.lines.push(h)}if(c){t.height+=c.dt;const h={transform:i,line:{start:new m(o.width,0),end:new m(o.width,o.height)}};c.lines.push(h)}s.addOrUpdate(N.AlignStretchLine,{alignInfo:n})}getMiniSize(t){const n=[],s=[],{width:r,height:o}=this.originStretchRect,i=this.target.nodes;if([...i].filter(d=>d.type===A.Line).length===i.length)return{x:10,y:10};for(const d of i){if(d.type===A.Line)continue;const u=d.getStretchMinSize();n.push(u.x/r),s.push(u.y/o)}const c=Math.max(...n),h=Math.max(...s);return{x:c*r,y:h*o}}getStretchRect(t){const n=t.auxiliaryManager.selectManager.getSelectBounds();return D.rectNode2Rect(n)}}class Ya extends ae{constructor(){super([new Xa])}streamEnable(e,t){const n=t.detect(W.Stretch,e);return n?n.nodes.length>1:!1}}class Fa{}class fd extends Fa{constructor(){super(...arguments);g(this,"polylineHandler",new En)}enable(t){return t.isPolyLine()}handleMove(t,n,s){const{line:r}=n,o=this.handle(t,n,s),i=T.dealWithEndPolyPoints(o,s.gmlRender.getScale(),!n.isStart),a=r.globalTransform().inverseMatrix(),c=i.map(u=>a.crossPoint(u)),h=D.rectNode2Rect(T.getBoundsByPoints(c));return{id:r.id,props:[{type:R.Line,points:c},gt.create({x:h.x,y:h.y,width:h.width,height:h.height})]}}handleUp(t,n,s,r){const{line:o}=n,i=this.handle(t,n,s),a=T.dealWithEndPolyPointsInUp(i,s.gmlRender.getScale(),!n.isStart),c=o.globalTransform().inverseMatrix(),h=a.map(p=>c.crossPoint(p)),d=D.rectNode2Rect(T.getBoundsByPoints(h));return{id:o.id,props:[{type:R.Line,points:h},gt.create({x:d.x,y:d.y,width:d.width,height:d.height}),r]}}handle(t,n,s){const{line:r}=n,o=r.lineProps;let i=[];return o.auto?i=this.autoLayoutLine(t,n,s):i=this.editLine(t,n,s),i}autoLayoutLine(t,n,s){const{line:r,isStart:o}=n,i=r.connectProps;if(o){const a=t,c=$t.computeConnectInfo(r,i.end,s,!0);return this.polylineHandler.layoutToPointsPro(a,c)}else{const a=t,c=$t.computeConnectInfo(r,i.start,s,!1);return this.polylineHandler.layoutToPointsPro(c,a)}}editLine(t,n,s){const{line:r,isStart:o}=n,i=[...r.globalLinePoints];if(i.length===2)return this.autoLayoutLine(t,n,s);const a=t.point;if(o){const c=i[0],h=i[1],d=T.judgeHorizon(c,h);if(i.length>3){const u=i[2];T.distance(h,u)<3&&(d?Math.abs(a.y-u.y)<6:Math.abs(a.x-u.x)<6)&&(d?a.y=u.y:a.x=u.x)}c.x=a.x,c.y=a.y,d?h.y=c.y:h.x=c.x}else{const c=i[i.length-2],h=i[i.length-1],d=T.judgeHorizon(c,h);if(i.length>3){const u=i[i.length-3];T.distance(c,u)<3&&(d?Math.abs(a.y-u.y)<6:Math.abs(a.x-u.x)<6)&&(d?a.y=u.y:a.x=u.x)}h.x=a.x,h.y=a.y,d?c.y=h.y:c.x=h.x}return i}}class gd extends Fa{enable(e){const t=e.shapeType;return t===Lt.Line||t===Lt.Curve}handle(e,t,n){const{line:s,isStart:r}=t,o=[...s.globalLinePoints];return r?(o.shift(),o.unshift(e.point)):(o.pop(),o.push(e.point)),o}handleMove(e,t,n){const{line:s}=t,r=this.handle(e,t,n),o=s.globalTransform().inverseMatrix(),i=r.map(c=>o.crossPoint(c)),a=D.rectNode2Rect(T.getBoundsByPoints(i));return{id:s.id,props:[{type:R.Line,points:i},gt.create({x:a.x,y:a.y,width:a.width,height:a.height})]}}handleUp(e,t,n,s){const{line:r}=t,o=this.handle(e,t,n),i=r.globalTransform().inverseMatrix(),a=o.map(h=>i.crossPoint(h)),c=D.rectNode2Rect(T.getBoundsByPoints(a));return{id:r.id,props:[{type:R.Line,points:a},gt.create({x:c.x,y:c.y,width:c.width,height:c.height}),s]}}}class Va extends ge{constructor(){super(...arguments);g(this,"res",null);g(this,"connectEndProp");g(this,"alignWorker",new cn);g(this,"handlers",[new fd,new gd]);g(this,"currentHandler",null)}selectHandler(){const{line:t,isStart:n}=this.res;for(const s of this.handlers)s.enable(t)&&(this.currentHandler=s)}computeConnectProp(t,n){const s=n.detect(W.LineEndPoint,t);if(!s)return;this.res=s;const r=s.line.connectProps;if(s.isStart){const o=$t.computeConnectInfo(s.line,r.end,n,!0);this.connectEndProp={isStart:!1,connectInfo:o}}}onStart(t,n){this.computeConnectProp(t,n),this.selectHandler(),n.execAction(new nt),this.removeConnectInfoAndSendMsg(t,n)}onMove(t,n){if(!this.res)return;const s=this.getConnectInfo(t,n),r=this.currentHandler.handleMove(s,this.res,n);n.execAction(new ct({infos:[r]},{streaming:!0}))}onUp(t,n){if(!this.res)return;const s=this.addConnectInfoAndSendMsg(t,n),r=this.getConnectInfo(t,n),o=this.currentHandler.handleUp(r,this.res,n,s);n.execAction(new ct({infos:[o]},{streaming:!1}))}getConnectInfo(t,n){const r={point:this.alignWorker.alignLineEndAndDrawAlignLines(t,n)},o=n.detect(W.NodeEdge,t);return o&&(r.point=new m(o.point.x,o.point.y),r.nodeConnect={rect:D.rectNode2Rect(o.node.getBounds()),endType:T.computeNodeConnectEnd(o.relativePos,o.node.baseProps.angle)}),r}addConnectInfoAndSendMsg(t,n){const{line:s,isStart:r}=this.res,o=s.connectProps.clone(),i=r?"start":"end",a=n.detect(W.NodeEdge,t);return a?o[i]={objectId:a.node.id,x:a.relativePos.x,y:a.relativePos.y}:o[i]=null,o}removeConnectInfoAndSendMsg(t,n){const{line:s,isStart:r}=this.res,o=s.connectProps.clone(),i=r?"start":"end";o[i]=null;const a={id:s.id,props:[o]};n.execAction(new ct({infos:[a]}))}}class Js{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointermove]))}process(e,t){if(t.toolManager.currentTool!==ft.LINE)return;const s=t.detect(W.BufferNode,e);if(!s)return;const r=s.filter(o=>o.canBeConnected());r.length!==0&&(t.auxiliaryManager.selectManager.include(r[0])||r[0].canBeConnected()&&t.addOrUpdate(N.HoverConnectAnchorPoint,{node:r[0]}))}}class tr{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointermove]))}process(e,t){if(t.toolManager.currentTool!==ft.LINE)return;const s=t.detect(W.HoverConnectAnchor,e);if(s){t.addOrUpdate(N.HoverConnectAnchor,{point:s.globalPoint});return}const r=t.detect(W.HoverNodeAnchor,e);r&&t.addOrUpdate(N.HoverAnchorPoint,{node:r.node,localPoint:r.localPoint})}}class er{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointermove]))}process(e,t){if(t.toolManager.currentTool!==ft.LINE)return;const s=t.detect(W.NodeEdge,e);s&&t.addOrUpdate(N.HoverConnectPoint,{point:s.point})}}class yd extends ae{constructor(){super([new Va],[new Js,new tr,new er])}streamEnable(e,t){return!!t.detect(W.LineEndPoint,e)}}class nr{setPointValue(e,t,n,s){e?(t.y=s.y,n.y=s.y):(t.x=s.x,n.x=s.x)}}class md extends nr{enable(e){const{rIndex:t,lIndex:n,line:s}=e,r=[...s.points];return n>0&&t<r.length-1}handle(e,t,n){const{rIndex:s,lIndex:r,line:o,isHorizon:i}=e,a=[...o.points],c=o.toLocal(t.globalPoint),h=a[r],d=a[s],u=a[s+1],p=a[r-1],f=n.gmlRender.getScale();return T.distance(p,h)<3/f&&(i?Math.abs(c.y-p.y)<6/f:Math.abs(c.x-p.x)<6/f)?i?c.y=p.y:c.x=p.x:T.distance(d,u)<3/f&&(i?Math.abs(c.y-u.y)<6/f:Math.abs(c.x-u.x)<6/f)&&(i?c.y=u.y:c.x=u.x),this.setPointValue(i,h,d,c),a}setPointValue(e,t,n,s){e?(t.y=s.y,n.y=s.y):(t.x=s.x,n.x=s.x)}}class wd extends nr{enable(e){const{rIndex:t,lIndex:n,line:s}=e,r=[...s.points];return n===0&&t===1&&r.length===2}handle(e,t){const{rIndex:n,lIndex:s,line:r,isHorizon:o}=e,i=[...r.points],{start:a,end:c}=r.connectProps,h=i[s],d=i[n],u=r.toLocal(t.globalPoint);if(!a&&!c)return this.setPointValue(o,h,d,u),i;if(c&&!a){if(o){const w=d.x>h.x?1:-1,b=new m(d.x-w*M,d.y),x=new m(d.x-w*M,u.y);return i.splice(s+1,0,b,x),e.lIndex=s+2,e.rIndex=n+2,i}const p=d.y>h.y?1:-1,f=new m(d.x,d.y-p*M),y=new m(u.x,d.y-p*M);return i.splice(s+1,0,f,y),e.lIndex=s+2,e.rIndex=n+2,i}if(a&&!c){if(o){const w=d.x>h.x?1:-1,b=new m(h.x+w*M,h.y),x=new m(h.x+w*M,u.y);return i.splice(s+1,0,b,x),e.lIndex=s+2,e.rIndex=n+2,i}const p=d.y>h.y?1:-1,f=new m(h.x,h.y-p*M),y=new m(u.x,h.y-p*M);return i.splice(s+1,0,f,y),e.lIndex=s+2,e.rIndex=n+2,i}if(a&&c){if(o){const x=d.x>h.x?1:-1,v=new m(h.x+x*M,h.y),C=new m(h.x+x*M,u.y),E=new m(d.x-x*M,d.y),k=new m(d.x-x*M,u.y);return i.splice(s+1,0,v,C,E,k),e.lIndex=s+4,e.rIndex=n+4,i}const p=d.y>h.y?1:-1,f=new m(h.x,h.y-p*M),y=new m(u.x,h.y-p*M),w=new m(d.x,d.y-p*M),b=new m(u.x,d.y-p*M);return i.splice(s+1,0,f,y,w,b),e.lIndex=s+4,e.rIndex=n+4,i}return[]}}class xd extends nr{enable(e){const{lIndex:t}=e;return t===0}handle(e,t){const{rIndex:n,lIndex:s,line:r,isHorizon:o}=e,i=[...r.points],{start:a,end:c}=r.connectProps,h=i[s],d=i[n],u=r.toLocal(t.globalPoint);if(!a)return this.setPointValue(o,h,d,u),i;if(o){const w=d.x>h.x?1:-1,b=new m(h.x+w*M,h.y),x=new m(h.x+w*M,u.y);return i.splice(s+1,0,b,x),e.lIndex=s+2,e.rIndex=n+2,i}const p=d.y<h.y?1:-1,f=new m(h.x,h.y-p*M),y=new m(u.x,h.y-p*M);return i.splice(s+1,0,f,y),e.lIndex=s+2,e.rIndex=n+2,i}}class Pd extends nr{enable(e){const{rIndex:t,line:n}=e;return t===n.points.length-1}handle(e,t){const{rIndex:n,lIndex:s,line:r,isHorizon:o}=e,i=[...r.points],{end:a}=r.connectProps,c=i[s],h=i[n],d=r.toLocal(t.globalPoint);if(!a)return this.setPointValue(o,c,h,d),i;if(o){const y=h.x<c.x?1:-1,w=new m(h.x+y*M,h.y),b=new m(h.x+y*M,d.y);return i.splice(s+1,0,b,w),c.y=d.y,i}const u=h.y>c.y?1:-1,p=new m(h.x,h.y-u*M),f=new m(d.x,h.y-u*M);return i.splice(s+1,0,f,p),c.x=d.x,i}}class bd extends ge{constructor(){super(...arguments);g(this,"res");g(this,"handlers",[new md,new wd,new xd,new Pd])}onStart(t,n){this.res=n.detect(W.PolyControlPoint,t),n.execAction(new nt)}onMove(t,n){const{line:s}=this.res,r=this.computeLinePoints(t,n),o=D.rectNode2Rect(T.getBoundsByPoints(r)),i={infos:[{id:s.id,props:[{type:R.Line,points:r,auto:!1},gt.create({x:o.x,y:o.y,width:o.width,height:o.height})]}]};n.execAction(new ct(i,{streaming:!0}))}onUp(t,n){const{line:s}=this.res,r=n.gmlRender.getScale(),o=this.computeLinePoints(t,n),i=T.dealWithPolyPoints(o,r),a=D.rectNode2Rect(T.getBoundsByPoints(i)),c={infos:[{id:s.id,props:[{type:R.Line,points:i,auto:!1},gt.create({x:a.x,y:a.y,width:a.width,height:a.height})]}]};n.execAction(new ct(c,{streaming:!1})),n.execAction(new et)}computeLinePoints(t,n){for(const s of this.handlers)if(s.enable(this.res))return s.handle(this.res,t,n);return[]}}class vd extends ae{constructor(){super([new bd],[])}streamEnable(e,t){return!!t.detect(W.PolyControlPoint,e)}}class Md extends ge{constructor(){super(...arguments);g(this,"startConnectInfo",{point:new m});g(this,"target",null);g(this,"layoutHandler",new En);g(this,"alignWorker",new cn)}onStart(t,n){this.startConnectInfo.point=t.globalPoint;const r=[new jt(Lt.RoundPolyLine)],{node:o,relative:i}=n.detect(W.HoverConnectAnchor,t),a={type:R.Connect,start:{objectId:o.id,x:i.x,y:i.y}};r.push(a);const c=$t.getNodePos(o,i);this.startConnectInfo={point:new m(c.x,c.y),nodeConnect:{rect:D.rectNode2Rect(o.getBounds()),endType:T.computeNodeConnectEnd(i,o.baseProps.angle)}};const h={point:t.globalPoint.clone()},d=this.layoutHandler.layoutToPointsPro(this.startConnectInfo,h),u=he.create(d),p=D.rectNode2Rect(T.getBoundsByPoints(d)),f=gt.create({x:p.x,y:p.y,width:p.width,height:p.height});r.push(u,f,new Ot,Ie.create({rArrow:we.Arrow}),se.create({sizeMode:le.autoWidth}),new bn);const y=n.idGenerator.genId(A.Line),w={id:y,type:A.Line,zIndex:Qt.genZIndex(n.nodeManager.root),parentId:"",props:r};n.actionManager.execAction(new nt);const b=Yt.create(w);n.actionManager.execAction(b),this.target=n.nodeManager.nodeMap.get(y),n.actionManager.execAction(Pt.create([this.target.id])),n.setCursor("crosshair")}onMove(t,n){const s=$t.computeLinePoints(this.startConnectInfo,this.layoutHandler,t,n,this.alignWorker),r=T.dealWithEndPolyPoints(s,n.gmlRender.getScale(),!0),o=D.rectNode2Rect(T.getBoundsByPoints(r)),i=[he.create(r),gt.create({x:o.x,y:o.y,width:o.width,height:o.height})],a={infos:[{id:this.target.id,props:i}]};n.actionManager.execAction(new ct(a,{streaming:!0}))}onUp(t,n){const s=[],r=n.detect(W.NodeEdge,t);if(r){const h=this.target.connectProps.clone();h.end={objectId:r.node.id,x:r.relativePos.x,y:r.relativePos.y},s.push(h)}const o=$t.computeLinePoints(this.startConnectInfo,this.layoutHandler,t,n,this.alignWorker),i=T.dealWithEndPolyPointsInUp(o,n.gmlRender.getScale(),!0),a=D.rectNode2Rect(T.getBoundsByPoints(i));s.push(he.create(i),gt.create({x:a.x,y:a.y,width:a.width,height:a.height}));const c={infos:[{id:this.target.id,props:s}]};if(n.actionManager.execAction(new ct(c,{streaming:!1})),!r){n.execAction(Pt.create([]));const h={clientPoint:t.clientPoint,show:!0,lineId:this.target.id};n.slotManager.addSlotState(te.QuickCreate,h)}n.execAction(new et),n.setCursor("default")}}class Sd extends ae{constructor(){super([new Md],[new Js,new tr,new er])}streamEnable(e,t){return!!t.detect(W.HoverConnectAnchor,e)}}class ho{}const Td=new Set([A.Shape,A.SVG,A.IMG]);class Cd extends ho{enable(e){return Td.has(e.type)}handle(e,t,n,s){const r=e.baseProps,o=new m(0,0),i=e.toGlobal(o),a=t.crossPoint(i),h=e.parent.globalTransform().inverseMatrix().crossPoint(a);s.push({id:e.id,props:[{type:R.Base,x:h.x,y:h.y,angle:r.angle+n}]})}}class Ld extends ho{enable(e){return e.type===A.Line}handle(e,t,n,s){const{start:r,end:o}=e.connectProps;if(r||o)return;const i=e.lineProps,a=[],c=[];for(const u of i.points){const p=t.crossPoint(u);a.push(p)}c.push({type:R.Line,points:a});const h=T.getBoundsByPoints(a),d={type:R.Base,x:h.minX,y:h.minY,width:h.maxX-h.minX,height:h.maxY-h.minY};c.push(d),s.push({id:e.id,props:c})}}class Ad extends ho{constructor(){super(...arguments);g(this,"layoutHandler",new En)}enable(t){return t.type!==A.Line?!1:t.isPolyLine()}handle(t,n,s,r){const{start:o,end:i}=t.connectProps;if(o||i)return;const a=t.lineProps,c=[],h=a.points[0],d=a.points[a.points.length-1],u=n.crossPoint(h),p=n.crossPoint(d),f=this.layoutHandler.layoutToPointsPro({point:u},{point:p});c.push({type:R.Line,points:f});const y=T.getBoundsByPoints(f),w={type:R.Base,x:y.minX,y:y.minY,width:y.maxX-y.minX,height:y.maxY-y.minY};c.push(w),r.push({id:t.id,props:c})}}class Wa extends ge{constructor(){super(...arguments);g(this,"rotateInfo",null);g(this,"lastAngle",0);g(this,"originAngle",0);g(this,"originNodeAngle",0);g(this,"matrix",Z.generateMatrix());g(this,"reverseMatrix",Z.generateMatrix());g(this,"layoutWorker",new Ms);g(this,"groupBaseWorker",new Zr);g(this,"handlers",[new Cd,new Ad,new Ld])}onStart(t,n){this.rotateInfo=n.detect(W.Rotate,t);const s=$t.trimPoint(t.globalPoint),r=this.rotateInfo.rotateCenter,o=this.rotateInfo.nodes;o.length===1?this.originNodeAngle=o[0].baseProps.angle:this.originNodeAngle=0,this.lastAngle=$t.calculateAngle(r,s),this.originAngle=this.lastAngle;const i=Z.generateMatrix().translate(-r.x,-r.y);this.matrix=i,this.reverseMatrix=i.inverseMatrix(),n.actionManager.execAction(new nt),n.inputManager.editTextInfo&&n.execAction(lt.blur(n.inputManager.editTextInfo.node.id)),this.groupBaseWorker.start(this.rotateInfo.nodes)}onMove(t,n){this.rotateNode(t,n,!0),this.removeAuxiliaryGraphics(n)}onUp(t,n){this.rotateNode(t,n,!1),n.auxiliaryManager.selectManager.refreshSelectStatus(),n.setCursor("default"),n.actionManager.execAction(new et),this.rotateInfo=null}removeAuxiliaryGraphics(t){t.removeAuxGraphic(N.HighlightRects),t.removeAuxGraphic(N.MultiSelectBound),t.removeAuxGraphic(N.SingleSelectBound),t.removeAuxGraphic(N.StretchRect),t.removeAuxGraphic(N.ExpandShape),t.removeAuxGraphic(N.SelectConnectAnchor)}rotateNode(t,n,s){const r=$t.trimPoint(t.globalPoint),o=this.rotateInfo.rotateCenter;let i=$t.calculateAngle(o,r);i=this.computeDeltaAngle(t,i);const a=i-this.lastAngle,c=Z.generateMatrix().rotate(a),h=this.reverseMatrix.crossProduct(c).crossProduct(this.matrix),d=[],u=new Set;for(const p of this.rotateInfo.nodes){for(const f of this.handlers)if(f.enable(p)){f.handle(p,h,a,d);break}this.layoutWorker.collectNodeLinks(p,n,u)}n.execAction(new ct({infos:d},{streaming:s})),this.lastAngle=i,this.layoutWorker.work([...u],n,s),this.groupBaseWorker.work(n,s)}computeDeltaAngle(t,n){if(t.originEvent.ctrlKey)return n;let s=n-this.originAngle+this.originNodeAngle;const r=$t.trimAngle(s),o=7.5;return Math.abs(r)<o?(s+=0-r,s+this.originAngle-this.originNodeAngle):Math.abs(r-90)<o?(s+=90-r,s+this.originAngle-this.originNodeAngle):Math.abs(r-180)<o?(s+=180-r,s+this.originAngle-this.originNodeAngle):Math.abs(r-270)<o?(s+=270-r,s+this.originAngle-this.originNodeAngle):Math.abs(r-360)<o?(s+=360-r,s+this.originAngle-this.originNodeAngle):n}}class Ga extends ae{constructor(){super([new Wa])}streamEnable(e,t){return!!t.detect(W.Rotate,e)}}const Rn=100,je=50;class Ua{computeEndNodeRelative(e,t){const n=e.drawer.getConnectAnchor(),s=T.computeOriginNodeConnectEnd(t);let r;return s===Mt.Top?r=n[Mt.Bottom]:s===Mt.Bottom?r=n[Mt.Top]:s===Mt.Left?r=n[Mt.Right]:r=n[Mt.Left],r}computePreviewNodePos(e,t,n){const s=T.computeNodeConnectEnd(t,e.baseProps.angle);return s===Mt.Top?this.findTopPlace(e,s,n):s===Mt.Bottom?this.findBottomPlace(e,s,n):s===Mt.Left?this.findLeftPlace(e,s,n):this.findRightPlace(e,s,n)}findTopPlace(e,t,n){const s=e.globalBaseProps;for(let r=0;r<20;r++){const o=s.clone();o.y=s.y-s.height-Rn;const i=r%2,a=Math.ceil(r/2);i?o.x-=a*(s.width+je):o.x+=a*(s.width+je);const c=T.getBoundsByBaseProps(o);if(n.nodeManager.searchNodesByRectNode(c).filter(d=>d.type!==A.Line&&d.type!==A.Section).length===0)return{x:o.x,y:o.y}}return{x:s.x,y:s.y-s.height-je}}findBottomPlace(e,t,n){const s=e.globalBaseProps;for(let r=0;r<20;r++){const o=s.clone();o.y=s.y+s.height+Rn;const i=r%2,a=Math.ceil(r/2);i?o.x-=a*(s.width+je):o.x+=a*(s.width+je);const c=T.getBoundsByBaseProps(o);if(n.nodeManager.searchNodesByRectNode(c).filter(d=>d.type!==A.Line&&d.type!==A.Section).length===0)return{x:o.x,y:o.y}}return{x:s.x,y:s.y+s.height+Rn}}findRightPlace(e,t,n){const s=e.globalBaseProps;for(let r=0;r<20;r++){const o=s.clone();o.x=s.x+s.width+Rn;const i=r%2,a=Math.ceil(r/2);i?o.y-=a*(s.width+je):o.y+=a*(s.width+je);const c=T.getBoundsByBaseProps(o);if(n.nodeManager.searchNodesByRectNode(c).filter(d=>d.type!==A.Line&&d.type!==A.Section).length===0)return{x:o.x,y:o.y}}return{x:s.x+s.width+Rn,y:s.y}}findLeftPlace(e,t,n){const s=e.globalBaseProps;for(let r=0;r<20;r++){const o=s.clone();o.x=s.x-s.width-Rn;const i=r%2,a=Math.ceil(r/2);i?o.y-=a*(s.width+je):o.y+=a*(s.width+je);const c=T.getBoundsByBaseProps(o);if(n.nodeManager.searchNodesByRectNode(c).filter(d=>d.type!==A.Line&&d.type!==A.Section).length===0)return{x:o.x,y:o.y}}return{x:s.x-s.width-Rn,y:s.y}}}class Rd extends ee{constructor(){super(...arguments);g(this,"createWorker",new Ua);g(this,"layoutHandler",new En)}enable(t,n){const s=n.detect(W.HoverConnectAnchor,t);return s?s.node.type===A.Shape:!1}isParentRoot(t,n,s){const r=t.parent;if(r===s.nodeManager.root)return!0;const o=t.getBounds(),i=t.globalPos,a=n.x-i.x,c=n.y-i.y,h={minX:o.minX+a,minY:o.minY+c,maxX:o.maxX+a,maxY:o.maxY+c},d=r.getBounds();return!(T.containRect(d,h)||T.overlapRect(d,h))}handle(t,n){const s=n.detect(W.HoverConnectAnchor,t),r=s.node,o=s.relative,i=r.baseProps,a=r.toGlobal({x:o.x*i.width,y:o.y*i.height}),c=this.createWorker.computePreviewNodePos(r,o,n),h=this.createWorker.computeEndNodeRelative(r,o),d=this.isParentRoot(r,c,n),u=this.makeupNodeProps(r,c,d),p=n.idGenerator.genId(A.Shape);n.execAction(new nt),n.execAction(Yt.create({id:p,zIndex:Qt.genZIndex(n.nodeManager.root),type:A.Shape,props:u,parentId:d?"":r.parent.id}));const f=n.nodeManager.getNode(p),y=f.baseProps,w=f.toGlobal({x:h.x*y.width,y:h.y*y.height}),b={point:a,nodeConnect:{rect:D.rectNode2Rect(r.getBounds()),endType:T.computeNodeConnectEnd(o,r.baseProps.angle)}},x={point:w,nodeConnect:{rect:D.rectNode2Rect(f.getBounds()),endType:T.computeNodeConnectEnd(h,f.baseProps.angle)}},v=this.makeupLineProps(b,x,r.parent,d);v.push({type:R.Connect,start:{objectId:r.id,x:o.x,y:o.y},end:{objectId:p,x:h.x,y:h.y}});const C=n.idGenerator.genId(A.Line);if(n.execAction(Yt.create({id:C,zIndex:Qt.genZIndex(n.nodeManager.root),type:A.Line,props:v,parentId:d?"":r.parent.id})),n.execAction(Pt.create([p])),f.type===A.Shape&&f.shapeType===_.PureText){const E=f.renderText;n.execAction(lt.selection(p,E.headTextCursorPosition(),E.tailTextCursorPosition()))}else n.execAction(lt.focus(p));n.execAction(new et)}makeupNodeProps(t,n,s){const r=t.baseProps,o=t.shapeType;let i=n;s||(i=t.parent.globalTransform().inverseMatrix().crossPoint(i));const a=i.x,c=i.y,h=t.colorProps,d=t.borderProps,u=[{type:R.Base,x:a,y:c,width:r.width,height:r.height,angle:r.angle},Jt.create({...h}),Ot.create({...d}),new jt(o)];if(t.type===A.Shape&&t.shapeType===_.PureText){const p=t.textProps;u.push(p.clone())}return u}makeupLineProps(t,n,s,r){let o=this.layoutHandler.layoutToPointsPro(t,n);if(!r){const c=s.globalTransform().inverseMatrix();o=o.map(h=>c.crossPoint(h))}const i=D.rectNode2Rect(T.getBoundsByPoints(o));return[he.create(o),gt.create({x:i.x,y:i.y,width:i.width,height:i.height}),Ie.create({rArrow:we.Arrow}),new jt(Lt.RoundPolyLine)]}}class Nd extends We{constructor(){super(),this.registerUpHandler(new Rd)}}class Ed extends ln{constructor(){super([new Nd])}clickEnable(e,t){return!!t.detect(W.HoverConnectAnchor,e)}}class _a extends ee{constructor(){super(...arguments);g(this,"group",null)}enable(t,n){const s=[...n.getSelectNodes()];if(s.length!==1)return!1;const r=s[0];if(r.type!==A.Group)return!1;const o=r;return o.contains(t.globalPoint)?(this.group=o,!0):!1}handle(t,n){if(this.group){for(const s of this.group.children)if(s.contains(t.globalPoint)){n.execAction(new nt),n.execAction(Pt.create([s.id])),n.execAction(new et);return}}}}class Id extends ee{constructor(){super(...arguments);g(this,"res",null)}enable(t,n){const s=n.detect(W.Node,t);if(s){const r=s[0];if(n.auxiliaryManager.selectManager.include(r)){const o=r.toLocal(t.globalPoint);if(r instanceof qe&&r.renderText.contains(o))return this.res={node:r,relativePos:o},!0;if(r instanceof dn)return this.res={node:r,relativePos:o},!0}}return!1}handle(t,n){if(!this.res)return;const{node:s,relativePos:r}=this.res;if(s.textProps.text===""){const i=s.renderText.detect(r);n.execAction(new nt),n.execAction(lt.focus(s.id,i)),n.execAction(new et);return}n.execAction(new nt),n.execAction(lt.selection(s.id,Ht.head(),s.renderText.tailTextCursorPosition())),n.execAction(new et)}}class kd extends We{constructor(){super(),this.registerDownHandler(new _a),this.registerDownHandler(new Id)}}class Bd extends Qr{constructor(){super([new kd])}}class Od extends ee{constructor(){super(...arguments);g(this,"node",null)}enable(t,n){return!0}handle(t,n){if(n.getSelectNodes().size>0){const o=n.auxiliaryManager.selectManager.getSelectBounds();if(T.rectContains2(t.globalPoint,o)){const i={clientPoint:t.clientPoint,show:!0,hasFocus:n.getSelectNodes().size>0};n.slotManager.addSlotState(te.ContextMenu,i);return}}const s=n.detect(W.Node,t);if(s&&s.length>0){const o=s[0];n.auxiliaryManager.selectManager.include(o)||(n.execAction(new nt),n.execAction(Pt.create([o.id])),n.execAction(new et))}else n.execAction(new nt),n.execAction(Pt.create([])),n.execAction(new et);const r={clientPoint:t.clientPoint,show:!0,hasFocus:n.getSelectNodes().size>0};n.slotManager.addSlotState(te.ContextMenu,r)}}class Dd extends We{constructor(){super(),this.registerUpHandler(new Od)}}class Hd extends ln{constructor(){super([new Dd])}canBeEnable(e,t){return e.originEvent.button===2}}class Ka extends ge{constructor(){super(...arguments);g(this,"lastPoint",null)}onStart(t,n){this.lastPoint=t.clientPoint,n.setCursor("grabbing")}onMove(t,n){if(!this.lastPoint)return;n.setCursor("grabbing");const s=t.clientPoint,r=s.x-this.lastPoint.x,o=s.y-this.lastPoint.y;n.renderManager.scroll(-r,-o),this.lastPoint=s}onUp(t,n){n.setCursor("grab")}}class zd extends ae{constructor(){super([new Ka])}streamEnable(e,t){return e.originEvent.button===2}}class ja extends Kn{constructor(){super([new zd,new Ed,new Sd,new vd,new yd,new fa,new ya,new Ya,new Ga,new Ca,new so,new Bd,new Hd,new ka,new za])}canBeEnable(e,t){return!0}}class qa extends ne{onDetect(e,t){const n=t.getSelectNodes();if(n.size!==1)return!1;const s=[...n][0];if(s.type!==A.Shape)return!1;const r=s,o=r.getTextContentRect();if(r.renderText.height<o.height)return!1;const i=t.gmlRender.getScale(),a=r.toLocal(e.globalPoint),{width:c,height:h}=r.baseProps,d=new D(.5*c-.5*21/i,h-.5*12/i,21/i,12/i);return T.rectContains(a,d)?(this.result={node:r,realHeight:r.drawer.fullTextNodeHeight(r)},!0):!1}}class $a extends ne{onDetect(e,t){const n=t.auxiliaryManager.selectManager.selectNodes;if(n.size!==1)return!1;const s=[...n][0];if(s.type!==A.Line)return!1;const r=s,i=8/t.gmlRender.getScale(),a=r.points,c=a[0],h=a[a.length-1],d=r.toLocal(e.globalPoint);let u=T.circleContains(d,c,i);return u?(this.result={detectPoint:c,isStart:!0,line:r},!0):(u=T.circleContains(d,h,i),u?(this.result={detectPoint:h,isStart:!1,line:r},!0):!1)}}const Xd=12;class Yd extends ne{onDetect(e,t){const n=t.detect(W.HoverConnectAnchor,e);if(n){const u=$t.getNodePos(n.node,n.relative);return this.result={node:n.node,point:u,relativePos:n.relative},!0}const s=t.detect(W.HoverNodeAnchor,e);if(s){const u=$t.getNodePos(s.node,s.ratio);return this.result={node:s.node,point:u,relativePos:s.ratio},!0}const r=t.detect(W.BufferNode,e);if(!r)return!1;const o=r.filter(u=>u.canBeConnected());if(o.length===0)return!1;const i=o[0];if(!i.canBeConnected())return!1;const a=t.renderManager.getScale(),{width:c,height:h}=i.baseProps,d=i.borderContains(e.globalPoint,Xd/a);return d?(this.result={node:i,point:i.toGlobal(d),relativePos:new m(d.x/c,d.y/h)},!0):!1}}class sr extends ge{constructor(){super(...arguments);g(this,"startPos",new m);g(this,"target",null);g(this,"viewBounds");g(this,"alignWorker",new cn)}nodeType(){return A.Shape}autoFocus(){return!0}onStart(t,n){n.previewManager.resetPreviewNode(n),n.alignPoint?(this.startPos=n.alignPoint,n.alignPoint=null):this.startPos=t.globalPoint;const s=n.detect(W.HoverOnContainer,t);let r=n.nodeManager.root,o=new m(this.startPos.x,this.startPos.y);s&&(o=s.toLocal(this.startPos),r=s);const i=this.nodeType(),a=n.idGenerator.genId(i),c=this.makeupDefaultProps(n,o),h={id:a,type:i,zIndex:Qt.genZIndex(r),parentId:r.id,props:c};n.actionManager.execAction(new nt);const d=Yt.create(h);n.actionManager.execAction(d),this.target=n.nodeManager.nodeMap.get(a);const u=D.baseProps2Rect(this.target.baseProps);n.addOrUpdate(N.CreateRectBound,{rect:u,transform:this.target.globalTransform()}),n.auxiliaryManager.removeAlignGraphics(),this.viewBounds=n.gmlRender.getViewPortBounds()}onMove(t,n){if(!this.target)return;n.auxiliaryManager.removeAlignGraphics();const s=this.target.baseProps.clone(),r=new Set([this.target]),o=this.alignWorker.alignLineEndAndDrawAlignLines(t,n,r);this.computeRectBounds(o,s);const i=n.gmlRender.getScale(),a=D.baseProps2Rect(s),c=new Set(n.getSelectNodes());c.add(this.target);const h=this.alignWorker.alignStretch(n,a,c,It.both,this.viewBounds,js/i,Ks/i);this.drawAlignLine(a,h,n);const d=new m(a.x,a.y),u=this.target.parent.toLocal(d),p={type:R.Base,x:u.x,y:u.y,width:a.width,height:a.height},f=ct.create(this.target.id,[p],{streaming:!0});n.actionManager.execAction(f);const y=D.baseProps2Rect(this.target.baseProps);n.addOrUpdate(N.CreateRectBound,{rect:y,transform:this.target.globalTransform()})}onUp(t,n){if(!this.target)return;const s=this.target.baseProps.clone(),r=new Set([this.target]),o=this.alignWorker.alignLineEndAndDrawAlignLines(t,n,r);this.computeRectBounds(o,s);const i=n.gmlRender.getScale(),a=D.baseProps2Rect(s),c=new Set(n.getSelectNodes());c.add(this.target);const h=this.alignWorker.alignStretch(n,a,c,It.both,this.viewBounds,js/i,Ks/i);this.drawAlignLine(a,h,n);const d=new m(a.x,a.y),u=this.target.parent.toLocal(d),p={type:R.Base,x:u.x,y:u.y,width:a.width,height:a.height},{width:f,height:y}=this.computeMiniSize(),w=this.computeDefaultSize(n);(T.distance(this.startPos,t.globalPoint)<5/i||p.width<f||p.height<y)&&(p.width=w.width,p.height=w.height);const b=ct.create(this.target.id,[p]);n.actionManager.execAction(b),n.actionManager.execAction(Pt.create([this.target.id])),this.autoFocus()&&n.actionManager.execAction(lt.focus(this.target.id)),n.actionManager.execAction(new et),this.target=null,n.toolManager.resetTool(),n.removeAuxGraphic(N.CreateRectBound),n.auxiliaryManager.removeAlignGraphics(),n.setCursor("default")}computeRectBounds(t,n){this.target&&(t.x>=this.startPos.x&&t.y>=n.y?(n.x=this.startPos.x,n.y=this.startPos.y,n.width=t.x-this.startPos.x,n.height=t.y-this.startPos.y):t.x>this.startPos.x&&t.y<n.y?(n.x=this.startPos.x,n.y=t.y,n.width=t.x-this.startPos.x,n.height=this.startPos.y-t.y):t.x<this.startPos.x&&t.y>n.y?(n.x=t.x,n.y=this.startPos.y,n.width=this.startPos.x-t.x,n.height=t.y-this.startPos.y):t.x<=this.startPos.x&&t.y<=n.y?(n.x=t.x,n.y=t.y,n.width=this.startPos.x-t.x,n.height=this.startPos.y-t.y):(n.x=t.x,n.y=t.y,n.width=t.x-this.startPos.x,n.height=t.y-this.startPos.y))}drawAlignLine(t,n,s){const r=this.target,o=r.baseProps,{width:i,height:a}=n;if(i){t.width+=i.dt;const c={transform:r.transform.clone(),line:{start:new m(0,o.height),end:new m(o.width,o.height)}};i.lines.push(c)}if(a){t.height+=a.dt;const c={transform:r.transform.clone(),line:{start:new m(o.width,0),end:new m(o.width,o.height)}};a.lines.push(c)}s.addOrUpdate(N.AlignStretchLine,{alignInfo:n})}}var _=(l=>(l[l.PureText=0]="PureText",l[l.Rect=1]="Rect",l[l.Ellipse=2]="Ellipse",l[l.Babianxing=3]="Babianxing",l[l.DoubleArrow=4]="DoubleArrow",l[l.LeftArrow=5]="LeftArrow",l[l.LeftKuohao=6]="LeftKuohao",l[l.Lingxing=7]="Lingxing",l[l.LiuBianXing=8]="LiuBianXing",l[l.LiuCheng=9]="LiuCheng",l[l.LiuCheng2=10]="LiuCheng2",l[l.PingXingsiBianXing=11]="PingXingsiBianXing",l[l.Qipao=12]="Qipao",l[l.Qipao2=13]="Qipao2",l[l.RightArrow=14]="RightArrow",l[l.RightKuohao=15]="RightKuohao",l[l.RoundRect=16]="RoundRect",l[l.RoundRect2=17]="RoundRect2",l[l.Shizi=18]="Shizi",l[l.Tixing=19]="Tixing",l[l.Triangle=20]="Triangle",l[l.Triangle2=21]="Triangle2",l[l.Wubianxing=22]="Wubianxing",l[l.WuJiaoxing=23]="WuJiaoxing",l[l.YuanZhu=24]="YuanZhu",l[l.Yunduo=25]="Yunduo",l))(_||{}),Tt=(l=>(l[l.Decision=0]="Decision",l[l.Step=1]="Step",l[l.Data=2]="Data",l[l.Status=3]="Status",l[l.Operation=4]="Operation",l[l.Others=5]="Others",l[l.Section=6]="Section",l[l.Resource=7]="Resource",l))(Tt||{});const rr={[_.PureText]:Tt.Operation,[_.Rect]:Tt.Operation,[_.RoundRect]:Tt.Step,[_.Triangle]:Tt.Operation,[_.Lingxing]:Tt.Decision,[_.Ellipse]:Tt.Status},Nn={[Tt.Status]:"#F2F3F5",[Tt.Data]:"#F0FBEF",[Tt.Operation]:"#E1EAFF",[Tt.Step]:"#E0E2FA",[Tt.Decision]:"#FEEAD2",[Tt.Others]:"#FEF1F1",[Tt.Section]:"#F4F2F3",[Tt.Resource]:""},hn={[Tt.Status]:"#DEE0E3",[Tt.Data]:"#8EE085",[Tt.Operation]:"#82A7FC",[Tt.Step]:"#7B83EA",[Tt.Decision]:"#FFBA6B",[Tt.Others]:"#F98E8B",[Tt.Section]:"#C0A9BD",[Tt.Resource]:""};class Qa extends sr{constructor(){super(...arguments);g(this,"startPos",new m);g(this,"target",null)}computeDefaultSize(){return{height:100,width:100}}computeMiniSize(){return{height:5,width:5}}makeupDefaultProps(t,n){const s=t.toolManager.shapeType,r=rr[s],o=Nn[r],i=hn[r];return[gt.create({x:n.x,y:n.y}),se.create({type:R.Text,fontSize:16,text:"",sizeMode:le.autoHeight}),Jt.create({color:o}),Ot.create({color:i}),new jt(s)]}}class Za extends qs{constructor(){super([new Qa])}streamEnable(e,t){return t.toolManager.currentTool==ft.SHAPE}}class uo{constructor(){g(this,"alignWorker",new cn)}computeLinePoints(e,t,n){return $t.computeLinePoints(e,this.layoutHandler,t,n,this.alignWorker)}alignLinePointsInMove(e,t){return e}alignLinePointsInUp(e,t){return e}computeDownProps(e,t,n,s){const o=[new jt(t.toolManager.shapeType)],i=t.detect(W.NodeEdge,t.lastDiffTypeEvent);if(i){const y={type:R.Connect,start:{objectId:i.node.id,x:i.relativePos.x,y:i.relativePos.y}};e.point=new m(i.point.x,i.point.y),e.nodeConnect={rect:D.rectNode2Rect(i.node.getBounds()),endType:T.computeNodeConnectEnd(i.relativePos,i.node.baseProps.angle)},o.push(y)}else o.push(new Pn);const a={point:new m(e.point.x+1,e.point.y+1)},c=this.layoutHandler.layoutToPointsPro(e,a),h=s.globalTransform().inverseMatrix(),d=c.map(y=>h.crossPoint(y)),u=he.create(d),p=D.rectNode2Rect(T.getBoundsByPoints(d)),f=gt.create({x:p.x,y:p.y,width:p.width,height:p.height});return o.push(u,f,new Ot,Ie.create({rArrow:we.Arrow}),se.create({sizeMode:le.autoWidth}),new bn),o}computeMoveProps(e,t,n,s){const r=this.computeLinePoints(e,t,n),o=this.alignLinePointsInMove(r,n),i=s.parent.globalTransform().inverseMatrix(),a=o.map(u=>i.crossPoint(u)),c=D.rectNode2Rect(T.getBoundsByPoints(a)),h=[he.create(a),gt.create({x:c.x,y:c.y,width:c.width,height:c.height})],d={infos:[{id:s.id,props:h}]};n.actionManager.execAction(new ct(d,{streaming:!0}))}computeUpProps(e,t,n,s){const r=[],o=n.detect(W.NodeEdge,t);if(o){const p=s.connectProps.clone();p.end={objectId:o.node.id,x:o.relativePos.x,y:o.relativePos.y},r.push(p)}const i=this.computeLinePoints(e,t,n),a=this.alignLinePointsInUp(i,n),c=s.parent.globalTransform().inverseMatrix(),h=a.map(p=>c.crossPoint(p)),d=D.rectNode2Rect(T.getBoundsByPoints(h));r.push(he.create(h),gt.create({x:d.x,y:d.y,width:d.width,height:d.height}));const u={infos:[{id:s.id,props:r}]};n.actionManager.execAction(new ct(u,{streaming:!1}))}}class or extends uo{constructor(){super(...arguments);g(this,"layoutHandler",new Qi)}enable(t){return t===Lt.Line}}class ir extends uo{constructor(){super(...arguments);g(this,"layoutHandler",new Zi)}enable(t){return t===Lt.Curve}}class ar extends uo{constructor(){super(...arguments);g(this,"layoutHandler",new En)}enable(t){return t===Lt.RoundPolyLine||t===Lt.PolyLine}alignLinePointsInMove(t,n){return T.dealWithEndPolyPoints(t,n.gmlRender.getScale(),!0)}alignLinePointsInUp(t,n){return T.dealWithEndPolyPointsInUp(t,n.gmlRender.getScale(),!0)}}class Ja extends ge{constructor(){super(...arguments);g(this,"startConnectInfo",{point:new m});g(this,"target",null);g(this,"shapeType",Lt.Line);g(this,"currentHandler",null);g(this,"handlers",[new or,new ir,new ar])}selectHandler(){for(const t of this.handlers)if(t.enable(this.shapeType)){this.currentHandler=t;return}throw new Error("类型错误:没有合适的handler处理")}onStart(t,n){this.startConnectInfo.point=t.globalPoint,this.shapeType=n.toolManager.shapeType,this.selectHandler();const s=n.detect(W.HoverOnContainer,t);let r=n.nodeManager.root;s&&(r=s);const o=this.currentHandler.computeDownProps(this.startConnectInfo,n,t,r),i=n.idGenerator.genId(A.Line),a={id:i,type:A.Line,zIndex:Qt.genZIndex(n.nodeManager.root),parentId:r.id,props:o};n.actionManager.execAction(new nt);const c=Yt.create(a);n.actionManager.execAction(c),this.target=n.nodeManager.nodeMap.get(i),n.actionManager.execAction(Pt.create([this.target.id]))}onMove(t,n){this.currentHandler.computeMoveProps(this.startConnectInfo,t,n,this.target)}onUp(t,n){this.currentHandler.computeUpProps(this.startConnectInfo,t,n,this.target),n.execAction(new et),n.setCursor("default"),n.toolManager.resetTool()}}class tc extends ae{constructor(){super([new Ja],[new Js,new tr,new er])}streamEnable(e,t){return t.toolManager.currentTool==ft.LINE}}class ec extends sr{computeDefaultSize(){return{height:0,width:0}}computeMiniSize(){return{height:0,width:0}}makeupDefaultProps(e,t){return[gt.create({x:t.x,y:t.y}),se.create({type:R.Text,fontSize:16,text:"",horizonAlign:xe.Top,verticalAlign:xe.Top}),new jt(_.PureText)]}}class nc extends ae{constructor(){super([new ec])}streamEnable(e,t){return t.toolManager.currentTool==ft.TEXT}}class Fd extends Zs{constructor(){super(...arguments);g(this,"handlers",[new Oa])}}class Vd{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointermove]));g(this,"handlers",[new or,new ir,new ar])}process(e,t){const n=t.toolManager.creatingLine;if(!n)return;const s=this.getStartConnectInfo(n,t);for(const r of this.handlers)r.enable(n.shapeType)&&r.computeMoveProps(s,e,t,n)}getStartConnectInfo(e,t){const n=e.points,{start:s}=e.connectProps,r={point:n[0]};if(s){const o=t.nodeManager.getNode(s.objectId);o&&(r.nodeConnect={endType:T.computeNodeConnectEnd(s,o.baseProps.angle),rect:D.rectNode2Rect(o.getBounds())})}return r}}class Wd{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointermove]));g(this,"alignWorker",new cn)}process(e,t){const n=t.previewManager.createManager;if(!n.previewGraphics)return;const s=t.toolManager.grab;t.auxiliaryManager.removeAlignGraphics();const{rectNode:r,delta:o}=this.computeMoveRect(n.previewGraphics,e.globalPoint,s),i=this.alignWorker.alignMove(r,t.getSelectNodes(),t),a=this.alignWorker.drawAlignLines(i,t),c=new m(r.minX+a.x,r.minY+a.y);t.alignPoint=c,t.previewManager.updatePos(c),t.addOrUpdate(N.PreviewGraphics,{previewNodes:[n.previewGraphics]})}computeMoveRect(e,t,n){const s=e.getBounds(),r=D.rectNode2Rect(s),o=n?r.x+.5*r.width:r.x,i=n?r.y+.5*r.height:r.y,a=new m(t.x-o,t.y-i);return s.minX+=a.x,s.maxX+=a.x,s.minY+=a.y,s.maxY+=a.y,{rectNode:s,delta:a}}}class po{handle(e,t,n){this.makeupAddNodeInfo(e,t,n).then(s=>{const r=s.id;e.actionManager.execAction(new nt);const o=Yt.create(s);e.actionManager.execAction(o),e.actionManager.execAction(Pt.create([r])),this.autoFocus()&&e.actionManager.execAction(lt.focus(r)),e.actionManager.execAction(new et),e.toolManager.resetTool(),e.previewManager.resetPreviewNode(e),e.auxiliaryManager.removeAlignGraphics()})}detectParentContainer(e,t){const n=e.detect(W.HoverOnContainer,t);let s=e.nodeManager.root;return n&&(s=n),s}}class Gd extends po{enable(e){return e===ft.SHAPE}async makeupAddNodeInfo(e,t,n){const s=e.toolManager.shapeType,r=this.detectParentContainer(e,n),o=this.makeupShapeDefaultProps(s,t,r);return{id:e.idGenerator.genId(A.Shape),type:A.Shape,zIndex:Qt.genZIndex(e.nodeManager.root),parentId:r.id,props:o}}makeupShapeDefaultProps(e,t,n){const s=rr[e]??Tt.Others,r=Nn[s],o=hn[s],i=n.toLocal(t);return[gt.create({x:i.x,y:i.y}),se.create({type:R.Text,fontSize:16,text:"",sizeMode:le.autoHeight}),Jt.create({color:r}),Ot.create({color:o}),new jt(e)]}autoFocus(){return!0}}var jn=(l=>(l[l.A4=0]="A4",l[l.S16_9=1]="S16_9",l[l.S4_3=2]="S4_3",l[l.S1_1=3]="S1_1",l))(jn||{});const cr={[jn.A4]:{width:595,height:842},[jn.S16_9]:{width:860,height:540},[jn.S4_3]:{width:860,height:720},[jn.S1_1]:{width:600,height:600}};class Ud extends po{enable(e){return e===ft.SECTION}async makeupAddNodeInfo(e,t,n){const s=this.detectParentContainer(e,n),r=this.makeupShapeDefaultProps(t,e,s);return{id:e.idGenerator.genId(A.Section),type:A.Section,zIndex:Qt.genZIndex(e.nodeManager.root),parentId:s.id,props:r}}makeupShapeDefaultProps(e,t,n){const s=t.toolManager.shapeType,r=cr[s],o=Tt.Section,i=Nn[o],a=hn[o],c=n.toLocal(e);return[gt.create({x:c.x,y:c.y,width:r.width,height:r.height}),Jt.create({color:i}),Ot.create({color:a})]}autoFocus(){return!1}}const _d="useandom-26T198340PX75pxJACKVERYMINDBUSHWOLF_GQZbfghjklqvwyzrict";let lr=(l=21)=>{let e="",t=crypto.getRandomValues(new Uint8Array(l|=0));for(;l--;)e+=_d[t[l]&63];return e};class fo{async addSvgNodeBySvgCode(e,t,n){const s=n.docState.docId,r=lr(10),o=`${s}/${r}`,i=await n.resourceManager.uploadSvgString(o,e),a=this.computeAddSvgNode(e,i,t,n);return{url:i,addNodeInfo:a}}computeAddSvgNode(e,t,n,s){const r=$n.trimSvgCode(e),o=[{type:R.Base,x:n.x,y:n.y,width:r.width,height:r.height},{type:R.Svg,url:t},{type:R.Border,dashType:Ee.None}];return{id:s.idGenerator.genId(A.SVG),type:A.SVG,zIndex:Qt.genZIndex(s.nodeManager.root),parentId:"",props:o}}}class Kd extends po{constructor(){super(...arguments);g(this,"svgWorker",new fo)}autoFocus(){return!1}enable(t){return t===ft.Resource}async makeupAddNodeInfo(t,n,s){const o=this.detectParentContainer(t,s).toLocal(n),i=t.previewManager.previewResourceManager.previewSvgCode;i===""&&console.error("出现错误,svg code为空");const{addNodeInfo:a}=await this.svgWorker.addSvgNodeBySvgCode(i,o,t);return a}}class jd{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointerup]));g(this,"startPos",new m);g(this,"handlers",[new Kd,new Gd,new Ud])}process(e,t){t.toolManager.grab&&(t.alignPoint?(this.startPos=t.alignPoint,t.alignPoint=null):this.startPos=e.globalPoint,this.handleCreateUp(this.startPos,t,e))}handleCreateUp(e,t,n){for(const s of this.handlers)if(s.enable(t.toolManager.currentTool)){s.handle(t,e,n);return}}}class qd extends Ve{constructor(){super([new Fd,new Js,new tr,new er,new Vd,new Wd,new jd])}canBeEnable(e,t){return!0}canBeExit(e,t){return!0}}class $d extends ee{constructor(){super(...arguments);g(this,"handlers",[new or,new ir,new ar])}enable(t,n){return!n.toolManager.creatingLine}handle(t,n){const s=n.idGenerator.genId(A.Line),r=this.makeupLineProps(t,n);if(!r)return;const o={id:s,type:A.Line,zIndex:Qt.genZIndex(n.nodeManager.root),parentId:"",props:r};n.actionManager.execAction(new nt);const i=Yt.create(o);n.actionManager.execAction(i);const a=n.nodeManager.getNode(s);n.toolManager.setInCreatingLine(a)}makeupLineProps(t,n){const s={point:t.globalPoint},o=n.detect(W.HoverOnContainer,t)??n.nodeManager.root;for(const i of this.handlers)if(i.enable(n.toolManager.shapeType))return i.computeDownProps(s,n,t,o);return null}}class Qd extends ee{constructor(){super(...arguments);g(this,"handlers",[new or,new ir,new ar])}enable(t,n){return n.previewManager.resetPreviewNode(n),n.auxiliaryManager.removeAlignGraphics(),!!n.toolManager.creatingLine}handle(t,n){const s=n.toolManager.creatingLine,r=this.getStartConnectInfo(s,n);for(const o of this.handlers)o.enable(s.shapeType)&&o.computeUpProps(r,t,n,s);n.execAction(new et),n.toolManager.setInCreatingLine(null),n.toolManager.resetTool(),n.setCursor("default")}getStartConnectInfo(t,n){const s=t.points,{start:r}=t.connectProps,o={point:s[0]};if(r){const i=n.nodeManager.getNode(r.objectId);i&&(o.nodeConnect={endType:T.computeNodeConnectEnd(r,i.baseProps.angle),rect:D.rectNode2Rect(i.getBounds())})}return o}}class Zd extends We{constructor(){super(),this.registerDownHandler(new Qd),this.registerUpHandler(new $d)}}class Jd extends ln{constructor(){super([new Zd])}clickEnable(e,t){return t.toolManager.currentTool===ft.LINE}}class tu extends ee{constructor(){super(...arguments);g(this,"res",null)}enable(t,n){return n.toolManager.currentTool===ft.TEXT}handle(t,n){const s=n.idGenerator.genId(A.Shape),r=n.detect(W.HoverOnContainer,t);let o=n.nodeManager.root,i=t.globalPoint.clone();r&&(i=r.toLocal(i),o=r);const a=this.makeupDefaultProps(i),c={id:s,type:A.Shape,zIndex:Qt.genZIndex(n.nodeManager.root),parentId:o.id,props:a};n.actionManager.execAction(new nt);const h=Yt.create(c);n.actionManager.execAction(h),n.actionManager.execAction(Pt.create([s])),n.actionManager.execAction(lt.focus(s)),n.actionManager.execAction(new et),n.toolManager.resetTool()}makeupDefaultProps(t){return[gt.create({x:t.x,y:t.y,height:22,width:64}),se.create({type:R.Text,fontSize:16,text:"",horizonAlign:xe.Top,verticalAlign:xe.Top,sizeMode:le.autoWidth}),new jt(_.PureText)]}}class eu extends ee{constructor(){super(...arguments);g(this,"res",null)}enable(t,n){const s=n.detect(W.Node,t);if(s){const r=s[0],o=r.toLocal(t.globalPoint);if(r instanceof qe&&r.renderText.contains(o))return this.res={node:r,relativePos:o},!0;if(r instanceof dn)return this.res={node:r,relativePos:o},!0}return!1}handle(t,n){if(!this.res)return;n.toolManager.resetTool();const{node:s,relativePos:r}=this.res,o=s.renderText.detect(r);n.execAction(new nt),n.execAction(Pt.create([s.id])),n.execAction(lt.focus(s.id,o)),n.execAction(new et)}}class nu extends We{constructor(){super(),this.registerUpHandler(new eu),this.registerUpHandler(new tu)}}class su extends ln{constructor(){super([new nu])}clickEnable(e,t){return t.toolManager.currentTool===ft.TEXT}}class ru extends sr{constructor(){super(...arguments);g(this,"startPos",new m);g(this,"target",null)}computeDefaultSize(t){const n=t.toolManager.shapeType,s=cr[n];return{width:s.width,height:s.height}}computeMiniSize(){return{height:5,width:5}}nodeType(){return A.Section}autoFocus(){return!1}makeupDefaultProps(t,n){const s=t.toolManager.shapeType,r=Tt.Section,o=Nn[r],i=hn[r],a=cr[s];return[gt.create({x:n.x,y:n.y,width:a.width,height:a.height}),Jt.create({color:o}),Ot.create({color:i})]}}class ou extends qs{constructor(){super([new ru])}streamEnable(e,t){return t.toolManager.currentTool==ft.SECTION}}const iu=new Set([ft.SHAPE,ft.LINE,ft.TEXT,ft.SECTION,ft.Resource]);class au extends Kn{constructor(){super([new Jd,new su,new ou,new Za,new tc,new nc,new qd])}canBeEnable(e,t){return iu.has(t.toolManager.currentTool)}}const hr=12;class cu extends ne{onDetect(e,t){const n=e.globalPoint,s=t.nodeManager.searchNodes(n.x-hr,n.y-hr,n.x+hr,n.y+hr);if(s.length===0)return this.result=null,!1;const r=T.sortGraphics(s);return r.reverse(),this.result=r,!0}}class lu extends ne{onDetect(e,t){const n=t.detect(W.BufferNode,e);if(!n)return!1;const s=n[0];return t.auxiliaryManager.selectManager.include(s)?!1:(this.result=s,!0)}}const hu=12;class du extends ne{onDetect(e,t){const n=t.detect(W.BufferNode,e);if(!n)return!1;const s=n.filter(u=>u.canBeConnected());if(s.length===0)return!1;const r=s[0];if(!r.canBeConnected()||t.auxiliaryManager.selectManager.include(r))return!1;const o=t.renderManager.getScale(),i=hu/o,{width:a,height:c}=r.baseProps,h=r.toLocal(e.globalPoint),d=r.getConnectAnchor();for(const u of d){const p=new m(u.x*a,u.y*c);if(T.circleContains(h,p,i))return this.result={node:r,ratio:u,localPoint:p},!0}return!1}}class sc extends ne{onDetect(e,t){const n=t.auxiliaryManager.selectManager.selectNodes;if(n.size!==1)return!1;const s=[...n][0];if(s.type!==A.Line)return!1;const r=s,o=t.gmlRender.getScale(),i=r.points;for(let a=0;a<i.length-1;a++){const c=i[a],h=i[a+1];if(T.distance(c,h)<(M+6)/o)continue;const u=T.judgeHorizon(c,h),p=.5*(c.x+h.x),f=.5*(c.y+h.y);let y;if(u){const x=new m(p-8/o,f);y=new D(x.x,x.y-4/o,16/o,8/o)}else{const x=new m(p,f-8/o);y=new D(x.x-4/o,x.y,8/o,16/o)}const w=r.toLocal(e.globalPoint);if(T.rectContains(w,y))return this.result={isHorizon:u,line:r,point:new m(p,f),lIndex:a,rIndex:a+1},!0}return!1}}const uu=[new m(.5,0),new m(1,.5),new m(.5,1),new m(0,.5)];class pu extends ne{onDetect(e,t){const n=t.getSelectNodes();if(n.size!==1)return!1;const s=[...n][0];if(!s.canBeConnected())return!1;const r=t.renderManager.getScale(),o=T.computeNodeConnectAnchor(s,r),i=Hr/r;for(let a=0;a<o.length;a++){const c=o[a],h=s.toLocal(e.globalPoint);let d=uu[a];if(T.circleContains(h,c,i))return s.type===A.Shape&&(d=s.drawer.getConnectAnchor()[a]),this.result={node:s,localPoint:c,globalPoint:s.toGlobal(c),relative:d},!0}return!1}}const Rr=class Rr extends ne{onDetect(e,t){const n=xs.flattenNodes([...t.getSelectNodes()]);if(n.length===0)return!1;const s=t.auxiliaryManager.selectManager.getSelectBounds();if(T.rectContains2(e.globalPoint,s))return!1;const r=t.gmlRender.getScale(),o=Rr.HOT_DISTANCE/r;let i=Z.generateMatrix(),a,c,h;if(n.length===1){const d=n[0];if(d.type===A.Line||d.type===A.Section)return!1;const u=d.baseProps;i=d.globalTransform().clone();const p=new m(.5*u.width,.5*u.height);a=i.crossPoint(p),c=new D(0,0,u.width,u.height),h=i.inverseMatrix().crossPoint(e.globalPoint)}else{const d=t.auxiliaryManager.selectManager.getSelectBounds();c=D.rectNode2Rect(d),a=new m(.5*(d.minX+d.maxX),.5*(d.minY+d.maxY)),h=new m(e.globalPoint.x-c.x,e.globalPoint.y-c.y)}return T.circleContains({x:0,y:0},h,o)?(this.result={rotateCenter:a,nodes:n},!0):T.circleContains({x:c.width,y:0},h,o)?(this.result={rotateCenter:a,nodes:n},!0):T.circleContains({x:c.width,y:c.height},h,o)?(this.result={rotateCenter:a,nodes:n},!0):T.circleContains({x:0,y:c.height},h,o)?(this.result={rotateCenter:a,nodes:n},!0):!1}};g(Rr,"HOT_DISTANCE",16);let dr=Rr;class fu extends ne{onDetect(e,t){const n=t.detect(W.Node,e);if(!n)return!1;const s=t.getSelectNodes();for(const r of n)if(!s.has(r)&&r.type===A.Section)return this.result=r,!0;return!1}}class gu extends We{constructor(){super(),this.registerDownHandler(new ro),this.registerDownHandler(new oo),this.registerUpHandler(new io),this.registerUpHandler(new Ea),this.registerUpHandler(new ao)}}class yu extends ln{constructor(){super([new gu])}}class mu extends We{constructor(){super(),this.registerDownHandler(new _a)}}class wu extends Qr{constructor(){super([new mu])}}class xu extends Zs{constructor(){super(...arguments);g(this,"handlers",[new lo])}}class Pu extends Ve{constructor(){super([new co,new xu])}canBeEnable(e,t){return!0}canBeExit(e,t){return!0}}class bu extends Kn{constructor(){super([new so,new wu,new yu,new Pu])}canBeEnable(e,t){return!t.docState.canEdit()}}class vu extends ne{onDetect(e,t){const n=[...t.getSelectNodes()];if(n.length!==1)return!1;const s=n[0];if(s.type!==A.IMG)return!1;const r=t.detect(W.Node,e);return r&&t.auxiliaryManager.selectManager.include(r[0])?(this.result=s,!0):!1}}class Mu extends qs{constructor(){super([new Ka])}streamEnable(e,t){return!0}}class Su{constructor(){g(this,"allowEventTypeSet",new Set([yt.pointermove]))}process(e,t){t.setCursor("grab")}}class Tu extends Ve{constructor(){super([new Su])}canBeEnable(e,t){return!0}canBeExit(e,t){return!0}}class Cu extends Kn{constructor(){super([new Mu,new Tu])}canBeEnable(e,t){return t.toolManager.currentTool===ft.HandTool}}class Lu extends ke{enable(e,t){return!!t.detect(W.ImageOriginBounds,e)}handle(e,t){const n=t.detect(W.ImageOriginBounds,e);n.type===G.BOTTOM||n.type===G.TOP?t.setCursor("ns-resize"):n.type===G.RIGHT||n.type===G.LEFT?t.setCursor("ew-resize"):n.type===G.TOP_LEFT||n.type===G.BOTTOM_RIGHT?t.setCursor("nwse-resize"):(n.type===G.TOP_RIGHT||n.type===G.BOTTOM_LEFT)&&t.setCursor("nesw-resize")}}class Au extends Zs{constructor(){super(...arguments);g(this,"handlers",[new Da,new Lu,new lo])}}class Ru extends Ve{constructor(){super([new Au])}canBeEnable(e,t){return!0}canBeExit(e,t){return!0}}class Nu extends ge{constructor(){super(...arguments);g(this,"limitBounds");g(this,"imgNode");g(this,"lastPoint");g(this,"stretchRect");g(this,"transform");g(this,"stretchType")}onStart(t,n){const s=n.detect(W.Stretch,t);this.stretchType=s.type;const r=[...n.getSelectNodes()][0];this.imgNode=r;const o=r.getOriginImageRect().clone(),i=r.toGlobal({x:o.x,y:o.y}),a=this.imgNode.globalBaseProps;this.limitBounds=new D(i.x,i.y,o.width,o.height);const c=Z.generateMatrix().rotate(a.angle),d=Z.generateMatrix().translate(i.x,i.y).crossProduct(c);this.transform=d.inverseMatrix(),this.lastPoint=this.transform.crossPoint(t.globalPoint);const u=new m(a.x,a.y),p=this.transform.crossPoint(u);this.stretchRect=new D(p.x,p.y,a.width,a.height),n.execAction(new nt)}onCropNode(t,n,s){const r=this.transform.crossPoint(t.globalPoint),o=new m(r.x-this.lastPoint.x,r.y-this.lastPoint.y);this.lastPoint=r;const i=this.stretchRect;switch(this.stretchType){case G.TOP:i.y=i.y+o.y,i.height=i.height-o.y;break;case G.BOTTOM:i.height=i.height+o.y;break;case G.LEFT:i.x=i.x+o.x,i.width=i.width-o.x;break;case G.RIGHT:i.width=i.width+o.x;break;case G.TOP_LEFT:i.y=i.y+o.y,i.height=i.height-o.y,i.x=i.x+o.x,i.width=i.width-o.x;break;case G.TOP_RIGHT:i.y=i.y+o.y,i.height=i.height-o.y,i.width=i.width+o.x;break;case G.BOTTOM_LEFT:i.x=i.x+o.x,i.width=i.width-o.x,i.height=i.height+o.y;break;case G.BOTTOM_RIGHT:i.width=i.width+o.x,i.height=i.height+o.y;break}const a=this.modifyStretchRect(i),c=new m(a.x,a.y),h=this.transform.inverseMatrix().crossPoint(c),d=this.imgNode.parent.toLocal(h),u=[{type:R.Base,x:d.x,y:d.y,width:a.width,height:a.height}];n.execAction(ct.create(this.imgNode.id,u,{streaming:s}));const p=this.imgNode.toLocal(new m(this.limitBounds.x,this.limitBounds.y));n.execAction(ct.create(this.imgNode.id,[{type:R.Crop,cropInfo:{imgX:p.x,imgY:p.y,imgWidth:this.limitBounds.width,imgHeight:this.limitBounds.height}}],{streaming:s}))}onMove(t,n){this.onCropNode(t,n,!0)}modifyStretchRect(t){const n=new D(t.x,t.y,t.width,t.height);return n.width<10&&(n.width=10),n.height<10&&(n.height=10),t.x<0?(n.x=0,n.width=t.x+t.width):t.x+t.width>this.limitBounds.width&&(n.width=this.limitBounds.width-t.x),t.y<0?(n.y=0,n.height=t.y+t.height):t.y+t.height>this.limitBounds.height&&(n.height=this.limitBounds.height-t.y),n}onUp(t,n){this.onCropNode(t,n,!1),n.execAction(new et)}}class Eu extends ae{constructor(){super([new Nu])}streamEnable(e,t){return!!t.detect(W.Stretch,e)}}class Iu extends Ps{enable(e){return e.type===A.IMG}handle(e,t,n,s,r){const o=t.crop,i=t.crop.globalImgPos,a=o.originCropProps,c=a.cropType,h=o.originTransform,d=r.crossPoint(i),u=h.crossPoint(d);return[{id:e.id,props:[{type:R.Crop,cropInfo:{imgX:u.x,imgY:u.y,imgWidth:a.cropInfo.imgWidth*n,imgHeight:a.cropInfo.imgHeight*s},cropType:c}]}]}}class ku extends Qs{constructor(){super(...arguments);g(this,"handlers",[new Iu])}computeAnchorPoint(t,n){const s=this.target.nodes[0],{x:r,y:o,width:i,height:a}=s.getOriginImageRect();switch(t.type){case G.TOP:return this.alignType=It.height,{x:r,y:o+a};case G.RIGHT:return this.alignType=It.width,{x:r,y:o};case G.BOTTOM:return this.alignType=It.height,{x:r,y:o};case G.LEFT:return this.alignType=It.width,{x:r+i,y:o};case G.TOP_LEFT:return this.alignType=It.both,{x:r+i,y:o+a};case G.TOP_RIGHT:return this.alignType=It.both,{x:r,y:o+a};case G.BOTTOM_RIGHT:return this.alignType=It.both,{x:r,y:o};case G.BOTTOM_LEFT:default:return this.alignType=It.both,{x:r+i,y:o}}}judgeUniform(t){this.isUniform=!0}computeTarget(t,n){const s=n.detect(W.ImageOriginBounds,t);this.target={type:s.type,nodes:[...n.getSelectNodes()]}}alignStretchGlobalPoint(t,n){const s=[...n.getSelectNodes()][0],r=s.toLocal(t.globalPoint),o=s.baseProps,i=t.globalPoint.clone(),a=this.target.type;return r.x>0&&(a===G.LEFT||a===G.BOTTOM_LEFT||a===G.TOP_LEFT)&&(i.x=s.toGlobal({x:0,y:0}).x),r.x<o.width&&(a===G.RIGHT||a===G.BOTTOM_RIGHT||a===G.TOP_RIGHT)&&(i.x=s.toGlobal({x:o.width,y:0}).x),r.y>0&&(a===G.TOP||a===G.TOP_RIGHT||a===G.TOP_LEFT)&&(i.y=s.toGlobal({x:0,y:0}).y),r.y<o.height&&(a===G.BOTTOM||a===G.BOTTOM_RIGHT||a===G.BOTTOM_LEFT)&&(i.y=s.toGlobal({x:0,y:o.height}).y),i}computeOriginTransform(t){const n=this.target,s=[...t.getSelectNodes()][0],{x:r,y:o,angle:i}=s.globalBaseProps,a=Z.generateMatrix().rotate(-i),c=Z.generateMatrix().translate(-r,-o),h=this.computeAnchorPoint(n,D.baseProps2Rect(s.baseProps)),u=Z.generateMatrix().translate(-h.x,-h.y).crossProduct(a.crossProduct(c));this.originTransform=u}drawAlignLine(t,n,s){const r=this.target.nodes[0],o=r.baseProps,{width:i,height:a}=n,c=r.globalTransform().clone();if(i){t.width+=i.dt;const h={transform:c,line:{start:new m(0,o.height),end:new m(o.width,o.height)}};i.lines.push(h)}if(a){t.height+=a.dt;const h={transform:c,line:{start:new m(o.width,0),end:new m(o.width,o.height)}};a.lines.push(h)}s.addOrUpdate(N.AlignStretchLine,{alignInfo:n})}getMiniSize(t){const n=this.target.type,s=this.target.nodes[0],r=s.baseProps,{x:o,y:i,width:a,height:c}=s.getOriginImageRect(),h=a/c;switch(n){case G.BOTTOM:case G.RIGHT:case G.BOTTOM_RIGHT:{const d=r.width-o,u=r.height-i,p=u*h;return d>p?new m(d,d/h):new m(p,u)}case G.LEFT:case G.BOTTOM_LEFT:{const d=a+o,u=r.height-i,p=u*h;return d>p?new m(d,d/h):new m(p,u)}case G.TOP_LEFT:{const d=a+o,u=c+i,p=u*h;return d>p?new m(d,d/h):new m(p,u)}case G.TOP:case G.TOP_RIGHT:{const d=r.width-o,u=c+i,p=u*h;return d>p?new m(d,d/h):new m(p,u)}default:return new m(r.width,r.height)}}getStretchRect(t){const n=[...t.getSelectNodes()][0],s=D.baseProps2Rect(n.baseProps),r=n.getOriginImageRect();return s.width=r.width,s.height=r.height,s.x=s.x-r.x,s.y=s.y-r.y,s}recordPropsMap(t){this.propsMap.clear();const n=this.target.nodes;for(const s of n){const r=this.recordNodePropInfo(s);this.propsMap.set(s,r)}}afterStretchNode(t,n,s,r,o,i,a){t.asyncRenderNodeManager.batchAddRenderNode(a)}}class Bu extends ae{constructor(){super([new ku])}streamEnable(e,t){return!!t.detect(W.ImageOriginBounds,e)}}class Ou extends ge{constructor(){super(...arguments);g(this,"lastPoint");g(this,"originImgRect");g(this,"imgNode");g(this,"limitBounds");g(this,"transform");g(this,"dragRect")}onStart(t,n){this.imgNode=[...n.getSelectNodes()][0],this.originImgRect=this.imgNode.getOriginImageRect().clone();const s=this.imgNode.globalBaseProps,r=this.imgNode.toGlobal({x:this.originImgRect.x,y:this.originImgRect.y});this.limitBounds=new D(r.x,r.y,this.originImgRect.width,this.originImgRect.height);const o=Z.generateMatrix().rotate(s.angle),a=Z.generateMatrix().translate(r.x,r.y).crossProduct(o);this.transform=a.inverseMatrix();const c=this.transform.crossPoint({x:s.x,y:s.y});this.dragRect=new D(c.x,c.y,s.width,s.height),this.lastPoint=this.transform.crossPoint(t.globalPoint),n.execAction(new nt)}onMove(t,n){this.dragCrop(t,n,!0)}onUp(t,n){this.dragCrop(t,n,!1),n.execAction(new et)}dragCrop(t,n,s){const r=this.imgNode.cropProps.cropInfo,o=this.modifyCropBasePos(t,n),i=this.imgNode.parent.toLocal(o),a=[{type:R.Base,x:i.x,y:i.y}];n.execAction(new ct({infos:[{id:this.imgNode.id,props:a}]},{streaming:s}));const c=this.imgNode.toLocal(this.limitBounds),h={imgX:c.x,imgY:c.y,imgWidth:r.imgWidth,imgHeight:r.imgHeight},d=[{type:R.Crop,cropInfo:h}];n.execAction(new ct({infos:[{id:this.imgNode.id,props:d}]},{streaming:s}))}modifyCropBasePos(t,n){const s=t.globalPoint,r=this.transform.crossPoint(s),o=r.x-this.lastPoint.x,i=r.y-this.lastPoint.y,a=this.dragRect;a.x+=o,a.y+=i;const c=this.imgNode.baseProps,h=new m(a.x,a.y);a.x+a.width>this.limitBounds.width?h.x=this.limitBounds.width-c.width:a.x<0&&(h.x=0),a.y<0?h.y=0:a.y+a.height>this.limitBounds.height&&(h.y=this.limitBounds.height-c.height);const d=this.transform.inverseMatrix().crossPoint(h);return this.lastPoint=r,d}}class Du extends ae{constructor(){super([new Ou])}streamEnable(e,t){const n=[...t.getSelectNodes()];return n.length!==1||!t.cropManager.duringCrop?!1:!!n[0].contains(e.globalPoint)}}class vs{intoCrop(e){const t=e.getSelectNodes();if(t.size!==1)return;const n=[...t][0];if(!(n instanceof _n)||e.cropManager.duringCrop)return;e.cropManager.intoCrop(),e.auxiliaryManager.selectManager.refreshSelectStatus(),e.renderManager.addAuxiliaryDrawTask();const r=n.cropProps;if(!r.cropInfo||r.cropType===de.None){const{width:o,height:i}=n.baseProps;e.execAction(new nt),e.execAction(ct.create(n.id,[{cropType:de.Rect,cropInfo:{imgX:0,imgY:0,imgWidth:o,imgHeight:i},type:R.Crop}])),e.execAction(new et)}}exitCrop(e){if(e.cropManager.duringCrop){e.cropManager.exitCrop(),e.auxiliaryManager.selectManager.refreshSelectStatus(),e.renderManager.addAuxiliaryDrawTask();return}}resetCrop(e){const t=e.getSelectNodes();if(t.size!==1)return;const n=[...t][0];if(!(n instanceof _n)||!e.cropManager.duringCrop)return;const r=n.cropProps;if(!r.cropInfo||r.cropType===de.None)return;const o=n.getOriginImageRect(),i=new m(o.x,o.y),a=n.toGlobal(i),c=n.parent.toLocal(a);e.execAction(new nt),e.execAction(ct.create(n.id,[{cropType:de.None,type:R.Crop},{type:R.Base,x:c.x,y:c.y,width:o.width,height:o.height}])),e.execAction(new et),e.cropManager.exitCrop(),e.auxiliaryManager.selectManager.refreshSelectStatus()}}class Hu extends ee{constructor(){super(...arguments);g(this,"worker",new vs)}enable(t,n){const s=[...n.getSelectNodes()];if(s.length!==1)return!1;const r=s[0],o=r.toLocal(t.globalPoint),i=r.getOriginImageRect();return n.detect(W.ImageOriginBounds,t)?!1:!T.rectContains(o,i)}handle(t,n){this.worker.exitCrop(n),n.auxiliaryManager.slotManager.addSlotState(te.ExitCrop,!0)}}class zu extends We{constructor(){super(),this.registerDownHandler(new Hu)}}class Xu extends ln{constructor(){super([new zu])}}class Yu extends Kn{constructor(){super([new Eu,new Bu,new Du,new Xu,new Ru])}canBeEnable(e,t){return t.cropManager.duringCrop}}class Fu extends ne{onDetect(e,t){const n=t.getSelectNodes();if(n.size!==1)return!1;const s=[...n][0];if(s.type!==A.IMG||!t.cropManager.duringCrop)return!1;const r=s,{cropType:o,cropInfo:i}=r.cropProps;if(o===de.None||!i)return!1;const a=8/t.renderManager.getScale(),c=r.getOriginImageRect(),h=s.toLocal(e.globalPoint),d=T.detectRectBounds(c,h,a);return d?(this.result={type:d.type},!0):!1}}class go extends ha{constructor(){super(...arguments);g(this,"detectors",new Map([[W.Node,new da],[W.HoverNode,new ua],[W.PolyControlPoint,new sc],[W.Rotate,new dr],[W.Stretch,new $s],[W.ExpandShape,new qa],[W.LineEndPoint,new $a],[W.NodeEdge,new Yd],[W.BufferNode,new cu],[W.BufferHoverNode,new lu],[W.HoverNodeAnchor,new du],[W.HoverConnectAnchor,new pu],[W.HoverOnContainer,new fu],[W.Image,new vu],[W.ImageOriginBounds,new Fu]]));g(this,"modes",[new Cu,new bu,new Yu,new au,new ja])}}const Vu={[_.Ellipse]:"#F2F3F5",[_.LiuBianXing]:"#F2F3F5",[_.Yunduo]:"#F2F3F5",[_.YuanZhu]:"#F0FBEF",[_.PingXingsiBianXing]:"#F0FBEF",[_.Tixing]:"#E1EAFF",[_.Triangle]:"#E1EAFF",[_.Triangle2]:"#E1EAFF",[_.RightArrow]:"#E1EAFF",[_.DoubleArrow]:"#E1EAFF",[_.LeftArrow]:"#E1EAFF",[_.RoundRect]:"#E0E2FA",[_.RoundRect2]:"#E0E2FA",[_.Rect]:"#E0E2FA",[_.LiuCheng]:"#E0E2FA",[_.LiuCheng2]:"#E0E2FA",[_.Lingxing]:"#FEEAD2",[_.WuJiaoxing]:"#FEEAD2",[_.Qipao]:"#FEF1F1",[_.Qipao2]:"#FEF1F1",[_.Shizi]:"#FEF1F1",[_.RightKuohao]:"#FEF1F1",[_.LeftKuohao]:"#FEF1F1"},Wu={[_.Ellipse]:"#DEE0E3",[_.LiuBianXing]:"#DEE0E3",[_.Yunduo]:"#DEE0E3",[_.YuanZhu]:"#8EE085",[_.PingXingsiBianXing]:"#8EE085",[_.Tixing]:"#82A7FC",[_.Triangle]:"#82A7FC",[_.Triangle2]:"#82A7FC",[_.RightArrow]:"#82A7FC",[_.DoubleArrow]:"#82A7FC",[_.LeftArrow]:"#82A7FC",[_.RoundRect]:"#7B83EA",[_.RoundRect2]:"#7B83EA",[_.Rect]:"#7B83EA",[_.LiuCheng]:"#7B83EA",[_.LiuCheng2]:"#7B83EA",[_.Lingxing]:"#FFBA6B",[_.WuJiaoxing]:"#FFBA6B",[_.Qipao]:"#F98E8B",[_.Qipao2]:"#F98E8B",[_.Shizi]:"#F98E8B",[_.RightKuohao]:"#F98E8B",[_.LeftKuohao]:"#F98E8B"},Gu=(l,{x:e,y:t,width:n,height:s})=>l.x>=e&&l.x<=e+n&&l.y>=t&&l.y<=t+s;class En extends Kr{enable(e){return e.isPolyLine()}layoutToPoints(e,t){const n=e.lineProps,{start:s,end:r}=e.connectProps,o=[...e.globalLinePoints];if(!n.auto&&o.length>2){if(s){const c=o[0],h=o[1],d=T.judgeHorizon(c,h),u=t.nodeManager.getNode(s.objectId);if(u){const p=this.getNodePos(u,s);c.x=p.x,c.y=p.y}d?h.y=c.y:h.x=c.x}if(r){const c=o[o.length-2],h=o[o.length-1],d=T.judgeHorizon(c,h),u=t.nodeManager.getNode(r.objectId);if(u){const p=this.getNodePos(u,r);h.x=p.x,h.y=p.y}d?c.y=h.y:c.x=h.x}const i=e.globalTransform().inverseMatrix();return o.map(c=>i.crossPoint(c))}else{const i=this.getLayoutHandler(e,s,t),a=this.computeLayout(i,e,r,t),c=e.globalTransform().inverseMatrix();return a.map(d=>c.crossPoint(d))}}layoutToPointsPro(e,t){const n=this.getLayoutHandlerV2(e);return this.computePointsV2(n,t)}getLayoutHandlerV2({point:e,nodeConnect:t}){if(!t)return new Ji(e);const{rect:n,endType:s}=t;switch(s){case Mt.Top:return new Eh(e,n);case Mt.Bottom:return new Ih(e,n);case Mt.Left:return new kh(e,n);case Mt.Right:return new Bh(e,n);default:return new Ji(e)}}computePointsV2(e,{point:t,nodeConnect:n}){if(!n)return e.toPoint(t);const{rect:s,endType:r}=n;switch(r){case Mt.Right:return e.right(t,s);case Mt.Left:return e.left(t,s);case Mt.Bottom:return e.bottom(t,s);case Mt.Top:return e.top(t,s);default:return e.toPoint(t)}}getLayoutHandler(e,t,n){const s={point:e.globalLinePoints[0]};if(t){const r=n.nodeManager.getNode(t.objectId);r&&(s.nodeConnect={rect:D.rectNode2Rect(r.getBounds()),endType:T.computeNodeConnectEnd(t,r.baseProps.angle)},s.point=this.getNodePos(r,t))}return this.getLayoutHandlerV2(s)}computeLayout(e,t,n,s){const r=$t.computeConnectInfo(t,n,s,!0);return this.computePointsV2(e,r)}}class Ms{constructor(){g(this,"handlers",[new Qi,new Zi,new En])}work(e,t,n){for(const s of e)this.handleAndMsg(s,t,n)}layoutToPoints(e,t){for(const n of this.handlers)if(n.enable(e))return n.layoutToPoints(e,t);return[]}handleAndMsg(e,t,n){for(const s of this.handlers)if(s.enable(e)){const r=s.handle(e,t);t.execAction(new ct(r,{streaming:n}));return}}collectNodeLinks(e,t,n){t.nodeManager.getNodeLinks(e).forEach(r=>n.add(r));for(const r of e.children){if(r.type===A.Line){const o=r,{start:i,end:a}=o.connectProps;(i||a)&&n.add(o)}this.collectNodeLinks(r,t,n)}}}class qn{constructor(){g(this,"prevStringBuilder",{text:""});g(this,"nextStringBuilder",{text:""});g(this,"currentbuilder",this.prevStringBuilder);g(this,"layoutWorker",new Ms)}switchCurrentBuilder(e,t){return this.currentbuilder===this.nextStringBuilder?!1:e.equal(t)?(this.currentbuilder=this.nextStringBuilder,!0):!1}splitText(e,t){this.prevStringBuilder={text:""},this.nextStringBuilder={text:""},this.currentbuilder=this.prevStringBuilder;let n=-1,s=0;for(let r=0;r<e.paragraphs.length;r++){const o=e.paragraphs[r];for(let i=0;i<o.lines.length;i++){const a=o.lines[i];this.switchCurrentBuilder(t,new Ht(r,i,-1))&&(s=n);for(let h=0;h<a.characters.length;h++){const d=a.characters[h];this.currentbuilder.text+=d.charText,n++,this.switchCurrentBuilder(t,new Ht(r,i,h))&&(s=n)}}r<e.paragraphs.length-1&&(this.currentbuilder.text+=`
|
|
5
|
+
`,n++)}return{prev:this.prevStringBuilder.text,next:this.nextStringBuilder.text,index:s}}getTextCursorPosByIndex(e,t){let n=-1;for(let s=0;s<e.paragraphs.length;s++){const r=e.paragraphs[s];for(let o=0;o<r.lines.length;o++){const i=r.lines[o];if(n===t)return new Ht(s,o,-1);for(let a=0;a<i.characters.length;a++)if(n++,n===t)return new Ht(s,o,a)}s<e.paragraphs.length-1&&n++}return e.tailTextCursorPosition()}modifyBaseProps(e,t,n){let s=!1;if(e.textProps.sizeMode===le.autoWidth){const r=t.getTextContentRect(),{width:o,height:i}=t.baseProps,a=o-r.width,c=e.height+(i-r.height)+.2;n.execAction(ct.create(t.id,[{type:R.Base,width:e.width+a,height:c}])),s=!0}else if(e.textProps.sizeMode===le.autoHeight){const{height:r}=t.baseProps,o=t.drawer.fullTextNodeHeight(t);if(r>o)return;n.execAction(ct.create(t.id,[{type:R.Base,height:o}])),s=!0}if(s){const r=new Set;this.layoutWorker.collectNodeLinks(t,n,r),this.layoutWorker.work([...r],n,!1)}}}class ur{constructor(){g(this,"editTextWorker",new qn)}work(e,t,n){n.execAction(lt.selection(e.node.id,t.start,t.end));const{node:s,renderText:r}=e,o=this.editTextWorker.splitText(r,t.start),i=this.editTextWorker.splitText(r,t.end),a={type:R.Text,text:o.prev+i.next};n.execAction(ct.create(s.id,[a]));const c=this.editTextWorker.getTextCursorPosByIndex(r,o.index);n.execAction(lt.focus(s.id,c))}}class pr{}class yo extends pr{enable(e,t){return e.paragraphIndex===t.paragraphIndex&&e.lineIndex===t.lineIndex}handle(e,t,n){const s=e.paragraphs[t.paragraphIndex],r=s.lines[t.lineIndex],o=r.getCharacter(n.charIndex);let i=0,a=0;if(t.charIndex>-1){const h=r.getCharacter(t.charIndex);i=h.x+h.width,a=h.y}const c=new D(i,a,o.x+o.width-i,r.height);return c.x+=r.x+s.x+e.x,c.y+=r.y+s.y+e.y,[c]}}class mo extends pr{enable(e,t){return e.paragraphIndex===t.paragraphIndex&&e.lineIndex!==t.lineIndex}handle(e,t,n){const s=[],r=e.paragraphs[t.paragraphIndex],o=r.lines[t.lineIndex],i=r.lines[n.lineIndex];let a=0,c=0;const h=o.getCharacter(t.charIndex);a=h===null?0:h.x+h.width,c=h===null?0:h.y;const d=o.width-a;if(a+=o.x+r.x+e.x,c+=o.y+r.y+e.y,s.push(new D(a,c,d,o.height)),t.lineIndex+1===n.lineIndex&&n.charIndex===-1)return s;for(let p=t.lineIndex+1;p<n.lineIndex;p++){const f=r.lines[p];a=f.x+r.x+e.x,c=f.y+r.y+e.y,s.push(new D(a,c,f.width,f.height))}const u=i.getCharacter(n.charIndex);return u&&(a=i.x+r.x+e.x,c=i.y+r.y+e.y,s.push(new D(a,c,u.x+u.width,i.height))),s}}class rc extends pr{constructor(){super(...arguments);g(this,"handlers",[new yo,new mo])}enable(t,n){return t.paragraphIndex!==n.paragraphIndex}handleSamePara(t,n,s){for(const r of this.handlers)if(r.enable(n,s))return r.handle(t,n,s);return[]}handle(t,n,s){const r=[],o=t.paragraphs[n.paragraphIndex],i=t.paragraphs[s.paragraphIndex],a=this.handleSamePara(t,n,o.tailCursorPosition());r.push(...a);for(let h=n.paragraphIndex+1;h<s.paragraphIndex;h++){const d=t.paragraphs[h];for(const u of d.lines)r.push(new D(t.x+d.x+u.x,t.y+d.y+u.y,u.width,u.height))}const c=this.handleSamePara(t,i.headCursorPosition(),s);return r.push(...c),r}}class oc{constructor(){g(this,"handlers",[new yo,new mo,new rc])}handleTextSelection(e,t,n){for(const s of this.handlers)if(s.enable(t,n))return s.handle(e,t,n);return[]}computeTextSelection(e,t,n){return t.equal(n)?[]:this.handleTextSelection(e,t,n)}}class wo{constructor(){g(this,"segmentWorker",new Intl.Segmenter("en",{granularity:"grapheme"}))}split(e){return Array.from(this.segmentWorker.segment(e)).map(n=>n.segment)}}const Nt=16,Et=16,ic=[{x:0,y:0},{x:Nt,y:0},{x:Nt,y:Et},{x:0,y:Et}];class Ss{}class Uu extends Ss{drawOnGLCtx(e,t){const n=t.borderProps;e.strokeStyle=n.color,e.lineWidth=n.width,e.globalAlpha=n.alpha,e.moveTo(0,.5*Et),e.lineTo(Nt,.5*Et),e.moveTo(.5*Nt,0),e.lineTo(Nt,.5*Et),e.lineTo(.5*Nt,Et),e.stroke()}}class _u extends Ss{drawOnGLCtx(e,t){const n=t.borderProps;e.fillStyle=n.color,e.strokeStyle=n.color,e.lineWidth=n.width,e.globalAlpha=n.alpha,e.moveTo(0,.5*Et),e.lineTo(.5*Nt,.5*Et),e.stroke(),e.beginPath(),e.moveTo(.5*Nt,0),e.lineTo(Nt,.5*Et),e.lineTo(.5*Nt,Et),e.closePath(),e.fill(),e.stroke()}}class Ku extends Ss{drawOnGLCtx(e,t){const n=t.borderProps;e.strokeStyle=n.color,e.lineWidth=2,e.globalAlpha=n.alpha,e.moveTo(0,.5*Et),e.lineTo(.5*Nt,.5*Et),e.stroke(),e.beginPath(),e.moveTo(.5*Nt,0),e.lineTo(Nt,.5*Et),e.lineTo(.5*Nt,Et),e.closePath(),e.stroke()}}class ju extends Ss{drawOnGLCtx(e,t){const n=t.borderProps;e.fillStyle=n.color,e.lineWidth=n.width,e.globalAlpha=n.alpha,e.moveTo(0,.5*Et),e.lineTo(.5*Nt,.3*Et),e.lineTo(Nt,.5*Et),e.lineTo(.5*Nt,.7*Et),e.closePath(),e.fill()}}class qu extends Ss{drawOnGLCtx(e,t){const n=t.borderProps;e.strokeStyle=n.color,e.lineWidth=2,e.globalAlpha=n.alpha,e.moveTo(0,.5*Et),e.lineTo(.5*Nt,.3*Et),e.lineTo(Nt,.5*Et),e.lineTo(.5*Nt,.7*Et),e.closePath(),e.stroke()}}const yn=class yn extends Sn{constructor(t,n){super(t,n);g(this,"type",A.Line);g(this,"renderText");g(this,"inEditing",!1);g(this,"rArrowMatrix",Z.generateMatrix());g(this,"lArrowMatrix",Z.generateMatrix());this.props.set(R.Base,new gt),this.props.set(R.Border,new Ot),this.props.set(R.Shape,new jt),this.props.set(R.Line,new he),this.props.set(R.Arrow,new Ie),this.props.set(R.Connect,new Pn),this.props.set(R.Text,se.create({sizeMode:le.autoWidth})),this.props.set(R.LineTextRect,new bn),this.renderText=new Wr}get borderProps(){return this.props.get(R.Border)}get textProps(){return this.props.get(R.Text)}get arrowProps(){return this.props.get(R.Arrow)}get shapeType(){return this.props.get(R.Shape).shapeCode}get lineProps(){return this.props.get(R.Line)}get globalLinePoints(){const t=this.lineProps.points,n=this.globalTransform();return t.map(r=>n.crossPoint(r))}get connectProps(){return this.props.get(R.Connect)}get points(){return this.lineProps.points}get lineTextRect(){return this.props.get(R.LineTextRect)}get drawer(){const t=this.shapeType;let n=yn.drawerMap.get(t);return n||(console.error("取不到drawer,使用line兜底!"),n=yn.drawerMap.get(Lt.Line)),n}canBeConnected(){return!1}getStretchMinSize(){return new m(10,10)}drawWithTextClip(t){const s=this.getTextContentRect();s.x-=2,s.y-=2,s.width+=2*2,s.height+=2*2;const r=D.rectNode2Rect(this.getRectNode());let o=new m(r.x,r.y);o=this.toLocal(o),t.save(),t.beginPath(),t.rect(o.x,o.y,r.width,r.height),t.rect(s.x,s.y,s.width,s.height),t.clip("evenodd"),this.drawCore(t),t.restore()}drawCore(t){const n=this.borderProps;T.setDashLine(n,t),t.save(),t.strokeStyle=n.color,t.globalAlpha=n.alpha,t.lineWidth=n.width,this.drawer.draw(this,t),t.restore(),t.beginPath(),this.drawArrow(t)}drawOnGLCtx(t){const n=this.textProps.text!==""||this.inEditing;t.save();const{a:s,b:r,c:o,d:i,e:a,f:c}=this.globalTransform();t.transform(s,r,o,i,a,c),n?this.drawWithTextClip(t):this.drawCore(t),this.drawText(t),t.restore()}drawText(t){t.save(),t.beginPath();const n=new m;this.renderText.draw(t,n),t.restore()}updateProps(t){super.updateProps(t),this.updateLArrowMatrix(),this.updateRArrowMatrix();const n=t.find(i=>i.type===R.Text),s=t.find(i=>i.type===R.Base),r=t.find(i=>i.type===R.Line),o=t.find(i=>i.type===R.LineTextRect);if(n||s||r||o){const i=this.getTextContentRect();this.renderText.typesetting(this.graphicContext,this.textProps,i)}}getArrowDrawer(t){const n=yn.arrowDrawerMap.get(t);return n||null}draw(){this.drawOnGLCtx(this.graphicContext)}getBounds(){const t=[...this.points],n=this.globalTransform(),s=t.map(o=>n.crossPoint(o));return T.getBoundsByPoints(s)}getRectNode(){const t=[...this.points],{lArrow:n,rArrow:s}=this.arrowProps;if(n)for(const c of ic)t.push(this.lArrowMatrix.crossPoint(c));if(s)for(const c of ic)t.push(this.rArrowMatrix.crossPoint(c));const r=this.globalTransform(),o=t.map(c=>r.crossPoint(c)),i=T.getBoundsByPoints(o),a=this.borderProps;return i.minX=i.minX-a.width,i.minY=i.minY-a.width,i.maxX=i.maxX+2*a.width,i.maxY=i.maxY+2*a.width,i.id=this.id,i}updateRArrowMatrix(){const{rArrow:t}=this.arrowProps;if(!t)return;const n=this.points,s=n[n.length-1],r=new m(Nt,.5*Et);let o=0;if(this.isPolyLine()){const u=n[n.length-2],p=s;T.judgeHorizon(u,p)?o=p.x>u.x?0:180:o=p.y>u.y?90:-90}else{const u=n[n.length-2];o=T.lineAngle(u,s)/Math.PI*180}const i=Z.generateMatrix().translate(-.5*Nt,-.5*Nt),a=Z.generateMatrix().rotate(o),c=i.crossProduct(a),h=c.crossPoint(r),d=Z.generateMatrix().translate(s.x-h.x,s.y-h.y);this.rArrowMatrix=d.crossProduct(c)}updateLArrowMatrix(){const{lArrow:t}=this.arrowProps;if(!t)return;const n=this.points,s=n[0],r=new m(Nt,.5*Et);let o=0;if(this.isPolyLine()){const u=s,p=n[1];T.judgeHorizon(u,p)?o=p.x>u.x?180:0:o=p.y>u.y?-90:90}else{const u=n[1];o=T.lineAngle(u,s)/Math.PI*180}const i=Z.generateMatrix().translate(-.5*Nt,-.5*Nt),a=Z.generateMatrix().rotate(o),c=i.crossProduct(a),h=c.crossPoint(r),d=Z.generateMatrix().translate(s.x-h.x,s.y-h.y);this.lArrowMatrix=d.crossProduct(c)}drawArrow(t){if(this.points.length===0){console.error("line has no point!");return}const s=this.arrowProps;if(s.rArrow){const r=this.getArrowDrawer(s.rArrow);if(r){t.save();const{a:o,b:i,c:a,d:c,e:h,f:d}=this.rArrowMatrix;t.transform(o,i,a,c,h,d),r.drawOnGLCtx(t,this),t.restore()}}if(s.lArrow){const r=this.getArrowDrawer(s.lArrow);if(r){t.save();const{a:o,b:i,c:a,d:c,e:h,f:d}=this.lArrowMatrix;t.transform(o,i,a,c,h,d),r.drawOnGLCtx(t,this),t.restore()}}}getRArrowPoint(t,n,s=5){const r=T.distance(t,n),o=new m(r-Math.sqrt(3)*.5*s,.5*s),i=new m(r-Math.sqrt(3)*.5*s,-.5*s);return this.basicGetArrowPoint(t,n,o,i)}basicGetArrowPoint(t,n,s,r){const o=T.lineAngle(t,n),i=Z.generateMatrix().translate(t.x,t.y).rotate2(o),a=i.crossPoint(s),c=i.crossPoint(r);return{a,b:c}}static load(t,n,s,r,o,i){const a=new yn(t,i);return a.type=n,a.zIndex=s,a.setParent(o),a.updateProps(r),a}contains(t,n){const s=this.toLocal(t),r=this.getTextContentRect();if(T.rectContains(s,r))return!0;const o=8/n;return Ai.lineContainsPoint(this,s,o)}overlapRect(t){const n=this.getBounds();return T.containRect(t,n)?!0:Ai.overlapRectNode(this,t)}getTextContentRect(){const{t}=this.lineTextRect,{height:n}=this.renderText,r=this.textProps.text===""?20:this.renderText.width,o=T.computePointByT(this,t),i=o.x-.5*r,a=o.y-.5*n;return new D(i,a,r,n)}isPolyLine(){const t=this.shapeType;return t===Lt.PolyLine||t===Lt.RoundPolyLine}modifyPosInEditing(){return this.inEditing=!0,!0}resetFromEditing(){this.inEditing=!1}getDrawPoints(){const{lArrow:t,rArrow:n}=this.arrowProps,s=[...this.points];if(t){const r=new m(0,.5*Et),o=this.lArrowMatrix.crossPoint(r);s.shift(),s.unshift(o)}if(n){const r=new m(0,.5*Et),o=this.rArrowMatrix.crossPoint(r);s.pop(),s.push(o)}return s}};g(yn,"arrowDrawerMap",new Map([[we.Arrow,new Uu],[we.Triangle,new _u],[we.EmptyTriangle,new Ku],[we.Diamond,new ju],[we.EmptyDiamond,new qu]])),g(yn,"drawerMap",new Map([[Lt.Curve,new yh],[Lt.RoundPolyLine,new mh],[Lt.PolyLine,new gh],[Lt.Line,new fh]]));let dn=yn;class In{fullTextNodeHeight(e){return e.renderText.height+2*Wt}textContentBounds(e){const t=e.baseProps;return{x:Wt,y:Wt,width:t.width-2*Wt,height:t.height-2*Wt}}borderContains(e,t,n){const{width:s,height:r}=e.baseProps,o=K.rectangle({top:0,left:0,width:s,height:r}),i=K.line({x:t.x-n,y:t.y},{x:t.x+n,y:t.y}),a=K.line({x:t.x,y:t.y-n},{x:t.x,y:t.y+n});for(const c of[i,a]){const h=O.intersect(o,c);if(h.points.length>0)return h.points[0]}return null}getConnectAnchor(){return[new m(.5,0),new m(1,.5),new m(.5,1),new m(0,.5)]}}class $u extends In{draw(e,t){}textContentBounds(e){const t=e.baseProps;return{x:2,y:2,width:t.width-4,height:t.height-4}}}class Qu extends In{draw(e,t){const n=e.colorProps,s=e.baseProps,r=e.borderProps;n.color!==""&&(t.fillStyle=n.color,t.globalAlpha=n.alpha,t.fillRect(0,0,s.width,s.height)),r.color!==""&&r.dashType!==Ee.None&&(T.setDashLine(r,t),t.strokeStyle=r.color,t.lineWidth=r.width,t.globalAlpha=r.alpha,t.strokeRect(0,0,s.width,s.height))}}class Zu extends In{textContentBounds(e){const t=e.baseProps,n=t.width/4,s=-t.height/(t.width/2),r=t.height,o=s*n+r,i={x:n,y:o,width:t.width/2,height:t.height-o};return{x:i.x+Wt,y:i.y+Wt,width:i.width-Wt*2,height:i.height-Wt*2}}fullTextNodeHeight(e){return(e.renderText.height+Wt)*2}draw(e,t){const n=e.colorProps,{width:s,height:r}=e.baseProps,o=e.borderProps;t.fillStyle=n.color,t.globalAlpha=n.alpha,t.strokeStyle=o.color,t.lineWidth=o.width,t.globalAlpha=o.alpha,t.lineJoin="round",t.lineCap="round",t.beginPath(),t.moveTo(0,r),t.lineTo(.5*s,0),t.lineTo(s,r),t.closePath(),n.color!==""&&t.fill(),o.color!==""&&Math.abs(o.alpha)>.001&&(T.setDashLine(o,t),t.stroke())}borderContains(e,t,n){const{width:s,height:r}=e.baseProps,o=K.polygon([{x:0,y:r},{x:.5*s,y:0},{x:s,y:r}]),i=K.line({x:t.x-n,y:t.y},{x:t.x+n,y:t.y}),a=K.line({x:t.x,y:t.y-n},{x:t.x,y:t.y+n});for(const c of[i,a]){const h=O.intersect(o,c);if(h.points.length>0)return h.points[0]}return null}getConnectAnchor(){return[new m(.5,0),new m(.75,.5),new m(.5,1),new m(.25,.5)]}}class Ju extends In{draw(e,t){const n=e.colorProps,{width:s,height:r}=e.baseProps,o=e.borderProps;t.fillStyle=n.color,t.globalAlpha=n.alpha,t.strokeStyle=o.color,t.lineWidth=o.width,t.globalAlpha=o.alpha,t.lineJoin="round",t.lineCap="round",t.beginPath(),t.moveTo(0,.5*r),t.lineTo(.5*s,0),t.lineTo(s,.5*r),t.lineTo(.5*s,r),t.closePath(),n.color!==""&&t.fill(),o.color!==""&&Math.abs(o.alpha)>.001&&t.stroke()}textContentBounds(e){const t=e.baseProps,n={x:0,y:t.height/2},s={x:t.width/2,y:0},r=(n.y-s.y)/(n.x-s.x),o=n.y,i=.25*t.width,a=r*i+o,c={x:i,y:a,with:t.width-i*2,height:t.height-a*2};return{x:c.x+Wt,y:c.y+Wt,width:c.with-Wt*2,height:c.height-Wt*2}}borderContains(e,t,n){const{width:s,height:r}=e.baseProps,o=K.polygon([{x:0,y:.5*r},{x:.5*s,y:0},{x:s,y:.5*r},{x:.5*s,y:r}]),i=K.line({x:t.x-n,y:t.y},{x:t.x+n,y:t.y}),a=K.line({x:t.x,y:t.y-n},{x:t.x,y:t.y+n});for(const c of[i,a]){const h=O.intersect(o,c);if(h.points.length>0)return h.points[0]}return null}}class tp extends In{draw(e,t){const n=e.baseProps,s=e.colorProps,r=e.borderProps;t.beginPath(),t.fillStyle=s.color,t.globalAlpha=s.alpha,t.strokeStyle=r.color,t.lineWidth=r.width,t.globalAlpha=r.alpha,t.roundRect(0,0,n.width,n.height,10),s.color!==""&&t.fill(),r.color!==""&&Math.abs(r.alpha)>.001&&t.stroke()}borderContains(e,t,n){const{width:s,height:r}=e.baseProps,o=K.rectangle({top:0,left:0,width:s,height:r}),i=K.line({x:t.x-n,y:t.y},{x:t.x+n,y:t.y}),a=K.line({x:t.x,y:t.y-n},{x:t.x,y:t.y+n});for(const c of[i,a]){const h=O.intersect(o,c);if(h.points.length>0)return h.points[0]}return null}}class ep extends In{draw(e,t){const n=e.colorProps,{width:s,height:r}=e.baseProps,o=e.borderProps;t.fillStyle=n.color,t.globalAlpha=n.alpha,t.strokeStyle=o.color,t.lineWidth=o.width,t.globalAlpha=o.alpha,t.lineJoin="round",t.lineCap="round",t.beginPath(),t.ellipse(.5*s,.5*r,.5*s,.5*r,0,0,2*Math.PI,!1),n.color!==""&&t.fill(),o.color!==""&&Math.abs(o.alpha)>.001&&(T.setDashLine(o,t),t.stroke())}textContentBounds(e){const t=e.baseProps,n=t.width*Math.sqrt(2)/2,s=(t.width-n)/2,r=Math.max(t.width,t.height)/2,o=Math.min(t.width,t.height)/2,i=(1-(n/2)**2/r**2)*o**2,a={x:s,y:t.height/2-Math.sqrt(i),width:n,height:2*Math.sqrt(i)};return{x:a.x+Wt,y:a.y+Wt,width:a.width-Wt*2,height:a.height-Wt*2}}fullTextNodeHeight(e){return(e.renderText.height+Wt)*2}borderContains(e,t,n){const{width:s,height:r}=e.baseProps,o=K.ellipse({centerX:.5*s,centerY:.5*r,radiusX:.5*s,radiusY:.5*r}),i=K.line({x:t.x-n,y:t.y},{x:t.x+n,y:t.y}),a=K.line({x:t.x,y:t.y-n},{x:t.x,y:t.y+n});for(const c of[i,a]){const h=O.intersect(o,c);if(h.points.length>0)return h.points[0]}return null}}const Ue=class Ue extends Sn{constructor(t,n){super(t,n);g(this,"type",A.Shape);g(this,"transform",Z.generateMatrix());g(this,"renderText");this.props.set(R.Base,new gt),this.props.set(R.Shape,new jt),this.props.set(R.Color,new Jt),this.props.set(R.Border,new Ot),this.props.set(R.Text,new se),this.renderText=new Wr}get borderProps(){return this.props.get(R.Border)}get colorProps(){return this.props.get(R.Color)}get textProps(){return this.props.get(R.Text)}get shapeType(){return this.props.get(R.Shape).shapeCode}get drawer(){const t=Ue.drawerMap.get(this.shapeType);return t||Ue.drawerMap.get(_.RoundRect)}borderContains(t,n){const s=this.toLocal(t);return this.drawer.borderContains(this,s,n)}updateProps(t){super.updateProps(t);const n=t.find(r=>r.type===R.Text),s=t.find(r=>r.type===R.Base);if(s&&this.updateTransformMatrix(),n||s){const r=this.drawer.textContentBounds(this);this.renderText.typesetting(this.graphicContext,this.textProps,r)}}modifyPosInEditing(t){if(this.shapeType===_.PureText)return!1;const n=this.drawer.textContentBounds(this);return this.renderText.modifyPosInEditing(n,t)}resetFromEditing(){const t=this.drawer.textContentBounds(this);return this.renderText.resetFromEditing(t)}contains(t){const{width:n,height:s}=this.baseProps,r=this.toLocal(t);return T.rectContains(r,new D(0,0,n,s))}drawOnGLCtx(t){const n=this.shapeType;let s=Ue.drawerMap.get(n);s||(console.error("取不到drawer,使用rect兜底!"),s=Ue.drawerMap.get(_.Rect)),t.save(),t.beginPath();const{a:r,b:o,c:i,d:a,e:c,f:h}=this.globalTransform();t.transform(r,o,i,a,c,h),s.draw(this,t),this.drawText(t),t.restore()}drawText(t){const{x:n,y:s,width:r,height:o}=this.getTextContentRect();t.save(),t.beginPath(),t.rect(n,s,r,o),t.clip();const i=new m;this.renderText.draw(t,i),t.restore()}getStretchMinSize(){return new m(20,20)}draw(){this.drawOnGLCtx(this.graphicContext)}getTextContentRect(){const t=this.shapeType;let n=Ue.drawerMap.get(t);return n||(console.error("取不到drawer,使用rect兜底!"),n=Ue.drawerMap.get(_.Rect)),n.textContentBounds(this)}getConnectAnchor(){return this.drawer.getConnectAnchor()}static load(t,n,s,r,o,i){const a=new Ue(t,i);return a.type=n,a.zIndex=s,a.setParent(o),a.updateProps(r),a}};g(Ue,"drawerMap",new Map([[_.PureText,new $u],[_.Ellipse,new ep],[_.Rect,new Qu],[_.RoundRect,new tp],[_.Triangle,new Zu],[_.Lingxing,new Ju]]));let qe=Ue;class Ts extends _n{constructor(t,n){super(t,n);g(this,"type",A.SVG);g(this,"imgBitmap",null);g(this,"svgCode","");this.props.set(R.Base,new gt),this.props.set(R.Border,new Ot),this.props.set(R.Svg,new fs),this.props.set(R.Crop,new Mn)}get svgUrl(){return this.props.get(R.Svg).url}setSvgCode(t){this.svgCode=t}static load(t,n,s,r,o,i){const a=new Ts(t,i);return a.type=n,a.zIndex=s,a.setParent(o),a.updateProps(r),a}}class $n{static getNumFromString(e){try{const t=e.match(/(\d+)/);return t&&t[1]?parseInt(t[1],10):100}catch{return console.error("从字符串中获取num出错:",e),100}}static trimSvgCode(e){const n=new DOMParser().parseFromString(e,"image/svg+xml").documentElement,s=n.getAttribute("width"),r=n.getAttribute("height");n.removeAttribute("width"),n.removeAttribute("height");const o=n.style.width,i=n.style.height;n.style.removeProperty("width"),n.style.removeProperty("height");let a=100,c=100;return s!==null?a=this.getNumFromString(s):o!==""&&(a=this.getNumFromString(o)),r!==null?c=this.getNumFromString(r):i!==""&&(c=this.getNumFromString(i)),{svgCode:n.outerHTML,width:a,height:c}}}class xo extends Sn{constructor(t,n){super(t,n);g(this,"type",A.Section);this.props.set(R.Base,new gt),this.props.set(R.Border,new Ot),this.props.set(R.Color,new Jt)}get borderProps(){return this.props.get(R.Border)}get colorProps(){return this.props.get(R.Color)}updateProps(t){super.updateProps(t),t.find(s=>s.type===R.Base)&&this.updateTransformMatrix()}drawOnGLCtx(t){t.save();const n=this.baseProps,{a:s,b:r,c:o,d:i,e:a,f:c}=this.globalTransform();t.transform(s,r,o,i,a,c);const h=this.colorProps,d=this.borderProps;t.beginPath(),t.roundRect(0,0,n.width,n.height,6),h.color!==""&&(t.fillStyle=h.color,t.globalAlpha=h.alpha,t.fill()),d.color!==""&&d.dashType!==Ee.None&&(T.setDashLine(d,t),t.strokeStyle=d.color,t.lineWidth=d.width,t.globalAlpha=d.alpha,t.stroke()),t.restore()}static load(t,n,s,r,o,i){const a=new xo(t,i);return a.type=n,a.zIndex=s,a.setParent(o),a.updateProps(r),a}getTextContentRect(){return this.baseProps}}class Po extends Sn{constructor(t,n){super(t,n);g(this,"type",A.Group);this.props.set(R.Base,new gt)}get globalPos(){return this.nameGlobalTransform().crossPoint(new m)}computeBasePropsByChildren(){const t=[];for(const r of this.children)t.push(r.baseProps);const n=T.getBoundsByBasePropsList(t),s=D.rectNode2Rect(n);return gt.create({x:s.x,y:s.y,width:s.width,height:s.height})}drawOnGLCtx(t){}getTextContentRect(){return this.baseProps}canBeConnected(){return!1}transToLocalPoint(t){return this.nameGlobalTransform().inverseMatrix().crossPoint(t)}contains(t,n=1){const{width:s,height:r}=this.baseProps,o=this.transToLocalPoint(t);return T.rectContains(o,new D(0,0,s,r))}toGlobal(t){return this.nameGlobalTransform().crossPoint(t)}nameGlobalTransform(){const t=this.selfTransform();return this.globalTransform().crossProduct(t)}selfTransform(){const{x:t,y:n}=this.baseProps;return Z.generateMatrix().translate(t,n)}updateTransformMatrix(){}static load(t,n,s,r,o,i){const a=new Po(t,i);return a.type=n,a.zIndex=s,a.setParent(o),a.updateProps(r),a}}const Nr=class Nr{static getInstance(){return this.instance||(this.instance=new Nr),this.instance}create(e,t,n,s,r,o){switch(t){case A.Line:return dn.load(e,t,n,s,r,o);case A.SVG:return Ts.load(e,t,n,s,r,o);case A.IMG:return ys.load(e,t,n,s,r,o);case A.Section:return xo.load(e,t,n,s,r,o);case A.Group:return Po.load(e,t,n,s,r,o);case A.Shape:default:return qe.load(e,t,n,s,r,o)}}createByNodeInfo(e,t,n){const s=T.convertCapInfoToProps(e.capInfo);return this.create(e.id,e.type,e.zIndex,s,t,n)}};g(Nr,"instance",null);let Ge=Nr;class bo extends Sn{constructor(t){const s=document.createElement("canvas").getContext("2d");super(t,s);g(this,"type",A.ROOT);g(this,"transform",Z.generateMatrix())}updateProps(t){}drawOnGLCtx(t){}getTextContentRect(){return new D}toGlobal(t){return t}toLocal(t){return t}}const fr=800;class ac{static async getImageSize(e){return new Promise((t,n)=>{const s=URL.createObjectURL(e),r=new Image;r.crossOrigin="anonymous",r.onload=()=>{let o=r.naturalWidth*.5,i=r.naturalHeight*.5;URL.revokeObjectURL(s);const a=o/i;o>i&&o>fr?(o=fr,i=o/a):i>o&&i>fr&&(i=fr,o=i*a),t({width:o,height:i})},r.onerror=()=>{URL.revokeObjectURL(s),n(new Error("无法加载图片"))},r.src=s})}}class cc{constructor(e,t,n,s,r,o,i,a,c,h,d,u,p,f,y,w){g(this,"nodeManager");g(this,"gmlRender");g(this,"detectors");g(this,"toolManager");g(this,"inputManager");g(this,"actionManager");g(this,"renderManager");g(this,"auxiliaryManager");g(this,"lastInteractiveEvent",null);g(this,"lastDiffTypeEvent",null);g(this,"docState");g(this,"idGenerator");g(this,"cursorManager");g(this,"previewManager");g(this,"resourceManager");g(this,"slotManager");g(this,"asyncRenderNodeManager");g(this,"cropManager");g(this,"alignPoint",null);this.nodeManager=e,this.gmlRender=t,this.detectors=n,this.toolManager=s,this.inputManager=r,this.actionManager=o,this.renderManager=i,this.auxiliaryManager=a,this.cursorManager=new qo,this.docState=c,this.idGenerator=h,this.cursorManager=d,this.previewManager=u,this.resourceManager=p,this.slotManager=f,this.asyncRenderNodeManager=y,this.cropManager=w}detect(e,t){const n=this.detectors.get(e);return!n||!n.detect(t,this)?null:n.result}addOrUpdate(e,t){this.auxiliaryManager.addOrUpdate(e,t),this.renderManager.addAuxiliaryDrawTask()}removeAuxGraphic(e){this.auxiliaryManager.remove(e),this.renderManager.addAuxiliaryDrawTask()}setCursor(e){this.cursorManager.setCursor(e)}getSelectNodes(){return this.auxiliaryManager.selectManager.selectNodes}execAction(e){this.actionManager.execAction(e)}reset(){this.auxiliaryManager.removeHoverGraphics(),this.auxiliaryManager.removeAlignGraphics(),this.renderManager.addAuxiliaryDrawTask()}inSelect(e){if(this.auxiliaryManager.selectManager.selectNodes.size===0)return!1;const t=this.auxiliaryManager.selectManager.getSelectBounds();return T.rectContains2(e,t)}refreshEvent(){}zoomScale(e,t){this.renderManager.zoomScale(e,t,this.asyncRenderNodeManager)}}class lc{addImageNode(e,t,n,s,r){const o=[{type:R.Base,x:s.x,y:s.y,width:t,height:n},{type:R.Image,url:e},{type:R.Border,dashType:Ee.None}],i=r.idGenerator.genId(A.IMG),a={id:i,type:A.IMG,zIndex:Qt.genZIndex(r.nodeManager.root),parentId:"",props:o};r.execAction(new nt);const c=Yt.create(a);r.execAction(c),r.execAction(Pt.create([i])),r.execAction(new et)}}class np{constructor(e){g(this,"app");this.app=e}addSvgNodeBySvgCode(e){const t=this.app.docState.docId,n=lr(10),s=`${t}/${n}`;this.app.resourceManager.uploadSvgString(s,e).then(r=>{this.addSvgNode(e,r)})}addSvgNode(e,t){const n=this.app.appContext,s=n.renderManager.gmlRender.getViewPortBounds(),r=new m(.5*(s.minX+s.maxX),.5*(s.minY+s.maxY)),i=new fo().computeAddSvgNode(e,t,r,this.app.appContext),a=i.id;n.execAction(new nt);const c=Yt.create(i);n.execAction(c),n.execAction(Pt.create([a])),n.execAction(new et)}addImageNode(e,t,n){const s=new lc,r=this.app.appContext,o=r.renderManager.gmlRender.getViewPortBounds(),i=new m(.5*(o.minX+o.maxX),.5*(o.minY+o.maxY));s.addImageNode(e,t,n,i,r)}quickCreateNode(e,t){const n=this.app.nodeManager.getNode(t);if(!n||n.type!==A.Line)return;const s=n,{start:r}=s.connectProps;if(!r)return;const o=this.app.nodeManager.getNode(r.objectId);if(!o)return;const i=o.baseProps,c=s.lineProps.points,h=c[c.length-1],d=c[c.length-2],u=qe.drawerMap.get(e).getConnectAnchor(),p=T.judgeHorizon(d,h);let f;p?h.x>d.x?f=u[Mt.Left]:f=u[Mt.Right]:h.y>d.y?f=u[Mt.Top]:f=u[Mt.Bottom];const y=i.width*f.x,w=i.height*f.y,b=h.x-y,x=h.y-w,v=this.app.appContext,C=rr[e],E=Nn[C],k=hn[C],I=[{type:R.Base,x:b,y:x,width:i.width,height:i.height},Jt.create({color:E}),Ot.create({color:k}),new jt(e)],V=v.idGenerator.genId(A.Shape),U={id:V,type:A.Shape,zIndex:Qt.genZIndex(this.app.nodeManager.root),parentId:"",props:I};v.execAction(new nt);const J=Yt.create(U);v.execAction(J);const j=s.connectProps.clone();j.end={objectId:V,x:f.x,y:f.y},v.execAction(ct.create(t,[j])),v.execAction(Pt.create([V])),v.execAction(lt.focus(V)),v.execAction(new et)}}class gr{group(e,t){const n=T.filterToGroupNodes(e);if(n.length<2)return;t.execAction(new nt);const s=t.idGenerator.genId(A.Group),r=[],o=T.sortGraphics(n),i=o[o.length-1].parent;for(const b of o)r.push(b.getBounds());const a=T.getBounds(r),c=D.rectNode2Rect(a),h=new m(c.x,c.y),d=i.toLocal(h),u={id:s,parentId:i.id,type:A.Group,zIndex:Qt.genZIndex(i),props:[gt.create({x:d.x,y:d.y,width:c.width,height:c.height})]};t.execAction(new Yt({nodes:[u]}));const p=t.nodeManager.getNode(s),f=[];let y=1;const w=p.globalTransform().inverseMatrix();for(const b of o){const x=b.globalPos,v=w.crossPoint(x);f.push({id:b.id,parentId:s,props:[{type:R.Base,x:v.x,y:v.y}],zIndex:y}),y++}t.execAction(new ct({infos:f})),t.execAction(Pt.create([p.id])),t.execAction(new et)}unGroup(e,t){t.execAction(new nt);const n=e.parent,s=[...e.children];s.sort((c,h)=>c.zIndex-h.zIndex);const r=[];let o=1;const i=Math.max(...[...n.children].map(c=>c.zIndex)),a=[];for(const c of s){const h=c.globalPos,d=n.toLocal(h);r.push({id:c.id,parentId:n.id,props:[{type:R.Base,x:d.x,y:d.y}],zIndex:i+o}),o++,a.push(c.id)}t.execAction(new ct({infos:r})),t.execAction(Fe.create([e.id])),t.execAction(Pt.create(a)),t.execAction(new et)}}class sp{constructor(e){g(this,"app");this.app=e}rotateImageAngle(e,t){const n=this.getNodeIdByBlobUrl(e);n&&this.rotateImage(n,t)}rotateImage(e,t){const n=this.app.appContext,s=n.nodeManager.getNode(e);if(!s)return;const{angle:r}=s.baseProps,o=s.globalPos,i=D.rectNode2Rect(s.getBounds()),a=new m(i.x+.5*i.width,i.y+.5*i.height),c=Z.generateMatrix().translate(a.x,a.y),h=Z.generateMatrix().rotate(t),u=c.crossProduct(h).crossProduct(c.inverseMatrix()).crossPoint(o);let p;s.parent.type===A.Group?p=s.parent.globalTransform().inverseMatrix().crossPoint(u):p=s.parent.toLocal(u),n.execAction(new nt),n.execAction(ct.create(e,[{type:R.Base,x:p.x,y:p.y,angle:r+t}])),n.execAction(new et)}getNodeIdByBlobUrl(e){const t=this.app.appContext;for(const[n,s]of t.resourceManager.nodeResourceMap)if(s.blobUrl===e)return n;return""}}const rs=class rs{static encode(e){const t=encodeURI(e),n=btoa(t);return`<html>
|
|
6
|
+
<head><meta charset="utf-8"></head>
|
|
7
|
+
<body>
|
|
8
|
+
<div style="white-space: pre-wrap" data-info=${rs.oolongLeft}${n}${rs.oolongRight}/>
|
|
9
|
+
</body>
|
|
10
|
+
</html>`}static decode(e){const t=e.indexOf(this.oolongLeft),n=e.indexOf(this.oolongRight);if(t<0||n<0||t===n)return null;const s=e.slice(t+this.oolongLeft.length,n),r=atob(s);return decodeURI(r)}};g(rs,"oolongLeft","start--oolong--"),g(rs,"oolongRight","--oolong--end");let kn=rs;class rp{constructor(){g(this,"copyWorker",new to)}copy(e,t){if(!e.clipboardData)return!1;const n=this.copyWorker.work(t);if(!n)return!1;e.preventDefault();const s=JSON.stringify(n),r=kn.encode(s);return e.clipboardData.setData("text/html",r),!0}}class op extends bs{handle(e,t,n,s){const r=e.find(a=>a.type===R.Image);if(!r)return;const o=r.url,i=s.get(o);i?r.url=i:(console.error("复制图片时该图片资源失效!",i),r.url="")}}class ip extends bs{handle(e,t,n,s){const r=e.find(a=>a.type===R.Svg);if(!r)return;const o=r.url,i=s.get(o);i?r.url=i:(console.error("复制svg时该svg资源失效!",i),r.url="")}}class ap extends va{constructor(){super(...arguments);g(this,"propsHandler",[new ma,new wa,new xa,new op,new ip])}}class vo{constructor(){g(this,"pasteWorker",new Ma);g(this,"crossPagePasteWorker",new ap)}handle(e,t){const n=t.docState.docId;return e.meta.docId!==n?this.handleCrossPaste(e,t):this.handlePaste(e,t)}handlePaste(e,t){return!e.nodes||e.nodes.length===0?!1:(this.normalPaste(e,t,this.pasteWorker),!0)}handleCrossPaste(e,t){return!e.nodes||e.nodes.length===0?!1:(this.pasteResourceInfo(e.resources,e.meta.docId,t).then(n=>{n||console.error("复制图片资源时出现错误!"),this.normalPaste(e,t,this.crossPagePasteWorker,n==null?void 0:n.resourceMap)}),!0)}normalPaste(e,t,n,s){const r=e.nodes,o=e.bounds,i=t.lastInteractiveEvent.globalPoint,a=new m(i.x-o.x,i.y-o.y);t.execAction(new nt);const{addNodeData:c,nextFocusIds:h}=n.work(t,r,a,s);t.execAction(new Yt(c)),t.execAction(Pt.create(h)),t.execAction(new et)}async pasteResourceInfo(e,t,n){return e.length===0?void 0:await n.resourceManager.copyImage(e,t,n.docState.docId)}}class cp{constructor(){g(this,"handlers",[new vo])}paste(e,t){const n=e.clipboardData,s=n==null?void 0:n.getData("text/html");if(!s)return!1;const r=kn.decode(s);if(r===null)return!1;const o=JSON.parse(r);for(const i of this.handlers)if(i.handle(o,t))return!0;return!1}}class lp{paste(e,t){const n=e.clipboardData,s=n==null?void 0:n.getData("text/plain");if(!s)return!1;const r=this.getSvgCode(s);if(r===null)return!1;const o=t.docState.docId,i=lr(10),a=`${o}/${i}`,c=$n.trimSvgCode(r);return t.resourceManager.uploadSvgString(a,c.svgCode).then(h=>{this.addSvgNode(t,c,h)}),!0}addSvgNode(e,t,n){var c;const s=((c=e.lastInteractiveEvent)==null?void 0:c.globalPoint)||new m,r=[{type:R.Base,x:s.x,y:s.y,width:t.width,height:t.height},{type:R.Svg,url:n},{type:R.Border,dashType:Ee.None}],o=e.idGenerator.genId(A.SVG),i={id:o,type:A.SVG,zIndex:Qt.genZIndex(e.nodeManager.root),parentId:"",props:r};e.execAction(new nt);const a=Yt.create(i);e.execAction(a),e.execAction(Pt.create([o])),e.execAction(new et)}getSvgCode(e){const t=e.indexOf("<svg"),n=e.indexOf("svg>");return t<0||n<0||t===n?null:e.slice(t,n+4)}}class hp{constructor(){g(this,"worker",new lc)}paste(e,t){if(!e.clipboardData)return!1;const n=e.clipboardData.items;for(let s=0;s<n.length;s++){const r=n[s];if(r.type.startsWith("image/")){const o=r.getAsFile();return o?(this.pasteImg(o,t),!0):!1}}return!1}async pasteImg(e,t){const n=lr(10),s=`${t.docState.docId}/${n}`,r=await t.resourceManager.uploadFileBlob(s,e),{width:o,height:i}=await ac.getImageSize(e),a=t.lastInteractiveEvent.globalPoint;this.worker.addImageNode(r,o,i,a,t)}}class hc{constructor(e){g(this,"eventCtx");g(this,"pasteHandlers");g(this,"copyHandlers");this.eventCtx=e,this.pasteHandlers=[new hp,new cp,new lp],this.copyHandlers=[new rp]}paste(e){for(const t of this.pasteHandlers)if(t.paste(e,this.eventCtx))return}copy(e){for(const t of this.copyHandlers)if(t.copy(e,this.eventCtx))return}cut(e){console.log(e)}}class dc{constructor(e){g(this,"eventCtx");g(this,"copyPasteManager");g(this,"onCopy",e=>{this.onEnable()&&this.copyPasteManager.copy(e)});g(this,"onPaste",e=>{this.onEnable()&&this.copyPasteManager.paste(e)});g(this,"onCut",e=>{this.onEnable()&&this.copyPasteManager.cut(e)});this.eventCtx=e,this.copyPasteManager=new hc(e)}start(){document.addEventListener("copy",this.onCopy),document.addEventListener("paste",this.onPaste),document.addEventListener("cut",this.onCut)}stop(){document.removeEventListener("copy",this.onCopy),document.removeEventListener("paste",this.onPaste),document.removeEventListener("cut",this.onCut)}onEnable(){return this.eventCtx.docState.canEdit()}}class dp{constructor(e){g(this,"app");this.app=e}async copySelectNodes(){const t=new to().work(this.app.appContext);if(!t)return!1;const n=JSON.stringify(t),s=kn.encode(n),r=new Blob([s],{type:"text/html"}),o=new ClipboardItem({"text/html":r});await navigator.clipboard.write([o])}copySelectNodesAsPng(e=2,t=""){const s=this.app.appContext.auxiliaryManager.selectManager.getSelectBounds(),r=this.app.renderManager.exportOfflineCanvas(s,e,t);return new Promise(o=>{r.toBlob(async i=>{if(!i){console.error("转化为图片时候出现错误.");return}const a=new ClipboardItem({[i.type]:i});await navigator.clipboard.write([a]),o()})})}async pasteNodes(){try{const e=this.app.appContext,t=await navigator.clipboard.read();for(const n of t)if(n.types.includes("text/html")){const r=await(await n.getType("text/html")).text();if(!r)return;const o=kn.decode(r);if(o===null)return;const i=JSON.parse(o);new vo().handle(i,e);return}console.log("剪贴板中没有可用的文本数据")}catch(e){console.error("读取剪贴板失败:",e),alert("粘贴失败,请检查权限或使用 Ctrl+V")}}}class Mo{work(e){const t=[...e.getSelectNodes()];if(t.length===0)return;const n=new Set;for(const s of t)n.add(s.id),e.nodeManager.getNodeLinks(s).forEach(o=>n.add(o.id)),this.addAllChildren(s,n);e.actionManager.execAction(new nt),e.actionManager.execAction(Pt.create([])),e.actionManager.execAction(Fe.create([...n])),e.actionManager.execAction(new et)}addAllChildren(e,t){t.add(e.id);for(const n of e.children)this.addAllChildren(n,t)}}class up{constructor(e){g(this,"app");this.app=e}intoCrop(){new vs().intoCrop(this.app.appContext)}exitCrop(){new vs().exitCrop(this.app.appContext)}resetCrop(){new vs().resetCrop(this.app.appContext)}}class uc{constructor(e){g(this,"app");g(this,"create");g(this,"image");g(this,"copyPaste");g(this,"crop");this.app=e,this.create=new np(e),this.image=new sp(e),this.copyPaste=new dp(e),this.crop=new up(e)}zoomScale(e,t){this.app.renderManager.zoomScale(e,t,this.app.asyncRenderNodeManager)}zoomToFit(){this.app.renderManager.zoomToFit(this.app.asyncRenderNodeManager)}zoomToSelect(){this.app.renderManager.zoomToSelect(this.app.asyncRenderNodeManager)}zoomTo100(){this.app.renderManager.zoomTo100(this.app.asyncRenderNodeManager)}exportOfflineCanvas(e,t,n=""){return this.app.renderManager.exportOfflineCanvas(e,t,n)}exportAllNodesImg(e,t=""){const n=this.app.nodeManager.getNodeBounds();return this.app.renderManager.exportOfflineCanvas(n,e,t)}scroll(e,t){this.app.renderManager.scroll(e,t)}registerCallback(e,t){this.app.slotManager.registerSlotCallback(e,t)}changePermission({canEdit:e}){this.app.docState.userPermission.canEdit=e}getBounds(){const e=this.app.renderManager.gmlRender.getViewPortBounds();return D.rectNode2Rect(e)}getScale(){return this.app.renderManager.getScale()}transformToClientPos(e){return this.app.gmlRender.transformToLocal(e)}getFocusList(){return this.app.auxiliaryManager.selectManager.getSelectNodes()}setPrefix(e){this.app.idGenerator.setPrefix(e)}clearFocus(){if(this.app.auxiliaryManager.selectManager.getSelectNodes().length===0)return;const e=this.app.appContext;if(e.execAction(new nt),e.inputManager.editTextInfo){const{node:t}=e.inputManager.editTextInfo;e.execAction(lt.blur(t.id))}e.execAction(Pt.create([])),e.execAction(new et)}makeGroup(){const e=[...this.app.appContext.getSelectNodes()];new gr().group(e,this.app.appContext)}makeUnGroup(){const e=[...this.app.appContext.getSelectNodes()];if(e.length!==1)return;const t=e[0];if(t.type!==A.Group)return;const n=t;new gr().unGroup(n,this.app.appContext)}getImageBlobUrl(e){return this.app.resourceManager.getBlobUrl(e)}deleteSelectNodes(){new Mo().work(this.app.appContext)}}class pp{constructor(e){g(this,"renderDom",null);g(this,"inputDom",null);g(this,"isFocusing",!1);g(this,"cursorManager");this.cursorManager=e}init(e,t){this.inputDom=e,this.renderDom=t}focus(){setTimeout(()=>{this.inputDom.focus()},100),this.isFocusing=!0,this.cursorManager.setCursor("text")}blur(){this.isFocusing=!1,this.inputDom.blur(),this.renderDom.style.display="none"}hideRenderDom(){this.renderDom.style.display="none"}updateCursor(e,t,n,s){const r=t.globalTransform.crossPoint(e),o=t.canvas.getBoundingClientRect(),i=window.devicePixelRatio;let a=r.x/i+o.x,c=r.y/i+o.y;a>o.width&&(a=0),c>o.height&&(c=0),this.renderDom.style.left=a+"px",this.renderDom.style.top=c+"px",this.inputDom.style.left=a+"px",this.inputDom.style.top=c+"px",this.renderDom.style.transform=`rotate(${s}deg)`,this.renderDom.style.transformOrigin="top left",this.renderDom.style.display="unset",this.renderDom.style.height=n*t.getScale()+"px"}}class fp{constructor(){g(this,"selectionInfo",null);g(this,"selectionWorker",new oc)}clear(){this.selectionInfo=null}generateSelect(e,t,n){const s=this.selectionWorker.computeTextSelection(e,t,n);return s.length===0?[]:(this.selectionInfo={start:t,end:n,selectionList:s},s)}}class gp{constructor(e,t){g(this,"renderInput");g(this,"editTextInfo",null);g(this,"selectionManager",new fp);g(this,"renderManager");this.renderInput=new pp(t),this.renderManager=e}init(e,t){var n;(n=this.renderInput)==null||n.init(e,t),this.renderInput.hideRenderDom()}isEdit(){return this.editTextInfo!==null}hasSelection(){return this.selectionManager.selectionInfo!==null}checkNeedReFocusInputDom(e){return!this.editTextInfo||this.editTextInfo.node.id!==e.node.id||!this.editTextInfo.textCursorPosition.equal(e.textCursorPosition)}focus(e){const t=this.checkNeedReFocusInputDom(e);this.editTextInfo=e;const{node:n,renderText:s,textCursorPosition:r}=e,{relativePos:o,height:i}=s.getPosByCursorPosition(r),a=n.toGlobal(o);t&&(this.renderInput.focus(),console.log("njx debug:===>focus")),this.renderInput.updateCursor(a,this.renderManager.gmlRender,i,n.baseProps.angle),this.selectionManager.clear()}selection(e,t,n,s){let r=n,o=s;s.greaterThan(n)||(r=s,o=n),this.editTextInfo={node:e,renderText:t,textCursorPosition:r};const i=this.selectionManager.generateSelect(t,r,o);return this.renderInput.focus(),this.renderInput.hideRenderDom(),i}refreshCursor(){if(!this.editTextInfo)return;const{node:e,renderText:t,textCursorPosition:n}=this.editTextInfo,{relativePos:s,height:r}=t.getPosByCursorPosition(n),o=e.toGlobal(s);this.renderInput.updateCursor(o,this.renderManager.gmlRender,r,e.baseProps.angle)}updateCursorPos(e){this.editTextInfo&&(this.editTextInfo.textCursorPosition=e,this.refreshCursor())}blur(){var e;console.log("====>blur"),this.selectionManager.selectionInfo&&this.selectionManager.clear(),this.editTextInfo&&(this.editTextInfo.node.resetFromEditing(),this.renderManager.addContentRenderTask(),(e=this.renderInput)==null||e.blur(),this.editTextInfo=null)}}class yp{constructor(e,t){g(this,"docState");g(this,"nodeManager");this.docState=t,this.nodeManager=e}serializeTo(){const e=[],t=this.nodeManager;for(const[s,r]of t.nodeMap)e.push(r.serializeTo());return{documentId:"",nodes:e}}deSerialize(e){return JSON.parse(e)}}class pc{constructor(){g(this,"canEdit",!0)}}class fc{constructor(){g(this,"seq",0);g(this,"savedSeq",-1);g(this,"backgroundColor","#EEEEEE");g(this,"userid","");g(this,"sessionId","");g(this,"docId","");g(this,"userPermission",new pc)}load(e){this.backgroundColor=e.backgroundColor,this.seq=e.seq,this.savedSeq=e.savedSeq}canEdit(){return this.userPermission.canEdit}changePermission({canEdit:e}){this.userPermission.canEdit=e}}function mp(){return{backgroundColor:"#EEEEEE",seq:0,savedSeq:0}}class gc{}class So{constructor(){g(this,"globalTransform",Z.generateMatrix());g(this,"canvas",null);g(this,"glCtx",null);this.globalTransform.a=window.devicePixelRatio,this.globalTransform.d=window.devicePixelRatio}init(e){this.canvas=e;const t=this.canvas.getContext("2d");this.glCtx=t;const{a:n,b:s,c:r,d:o,e:i,f:a}=this.globalTransform;t.transform(n,s,r,o,i,a)}setTransform(e,t,n,s,r,o){this.globalTransform.setTransform(e,t,n,s,r,o),this.glCtx.setTransform(e,t,n,s,r,o)}reset(){if(!this.canvas){console.error("Error! The canvas is null!");return}const e=this.canvas.getContext("2d"),{a:t,b:n,c:s,d:r,e:o,f:i}=this.globalTransform;e.setTransform(t,n,s,r,o,i)}scale(e,t,n){if(!n){this.globalTransform.a*=e,this.globalTransform.d*=t;return}const s=Z.generateMatrix().translate(-n.x,-n.y),r=Z.generateMatrix().scale(e,e),i=Z.generateMatrix().translate(n.x,n.y).crossProduct(r).crossProduct(s);this.globalTransform=this.globalTransform.crossProduct(i)}translation(e,t){const n=Z.generateMatrix().translate(e,t);this.globalTransform=this.globalTransform.crossProduct(n)}resetTransform(){this.globalTransform=Z.generateMatrix(),this.globalTransform.a=window.devicePixelRatio,this.globalTransform.d=window.devicePixelRatio}transformToLocal(e){const{a:t,b:n,c:s,d:r,e:o,f:i}=this.globalTransform;return e.x=t*e.x+s*e.y+o,e.y=n*e.x+r*e.y+i,e.x=e.x/window.devicePixelRatio,e.y=e.y/window.devicePixelRatio,e}transformToGlobal(e){const t=new m(e.x,e.y);t.x=t.x*window.devicePixelRatio,t.y=t.y*window.devicePixelRatio;const{a:n,d:s,e:r,f:o}=this.globalTransform;return t.x=t.x/n-r/n,t.y=t.y/s-o/s,t}dirtyDraw(e,t){const n=this.canvas.getContext("2d");n.clearRect(e.minX,e.minY,e.maxX-e.minX,e.maxY-e.minY),n.save(),n.beginPath(),n.rect(e.minX,e.minY,e.maxX-e.minX,e.maxY-e.minY),n.clip();for(const s of t)s.draw();n.restore()}getViewPortBounds(){const e=this.canvas.getBoundingClientRect(),t=new m(e.width,e.height),n=this.transformToGlobal(new m(0,0)),s=this.transformToGlobal(t);return{id:"rect",minX:n.x,minY:n.y,maxX:s.x,maxY:s.y}}getGlobalPoint(e){const t=this.canvas.getBoundingClientRect(),n=new m(e.clientX-t.x,e.clientY-t.y);return this.transformToGlobal(n)}getScale(){const e=window.devicePixelRatio;return this.globalTransform.a/e}scaleToCenter(e){const t=this.getScale(),n=e/t,s=this.getViewPortBounds(),r=new m(.5*(s.minX+s.maxX),.5*(s.minY+s.maxY));this.scale(n,n,r)}}function wp(l,e,t,n,s){yc(l,e,t||0,n||l.length-1,s||xp)}function yc(l,e,t,n,s){for(;n>t;){if(n-t>600){var r=n-t+1,o=e-t+1,i=Math.log(r),a=.5*Math.exp(2*i/3),c=.5*Math.sqrt(i*a*(r-a)/r)*(o-r/2<0?-1:1),h=Math.max(t,Math.floor(e-o*a/r+c)),d=Math.min(n,Math.floor(e+(r-o)*a/r+c));yc(l,e,h,d,s)}var u=l[e],p=t,f=n;for(Cs(l,t,e),s(l[n],u)>0&&Cs(l,t,n);p<f;){for(Cs(l,p,f),p++,f--;s(l[p],u)<0;)p++;for(;s(l[f],u)>0;)f--}s(l[t],u)===0?Cs(l,t,f):(f++,Cs(l,f,n)),f<=e&&(t=f+1),e<=f&&(n=f-1)}}function Cs(l,e,t){var n=l[e];l[e]=l[t],l[t]=n}function xp(l,e){return l<e?-1:l>e?1:0}class Pp{constructor(e=9){this._maxEntries=Math.max(4,e),this._minEntries=Math.max(2,Math.ceil(this._maxEntries*.4)),this.clear()}all(){return this._all(this.data,[])}search(e){let t=this.data;const n=[];if(!mr(e,t))return n;const s=this.toBBox,r=[];for(;t;){for(let o=0;o<t.children.length;o++){const i=t.children[o],a=t.leaf?s(i):i;mr(e,a)&&(t.leaf?n.push(i):Co(e,a)?this._all(i,n):r.push(i))}t=r.pop()}return n}collides(e){let t=this.data;if(!mr(e,t))return!1;const n=[];for(;t;){for(let s=0;s<t.children.length;s++){const r=t.children[s],o=t.leaf?this.toBBox(r):r;if(mr(e,o)){if(t.leaf||Co(e,o))return!0;n.push(r)}}t=n.pop()}return!1}load(e){if(!(e&&e.length))return this;if(e.length<this._minEntries){for(let n=0;n<e.length;n++)this.insert(e[n]);return this}let t=this._build(e.slice(),0,e.length-1,0);if(!this.data.children.length)this.data=t;else if(this.data.height===t.height)this._splitRoot(this.data,t);else{if(this.data.height<t.height){const n=this.data;this.data=t,t=n}this._insert(t,this.data.height-t.height-1,!0)}return this}insert(e){return e&&this._insert(e,this.data.height-1),this}clear(){return this.data=Zn([]),this}remove(e,t){if(!e)return this;let n=this.data;const s=this.toBBox(e),r=[],o=[];let i,a,c;for(;n||r.length;){if(n||(n=r.pop(),a=r[r.length-1],i=o.pop(),c=!0),n.leaf){const h=bp(e,n.children,t);if(h!==-1)return n.children.splice(h,1),r.push(n),this._condense(r),this}!c&&!n.leaf&&Co(n,s)?(r.push(n),o.push(i),i=0,a=n,n=n.children[0]):a?(i++,n=a.children[i],c=!1):n=null}return this}toBBox(e){return e}compareMinX(e,t){return e.minX-t.minX}compareMinY(e,t){return e.minY-t.minY}toJSON(){return this.data}fromJSON(e){return this.data=e,this}_all(e,t){const n=[];for(;e;)e.leaf?t.push(...e.children):n.push(...e.children),e=n.pop();return t}_build(e,t,n,s){const r=n-t+1;let o=this._maxEntries,i;if(r<=o)return i=Zn(e.slice(t,n+1)),Qn(i,this.toBBox),i;s||(s=Math.ceil(Math.log(r)/Math.log(o)),o=Math.ceil(r/Math.pow(o,s-1))),i=Zn([]),i.leaf=!1,i.height=s;const a=Math.ceil(r/o),c=a*Math.ceil(Math.sqrt(o));mc(e,t,n,c,this.compareMinX);for(let h=t;h<=n;h+=c){const d=Math.min(h+c-1,n);mc(e,h,d,a,this.compareMinY);for(let u=h;u<=d;u+=a){const p=Math.min(u+a-1,d);i.children.push(this._build(e,u,p,s-1))}}return Qn(i,this.toBBox),i}_chooseSubtree(e,t,n,s){for(;s.push(t),!(t.leaf||s.length-1===n);){let r=1/0,o=1/0,i;for(let a=0;a<t.children.length;a++){const c=t.children[a],h=To(c),d=Sp(e,c)-h;d<o?(o=d,r=h<r?h:r,i=c):d===o&&h<r&&(r=h,i=c)}t=i||t.children[0]}return t}_insert(e,t,n){const s=n?e:this.toBBox(e),r=[],o=this._chooseSubtree(s,this.data,t,r);for(o.children.push(e),As(o,s);t>=0&&r[t].children.length>this._maxEntries;)this._split(r,t),t--;this._adjustParentBBoxes(s,r,t)}_split(e,t){const n=e[t],s=n.children.length,r=this._minEntries;this._chooseSplitAxis(n,r,s);const o=this._chooseSplitIndex(n,r,s),i=Zn(n.children.splice(o,n.children.length-o));i.height=n.height,i.leaf=n.leaf,Qn(n,this.toBBox),Qn(i,this.toBBox),t?e[t-1].children.push(i):this._splitRoot(n,i)}_splitRoot(e,t){this.data=Zn([e,t]),this.data.height=e.height+1,this.data.leaf=!1,Qn(this.data,this.toBBox)}_chooseSplitIndex(e,t,n){let s,r=1/0,o=1/0;for(let i=t;i<=n-t;i++){const a=Ls(e,0,i,this.toBBox),c=Ls(e,i,n,this.toBBox),h=Tp(a,c),d=To(a)+To(c);h<r?(r=h,s=i,o=d<o?d:o):h===r&&d<o&&(o=d,s=i)}return s||n-t}_chooseSplitAxis(e,t,n){const s=e.leaf?this.compareMinX:vp,r=e.leaf?this.compareMinY:Mp,o=this._allDistMargin(e,t,n,s),i=this._allDistMargin(e,t,n,r);o<i&&e.children.sort(s)}_allDistMargin(e,t,n,s){e.children.sort(s);const r=this.toBBox,o=Ls(e,0,t,r),i=Ls(e,n-t,n,r);let a=yr(o)+yr(i);for(let c=t;c<n-t;c++){const h=e.children[c];As(o,e.leaf?r(h):h),a+=yr(o)}for(let c=n-t-1;c>=t;c--){const h=e.children[c];As(i,e.leaf?r(h):h),a+=yr(i)}return a}_adjustParentBBoxes(e,t,n){for(let s=n;s>=0;s--)As(t[s],e)}_condense(e){for(let t=e.length-1,n;t>=0;t--)e[t].children.length===0?t>0?(n=e[t-1].children,n.splice(n.indexOf(e[t]),1)):this.clear():Qn(e[t],this.toBBox)}}function bp(l,e,t){if(!t)return e.indexOf(l);for(let n=0;n<e.length;n++)if(t(l,e[n]))return n;return-1}function Qn(l,e){Ls(l,0,l.children.length,e,l)}function Ls(l,e,t,n,s){s||(s=Zn(null)),s.minX=1/0,s.minY=1/0,s.maxX=-1/0,s.maxY=-1/0;for(let r=e;r<t;r++){const o=l.children[r];As(s,l.leaf?n(o):o)}return s}function As(l,e){return l.minX=Math.min(l.minX,e.minX),l.minY=Math.min(l.minY,e.minY),l.maxX=Math.max(l.maxX,e.maxX),l.maxY=Math.max(l.maxY,e.maxY),l}function vp(l,e){return l.minX-e.minX}function Mp(l,e){return l.minY-e.minY}function To(l){return(l.maxX-l.minX)*(l.maxY-l.minY)}function yr(l){return l.maxX-l.minX+(l.maxY-l.minY)}function Sp(l,e){return(Math.max(e.maxX,l.maxX)-Math.min(e.minX,l.minX))*(Math.max(e.maxY,l.maxY)-Math.min(e.minY,l.minY))}function Tp(l,e){const t=Math.max(l.minX,e.minX),n=Math.max(l.minY,e.minY),s=Math.min(l.maxX,e.maxX),r=Math.min(l.maxY,e.maxY);return Math.max(0,s-t)*Math.max(0,r-n)}function Co(l,e){return l.minX<=e.minX&&l.minY<=e.minY&&e.maxX<=l.maxX&&e.maxY<=l.maxY}function mr(l,e){return e.minX<=l.maxX&&e.minY<=l.maxY&&e.maxX>=l.minX&&e.maxY>=l.minY}function Zn(l){return{children:l,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function mc(l,e,t,n,s){const r=[e,t];for(;r.length;){if(t=r.pop(),e=r.pop(),t-e<=n)continue;const o=e+Math.ceil((t-e)/n/2)*n;wp(l,o,e,t,s),r.push(e,o,o,t)}}class wc extends gc{constructor(){super();g(this,"root");g(this,"previewRoot");g(this,"nodeMap");g(this,"tree");g(this,"linkMap");this.nodeMap=new Map,this.tree=new Pp,this.root=new bo(Un),this.previewRoot=new bo(Qo),this.linkMap=new Map}clear(){this.tree.clear(),this.nodeMap.clear()}searchNodesByRectNode(t){const{minY:n,minX:s,maxY:r,maxX:o}=t;return this.searchNodes(s,n,o,r)}searchNodes(t,n,s=t,r=n){const o={id:"pointer",minX:t,minY:n,maxX:s,maxY:r},i=this.tree.search(o),a=[];for(const c of i){const h=this.nodeMap.get(c.id);h&&a.push(h)}return a}getParentNode(t){const n=this.nodeMap.get(t);return n||this.root}getNode(t){if(t===Un)return this.root;const n=this.nodeMap.get(t);return n||null}addNode(t){this.nodeMap.set(t.id,t),this.addIndexNode(t.getRectNode())}removeNode(t){const n=this.getNode(t);if(!n){console.warn("警告:删除节点不存在:",t);return}this.nodeMap.delete(t),this.removeIndexNode(n.getRectNode()),n.type===A.Line&&this.linkMap.delete(n)}removeIndexNode(t){this.tree.remove(t,(n,s)=>n.id===s.id)}addIndexNode(t){this.tree.insert(t)}getNodeBounds(){const t=[];for(const[n,s]of this.nodeMap)t.push(s.getRectNode());return T.getBounds(t,"all-node-bounds")}addLink(t,n,s=!0){const r=this.linkMap.get(t);if(r){s?r.startNode=n:r.endNode=n,this.checkLinkLine(t);return}const o={startNode:null,endNode:null};s?o.startNode=n:o.endNode=n,this.linkMap.set(t,o),this.checkLinkLine(t)}checkLinkLine(t){const n=this.linkMap.get(t);n&&n.endNode===null&&n.startNode===null&&this.linkMap.delete(t)}getNodeLinks(t){const n=new Set;if(t.type===A.Line)return n;for(const[s,r]of this.linkMap){if(!s.getProp(R.Connect))continue;const{startNode:i,endNode:a}=r;i===t&&n.add(s),a===t&&n.add(s)}return n}}const os=class os{constructor(){g(this,"previewGraphics",[]);g(this,"createWorker",new Ua);g(this,"layoutHandler",new En);g(this,"inQuickPreview",!1)}enterQuickPreview(e,t,n){if(this.inQuickPreview){this.previewGraphics.length>0&&n.addOrUpdate(N.PreviewGraphics,{previewNodes:this.previewGraphics});return}this.inQuickPreview=!0,this.resetPreviewNode(n);const s=e.baseProps,r=e.toGlobal({x:t.x*s.width,y:t.y*s.height}),o=this.createWorker.computePreviewNodePos(e,t,n),i=this.createWorker.computeEndNodeRelative(e,t),a=this.makeupNodeProps(e,o),c=Ge.getInstance().create(os.PREVIEW_ID,A.Shape,0,a,n.nodeManager.previewRoot,n.gmlRender.glCtx);this.previewGraphics.push(c);const h=c.baseProps,d=c.toGlobal({x:i.x*h.width,y:i.y*h.height}),u={point:r,nodeConnect:{rect:D.rectNode2Rect(e.getBounds()),endType:T.computeNodeConnectEnd(t,e.baseProps.angle)}},p={point:d,nodeConnect:{rect:D.rectNode2Rect(c.getBounds()),endType:T.computeNodeConnectEnd(i,c.baseProps.angle)}},f=this.makeupLineProps(u,p),y=Ge.getInstance().create(os.PREVIEW_LINE_ID,A.Line,0,f,n.nodeManager.previewRoot,n.gmlRender.glCtx);this.previewGraphics.push(y),n.addOrUpdate(N.PreviewGraphics,{previewNodes:this.previewGraphics})}exitQuickPreview(e){this.resetPreviewNode(e),this.inQuickPreview=!1}resetPreviewNode(e){this.previewGraphics=[],e.nodeManager.previewRoot.children.clear()}makeupNodeProps(e,t){const n=e.baseProps,s=e.shapeType,r=t.x,o=t.y,i=e.colorProps,a=e.borderProps,c=[{type:R.Base,x:r,y:o,width:n.width,height:n.height,angle:n.angle},Jt.create({...i,alpha:.5}),Ot.create({...a,alpha:.5}),new jt(s)];if(e.type===A.Shape&&e.shapeType===_.PureText){const h=e.textProps;c.push(h.clone())}return c}makeupLineProps(e,t){const n=this.layoutHandler.layoutToPointsPro(e,t),s=D.rectNode2Rect(T.getBoundsByPoints(n));return[he.create(n),gt.create({x:s.x,y:s.y,width:s.width,height:s.height}),Ie.create({rArrow:we.Arrow}),new jt(Lt.RoundPolyLine),Ot.create({alpha:.5})]}};g(os,"PREVIEW_ID","quick_preview"),g(os,"PREVIEW_LINE_ID","quick_preview_line");let wr=os;class Lo{}class Cp extends Lo{enable(e){return e===ft.SHAPE}async handle(e,t){var a;const n=t.toolManager.shapeType,s=t.toolManager.grab,r=((a=t.lastInteractiveEvent)==null?void 0:a.globalPoint)||new m,o=this.makeupShapeDefaultProps(n,r,s);return Ge.getInstance().create(e,A.Shape,0,o,t.nodeManager.previewRoot,t.gmlRender.glCtx)}makeupShapeDefaultProps(e,t,n){const s=rr[e]??Tt.Others,r=Nn[s],o=hn[s],i=100,a=100,c=n?t.x-.5*i:t.x,h=n?t.y-.5*a:t.y;return[gt.create({x:c,y:h,width:i,height:a}),se.create({type:R.Text,fontSize:16,text:"",sizeMode:le.autoHeight}),Jt.create({color:r,alpha:.5}),Ot.create({color:o,alpha:.5}),new jt(e)]}}class Lp extends Lo{enable(e){return e===ft.SECTION}async handle(e,t){var a;const n=t.toolManager.grab,s=t.toolManager.shapeType,r=((a=t.lastInteractiveEvent)==null?void 0:a.globalPoint)||new m,o=this.makeupShapeDefaultProps(r,n,s);return Ge.getInstance().create(e,A.Section,0,o,t.nodeManager.previewRoot,t.gmlRender.glCtx)}makeupShapeDefaultProps(e,t,n){const s=Tt.Section,r=Nn[s],o=hn[s],i=cr[n],a=i.width,c=i.height,h=t?e.x-.5*a:e.x,d=t?e.y-.5*c:e.y;return[gt.create({x:h,y:d,width:a,height:c}),Jt.create({color:r,alpha:.5}),Ot.create({color:o,alpha:.5})]}}var xr={exports:{}},Rs={exports:{}};(function(){var l,e,t,n,s,r;typeof performance<"u"&&performance!==null&&performance.now?Rs.exports=function(){return performance.now()}:typeof process<"u"&&process!==null&&process.hrtime?(Rs.exports=function(){return(l()-s)/1e6},e=process.hrtime,l=function(){var o;return o=e(),o[0]*1e9+o[1]},n=l(),r=process.uptime()*1e9,s=n-r):Date.now?(Rs.exports=function(){return Date.now()-t},t=Date.now()):(Rs.exports=function(){return new Date().getTime()-t},t=new Date().getTime())}).call(An);for(var Ap=Rs.exports,Rp=Ap,$e=typeof window>"u"?An:window,Pr=["moz","webkit"],Jn="AnimationFrame",ts=$e["request"+Jn],Ns=$e["cancel"+Jn]||$e["cancelRequest"+Jn],Es=0;!ts&&Es<Pr.length;Es++)ts=$e[Pr[Es]+"Request"+Jn],Ns=$e[Pr[Es]+"Cancel"+Jn]||$e[Pr[Es]+"CancelRequest"+Jn];if(!ts||!Ns){var Ao=0,xc=0,Bn=[],Np=1e3/60;ts=function(l){if(Bn.length===0){var e=Rp(),t=Math.max(0,Np-(e-Ao));Ao=t+e,setTimeout(function(){var n=Bn.slice(0);Bn.length=0;for(var s=0;s<n.length;s++)if(!n[s].cancelled)try{n[s].callback(Ao)}catch(r){setTimeout(function(){throw r},0)}},Math.round(t))}return Bn.push({handle:++xc,callback:l,cancelled:!1}),xc},Ns=function(l){for(var e=0;e<Bn.length;e++)Bn[e].handle===l&&(Bn[e].cancelled=!0)}}xr.exports=function(l){return ts.call($e,l)},xr.exports.cancel=function(){Ns.apply($e,arguments)},xr.exports.polyfill=function(l){l||(l=$e),l.requestAnimationFrame=ts,l.cancelAnimationFrame=Ns};var Ep=xr.exports;const Ro=eo(Ep);var Ip=function(l){this.ok=!1,this.alpha=1,l.charAt(0)=="#"&&(l=l.substr(1,6)),l=l.replace(/ /g,""),l=l.toLowerCase();var e={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",feldspar:"d19275",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslateblue:"8470ff",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",rebeccapurple:"663399",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};l=e[l]||l;for(var t=[{re:/^rgba\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3}),\s*((?:\d?\.)?\d)\)$/,example:["rgba(123, 234, 45, 0.8)","rgba(255,234,245,1.0)"],process:function(a){return[parseInt(a[1]),parseInt(a[2]),parseInt(a[3]),parseFloat(a[4])]}},{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(a){return[parseInt(a[1]),parseInt(a[2]),parseInt(a[3])]}},{re:/^([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,example:["#00ff00","336699"],process:function(a){return[parseInt(a[1],16),parseInt(a[2],16),parseInt(a[3],16)]}},{re:/^([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,example:["#fb0","f0f"],process:function(a){return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)]}}],n=0;n<t.length;n++){var s=t[n].re,r=t[n].process,o=s.exec(l);if(o){var i=r(o);this.r=i[0],this.g=i[1],this.b=i[2],i.length>3&&(this.alpha=i[3]),this.ok=!0}}this.r=this.r<0||isNaN(this.r)?0:this.r>255?255:this.r,this.g=this.g<0||isNaN(this.g)?0:this.g>255?255:this.g,this.b=this.b<0||isNaN(this.b)?0:this.b>255?255:this.b,this.alpha=this.alpha<0?0:this.alpha>1||isNaN(this.alpha)?1:this.alpha,this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"},this.toRGBA=function(){return"rgba("+this.r+", "+this.g+", "+this.b+", "+this.alpha+")"},this.toHex=function(){var a=this.r.toString(16),c=this.g.toString(16),h=this.b.toString(16);return a.length==1&&(a="0"+a),c.length==1&&(c="0"+c),h.length==1&&(h="0"+h),"#"+a+c+h},this.getHelpXML=function(){for(var a=new Array,c=0;c<t.length;c++)for(var h=t[c].example,d=0;d<h.length;d++)a[a.length]=h[d];for(var u in e)a[a.length]=u;var p=document.createElement("ul");p.setAttribute("id","rgbcolor-examples");for(var c=0;c<a.length;c++)try{var f=document.createElement("li"),y=new RGBColor(a[c]),w=document.createElement("div");w.style.cssText="margin: 3px; border: 1px solid black; background:"+y.toHex()+"; color:"+y.toHex(),w.appendChild(document.createTextNode("test"));var b=document.createTextNode(" "+a[c]+" -> "+y.toRGB()+" -> "+y.toHex());f.appendChild(w),f.appendChild(b),p.appendChild(f)}catch{}return p}};const No=eo(Ip);/*! *****************************************************************************
|
|
11
|
+
Copyright (c) Microsoft Corporation.
|
|
12
|
+
|
|
13
|
+
Permission to use, copy, modify, and/or distribute this software for any
|
|
14
|
+
purpose with or without fee is hereby granted.
|
|
15
|
+
|
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
|
|
17
|
+
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
18
|
+
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
|
|
19
|
+
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
|
|
20
|
+
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
|
|
21
|
+
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
|
|
22
|
+
PERFORMANCE OF THIS SOFTWARE.
|
|
23
|
+
***************************************************************************** */var Pc=function(l,e){return(Pc=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,n){t.__proto__=n}||function(t,n){for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(t[s]=n[s])})(l,e)};function bc(l,e){if(typeof e!="function"&&e!==null)throw new TypeError("Class extends value "+String(e)+" is not a constructor or null");function t(){this.constructor=l}Pc(l,e),l.prototype=e===null?Object.create(e):(t.prototype=e.prototype,new t)}function kp(l){var e="";Array.isArray(l)||(l=[l]);for(var t=0;t<l.length;t++){var n=l[t];if(n.type===Y.CLOSE_PATH)e+="z";else if(n.type===Y.HORIZ_LINE_TO)e+=(n.relative?"h":"H")+n.x;else if(n.type===Y.VERT_LINE_TO)e+=(n.relative?"v":"V")+n.y;else if(n.type===Y.MOVE_TO)e+=(n.relative?"m":"M")+n.x+" "+n.y;else if(n.type===Y.LINE_TO)e+=(n.relative?"l":"L")+n.x+" "+n.y;else if(n.type===Y.CURVE_TO)e+=(n.relative?"c":"C")+n.x1+" "+n.y1+" "+n.x2+" "+n.y2+" "+n.x+" "+n.y;else if(n.type===Y.SMOOTH_CURVE_TO)e+=(n.relative?"s":"S")+n.x2+" "+n.y2+" "+n.x+" "+n.y;else if(n.type===Y.QUAD_TO)e+=(n.relative?"q":"Q")+n.x1+" "+n.y1+" "+n.x+" "+n.y;else if(n.type===Y.SMOOTH_QUAD_TO)e+=(n.relative?"t":"T")+n.x+" "+n.y;else{if(n.type!==Y.ARC)throw new Error('Unexpected command type "'+n.type+'" at index '+t+".");e+=(n.relative?"a":"A")+n.rX+" "+n.rY+" "+n.xRot+" "+ +n.lArcFlag+" "+ +n.sweepFlag+" "+n.x+" "+n.y}}return e}function Eo(l,e){var t=l[0],n=l[1];return[t*Math.cos(e)-n*Math.sin(e),t*Math.sin(e)+n*Math.cos(e)]}function Be(){for(var l=[],e=0;e<arguments.length;e++)l[e]=arguments[e];for(var t=0;t<l.length;t++)if(typeof l[t]!="number")throw new Error("assertNumbers arguments["+t+"] is not a number. "+typeof l[t]+" == typeof "+l[t]);return!0}var un=Math.PI;function Io(l,e,t){l.lArcFlag=l.lArcFlag===0?0:1,l.sweepFlag=l.sweepFlag===0?0:1;var n=l.rX,s=l.rY,r=l.x,o=l.y;n=Math.abs(l.rX),s=Math.abs(l.rY);var i=Eo([(e-r)/2,(t-o)/2],-l.xRot/180*un),a=i[0],c=i[1],h=Math.pow(a,2)/Math.pow(n,2)+Math.pow(c,2)/Math.pow(s,2);1<h&&(n*=Math.sqrt(h),s*=Math.sqrt(h)),l.rX=n,l.rY=s;var d=Math.pow(n,2)*Math.pow(c,2)+Math.pow(s,2)*Math.pow(a,2),u=(l.lArcFlag!==l.sweepFlag?1:-1)*Math.sqrt(Math.max(0,(Math.pow(n,2)*Math.pow(s,2)-d)/d)),p=n*c/s*u,f=-s*a/n*u,y=Eo([p,f],l.xRot/180*un);l.cX=y[0]+(e+r)/2,l.cY=y[1]+(t+o)/2,l.phi1=Math.atan2((c-f)/s,(a-p)/n),l.phi2=Math.atan2((-c-f)/s,(-a-p)/n),l.sweepFlag===0&&l.phi2>l.phi1&&(l.phi2-=2*un),l.sweepFlag===1&&l.phi2<l.phi1&&(l.phi2+=2*un),l.phi1*=180/un,l.phi2*=180/un}function vc(l,e,t){Be(l,e,t);var n=l*l+e*e-t*t;if(0>n)return[];if(n===0)return[[l*t/(l*l+e*e),e*t/(l*l+e*e)]];var s=Math.sqrt(n);return[[(l*t+e*s)/(l*l+e*e),(e*t-l*s)/(l*l+e*e)],[(l*t-e*s)/(l*l+e*e),(e*t+l*s)/(l*l+e*e)]]}var Gt,Qe=Math.PI/180;function Mc(l,e,t){return(1-t)*l+t*e}function Sc(l,e,t,n){return l+Math.cos(n/180*un)*e+Math.sin(n/180*un)*t}function Tc(l,e,t,n){var s=1e-6,r=e-l,o=t-e,i=3*r+3*(n-t)-6*o,a=6*(o-r),c=3*r;return Math.abs(i)<s?[-c/a]:function(h,d,u){var p=h*h/4-d;if(p<-u)return[];if(p<=u)return[-h/2];var f=Math.sqrt(p);return[-h/2-f,-h/2+f]}(a/i,c/i,s)}function Cc(l,e,t,n,s){var r=1-s;return l*(r*r*r)+e*(3*r*r*s)+t*(3*r*s*s)+n*(s*s*s)}(function(l){function e(){return s(function(i,a,c){return i.relative&&(i.x1!==void 0&&(i.x1+=a),i.y1!==void 0&&(i.y1+=c),i.x2!==void 0&&(i.x2+=a),i.y2!==void 0&&(i.y2+=c),i.x!==void 0&&(i.x+=a),i.y!==void 0&&(i.y+=c),i.relative=!1),i})}function t(){var i=NaN,a=NaN,c=NaN,h=NaN;return s(function(d,u,p){return d.type&Y.SMOOTH_CURVE_TO&&(d.type=Y.CURVE_TO,i=isNaN(i)?u:i,a=isNaN(a)?p:a,d.x1=d.relative?u-i:2*u-i,d.y1=d.relative?p-a:2*p-a),d.type&Y.CURVE_TO?(i=d.relative?u+d.x2:d.x2,a=d.relative?p+d.y2:d.y2):(i=NaN,a=NaN),d.type&Y.SMOOTH_QUAD_TO&&(d.type=Y.QUAD_TO,c=isNaN(c)?u:c,h=isNaN(h)?p:h,d.x1=d.relative?u-c:2*u-c,d.y1=d.relative?p-h:2*p-h),d.type&Y.QUAD_TO?(c=d.relative?u+d.x1:d.x1,h=d.relative?p+d.y1:d.y1):(c=NaN,h=NaN),d})}function n(){var i=NaN,a=NaN;return s(function(c,h,d){if(c.type&Y.SMOOTH_QUAD_TO&&(c.type=Y.QUAD_TO,i=isNaN(i)?h:i,a=isNaN(a)?d:a,c.x1=c.relative?h-i:2*h-i,c.y1=c.relative?d-a:2*d-a),c.type&Y.QUAD_TO){i=c.relative?h+c.x1:c.x1,a=c.relative?d+c.y1:c.y1;var u=c.x1,p=c.y1;c.type=Y.CURVE_TO,c.x1=((c.relative?0:h)+2*u)/3,c.y1=((c.relative?0:d)+2*p)/3,c.x2=(c.x+2*u)/3,c.y2=(c.y+2*p)/3}else i=NaN,a=NaN;return c})}function s(i){var a=0,c=0,h=NaN,d=NaN;return function(u){if(isNaN(h)&&!(u.type&Y.MOVE_TO))throw new Error("path must start with moveto");var p=i(u,a,c,h,d);return u.type&Y.CLOSE_PATH&&(a=h,c=d),u.x!==void 0&&(a=u.relative?a+u.x:u.x),u.y!==void 0&&(c=u.relative?c+u.y:u.y),u.type&Y.MOVE_TO&&(h=a,d=c),p}}function r(i,a,c,h,d,u){return Be(i,a,c,h,d,u),s(function(p,f,y,w){var b=p.x1,x=p.x2,v=p.relative&&!isNaN(w),C=p.x!==void 0?p.x:v?0:f,E=p.y!==void 0?p.y:v?0:y;function k(H){return H*H}p.type&Y.HORIZ_LINE_TO&&a!==0&&(p.type=Y.LINE_TO,p.y=p.relative?0:y),p.type&Y.VERT_LINE_TO&&c!==0&&(p.type=Y.LINE_TO,p.x=p.relative?0:f),p.x!==void 0&&(p.x=p.x*i+E*c+(v?0:d)),p.y!==void 0&&(p.y=C*a+p.y*h+(v?0:u)),p.x1!==void 0&&(p.x1=p.x1*i+p.y1*c+(v?0:d)),p.y1!==void 0&&(p.y1=b*a+p.y1*h+(v?0:u)),p.x2!==void 0&&(p.x2=p.x2*i+p.y2*c+(v?0:d)),p.y2!==void 0&&(p.y2=x*a+p.y2*h+(v?0:u));var I=i*h-a*c;if(p.xRot!==void 0&&(i!==1||a!==0||c!==0||h!==1))if(I===0)delete p.rX,delete p.rY,delete p.xRot,delete p.lArcFlag,delete p.sweepFlag,p.type=Y.LINE_TO;else{var V=p.xRot*Math.PI/180,U=Math.sin(V),J=Math.cos(V),j=1/k(p.rX),st=1/k(p.rY),tt=k(J)*j+k(U)*st,it=2*U*J*(j-st),ht=k(U)*j+k(J)*st,xt=tt*h*h-it*a*h+ht*a*a,mt=it*(i*h+a*c)-2*(tt*c*h+ht*i*a),ut=tt*c*c-it*i*c+ht*i*i,ot=(Math.atan2(mt,xt-ut)+Math.PI)%Math.PI/2,q=Math.sin(ot),B=Math.cos(ot);p.rX=Math.abs(I)/Math.sqrt(xt*k(B)+mt*q*B+ut*k(q)),p.rY=Math.abs(I)/Math.sqrt(xt*k(q)-mt*q*B+ut*k(B)),p.xRot=180*ot/Math.PI}return p.sweepFlag!==void 0&&0>I&&(p.sweepFlag=+!p.sweepFlag),p})}function o(){return function(i){var a={};for(var c in i)a[c]=i[c];return a}}l.ROUND=function(i){function a(c){return Math.round(c*i)/i}return i===void 0&&(i=1e13),Be(i),function(c){return c.x1!==void 0&&(c.x1=a(c.x1)),c.y1!==void 0&&(c.y1=a(c.y1)),c.x2!==void 0&&(c.x2=a(c.x2)),c.y2!==void 0&&(c.y2=a(c.y2)),c.x!==void 0&&(c.x=a(c.x)),c.y!==void 0&&(c.y=a(c.y)),c.rX!==void 0&&(c.rX=a(c.rX)),c.rY!==void 0&&(c.rY=a(c.rY)),c}},l.TO_ABS=e,l.TO_REL=function(){return s(function(i,a,c){return i.relative||(i.x1!==void 0&&(i.x1-=a),i.y1!==void 0&&(i.y1-=c),i.x2!==void 0&&(i.x2-=a),i.y2!==void 0&&(i.y2-=c),i.x!==void 0&&(i.x-=a),i.y!==void 0&&(i.y-=c),i.relative=!0),i})},l.NORMALIZE_HVZ=function(i,a,c){return i===void 0&&(i=!0),a===void 0&&(a=!0),c===void 0&&(c=!0),s(function(h,d,u,p,f){if(isNaN(p)&&!(h.type&Y.MOVE_TO))throw new Error("path must start with moveto");return a&&h.type&Y.HORIZ_LINE_TO&&(h.type=Y.LINE_TO,h.y=h.relative?0:u),c&&h.type&Y.VERT_LINE_TO&&(h.type=Y.LINE_TO,h.x=h.relative?0:d),i&&h.type&Y.CLOSE_PATH&&(h.type=Y.LINE_TO,h.x=h.relative?p-d:p,h.y=h.relative?f-u:f),h.type&Y.ARC&&(h.rX===0||h.rY===0)&&(h.type=Y.LINE_TO,delete h.rX,delete h.rY,delete h.xRot,delete h.lArcFlag,delete h.sweepFlag),h})},l.NORMALIZE_ST=t,l.QT_TO_C=n,l.INFO=s,l.SANITIZE=function(i){i===void 0&&(i=0),Be(i);var a=NaN,c=NaN,h=NaN,d=NaN;return s(function(u,p,f,y,w){var b=Math.abs,x=!1,v=0,C=0;if(u.type&Y.SMOOTH_CURVE_TO&&(v=isNaN(a)?0:p-a,C=isNaN(c)?0:f-c),u.type&(Y.CURVE_TO|Y.SMOOTH_CURVE_TO)?(a=u.relative?p+u.x2:u.x2,c=u.relative?f+u.y2:u.y2):(a=NaN,c=NaN),u.type&Y.SMOOTH_QUAD_TO?(h=isNaN(h)?p:2*p-h,d=isNaN(d)?f:2*f-d):u.type&Y.QUAD_TO?(h=u.relative?p+u.x1:u.x1,d=u.relative?f+u.y1:u.y2):(h=NaN,d=NaN),u.type&Y.LINE_COMMANDS||u.type&Y.ARC&&(u.rX===0||u.rY===0||!u.lArcFlag)||u.type&Y.CURVE_TO||u.type&Y.SMOOTH_CURVE_TO||u.type&Y.QUAD_TO||u.type&Y.SMOOTH_QUAD_TO){var E=u.x===void 0?0:u.relative?u.x:u.x-p,k=u.y===void 0?0:u.relative?u.y:u.y-f;v=isNaN(h)?u.x1===void 0?v:u.relative?u.x:u.x1-p:h-p,C=isNaN(d)?u.y1===void 0?C:u.relative?u.y:u.y1-f:d-f;var I=u.x2===void 0?0:u.relative?u.x:u.x2-p,V=u.y2===void 0?0:u.relative?u.y:u.y2-f;b(E)<=i&&b(k)<=i&&b(v)<=i&&b(C)<=i&&b(I)<=i&&b(V)<=i&&(x=!0)}return u.type&Y.CLOSE_PATH&&b(p-y)<=i&&b(f-w)<=i&&(x=!0),x?[]:u})},l.MATRIX=r,l.ROTATE=function(i,a,c){a===void 0&&(a=0),c===void 0&&(c=0),Be(i,a,c);var h=Math.sin(i),d=Math.cos(i);return r(d,h,-h,d,a-a*d+c*h,c-a*h-c*d)},l.TRANSLATE=function(i,a){return a===void 0&&(a=0),Be(i,a),r(1,0,0,1,i,a)},l.SCALE=function(i,a){return a===void 0&&(a=i),Be(i,a),r(i,0,0,a,0,0)},l.SKEW_X=function(i){return Be(i),r(1,0,Math.atan(i),1,0,0)},l.SKEW_Y=function(i){return Be(i),r(1,Math.atan(i),0,1,0,0)},l.X_AXIS_SYMMETRY=function(i){return i===void 0&&(i=0),Be(i),r(-1,0,0,1,i,0)},l.Y_AXIS_SYMMETRY=function(i){return i===void 0&&(i=0),Be(i),r(1,0,0,-1,0,i)},l.A_TO_C=function(){return s(function(i,a,c){return Y.ARC===i.type?function(h,d,u){var p,f,y,w;h.cX||Io(h,d,u);for(var b=Math.min(h.phi1,h.phi2),x=Math.max(h.phi1,h.phi2)-b,v=Math.ceil(x/90),C=new Array(v),E=d,k=u,I=0;I<v;I++){var V=Mc(h.phi1,h.phi2,I/v),U=Mc(h.phi1,h.phi2,(I+1)/v),J=U-V,j=4/3*Math.tan(J*Qe/4),st=[Math.cos(V*Qe)-j*Math.sin(V*Qe),Math.sin(V*Qe)+j*Math.cos(V*Qe)],tt=st[0],it=st[1],ht=[Math.cos(U*Qe),Math.sin(U*Qe)],xt=ht[0],mt=ht[1],ut=[xt+j*Math.sin(U*Qe),mt-j*Math.cos(U*Qe)],ot=ut[0],q=ut[1];C[I]={relative:h.relative,type:Y.CURVE_TO};var B=function(H,z){var X=Eo([H*h.rX,z*h.rY],h.xRot),Ft=X[0],ye=X[1];return[h.cX+Ft,h.cY+ye]};p=B(tt,it),C[I].x1=p[0],C[I].y1=p[1],f=B(ot,q),C[I].x2=f[0],C[I].y2=f[1],y=B(xt,mt),C[I].x=y[0],C[I].y=y[1],h.relative&&(C[I].x1-=E,C[I].y1-=k,C[I].x2-=E,C[I].y2-=k,C[I].x-=E,C[I].y-=k),E=(w=[C[I].x,C[I].y])[0],k=w[1]}return C}(i,i.relative?0:a,i.relative?0:c):i})},l.ANNOTATE_ARCS=function(){return s(function(i,a,c){return i.relative&&(a=0,c=0),Y.ARC===i.type&&Io(i,a,c),i})},l.CLONE=o,l.CALCULATE_BOUNDS=function(){var i=function(u){var p={};for(var f in u)p[f]=u[f];return p},a=e(),c=n(),h=t(),d=s(function(u,p,f){var y=h(c(a(i(u))));function w(q){q>d.maxX&&(d.maxX=q),q<d.minX&&(d.minX=q)}function b(q){q>d.maxY&&(d.maxY=q),q<d.minY&&(d.minY=q)}if(y.type&Y.DRAWING_COMMANDS&&(w(p),b(f)),y.type&Y.HORIZ_LINE_TO&&w(y.x),y.type&Y.VERT_LINE_TO&&b(y.y),y.type&Y.LINE_TO&&(w(y.x),b(y.y)),y.type&Y.CURVE_TO){w(y.x),b(y.y);for(var x=0,v=Tc(p,y.x1,y.x2,y.x);x<v.length;x++)0<(ot=v[x])&&1>ot&&w(Cc(p,y.x1,y.x2,y.x,ot));for(var C=0,E=Tc(f,y.y1,y.y2,y.y);C<E.length;C++)0<(ot=E[C])&&1>ot&&b(Cc(f,y.y1,y.y2,y.y,ot))}if(y.type&Y.ARC){w(y.x),b(y.y),Io(y,p,f);for(var k=y.xRot/180*Math.PI,I=Math.cos(k)*y.rX,V=Math.sin(k)*y.rX,U=-Math.sin(k)*y.rY,J=Math.cos(k)*y.rY,j=y.phi1<y.phi2?[y.phi1,y.phi2]:-180>y.phi2?[y.phi2+360,y.phi1+360]:[y.phi2,y.phi1],st=j[0],tt=j[1],it=function(q){var B=q[0],H=q[1],z=180*Math.atan2(H,B)/Math.PI;return z<st?z+360:z},ht=0,xt=vc(U,-I,0).map(it);ht<xt.length;ht++)(ot=xt[ht])>st&&ot<tt&&w(Sc(y.cX,I,U,ot));for(var mt=0,ut=vc(J,-V,0).map(it);mt<ut.length;mt++){var ot;(ot=ut[mt])>st&&ot<tt&&b(Sc(y.cY,V,J,ot))}}return u});return d.minX=1/0,d.maxX=-1/0,d.minY=1/0,d.maxY=-1/0,d}})(Gt||(Gt={}));var Oe,Lc=function(){function l(){}return l.prototype.round=function(e){return this.transform(Gt.ROUND(e))},l.prototype.toAbs=function(){return this.transform(Gt.TO_ABS())},l.prototype.toRel=function(){return this.transform(Gt.TO_REL())},l.prototype.normalizeHVZ=function(e,t,n){return this.transform(Gt.NORMALIZE_HVZ(e,t,n))},l.prototype.normalizeST=function(){return this.transform(Gt.NORMALIZE_ST())},l.prototype.qtToC=function(){return this.transform(Gt.QT_TO_C())},l.prototype.aToC=function(){return this.transform(Gt.A_TO_C())},l.prototype.sanitize=function(e){return this.transform(Gt.SANITIZE(e))},l.prototype.translate=function(e,t){return this.transform(Gt.TRANSLATE(e,t))},l.prototype.scale=function(e,t){return this.transform(Gt.SCALE(e,t))},l.prototype.rotate=function(e,t,n){return this.transform(Gt.ROTATE(e,t,n))},l.prototype.matrix=function(e,t,n,s,r,o){return this.transform(Gt.MATRIX(e,t,n,s,r,o))},l.prototype.skewX=function(e){return this.transform(Gt.SKEW_X(e))},l.prototype.skewY=function(e){return this.transform(Gt.SKEW_Y(e))},l.prototype.xSymmetry=function(e){return this.transform(Gt.X_AXIS_SYMMETRY(e))},l.prototype.ySymmetry=function(e){return this.transform(Gt.Y_AXIS_SYMMETRY(e))},l.prototype.annotateArcs=function(){return this.transform(Gt.ANNOTATE_ARCS())},l}(),Bp=function(l){return l===" "||l===" "||l==="\r"||l===`
|
|
24
|
+
`},Ac=function(l){return 48<=l.charCodeAt(0)&&l.charCodeAt(0)<=57},Op=function(l){function e(){var t=l.call(this)||this;return t.curNumber="",t.curCommandType=-1,t.curCommandRelative=!1,t.canParseCommandOrComma=!0,t.curNumberHasExp=!1,t.curNumberHasExpDigits=!1,t.curNumberHasDecimal=!1,t.curArgs=[],t}return bc(e,l),e.prototype.finish=function(t){if(t===void 0&&(t=[]),this.parse(" ",t),this.curArgs.length!==0||!this.canParseCommandOrComma)throw new SyntaxError("Unterminated command at the path end.");return t},e.prototype.parse=function(t,n){var s=this;n===void 0&&(n=[]);for(var r=function(d){n.push(d),s.curArgs.length=0,s.canParseCommandOrComma=!0},o=0;o<t.length;o++){var i=t[o],a=!(this.curCommandType!==Y.ARC||this.curArgs.length!==3&&this.curArgs.length!==4||this.curNumber.length!==1||this.curNumber!=="0"&&this.curNumber!=="1"),c=Ac(i)&&(this.curNumber==="0"&&i==="0"||a);if(!Ac(i)||c)if(i!=="e"&&i!=="E")if(i!=="-"&&i!=="+"||!this.curNumberHasExp||this.curNumberHasExpDigits)if(i!=="."||this.curNumberHasExp||this.curNumberHasDecimal||a){if(this.curNumber&&this.curCommandType!==-1){var h=Number(this.curNumber);if(isNaN(h))throw new SyntaxError("Invalid number ending at "+o);if(this.curCommandType===Y.ARC){if(this.curArgs.length===0||this.curArgs.length===1){if(0>h)throw new SyntaxError('Expected positive number, got "'+h+'" at index "'+o+'"')}else if((this.curArgs.length===3||this.curArgs.length===4)&&this.curNumber!=="0"&&this.curNumber!=="1")throw new SyntaxError('Expected a flag, got "'+this.curNumber+'" at index "'+o+'"')}this.curArgs.push(h),this.curArgs.length===Dp[this.curCommandType]&&(Y.HORIZ_LINE_TO===this.curCommandType?r({type:Y.HORIZ_LINE_TO,relative:this.curCommandRelative,x:h}):Y.VERT_LINE_TO===this.curCommandType?r({type:Y.VERT_LINE_TO,relative:this.curCommandRelative,y:h}):this.curCommandType===Y.MOVE_TO||this.curCommandType===Y.LINE_TO||this.curCommandType===Y.SMOOTH_QUAD_TO?(r({type:this.curCommandType,relative:this.curCommandRelative,x:this.curArgs[0],y:this.curArgs[1]}),Y.MOVE_TO===this.curCommandType&&(this.curCommandType=Y.LINE_TO)):this.curCommandType===Y.CURVE_TO?r({type:Y.CURVE_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x2:this.curArgs[2],y2:this.curArgs[3],x:this.curArgs[4],y:this.curArgs[5]}):this.curCommandType===Y.SMOOTH_CURVE_TO?r({type:Y.SMOOTH_CURVE_TO,relative:this.curCommandRelative,x2:this.curArgs[0],y2:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===Y.QUAD_TO?r({type:Y.QUAD_TO,relative:this.curCommandRelative,x1:this.curArgs[0],y1:this.curArgs[1],x:this.curArgs[2],y:this.curArgs[3]}):this.curCommandType===Y.ARC&&r({type:Y.ARC,relative:this.curCommandRelative,rX:this.curArgs[0],rY:this.curArgs[1],xRot:this.curArgs[2],lArcFlag:this.curArgs[3],sweepFlag:this.curArgs[4],x:this.curArgs[5],y:this.curArgs[6]})),this.curNumber="",this.curNumberHasExpDigits=!1,this.curNumberHasExp=!1,this.curNumberHasDecimal=!1,this.canParseCommandOrComma=!0}if(!Bp(i))if(i===","&&this.canParseCommandOrComma)this.canParseCommandOrComma=!1;else if(i!=="+"&&i!=="-"&&i!==".")if(c)this.curNumber=i,this.curNumberHasDecimal=!1;else{if(this.curArgs.length!==0)throw new SyntaxError("Unterminated command at index "+o+".");if(!this.canParseCommandOrComma)throw new SyntaxError('Unexpected character "'+i+'" at index '+o+". Command cannot follow comma");if(this.canParseCommandOrComma=!1,i!=="z"&&i!=="Z")if(i==="h"||i==="H")this.curCommandType=Y.HORIZ_LINE_TO,this.curCommandRelative=i==="h";else if(i==="v"||i==="V")this.curCommandType=Y.VERT_LINE_TO,this.curCommandRelative=i==="v";else if(i==="m"||i==="M")this.curCommandType=Y.MOVE_TO,this.curCommandRelative=i==="m";else if(i==="l"||i==="L")this.curCommandType=Y.LINE_TO,this.curCommandRelative=i==="l";else if(i==="c"||i==="C")this.curCommandType=Y.CURVE_TO,this.curCommandRelative=i==="c";else if(i==="s"||i==="S")this.curCommandType=Y.SMOOTH_CURVE_TO,this.curCommandRelative=i==="s";else if(i==="q"||i==="Q")this.curCommandType=Y.QUAD_TO,this.curCommandRelative=i==="q";else if(i==="t"||i==="T")this.curCommandType=Y.SMOOTH_QUAD_TO,this.curCommandRelative=i==="t";else{if(i!=="a"&&i!=="A")throw new SyntaxError('Unexpected character "'+i+'" at index '+o+".");this.curCommandType=Y.ARC,this.curCommandRelative=i==="a"}else n.push({type:Y.CLOSE_PATH}),this.canParseCommandOrComma=!0,this.curCommandType=-1}else this.curNumber=i,this.curNumberHasDecimal=i==="."}else this.curNumber+=i,this.curNumberHasDecimal=!0;else this.curNumber+=i;else this.curNumber+=i,this.curNumberHasExp=!0;else this.curNumber+=i,this.curNumberHasExpDigits=this.curNumberHasExp}return n},e.prototype.transform=function(t){return Object.create(this,{parse:{value:function(n,s){s===void 0&&(s=[]);for(var r=0,o=Object.getPrototypeOf(this).parse.call(this,n);r<o.length;r++){var i=o[r],a=t(i);Array.isArray(a)?s.push.apply(s,a):s.push(a)}return s}}})},e}(Lc),Y=function(l){function e(t){var n=l.call(this)||this;return n.commands=typeof t=="string"?e.parse(t):t,n}return bc(e,l),e.prototype.encode=function(){return e.encode(this.commands)},e.prototype.getBounds=function(){var t=Gt.CALCULATE_BOUNDS();return this.transform(t),t},e.prototype.transform=function(t){for(var n=[],s=0,r=this.commands;s<r.length;s++){var o=t(r[s]);Array.isArray(o)?n.push.apply(n,o):n.push(o)}return this.commands=n,this},e.encode=function(t){return kp(t)},e.parse=function(t){var n=new Op,s=[];return n.parse(t,s),n.finish(s),s},e.CLOSE_PATH=1,e.MOVE_TO=2,e.HORIZ_LINE_TO=4,e.VERT_LINE_TO=8,e.LINE_TO=16,e.CURVE_TO=32,e.SMOOTH_CURVE_TO=64,e.QUAD_TO=128,e.SMOOTH_QUAD_TO=256,e.ARC=512,e.LINE_COMMANDS=e.LINE_TO|e.HORIZ_LINE_TO|e.VERT_LINE_TO,e.DRAWING_COMMANDS=e.HORIZ_LINE_TO|e.VERT_LINE_TO|e.LINE_TO|e.CURVE_TO|e.SMOOTH_CURVE_TO|e.QUAD_TO|e.SMOOTH_QUAD_TO|e.ARC,e}(Lc),Dp=((Oe={})[Y.MOVE_TO]=2,Oe[Y.LINE_TO]=2,Oe[Y.HORIZ_LINE_TO]=1,Oe[Y.VERT_LINE_TO]=1,Oe[Y.CLOSE_PATH]=0,Oe[Y.QUAD_TO]=4,Oe[Y.SMOOTH_QUAD_TO]=2,Oe[Y.CURVE_TO]=6,Oe[Y.SMOOTH_CURVE_TO]=4,Oe[Y.ARC]=7,Oe);function br(l){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?br=function(e){return typeof e}:br=function(e){return e&&typeof Symbol=="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},br(l)}function Hp(l,e){if(!(l instanceof e))throw new TypeError("Cannot call a class as a function")}var zp=[512,512,456,512,328,456,335,512,405,328,271,456,388,335,292,512,454,405,364,328,298,271,496,456,420,388,360,335,312,292,273,512,482,454,428,405,383,364,345,328,312,298,284,271,259,496,475,456,437,420,404,388,374,360,347,335,323,312,302,292,282,273,265,512,497,482,468,454,441,428,417,405,394,383,373,364,354,345,337,328,320,312,305,298,291,284,278,271,265,259,507,496,485,475,465,456,446,437,428,420,412,404,396,388,381,374,367,360,354,347,341,335,329,323,318,312,307,302,297,292,287,282,278,273,269,265,261,512,505,497,489,482,475,468,461,454,447,441,435,428,422,417,411,405,399,394,389,383,378,373,368,364,359,354,350,345,341,337,332,328,324,320,316,312,309,305,301,298,294,291,287,284,281,278,274,271,268,265,262,259,257,507,501,496,491,485,480,475,470,465,460,456,451,446,442,437,433,428,424,420,416,412,408,404,400,396,392,388,385,381,377,374,370,367,363,360,357,354,350,347,344,341,338,335,332,329,326,323,320,318,315,312,310,307,304,302,299,297,294,292,289,287,285,282,280,278,275,273,271,269,267,265,263,261,259],Xp=[9,11,12,13,13,14,14,15,15,15,15,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,19,19,19,19,19,19,19,19,19,19,19,19,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,20,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,23,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24];function Yp(l,e,t,n,s){if(typeof l=="string"&&(l=document.getElementById(l)),!l||br(l)!=="object"||!("getContext"in l))throw new TypeError("Expecting canvas with `getContext` method in processCanvasRGB(A) calls!");var r=l.getContext("2d");try{return r.getImageData(e,t,n,s)}catch(o){throw new Error("unable to access image data: "+o)}}function Fp(l,e,t,n,s,r){if(!(isNaN(r)||r<1)){r|=0;var o=Yp(l,e,t,n,s);o=Vp(o,e,t,n,s,r),l.getContext("2d").putImageData(o,e,t)}}function Vp(l,e,t,n,s,r){for(var o=l.data,i=2*r+1,a=n-1,c=s-1,h=r+1,d=h*(h+1)/2,u=new Rc,p=u,f,y=1;y<i;y++)p=p.next=new Rc,y===h&&(f=p);p.next=u;for(var w=null,b=null,x=0,v=0,C=zp[r],E=Xp[r],k=0;k<s;k++){p=u;for(var I=o[v],V=o[v+1],U=o[v+2],J=o[v+3],j=0;j<h;j++)p.r=I,p.g=V,p.b=U,p.a=J,p=p.next;for(var st=0,tt=0,it=0,ht=0,xt=h*I,mt=h*V,ut=h*U,ot=h*J,q=d*I,B=d*V,H=d*U,z=d*J,X=1;X<h;X++){var Ft=v+((a<X?a:X)<<2),ye=o[Ft],Se=o[Ft+1],Me=o[Ft+2],Te=o[Ft+3],Ce=h-X;q+=(p.r=ye)*Ce,B+=(p.g=Se)*Ce,H+=(p.b=Me)*Ce,z+=(p.a=Te)*Ce,st+=ye,tt+=Se,it+=Me,ht+=Te,p=p.next}w=u,b=f;for(var zn=0;zn<n;zn++){var Bt=z*C>>>E;if(o[v+3]=Bt,Bt!==0){var mn=255/Bt;o[v]=(q*C>>>E)*mn,o[v+1]=(B*C>>>E)*mn,o[v+2]=(H*C>>>E)*mn}else o[v]=o[v+1]=o[v+2]=0;q-=xt,B-=mt,H-=ut,z-=ot,xt-=w.r,mt-=w.g,ut-=w.b,ot-=w.a;var Le=zn+r+1;Le=x+(Le<a?Le:a)<<2,st+=w.r=o[Le],tt+=w.g=o[Le+1],it+=w.b=o[Le+2],ht+=w.a=o[Le+3],q+=st,B+=tt,H+=it,z+=ht,w=w.next;var Ae=b,Re=Ae.r,is=Ae.g,tn=Ae.b,ze=Ae.a;xt+=Re,mt+=is,ut+=tn,ot+=ze,st-=Re,tt-=is,it-=tn,ht-=ze,b=b.next,v+=4}x+=n}for(var wn=0;wn<n;wn++){v=wn<<2;var en=o[v],Xe=o[v+1],nn=o[v+2],ce=o[v+3],as=h*en,cs=h*Xe,ls=h*nn,Xs=h*ce,Xn=d*en,Yn=d*Xe,hs=d*nn,ds=d*ce;p=u;for(var Ir=0;Ir<h;Ir++)p.r=en,p.g=Xe,p.b=nn,p.a=ce,p=p.next;for(var kr=n,Ys=0,Fs=0,Vs=0,Fn=0,Vn=1;Vn<=r;Vn++){v=kr+wn<<2;var Ye=h-Vn;Xn+=(p.r=en=o[v])*Ye,Yn+=(p.g=Xe=o[v+1])*Ye,hs+=(p.b=nn=o[v+2])*Ye,ds+=(p.a=ce=o[v+3])*Ye,Fn+=en,Ys+=Xe,Fs+=nn,Vs+=ce,p=p.next,Vn<c&&(kr+=n)}v=wn,w=u,b=f;for(var Wn=0;Wn<s;Wn++){var Zt=v<<2;o[Zt+3]=ce=ds*C>>>E,ce>0?(ce=255/ce,o[Zt]=(Xn*C>>>E)*ce,o[Zt+1]=(Yn*C>>>E)*ce,o[Zt+2]=(hs*C>>>E)*ce):o[Zt]=o[Zt+1]=o[Zt+2]=0,Xn-=as,Yn-=cs,hs-=ls,ds-=Xs,as-=w.r,cs-=w.g,ls-=w.b,Xs-=w.a,Zt=wn+((Zt=Wn+h)<c?Zt:c)*n<<2,Xn+=Fn+=w.r=o[Zt],Yn+=Ys+=w.g=o[Zt+1],hs+=Fs+=w.b=o[Zt+2],ds+=Vs+=w.a=o[Zt+3],w=w.next,as+=en=b.r,cs+=Xe=b.g,ls+=nn=b.b,Xs+=ce=b.a,Fn-=en,Ys-=Xe,Fs-=nn,Vs-=ce,b=b.next,v+=n}}return l}var Rc=function l(){Hp(this,l),this.r=0,this.g=0,this.b=0,this.a=0,this.next=null};function es(l){return l.replace(/(?!\u3000)\s+/gm," ")}function Wp(l){return l.replace(/^[\n \t]+/,"")}function Gp(l){return l.replace(/[\n \t]+$/,"")}function ve(l){const e=l.match(/-?(\d+(?:\.\d*(?:[eE][+-]?\d+)?)?|\.\d+)(?=\D|$)/gm);return e?e.map(parseFloat):[]}function Up(l){const e=ve(l);return[e[0]||0,e[1]||0,e[2]||0,e[3]||0,e[4]||0,e[5]||0]}const _p=/^[A-Z-]+$/;function Kp(l){return _p.test(l)?l.toLowerCase():l}function Nc(l){const e=/url\(('([^']+)'|"([^"]+)"|([^'")]+))\)/.exec(l);return e&&(e[2]||e[3]||e[4])||""}function jp(l){if(!l.startsWith("rgb"))return l;let e=3;return l.replace(/\d+(\.\d+)?/g,(n,s)=>e--&&s?String(Math.round(parseFloat(n))):n)}const qp=/(\[[^\]]+\])/g,$p=/(#[^\s+>~.[:]+)/g,Qp=/(\.[^\s+>~.[:]+)/g,Zp=/(::[^\s+>~.[:]+|:first-line|:first-letter|:before|:after)/gi,Jp=/(:[\w-]+\([^)]*\))/gi,tf=/(:[^\s+>~.[:]+)/g,ef=/([^\s+>~.[:]+)/g;function On(l,e){const t=e.exec(l);return t?[l.replace(e," "),t.length]:[l,0]}function nf(l){const e=[0,0,0];let t=l.replace(/:not\(([^)]*)\)/g," $1 ").replace(/{[\s\S]*/gm," "),n=0;return[t,n]=On(t,qp),e[1]+=n,[t,n]=On(t,$p),e[0]+=n,[t,n]=On(t,Qp),e[1]+=n,[t,n]=On(t,Zp),e[2]+=n,[t,n]=On(t,Jp),e[1]+=n,[t,n]=On(t,tf),e[1]+=n,t=t.replace(/[*\s+>~]/g," ").replace(/[#.]/g," "),[t,n]=On(t,ef),e[2]+=n,e.join("")}const ns=1e-8;function Ec(l){return Math.sqrt(Math.pow(l[0],2)+Math.pow(l[1],2))}function ko(l,e){return(l[0]*e[0]+l[1]*e[1])/(Ec(l)*Ec(e))}function Ic(l,e){return(l[0]*e[1]<l[1]*e[0]?-1:1)*Math.acos(ko(l,e))}function kc(l){return l*l*l}function Bc(l){return 3*l*l*(1-l)}function Oc(l){return 3*l*(1-l)*(1-l)}function Dc(l){return(1-l)*(1-l)*(1-l)}function Hc(l){return l*l}function zc(l){return 2*l*(1-l)}function Xc(l){return(1-l)*(1-l)}class rt{static empty(e){return new rt(e,"EMPTY","")}split(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:" ";const{document:t,name:n}=this;return es(this.getString()).trim().split(e).map(s=>new rt(t,n,s))}hasValue(e){const t=this.value;return t!==null&&t!==""&&(e||t!==0)&&typeof t<"u"}isString(e){const{value:t}=this,n=typeof t=="string";return!n||!e?n:e.test(t)}isUrlDefinition(){return this.isString(/^url\(/)}isPixels(){if(!this.hasValue())return!1;const e=this.getString();switch(!0){case e.endsWith("px"):case/^[0-9]+$/.test(e):return!0;default:return!1}}setValue(e){return this.value=e,this}getValue(e){return typeof e>"u"||this.hasValue()?this.value:e}getNumber(e){if(!this.hasValue())return typeof e>"u"?0:parseFloat(e);const{value:t}=this;let n=parseFloat(t);return this.isString(/%$/)&&(n/=100),n}getString(e){return typeof e>"u"||this.hasValue()?typeof this.value>"u"?"":String(this.value):String(e)}getColor(e){let t=this.getString(e);return this.isNormalizedColor||(this.isNormalizedColor=!0,t=jp(t),this.value=t),t}getDpi(){return 96}getRem(){return this.document.rootEmSize}getEm(){return this.document.emSize}getUnits(){return this.getString().replace(/[0-9.-]/g,"")}getPixels(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!this.hasValue())return 0;const[n,s]=typeof e=="boolean"?[void 0,e]:[e],{viewPort:r}=this.document.screen;switch(!0){case this.isString(/vmin$/):return this.getNumber()/100*Math.min(r.computeSize("x"),r.computeSize("y"));case this.isString(/vmax$/):return this.getNumber()/100*Math.max(r.computeSize("x"),r.computeSize("y"));case this.isString(/vw$/):return this.getNumber()/100*r.computeSize("x");case this.isString(/vh$/):return this.getNumber()/100*r.computeSize("y");case this.isString(/rem$/):return this.getNumber()*this.getRem();case this.isString(/em$/):return this.getNumber()*this.getEm();case this.isString(/ex$/):return this.getNumber()*this.getEm()/2;case this.isString(/px$/):return this.getNumber();case this.isString(/pt$/):return this.getNumber()*this.getDpi()*(1/72);case this.isString(/pc$/):return this.getNumber()*15;case this.isString(/cm$/):return this.getNumber()*this.getDpi()/2.54;case this.isString(/mm$/):return this.getNumber()*this.getDpi()/25.4;case this.isString(/in$/):return this.getNumber()*this.getDpi();case(this.isString(/%$/)&&s):return this.getNumber()*this.getEm();case this.isString(/%$/):return this.getNumber()*r.computeSize(n);default:{const o=this.getNumber();return t&&o<1?o*r.computeSize(n):o}}}getMilliseconds(){return this.hasValue()?this.isString(/ms$/)?this.getNumber():this.getNumber()*1e3:0}getRadians(){if(!this.hasValue())return 0;switch(!0){case this.isString(/deg$/):return this.getNumber()*(Math.PI/180);case this.isString(/grad$/):return this.getNumber()*(Math.PI/200);case this.isString(/rad$/):return this.getNumber();default:return this.getNumber()*(Math.PI/180)}}getDefinition(){const e=this.getString(),t=/#([^)'"]+)/.exec(e),n=(t==null?void 0:t[1])||e;return this.document.definitions.get(n)}getFillStyleDefinition(e,t){let n=this.getDefinition();if(!n)return null;if(typeof n.createGradient=="function"&&"getBoundingBox"in e)return n.createGradient(this.document.ctx,e,t);if(typeof n.createPattern=="function"){if(n.getHrefAttribute().hasValue()){const s=n.getAttribute("patternTransform");n=n.getHrefAttribute().getDefinition(),n&&s.hasValue()&&n.getAttribute("patternTransform",!0).setValue(s.value)}if(n)return n.createPattern(this.document.ctx,e,t)}return null}getTextBaseline(){if(!this.hasValue())return null;const e=this.getString();return rt.textBaselineMapping[e]||null}addOpacity(e){let t=this.getColor();const n=t.length;let s=0;for(let r=0;r<n&&(t[r]===","&&s++,s!==3);r++);if(e.hasValue()&&this.isString()&&s!==3){const r=new No(t);r.ok&&(r.alpha=e.getNumber(),t=r.toRGBA())}return new rt(this.document,this.name,t)}constructor(e,t,n){this.document=e,this.name=t,this.value=n,this.isNormalizedColor=!1}}rt.textBaselineMapping={baseline:"alphabetic","before-edge":"top","text-before-edge":"top",middle:"middle",central:"middle","after-edge":"bottom","text-after-edge":"bottom",ideographic:"ideographic",alphabetic:"alphabetic",hanging:"hanging",mathematical:"alphabetic"};class Is{clear(){this.viewPorts=[]}setCurrent(e,t){this.viewPorts.push({width:e,height:t})}removeCurrent(){this.viewPorts.pop()}getRoot(){const[e]=this.viewPorts;return e||Yc()}getCurrent(){const{viewPorts:e}=this,t=e[e.length-1];return t||Yc()}get width(){return this.getCurrent().width}get height(){return this.getCurrent().height}computeSize(e){return typeof e=="number"?e:e==="x"?this.width:e==="y"?this.height:Math.sqrt(Math.pow(this.width,2)+Math.pow(this.height,2))/Math.sqrt(2)}constructor(){this.viewPorts=[]}}Is.DEFAULT_VIEWPORT_WIDTH=800,Is.DEFAULT_VIEWPORT_HEIGHT=600;function Yc(){return{width:Is.DEFAULT_VIEWPORT_WIDTH,height:Is.DEFAULT_VIEWPORT_HEIGHT}}class Xt{static parse(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;const[n=t,s=t]=ve(e);return new Xt(n,s)}static parseScale(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1;const[n=t,s=n]=ve(e);return new Xt(n,s)}static parsePath(e){const t=ve(e),n=t.length,s=[];for(let r=0;r<n;r+=2)s.push(new Xt(t[r],t[r+1]));return s}angleTo(e){return Math.atan2(e.y-this.y,e.x-this.x)}applyTransform(e){const{x:t,y:n}=this,s=t*e[0]+n*e[2]+e[4],r=t*e[1]+n*e[3]+e[5];this.x=s,this.y=r}constructor(e,t){this.x=e,this.y=t}}class sf{isWorking(){return this.working}start(){if(this.working)return;const{screen:e,onClick:t,onMouseMove:n}=this,s=e.ctx.canvas;s.onclick=t,s.onmousemove=n,this.working=!0}stop(){if(!this.working)return;const e=this.screen.ctx.canvas;this.working=!1,e.onclick=null,e.onmousemove=null}hasEvents(){return this.working&&this.events.length>0}runEvents(){if(!this.working)return;const{screen:e,events:t,eventElements:n}=this,{style:s}=e.ctx.canvas;let r;s&&(s.cursor=""),t.forEach((o,i)=>{let{run:a}=o;for(r=n[i];r;)a(r),r=r.parent}),this.events=[],this.eventElements=[]}checkPath(e,t){if(!this.working||!t)return;const{events:n,eventElements:s}=this;n.forEach((r,o)=>{let{x:i,y:a}=r;!s[o]&&t.isPointInPath&&t.isPointInPath(i,a)&&(s[o]=e)})}checkBoundingBox(e,t){if(!this.working||!t)return;const{events:n,eventElements:s}=this;n.forEach((r,o)=>{let{x:i,y:a}=r;!s[o]&&t.isPointInBox(i,a)&&(s[o]=e)})}mapXY(e,t){const{window:n,ctx:s}=this.screen,r=new Xt(e,t);let o=s.canvas;for(;o;)r.x-=o.offsetLeft,r.y-=o.offsetTop,o=o.offsetParent;return n!=null&&n.scrollX&&(r.x+=n.scrollX),n!=null&&n.scrollY&&(r.y+=n.scrollY),r}onClick(e){const{x:t,y:n}=this.mapXY(e.clientX,e.clientY);this.events.push({type:"onclick",x:t,y:n,run(s){s.onClick&&s.onClick()}})}onMouseMove(e){const{x:t,y:n}=this.mapXY(e.clientX,e.clientY);this.events.push({type:"onmousemove",x:t,y:n,run(s){s.onMouseMove&&s.onMouseMove()}})}constructor(e){this.screen=e,this.working=!1,this.events=[],this.eventElements=[],this.onClick=this.onClick.bind(this),this.onMouseMove=this.onMouseMove.bind(this)}}const Fc=typeof window<"u"?window:null,Vc=typeof fetch<"u"?fetch.bind(void 0):void 0;class Ze{wait(e){this.waits.push(e)}ready(){return this.readyPromise?this.readyPromise:Promise.resolve()}isReady(){if(this.isReadyLock)return!0;const e=this.waits.every(t=>t());return e&&(this.waits=[],this.resolveReady&&this.resolveReady()),this.isReadyLock=e,e}setDefaults(e){e.strokeStyle="rgba(0,0,0,0)",e.lineCap="butt",e.lineJoin="miter",e.miterLimit=4}setViewBox(e){let{document:t,ctx:n,aspectRatio:s,width:r,desiredWidth:o,height:i,desiredHeight:a,minX:c=0,minY:h=0,refX:d,refY:u,clip:p=!1,clipX:f=0,clipY:y=0}=e;const w=es(s).replace(/^defer\s/,""),[b,x]=w.split(" "),v=b||"xMidYMid",C=x||"meet",E=r/o,k=i/a,I=Math.min(E,k),V=Math.max(E,k);let U=o,J=a;C==="meet"&&(U*=I,J*=I),C==="slice"&&(U*=V,J*=V);const j=new rt(t,"refX",d),st=new rt(t,"refY",u),tt=j.hasValue()&&st.hasValue();if(tt&&n.translate(-I*j.getPixels("x"),-I*st.getPixels("y")),p){const it=I*f,ht=I*y;n.beginPath(),n.moveTo(it,ht),n.lineTo(r,ht),n.lineTo(r,i),n.lineTo(it,i),n.closePath(),n.clip()}if(!tt){const it=C==="meet"&&I===k,ht=C==="slice"&&V===k,xt=C==="meet"&&I===E,mt=C==="slice"&&V===E;v.startsWith("xMid")&&(it||ht)&&n.translate(r/2-U/2,0),v.endsWith("YMid")&&(xt||mt)&&n.translate(0,i/2-J/2),v.startsWith("xMax")&&(it||ht)&&n.translate(r-U,0),v.endsWith("YMax")&&(xt||mt)&&n.translate(0,i-J)}switch(!0){case v==="none":n.scale(E,k);break;case C==="meet":n.scale(I,I);break;case C==="slice":n.scale(V,V);break}n.translate(-c,-h)}start(e){let{enableRedraw:t=!1,ignoreMouse:n=!1,ignoreAnimation:s=!1,ignoreDimensions:r=!1,ignoreClear:o=!1,forceRedraw:i,scaleWidth:a,scaleHeight:c,offsetX:h,offsetY:d}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};const{mouse:u}=this,p=1e3/Ze.FRAMERATE;if(this.isReadyLock=!1,this.frameDuration=p,this.readyPromise=new Promise(x=>{this.resolveReady=x}),this.isReady()&&this.render(e,r,o,a,c,h,d),!t)return;let f=Date.now(),y=f,w=0;const b=()=>{f=Date.now(),w=f-y,w>=p&&(y=f-w%p,this.shouldUpdate(s,i)&&(this.render(e,r,o,a,c,h,d),u.runEvents())),this.intervalId=Ro(b)};n||u.start(),this.intervalId=Ro(b)}stop(){this.intervalId&&(Ro.cancel(this.intervalId),this.intervalId=null),this.mouse.stop()}shouldUpdate(e,t){if(!e){const{frameDuration:n}=this;if(this.animations.reduce((r,o)=>o.update(n)||r,!1))return!0}return!!(typeof t=="function"&&t()||!this.isReadyLock&&this.isReady()||this.mouse.hasEvents())}render(e,t,n,s,r,o,i){const{viewPort:a,ctx:c,isFirstRender:h}=this,d=c.canvas;a.clear(),d.width&&d.height&&a.setCurrent(d.width,d.height);const u=e.getStyle("width"),p=e.getStyle("height");!t&&(h||typeof s!="number"&&typeof r!="number")&&(u.hasValue()&&(d.width=u.getPixels("x"),d.style&&(d.style.width="".concat(d.width,"px"))),p.hasValue()&&(d.height=p.getPixels("y"),d.style&&(d.style.height="".concat(d.height,"px"))));let f=d.clientWidth||d.width,y=d.clientHeight||d.height;if(t&&u.hasValue()&&p.hasValue()&&(f=u.getPixels("x"),y=p.getPixels("y")),a.setCurrent(f,y),typeof o=="number"&&e.getAttribute("x",!0).setValue(o),typeof i=="number"&&e.getAttribute("y",!0).setValue(i),typeof s=="number"||typeof r=="number"){const w=ve(e.getAttribute("viewBox").getString());let b=0,x=0;if(typeof s=="number"){const C=e.getStyle("width");C.hasValue()?b=C.getPixels("x")/s:w[2]&&!isNaN(w[2])&&(b=w[2]/s)}if(typeof r=="number"){const C=e.getStyle("height");C.hasValue()?x=C.getPixels("y")/r:w[3]&&!isNaN(w[3])&&(x=w[3]/r)}b||(b=x),x||(x=b),e.getAttribute("width",!0).setValue(s),e.getAttribute("height",!0).setValue(r);const v=e.getStyle("transform",!0,!0);v.setValue("".concat(v.getString()," scale(").concat(1/b,", ").concat(1/x,")"))}n||c.clearRect(0,0,f,y),e.render(c),h&&(this.isFirstRender=!1)}constructor(e,{fetch:t=Vc,window:n=Fc}={}){if(this.ctx=e,this.viewPort=new Is,this.mouse=new sf(this),this.animations=[],this.waits=[],this.frameDuration=0,this.isReadyLock=!1,this.isFirstRender=!0,this.intervalId=null,this.window=n,!t)throw new Error("Can't find 'fetch' in 'globalThis', please provide it via options");this.fetch=t}}Ze.defaultWindow=Fc,Ze.defaultFetch=Vc,Ze.FRAMERATE=30,Ze.MAX_VIRTUAL_PIXELS=3e4;const{defaultFetch:rf}=Ze,of=typeof DOMParser<"u"?DOMParser:void 0;class Bo{async parse(e){return e.startsWith("<")?this.parseFromString(e):this.load(e)}parseFromString(e){const t=new this.DOMParser;try{return this.checkDocument(t.parseFromString(e,"image/svg+xml"))}catch{return this.checkDocument(t.parseFromString(e,"text/xml"))}}checkDocument(e){const t=e.getElementsByTagName("parsererror")[0];if(t)throw new Error(t.textContent||"Unknown parse error");return e}async load(e){const n=await(await this.fetch(e)).text();return this.parseFromString(n)}constructor({fetch:e=rf,DOMParser:t=of}={}){if(!e)throw new Error("Can't find 'fetch' in 'globalThis', please provide it via options");if(!t)throw new Error("Can't find 'DOMParser' in 'globalThis', please provide it via options");this.fetch=e,this.DOMParser=t}}class af{apply(e){const{x:t,y:n}=this.point;e.translate(t||0,n||0)}unapply(e){const{x:t,y:n}=this.point;e.translate(-1*t||0,-1*n||0)}applyToPoint(e){const{x:t,y:n}=this.point;e.applyTransform([1,0,0,1,t||0,n||0])}constructor(e,t){this.type="translate",this.point=Xt.parse(t)}}class cf{apply(e){const{cx:t,cy:n,originX:s,originY:r,angle:o}=this,i=t+s.getPixels("x"),a=n+r.getPixels("y");e.translate(i,a),e.rotate(o.getRadians()),e.translate(-i,-a)}unapply(e){const{cx:t,cy:n,originX:s,originY:r,angle:o}=this,i=t+s.getPixels("x"),a=n+r.getPixels("y");e.translate(i,a),e.rotate(-1*o.getRadians()),e.translate(-i,-a)}applyToPoint(e){const{cx:t,cy:n,angle:s}=this,r=s.getRadians();e.applyTransform([1,0,0,1,t||0,n||0]),e.applyTransform([Math.cos(r),Math.sin(r),-Math.sin(r),Math.cos(r),0,0]),e.applyTransform([1,0,0,1,-t||0,-n||0])}constructor(e,t,n){this.type="rotate";const s=ve(t);this.angle=new rt(e,"angle",s[0]),this.originX=n[0],this.originY=n[1],this.cx=s[1]||0,this.cy=s[2]||0}}class lf{apply(e){const{scale:{x:t,y:n},originX:s,originY:r}=this,o=s.getPixels("x"),i=r.getPixels("y");e.translate(o,i),e.scale(t,n||t),e.translate(-o,-i)}unapply(e){const{scale:{x:t,y:n},originX:s,originY:r}=this,o=s.getPixels("x"),i=r.getPixels("y");e.translate(o,i),e.scale(1/t,1/n||t),e.translate(-o,-i)}applyToPoint(e){const{x:t,y:n}=this.scale;e.applyTransform([t||0,0,0,n||0,0,0])}constructor(e,t,n){this.type="scale";const s=Xt.parseScale(t);(s.x===0||s.y===0)&&(s.x=ns,s.y=ns),this.scale=s,this.originX=n[0],this.originY=n[1]}}class Wc{apply(e){const{originX:t,originY:n,matrix:s}=this,r=t.getPixels("x"),o=n.getPixels("y");e.translate(r,o),e.transform(s[0],s[1],s[2],s[3],s[4],s[5]),e.translate(-r,-o)}unapply(e){const{originX:t,originY:n,matrix:s}=this,r=s[0],o=s[2],i=s[4],a=s[1],c=s[3],h=s[5],d=0,u=0,p=1,f=1/(r*(c*p-h*u)-o*(a*p-h*d)+i*(a*u-c*d)),y=t.getPixels("x"),w=n.getPixels("y");e.translate(y,w),e.transform(f*(c*p-h*u),f*(h*d-a*p),f*(i*u-o*p),f*(r*p-i*d),f*(o*h-i*c),f*(i*a-r*h)),e.translate(-y,-w)}applyToPoint(e){e.applyTransform(this.matrix)}constructor(e,t,n){this.type="matrix",this.matrix=Up(t),this.originX=n[0],this.originY=n[1]}}class Gc extends Wc{constructor(e,t,n){super(e,t,n),this.type="skew",this.angle=new rt(e,"angle",t)}}class hf extends Gc{constructor(e,t,n){super(e,t,n),this.type="skewX",this.matrix=[1,0,Math.tan(this.angle.getRadians()),1,0,0]}}class df extends Gc{constructor(e,t,n){super(e,t,n),this.type="skewY",this.matrix=[1,Math.tan(this.angle.getRadians()),0,1,0,0]}}function uf(l){return es(l).trim().replace(/\)([a-zA-Z])/g,") $1").replace(/\)(\s?,\s?)/g,") ").split(/\s(?=[a-z])/)}function pf(l){const[e="",t=""]=l.split("(");return[e.trim(),t.trim().replace(")","")]}class Dn{static fromElement(e,t){const n=t.getStyle("transform",!1,!0);if(n.hasValue()){const[s,r=s]=t.getStyle("transform-origin",!1,!0).split();if(s&&r){const o=[s,r];return new Dn(e,n.getString(),o)}}return null}apply(e){this.transforms.forEach(t=>t.apply(e))}unapply(e){this.transforms.forEach(t=>t.unapply(e))}applyToPoint(e){this.transforms.forEach(t=>t.applyToPoint(e))}constructor(e,t,n){this.document=e,this.transforms=[],uf(t).forEach(r=>{if(r==="none")return;const[o,i]=pf(r),a=Dn.transformTypes[o];a&&this.transforms.push(new a(this.document,i,n))})}}Dn.transformTypes={translate:af,rotate:cf,scale:lf,matrix:Wc,skewX:hf,skewY:df};class kt{getAttribute(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const n=this.attributes.get(e);if(!n&&t){const s=new rt(this.document,e,"");return this.attributes.set(e,s),s}return n||rt.empty(this.document)}getHrefAttribute(){let e;for(const[t,n]of this.attributes)if(t==="href"||t.endsWith(":href")){e=n;break}return e||rt.empty(this.document)}getStyle(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const s=this.styles.get(e);if(s)return s;const r=this.getAttribute(e);if(r.hasValue())return this.styles.set(e,r),r;if(!n){const{parent:o}=this;if(o){const i=o.getStyle(e);if(i.hasValue())return i}}if(t){const o=new rt(this.document,e,"");return this.styles.set(e,o),o}return rt.empty(this.document)}render(e){if(!(this.getStyle("display").getString()==="none"||this.getStyle("visibility").getString()==="hidden")){if(e.save(),this.getStyle("mask").hasValue()){const t=this.getStyle("mask").getDefinition();t&&(this.applyEffects(e),t.apply(e,this))}else if(this.getStyle("filter").getValue("none")!=="none"){const t=this.getStyle("filter").getDefinition();t&&(this.applyEffects(e),t.apply(e,this))}else this.setContext(e),this.renderChildren(e),this.clearContext(e);e.restore()}}setContext(e){}applyEffects(e){const t=Dn.fromElement(this.document,this);t&&t.apply(e);const n=this.getStyle("clip-path",!1,!0);if(n.hasValue()){const s=n.getDefinition();s&&s.apply(e)}}clearContext(e){}renderChildren(e){this.children.forEach(t=>{t.render(e)})}addChild(e){const t=e instanceof kt?e:this.document.createElement(e);t.parent=this,kt.ignoreChildTypes.includes(t.type)||this.children.push(t)}matchesSelector(e){var t;const{node:n}=this;if(typeof n.matches=="function")return n.matches(e);const s=(t=n.getAttribute)===null||t===void 0?void 0:t.call(n,"class");return!s||s===""?!1:s.split(" ").some(r=>".".concat(r)===e)}addStylesFromStyleDefinition(){const{styles:e,stylesSpecificity:t}=this.document;for(const[n,s]of e)if(!n.startsWith("@")&&this.matchesSelector(n)){const r=t.get(n);if(s)for(const[o,i]of s){let a=this.stylesSpecificity.get(o);typeof a>"u"&&(a="000"),r&&r>=a&&(i&&this.styles.set(o,i),this.stylesSpecificity.set(o,r))}}}removeStyles(e,t){return t.reduce((s,r)=>{const o=e.getStyle(r);if(!o.hasValue())return s;const i=o.getString();return o.setValue(""),[...s,[r,i]]},[])}restoreStyles(e,t){t.forEach(n=>{let[s,r]=n;e.getStyle(s,!0).setValue(r)})}isFirstChild(){var e;return((e=this.parent)===null||e===void 0?void 0:e.children.indexOf(this))===0}constructor(e,t,n=!1){if(this.document=e,this.node=t,this.captureTextNodes=n,this.type="",this.attributes=new Map,this.styles=new Map,this.stylesSpecificity=new Map,this.animationFrozen=!1,this.animationFrozenValue="",this.parent=null,this.children=[],!t||t.nodeType!==1)return;Array.from(t.attributes).forEach(o=>{const i=Kp(o.nodeName);this.attributes.set(i,new rt(e,i,o.value))}),this.addStylesFromStyleDefinition(),this.getAttribute("style").hasValue()&&this.getAttribute("style").getString().split(";").map(i=>i.trim()).forEach(i=>{if(!i)return;const[a,c]=i.split(":").map(h=>h.trim());a&&this.styles.set(a,new rt(e,a,c))});const{definitions:s}=e,r=this.getAttribute("id");r.hasValue()&&(s.has(r.getString())||s.set(r.getString(),this)),Array.from(t.childNodes).forEach(o=>{if(o.nodeType===1)this.addChild(o);else if(n&&(o.nodeType===3||o.nodeType===4)){const i=e.createTextNode(o);i.getText().length>0&&this.addChild(i)}})}}kt.ignoreChildTypes=["title"];class ff extends kt{constructor(e,t,n){super(e,t,n)}}function gf(l){const e=l.trim();return/^('|")/.test(e)?e:'"'.concat(e,'"')}function yf(l){return typeof process>"u"?l:l.trim().split(",").map(gf).join(",")}function mf(l){if(!l)return"";const e=l.trim().toLowerCase();switch(e){case"normal":case"italic":case"oblique":case"inherit":case"initial":case"unset":return e;default:return/^oblique\s+(-|)\d+deg$/.test(e)?e:""}}function wf(l){if(!l)return"";const e=l.trim().toLowerCase();switch(e){case"normal":case"bold":case"lighter":case"bolder":case"inherit":case"initial":case"unset":return e;default:return/^[\d.]+$/.test(e)?e:""}}class ue{static parse(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"",t=arguments.length>1?arguments[1]:void 0,n="",s="",r="",o="",i="";const a=es(e).trim().split(" "),c={fontSize:!1,fontStyle:!1,fontWeight:!1,fontVariant:!1};return a.forEach(h=>{switch(!0){case(!c.fontStyle&&ue.styles.includes(h)):h!=="inherit"&&(n=h),c.fontStyle=!0;break;case(!c.fontVariant&&ue.variants.includes(h)):h!=="inherit"&&(s=h),c.fontStyle=!0,c.fontVariant=!0;break;case(!c.fontWeight&&ue.weights.includes(h)):h!=="inherit"&&(r=h),c.fontStyle=!0,c.fontVariant=!0,c.fontWeight=!0;break;case!c.fontSize:h!=="inherit"&&(o=h.split("/")[0]||""),c.fontStyle=!0,c.fontVariant=!0,c.fontWeight=!0,c.fontSize=!0;break;default:h!=="inherit"&&(i+=h)}}),new ue(n,s,r,o,i,t)}toString(){return[mf(this.fontStyle),this.fontVariant,wf(this.fontWeight),this.fontSize,yf(this.fontFamily)].join(" ").trim()}constructor(e,t,n,s,r,o){const i=o?typeof o=="string"?ue.parse(o):o:{};this.fontFamily=r||i.fontFamily,this.fontSize=s||i.fontSize,this.fontStyle=e||i.fontStyle,this.fontWeight=n||i.fontWeight,this.fontVariant=t||i.fontVariant}}ue.styles="normal|italic|oblique|inherit",ue.variants="normal|small-caps|inherit",ue.weights="normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900|inherit";class De{get x(){return this.x1}get y(){return this.y1}get width(){return this.x2-this.x1}get height(){return this.y2-this.y1}addPoint(e,t){typeof e<"u"&&((isNaN(this.x1)||isNaN(this.x2))&&(this.x1=e,this.x2=e),e<this.x1&&(this.x1=e),e>this.x2&&(this.x2=e)),typeof t<"u"&&((isNaN(this.y1)||isNaN(this.y2))&&(this.y1=t,this.y2=t),t<this.y1&&(this.y1=t),t>this.y2&&(this.y2=t))}addX(e){this.addPoint(e,0)}addY(e){this.addPoint(0,e)}addBoundingBox(e){if(!e)return;const{x1:t,y1:n,x2:s,y2:r}=e;this.addPoint(t,n),this.addPoint(s,r)}sumCubic(e,t,n,s,r){return Math.pow(1-e,3)*t+3*Math.pow(1-e,2)*e*n+3*(1-e)*Math.pow(e,2)*s+Math.pow(e,3)*r}bezierCurveAdd(e,t,n,s,r){const o=6*t-12*n+6*s,i=-3*t+9*n-9*s+3*r,a=3*n-3*t;if(i===0){if(o===0)return;const u=-a/o;0<u&&u<1&&(e?this.addX(this.sumCubic(u,t,n,s,r)):this.addY(this.sumCubic(u,t,n,s,r)));return}const c=Math.pow(o,2)-4*a*i;if(c<0)return;const h=(-o+Math.sqrt(c))/(2*i);0<h&&h<1&&(e?this.addX(this.sumCubic(h,t,n,s,r)):this.addY(this.sumCubic(h,t,n,s,r)));const d=(-o-Math.sqrt(c))/(2*i);0<d&&d<1&&(e?this.addX(this.sumCubic(d,t,n,s,r)):this.addY(this.sumCubic(d,t,n,s,r)))}addBezierCurve(e,t,n,s,r,o,i,a){this.addPoint(e,t),this.addPoint(i,a),this.bezierCurveAdd(!0,e,n,r,i),this.bezierCurveAdd(!1,t,s,o,a)}addQuadraticCurve(e,t,n,s,r,o){const i=e+.6666666666666666*(n-e),a=t+2/3*(s-t),c=i+1/3*(r-e),h=a+1/3*(o-t);this.addBezierCurve(e,t,i,c,a,h,r,o)}isPointInBox(e,t){const{x1:n,y1:s,x2:r,y2:o}=this;return n<=e&&e<=r&&s<=t&&t<=o}constructor(e=Number.NaN,t=Number.NaN,n=Number.NaN,s=Number.NaN){this.x1=e,this.y1=t,this.x2=n,this.y2=s,this.addPoint(e,t),this.addPoint(n,s)}}class Hn extends kt{calculateOpacity(){let e=1,t=this;for(;t;){const n=t.getStyle("opacity",!1,!0);n.hasValue(!0)&&(e*=n.getNumber()),t=t.parent}return e}setContext(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(!t){const n=this.getStyle("fill"),s=this.getStyle("fill-opacity"),r=this.getStyle("stroke"),o=this.getStyle("stroke-opacity");if(n.isUrlDefinition()){const p=n.getFillStyleDefinition(this,s);p&&(e.fillStyle=p)}else if(n.hasValue()){n.getString()==="currentColor"&&n.setValue(this.getStyle("color").getColor());const p=n.getColor();p!=="inherit"&&(e.fillStyle=p==="none"?"rgba(0,0,0,0)":p)}if(s.hasValue()){const p=new rt(this.document,"fill",e.fillStyle).addOpacity(s).getColor();e.fillStyle=p}if(r.isUrlDefinition()){const p=r.getFillStyleDefinition(this,o);p&&(e.strokeStyle=p)}else if(r.hasValue()){r.getString()==="currentColor"&&r.setValue(this.getStyle("color").getColor());const p=r.getString();p!=="inherit"&&(e.strokeStyle=p==="none"?"rgba(0,0,0,0)":p)}if(o.hasValue()){const p=new rt(this.document,"stroke",e.strokeStyle).addOpacity(o).getString();e.strokeStyle=p}const i=this.getStyle("stroke-width");if(i.hasValue()){const p=i.getPixels();e.lineWidth=p||ns}const a=this.getStyle("stroke-linecap"),c=this.getStyle("stroke-linejoin"),h=this.getStyle("stroke-miterlimit"),d=this.getStyle("stroke-dasharray"),u=this.getStyle("stroke-dashoffset");if(a.hasValue()&&(e.lineCap=a.getString()),c.hasValue()&&(e.lineJoin=c.getString()),h.hasValue()&&(e.miterLimit=h.getNumber()),d.hasValue()&&d.getString()!=="none"){const p=ve(d.getString());typeof e.setLineDash<"u"?e.setLineDash(p):typeof e.webkitLineDash<"u"?e.webkitLineDash=p:typeof e.mozDash<"u"&&!(p.length===1&&p[0]===0)&&(e.mozDash=p);const f=u.getPixels();typeof e.lineDashOffset<"u"?e.lineDashOffset=f:typeof e.webkitLineDashOffset<"u"?e.webkitLineDashOffset=f:typeof e.mozDashOffset<"u"&&(e.mozDashOffset=f)}}if(this.modifiedEmSizeStack=!1,typeof e.font<"u"){const n=this.getStyle("font"),s=this.getStyle("font-style"),r=this.getStyle("font-variant"),o=this.getStyle("font-weight"),i=this.getStyle("font-size"),a=this.getStyle("font-family"),c=new ue(s.getString(),r.getString(),o.getString(),i.hasValue()?"".concat(i.getPixels(!0),"px"):"",a.getString(),ue.parse(n.getString(),e.font));s.setValue(c.fontStyle),r.setValue(c.fontVariant),o.setValue(c.fontWeight),i.setValue(c.fontSize),a.setValue(c.fontFamily),e.font=c.toString(),i.isPixels()&&(this.document.emSize=i.getPixels(),this.modifiedEmSizeStack=!0)}t||(this.applyEffects(e),e.globalAlpha=this.calculateOpacity())}clearContext(e){super.clearContext(e),this.modifiedEmSizeStack&&this.document.popEmSize()}constructor(...e){super(...e),this.modifiedEmSizeStack=!1}}class pn extends Hn{setContext(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;super.setContext(e,t);const n=this.getStyle("dominant-baseline").getTextBaseline()||this.getStyle("alignment-baseline").getTextBaseline();n&&(e.textBaseline=n)}initializeCoordinates(){this.x=0,this.y=0,this.leafTexts=[],this.textChunkStart=0,this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY}getBoundingBox(e){if(this.type!=="text")return this.getTElementBoundingBox(e);this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(e);let t=null;return this.children.forEach((n,s)=>{const r=this.getChildBoundingBox(e,this,this,s);t?t.addBoundingBox(r):t=r}),t}getFontSize(){const{document:e,parent:t}=this,n=ue.parse(e.ctx.font).fontSize;return t.getStyle("font-size").getNumber(n)}getTElementBoundingBox(e){const t=this.getFontSize();return new De(this.x,this.y-t,this.x+this.measureText(e),this.y)}getGlyph(e,t,n){const s=t[n];let r;if(e.isArabic){var o;const i=t.length,a=t[n-1],c=t[n+1];let h="isolated";(n===0||a===" ")&&n<i-1&&c!==" "&&(h="terminal"),n>0&&a!==" "&&n<i-1&&c!==" "&&(h="medial"),n>0&&a!==" "&&(n===i-1||c===" ")&&(h="initial"),r=((o=e.arabicGlyphs.get(s))===null||o===void 0?void 0:o.get(h))||e.glyphs.get(s)}else r=e.glyphs.get(s);return r||(r=e.missingGlyph),r}getText(){return""}getTextFromNode(e){const t=e||this.node,n=Array.from(t.parentNode.childNodes),s=n.indexOf(t),r=n.length-1;let o=es(t.textContent||"");return s===0&&(o=Wp(o)),s===r&&(o=Gp(o)),o}renderChildren(e){if(this.type!=="text"){this.renderTElementChildren(e);return}this.initializeCoordinates(),this.adjustChildCoordinatesRecursive(e),this.children.forEach((n,s)=>{this.renderChild(e,this,this,s)});const{mouse:t}=this.document.screen;t.isWorking()&&t.checkBoundingBox(this,this.getBoundingBox(e))}renderTElementChildren(e){const{document:t,parent:n}=this,s=this.getText(),r=n.getStyle("font-family").getDefinition();if(r){const{unitsPerEm:a}=r.fontFace,c=ue.parse(t.ctx.font),h=n.getStyle("font-size").getNumber(c.fontSize),d=n.getStyle("font-style").getString(c.fontStyle),u=h/a,p=r.isRTL?s.split("").reverse().join(""):s,f=ve(n.getAttribute("dx").getString()),y=p.length;for(let w=0;w<y;w++){const b=this.getGlyph(r,p,w);e.translate(this.x,this.y),e.scale(u,-u);const x=e.lineWidth;e.lineWidth=e.lineWidth*a/h,d==="italic"&&e.transform(1,0,.4,1,0,0),b.render(e),d==="italic"&&e.transform(1,0,-.4,1,0,0),e.lineWidth=x,e.scale(1/u,-1/u),e.translate(-this.x,-this.y),this.x+=h*(b.horizAdvX||r.horizAdvX)/a,typeof f[w]<"u"&&!isNaN(f[w])&&(this.x+=f[w])}return}const{x:o,y:i}=this;e.fillStyle&&e.fillText(s,o,i),e.strokeStyle&&e.strokeText(s,o,i)}applyAnchoring(){if(this.textChunkStart>=this.leafTexts.length)return;const e=this.leafTexts[this.textChunkStart],t=e.getStyle("text-anchor").getString("start"),n=!1;let s=0;t==="start"&&!n||t==="end"&&n?s=e.x-this.minX:t==="end"&&!n||t==="start"&&n?s=e.x-this.maxX:s=e.x-(this.minX+this.maxX)/2;for(let r=this.textChunkStart;r<this.leafTexts.length;r++)this.leafTexts[r].x+=s;this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY,this.textChunkStart=this.leafTexts.length}adjustChildCoordinatesRecursive(e){this.children.forEach((t,n)=>{this.adjustChildCoordinatesRecursiveCore(e,this,this,n)}),this.applyAnchoring()}adjustChildCoordinatesRecursiveCore(e,t,n,s){const r=n.children[s];r.children.length>0?r.children.forEach((o,i)=>{t.adjustChildCoordinatesRecursiveCore(e,t,r,i)}):this.adjustChildCoordinates(e,t,n,s)}adjustChildCoordinates(e,t,n,s){const r=n.children[s];if(typeof r.measureText!="function")return r;e.save(),r.setContext(e,!0);const o=r.getAttribute("x"),i=r.getAttribute("y"),a=r.getAttribute("dx"),c=r.getAttribute("dy"),h=r.getStyle("font-family").getDefinition(),d=!!(h!=null&&h.isRTL);s===0&&(o.hasValue()||o.setValue(r.getInheritedAttribute("x")),i.hasValue()||i.setValue(r.getInheritedAttribute("y")),a.hasValue()||a.setValue(r.getInheritedAttribute("dx")),c.hasValue()||c.setValue(r.getInheritedAttribute("dy")));const u=r.measureText(e);return d&&(t.x-=u),o.hasValue()?(t.applyAnchoring(),r.x=o.getPixels("x"),a.hasValue()&&(r.x+=a.getPixels("x"))):(a.hasValue()&&(t.x+=a.getPixels("x")),r.x=t.x),t.x=r.x,d||(t.x+=u),i.hasValue()?(r.y=i.getPixels("y"),c.hasValue()&&(r.y+=c.getPixels("y"))):(c.hasValue()&&(t.y+=c.getPixels("y")),r.y=t.y),t.y=r.y,t.leafTexts.push(r),t.minX=Math.min(t.minX,r.x,r.x+u),t.maxX=Math.max(t.maxX,r.x,r.x+u),r.clearContext(e),e.restore(),r}getChildBoundingBox(e,t,n,s){const r=n.children[s];if(typeof r.getBoundingBox!="function")return null;const o=r.getBoundingBox(e);return o&&r.children.forEach((i,a)=>{const c=t.getChildBoundingBox(e,t,r,a);o.addBoundingBox(c)}),o}renderChild(e,t,n,s){const r=n.children[s];r.render(e),r.children.forEach((o,i)=>{t.renderChild(e,t,r,i)})}measureText(e){const{measureCache:t}=this;if(~t)return t;const n=this.getText(),s=this.measureTargetText(e,n);return this.measureCache=s,s}measureTargetText(e,t){if(!t.length)return 0;const{parent:n}=this,s=n.getStyle("font-family").getDefinition();if(s){const o=this.getFontSize(),i=s.isRTL?t.split("").reverse().join(""):t,a=ve(n.getAttribute("dx").getString()),c=i.length;let h=0;for(let d=0;d<c;d++){const u=this.getGlyph(s,i,d);h+=(u.horizAdvX||s.horizAdvX)*o/s.fontFace.unitsPerEm,typeof a[d]<"u"&&!isNaN(a[d])&&(h+=a[d])}return h}if(!e.measureText)return t.length*10;e.save(),this.setContext(e,!0);const{width:r}=e.measureText(t);return this.clearContext(e),e.restore(),r}getInheritedAttribute(e){let t=this;for(;t instanceof pn&&t.isFirstChild()&&t.parent;){const n=t.parent.getAttribute(e);if(n.hasValue(!0))return n.getString("0");t=t.parent}return null}constructor(e,t,n){super(e,t,new.target===pn?!0:n),this.type="text",this.x=0,this.y=0,this.leafTexts=[],this.textChunkStart=0,this.minX=Number.POSITIVE_INFINITY,this.maxX=Number.NEGATIVE_INFINITY,this.measureCache=-1}}class vr extends pn{getText(){return this.text}constructor(e,t,n){super(e,t,new.target===vr?!0:n),this.type="tspan",this.text=this.children.length>0?"":this.getTextFromNode()}}class xf extends vr{constructor(...e){super(...e),this.type="textNode"}}class pt extends Y{reset(){this.i=-1,this.command=null,this.previousCommand=null,this.start=new Xt(0,0),this.control=new Xt(0,0),this.current=new Xt(0,0),this.points=[],this.angles=[]}isEnd(){const{i:e,commands:t}=this;return e>=t.length-1}next(){const e=this.commands[++this.i];return this.previousCommand=this.command,this.command=e,e}getPoint(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:"x",t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"y";const n=new Xt(this.command[e],this.command[t]);return this.makeAbsolute(n)}getAsControlPoint(e,t){const n=this.getPoint(e,t);return this.control=n,n}getAsCurrentPoint(e,t){const n=this.getPoint(e,t);return this.current=n,n}getReflectedControlPoint(){const e=this.previousCommand.type;if(e!==Y.CURVE_TO&&e!==Y.SMOOTH_CURVE_TO&&e!==Y.QUAD_TO&&e!==Y.SMOOTH_QUAD_TO)return this.current;const{current:{x:t,y:n},control:{x:s,y:r}}=this;return new Xt(2*t-s,2*n-r)}makeAbsolute(e){if(this.command.relative){const{x:t,y:n}=this.current;e.x+=t,e.y+=n}return e}addMarker(e,t,n){const{points:s,angles:r}=this;n&&r.length>0&&!r[r.length-1]&&(r[r.length-1]=s[s.length-1].angleTo(n)),this.addMarkerAngle(e,t?t.angleTo(e):null)}addMarkerAngle(e,t){this.points.push(e),this.angles.push(t)}getMarkerPoints(){return this.points}getMarkerAngles(){const{angles:e}=this,t=e.length;for(let n=0;n<t;n++)if(!e[n]){for(let s=n+1;s<t;s++)if(e[s]){e[n]=e[s];break}}return e}constructor(e){super(e.replace(/([+\-.])\s+/gm,"$1").replace(/[^MmZzLlHhVvCcSsQqTtAae\d\s.,+-].*/g,"")),this.control=new Xt(0,0),this.start=new Xt(0,0),this.current=new Xt(0,0),this.command=null,this.commands=this.commands,this.i=-1,this.previousCommand=null,this.points=[],this.angles=[]}}class At extends Hn{path(e){const{pathParser:t}=this,n=new De;for(t.reset(),e&&e.beginPath();!t.isEnd();)switch(t.next().type){case pt.MOVE_TO:this.pathM(e,n);break;case pt.LINE_TO:this.pathL(e,n);break;case pt.HORIZ_LINE_TO:this.pathH(e,n);break;case pt.VERT_LINE_TO:this.pathV(e,n);break;case pt.CURVE_TO:this.pathC(e,n);break;case pt.SMOOTH_CURVE_TO:this.pathS(e,n);break;case pt.QUAD_TO:this.pathQ(e,n);break;case pt.SMOOTH_QUAD_TO:this.pathT(e,n);break;case pt.ARC:this.pathA(e,n);break;case pt.CLOSE_PATH:this.pathZ(e,n);break}return n}getBoundingBox(e){return this.path()}getMarkers(){const{pathParser:e}=this,t=e.getMarkerPoints(),n=e.getMarkerAngles();return t.map((r,o)=>[r,n[o]])}renderChildren(e){this.path(e),this.document.screen.mouse.checkPath(this,e);const t=this.getStyle("fill-rule");e.fillStyle!==""&&(t.getString("inherit")!=="inherit"?e.fill(t.getString()):e.fill()),e.strokeStyle!==""&&(this.getAttribute("vector-effect").getString()==="non-scaling-stroke"?(e.save(),e.setTransform(1,0,0,1,0,0),e.stroke(),e.restore()):e.stroke());const n=this.getMarkers();if(n){const s=n.length-1,r=this.getStyle("marker-start"),o=this.getStyle("marker-mid"),i=this.getStyle("marker-end");if(r.isUrlDefinition()){const a=r.getDefinition(),[c,h]=n[0];a.render(e,c,h)}if(o.isUrlDefinition()){const a=o.getDefinition();for(let c=1;c<s;c++){const[h,d]=n[c];a.render(e,h,d)}}if(i.isUrlDefinition()){const a=i.getDefinition(),[c,h]=n[s];a.render(e,c,h)}}}static pathM(e){const t=e.getAsCurrentPoint();return e.start=e.current,{point:t}}pathM(e,t){const{pathParser:n}=this,{point:s}=At.pathM(n),{x:r,y:o}=s;n.addMarker(s),t.addPoint(r,o),e&&e.moveTo(r,o)}static pathL(e){const{current:t}=e,n=e.getAsCurrentPoint();return{current:t,point:n}}pathL(e,t){const{pathParser:n}=this,{current:s,point:r}=At.pathL(n),{x:o,y:i}=r;n.addMarker(r,s),t.addPoint(o,i),e&&e.lineTo(o,i)}static pathH(e){const{current:t,command:n}=e,s=new Xt((n.relative?t.x:0)+n.x,t.y);return e.current=s,{current:t,point:s}}pathH(e,t){const{pathParser:n}=this,{current:s,point:r}=At.pathH(n),{x:o,y:i}=r;n.addMarker(r,s),t.addPoint(o,i),e&&e.lineTo(o,i)}static pathV(e){const{current:t,command:n}=e,s=new Xt(t.x,(n.relative?t.y:0)+n.y);return e.current=s,{current:t,point:s}}pathV(e,t){const{pathParser:n}=this,{current:s,point:r}=At.pathV(n),{x:o,y:i}=r;n.addMarker(r,s),t.addPoint(o,i),e&&e.lineTo(o,i)}static pathC(e){const{current:t}=e,n=e.getPoint("x1","y1"),s=e.getAsControlPoint("x2","y2"),r=e.getAsCurrentPoint();return{current:t,point:n,controlPoint:s,currentPoint:r}}pathC(e,t){const{pathParser:n}=this,{current:s,point:r,controlPoint:o,currentPoint:i}=At.pathC(n);n.addMarker(i,o,r),t.addBezierCurve(s.x,s.y,r.x,r.y,o.x,o.y,i.x,i.y),e&&e.bezierCurveTo(r.x,r.y,o.x,o.y,i.x,i.y)}static pathS(e){const{current:t}=e,n=e.getReflectedControlPoint(),s=e.getAsControlPoint("x2","y2"),r=e.getAsCurrentPoint();return{current:t,point:n,controlPoint:s,currentPoint:r}}pathS(e,t){const{pathParser:n}=this,{current:s,point:r,controlPoint:o,currentPoint:i}=At.pathS(n);n.addMarker(i,o,r),t.addBezierCurve(s.x,s.y,r.x,r.y,o.x,o.y,i.x,i.y),e&&e.bezierCurveTo(r.x,r.y,o.x,o.y,i.x,i.y)}static pathQ(e){const{current:t}=e,n=e.getAsControlPoint("x1","y1"),s=e.getAsCurrentPoint();return{current:t,controlPoint:n,currentPoint:s}}pathQ(e,t){const{pathParser:n}=this,{current:s,controlPoint:r,currentPoint:o}=At.pathQ(n);n.addMarker(o,r,r),t.addQuadraticCurve(s.x,s.y,r.x,r.y,o.x,o.y),e&&e.quadraticCurveTo(r.x,r.y,o.x,o.y)}static pathT(e){const{current:t}=e,n=e.getReflectedControlPoint();e.control=n;const s=e.getAsCurrentPoint();return{current:t,controlPoint:n,currentPoint:s}}pathT(e,t){const{pathParser:n}=this,{current:s,controlPoint:r,currentPoint:o}=At.pathT(n);n.addMarker(o,r,r),t.addQuadraticCurve(s.x,s.y,r.x,r.y,o.x,o.y),e&&e.quadraticCurveTo(r.x,r.y,o.x,o.y)}static pathA(e){const{current:t,command:n}=e;let{rX:s,rY:r,xRot:o,lArcFlag:i,sweepFlag:a}=n;const c=o*(Math.PI/180),h=e.getAsCurrentPoint(),d=new Xt(Math.cos(c)*(t.x-h.x)/2+Math.sin(c)*(t.y-h.y)/2,-Math.sin(c)*(t.x-h.x)/2+Math.cos(c)*(t.y-h.y)/2),u=Math.pow(d.x,2)/Math.pow(s,2)+Math.pow(d.y,2)/Math.pow(r,2);u>1&&(s*=Math.sqrt(u),r*=Math.sqrt(u));let p=(i===a?-1:1)*Math.sqrt((Math.pow(s,2)*Math.pow(r,2)-Math.pow(s,2)*Math.pow(d.y,2)-Math.pow(r,2)*Math.pow(d.x,2))/(Math.pow(s,2)*Math.pow(d.y,2)+Math.pow(r,2)*Math.pow(d.x,2)));isNaN(p)&&(p=0);const f=new Xt(p*s*d.y/r,p*-r*d.x/s),y=new Xt((t.x+h.x)/2+Math.cos(c)*f.x-Math.sin(c)*f.y,(t.y+h.y)/2+Math.sin(c)*f.x+Math.cos(c)*f.y),w=Ic([1,0],[(d.x-f.x)/s,(d.y-f.y)/r]),b=[(d.x-f.x)/s,(d.y-f.y)/r],x=[(-d.x-f.x)/s,(-d.y-f.y)/r];let v=Ic(b,x);return ko(b,x)<=-1&&(v=Math.PI),ko(b,x)>=1&&(v=0),{currentPoint:h,rX:s,rY:r,sweepFlag:a,xAxisRotation:c,centp:y,a1:w,ad:v}}pathA(e,t){const{pathParser:n}=this,{currentPoint:s,rX:r,rY:o,sweepFlag:i,xAxisRotation:a,centp:c,a1:h,ad:d}=At.pathA(n),u=1-i?1:-1,p=h+u*(d/2),f=new Xt(c.x+r*Math.cos(p),c.y+o*Math.sin(p));if(n.addMarkerAngle(f,p-u*Math.PI/2),n.addMarkerAngle(s,p-u*Math.PI),t.addPoint(s.x,s.y),e&&!isNaN(h)&&!isNaN(d)){const y=r>o?r:o,w=r>o?1:r/o,b=r>o?o/r:1;e.translate(c.x,c.y),e.rotate(a),e.scale(w,b),e.arc(0,0,y,h,h+d,!!(1-i)),e.scale(1/w,1/b),e.rotate(-a),e.translate(-c.x,-c.y)}}static pathZ(e){e.current=e.start}pathZ(e,t){At.pathZ(this.pathParser),e&&t.x1!==t.x2&&t.y1!==t.y2&&e.closePath()}constructor(e,t,n){super(e,t,n),this.type="path",this.pathParser=new pt(this.getAttribute("d").getString())}}class ks extends Hn{setContext(e){var t;const{document:n}=this,{screen:s,window:r}=n,o=e.canvas;if(s.setDefaults(e),"style"in o&&typeof e.font<"u"&&r&&typeof r.getComputedStyle<"u"){e.font=r.getComputedStyle(o).getPropertyValue("font");const x=new rt(n,"fontSize",ue.parse(e.font).fontSize);x.hasValue()&&(n.rootEmSize=x.getPixels("y"),n.emSize=n.rootEmSize)}this.getAttribute("x").hasValue()||this.getAttribute("x",!0).setValue(0),this.getAttribute("y").hasValue()||this.getAttribute("y",!0).setValue(0);let{width:i,height:a}=s.viewPort;this.getStyle("width").hasValue()||this.getStyle("width",!0).setValue("100%"),this.getStyle("height").hasValue()||this.getStyle("height",!0).setValue("100%"),this.getStyle("color").hasValue()||this.getStyle("color",!0).setValue("black");const c=this.getAttribute("refX"),h=this.getAttribute("refY"),d=this.getAttribute("viewBox"),u=d.hasValue()?ve(d.getString()):null,p=!this.root&&this.getStyle("overflow").getValue("hidden")!=="visible";let f=0,y=0,w=0,b=0;u&&(f=u[0],y=u[1]),this.root||(i=this.getStyle("width").getPixels("x"),a=this.getStyle("height").getPixels("y"),this.type==="marker"&&(w=f,b=y,f=0,y=0)),s.viewPort.setCurrent(i,a),this.node&&(!this.parent||((t=this.node.parentNode)===null||t===void 0?void 0:t.nodeName)==="foreignObject")&&this.getStyle("transform",!1,!0).hasValue()&&!this.getStyle("transform-origin",!1,!0).hasValue()&&this.getStyle("transform-origin",!0,!0).setValue("50% 50%"),super.setContext(e),e.translate(this.getAttribute("x").getPixels("x"),this.getAttribute("y").getPixels("y")),u&&(i=u[2],a=u[3]),n.setViewBox({ctx:e,aspectRatio:this.getAttribute("preserveAspectRatio").getString(),width:s.viewPort.width,desiredWidth:i,height:s.viewPort.height,desiredHeight:a,minX:f,minY:y,refX:c.getValue(),refY:h.getValue(),clip:p,clipX:w,clipY:b}),u&&(s.viewPort.removeCurrent(),s.viewPort.setCurrent(i,a))}clearContext(e){super.clearContext(e),this.document.screen.viewPort.removeCurrent()}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;const s=this.getAttribute("width",!0),r=this.getAttribute("height",!0),o=this.getAttribute("viewBox"),i=this.getAttribute("style"),a=s.getNumber(0),c=r.getNumber(0);if(n)if(typeof n=="string")this.getAttribute("preserveAspectRatio",!0).setValue(n);else{const h=this.getAttribute("preserveAspectRatio");h.hasValue()&&h.setValue(h.getString().replace(/^\s*(\S.*\S)\s*$/,"$1"))}if(s.setValue(e),r.setValue(t),o.hasValue()||o.setValue("0 0 ".concat(a||e," ").concat(c||t)),i.hasValue()){const h=this.getStyle("width"),d=this.getStyle("height");h.hasValue()&&h.setValue("".concat(e,"px")),d.hasValue()&&d.setValue("".concat(t,"px"))}}constructor(...e){super(...e),this.type="svg",this.root=!1}}class Uc extends At{path(e){const t=this.getAttribute("x").getPixels("x"),n=this.getAttribute("y").getPixels("y"),s=this.getStyle("width",!1,!0).getPixels("x"),r=this.getStyle("height",!1,!0).getPixels("y"),o=this.getAttribute("rx"),i=this.getAttribute("ry");let a=o.getPixels("x"),c=i.getPixels("y");if(o.hasValue()&&!i.hasValue()&&(c=a),i.hasValue()&&!o.hasValue()&&(a=c),a=Math.min(a,s/2),c=Math.min(c,r/2),e){const h=4*((Math.sqrt(2)-1)/3);e.beginPath(),r>0&&s>0&&(e.moveTo(t+a,n),e.lineTo(t+s-a,n),e.bezierCurveTo(t+s-a+h*a,n,t+s,n+c-h*c,t+s,n+c),e.lineTo(t+s,n+r-c),e.bezierCurveTo(t+s,n+r-c+h*c,t+s-a+h*a,n+r,t+s-a,n+r),e.lineTo(t+a,n+r),e.bezierCurveTo(t+a-h*a,n+r,t,n+r-c+h*c,t,n+r-c),e.lineTo(t,n+c),e.bezierCurveTo(t,n+c-h*c,t+a-h*a,n,t+a,n),e.closePath())}return new De(t,n,t+s,n+r)}getMarkers(){return null}constructor(...e){super(...e),this.type="rect"}}class Pf extends At{path(e){const t=this.getAttribute("cx").getPixels("x"),n=this.getAttribute("cy").getPixels("y"),s=this.getAttribute("r").getPixels();return e&&s>0&&(e.beginPath(),e.arc(t,n,s,0,Math.PI*2,!1),e.closePath()),new De(t-s,n-s,t+s,n+s)}getMarkers(){return null}constructor(...e){super(...e),this.type="circle"}}class bf extends At{path(e){const t=4*((Math.sqrt(2)-1)/3),n=this.getAttribute("rx").getPixels("x"),s=this.getAttribute("ry").getPixels("y"),r=this.getAttribute("cx").getPixels("x"),o=this.getAttribute("cy").getPixels("y");return e&&n>0&&s>0&&(e.beginPath(),e.moveTo(r+n,o),e.bezierCurveTo(r+n,o+t*s,r+t*n,o+s,r,o+s),e.bezierCurveTo(r-t*n,o+s,r-n,o+t*s,r-n,o),e.bezierCurveTo(r-n,o-t*s,r-t*n,o-s,r,o-s),e.bezierCurveTo(r+t*n,o-s,r+n,o-t*s,r+n,o),e.closePath()),new De(r-n,o-s,r+n,o+s)}getMarkers(){return null}constructor(...e){super(...e),this.type="ellipse"}}class vf extends At{getPoints(){return[new Xt(this.getAttribute("x1").getPixels("x"),this.getAttribute("y1").getPixels("y")),new Xt(this.getAttribute("x2").getPixels("x"),this.getAttribute("y2").getPixels("y"))]}path(e){const[{x:t,y:n},{x:s,y:r}]=this.getPoints();return e&&(e.beginPath(),e.moveTo(t,n),e.lineTo(s,r)),new De(t,n,s,r)}getMarkers(){const[e,t]=this.getPoints(),n=e.angleTo(t);return[[e,n],[t,n]]}constructor(...e){super(...e),this.type="line"}}class _c extends At{path(e){const{points:t}=this,[{x:n,y:s}]=t,r=new De(n,s);return e&&(e.beginPath(),e.moveTo(n,s)),t.forEach(o=>{let{x:i,y:a}=o;r.addPoint(i,a),e&&e.lineTo(i,a)}),r}getMarkers(){const{points:e}=this,t=e.length-1,n=[];return e.forEach((s,r)=>{r!==t&&n.push([s,s.angleTo(e[r+1])])}),n.length>0&&n.push([e[e.length-1],n[n.length-1][1]]),n}constructor(e,t,n){super(e,t,n),this.type="polyline",this.points=[],this.points=Xt.parsePath(this.getAttribute("points").getString())}}class Mf extends _c{path(e){const t=super.path(e),[{x:n,y:s}]=this.points;return e&&(e.lineTo(n,s),e.closePath()),t}constructor(...e){super(...e),this.type="polygon"}}class Sf extends kt{createPattern(e,t,n){const s=this.getStyle("width").getPixels("x",!0),r=this.getStyle("height").getPixels("y",!0),o=new ks(this.document,null);o.attributes.set("viewBox",new rt(this.document,"viewBox",this.getAttribute("viewBox").getValue())),o.attributes.set("width",new rt(this.document,"width","".concat(s,"px"))),o.attributes.set("height",new rt(this.document,"height","".concat(r,"px"))),o.attributes.set("transform",new rt(this.document,"transform",this.getAttribute("patternTransform").getValue())),o.children=this.children;const i=this.document.createCanvas(s,r),a=i.getContext("2d"),c=this.getAttribute("x"),h=this.getAttribute("y");c.hasValue()&&h.hasValue()&&a.translate(c.getPixels("x",!0),h.getPixels("y",!0)),n.hasValue()?this.styles.set("fill-opacity",n):this.styles.delete("fill-opacity");for(let u=-1;u<=1;u++)for(let p=-1;p<=1;p++)a.save(),o.attributes.set("x",new rt(this.document,"x",u*i.width)),o.attributes.set("y",new rt(this.document,"y",p*i.height)),o.render(a),a.restore();return e.createPattern(i,"repeat")}constructor(...e){super(...e),this.type="pattern"}}class Tf extends kt{render(e,t,n){if(!t)return;const{x:s,y:r}=t,o=this.getAttribute("orient").getString("auto"),i=this.getAttribute("markerUnits").getString("strokeWidth");e.translate(s,r),o==="auto"&&e.rotate(n),i==="strokeWidth"&&e.scale(e.lineWidth,e.lineWidth),e.save();const a=new ks(this.document);a.type=this.type,a.attributes.set("viewBox",new rt(this.document,"viewBox",this.getAttribute("viewBox").getValue())),a.attributes.set("refX",new rt(this.document,"refX",this.getAttribute("refX").getValue())),a.attributes.set("refY",new rt(this.document,"refY",this.getAttribute("refY").getValue())),a.attributes.set("width",new rt(this.document,"width",this.getAttribute("markerWidth").getValue())),a.attributes.set("height",new rt(this.document,"height",this.getAttribute("markerHeight").getValue())),a.attributes.set("overflow",new rt(this.document,"overflow",this.getAttribute("overflow").getValue())),a.attributes.set("fill",new rt(this.document,"fill",this.getAttribute("fill").getColor("black"))),a.attributes.set("stroke",new rt(this.document,"stroke",this.getAttribute("stroke").getValue("none"))),a.children=this.children,a.render(e),e.restore(),i==="strokeWidth"&&e.scale(1/e.lineWidth,1/e.lineWidth),o==="auto"&&e.rotate(-n),e.translate(-s,-r)}constructor(...e){super(...e),this.type="marker"}}class Cf extends kt{render(){}constructor(...e){super(...e),this.type="defs"}}class Oo extends Hn{getBoundingBox(e){const t=new De;return this.children.forEach(n=>{t.addBoundingBox(n.getBoundingBox(e))}),t}constructor(...e){super(...e),this.type="g"}}class Kc extends kt{getGradientUnits(){return this.getAttribute("gradientUnits").getString("objectBoundingBox")}createGradient(e,t,n){let s=this;this.getHrefAttribute().hasValue()&&(s=this.getHrefAttribute().getDefinition(),this.inheritStopContainer(s));const{stops:r}=s,o=this.getGradient(e,t);if(!o)return this.addParentOpacity(n,r[r.length-1].color);if(r.forEach(i=>{o.addColorStop(i.offset,this.addParentOpacity(n,i.color))}),this.getAttribute("gradientTransform").hasValue()){const{document:i}=this,{MAX_VIRTUAL_PIXELS:a}=Ze,{viewPort:c}=i.screen,h=c.getRoot(),d=new Uc(i);d.attributes.set("x",new rt(i,"x",-a/3)),d.attributes.set("y",new rt(i,"y",-a/3)),d.attributes.set("width",new rt(i,"width",a)),d.attributes.set("height",new rt(i,"height",a));const u=new Oo(i);u.attributes.set("transform",new rt(i,"transform",this.getAttribute("gradientTransform").getValue())),u.children=[d];const p=new ks(i);p.attributes.set("x",new rt(i,"x",0)),p.attributes.set("y",new rt(i,"y",0)),p.attributes.set("width",new rt(i,"width",h.width)),p.attributes.set("height",new rt(i,"height",h.height)),p.children=[u];const f=i.createCanvas(h.width,h.height),y=f.getContext("2d");return y.fillStyle=o,p.render(y),y.createPattern(f,"no-repeat")}return o}inheritStopContainer(e){this.attributesToInherit.forEach(t=>{!this.getAttribute(t).hasValue()&&e.getAttribute(t).hasValue()&&this.getAttribute(t,!0).setValue(e.getAttribute(t).getValue())})}addParentOpacity(e,t){return e.hasValue()?new rt(this.document,"color",t).addOpacity(e).getColor():t}constructor(e,t,n){super(e,t,n),this.attributesToInherit=["gradientUnits"],this.stops=[];const{stops:s,children:r}=this;r.forEach(o=>{o.type==="stop"&&s.push(o)})}}class Lf extends Kc{getGradient(e,t){const n=this.getGradientUnits()==="objectBoundingBox",s=n?t.getBoundingBox(e):null;if(n&&!s)return null;!this.getAttribute("x1").hasValue()&&!this.getAttribute("y1").hasValue()&&!this.getAttribute("x2").hasValue()&&!this.getAttribute("y2").hasValue()&&(this.getAttribute("x1",!0).setValue(0),this.getAttribute("y1",!0).setValue(0),this.getAttribute("x2",!0).setValue(1),this.getAttribute("y2",!0).setValue(0));const r=n?s.x+s.width*this.getAttribute("x1").getNumber():this.getAttribute("x1").getPixels("x"),o=n?s.y+s.height*this.getAttribute("y1").getNumber():this.getAttribute("y1").getPixels("y"),i=n?s.x+s.width*this.getAttribute("x2").getNumber():this.getAttribute("x2").getPixels("x"),a=n?s.y+s.height*this.getAttribute("y2").getNumber():this.getAttribute("y2").getPixels("y");return r===i&&o===a?null:e.createLinearGradient(r,o,i,a)}constructor(e,t,n){super(e,t,n),this.type="linearGradient",this.attributesToInherit.push("x1","y1","x2","y2")}}class Af extends Kc{getGradient(e,t){const n=this.getGradientUnits()==="objectBoundingBox",s=t.getBoundingBox(e);if(n&&!s)return null;this.getAttribute("cx").hasValue()||this.getAttribute("cx",!0).setValue("50%"),this.getAttribute("cy").hasValue()||this.getAttribute("cy",!0).setValue("50%"),this.getAttribute("r").hasValue()||this.getAttribute("r",!0).setValue("50%");const r=n?s.x+s.width*this.getAttribute("cx").getNumber():this.getAttribute("cx").getPixels("x"),o=n?s.y+s.height*this.getAttribute("cy").getNumber():this.getAttribute("cy").getPixels("y");let i=r,a=o;this.getAttribute("fx").hasValue()&&(i=n?s.x+s.width*this.getAttribute("fx").getNumber():this.getAttribute("fx").getPixels("x")),this.getAttribute("fy").hasValue()&&(a=n?s.y+s.height*this.getAttribute("fy").getNumber():this.getAttribute("fy").getPixels("y"));const c=n?(s.width+s.height)/2*this.getAttribute("r").getNumber():this.getAttribute("r").getPixels(),h=this.getAttribute("fr").getPixels();return e.createRadialGradient(i,a,h,r,o,c)}constructor(e,t,n){super(e,t,n),this.type="radialGradient",this.attributesToInherit.push("cx","cy","r","fx","fy","fr")}}class Rf extends kt{constructor(e,t,n){super(e,t,n),this.type="stop";const s=Math.max(0,Math.min(1,this.getAttribute("offset").getNumber())),r=this.getStyle("stop-opacity");let o=this.getStyle("stop-color",!0);o.getString()===""&&o.setValue("#000"),r.hasValue()&&(o=o.addOpacity(r)),this.offset=s,this.color=o.getColor()}}class Do extends kt{getProperty(){const e=this.getAttribute("attributeType").getString(),t=this.getAttribute("attributeName").getString();return e==="CSS"?this.parent.getStyle(t,!0):this.parent.getAttribute(t,!0)}calcValue(){const{initialUnits:e}=this,{progress:t,from:n,to:s}=this.getProgress();let r=n.getNumber()+(s.getNumber()-n.getNumber())*t;return e==="%"&&(r*=100),"".concat(r).concat(e)}update(e){const{parent:t}=this,n=this.getProperty();if(this.initialValue||(this.initialValue=n.getString(),this.initialUnits=n.getUnits()),this.duration>this.maxDuration){const r=this.getAttribute("fill").getString("remove");if(this.getAttribute("repeatCount").getString()==="indefinite"||this.getAttribute("repeatDur").getString()==="indefinite")this.duration=0;else if(r==="freeze"&&!this.frozen)this.frozen=!0,t&&n&&(t.animationFrozen=!0,t.animationFrozenValue=n.getString());else if(r==="remove"&&!this.removed)return this.removed=!0,t&&n&&n.setValue(t.animationFrozen?t.animationFrozenValue:this.initialValue),!0;return!1}this.duration+=e;let s=!1;if(this.begin<this.duration){let r=this.calcValue();const o=this.getAttribute("type");if(o.hasValue()){const i=o.getString();r="".concat(i,"(").concat(r,")")}n.setValue(r),s=!0}return s}getProgress(){const{document:e,values:t}=this;let n=(this.duration-this.begin)/(this.maxDuration-this.begin),s,r;if(t.hasValue()){const o=n*(t.getValue().length-1),i=Math.floor(o),a=Math.ceil(o);let c;c=t.getValue()[i],s=new rt(e,"from",c?parseFloat(c):0),c=t.getValue()[a],r=new rt(e,"to",c?parseFloat(c):0),n=(o-i)/(a-i)}else s=this.from,r=this.to;return{progress:n,from:s,to:r}}constructor(e,t,n){super(e,t,n),this.type="animate",this.duration=0,this.initialUnits="",this.removed=!1,this.frozen=!1,e.screen.animations.push(this),this.begin=this.getAttribute("begin").getMilliseconds(),this.maxDuration=this.begin+this.getAttribute("dur").getMilliseconds(),this.from=this.getAttribute("from"),this.to=this.getAttribute("to"),this.values=new rt(e,"values",null);const s=this.getAttribute("values");s.hasValue()&&this.values.setValue(s.getString().split(";"))}}class Nf extends Do{calcValue(){const{progress:e,from:t,to:n}=this.getProgress(),s=new No(t.getColor()),r=new No(n.getColor());if(s.ok&&r.ok){const o=s.r+(r.r-s.r)*e,i=s.g+(r.g-s.g)*e,a=s.b+(r.b-s.b)*e;return"rgb(".concat(Math.floor(o),", ").concat(Math.floor(i),", ").concat(Math.floor(a),")")}return this.getAttribute("from").getColor()}constructor(...e){super(...e),this.type="animateColor"}}class Ef extends Do{calcValue(){const{progress:e,from:t,to:n}=this.getProgress(),s=ve(t.getString()),r=ve(n.getString());return s.map((i,a)=>{const c=r[a];return i+(c-i)*e}).join(" ")}constructor(...e){super(...e),this.type="animateTransform"}}class jc extends kt{constructor(e,t,n){super(e,t,n),this.type="font-face",this.ascent=this.getAttribute("ascent").getNumber(),this.descent=this.getAttribute("descent").getNumber(),this.unitsPerEm=this.getAttribute("units-per-em").getNumber()}}class Ho extends At{constructor(e,t,n){super(e,t,n),this.type="glyph",this.horizAdvX=this.getAttribute("horiz-adv-x").getNumber(),this.unicode=this.getAttribute("unicode").getString(),this.arabicForm=this.getAttribute("arabic-form").getString()}}class qc extends Ho{constructor(...e){super(...e),this.type="missing-glyph",this.horizAdvX=0}}class If extends kt{render(){}constructor(e,t,n){super(e,t,n),this.type="font",this.isArabic=!1,this.glyphs=new Map,this.arabicGlyphs=new Map,this.isRTL=!1,this.horizAdvX=this.getAttribute("horiz-adv-x").getNumber();const{definitions:s}=e,{children:r}=this;for(const o of r)if(o instanceof jc){this.fontFace=o;const i=o.getStyle("font-family");i.hasValue()&&s.set(i.getString(),this)}else if(o instanceof qc)this.missingGlyph=o;else if(o instanceof Ho)if(o.arabicForm){this.isRTL=!0,this.isArabic=!0;let i=this.arabicGlyphs.get(o.unicode);typeof i>"u"&&(i=new Map,this.arabicGlyphs.set(o.unicode,i)),i.set(o.arabicForm,o)}else this.glyphs.set(o.unicode,o)}}class kf extends pn{getText(){const e=this.getHrefAttribute().getDefinition();if(e){const t=e.children[0];if(t)return t.getText()}return""}constructor(...e){super(...e),this.type="tref"}}class Bf extends pn{getText(){return this.text}renderChildren(e){if(this.hasText){super.renderChildren(e);const{document:t,x:n,y:s}=this,{mouse:r}=t.screen,o=new rt(t,"fontSize",ue.parse(t.ctx.font).fontSize);r.isWorking()&&r.checkBoundingBox(this,new De(n,s-o.getPixels("y"),n+this.measureText(e),s))}else if(this.children.length>0){const t=new Oo(this.document);t.children=this.children,t.parent=this,t.render(e)}}onClick(){const{window:e}=this.document;e&&e.open(this.getHrefAttribute().getString())}onMouseMove(){const e=this.document.ctx;e.canvas.style.cursor="pointer"}constructor(e,t,n){super(e,t,n),this.type="a";const{childNodes:s}=t,r=s[0],o=s.length>0&&Array.from(s).every(i=>i.nodeType===3);this.hasText=o,this.text=o?this.getTextFromNode(r):""}}class Of extends pn{getText(){return this.text}path(e){const{dataArray:t}=this;e&&e.beginPath(),t.forEach(n=>{let{type:s,points:r}=n;switch(s){case pt.LINE_TO:e&&e.lineTo(r[0],r[1]);break;case pt.MOVE_TO:e&&e.moveTo(r[0],r[1]);break;case pt.CURVE_TO:e&&e.bezierCurveTo(r[0],r[1],r[2],r[3],r[4],r[5]);break;case pt.QUAD_TO:e&&e.quadraticCurveTo(r[0],r[1],r[2],r[3]);break;case pt.ARC:{const[o,i,a,c,h,d,u,p]=r,f=a>c?a:c,y=a>c?1:a/c,w=a>c?c/a:1;e&&(e.translate(o,i),e.rotate(u),e.scale(y,w),e.arc(0,0,f,h,h+d,!!(1-p)),e.scale(1/y,1/w),e.rotate(-u),e.translate(-o,-i));break}case pt.CLOSE_PATH:e&&e.closePath();break}})}renderChildren(e){this.setTextData(e),e.save();const t=this.parent.getStyle("text-decoration").getString(),n=this.getFontSize(),{glyphInfo:s}=this,r=e.fillStyle;t==="underline"&&e.beginPath(),s.forEach((o,i)=>{const{p0:a,p1:c,rotation:h,text:d}=o;e.save(),e.translate(a.x,a.y),e.rotate(h),e.fillStyle&&e.fillText(d,0,0),e.strokeStyle&&e.strokeText(d,0,0),e.restore(),t==="underline"&&(i===0&&e.moveTo(a.x,a.y+n/8),e.lineTo(c.x,c.y+n/5))}),t==="underline"&&(e.lineWidth=n/20,e.strokeStyle=r,e.stroke(),e.closePath()),e.restore()}getLetterSpacingAt(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0;return this.letterSpacingCache[e]||0}findSegmentToFitChar(e,t,n,s,r,o,i,a,c){let h=o,d=this.measureText(e,a);a===" "&&t==="justify"&&n<s&&(d+=(s-n)/r),c>-1&&(h+=this.getLetterSpacingAt(c));const u=this.textHeight/20,p=this.getEquidistantPointOnPath(h,u,0),f=this.getEquidistantPointOnPath(h+d,u,0),y={p0:p,p1:f},w=p&&f?Math.atan2(f.y-p.y,f.x-p.x):0;if(i){const b=Math.cos(Math.PI/2+w)*i,x=Math.cos(-w)*i;y.p0={...p,x:p.x+b,y:p.y+x},y.p1={...f,x:f.x+b,y:f.y+x}}return h+=d,{offset:h,segment:y,rotation:w}}measureText(e,t){const{measuresCache:n}=this,s=t||this.getText();if(n.has(s))return n.get(s);const r=this.measureTargetText(e,s);return n.set(s,r),r}setTextData(e){if(this.glyphInfo)return;const t=this.getText(),n=t.split(""),s=t.split(" ").length-1,r=this.parent.getAttribute("dx").split().map(v=>v.getPixels("x")),o=this.parent.getAttribute("dy").getPixels("y"),i=this.parent.getStyle("text-anchor").getString("start"),a=this.getStyle("letter-spacing"),c=this.parent.getStyle("letter-spacing");let h=0;!a.hasValue()||a.getValue()==="inherit"?h=c.getPixels():a.hasValue()&&a.getValue()!=="initial"&&a.getValue()!=="unset"&&(h=a.getPixels());const d=[],u=t.length;this.letterSpacingCache=d;for(let v=0;v<u;v++)d.push(typeof r[v]<"u"?r[v]:h);const p=d.reduce((v,C,E)=>E===0?0:v+C||0,0),f=this.measureText(e),y=Math.max(f+p,0);this.textWidth=f,this.textHeight=this.getFontSize(),this.glyphInfo=[];const w=this.getPathLength(),b=this.getStyle("startOffset").getNumber(0)*w;let x=0;(i==="middle"||i==="center")&&(x=-y/2),(i==="end"||i==="right")&&(x=-y),x+=b,n.forEach((v,C)=>{const{offset:E,segment:k,rotation:I}=this.findSegmentToFitChar(e,i,y,w,s,x,o,v,C);x=E,!(!k.p0||!k.p1)&&this.glyphInfo.push({text:n[C],p0:k.p0,p1:k.p1,rotation:I})})}parsePathData(e){if(this.pathLength=-1,!e)return[];const t=[],{pathParser:n}=e;for(n.reset();!n.isEnd();){const{current:s}=n,r=s?s.x:0,o=s?s.y:0,i=n.next();let a=i.type,c=[];switch(i.type){case pt.MOVE_TO:this.pathM(n,c);break;case pt.LINE_TO:a=this.pathL(n,c);break;case pt.HORIZ_LINE_TO:a=this.pathH(n,c);break;case pt.VERT_LINE_TO:a=this.pathV(n,c);break;case pt.CURVE_TO:this.pathC(n,c);break;case pt.SMOOTH_CURVE_TO:a=this.pathS(n,c);break;case pt.QUAD_TO:this.pathQ(n,c);break;case pt.SMOOTH_QUAD_TO:a=this.pathT(n,c);break;case pt.ARC:c=this.pathA(n);break;case pt.CLOSE_PATH:At.pathZ(n);break}i.type!==pt.CLOSE_PATH?t.push({type:a,points:c,start:{x:r,y:o},pathLength:this.calcLength(r,o,a,c)}):t.push({type:pt.CLOSE_PATH,points:[],pathLength:0})}return t}pathM(e,t){const{x:n,y:s}=At.pathM(e).point;t.push(n,s)}pathL(e,t){const{x:n,y:s}=At.pathL(e).point;return t.push(n,s),pt.LINE_TO}pathH(e,t){const{x:n,y:s}=At.pathH(e).point;return t.push(n,s),pt.LINE_TO}pathV(e,t){const{x:n,y:s}=At.pathV(e).point;return t.push(n,s),pt.LINE_TO}pathC(e,t){const{point:n,controlPoint:s,currentPoint:r}=At.pathC(e);t.push(n.x,n.y,s.x,s.y,r.x,r.y)}pathS(e,t){const{point:n,controlPoint:s,currentPoint:r}=At.pathS(e);return t.push(n.x,n.y,s.x,s.y,r.x,r.y),pt.CURVE_TO}pathQ(e,t){const{controlPoint:n,currentPoint:s}=At.pathQ(e);t.push(n.x,n.y,s.x,s.y)}pathT(e,t){const{controlPoint:n,currentPoint:s}=At.pathT(e);return t.push(n.x,n.y,s.x,s.y),pt.QUAD_TO}pathA(e){let{rX:t,rY:n,sweepFlag:s,xAxisRotation:r,centp:o,a1:i,ad:a}=At.pathA(e);return s===0&&a>0&&(a-=2*Math.PI),s===1&&a<0&&(a+=2*Math.PI),[o.x,o.y,t,n,i,a,r,s]}calcLength(e,t,n,s){let r=0,o=null,i=null,a=0;switch(n){case pt.LINE_TO:return this.getLineLength(e,t,s[0],s[1]);case pt.CURVE_TO:for(r=0,o=this.getPointOnCubicBezier(0,e,t,s[0],s[1],s[2],s[3],s[4],s[5]),a=.01;a<=1;a+=.01)i=this.getPointOnCubicBezier(a,e,t,s[0],s[1],s[2],s[3],s[4],s[5]),r+=this.getLineLength(o.x,o.y,i.x,i.y),o=i;return r;case pt.QUAD_TO:for(r=0,o=this.getPointOnQuadraticBezier(0,e,t,s[0],s[1],s[2],s[3]),a=.01;a<=1;a+=.01)i=this.getPointOnQuadraticBezier(a,e,t,s[0],s[1],s[2],s[3]),r+=this.getLineLength(o.x,o.y,i.x,i.y),o=i;return r;case pt.ARC:{r=0;const c=s[4],h=s[5],d=s[4]+h;let u=Math.PI/180;if(Math.abs(c-d)<u&&(u=Math.abs(c-d)),o=this.getPointOnEllipticalArc(s[0],s[1],s[2],s[3],c,0),h<0)for(a=c-u;a>d;a-=u)i=this.getPointOnEllipticalArc(s[0],s[1],s[2],s[3],a,0),r+=this.getLineLength(o.x,o.y,i.x,i.y),o=i;else for(a=c+u;a<d;a+=u)i=this.getPointOnEllipticalArc(s[0],s[1],s[2],s[3],a,0),r+=this.getLineLength(o.x,o.y,i.x,i.y),o=i;return i=this.getPointOnEllipticalArc(s[0],s[1],s[2],s[3],d,0),r+=this.getLineLength(o.x,o.y,i.x,i.y),r}}return 0}getPointOnLine(e,t,n,s,r){let o=arguments.length>5&&arguments[5]!==void 0?arguments[5]:t,i=arguments.length>6&&arguments[6]!==void 0?arguments[6]:n;const a=(r-n)/(s-t+ns);let c=Math.sqrt(e*e/(1+a*a));s<t&&(c*=-1);let h=a*c,d=null;if(s===t)d={x:o,y:i+h};else if((i-n)/(o-t+ns)===a)d={x:o+c,y:i+h};else{let u=0,p=0;const f=this.getLineLength(t,n,s,r);if(f<ns)return null;let y=(o-t)*(s-t)+(i-n)*(r-n);y/=f*f,u=t+y*(s-t),p=n+y*(r-n);const w=this.getLineLength(o,i,u,p),b=Math.sqrt(e*e-w*w);c=Math.sqrt(b*b/(1+a*a)),s<t&&(c*=-1),h=a*c,d={x:u+c,y:p+h}}return d}getPointOnPath(e){const t=this.getPathLength();let n=0,s=null;if(e<-5e-5||e-5e-5>t)return null;const{dataArray:r}=this;for(const o of r){if(o&&(o.pathLength<5e-5||n+o.pathLength+5e-5<e)){n+=o.pathLength;continue}const i=e-n;let a=0;switch(o.type){case pt.LINE_TO:s=this.getPointOnLine(i,o.start.x,o.start.y,o.points[0],o.points[1],o.start.x,o.start.y);break;case pt.ARC:{const c=o.points[4],h=o.points[5],d=o.points[4]+h;if(a=c+i/o.pathLength*h,h<0&&a<d||h>=0&&a>d)break;s=this.getPointOnEllipticalArc(o.points[0],o.points[1],o.points[2],o.points[3],a,o.points[6]);break}case pt.CURVE_TO:a=i/o.pathLength,a>1&&(a=1),s=this.getPointOnCubicBezier(a,o.start.x,o.start.y,o.points[0],o.points[1],o.points[2],o.points[3],o.points[4],o.points[5]);break;case pt.QUAD_TO:a=i/o.pathLength,a>1&&(a=1),s=this.getPointOnQuadraticBezier(a,o.start.x,o.start.y,o.points[0],o.points[1],o.points[2],o.points[3]);break}if(s)return s;break}return null}getLineLength(e,t,n,s){return Math.sqrt((n-e)*(n-e)+(s-t)*(s-t))}getPathLength(){return this.pathLength===-1&&(this.pathLength=this.dataArray.reduce((e,t)=>t.pathLength>0?e+t.pathLength:e,0)),this.pathLength}getPointOnCubicBezier(e,t,n,s,r,o,i,a,c){const h=a*kc(e)+o*Bc(e)+s*Oc(e)+t*Dc(e),d=c*kc(e)+i*Bc(e)+r*Oc(e)+n*Dc(e);return{x:h,y:d}}getPointOnQuadraticBezier(e,t,n,s,r,o,i){const a=o*Hc(e)+s*zc(e)+t*Xc(e),c=i*Hc(e)+r*zc(e)+n*Xc(e);return{x:a,y:c}}getPointOnEllipticalArc(e,t,n,s,r,o){const i=Math.cos(o),a=Math.sin(o),c={x:n*Math.cos(r),y:s*Math.sin(r)};return{x:e+(c.x*i-c.y*a),y:t+(c.x*a+c.y*i)}}buildEquidistantCache(e,t){const n=this.getPathLength(),s=t||.25,r=e||n/100;if(!this.equidistantCache||this.equidistantCache.step!==r||this.equidistantCache.precision!==s){this.equidistantCache={step:r,precision:s,points:[]};let o=0;for(let i=0;i<=n;i+=s){const a=this.getPointOnPath(i),c=this.getPointOnPath(i+s);!a||!c||(o+=this.getLineLength(a.x,a.y,c.x,c.y),o>=r&&(this.equidistantCache.points.push({x:a.x,y:a.y,distance:i}),o-=r))}}}getEquidistantPointOnPath(e,t,n){if(this.buildEquidistantCache(t,n),e<0||e-this.getPathLength()>5e-5)return null;const s=Math.round(e/this.getPathLength()*(this.equidistantCache.points.length-1));return this.equidistantCache.points[s]||null}constructor(e,t,n){super(e,t,n),this.type="textPath",this.textWidth=0,this.textHeight=0,this.pathLength=-1,this.glyphInfo=null,this.letterSpacingCache=[],this.measuresCache=new Map([["",0]]);const s=this.getHrefAttribute().getDefinition();this.text=this.getTextFromNode(),this.dataArray=this.parsePathData(s)}}const Df=/^\s*data:(([^/,;]+\/[^/,;]+)(?:;([^,;=]+=[^,;=]+))?)?(?:;(base64))?,(.*)$/i;class Hf extends Hn{async loadImage(e){try{const t=await this.document.createImage(e);this.image=t}catch(t){console.error('Error while loading image "'.concat(e,'":'),t)}this.loaded=!0}async loadSvg(e){const t=Df.exec(e);if(t){const n=t[5];n&&(t[4]==="base64"?this.image=atob(n):this.image=decodeURIComponent(n))}else try{const s=await(await this.document.fetch(e)).text();this.image=s}catch(n){console.error('Error while loading image "'.concat(e,'":'),n)}this.loaded=!0}renderChildren(e){const{document:t,image:n,loaded:s}=this,r=this.getAttribute("x").getPixels("x"),o=this.getAttribute("y").getPixels("y"),i=this.getStyle("width").getPixels("x"),a=this.getStyle("height").getPixels("y");if(!(!s||!n||!i||!a)){if(e.save(),e.translate(r,o),typeof n=="string"){const c=t.canvg.forkString(e,n,{ignoreMouse:!0,ignoreAnimation:!0,ignoreDimensions:!0,ignoreClear:!0,offsetX:0,offsetY:0,scaleWidth:i,scaleHeight:a}),{documentElement:h}=c.document;h&&(h.parent=this),c.render()}else t.setViewBox({ctx:e,aspectRatio:this.getAttribute("preserveAspectRatio").getString(),width:i,desiredWidth:n.width,height:a,desiredHeight:n.height}),this.loaded&&(!("complete"in n)||n.complete)&&e.drawImage(n,0,0);e.restore()}}getBoundingBox(){const e=this.getAttribute("x").getPixels("x"),t=this.getAttribute("y").getPixels("y"),n=this.getStyle("width").getPixels("x"),s=this.getStyle("height").getPixels("y");return new De(e,t,e+n,t+s)}constructor(e,t,n){super(e,t,n),this.type="image",this.loaded=!1;const s=this.getHrefAttribute().getString();if(!s)return;const r=s.endsWith(".svg")||/^\s*data:image\/svg\+xml/i.test(s);e.images.push(this),r?this.loadSvg(s):this.loadImage(s)}}class zf extends Hn{render(e){}constructor(...e){super(...e),this.type="symbol"}}class Xf{async load(e,t){try{const{document:n}=this,r=(await n.canvg.parser.load(t)).getElementsByTagName("font");Array.from(r).forEach(o=>{const i=n.createElement(o);n.definitions.set(e,i)})}catch(n){console.error('Error while loading font "'.concat(t,'":'),n)}this.loaded=!0}constructor(e){this.document=e,this.loaded=!1,e.fonts.push(this)}}class $c extends kt{constructor(e,t,n){super(e,t,n),this.type="style",es(Array.from(t.childNodes).map(o=>o.textContent).join("").replace(/(\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+\/)|(^[\s]*\/\/.*)/gm,"").replace(/@import.*;/g,"")).split("}").forEach(o=>{const i=o.trim();if(!i)return;const a=i.split("{"),c=a[0].split(","),h=a[1].split(";");c.forEach(d=>{const u=d.trim();if(!u)return;const p=e.styles.get(u)||new Map;if(h.forEach(f=>{const y=f.indexOf(":"),w=f.substr(0,y).trim(),b=f.substr(y+1,f.length-y).trim();w&&b&&p.set(w,new rt(e,w,b))}),e.styles.set(u,p),e.stylesSpecificity.set(u,nf(u)),u==="@font-face"){const f=p.get("font-family").getString().replace(/"|'/g,"");p.get("src").getString().split(",").forEach(w=>{if(w.indexOf('format("svg")')>0){const b=Nc(w);b&&new Xf(e).load(f,b)}})}})})}}$c.parseExternalUrl=Nc;class Yf extends Hn{setContext(e){super.setContext(e);const t=this.getAttribute("x"),n=this.getAttribute("y");t.hasValue()&&e.translate(t.getPixels("x"),0),n.hasValue()&&e.translate(0,n.getPixels("y"))}path(e){const{element:t}=this;t&&t.path(e)}renderChildren(e){const{document:t,element:n}=this;if(n){let s=n;if(n.type==="symbol"&&(s=new ks(t),s.attributes.set("viewBox",new rt(t,"viewBox",n.getAttribute("viewBox").getString())),s.attributes.set("preserveAspectRatio",new rt(t,"preserveAspectRatio",n.getAttribute("preserveAspectRatio").getString())),s.attributes.set("overflow",new rt(t,"overflow",n.getAttribute("overflow").getString())),s.children=n.children,n.styles.set("opacity",new rt(t,"opacity",this.calculateOpacity()))),s.type==="svg"){const o=this.getStyle("width",!1,!0),i=this.getStyle("height",!1,!0);o.hasValue()&&s.attributes.set("width",new rt(t,"width",o.getString())),i.hasValue()&&s.attributes.set("height",new rt(t,"height",i.getString()))}const r=s.parent;s.parent=this,s.render(e),s.parent=r}}getBoundingBox(e){const{element:t}=this;return t?t.getBoundingBox(e):null}elementTransform(){const{document:e,element:t}=this;return t?Dn.fromElement(e,t):null}get element(){return this.cachedElement||(this.cachedElement=this.getHrefAttribute().getDefinition()),this.cachedElement}constructor(...e){super(...e),this.type="use"}}function Mr(l,e,t,n,s,r){return l[t*n*4+e*4+r]}function Sr(l,e,t,n,s,r,o){l[t*n*4+e*4+r]=o}function Ut(l,e,t){return l[e]*t}function Je(l,e,t,n){return e+Math.cos(l)*t+Math.sin(l)*n}class Qc extends kt{apply(e,t,n,s,r){const{includeOpacity:o,matrix:i}=this,a=e.getImageData(0,0,s,r);for(let c=0;c<r;c++)for(let h=0;h<s;h++){const d=Mr(a.data,h,c,s,r,0),u=Mr(a.data,h,c,s,r,1),p=Mr(a.data,h,c,s,r,2),f=Mr(a.data,h,c,s,r,3);let y=Ut(i,0,d)+Ut(i,1,u)+Ut(i,2,p)+Ut(i,3,f)+Ut(i,4,1),w=Ut(i,5,d)+Ut(i,6,u)+Ut(i,7,p)+Ut(i,8,f)+Ut(i,9,1),b=Ut(i,10,d)+Ut(i,11,u)+Ut(i,12,p)+Ut(i,13,f)+Ut(i,14,1),x=Ut(i,15,d)+Ut(i,16,u)+Ut(i,17,p)+Ut(i,18,f)+Ut(i,19,1);o&&(y=0,w=0,b=0,x*=f/255),Sr(a.data,h,c,s,r,0,y),Sr(a.data,h,c,s,r,1,w),Sr(a.data,h,c,s,r,2,b),Sr(a.data,h,c,s,r,3,x)}e.clearRect(0,0,s,r),e.putImageData(a,0,0)}constructor(e,t,n){super(e,t,n),this.type="feColorMatrix";let s=ve(this.getAttribute("values").getString());switch(this.getAttribute("type").getString("matrix")){case"saturate":{const r=s[0];s=[.213+.787*r,.715-.715*r,.072-.072*r,0,0,.213-.213*r,.715+.285*r,.072-.072*r,0,0,.213-.213*r,.715-.715*r,.072+.928*r,0,0,0,0,0,1,0,0,0,0,0,1];break}case"hueRotate":{const r=s[0]*Math.PI/180;s=[Je(r,.213,.787,-.213),Je(r,.715,-.715,-.715),Je(r,.072,-.072,.928),0,0,Je(r,.213,-.213,.143),Je(r,.715,.285,.14),Je(r,.072,-.072,-.283),0,0,Je(r,.213,-.213,-.787),Je(r,.715,-.715,.715),Je(r,.072,.928,.072),0,0,0,0,0,1,0,0,0,0,0,1];break}case"luminanceToAlpha":s=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,.2125,.7154,.0721,0,0,0,0,0,0,1];break}this.matrix=s,this.includeOpacity=this.getAttribute("includeOpacity").hasValue()}}class Tr extends kt{apply(e,t){const{document:n}=this;let s=this.getAttribute("x").getPixels("x"),r=this.getAttribute("y").getPixels("y"),o=this.getStyle("width").getPixels("x"),i=this.getStyle("height").getPixels("y");if(!o&&!i){const p=new De;this.children.forEach(f=>{p.addBoundingBox(f.getBoundingBox(e))}),s=Math.floor(p.x1),r=Math.floor(p.y1),o=Math.floor(p.width),i=Math.floor(p.height)}const a=this.removeStyles(t,Tr.ignoreStyles),c=n.createCanvas(s+o,r+i),h=c.getContext("2d");n.screen.setDefaults(h),this.renderChildren(h),new Qc(n,{nodeType:1,childNodes:[],attributes:[{nodeName:"type",value:"luminanceToAlpha"},{nodeName:"includeOpacity",value:"true"}]}).apply(h,0,0,s+o,r+i);const d=n.createCanvas(s+o,r+i),u=d.getContext("2d");n.screen.setDefaults(u),t.render(u),u.globalCompositeOperation="destination-in",u.fillStyle=h.createPattern(c,"no-repeat"),u.fillRect(0,0,s+o,r+i),e.fillStyle=u.createPattern(d,"no-repeat"),e.fillRect(0,0,s+o,r+i),this.restoreStyles(t,a)}render(e){}constructor(...e){super(...e),this.type="mask"}}Tr.ignoreStyles=["mask","transform","clip-path"];const Zc=()=>{};class Ff extends kt{apply(e){const{document:t}=this,n=Reflect.getPrototypeOf(e),{beginPath:s,closePath:r}=e;n&&(n.beginPath=Zc,n.closePath=Zc),Reflect.apply(s,e,[]),this.children.forEach(o=>{if(!("path"in o))return;let i="elementTransform"in o?o.elementTransform():null;i||(i=Dn.fromElement(t,o)),i&&i.apply(e),o.path(e),n&&(n.closePath=r),i&&i.unapply(e)}),Reflect.apply(r,e,[]),e.clip(),n&&(n.beginPath=s,n.closePath=r)}render(e){}constructor(...e){super(...e),this.type="clipPath"}}class Cr extends kt{apply(e,t){const{document:n,children:s}=this,r="getBoundingBox"in t?t.getBoundingBox(e):null;if(!r)return;let o=0,i=0;s.forEach(b=>{const x=b.extraFilterDistance||0;o=Math.max(o,x),i=Math.max(i,x)});const a=Math.floor(r.width),c=Math.floor(r.height),h=a+2*o,d=c+2*i;if(h<1||d<1)return;const u=Math.floor(r.x),p=Math.floor(r.y),f=this.removeStyles(t,Cr.ignoreStyles),y=n.createCanvas(h,d),w=y.getContext("2d");n.screen.setDefaults(w),w.translate(-u+o,-p+i),t.render(w),s.forEach(b=>{typeof b.apply=="function"&&b.apply(w,0,0,h,d)}),e.drawImage(y,0,0,h,d,u-o,p-i,h,d),this.restoreStyles(t,f)}render(e){}constructor(...e){super(...e),this.type="filter"}}Cr.ignoreStyles=["filter","transform","clip-path"];class Vf extends kt{apply(e,t,n,s,r){}constructor(e,t,n){super(e,t,n),this.type="feDropShadow",this.addStylesFromStyleDefinition()}}class Wf extends kt{apply(e,t,n,s,r){}constructor(...e){super(...e),this.type="feMorphology"}}class Gf extends kt{apply(e,t,n,s,r){}constructor(...e){super(...e),this.type="feComposite"}}class Uf extends kt{apply(e,t,n,s,r){const{document:o,blurRadius:i}=this,a=o.window?o.window.document.body:null,c=e.canvas;c.id=o.getUniqueId(),a&&(c.style.display="none",a.appendChild(c)),Fp(c,t,n,s,r,i),a&&a.removeChild(c)}constructor(e,t,n){super(e,t,n),this.type="feGaussianBlur",this.blurRadius=Math.floor(this.getAttribute("stdDeviation").getNumber()),this.extraFilterDistance=this.blurRadius}}class _f extends kt{constructor(...e){super(...e),this.type="title"}}class Kf extends kt{constructor(...e){super(...e),this.type="desc"}}const jf={svg:ks,rect:Uc,circle:Pf,ellipse:bf,line:vf,polyline:_c,polygon:Mf,path:At,pattern:Sf,marker:Tf,defs:Cf,linearGradient:Lf,radialGradient:Af,stop:Rf,animate:Do,animateColor:Nf,animateTransform:Ef,font:If,"font-face":jc,"missing-glyph":qc,glyph:Ho,text:pn,tspan:vr,tref:kf,a:Bf,textPath:Of,image:Hf,g:Oo,symbol:zf,style:$c,use:Yf,mask:Tr,clipPath:Ff,filter:Cr,feDropShadow:Vf,feMorphology:Wf,feComposite:Gf,feColorMatrix:Qc,feGaussianBlur:Uf,title:_f,desc:Kf};function qf(l,e){const t=document.createElement("canvas");return t.width=l,t.height=e,t}async function $f(l){let e=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;const t=document.createElement("img");return e&&(t.crossOrigin="Anonymous"),new Promise((n,s)=>{t.onload=()=>{n(t)},t.onerror=(r,o,i,a,c)=>{s(c)},t.src=l})}const zo=12;class fn{bindCreateImage(e,t){return typeof t=="boolean"?(n,s)=>e(n,typeof s=="boolean"?s:t):e}get window(){return this.screen.window}get fetch(){return this.screen.fetch}get ctx(){return this.screen.ctx}get emSize(){const{emSizeStack:e}=this;return e[e.length-1]||zo}set emSize(e){const{emSizeStack:t}=this;t.push(e)}popEmSize(){const{emSizeStack:e}=this;e.pop()}getUniqueId(){return"canvg".concat(++this.uniqueId)}isImagesLoaded(){return this.images.every(e=>e.loaded)}isFontsLoaded(){return this.fonts.every(e=>e.loaded)}createDocumentElement(e){const t=this.createElement(e.documentElement);return t.root=!0,t.addStylesFromStyleDefinition(),this.documentElement=t,t}createElement(e){const t=e.nodeName.replace(/^[^:]+:/,""),n=fn.elementTypes[t];return n?new n(this,e):new ff(this,e)}createTextNode(e){return new xf(this,e)}setViewBox(e){this.screen.setViewBox({document:this,...e})}constructor(e,{rootEmSize:t=zo,emSize:n=zo,createCanvas:s=fn.createCanvas,createImage:r=fn.createImage,anonymousCrossOrigin:o}={}){this.canvg=e,this.definitions=new Map,this.styles=new Map,this.stylesSpecificity=new Map,this.images=[],this.fonts=[],this.emSizeStack=[],this.uniqueId=0,this.screen=e.screen,this.rootEmSize=t,this.emSize=n,this.createCanvas=s,this.createImage=this.bindCreateImage(r,o),this.screen.wait(()=>this.isImagesLoaded()),this.screen.wait(()=>this.isFontsLoaded())}}fn.createCanvas=qf,fn.createImage=$f,fn.elementTypes=jf;class ss{static async from(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const r=await new Bo(n).parse(t);return new ss(e,r,n)}static fromString(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};const r=new Bo(n).parseFromString(t);return new ss(e,r,n)}fork(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return ss.from(e,t,{...this.options,...n})}forkString(e,t){let n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return ss.fromString(e,t,{...this.options,...n})}ready(){return this.screen.ready()}isReady(){return this.screen.isReady()}async render(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};this.start({enableRedraw:!0,ignoreAnimation:!0,ignoreMouse:!0,...e}),await this.ready(),this.stop()}start(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{};const{documentElement:t,screen:n,options:s}=this;n.start(t,{enableRedraw:!0,...s,...e})}stop(){this.screen.stop()}resize(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:e,n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;this.documentElement.resize(e,t,n)}constructor(e,t,n={}){this.parser=new Bo(n),this.screen=new Ze(e,n),this.options=n;const s=new fn(this,n),r=s.createDocumentElement(t);this.document=s,this.documentElement=r}}class Jc{async work(e,t,n){const s=n.getScale();try{const r=e.baseProps,o=s*r.width,i=s*r.height,a=new OffscreenCanvas(2*o,2*i),c=a.getContext("2d");await(await ss.from(c,t)).render();const d=a.transferToImageBitmap();e.setImageBitmap(d)}catch(r){console.error("加载svg图片出现问题",r),e.setBroken()}n.dirtyDraw(e.getBounds())}}class Qf extends Lo{constructor(){super(...arguments);g(this,"svgWorker",new fo)}enable(t){return t===ft.Resource}async handle(t,n){const s=new m(0,0),r=n.previewManager.previewResourceManager.previewSvgCode;r===""&&console.error("出现错误,svg code为空");const{addNodeInfo:o}=await this.svgWorker.addSvgNodeBySvgCode(r,s,n),i=Ge.getInstance().create(wr.PREVIEW_ID,A.SVG,0,o.props,n.nodeManager.previewRoot,n.gmlRender.glCtx),a=$n.trimSvgCode(r);return i.setSvgCode(a.svgCode),await new Jc().work(i,a.svgCode,n.renderManager),i}makeupShapeDefaultProps(t,n,s){const r=Tt.Resource,o=hn[r],i=100,a=100,c=s?n.x-.5*i:n.x,h=s?n.y-.5*a:n.y;return[gt.create({x:c,y:h,width:i,height:a}),Ot.create({color:o,alpha:.5})]}}const Er=class Er{constructor(){g(this,"previewGraphics",null);g(this,"handlers",[new Cp,new Lp,new Qf])}addPreviewNode(e){const t=e.toolManager.currentTool;for(const n of this.handlers)if(n.enable(t)){n.handle(Er.PREVIEW_ID,e).then(s=>{this.previewGraphics=s});return}}updatePos(e){if(!this.previewGraphics)return;const t={type:R.Base,x:e.x,y:e.y};this.previewGraphics.updateProps([t])}resetPreviewNode(e){this.previewGraphics=null,e.nodeManager.previewRoot.children.clear()}};g(Er,"PREVIEW_ID","create_preview");let Xo=Er;class Zf{constructor(){g(this,"previewSvgCode","");g(this,"previewSvgResourceUrl","")}setPreviewSvgCode(e){this.previewSvgCode=e}setPreviewResourceUrl(e){this.previewSvgResourceUrl=e}}class Jf{constructor(){g(this,"createManager",new Xo);g(this,"quickCreateManager",new wr);g(this,"previewResourceManager",new Zf)}addPreviewNode(e){this.createManager.addPreviewNode(e)}updatePos(e){this.createManager.updatePos(e)}resetPreviewNode(e){this.createManager.resetPreviewNode(e)}}class tl{}class el extends tl{async downloadAsImageBitmap(e){const n=await(await fetch(e)).blob();return{imageBitmap:await createImageBitmap(n),blobUrl:e}}async uploadBlobImg(e,t){return Promise.resolve("")}async downloadSvgCode(e){return Promise.resolve("")}async uploadSvgFile(e,t){return Promise.resolve(void 0)}async deleteMultipleImages(e){return Promise.resolve(void 0)}async uploadSvgString(e,t){return Promise.resolve("")}async copyImage(e,t,n){throw new Error("该方法没有被实现")}}class nl{constructor(){g(this,"resourceMap",new Map);g(this,"nodeResourceMap",new Map);g(this,"svgMap",new Map);g(this,"instance",new el)}loadResourceInstance(e){this.instance=e}getBlobUrl(e){var t;return((t=this.resourceMap.get(e))==null?void 0:t.blobUrl)||""}getImgUrls(){return[...this.nodeResourceMap.values()].map(e=>e.blobUrl)}addNodeResourceInfo(e,t){this.nodeResourceMap.set(e,t)}async loadImgUrl(e){if(this.resourceMap.has(e))return this.resourceMap.get(e);const t=await this.instance.downloadAsImageBitmap(e);return this.resourceMap.set(e,t),t}async uploadFileBlob(e,t){return await this.instance.uploadBlobImg(e,t)}async loadSvgUrl(e){return await this.instance.downloadSvgCode(e)}async uploadSvgFile(e,t){return await this.instance.uploadSvgFile(e,t)}async uploadSvgString(e,t){const n=this.svgMap.get(t);if(n)return n;const s=await this.instance.uploadSvgString(e,t);return this.svgMap.set(t,s),s}async deleteMultipleImages(e){if(e.length!==0)return await this.instance.deleteMultipleImages(e)}async copyImage(e,t,n){return await this.instance.copyImage(e,t,n)}}var Bs=(l=>(l[l.Img=0]="Img",l[l.Svg=1]="Svg",l))(Bs||{});class tg{constructor(e,t,n){g(this,"tasks",new Map);g(this,"onRendering",!1);g(this,"resourceManager");g(this,"nodeManager");g(this,"renderManager");this.resourceManager=e,this.nodeManager=t,this.renderManager=n}batchAddRenderNode(e){e.forEach(t=>this.addRenderNode(t))}addRenderNode(e){if(e.type===A.IMG){const t=e;this.tasks.set(e.id,{type:Bs.Img,nodeId:e.id,url:t.imgSrc})}if(e.type===A.SVG){const t=e;t.svgCode!==""&&this.tasks.set(e.id,{type:Bs.Svg,nodeId:e.id,svgCode:t.svgCode})}this.render()}start(){}render(){this.tasks.size!==0&&(this.onRendering||(this.genAndRender().then(()=>{this.onRendering=!1,this.render(),this.renderManager.slotManager.addSlotState(te.ImgUrls,this.resourceManager.getImgUrls())}).catch(e=>{console.error("渲染出现问题:",e),this.onRendering=!1}),this.tasks.clear()))}async genAndRender(){const e=[];for(const t of[...this.tasks.values()])t.type===Bs.Svg&&e.push(this.genSvgTexture(t)),t.type===Bs.Img&&e.push(this.genImgTexture(t));return Promise.all(e)}async genImgTexture(e){const{nodeId:t,url:n}=e,s=this.nodeManager.getNode(t);if(!s||s.type!==A.IMG)return;const r=s;try{const o=await this.resourceManager.loadImgUrl(n);r.setImageBitmap(o.imageBitmap),this.resourceManager.addNodeResourceInfo(r.id,o)}catch(o){console.error("加载图片出现问题",o),r.setBroken()}this.renderManager.dirtyDraw(s.getBounds())}async genSvgTexture(e){const{svgCode:t,nodeId:n}=e,s=this.nodeManager.getNode(n);if(!s||s.type!==A.SVG)return;const r=s;await new Jc().work(r,t,this.renderManager)}}class eg{constructor(){g(this,"duringCrop",!1)}intoCrop(){this.duringCrop=!0}exitCrop(){this.duringCrop=!1}}class Yo{constructor(e){g(this,"inputManager");g(this,"cursorManager");g(this,"toolManager");g(this,"gmlRender");g(this,"auxGMLRender");g(this,"nodeManager");g(this,"serializeManager");g(this,"actionManager");g(this,"renderManager");g(this,"auxiliaryManager");g(this,"previewManager");g(this,"asyncRenderNodeManager");g(this,"docState");g(this,"idGenerator");g(this,"slotManager");g(this,"resourceManager");g(this,"cropManager");g(this,"appContext");g(this,"plugins",[]);g(this,"api");this.docState=new fc,this.idGenerator=new Qt,this.gmlRender=new So,this.auxGMLRender=new So,this.cursorManager=new qo,this.nodeManager=new wc,this.slotManager=new Pi,this.resourceManager=new nl,this.cropManager=new eg,this.auxiliaryManager=new vi(this.auxGMLRender,this.slotManager,this.cropManager),this.renderManager=new $i(this.gmlRender,this.nodeManager,this.auxiliaryManager,this.slotManager),this.inputManager=new gp(this.renderManager,this.cursorManager),this.previewManager=new Jf,this.toolManager=new Ba(this.nodeManager,this.inputManager,this.slotManager,this.cursorManager),this.asyncRenderNodeManager=new tg(this.resourceManager,this.nodeManager,this.renderManager),this.actionManager=new ji(this.nodeManager,this.inputManager,this.gmlRender,this.auxiliaryManager,this.toolManager,this.renderManager,this.resourceManager,this.docState,this.idGenerator,this.slotManager,this.asyncRenderNodeManager),this.serializeManager=new yp(this.nodeManager,this.docState),this.appContext=new cc(this.nodeManager,this.gmlRender,e.detectors,this.toolManager,this.inputManager,this.actionManager,this.renderManager,this.auxiliaryManager,this.docState,this.idGenerator,this.cursorManager,this.previewManager,this.resourceManager,this.slotManager,this.asyncRenderNodeManager,this.cropManager),this.api=new uc(this),this.auxiliaryManager.selectManager.register(this.inputManager),this.appContext.refreshEvent=()=>{const t=this.getPlugin(_s);t&&t.interactiveManager.refreshEvent(this.appContext)}}registerPlugin(e){this.plugins.push(e)}getPlugin(e){for(const t of this.plugins)if(t instanceof e)return t;return null}start(){this.slotManager.start(),this.auxiliaryManager.start(),this.renderManager.start(),this.asyncRenderNodeManager.start();for(const e of this.plugins)e.start()}stop(){for(const e of this.plugins)e.stop()}load(e){return this.loadDocumentInfo(e)}loadDocumentInfo(e){const t=mp();this.docState.load(t);try{const n=this.initData(e);this.afterInit(n),this.renderManager.zoomToFit(this.asyncRenderNodeManager),this.renderManager.addContentRenderTask()}catch(n){console.error("初始化过程中出现错误;",n)}return this.docState.seq}initData(e){this.nodeManager.clear(),this.gmlRender.reset();const t=this.gmlRender.canvas.getContext("2d");let n=[];for(const s of e.nodes){const r=this.nodeManager.root;this.initNode(s,r,t,n)}return n=T.sortGraphics(n),n}initNode(e,t,n,s){this.idGenerator.loadNode(e);const r=Ge.getInstance().createByNodeInfo(e,t,n);this.nodeManager.addNode(r),s.push(r);const o=e.children??[];for(const i of o)this.initNode(i,r,n,s);return r}async afterInit(e){for(const t of e){if(t instanceof dn){const{start:n,end:s}=t.connectProps;if(n){const r=this.nodeManager.getNode(n.objectId)||null;this.nodeManager.addLink(t,r,!0)}if(s){const r=this.nodeManager.getNode(s.objectId)||null;this.nodeManager.addLink(t,r,!1)}}if(t instanceof ys&&this.asyncRenderNodeManager.addRenderNode(t),t instanceof Ts){const n=t.svgUrl;try{const s=await this.resourceManager.loadSvgUrl(n),r=$n.trimSvgCode(s);t.setSvgCode(r.svgCode),this.asyncRenderNodeManager.addRenderNode(t)}catch(s){console.error("加载svg图片出现问题",s),t.setBroken()}}}}}class Os{moveForward(e){const t=e.getSelectNodes();if(t.size===0)return;e.execAction(new nt);const n=T.sortGraphics([...t]).reverse();for(const s of n){const r=this.moveNodeForward(s);r&&e.execAction(r)}e.execAction(new et)}moveBackward(e){const t=e.getSelectNodes();if(t.size===0)return;e.execAction(new nt);const n=T.sortGraphics([...t]);for(const s of n){const r=this.moveNodeBackward(s);r&&e.execAction(r)}e.execAction(new et)}moveToUp(e){const t=e.getSelectNodes();if(t.size===0)return;const n=new Map;for(const s of t){const r=s.parent,o=n.get(r);o?o.push(s):n.set(r,[s])}e.execAction(new nt);for(const[s,r]of n){const o=this.moveNodesToUp(r,s);o&&e.execAction(o)}e.execAction(new et)}moveToBack(e){const t=e.getSelectNodes();if(t.size===0)return;const n=new Map;for(const s of t){const r=s.parent,o=n.get(r);o?o.push(s):n.set(r,[s])}e.execAction(new nt);for(const[s,r]of n){const o=this.moveNodesToBack(r,s);o&&e.execAction(o)}e.execAction(new et)}moveNodesToUp(e,t){if(e.length===0)return null;const n=T.sortGraphics(e),s=new Set(e),r=t.children,o=[];for(const d of r)s.has(d)||o.push(d);const i=T.sortGraphics(o),a=i[i.length-1].zIndex,c=[];let h=1;for(const d of n)c.push({id:d.id,zIndex:a+h,props:[]}),h++;return new ct({infos:c})}moveNodesToBack(e,t){if(e.length===0)return null;const n=T.sortGraphics(e).reverse(),s=new Set(e),r=t.children,o=[];for(const d of r)s.has(d)||o.push(d);const a=T.sortGraphics(o)[0].zIndex,c=[];let h=1;for(const d of n)c.push({id:d.id,zIndex:a-h,props:[]}),h++;return new ct({infos:c})}moveNodeForward(e){const t=e.parent;if(!t)return null;let n=[...t.children];n=T.sortGraphics(n);const s=n.indexOf(e);if(s<0&&console.error("排序时发生错误",s,e.id),s===n.length-1)return null;if(s===n.length-2){const a=n[s+1],c=[{id:e.id,zIndex:a.zIndex+1,props:[]}];return new ct({infos:c})}const r=n[s+1],o=n[s+2],i=[{id:e.id,zIndex:.5*(r.zIndex+o.zIndex),props:[]}];return new ct({infos:i})}moveNodeBackward(e){const t=e.parent;if(!t)return null;let n=[...t.children];n=T.sortGraphics(n);const s=n.indexOf(e);if(s<0&&console.error("排序时发生错误",s,e.id),s===0)return null;if(s===1){const a=n[s-1],c=[{id:e.id,zIndex:a.zIndex-1,props:[]}];return new ct({infos:c})}const r=n[s-1],o=n[s-2],i=[{id:e.id,zIndex:.5*(r.zIndex+o.zIndex),props:[]}];return new ct({infos:i})}}const ng={width:595,height:942};var Fo={exports:{}},Ds={};/**
|
|
25
|
+
* @license React
|
|
26
|
+
* react-jsx-runtime.production.min.js
|
|
27
|
+
*
|
|
28
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
29
|
+
*
|
|
30
|
+
* This source code is licensed under the MIT license found in the
|
|
31
|
+
* LICENSE file in the root directory of this source tree.
|
|
32
|
+
*/var sl;function sg(){if(sl)return Ds;sl=1;var l=Kt,e=Symbol.for("react.element"),t=Symbol.for("react.fragment"),n=Object.prototype.hasOwnProperty,s=l.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,r={key:!0,ref:!0,__self:!0,__source:!0};function o(i,a,c){var h,d={},u=null,p=null;c!==void 0&&(u=""+c),a.key!==void 0&&(u=""+a.key),a.ref!==void 0&&(p=a.ref);for(h in a)n.call(a,h)&&!r.hasOwnProperty(h)&&(d[h]=a[h]);if(i&&i.defaultProps)for(h in a=i.defaultProps,a)d[h]===void 0&&(d[h]=a[h]);return{$$typeof:e,type:i,key:u,ref:p,props:d,_owner:s.current}}return Ds.Fragment=t,Ds.jsx=o,Ds.jsxs=o,Ds}var Hs={};/**
|
|
33
|
+
* @license React
|
|
34
|
+
* react-jsx-runtime.development.js
|
|
35
|
+
*
|
|
36
|
+
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
37
|
+
*
|
|
38
|
+
* This source code is licensed under the MIT license found in the
|
|
39
|
+
* LICENSE file in the root directory of this source tree.
|
|
40
|
+
*/var rl;function rg(){return rl||(rl=1,process.env.NODE_ENV!=="production"&&function(){var l=Kt,e=Symbol.for("react.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),s=Symbol.for("react.strict_mode"),r=Symbol.for("react.profiler"),o=Symbol.for("react.provider"),i=Symbol.for("react.context"),a=Symbol.for("react.forward_ref"),c=Symbol.for("react.suspense"),h=Symbol.for("react.suspense_list"),d=Symbol.for("react.memo"),u=Symbol.for("react.lazy"),p=Symbol.for("react.offscreen"),f=Symbol.iterator,y="@@iterator";function w(S){if(S===null||typeof S!="object")return null;var F=f&&S[f]||S[y];return typeof F=="function"?F:null}var b=l.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function x(S){{for(var F=arguments.length,$=new Array(F>1?F-1:0),dt=1;dt<F;dt++)$[dt-1]=arguments[dt];v("error",S,$)}}function v(S,F,$){{var dt=b.ReactDebugCurrentFrame,St=dt.getStackAddendum();St!==""&&(F+="%s",$=$.concat([St]));var Rt=$.map(function(bt){return String(bt)});Rt.unshift("Warning: "+F),Function.prototype.apply.call(console[S],console,Rt)}}var C=!1,E=!1,k=!1,I=!1,V=!1,U;U=Symbol.for("react.module.reference");function J(S){return!!(typeof S=="string"||typeof S=="function"||S===n||S===r||V||S===s||S===c||S===h||I||S===p||C||E||k||typeof S=="object"&&S!==null&&(S.$$typeof===u||S.$$typeof===d||S.$$typeof===o||S.$$typeof===i||S.$$typeof===a||S.$$typeof===U||S.getModuleId!==void 0))}function j(S,F,$){var dt=S.displayName;if(dt)return dt;var St=F.displayName||F.name||"";return St!==""?$+"("+St+")":$}function st(S){return S.displayName||"Context"}function tt(S){if(S==null)return null;if(typeof S.tag=="number"&&x("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."),typeof S=="function")return S.displayName||S.name||null;if(typeof S=="string")return S;switch(S){case n:return"Fragment";case t:return"Portal";case r:return"Profiler";case s:return"StrictMode";case c:return"Suspense";case h:return"SuspenseList"}if(typeof S=="object")switch(S.$$typeof){case i:var F=S;return st(F)+".Consumer";case o:var $=S;return st($._context)+".Provider";case a:return j(S,S.render,"ForwardRef");case d:var dt=S.displayName||null;return dt!==null?dt:tt(S.type)||"Memo";case u:{var St=S,Rt=St._payload,bt=St._init;try{return tt(bt(Rt))}catch{return null}}}return null}var it=Object.assign,ht=0,xt,mt,ut,ot,q,B,H;function z(){}z.__reactDisabledLog=!0;function X(){{if(ht===0){xt=console.log,mt=console.info,ut=console.warn,ot=console.error,q=console.group,B=console.groupCollapsed,H=console.groupEnd;var S={configurable:!0,enumerable:!0,value:z,writable:!0};Object.defineProperties(console,{info:S,log:S,warn:S,error:S,group:S,groupCollapsed:S,groupEnd:S})}ht++}}function Ft(){{if(ht--,ht===0){var S={configurable:!0,enumerable:!0,writable:!0};Object.defineProperties(console,{log:it({},S,{value:xt}),info:it({},S,{value:mt}),warn:it({},S,{value:ut}),error:it({},S,{value:ot}),group:it({},S,{value:q}),groupCollapsed:it({},S,{value:B}),groupEnd:it({},S,{value:H})})}ht<0&&x("disabledDepth fell below zero. This is a bug in React. Please file an issue.")}}var ye=b.ReactCurrentDispatcher,Se;function Me(S,F,$){{if(Se===void 0)try{throw Error()}catch(St){var dt=St.stack.trim().match(/\n( *(at )?)/);Se=dt&&dt[1]||""}return`
|
|
41
|
+
`+Se+S}}var Te=!1,Ce;{var zn=typeof WeakMap=="function"?WeakMap:Map;Ce=new zn}function Bt(S,F){if(!S||Te)return"";{var $=Ce.get(S);if($!==void 0)return $}var dt;Te=!0;var St=Error.prepareStackTrace;Error.prepareStackTrace=void 0;var Rt;Rt=ye.current,ye.current=null,X();try{if(F){var bt=function(){throw Error()};if(Object.defineProperty(bt.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(bt,[])}catch(me){dt=me}Reflect.construct(S,[],bt)}else{try{bt.call()}catch(me){dt=me}S.call(bt.prototype)}}else{try{throw Error()}catch(me){dt=me}S()}}catch(me){if(me&&dt&&typeof me.stack=="string"){for(var wt=me.stack.split(`
|
|
42
|
+
`),pe=dt.stack.split(`
|
|
43
|
+
`),Vt=wt.length-1,_t=pe.length-1;Vt>=1&&_t>=0&&wt[Vt]!==pe[_t];)_t--;for(;Vt>=1&&_t>=0;Vt--,_t--)if(wt[Vt]!==pe[_t]){if(Vt!==1||_t!==1)do if(Vt--,_t--,_t<0||wt[Vt]!==pe[_t]){var Ne=`
|
|
44
|
+
`+wt[Vt].replace(" at new "," at ");return S.displayName&&Ne.includes("<anonymous>")&&(Ne=Ne.replace("<anonymous>",S.displayName)),typeof S=="function"&&Ce.set(S,Ne),Ne}while(Vt>=1&&_t>=0);break}}}finally{Te=!1,ye.current=Rt,Ft(),Error.prepareStackTrace=St}var us=S?S.displayName||S.name:"",Gn=us?Me(us):"";return typeof S=="function"&&Ce.set(S,Gn),Gn}function mn(S,F,$){return Bt(S,!1)}function Le(S){var F=S.prototype;return!!(F&&F.isReactComponent)}function Ae(S,F,$){if(S==null)return"";if(typeof S=="function")return Bt(S,Le(S));if(typeof S=="string")return Me(S);switch(S){case c:return Me("Suspense");case h:return Me("SuspenseList")}if(typeof S=="object")switch(S.$$typeof){case a:return mn(S.render);case d:return Ae(S.type,F,$);case u:{var dt=S,St=dt._payload,Rt=dt._init;try{return Ae(Rt(St),F,$)}catch{}}}return""}var Re=Object.prototype.hasOwnProperty,is={},tn=b.ReactDebugCurrentFrame;function ze(S){if(S){var F=S._owner,$=Ae(S.type,S._source,F?F.type:null);tn.setExtraStackFrame($)}else tn.setExtraStackFrame(null)}function wn(S,F,$,dt,St){{var Rt=Function.call.bind(Re);for(var bt in S)if(Rt(S,bt)){var wt=void 0;try{if(typeof S[bt]!="function"){var pe=Error((dt||"React class")+": "+$+" type `"+bt+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof S[bt]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw pe.name="Invariant Violation",pe}wt=S[bt](F,bt,dt,$,null,"SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED")}catch(Vt){wt=Vt}wt&&!(wt instanceof Error)&&(ze(St),x("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).",dt||"React class",$,bt,typeof wt),ze(null)),wt instanceof Error&&!(wt.message in is)&&(is[wt.message]=!0,ze(St),x("Failed %s type: %s",$,wt.message),ze(null))}}}var en=Array.isArray;function Xe(S){return en(S)}function nn(S){{var F=typeof Symbol=="function"&&Symbol.toStringTag,$=F&&S[Symbol.toStringTag]||S.constructor.name||"Object";return $}}function ce(S){try{return as(S),!1}catch{return!0}}function as(S){return""+S}function cs(S){if(ce(S))return x("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.",nn(S)),as(S)}var ls=b.ReactCurrentOwner,Xs={key:!0,ref:!0,__self:!0,__source:!0},Xn,Yn;function hs(S){if(Re.call(S,"ref")){var F=Object.getOwnPropertyDescriptor(S,"ref").get;if(F&&F.isReactWarning)return!1}return S.ref!==void 0}function ds(S){if(Re.call(S,"key")){var F=Object.getOwnPropertyDescriptor(S,"key").get;if(F&&F.isReactWarning)return!1}return S.key!==void 0}function Ir(S,F){typeof S.ref=="string"&&ls.current}function kr(S,F){{var $=function(){Xn||(Xn=!0,x("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",F))};$.isReactWarning=!0,Object.defineProperty(S,"key",{get:$,configurable:!0})}}function Ys(S,F){{var $=function(){Yn||(Yn=!0,x("%s: `ref` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://reactjs.org/link/special-props)",F))};$.isReactWarning=!0,Object.defineProperty(S,"ref",{get:$,configurable:!0})}}var Fs=function(S,F,$,dt,St,Rt,bt){var wt={$$typeof:e,type:S,key:F,ref:$,props:bt,_owner:Rt};return wt._store={},Object.defineProperty(wt._store,"validated",{configurable:!1,enumerable:!1,writable:!0,value:!1}),Object.defineProperty(wt,"_self",{configurable:!1,enumerable:!1,writable:!1,value:dt}),Object.defineProperty(wt,"_source",{configurable:!1,enumerable:!1,writable:!1,value:St}),Object.freeze&&(Object.freeze(wt.props),Object.freeze(wt)),wt};function Vs(S,F,$,dt,St){{var Rt,bt={},wt=null,pe=null;$!==void 0&&(cs($),wt=""+$),ds(F)&&(cs(F.key),wt=""+F.key),hs(F)&&(pe=F.ref,Ir(F,St));for(Rt in F)Re.call(F,Rt)&&!Xs.hasOwnProperty(Rt)&&(bt[Rt]=F[Rt]);if(S&&S.defaultProps){var Vt=S.defaultProps;for(Rt in Vt)bt[Rt]===void 0&&(bt[Rt]=Vt[Rt])}if(wt||pe){var _t=typeof S=="function"?S.displayName||S.name||"Unknown":S;wt&&kr(bt,_t),pe&&Ys(bt,_t)}return Fs(S,wt,pe,St,dt,ls.current,bt)}}var Fn=b.ReactCurrentOwner,Vn=b.ReactDebugCurrentFrame;function Ye(S){if(S){var F=S._owner,$=Ae(S.type,S._source,F?F.type:null);Vn.setExtraStackFrame($)}else Vn.setExtraStackFrame(null)}var Wn;Wn=!1;function Zt(S){return typeof S=="object"&&S!==null&&S.$$typeof===e}function Sl(){{if(Fn.current){var S=tt(Fn.current.type);if(S)return`
|
|
45
|
+
|
|
46
|
+
Check the render method of \``+S+"`."}return""}}function kg(S){return""}var Tl={};function Bg(S){{var F=Sl();if(!F){var $=typeof S=="string"?S:S.displayName||S.name;$&&(F=`
|
|
47
|
+
|
|
48
|
+
Check the top-level render call using <`+$+">.")}return F}}function Cl(S,F){{if(!S._store||S._store.validated||S.key!=null)return;S._store.validated=!0;var $=Bg(F);if(Tl[$])return;Tl[$]=!0;var dt="";S&&S._owner&&S._owner!==Fn.current&&(dt=" It was passed a child from "+tt(S._owner.type)+"."),Ye(S),x('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.',$,dt),Ye(null)}}function Ll(S,F){{if(typeof S!="object")return;if(Xe(S))for(var $=0;$<S.length;$++){var dt=S[$];Zt(dt)&&Cl(dt,F)}else if(Zt(S))S._store&&(S._store.validated=!0);else if(S){var St=w(S);if(typeof St=="function"&&St!==S.entries)for(var Rt=St.call(S),bt;!(bt=Rt.next()).done;)Zt(bt.value)&&Cl(bt.value,F)}}}function Og(S){{var F=S.type;if(F==null||typeof F=="string")return;var $;if(typeof F=="function")$=F.propTypes;else if(typeof F=="object"&&(F.$$typeof===a||F.$$typeof===d))$=F.propTypes;else return;if($){var dt=tt(F);wn($,S.props,"prop",dt,S)}else if(F.PropTypes!==void 0&&!Wn){Wn=!0;var St=tt(F);x("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?",St||"Unknown")}typeof F.getDefaultProps=="function"&&!F.getDefaultProps.isReactClassApproved&&x("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.")}}function Dg(S){{for(var F=Object.keys(S.props),$=0;$<F.length;$++){var dt=F[$];if(dt!=="children"&&dt!=="key"){Ye(S),x("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.",dt),Ye(null);break}}S.ref!==null&&(Ye(S),x("Invalid attribute `ref` supplied to `React.Fragment`."),Ye(null))}}var Al={};function Rl(S,F,$,dt,St,Rt){{var bt=J(S);if(!bt){var wt="";(S===void 0||typeof S=="object"&&S!==null&&Object.keys(S).length===0)&&(wt+=" You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");var pe=kg();pe?wt+=pe:wt+=Sl();var Vt;S===null?Vt="null":Xe(S)?Vt="array":S!==void 0&&S.$$typeof===e?(Vt="<"+(tt(S.type)||"Unknown")+" />",wt=" Did you accidentally export a JSX literal instead of a component?"):Vt=typeof S,x("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s",Vt,wt)}var _t=Vs(S,F,$,St,Rt);if(_t==null)return _t;if(bt){var Ne=F.children;if(Ne!==void 0)if(dt)if(Xe(Ne)){for(var us=0;us<Ne.length;us++)Ll(Ne[us],S);Object.freeze&&Object.freeze(Ne)}else x("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");else Ll(Ne,S)}if(Re.call(F,"key")){var Gn=tt(S),me=Object.keys(F).filter(function(Vg){return Vg!=="key"}),jo=me.length>0?"{key: someKey, "+me.join(": ..., ")+": ...}":"{key: someKey}";if(!Al[Gn+jo]){var Fg=me.length>0?"{"+me.join(": ..., ")+": ...}":"{}";x(`A props object containing a "key" prop is being spread into JSX:
|
|
49
|
+
let props = %s;
|
|
50
|
+
<%s {...props} />
|
|
51
|
+
React keys must be passed directly to JSX without using spread:
|
|
52
|
+
let props = %s;
|
|
53
|
+
<%s key={someKey} {...props} />`,jo,Gn,Fg,Gn),Al[Gn+jo]=!0}}return S===n?Dg(_t):Og(_t),_t}}function Hg(S,F,$){return Rl(S,F,$,!0)}function zg(S,F,$){return Rl(S,F,$,!1)}var Xg=zg,Yg=Hg;Hs.Fragment=n,Hs.jsx=Xg,Hs.jsxs=Yg}()),Hs}process.env.NODE_ENV==="production"?Fo.exports=sg():Fo.exports=rg();var He=Fo.exports;const Vo=({gmlRender:l})=>{const e=Kt.useRef(null),t=()=>{const n=window.devicePixelRatio;e.current.width=n*e.current.clientWidth,e.current.height=n*e.current.clientHeight};return Kt.useEffect(()=>(t(),l.init(e.current),window.addEventListener("resize",t,!1),()=>{window.removeEventListener("resize",t,!1)}),[e]),He.jsx("div",{className:"normal-container",children:He.jsx("canvas",{ref:e,className:"normal-canvas"})})},og=({gmlRender:l,auxiliaryGmlRender:e})=>He.jsxs("div",{className:"canvas-container",children:[He.jsx("div",{className:"auxiliary-canvas",children:He.jsx(Vo,{gmlRender:e})}),He.jsx("div",{className:"content-canvas",children:He.jsx(Vo,{gmlRender:l})})]}),ig=({inputManager:l})=>{const e=Kt.useRef(null),t=Kt.useRef(null);return Kt.useEffect(()=>{e.current&&l.init(e.current,t.current)},[e]),He.jsxs(He.Fragment,{children:[He.jsx("div",{ref:t,className:"render-input"}),He.jsx("input",{ref:e,className:"canvas-input"})]})};class Lr{constructor(){g(this,"editTextWorker",new qn);g(this,"selectionDeleteWorker",new ur)}computeNextCursorIndex(e,t){return e+t.length}handle(e,t,n,s){const{node:r,renderText:o,textCursorPosition:i}=e;t.execAction(new nt);const a=t.inputManager.selectionManager.selectionInfo;if(a){this.selectionDeleteWorker.work(e,a,t);const{renderText:p,textCursorPosition:f}=t.inputManager.editTextInfo,{prev:y,next:w,index:b}=this.editTextWorker.splitText(p,f);s.prev=y,s.next=w,s.splitIndex=b}else t.execAction(lt.focus(r.id,i));const{updateTextProps:c,index:h}=this.computeUpdateTextProps(e,n,s);t.execAction(ct.create(r.id,[c])),this.editTextWorker.modifyBaseProps(o,r,t);const d=this.computeNextCursorIndex(h,n),u=this.editTextWorker.getTextCursorPosByIndex(o,d);t.execAction(lt.focus(r.id,u)),t.execAction(new et)}}class ol extends Lr{computeUpdateTextProps(e,t){const{renderText:n,textCursorPosition:s}=e,{prev:r,next:o,index:i}=this.editTextWorker.splitText(n,s);return{updateTextProps:{type:R.Text,text:r+t+o},index:i}}}class il extends Lr{computeUpdateTextProps(e,t,n){const{prev:s,next:r,splitIndex:o}=n;return{updateTextProps:{type:R.Text,text:s+t+r},index:o}}}class al extends Lr{constructor(){super(...arguments);g(this,"graphemeSplit",new wo)}computeUpdateTextProps(t,n,s){const{prev:r,next:o,splitIndex:i}=s;return{updateTextProps:{type:R.Text,text:r+n+o},index:i}}computeNextCursorIndex(t,n){const s=this.graphemeSplit.split(n).length;return t+s}}class cl{constructor(e){g(this,"eventCtx");g(this,"duringComposition",!1);g(this,"compositionRecord",{prev:"",next:"",splitIndex:0});g(this,"editTextWorker",new qn);g(this,"normalInputHandler",new ol);g(this,"compositionInputHandler",new il);g(this,"compositionEndHandler",new al);g(this,"compositionEnd",e=>{if(!this.onEnable()||!this.duringComposition)return;const t=this.eventCtx.inputManager.editTextInfo;if(!t)return;const n=e.data;this.compositionEndHandler.handle(t,this.eventCtx,n,this.compositionRecord),this.duringComposition=!1});g(this,"compositionStart",e=>{if(!this.onEnable())return;const t=this.eventCtx.inputManager.editTextInfo;if(!t)return;this.duringComposition=!0;const{renderText:n,textCursorPosition:s}=t,{prev:r,next:o,index:i}=this.editTextWorker.splitText(n,s);this.compositionRecord={prev:r,next:o,splitIndex:i}});g(this,"onKeyDown",e=>{if(!this.onEnable()||!e.data)return;const t=e.data;if(t==="")return;const n=this.eventCtx.inputManager.editTextInfo;if(n){if(this.duringComposition){this.compositionInputHandler.handle(n,this.eventCtx,t,this.compositionRecord);return}this.normalInputHandler.handle(n,this.eventCtx,t,this.compositionRecord)}});this.eventCtx=e}onEnable(){return this.eventCtx.docState.canEdit()}start(){var t;const e=(t=this.eventCtx.inputManager.renderInput)==null?void 0:t.inputDom;if(!e){console.error("input dom is not exist");return}e.addEventListener("input",this.onKeyDown),e.addEventListener("compositionstart",this.compositionStart),e.addEventListener("compositionend",this.compositionEnd)}stop(){var t;const e=(t=this.eventCtx.inputManager.renderInput)==null?void 0:t.inputDom;if(!e){console.error("input dom is not exist");return}e.removeEventListener("input",this.onKeyDown),e.removeEventListener("compositionstart",this.compositionStart),e.removeEventListener("compositionend",this.compositionEnd)}}class Wo{constructor(e){g(this,"eventCtx");g(this,"timer");g(this,"onWheel",e=>{if(!this.onEnable(e))return;const t=this.eventCtx;if(e.target===t.gmlRender.canvas&&e.preventDefault(),e.ctrlKey){const n=new m(e.clientX,e.clientY),s=t.gmlRender.transformToGlobal(n),r=e.deltaY,o=2*Math.abs(r)/100,i=r>0?1-o:1+o;this.eventCtx.renderManager.zoomScale(i,s,this.eventCtx.asyncRenderNodeManager)}else this.eventCtx.renderManager.scroll(e.deltaX,e.deltaY);this.eventCtx.inputManager.refreshCursor(),this.timer&&clearTimeout(this.timer),this.timer=setTimeout(()=>{this.generateImgAndDraw()},300)});this.eventCtx=e}start(){document.addEventListener("wheel",this.onWheel,{passive:!1})}stop(){document.removeEventListener("wheel",this.onWheel)}generateImgAndDraw(){}onEnable(e){return!0}}class ag{static scroll(e,t,n){const s=n.getScale();n.translation(-e/s,-t/s);const r=n.glCtx,{a:o,b:i,c:a,d:c,e:h,f:d}=n.globalTransform;r.setTransform(o,i,a,c,h,d)}static zoomScale(e,t,n){const s=2*Math.abs(e)/100,r=e>0?1-s:1+s;t.scale(r,r,n);const o=t.glCtx,{a:i,b:a,c,d:h,e:d,f:u}=t.globalTransform;o.setTransform(i,a,c,h,d,u)}static zoomRedraw(e,t,n){const s=e.canvas.getContext("2d"),{a:r,b:o,c:i,d:a,e:c,f:h}=e.globalTransform;s.setTransform(r,o,i,a,c,h),n.addContentRenderTask(),n.addAuxiliaryDrawTask()}static zoomToFit(e,t,n,s){const r=e.canvas.getContext("2d"),{a:o,b:i,c:a,d:c,e:h,f:d}=s;e.globalTransform.a=o,e.globalTransform.b=i,e.globalTransform.c=a,e.globalTransform.d=c,e.globalTransform.e=h,e.globalTransform.f=d,r.setTransform(o,i,a,c,h,d),n.renderManager.addContentRenderTask()}}class Go{constructor(e){g(this,"eventCtx");g(this,"prevDevicePixelRatio",window.devicePixelRatio);g(this,"onResize",()=>{const e=window.devicePixelRatio;this.resizeCanvas(this.eventCtx.gmlRender,e),this.resizeCanvas(this.eventCtx.auxiliaryManager.gmlRender,e),this.eventCtx.renderManager.addAuxiliaryDrawTask(),this.eventCtx.renderManager.addContentRenderTask(),this.prevDevicePixelRatio=e});this.eventCtx=e}start(){window.addEventListener("resize",this.onResize)}stop(){window.removeEventListener("resize",this.onResize)}resizeCanvas(e,t){e.canvas.width=t*e.canvas.clientWidth,e.canvas.height=t*e.canvas.clientHeight;const n=e.glCtx;if(Math.abs(this.prevDevicePixelRatio-t)>.001){const h=e.transformToGlobal(new m);e.scale(t/this.prevDevicePixelRatio,t/this.prevDevicePixelRatio,h)}const{a:s,b:r,c:o,d:i,e:a,f:c}=e.globalTransform;n.setTransform(s,r,o,i,a,c)}onEnable(e){return!0}}var gn=(l=>(l.Windows="Windows",l.MacOS="MacOS",l.Linux="Linux",l.Android="Android",l.IOS="ios",l.Unknown="unknown",l))(gn||{});class cg{static getOS(){const e=navigator.userAgent;return e.includes("Win")?gn.Windows:e.includes("Mac")?gn.MacOS:e.includes("Linux")?gn.Linux:/Android/.test(e)?gn.Android:/iPhone|iPad|iPod/.test(e)?gn.IOS:gn.Unknown}}class Uo{constructor(e){g(this,"keyMap",new Map);this.keyMap=e}getKey(e){const t=this.keyMap.get(e.code);if(!t)return null;const s=cg.getOS()===gn.MacOS;for(const r of t)if(r.enable(e,s))return r;return null}}class vt{keyDown(e,t){this.work(e,t)}keyUp(e,t){}shouldPreventDefault(){return!0}isPressMetaKey(e,t){return t?e.metaKey:e.ctrlKey}}var Q=(l=>(l.Enter="Enter",l.Escape="Escape",l.Backspace="Backspace",l.Delete="Delete",l.Space="Space",l.ArrowLeft="ArrowLeft",l.ArrowRight="ArrowRight",l.ArrowUp="ArrowUp",l.ArrowDown="ArrowDown",l.Digit1="Digit1",l.Digit2="Digit2",l.Digit3="Digit3",l.Digit4="Digit4",l.Digit5="Digit5",l.Digit6="Digit6",l.Digit7="Digit7",l.Digit8="Digit8",l.Digit9="Digit9",l.Digit0="Digit0",l.KeyA="KeyA",l.KeyB="KeyB",l.KeyC="KeyC",l.KeyD="KeyD",l.KeyE="KeyE",l.KeyF="KeyF",l.KeyG="KeyG",l.KeyH="KeyH",l.KeyI="KeyI",l.KeyJ="KeyJ",l.KeyK="KeyK",l.KeyL="KeyL",l.KeyM="KeyM",l.KeyN="KeyN",l.KeyO="KeyO",l.KeyP="KeyP",l.KeyQ="KeyQ",l.KeyR="KeyR",l.KeyS="KeyS",l.KeyT="KeyT",l.KeyU="KeyU",l.KeyV="KeyV",l.KeyW="KeyW",l.KeyX="KeyX",l.KeyY="KeyY",l.KeyZ="KeyZ",l.Tab="Tab",l.BracketRight="BracketRight",l.BracketLeft="BracketLeft",l))(Q||{});class ll extends vt{constructor(){super(...arguments);g(this,"type",Q.Enter);g(this,"editTextWorker",new qn);g(this,"selectionDeleteWorker",new ur)}enable(t){return!0}work(t,n){const s=n.inputManager.editTextInfo;if(!s)return;const{node:r,renderText:o}=s;let i=s.textCursorPosition;const a=n.inputManager.selectionManager.selectionInfo;n.execAction(new nt),a?(this.selectionDeleteWorker.work(s,a,n),i=n.inputManager.editTextInfo.textCursorPosition):n.execAction(lt.focus(r.id,i));const{prev:c,next:h,index:d}=this.editTextWorker.splitText(o,i),u={type:R.Text,text:c+`
|
|
54
|
+
`+h};n.execAction(ct.create(r.id,[u])),this.editTextWorker.modifyBaseProps(o,r,n);const p=d+1,f=this.editTextWorker.getTextCursorPosByIndex(o,p);n.execAction(lt.focus(r.id,f)),n.execAction(new et)}}class hl extends vt{constructor(){super(...arguments);g(this,"type",Q.Backspace);g(this,"editTextWorker",new qn);g(this,"graphemeSplit",new wo);g(this,"selectionDeleteWorker",new ur)}enable(t){return!0}work(t,n){const s=n.inputManager.editTextInfo;if(!s)return;const r=n.inputManager.selectionManager.selectionInfo;if(r){n.execAction(new nt),this.selectionDeleteWorker.work(s,r,n),n.execAction(new et);return}const{node:o,renderText:i,textCursorPosition:a}=s,{prev:c,next:h,index:d}=this.editTextWorker.splitText(i,a);if(d===-1)return;const u=this.graphemeSplit.split(c);u.pop();let p="";u.forEach(b=>p+=b);const f={type:R.Text,text:p+h};n.execAction(new nt),n.execAction(lt.focus(o.id,a)),n.execAction(ct.create(o.id,[f])),this.editTextWorker.modifyBaseProps(i,o,n);const y=d-1,w=this.editTextWorker.getTextCursorPosByIndex(i,y);n.execAction(lt.focus(o.id,w)),n.execAction(new et)}}class zs extends vt{constructor(){super(...arguments);g(this,"cursorMoveWorker",new ki)}enable(t){return!0}work(t,n){const s=n.inputManager.editTextInfo;if(!s)return;const{renderText:r,textCursorPosition:o,node:i}=s,a=this.moveCursor(r,o);n.execAction(new nt),n.execAction(lt.focus(i.id,a)),n.execAction(new et)}}class dl extends zs{constructor(){super(...arguments);g(this,"type",Q.ArrowRight)}moveCursor(t,n){return this.cursorMoveWorker.moveRight(t,n)}}class ul extends zs{constructor(){super(...arguments);g(this,"type",Q.ArrowLeft)}moveCursor(t,n){return this.cursorMoveWorker.moveLeft(t,n)}}class pl extends zs{constructor(){super(...arguments);g(this,"type",Q.ArrowRight)}moveCursor(t,n){return this.cursorMoveWorker.moveUp(t,n)}}class fl extends zs{constructor(){super(...arguments);g(this,"type",Q.ArrowDown)}moveCursor(t,n){return this.cursorMoveWorker.moveDown(t,n)}}class _o extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyZ)}work(t,n){n.actionManager.redo()}enable(t,n){return t.shiftKey&&this.isPressMetaKey(t,n)}}class Ko extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyZ)}work(t,n){n.actionManager.undo()}enable(t,n){return this.isPressMetaKey(t,n)}}let lg=class extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyA)}enable(t,n){return this.isPressMetaKey(t,n)}work(t,n){const s=n.inputManager.editTextInfo;if(!s)return;const{node:r,textCursorPosition:o,renderText:i}=s;n.execAction(new nt),n.execAction(lt.selection(r.id,i.headTextCursorPosition(),i.tailTextCursorPosition())),n.execAction(new et)}};const gl=new Map([[Q.Enter,[new ll]],[Q.Backspace,[new hl]],[Q.ArrowRight,[new dl]],[Q.ArrowLeft,[new ul]],[Q.ArrowUp,[new pl]],[Q.ArrowDown,[new fl]],[Q.KeyA,[new lg]],[Q.KeyZ,[new _o,new Ko]]]);class yl extends vt{constructor(){super(...arguments);g(this,"type",Q.Delete);g(this,"worker",new Mo)}work(t,n){this.worker.work(n)}enable(t){return!0}}class ml extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyR)}work(t,n){n.toolManager.setCurrentTool(ft.SHAPE,_.RoundRect),n.setCursor("crosshair"),n.previewManager.addPreviewNode(n),n.refreshEvent()}enable(t){return!0}}class wl extends vt{constructor(){super(...arguments);g(this,"type",Q.Escape)}enable(t){return!0}work(t,n){if(n.cropManager.duringCrop){n.cropManager.exitCrop(),n.auxiliaryManager.selectManager.refreshSelectStatus(),n.renderManager.addAuxiliaryDrawTask();return}n.previewManager.resetPreviewNode(n),n.toolManager.setCurrentTool(ft.DEFAULT),n.setCursor("default"),n.refreshEvent()}}class xl extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyT)}work(t,n){n.toolManager.setCurrentTool(ft.TEXT,_.PureText),n.setCursor("text")}enable(t){return!0}}class Pl extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyR)}work(t,n){n.toolManager.setCurrentTool(ft.LINE,Lt.Line),n.setCursor("crosshair")}enable(t){return!0}}class hg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyC)}enable(t){return!0}work(t,n){n.toolManager.setCurrentTool(ft.LINE,Lt.Curve),n.setCursor("crosshair")}}class dg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyA)}enable(t){return!0}work(t,n){n.toolManager.setCurrentTool(ft.LINE,Lt.RoundPolyLine),n.setCursor("crosshair")}}class ug extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyS)}work(t,n){n.toolManager.setCurrentTool(ft.SHAPE,_.Rect),n.setCursor("crosshair"),n.previewManager.addPreviewNode(n),n.refreshEvent()}enable(t){return!0}}class pg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyC)}enable(t,n){return this.isPressMetaKey(t,n)}work(t,n){}shouldPreventDefault(){return!1}}class fg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyV)}enable(t,n){return this.isPressMetaKey(t,n)}work(t,n){}shouldPreventDefault(){return!1}}class gg extends vt{constructor(){super(...arguments);g(this,"duplicateWorker",new Sa);g(this,"type",Q.KeyD)}enable(t,n){return this.isPressMetaKey(t,n)}work(t,n){t.preventDefault(),n.execAction(new nt),this.duplicateWorker.work(n),n.execAction(new et)}}class yg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyA)}enable(t,n){return this.isPressMetaKey(t,n)}work(t,n){const s=[...n.nodeManager.root.children];if(s.length===0)return;const r=s.map(o=>o.id);n.execAction(new nt),n.execAction(Pt.create(r)),n.execAction(new et)}}class mg extends vt{constructor(){super(...arguments);g(this,"type",Q.BracketLeft);g(this,"moveLayerWorker",new Os)}enable(t,n){return this.isPressMetaKey(t,n)}work(t,n){this.moveLayerWorker.moveBackward(n)}}class wg extends vt{constructor(){super(...arguments);g(this,"type",Q.BracketRight);g(this,"moveLayerWorker",new Os)}enable(t,n){return this.isPressMetaKey(t,n)}work(t,n){this.moveLayerWorker.moveForward(n)}}class xg extends vt{constructor(){super(...arguments);g(this,"type",Q.BracketLeft);g(this,"moveLayerWorker",new Os)}enable(t,n){return t.altKey&&this.isPressMetaKey(t,n)}work(t,n){this.moveLayerWorker.moveToBack(n)}}class Pg extends vt{constructor(){super(...arguments);g(this,"type",Q.BracketRight);g(this,"moveLayerWorker",new Os)}enable(t,n){return t.altKey&&this.isPressMetaKey(t,n)}work(t,n){this.moveLayerWorker.moveToUp(n)}}class bg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyF)}work(t,n){n.toolManager.setCurrentTool(ft.SECTION),n.setCursor("crosshair"),n.previewManager.addPreviewNode(n),n.refreshEvent()}enable(t){return!0}}class vg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyG);g(this,"worker",new gr)}work(t,n){const s=[...n.getSelectNodes()];this.worker.group(s,n)}enable(t,n){return this.isPressMetaKey(t,n)}}class Mg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyG);g(this,"worker",new gr)}work(t,n){const s=[...n.getSelectNodes()];if(s.length!==1)return;const r=s[0];if(r.type!==A.Group)return;const o=r;this.worker.unGroup(o,n)}enable(t,n){return this.isPressMetaKey(t,n)&&t.shiftKey}}class Sg extends vt{constructor(){super(...arguments);g(this,"type",Q.Space)}enable(t){return!0}work(t,n){n.toolManager.setCurrentTool(ft.HandTool),n.refreshEvent()}keyUp(t,n){n.toolManager.resetTool(),n.refreshEvent()}}class Tg extends vt{constructor(){super(...arguments);g(this,"type",Q.Backspace);g(this,"worker",new Mo)}work(t,n){this.worker.work(n)}enable(t){return!0}}class Cg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyC);g(this,"worker",new vs)}enable(t,n){return this.isPressMetaKey(t,n)&&t.shiftKey}work(t,n){const s=n.getSelectNodes();s.size!==1||[...s][0].type!==A.IMG||(t.preventDefault(),this.worker.intoCrop(n))}}class Lg extends vt{constructor(){super(...arguments);g(this,"type",Q.KeyH)}work(t,n){n.toolManager.setCurrentTool(ft.HandTool),n.setCursor("grab"),n.refreshEvent()}enable(t){return!0}}class Ag extends vt{constructor(){super(...arguments);g(this,"type",Q.Digit1)}work(t,n){n.renderManager.zoomToFit(n.asyncRenderNodeManager)}enable(t){return t.shiftKey}}class Rg extends vt{constructor(){super(...arguments);g(this,"type",Q.Digit2)}work(t,n){n.renderManager.zoomToSelect(n.asyncRenderNodeManager)}enable(t){return t.shiftKey}}class Ng extends vt{constructor(){super(...arguments);g(this,"type",Q.Digit3)}work(t,n){n.renderManager.zoomTo100(n.asyncRenderNodeManager)}enable(t){return t.shiftKey}}const bl=new Map([[Q.Delete,[new yl]],[Q.Backspace,[new Tg]],[Q.Digit1,[new Ag]],[Q.Digit2,[new Rg]],[Q.Digit3,[new Ng]],[Q.KeyA,[new yg,new dg]],[Q.KeyC,[new Cg,new pg,new hg]],[Q.KeyD,[new gg]],[Q.KeyF,[new bg]],[Q.KeyV,[new fg]],[Q.KeyL,[new Pl]],[Q.KeyS,[new ug]],[Q.KeyR,[new ml]],[Q.KeyT,[new xl]],[Q.KeyH,[new Lg]],[Q.KeyZ,[new _o,new Ko]],[Q.KeyG,[new Mg,new vg]],[Q.Escape,[new wl]],[Q.Space,[new Sg]],[Q.BracketLeft,[new xg,new mg]],[Q.BracketRight,[new Pg,new wg]]]);class vl{constructor(e){g(this,"textConfig");g(this,"normalConfig");g(this,"context");this.context=e,this.textConfig=new Uo(gl),this.normalConfig=new Uo(bl)}keyDown(e,t){const n=this.getHotKey(e);n&&(n.shouldPreventDefault()&&(e.preventDefault(),e.stopPropagation()),n.keyDown(e,t))}keyUp(e,t){const n=this.getHotKey(e);n&&(n.shouldPreventDefault()&&(e.preventDefault(),e.stopPropagation()),n.keyUp(e,t))}getHotKey(e){return this.context.inputManager.isEdit()?this.textConfig.getKey(e):this.normalConfig.getKey(e)}}class Ml{constructor(e){g(this,"eventCtx");g(this,"hotKeyManager");g(this,"onKeyDown",e=>{this.onEnable(e)&&this.hotKeyManager.keyDown(e,this.eventCtx)});g(this,"onKeyUp",e=>{this.onEnable(e)&&this.hotKeyManager.keyUp(e,this.eventCtx)});this.eventCtx=e,this.hotKeyManager=new vl(e)}start(){document.addEventListener("keydown",this.onKeyDown,!0),document.addEventListener("keyup",this.onKeyUp,!0)}stop(){document.removeEventListener("keydown",this.onKeyDown,!0),document.removeEventListener("keyup",this.onKeyUp,!0)}onEnable(e){return this.eventCtx.docState.canEdit()?e.target===this.eventCtx.inputManager.renderInput.inputDom?!0:!(e.target instanceof HTMLInputElement||e.target instanceof HTMLTextAreaElement):!1}}class Eg{constructor(e){g(this,"ctx");this.ctx=e,e.actionManager.addNetworkPlugin(this)}addMessage(e){}addActionGroup(e){}initWebsocket(){}start(){}stop(){}onEnable(e){return!0}}class Ig{static getOolongApp(){const e=new go,t=new Yo(e),n=t.appContext,s=new _s(n,e),r=new Wo(n),o=new cl(n),i=new Ml(n),a=new Go(n),c=new dc(n);return t.registerPlugin(s),t.registerPlugin(r),t.registerPlugin(o),t.registerPlugin(i),t.registerPlugin(a),t.registerPlugin(c),t}static getReadOnlyApp(){const e=new go,t=new Yo(e),n=t.appContext,s=new _s(n,e),r=new Wo(n),o=new Go(n);return t.registerPlugin(s),t.registerPlugin(r),t.registerPlugin(o),t}}P.ANCHOR_COLOR=ni,P.ANCHOR_HOVER_RADIUS=Hr,P.ANCHOR_OFFSET=ti,P.ANCHOR_RADIUS=ei,P.AbsActionExecutor=on,P.AbsActionLog=an,P.AbsAlignHandler=Ln,P.AbsAlignSideHandler=$r,P.AbsArrowKey=zs,P.AbsAuxGraphic=Ct,P.AbsCreateDragProcessor=sr,P.AbsDetector=ne,P.AbsDrawer=In,P.AbsInputHandler=Lr,P.AbsInteractConfig=ha,P.AbsMainMode=Kn,P.AbsNetworkPlugin=El,P.AbsNodeManager=gc,P.AbsProps=Pe,P.AbsResourceInstance=tl,P.AbsStatusHandler=rn,P.AbsStretchProcessor=Qs,P.AbsSubMode=Ve,P.AbsTextSelectionHandler=pr,P.ActionCache=_i,P.ActionLogGroup=Us,P.ActionManager=ji,P.ActionMeta=Bi,P.ActionType=zt,P.AddExecutor=Di,P.AddNodeLog=Yt,P.AffineMatrix=Z,P.AlignBottomHandler=na,P.AlignHeightSideHandler=aa,P.AlignLeftHandler=sa,P.AlignLine=fi,P.AlignMoveWorker=oa,P.AlignRightHandler=ra,P.AlignStretchLine=gi,P.AlignStretchWorker=ca,P.AlignTopHandler=ea,P.AlignWidthSideHandler=ia,P.AlignWorker=cn,P.AppEventContext=cc,P.AppStage=Ig,P.ArrowDownKey=fl,P.ArrowLeftKey=ul,P.ArrowProps=Ie,P.ArrowRightKey=dl,P.ArrowUpKey=pl,P.AuxGraphicFactory=zr,P.AuxUtils=hi,P.AuxiliaryManager=vi,P.AuxiliaryType=N,P.BLOCK_COLOR=Or,P.BaseProps=gt,P.BorderProps=Ot,P.CanvasConfig=ng,P.CanvasContainer=og,P.CanvasInput=ig,P.CanvasRender=So,P.ClearFocusNodeHandler=ao,P.ClickExpandShapeHandler=Na,P.ClickHandler=ee,P.ClickMode=ln,P.ClickProcessor=We,P.ClickTextHandler=Ra,P.CollaborationManager=oh,P.ColorProps=Jt,P.ConnectProps=Pn,P.ConnectorPoint=kl,P.ControlPoint=Bl,P.CopyPasteManager=hc,P.CopyPastePlugin=dc,P.CopyPasteUtils=kn,P.CreateLineMode=tc,P.CreateRectBound=ui,P.CreateRectMode=Za,P.CreateTextMode=nc,P.CropProps=Mn,P.CursorProcessor=Ha,P.DHPCanvas=Vo,P.DbClickMode=Qr,P.DefaultBorderColorShape=Wu,P.DefaultClickMode=ka,P.DefaultClickProcessor=Ia,P.DefaultColorShape=Vu,P.DefaultFont=wh,P.DefaultLineHeight=Mh,P.DefaultMode=ja,P.DeleteKey=yl,P.DetectorEnum=W,P.DiffParaHandler=rc,P.DocState=fc,P.DownAndMoveStreamMode=ae,P.DragLineEndProcessor=Va,P.DragMode=Ca,P.DragProcessor=Ta,P.DragSelectTextMode=fa,P.DragSelectTextProcessor=pa,P.EditTextWorker=qn,P.EmptyNetworkPlugin=Eg,P.EndExecutor=Fi,P.EndLog=et,P.EnterHotKey=ll,P.EscKey=wl,P.ExecutorManager=Gi,P.ExpandDetector=qa,P.ExpandShapeButton=pi,P.FocusEnum=be,P.FocusNodeHandler=oo,P.GraphemeSplit=wo,P.GraphicNode=Sn,P.GraphicUtils=T,P.GroupMode=so,P.GroupProcessor=La,P.HOVER_ANCHOR_COLOR=si,P.HOVER_BOUND_COLOR=vn,P.HighlightRects=ai,P.HotKey=vt,P.HotKeyConfig=Uo,P.HotKeyManager=vl,P.HoverBound=ri,P.HoverNodeDetector=ua,P.HoverProcessor=co,P.ImageUtils=ac,P.InputCompositionEndHandler=al,P.InputCompositionHandler=il,P.InputEventPlugin=cl,P.InputNormalHandler=ol,P.InteractConfig=go,P.InteractiveEventType=yt,P.InteractiveManager=ta,P.InteractiveUtils=$t,P.IntlSplit=Ri,P.KeyCode=Q,P.KeyEventPlugin=Ml,P.LKey=Pl,P.LineArrowType=we,P.LineCreateDragProcessor=Ja,P.LineDashType=Ee,P.LineEndPointDetector=$a,P.LineProps=he,P.LineShapeType=Lt,P.LineSpacing=xh,P.LinkNode=Ws,P.MAX_SCALE=_r,P.MIN_SCALE=Ur,P.MOVE_ALIGN_BUFFER=jr,P.MainTextId=vh,P.MeasureWorker=Ii,P.MoveLayerWorker=Os,P.MultiSelectBound=ii,P.MultiSelectHandler=xi,P.NodeDetector=da,P.NodeFactory=Ge,P.NodeManager=wc,P.NodeSideEnum=$o,P.NodeTextPadding=Wt,P.NodeType=A,P.NormalMode=za,P.NormalResourceInstance=el,P.OolongAPI=uc,P.OolongApp=Yo,P.OolongImgNode=ys,P.OolongLine=dn,P.OolongNode=qe,P.OolongSVGNode=Ts,P.OolongSVGUtils=$n,P.OptionHelper=mi,P.PREVIEW_ROOT_ID=Qo,P.ParagraphSpacing=Ph,P.PasteNodeHandler=vo,P.Permission=pc,P.Point=m,P.PointerEventPlugin=_s,P.PolyLineControlPointDetector=sc,P.PropType=R,P.QuadBezierCurve=Ol,P.RKey=ml,P.ROOT_ID=Un,P.Rect=D,P.RectCreateDragProcessor=Qa,P.RedoKey=_o,P.RemoveExecutor=Hi,P.RemoveNodeLog=Fe,P.RenderManager=$i,P.RenderText=Wr,P.ResourceManager=nl,P.ResourceType=Gs,P.RootNode=bo,P.RotateDetector=dr,P.RotateMode=Ga,P.RotateProcessor=Wa,P.SELECT_BOUND_COLOR=re,P.SELECT_GROUP_COLOR=Dr,P.STRETCH_ALIGN_BUFFER=Ks,P.STRETCH_ALIGN_OFFSET=js,P.STRETCH_WIDTH=Jo,P.SameParaDiffLineHandler=mo,P.SameParaSameLineHandler=yo,P.SectionType=jn,P.SelectGroup=ci,P.SelectManager=bi,P.SelectNodeExecutor=Xi,P.SelectNodeLog=Pt,P.ShapeProps=jt,P.ShapeType=_,P.ShiftDownNodeHandler=ro,P.ShiftUpClickHandler=io,P.SingleSelectBound=oi,P.SingleStatusHandler=wi,P.SingleStretchMode=ya,P.SingleStretchProcessorV2=ga,P.SlotKeyType=te,P.SlotManager=Pi,P.StartExecutor=Yi,P.StartLog=nt,P.StreamMode=qs,P.StreamProcessor=ge,P.StretchAlignType=It,P.StretchDetector=$s,P.StretchHotBuffer=Yh,P.StretchMode=Ya,P.StretchProcessorV2=Xa,P.StretchRect=di,P.StretchType=G,P.TEXT_SELECTION_COLOR=Zo,P.TKey=xl,P.TextAlignType=xe,P.TextCharacter=Ei,P.TextCreateDragProcessor=ec,P.TextCursorMoveWorker=ki,P.TextCursorPosition=Ht,P.TextDeleteKey=hl,P.TextFocusExecutor=Vi,P.TextFocusLog=lt,P.TextLine=ms,P.TextParagraph=Vr,P.TextProps=se,P.TextSelection=li,P.TextSelectionDeleteWorker=ur,P.TextSelectionWorker=oc,P.TextSizeMode=le,P.TextWord=Ni,P.ToolEnum=ft,P.ToolManager=Ba,P.UndoKey=Ko,P.UndoRedoManager=Ui,P.UpdateExecutor=zi,P.UpdateNodeLog=ct,P.VisibleBuffer=Sh,P.WHITE_COLOR=sn,P.WheelEventPlugin=Wo,P.WheelUtils=ag,P.WindowResizePlugin=Go,P.actionExecutors=Wi,P.convertAction2MsgData=Lh,P.convertActionData2Log=Ah,P.disableAlignNodeType=Cn,P.disableAlignSideSet=qr,P.isContains=Gu,P.limitLineWidth=bh,P.normalKeyMap=bl,P.textKeyMap=gl,Object.defineProperty(P,Symbol.toStringTag,{value:"Module"})});
|