@inweb/client 25.2.2
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 +20 -0
- package/README.md +70 -0
- package/dist/client.js +21126 -0
- package/dist/client.js.map +1 -0
- package/dist/client.min.js +1 -0
- package/dist/client.module.js +7151 -0
- package/dist/client.module.js.map +1 -0
- package/lib/Api/Assembly.d.ts +339 -0
- package/lib/Api/ClashTest.d.ts +176 -0
- package/lib/Api/Client.d.ts +452 -0
- package/lib/Api/ClientEvents.d.ts +29 -0
- package/lib/Api/File.d.ts +568 -0
- package/lib/Api/HttpClient.d.ts +13 -0
- package/lib/Api/IAssembly.d.ts +14 -0
- package/lib/Api/IFile.d.ts +46 -0
- package/lib/Api/IHttpClient.d.ts +11 -0
- package/lib/Api/IUser.d.ts +11 -0
- package/lib/Api/Job.d.ts +142 -0
- package/lib/Api/Member.d.ts +85 -0
- package/lib/Api/Model.d.ts +147 -0
- package/lib/Api/Permission.d.ts +93 -0
- package/lib/Api/Project.d.ts +247 -0
- package/lib/Api/Role.d.ts +82 -0
- package/lib/Api/User.d.ts +197 -0
- package/lib/Api/impl/FetchError.d.ts +18 -0
- package/lib/Api/impl/Utils.d.ts +33 -0
- package/lib/Api/impl/http.d.ts +67 -0
- package/lib/ConvetMath.d.ts +29 -0
- package/lib/Viewer/CanvasEvents.d.ts +2 -0
- package/lib/Viewer/Commands/ApplyModelTransform.d.ts +2 -0
- package/lib/Viewer/Commands/ClearMarkup.d.ts +2 -0
- package/lib/Viewer/Commands/ClearSlices.d.ts +2 -0
- package/lib/Viewer/Commands/CreatePreview.d.ts +2 -0
- package/lib/Viewer/Commands/Explode.d.ts +2 -0
- package/lib/Viewer/Commands/GetDefaultViewPositions.d.ts +2 -0
- package/lib/Viewer/Commands/GetModels.d.ts +2 -0
- package/lib/Viewer/Commands/GetSelected.d.ts +2 -0
- package/lib/Viewer/Commands/HideSelected.d.ts +2 -0
- package/lib/Viewer/Commands/IsolateSelected.d.ts +2 -0
- package/lib/Viewer/Commands/RegenerateAll.d.ts +2 -0
- package/lib/Viewer/Commands/ResetView.d.ts +2 -0
- package/lib/Viewer/Commands/SelectModel.d.ts +2 -0
- package/lib/Viewer/Commands/SetActiveDragger.d.ts +2 -0
- package/lib/Viewer/Commands/SetDefaultViewPosition.d.ts +2 -0
- package/lib/Viewer/Commands/SetMarkupColor.d.ts +2 -0
- package/lib/Viewer/Commands/SetSelected.d.ts +2 -0
- package/lib/Viewer/Commands/ShowAll.d.ts +2 -0
- package/lib/Viewer/Commands/Unselect.d.ts +2 -0
- package/lib/Viewer/Commands/ZoomToExtents.d.ts +2 -0
- package/lib/Viewer/Commands/ZoomToObjects.d.ts +2 -0
- package/lib/Viewer/Commands/ZoomToSelected.d.ts +2 -0
- package/lib/Viewer/Commands.d.ts +3 -0
- package/lib/Viewer/Draggers/Actions/OrbitAction.d.ts +22 -0
- package/lib/Viewer/Draggers/Actions/PanAction.d.ts +18 -0
- package/lib/Viewer/Draggers/Actions/ZoomAction.d.ts +8 -0
- package/lib/Viewer/Draggers/Common/Geometry.d.ts +115 -0
- package/lib/Viewer/Draggers/Common/GestureManager.d.ts +41 -0
- package/lib/Viewer/Draggers/Common/OdBaseDragger.d.ts +54 -0
- package/lib/Viewer/Draggers/Common/OdaGeAction.d.ts +30 -0
- package/lib/Viewer/Draggers/MeasureLineDragger/MeasureLineItem.d.ts +31 -0
- package/lib/Viewer/Draggers/MeasureLineDragger/MeasureUtils.d.ts +20 -0
- package/lib/Viewer/Draggers/MeasureLineDragger/index.d.ts +24 -0
- package/lib/Viewer/Draggers/OdBaseCuttingPlaneDragger.d.ts +27 -0
- package/lib/Viewer/Draggers/OdCuttingPlaneXAxisDragger.d.ts +8 -0
- package/lib/Viewer/Draggers/OdCuttingPlaneYAxisDragger.d.ts +8 -0
- package/lib/Viewer/Draggers/OdCuttingPlaneZAxisDragger.d.ts +8 -0
- package/lib/Viewer/Draggers/OdOrbitDragger.d.ts +15 -0
- package/lib/Viewer/Draggers/OdPanDragger.d.ts +12 -0
- package/lib/Viewer/Draggers/OdZoomDragger.d.ts +12 -0
- package/lib/Viewer/Draggers/OdZoomWheelDragger.d.ts +11 -0
- package/lib/Viewer/Draggers/OdZoomWindowDragger/OdSelectionFrame.d.ts +19 -0
- package/lib/Viewer/Draggers/OdZoomWindowDragger/index.d.ts +14 -0
- package/lib/Viewer/Draggers/OdaLineDragger.d.ts +15 -0
- package/lib/Viewer/Draggers/OdaTextDragger.d.ts +16 -0
- package/lib/Viewer/Draggers/OdaWalkDragger.d.ts +30 -0
- package/lib/Viewer/Draggers/OrbitAroundBuildingDragger.d.ts +19 -0
- package/lib/Viewer/EventEmitter2.d.ts +54 -0
- package/lib/Viewer/ICommands.d.ts +25 -0
- package/lib/Viewer/IEventEmitter2.d.ts +13 -0
- package/lib/Viewer/IViewer.d.ts +27 -0
- package/lib/Viewer/Loaders/BaseLoader.d.ts +11 -0
- package/lib/Viewer/Loaders/LoaderFactory.d.ts +10 -0
- package/lib/Viewer/Loaders/TCSLoader.d.ts +5 -0
- package/lib/Viewer/Loaders/UpdaterController.d.ts +15 -0
- package/lib/Viewer/Loaders/VsfXLoader.d.ts +5 -0
- package/lib/Viewer/Loaders/VsfXPartialLoader.d.ts +5 -0
- package/lib/Viewer/Markup/Api/IMarkupArrow.d.ts +12 -0
- package/lib/Viewer/Markup/Api/IMarkupColorable.d.ts +5 -0
- package/lib/Viewer/Markup/Api/IMarkupEllipse.d.ts +15 -0
- package/lib/Viewer/Markup/Api/IMarkupImage.d.ts +15 -0
- package/lib/Viewer/Markup/Api/IMarkupLine.d.ts +11 -0
- package/lib/Viewer/Markup/Api/IMarkupObject.d.ts +12 -0
- package/lib/Viewer/Markup/Api/IMarkupRectangle.d.ts +15 -0
- package/lib/Viewer/Markup/Api/IMarkupText.d.ts +13 -0
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaArrow.d.ts +32 -0
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaEllipse.d.ts +40 -0
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaImage.d.ts +36 -0
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaLine.d.ts +32 -0
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaRectangle.d.ts +38 -0
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaText.d.ts +37 -0
- package/lib/Viewer/Markup/IMarkup.d.ts +38 -0
- package/lib/Viewer/Markup/Impl/Konva/KonvaMarkup.d.ts +63 -0
- package/lib/Viewer/Markup/Impl/Konva/MarkupColor.d.ts +19 -0
- package/lib/Viewer/Markup/Impl/Visualize/VisualizeMarkup.d.ts +33 -0
- package/lib/Viewer/Markup/MarkupFactory.d.ts +7 -0
- package/lib/Viewer/Options.d.ts +228 -0
- package/lib/Viewer/OptionsEvents.d.ts +26 -0
- package/lib/Viewer/Viewer.d.ts +353 -0
- package/lib/Viewer/ViewerCommands.d.ts +23 -0
- package/lib/Viewer/ViewerEvents.d.ts +601 -0
- package/lib/Viewer/utils.d.ts +4 -0
- package/lib/index.d.ts +24 -0
- package/package.json +32 -0
- package/src/Api/Assembly.ts +678 -0
- package/src/Api/ClashTest.ts +290 -0
- package/src/Api/Client.ts +816 -0
- package/src/Api/ClientEvents.ts +31 -0
- package/src/Api/File.ts +962 -0
- package/src/Api/HttpClient.ts +73 -0
- package/src/Api/IAssembly.ts +37 -0
- package/src/Api/IFile.ts +74 -0
- package/src/Api/IHttpClient.ts +50 -0
- package/src/Api/IUser.ts +33 -0
- package/src/Api/Job.ts +253 -0
- package/src/Api/Member.ts +161 -0
- package/src/Api/Model.ts +259 -0
- package/src/Api/Permission.ts +173 -0
- package/src/Api/Project.ts +479 -0
- package/src/Api/Role.ts +158 -0
- package/src/Api/User.ts +357 -0
- package/src/Api/impl/FetchError.ts +48 -0
- package/src/Api/impl/Utils.ts +367 -0
- package/src/Api/impl/http.ts +92 -0
- package/src/ConvetMath.ts +372 -0
- package/src/Viewer/CanvasEvents.ts +41 -0
- package/src/Viewer/Commands/ApplyModelTransform.ts +70 -0
- package/src/Viewer/Commands/ClearMarkup.ts +28 -0
- package/src/Viewer/Commands/ClearSlices.ts +27 -0
- package/src/Viewer/Commands/CreatePreview.ts +33 -0
- package/src/Viewer/Commands/Explode.ts +38 -0
- package/src/Viewer/Commands/GetDefaultViewPositions.ts +36 -0
- package/src/Viewer/Commands/GetModels.ts +43 -0
- package/src/Viewer/Commands/GetSelected.ts +58 -0
- package/src/Viewer/Commands/HideSelected.ts +37 -0
- package/src/Viewer/Commands/IsolateSelected.ts +37 -0
- package/src/Viewer/Commands/RegenerateAll.ts +37 -0
- package/src/Viewer/Commands/ResetView.ts +43 -0
- package/src/Viewer/Commands/SelectModel.ts +52 -0
- package/src/Viewer/Commands/SetActiveDragger.ts +29 -0
- package/src/Viewer/Commands/SetDefaultViewPosition.ts +50 -0
- package/src/Viewer/Commands/SetMarkupColor.ts +29 -0
- package/src/Viewer/Commands/SetSelected.ts +47 -0
- package/src/Viewer/Commands/ShowAll.ts +37 -0
- package/src/Viewer/Commands/Unselect.ts +37 -0
- package/src/Viewer/Commands/ZoomToExtents.ts +43 -0
- package/src/Viewer/Commands/ZoomToObjects.ts +47 -0
- package/src/Viewer/Commands/ZoomToSelected.ts +39 -0
- package/src/Viewer/Commands.ts +81 -0
- package/src/Viewer/Draggers/Actions/OrbitAction.ts +250 -0
- package/src/Viewer/Draggers/Actions/PanAction.ts +102 -0
- package/src/Viewer/Draggers/Actions/ZoomAction.ts +45 -0
- package/src/Viewer/Draggers/Common/Geometry.ts +152 -0
- package/src/Viewer/Draggers/Common/GestureManager.ts +263 -0
- package/src/Viewer/Draggers/Common/OdBaseDragger.ts +270 -0
- package/src/Viewer/Draggers/Common/OdaGeAction.ts +146 -0
- package/src/Viewer/Draggers/MeasureLineDragger/MeasureLineItem.ts +248 -0
- package/src/Viewer/Draggers/MeasureLineDragger/MeasureUtils.ts +182 -0
- package/src/Viewer/Draggers/MeasureLineDragger/index.ts +166 -0
- package/src/Viewer/Draggers/OdBaseCuttingPlaneDragger.ts +182 -0
- package/src/Viewer/Draggers/OdCuttingPlaneXAxisDragger.ts +53 -0
- package/src/Viewer/Draggers/OdCuttingPlaneYAxisDragger.ts +53 -0
- package/src/Viewer/Draggers/OdCuttingPlaneZAxisDragger.ts +53 -0
- package/src/Viewer/Draggers/OdOrbitDragger.ts +70 -0
- package/src/Viewer/Draggers/OdPanDragger.ts +62 -0
- package/src/Viewer/Draggers/OdZoomDragger.ts +59 -0
- package/src/Viewer/Draggers/OdZoomWheelDragger.ts +103 -0
- package/src/Viewer/Draggers/OdZoomWindowDragger/OdSelectionFrame.ts +123 -0
- package/src/Viewer/Draggers/OdZoomWindowDragger/index.ts +75 -0
- package/src/Viewer/Draggers/OdaLineDragger.ts +80 -0
- package/src/Viewer/Draggers/OdaTextDragger.ts +118 -0
- package/src/Viewer/Draggers/OdaWalkDragger.ts +278 -0
- package/src/Viewer/Draggers/OrbitAroundBuildingDragger.ts +184 -0
- package/src/Viewer/EventEmitter2.ts +116 -0
- package/src/Viewer/ICommands.ts +53 -0
- package/src/Viewer/IEventEmitter2.ts +36 -0
- package/src/Viewer/IViewer.ts +55 -0
- package/src/Viewer/Loaders/BaseLoader.ts +40 -0
- package/src/Viewer/Loaders/LoaderFactory.ts +44 -0
- package/src/Viewer/Loaders/TCSLoader.ts +82 -0
- package/src/Viewer/Loaders/UpdaterController.ts +36 -0
- package/src/Viewer/Loaders/VsfXLoader.ts +87 -0
- package/src/Viewer/Loaders/VsfXPartialLoader.ts +208 -0
- package/src/Viewer/Markup/Api/IMarkupArrow.ts +15 -0
- package/src/Viewer/Markup/Api/IMarkupColorable.ts +4 -0
- package/src/Viewer/Markup/Api/IMarkupEllipse.ts +15 -0
- package/src/Viewer/Markup/Api/IMarkupImage.ts +15 -0
- package/src/Viewer/Markup/Api/IMarkupLine.ts +10 -0
- package/src/Viewer/Markup/Api/IMarkupObject.ts +15 -0
- package/src/Viewer/Markup/Api/IMarkupRectangle.ts +15 -0
- package/src/Viewer/Markup/Api/IMarkupText.ts +12 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaArrow.ts +119 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaEllipse.ts +113 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaImage.ts +121 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaLine.ts +99 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaRectangle.ts +113 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaText.ts +104 -0
- package/src/Viewer/Markup/IMarkup.ts +39 -0
- package/src/Viewer/Markup/Impl/Konva/KonvaMarkup.ts +872 -0
- package/src/Viewer/Markup/Impl/Konva/MarkupColor.ts +39 -0
- package/src/Viewer/Markup/Impl/Visualize/VisualizeMarkup.ts +273 -0
- package/src/Viewer/Markup/MarkupFactory.ts +32 -0
- package/src/Viewer/Options.ts +502 -0
- package/src/Viewer/OptionsEvents.ts +28 -0
- package/src/Viewer/Viewer.ts +1109 -0
- package/src/Viewer/ViewerCommands.ts +45 -0
- package/src/Viewer/ViewerEvents.ts +700 -0
- package/src/Viewer/utils.ts +74 -0
- package/src/index.ts +48 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sources":["../packages/client/src/Api/Model.ts","../packages/client/src/Api/impl/http.ts","../packages/client/src/Api/impl/FetchError.ts","../packages/client/src/Api/impl/Utils.ts","../packages/client/src/Api/ClashTest.ts","../packages/client/src/Api/Assembly.ts","../packages/client/src/Viewer/CanvasEvents.ts","../packages/client/src/Viewer/EventEmitter2.ts","../packages/client/src/Api/HttpClient.ts","../packages/client/src/Viewer/Options.ts","../packages/client/src/Api/Permission.ts","../packages/client/src/Api/Job.ts","../packages/client/src/Api/File.ts","../packages/client/src/Api/Role.ts","../packages/client/src/Api/Member.ts","../packages/client/src/Api/Project.ts","../packages/client/src/Api/User.ts","../packages/client/src/Api/Client.ts","../packages/client/src/Viewer/Commands.ts","../packages/client/src/Viewer/Draggers/Common/OdaGeAction.ts","../packages/client/src/Viewer/Draggers/Common/OdBaseDragger.ts","../packages/client/src/Viewer/Draggers/MeasureLineDragger/MeasureUtils.ts","../packages/client/src/Viewer/Draggers/MeasureLineDragger/MeasureLineItem.ts","../packages/client/src/Viewer/Draggers/MeasureLineDragger/index.ts","../packages/client/src/Viewer/Draggers/OdaWalkDragger.ts","../packages/client/src/Viewer/Draggers/OdBaseCuttingPlaneDragger.ts","../packages/client/src/Viewer/Draggers/OdCuttingPlaneXAxisDragger.ts","../packages/client/src/Viewer/Draggers/OdCuttingPlaneYAxisDragger.ts","../packages/client/src/Viewer/Draggers/OdCuttingPlaneZAxisDragger.ts","../packages/client/src/Viewer/Draggers/Actions/OrbitAction.ts","../packages/client/src/Viewer/Draggers/OdOrbitDragger.ts","../packages/client/src/Viewer/Draggers/Actions/PanAction.ts","../packages/client/src/Viewer/Draggers/OdPanDragger.ts","../packages/client/src/Viewer/Draggers/Actions/ZoomAction.ts","../packages/client/src/Viewer/Draggers/OdZoomDragger.ts","../packages/client/src/Viewer/Draggers/OdZoomWheelDragger.ts","../packages/client/src/Viewer/Draggers/OdZoomWindowDragger/OdSelectionFrame.ts","../packages/client/src/Viewer/Draggers/OdZoomWindowDragger/index.ts","../packages/client/src/Viewer/Draggers/OrbitAroundBuildingDragger.ts","../packages/client/src/Viewer/Draggers/Common/GestureManager.ts","../packages/client/src/Viewer/utils.ts","../packages/client/src/Viewer/Loaders/BaseLoader.ts","../packages/client/src/Viewer/Loaders/TCSLoader.ts","../packages/client/src/Viewer/Loaders/UpdaterController.ts","../packages/client/src/Viewer/Loaders/VsfXLoader.ts","../packages/client/src/Viewer/Loaders/VsfXPartialLoader.ts","../packages/client/src/Viewer/Loaders/LoaderFactory.ts","../packages/client/src/Viewer/Markup/IMarkup.ts","../../../node_modules/konva/lib/Global.js","../../../node_modules/konva/lib/Util.js","../../../node_modules/konva/lib/Validators.js","../../../node_modules/konva/lib/Factory.js","../../../node_modules/konva/lib/Context.js","../../../node_modules/konva/lib/Canvas.js","../../../node_modules/konva/lib/DragAndDrop.js","../../../node_modules/konva/lib/Node.js","../../../node_modules/konva/lib/Container.js","../../../node_modules/konva/lib/PointerEvents.js","../../../node_modules/konva/lib/Stage.js","../../../node_modules/konva/lib/Shape.js","../../../node_modules/konva/lib/Layer.js","../../../node_modules/konva/lib/FastLayer.js","../../../node_modules/konva/lib/Group.js","../../../node_modules/konva/lib/Animation.js","../../../node_modules/konva/lib/Tween.js","../../../node_modules/konva/lib/_CoreInternals.js","../../../node_modules/konva/lib/shapes/Arc.js","../../../node_modules/konva/lib/shapes/Line.js","../../../node_modules/konva/lib/BezierFunctions.js","../../../node_modules/konva/lib/shapes/Path.js","../../../node_modules/konva/lib/shapes/Arrow.js","../../../node_modules/konva/lib/shapes/Circle.js","../../../node_modules/konva/lib/shapes/Ellipse.js","../../../node_modules/konva/lib/shapes/Image.js","../../../node_modules/konva/lib/shapes/Label.js","../../../node_modules/konva/lib/shapes/Rect.js","../../../node_modules/konva/lib/shapes/RegularPolygon.js","../../../node_modules/konva/lib/shapes/Ring.js","../../../node_modules/konva/lib/shapes/Sprite.js","../../../node_modules/konva/lib/shapes/Star.js","../../../node_modules/konva/lib/shapes/Text.js","../../../node_modules/konva/lib/shapes/TextPath.js","../../../node_modules/konva/lib/shapes/Transformer.js","../../../node_modules/konva/lib/shapes/Wedge.js","../../../node_modules/konva/lib/filters/Blur.js","../../../node_modules/konva/lib/filters/Brighten.js","../../../node_modules/konva/lib/filters/Contrast.js","../../../node_modules/konva/lib/filters/Emboss.js","../../../node_modules/konva/lib/filters/Enhance.js","../../../node_modules/konva/lib/filters/Grayscale.js","../../../node_modules/konva/lib/filters/HSL.js","../../../node_modules/konva/lib/filters/HSV.js","../../../node_modules/konva/lib/filters/Invert.js","../../../node_modules/konva/lib/filters/Kaleidoscope.js","../../../node_modules/konva/lib/filters/Mask.js","../../../node_modules/konva/lib/filters/Noise.js","../../../node_modules/konva/lib/filters/Pixelate.js","../../../node_modules/konva/lib/filters/Posterize.js","../../../node_modules/konva/lib/filters/RGB.js","../../../node_modules/konva/lib/filters/RGBA.js","../../../node_modules/konva/lib/filters/Sepia.js","../../../node_modules/konva/lib/filters/Solarize.js","../../../node_modules/konva/lib/filters/Threshold.js","../../../node_modules/konva/lib/_FullInternals.js","../../../node_modules/konva/lib/index.js","../packages/client/src/Viewer/Markup/Impl/Konva/MarkupColor.ts","../packages/client/src/Viewer/Markup/Api/Impl/Konva/KonvaLine.ts","../packages/client/src/Viewer/Markup/Api/Impl/Konva/KonvaText.ts","../packages/client/src/Viewer/Markup/Api/Impl/Konva/KonvaRectangle.ts","../packages/client/src/Viewer/Markup/Api/Impl/Konva/KonvaEllipse.ts","../packages/client/src/Viewer/Markup/Api/Impl/Konva/KonvaArrow.ts","../packages/client/src/Viewer/Markup/Api/Impl/Konva/KonvaImage.ts","../packages/client/src/Viewer/Markup/Impl/Konva/KonvaMarkup.ts","../packages/client/src/Viewer/Draggers/OdaLineDragger.ts","../packages/client/src/Viewer/Draggers/OdaTextDragger.ts","../packages/client/src/Viewer/Markup/Impl/Visualize/VisualizeMarkup.ts","../packages/client/src/Viewer/Markup/MarkupFactory.ts","../packages/client/src/Viewer/Viewer.ts","../packages/client/src/Viewer/Commands/ApplyModelTransform.ts","../packages/client/src/Viewer/Commands/ClearMarkup.ts","../packages/client/src/Viewer/Commands/ClearSlices.ts","../packages/client/src/Viewer/Commands/CreatePreview.ts","../packages/client/src/Viewer/Commands/Explode.ts","../packages/client/src/Viewer/Commands/GetDefaultViewPositions.ts","../packages/client/src/Viewer/Commands/GetModels.ts","../packages/client/src/Viewer/Commands/GetSelected.ts","../packages/client/src/Viewer/Commands/HideSelected.ts","../packages/client/src/Viewer/Commands/IsolateSelected.ts","../packages/client/src/Viewer/Commands/RegenerateAll.ts","../packages/client/src/Viewer/Commands/ResetView.ts","../packages/client/src/Viewer/Commands/SelectModel.ts","../packages/client/src/Viewer/Commands/SetActiveDragger.ts","../packages/client/src/Viewer/Commands/SetDefaultViewPosition.ts","../packages/client/src/Viewer/Commands/SetMarkupColor.ts","../packages/client/src/Viewer/Commands/SetSelected.ts","../packages/client/src/Viewer/Commands/ShowAll.ts","../packages/client/src/Viewer/Commands/Unselect.ts","../packages/client/src/Viewer/Commands/ZoomToExtents.ts","../packages/client/src/Viewer/Commands/ZoomToObjects.ts","../packages/client/src/Viewer/Commands/ZoomToSelected.ts","../packages/client/src/index.ts"],"sourcesContent":["///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { File } from \"./File\";\r\nimport { Assembly } from \"./Assembly\";\r\n\r\n/**\r\n * The class representing the is a description of view of the file or assembly. For example,\r\n * for `dwg` it is a `Model` space or layout, and for `rvt` files it is a `3D` view.\r\n */\r\nexport class Model {\r\n private _data: any;\r\n private _file: File | Assembly;\r\n public httpClient: IHttpClient;\r\n public path: string;\r\n\r\n /**\r\n * @param data - An object that implements model data storage.\r\n * @param file - The `File` of 'Assembly' instance that owns the model.\r\n */\r\n constructor(data: any, file: File | Assembly) {\r\n this.path = `${file.path}/downloads`;\r\n this.httpClient = file.httpClient;\r\n this._file = file;\r\n this._data = data;\r\n }\r\n\r\n /**\r\n * The `Assembly` instance that owns the model.\r\n *\r\n * @readonly\r\n */\r\n get assembly(): Assembly {\r\n return this._file as Assembly;\r\n }\r\n\r\n /**\r\n * Raw model data received from the server.\r\n *\r\n * @readonly\r\n */\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private set data(value: any) {\r\n this._data = value;\r\n }\r\n\r\n /**\r\n * Scene description file resource ID. Use {@link Model#downloadResource | downloadResource()}\r\n * to download scene description file.\r\n *\r\n * @readonly\r\n */\r\n get database(): string {\r\n return this.data.database;\r\n }\r\n\r\n /**\r\n * `true` if this is default model.\r\n *\r\n * @readonly\r\n */\r\n get default(): boolean {\r\n return this.data.default;\r\n }\r\n\r\n /**\r\n * The `File` instance that owns the model.\r\n *\r\n * @readonly\r\n */\r\n get file(): File {\r\n return this._file as File;\r\n }\r\n\r\n /**\r\n * The ID of the file that owns the model.\r\n *\r\n * @readonly\r\n */\r\n get fileId(): string {\r\n return this.data.fileId;\r\n }\r\n\r\n /**\r\n * The list of resource IDs for geometry data files. Use\r\n * {@link Model#downloadResource | downloadResource()} to download geometry data files.\r\n *\r\n * @readonly\r\n */\r\n get geometry(): string[] {\r\n return this.data.geometry;\r\n }\r\n\r\n /**\r\n * Unique model ID.\r\n *\r\n * @readonly\r\n */\r\n get id(): string {\r\n return this.data.id;\r\n }\r\n\r\n /**\r\n * Model name.\r\n *\r\n * @readonly\r\n */\r\n get name(): string {\r\n return this.data.name;\r\n }\r\n\r\n // Reserved for future use.\r\n get version(): string {\r\n return this.data.version;\r\n }\r\n\r\n /**\r\n * Returns model viewpoint list.\r\n *\r\n * _**Note**: Assemblу models do not support viewpoints_.\r\n *\r\n * @async\r\n */\r\n getViewpoints(): Promise<any[]> {\r\n return this._file\r\n .getViewpoints()\r\n .then((array) =>\r\n array.filter(\r\n ({ custom_fields = {} }) => custom_fields.modelId === this.id || custom_fields.modelName === this.name\r\n )\r\n );\r\n }\r\n\r\n /**\r\n * Add new model viewpoint. To create a new viewpoint use\r\n * {@link Viewer#createViewpoint | Viewer.createViewpoint()}.\r\n *\r\n * _**Note**: Assemblу models do not support viewpoints_.\r\n *\r\n * @async\r\n * @param viewpoint - Viewpoint.\r\n */\r\n saveViewpoint(viewpoint: any): Promise<any> {\r\n return this._file.saveViewpoint({\r\n ...viewpoint,\r\n custom_fields: { ...viewpoint.custom_fields, modelId: this.id, modelName: this.name },\r\n });\r\n }\r\n\r\n /**\r\n * Delete model viewpoint.\r\n *\r\n * _**Note**: Assemblу models do not support viewpoints_.\r\n *\r\n * @async\r\n * @param guid - Viewpoint GUID.\r\n * @returns Returns the raw data of a deleted viewpoint.\r\n */\r\n deleteViewpoint(guid: string): Promise<any> {\r\n return this._file.deleteViewpoint(guid);\r\n }\r\n\r\n /**\r\n * Returns viewpoint preview image as <a\r\n * href=\"https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\"\r\n * target=\"_blank\">Data URL</a>.\r\n *\r\n * @async\r\n * @param guid - Viewpoint GIID.\r\n */\r\n getSnapshot(guid: string): Promise<string> {\r\n return this._file.getSnapshot(guid);\r\n }\r\n\r\n /**\r\n * Returns snapshot data.\r\n *\r\n * @async\r\n * @param guid - Viewpoint GUID.\r\n * @param bitmapGuid - Bitmap GUID.\r\n */\r\n getSnapshotData(guid: string, bitmapGuid: string): Promise<string> {\r\n return this._file.getSnapshotData(guid, bitmapGuid);\r\n }\r\n\r\n /**\r\n * Downloads model resource, such as scene description file or geometry data files.\r\n *\r\n * @async\r\n * @param resourceId - Resource ID.\r\n * @param onProgress - Download progress callback.\r\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\r\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\r\n * and abort it if desired.\r\n */\r\n downloadResource(\r\n dataId: string,\r\n onProgress?: (progress: number) => void,\r\n signal?: AbortSignal\r\n ): Promise<ArrayBuffer> {\r\n return this._file.downloadResource(dataId, onProgress, signal);\r\n }\r\n\r\n // Internal download routines used by Viewer.\r\n\r\n partialDownloadResource(\r\n dataId: string,\r\n onProgress?: (progress: number, downloaded: Uint8Array) => void,\r\n signal?: AbortSignal\r\n ): Promise<void> {\r\n return this._file.partialDownloadResource(dataId, onProgress, signal);\r\n }\r\n\r\n downloadFileRange(\r\n requestId: number,\r\n records: any | null,\r\n dataId: string,\r\n onProgress?: (progress: number, downloaded: Uint8Array, requestId: number) => void,\r\n signal?: AbortSignal\r\n ): Promise<void> {\r\n return this._file.downloadFileRange(requestId, records, dataId, onProgress, signal);\r\n }\r\n\r\n /**\r\n * Returns a list of references to files used to extract geometry data.\r\n *\r\n * @async\r\n * @param [signal] - An <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\r\n * signal object instance, which can be used to abort waiting as desired.\r\n */\r\n getReferences(signal?: AbortSignal) {\r\n return this._file.getReferences(signal);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nexport const STATUS_CODES = {\r\n 100: \"Continue\",\r\n 101: \"Switching Protocols\",\r\n 102: \"Processing\",\r\n 103: \"Early Hints\",\r\n 200: \"OK\",\r\n 201: \"Created\",\r\n 202: \"Accepted\",\r\n 203: \"Non-Authoritative Information\",\r\n 204: \"No Content\",\r\n 205: \"Reset Content\",\r\n 206: \"Partial Content\",\r\n 207: \"Multi-Status\",\r\n 208: \"Already Reported\",\r\n 226: \"IM Used\",\r\n 300: \"Multiple Choices\",\r\n 301: \"Moved Permanently\",\r\n 302: \"Found\",\r\n 303: \"See Other\",\r\n 304: \"Not Modified\",\r\n 305: \"Use Proxy\",\r\n 307: \"Temporary Redirect\",\r\n 308: \"Permanent Redirect\",\r\n 400: \"Bad Request\",\r\n 401: \"Unauthorized\",\r\n 402: \"Payment Required\",\r\n 403: \"Forbidden\",\r\n 404: \"Not Found\",\r\n 405: \"Method Not Allowed\",\r\n 406: \"Not Acceptable\",\r\n 407: \"Proxy Authentication Required\",\r\n 408: \"Request Time-out\",\r\n 409: \"Conflict\",\r\n 410: \"Gone\",\r\n 411: \"Length Required\",\r\n 412: \"Precondition Failed\",\r\n 413: \"Payload Too Large\",\r\n 414: \"URI Too Long\",\r\n 415: \"Unsupported Media Type\",\r\n 416: \"Range Not Satisfiable\",\r\n 417: \"Expectation Failed\",\r\n 418: \"I'm a teapot\",\r\n 421: \"Misdirected Request\",\r\n 422: \"Unprocessable Entity\",\r\n 423: \"Locked\",\r\n 424: \"Failed Dependency\",\r\n 425: \"Too Early\",\r\n 426: \"Upgrade Required\",\r\n 428: \"Precondition Required\",\r\n 429: \"Too Many Requests\",\r\n 431: \"Header Fields Too Large\",\r\n 451: \"Unavailable For Legal Reasons\",\r\n 500: \"Internal Server Error\",\r\n 501: \"Not Implemented\",\r\n 502: \"Bad Gateway\",\r\n 503: \"Service Unavailable\",\r\n 504: \"Gateway Timeout\",\r\n 505: \"HTTP Version Not Supported\",\r\n 506: \"Variant Also Negotiates\",\r\n 507: \"Insufficient Storage\",\r\n 508: \"Loop Detected\",\r\n 509: \"Bandwidth Limit Exceeded\",\r\n 510: \"Not Extended\",\r\n 511: \"Network Authentication Required\",\r\n};\r\n\r\nexport function statusText(status: number): string {\r\n return STATUS_CODES[status] || `Error ${status}`;\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { statusText } from \"./http\";\r\n\r\n/**\r\n * The `FetchError` object indicates an error when request to Open Cloud Server could not be\r\n * performed. A `FetchError` is typically (but not exclusively) thrown when a network error\r\n * occurs, access denied, or object not found.\r\n */\r\n\r\nexport class FetchError extends Error {\r\n protected status: number;\r\n protected statusText: string;\r\n\r\n /**\r\n * @property status - The <a href=\"https://developer.mozilla.org/docs/Web/HTTP/Status\" target\r\n * =\"_blank\">HTTP status code</a> of the response.\r\n * @property message - Error message. Inherited from <a\r\n * href=\"https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Error\"\r\n * target =\"_blank\">Error</a>.\r\n */\r\n constructor(status: number, message?: string) {\r\n super(message || statusText(status));\r\n this.status = status;\r\n this.statusText = statusText(status);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { FetchError } from \"./FetchError\";\r\nimport { statusText } from \"./http\";\r\n\r\nexport function json(request: any): any {\r\n return request.then((response) => response.json());\r\n}\r\n\r\nexport function text(request: any): any {\r\n return request.then((response) => response.text());\r\n}\r\n\r\nexport function arrayBuffer(request: any): any {\r\n return request.then((response) => response.arrayBuffer());\r\n}\r\n\r\nfunction error400(text: string, _default = \"400\") {\r\n try {\r\n return JSON.parse(text).description;\r\n } catch {\r\n return _default;\r\n }\r\n}\r\n\r\nfunction handleXMLHttpError(xhr: any): Promise<any> {\r\n if (xhr.status === 0) {\r\n return Promise.reject(new FetchError(0, \"Network error\"));\r\n }\r\n if (xhr.status < 200 || xhr.status > 299) {\r\n switch (xhr.status) {\r\n case 400: {\r\n console.error(xhr.responseText);\r\n return Promise.reject(new FetchError(400, error400(xhr.responseText)));\r\n }\r\n case 500: {\r\n console.error(error400(xhr.responseText, xhr.responseText));\r\n return Promise.reject(new FetchError(500));\r\n }\r\n default: {\r\n return Promise.reject(new FetchError(xhr.status));\r\n }\r\n }\r\n }\r\n return Promise.resolve(xhr);\r\n}\r\n\r\nfunction handleFetchError(response: Response): Promise<Response> {\r\n if (!response.ok) {\r\n switch (response.status) {\r\n case 400: {\r\n return response.text().then((text) => {\r\n console.error(text);\r\n return Promise.reject(new FetchError(400, error400(text)));\r\n });\r\n }\r\n case 500: {\r\n return response.text().then((text) => {\r\n console.error(error400(text, text));\r\n return Promise.reject(new FetchError(500));\r\n });\r\n }\r\n default:\r\n return Promise.reject(new FetchError(response.status, statusText(response.status)));\r\n }\r\n }\r\n return Promise.resolve(response);\r\n}\r\n\r\nexport function $init(\r\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\",\r\n headers?: HeadersInit,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null,\r\n signal?: AbortSignal\r\n): RequestInit {\r\n headers = { ...headers };\r\n headers[\"Content-Type\"] = \"application/json\";\r\n\r\n if (method === \"POST\" || method === \"PUT\") {\r\n if (body instanceof FormData) {\r\n delete headers[\"Content-Type\"];\r\n } else if (body instanceof File || body instanceof Blob) {\r\n const formData = new FormData();\r\n formData.append(\"file\", body);\r\n return $init(method, headers, formData, signal);\r\n } else if (body instanceof ArrayBuffer) {\r\n const blob = new Blob([body]);\r\n return $init(method, headers, blob, signal);\r\n } else if (body && typeof body === \"object\") {\r\n body = JSON.stringify(body);\r\n } else if (typeof body === \"string\") {\r\n headers[\"Content-Type\"] = \"text/plain\";\r\n }\r\n }\r\n\r\n const result = { method, headers } as RequestInit;\r\n\r\n // body with type \"object\", converted to type \"string\" in the code above\r\n if (\r\n body &&\r\n (body instanceof ArrayBuffer ||\r\n body instanceof Blob ||\r\n body instanceof globalThis.File ||\r\n body instanceof FormData ||\r\n typeof body === \"string\")\r\n ) {\r\n result.body = body;\r\n }\r\n\r\n if (signal) result.signal = signal;\r\n\r\n return result;\r\n}\r\n\r\nexport function $fetch(url: RequestInfo | URL, init?: RequestInit): Promise<Response> {\r\n return fetch(url, init).then((response) => handleFetchError(response));\r\n}\r\n\r\nexport function $get(url: RequestInfo | URL, headers?: HeadersInit, signal?: AbortSignal): Promise<Response> {\r\n return $fetch(url, $init(\"GET\", headers, null, signal));\r\n}\r\n\r\nexport function $put(\r\n url: RequestInfo | URL,\r\n headers?: HeadersInit,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null\r\n) {\r\n return $fetch(url, $init(\"PUT\", headers, body));\r\n}\r\n\r\nexport function $post(\r\n url: RequestInfo | URL,\r\n headers?: HeadersInit,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null\r\n) {\r\n return $fetch(url, $init(\"POST\", headers, body));\r\n}\r\n\r\nexport function $delete(url: RequestInfo | URL, headers?: HeadersInit) {\r\n return $fetch(url, $init(\"DELETE\", headers));\r\n}\r\n\r\nexport function streamProgress(stream: ReadableStream<Uint8Array>, onprogress: (progress: number) => void) {\r\n const reader = stream.getReader();\r\n let current = 0;\r\n\r\n function calc(ev) {\r\n if (!ev.done) {\r\n reader.read().then(calc).catch(console.error);\r\n }\r\n if (ev.value) current += ev.value.length;\r\n onprogress(current);\r\n }\r\n\r\n reader.read().then(calc).catch(console.error);\r\n\r\n return stream;\r\n}\r\n\r\nexport function downloadProgress(response: Response, onprogress?: (progress: number) => void): Response {\r\n const contentLength = response.headers.get(\"Content-Length\") ?? \"\";\r\n const total = parseInt(contentLength, 10);\r\n const tee = response.body.tee();\r\n streamProgress(tee[0], (bytesCount: number) => onprogress && onprogress(bytesCount / total));\r\n return new Response(tee[1]);\r\n}\r\n\r\ninterface XMLHttpParams {\r\n headers: HeadersInit;\r\n method: \"GET\" | \"POST\" | \"PUT\" | \"DELETE\";\r\n body?: XMLHttpRequestBodyInit | Document;\r\n uploadProgress?: (progress: number) => void;\r\n downloadProgress?: (progress: number) => void;\r\n}\r\n\r\nexport function $XMLHttp(\r\n url: string,\r\n { headers, method, body, uploadProgress, downloadProgress }: XMLHttpParams\r\n): Promise<XMLHttpRequest> {\r\n return new Promise((resolve, reject) => {\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(method, url, true);\r\n for (const key in headers) {\r\n xhr.setRequestHeader(key, headers[key]);\r\n }\r\n function calcProgress(event) {\r\n return event.lengthComputable ? event.loaded / event.total : 1;\r\n }\r\n xhr.upload.onprogress = (event) => uploadProgress && uploadProgress(calcProgress(event));\r\n xhr.onprogress = (event) => downloadProgress && downloadProgress(calcProgress(event));\r\n xhr.onloadend = (event) => handleXMLHttpError(event.target).then(resolve, reject);\r\n xhr.send(body);\r\n });\r\n}\r\n\r\nfunction delay(ms: number, signal: AbortSignal) {\r\n return new Promise((resolve) => {\r\n let timeoutId = 0;\r\n\r\n const abortHandler = () => {\r\n clearTimeout(timeoutId);\r\n resolve(true);\r\n };\r\n\r\n timeoutId = window.setTimeout(() => {\r\n signal.removeEventListener(\"abort\", abortHandler);\r\n resolve(false);\r\n }, ms);\r\n\r\n signal.addEventListener(\"abort\", abortHandler, { once: true });\r\n });\r\n}\r\n\r\nexport async function waitFor(\r\n func: (params: any) => Promise<boolean>,\r\n params: {\r\n timeout?: number;\r\n interval?: number;\r\n signal?: AbortSignal;\r\n abortError?: DOMException;\r\n timeoutError?: DOMException;\r\n result?: any;\r\n } = {}\r\n) {\r\n const timeout = params.timeout ?? 600000;\r\n const interval = params.interval ?? 3000;\r\n const signal = params.signal ?? new AbortController().signal;\r\n const abortError = params.abortError ?? new DOMException(\"Aborted\", \"AbortError\");\r\n const timeoutError = params.timeoutError ?? new DOMException(\"Timeout\", \"TimeoutError\");\r\n\r\n const end = performance.now() + timeout;\r\n let count = timeout / interval;\r\n\r\n do {\r\n if (await func(params)) return Promise.resolve(params.result);\r\n if ((await delay(interval, signal)) || signal.aborted) return Promise.reject(abortError);\r\n } while (performance.now() < end && --count > 0);\r\n\r\n return Promise.reject(timeoutError);\r\n}\r\n\r\nexport async function downloadPartOfFile(\r\n requestId: number,\r\n records: any | null,\r\n url: string,\r\n defHeaders: HeadersInit,\r\n onProgress?: (progress: number, downloaded: Uint8Array, requestId: number) => void,\r\n signal?: AbortSignal\r\n): Promise<void> {\r\n const headers = { ...defHeaders };\r\n const isMultipleResourceParts = records && records.length;\r\n if (records) {\r\n const ranges: string[] = [];\r\n if (isMultipleResourceParts) {\r\n for (let i = 0; i < records.length; i++) {\r\n const record = records[i];\r\n ranges.push(`${record.begin}-${record.end}`);\r\n }\r\n } else {\r\n for (let i = 0; i < records.size(); i++) {\r\n const record = records.get(i);\r\n ranges.push(`${record.begin}-${record.end}`);\r\n record.delete();\r\n }\r\n }\r\n headers[\"Range\"] = \"bytes=\" + ranges.join(\",\");\r\n }\r\n\r\n const response = await $fetch(url, $init(\"GET\", headers, null, signal));\r\n const contentLength = response.headers.get(\"content-length\") ?? \"\";\r\n const total = parseInt(contentLength, 10);\r\n\r\n const reader = response.body.getReader();\r\n\r\n if (isMultipleResourceParts) {\r\n let curRecordIndex = 0;\r\n let curRecordPos = 0;\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n if (done) break;\r\n let totalLeft = value.byteLength;\r\n let loadedPos = 0;\r\n while (totalLeft > 0) {\r\n const curRecord = records[curRecordIndex];\r\n const recLeft = curRecord.size - curRecordPos;\r\n if (totalLeft < recLeft) {\r\n const buf = value.subarray(loadedPos, loadedPos + totalLeft);\r\n if (typeof onProgress === \"function\") onProgress(loadedPos / total, buf, curRecord.reqId);\r\n curRecordPos += totalLeft;\r\n totalLeft = 0;\r\n } else {\r\n const buf = value.subarray(loadedPos, loadedPos + recLeft);\r\n if (typeof onProgress === \"function\") onProgress(loadedPos / total, buf, curRecord.reqId);\r\n curRecordIndex++;\r\n curRecordPos = 0;\r\n loadedPos += recLeft;\r\n totalLeft -= recLeft;\r\n }\r\n }\r\n }\r\n } else {\r\n let loaded = 0;\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n if (done) break;\r\n loaded += value.byteLength;\r\n if (onProgress) onProgress(loaded / total, value, requestId);\r\n }\r\n }\r\n}\r\n\r\nexport function parseArgs(args: string | object): object {\r\n if (typeof args === \"string\") {\r\n const firstArg = args.indexOf(\"--\");\r\n if (firstArg !== -1) args = args.slice(firstArg);\r\n const argArray = args\r\n .split(\"--\")\r\n .map((x) =>\r\n x\r\n .split(\"=\")\r\n .map((y) => y.split(\" \"))\r\n .flat()\r\n )\r\n .filter((x) => x[0])\r\n .map((x) => x.concat([\"\"]));\r\n return Object.fromEntries(argArray);\r\n }\r\n return args ?? {};\r\n}\r\n\r\nexport function userFullName(firstName: string | any, lastName = \"\", userName = \"\"): string {\r\n if (firstName && typeof firstName !== \"string\") {\r\n return userFullName(firstName.firstName ?? firstName.name, firstName.lastName, firstName.userName);\r\n }\r\n return `${firstName ?? \"\"} ${lastName ?? \"\"}`.trim() || userName;\r\n}\r\n\r\nexport function userInitials(fullName = \"\"): string {\r\n const names = fullName.split(\" \").filter((x) => x);\r\n return names\r\n .reduce((initials, name, index) => {\r\n if (index === 0 || index === names.length - 1) initials += name.charAt(0);\r\n return initials;\r\n }, \"\")\r\n .toUpperCase();\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { IShortUserDescription } from \"./IUser\";\r\nimport { waitFor, userFullName, userInitials } from \"./impl/Utils\";\r\n\r\n/**\r\n * The base class provides information about the file/assembly clash detection test and test results.\r\n */\r\nexport class ClashTest {\r\n private _data: any;\r\n private basePath: string;\r\n private httpClient: IHttpClient;\r\n\r\n /**\r\n * @param data - Raw test data.\r\n * @param basePath - Clash tests API base path for the owner file/assembly.\r\n * @param httpClient - Http client.\r\n */\r\n constructor(data: any, basePath: string, httpClient: IHttpClient) {\r\n this.httpClient = httpClient;\r\n this.basePath = basePath;\r\n this.data = data;\r\n }\r\n\r\n protected internalGet(relativePath: string): Promise<any> {\r\n return this.httpClient.get(`${this.basePath}/clashes/${this.id}${relativePath}`);\r\n }\r\n\r\n protected internalPut(\r\n relativePath: string,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null\r\n ): Promise<any> {\r\n return this.httpClient.put(`${this.basePath}/clashes/${this.id}${relativePath}`, body);\r\n }\r\n\r\n protected internalDelete(relativePath: string): Promise<any> {\r\n return this.httpClient.delete(`${this.basePath}/clashes/${this.id}${relativePath}`);\r\n }\r\n\r\n /**\r\n * The type of the clashes that the test detects:\r\n *\r\n * - `Сlearance clash` (true) - a clash in which the entity A may or may not intersect with\r\n * entity B, but comes within a distance of less than the `tolerance`.\r\n * - `Hard clash` (false) - a clash in which the entity A intersects with entity B by a\r\n * distance of more than the `tolerance`.\r\n *\r\n * @readonly\r\n */\r\n get clearance(): boolean {\r\n return this.data.clearance;\r\n }\r\n\r\n /**\r\n * Test creation time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get createdAt(): string {\r\n return this.data.createdAt;\r\n }\r\n\r\n /**\r\n * Raw test data received from the server.\r\n *\r\n * @readonly\r\n */\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private set data(value: any) {\r\n this._data = value;\r\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\r\n this._data.owner.fullName = userFullName(this._data.owner);\r\n this._data.owner.initials = userInitials(this._data.owner.fullName);\r\n }\r\n\r\n /**\r\n * Unique test ID.\r\n *\r\n * @readonly\r\n */\r\n get id(): string {\r\n return this.data.id;\r\n }\r\n\r\n /**\r\n * Test last update (UTC) time in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get lastModifiedAt(): string {\r\n return this.data.lastModifiedAt;\r\n }\r\n\r\n /**\r\n * Test name.\r\n */\r\n get name(): string {\r\n return this.data.name;\r\n }\r\n\r\n set name(value: string) {\r\n this.data.name = value;\r\n }\r\n\r\n /**\r\n * Test owner information.\r\n *\r\n * @property {string} userId - User ID.\r\n * @property {string} userName - User name.\r\n * @property {string} name - First name.\r\n * @property {string} lastName - Last name.\r\n * @property {string} fullName - Full name.\r\n * @property {string} initials - Initials.\r\n * @property {string} email - User email.\r\n * @property {string} avatarUrl - User avatar image URL.\r\n * @readonly\r\n */\r\n get owner(): IShortUserDescription {\r\n return this.data.owner;\r\n }\r\n\r\n /**\r\n * First selection set for clash detection. Entities from `selectionSetA` will be tested\r\n * against each others by entities from the `selectionSetB` during the test.\r\n *\r\n * @readonly\r\n */\r\n get selectionSetA(): string[] {\r\n return this.data.selectionSetA;\r\n }\r\n\r\n /**\r\n * The type of first selection set for clash detection. Can be one of:\r\n *\r\n * - `all` - All file/assembly entities.\r\n * - `handle` - Entities with handles specified in the `selectionSetA`.\r\n * - `models` - Entities of file/assembly models specified in `selectionSetA`.\r\n * - `searchquery` - Entities retrieved by the search queries specified in `selectionSetA`.\r\n *\r\n * @readonly\r\n */\r\n get selectionTypeA(): string {\r\n return this.data.selectionTypeA;\r\n }\r\n\r\n /**\r\n * Second selection set for clash detection. Entities from `selectionSetB` will be tested\r\n * against each others by entities from the `selectionSetA` during the test.\r\n *\r\n * @readonly\r\n */\r\n get selectionSetB(): string[] {\r\n return this.data.selectionSetB;\r\n }\r\n\r\n /**\r\n * The type of second selection set for clash detection. Can be one of:\r\n *\r\n * - `all` - All file/assembly entities.\r\n * - `handle` - Entities with handles specified in the `selectionSetB`.\r\n * - `models` - Entities of file/assembly models specified in `selectionSetB`.\r\n * - `searchquery` - Entities retrieved by the search queries specified in `selectionSetB`.\r\n *\r\n * @readonly\r\n */\r\n get selectionTypeB(): string {\r\n return this.data.selectionTypeB;\r\n }\r\n\r\n /**\r\n * Test status. Can be `none`, `waiting`, `inprogress`, `done` or `failed`.\r\n *\r\n * @readonly\r\n */\r\n get status(): string {\r\n return this.data.status;\r\n }\r\n\r\n /**\r\n * The distance of separation between entities at which test begins detecting clashes.\r\n *\r\n * @readonly\r\n */\r\n get tolerance(): number {\r\n return this.data.tolerance;\r\n }\r\n\r\n /**\r\n * Refresh test data.\r\n *\r\n * @async\r\n */\r\n checkout(): Promise<this> {\r\n return this.internalGet(\"\")\r\n .then((response) => response.json())\r\n .then((data) => {\r\n this.data = data;\r\n return this;\r\n });\r\n }\r\n\r\n /**\r\n * Update test data on the server.\r\n *\r\n * @async\r\n * @param data - Raw test data.\r\n */\r\n update(data: any): Promise<this> {\r\n return this.internalPut(\"\", data)\r\n .then((response) => response.json())\r\n .then((data) => {\r\n this.data = data;\r\n return this;\r\n });\r\n }\r\n\r\n /**\r\n * Remove a test from a file.\r\n *\r\n * @async\r\n * @returns Returns the raw data of a deleted test.\r\n */\r\n delete(): Promise<any> {\r\n return this.internalDelete(\"\").then((response) => response.json());\r\n }\r\n\r\n /**\r\n * Save test data changes to the server. Call this method to update test data on the server\r\n * after any changes.\r\n *\r\n * @async\r\n */\r\n save(): Promise<this> {\r\n return this.update(this.data);\r\n }\r\n\r\n /**\r\n * Wait for test to complete. Test is done when it changes to `done` or `failed` status.\r\n *\r\n * @async\r\n * @param params - An object containing waiting parameters.\r\n * @param params.timeout - The time, in milliseconds that the function should wait test. If\r\n * test is not complete during this time, the `TimeoutError` exception will be thrown.\r\n * @param params.interval - The time, in milliseconds, the function should delay in between\r\n * checking test status.\r\n * @param params.signal- An <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\r\n * signal object instance, which can be used to abort waiting as desired.\r\n */\r\n waitForDone(params?: { timeout?: number; interval?: number; signal?: AbortSignal }) {\r\n const checkDone = () => this.checkout().then((test) => [\"done\", \"failed\"].includes(test.status));\r\n return waitFor(checkDone, params).then(() => this);\r\n }\r\n\r\n /**\r\n * Returns a report with the clash detection results for this test.\r\n *\r\n * @async\r\n */\r\n getReport(): Promise<any> {\r\n return this.internalGet(\"/report\").then((response) => response.json());\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { IAssociatedFileData, IAssemblyVersionInfo } from \"./IAssembly\";\r\nimport { IShortUserDescription } from \"./IUser\";\r\nimport { Model } from \"./Model\";\r\nimport { ClashTest } from \"./ClashTest\";\r\nimport { json, downloadProgress, downloadPartOfFile, waitFor, userFullName, userInitials } from \"./impl/Utils\";\r\nimport { FetchError } from \"./impl/FetchError\";\r\n\r\n/**\r\n * The class representing a `assembly` entity.\r\n */\r\nexport class Assembly {\r\n private _data: any;\r\n private _useVersion: number | undefined;\r\n public httpClient: IHttpClient;\r\n public path: string;\r\n\r\n /**\r\n * @param data - An object that implements assembly data storage.\r\n * @param httpClient - Http client.\r\n */\r\n constructor(data: any, httpClient: IHttpClient) {\r\n this.path = `/assemblies/${data.id}`;\r\n this.httpClient = httpClient;\r\n this.data = data;\r\n }\r\n\r\n public appendVersionParam(relativePath: string): string {\r\n if (this._useVersion === undefined) return relativePath;\r\n\r\n const delimiter = relativePath.includes(\"?\") ? \"&\" : \"?\";\r\n return `${relativePath}${delimiter}version=${this._useVersion}`;\r\n }\r\n\r\n protected internalGet(relativePath: string, signal?: AbortSignal) {\r\n relativePath = this.appendVersionParam(relativePath);\r\n return this.httpClient.get(`${this.path}${relativePath}`, signal);\r\n }\r\n\r\n protected internalPost(\r\n relativePath: string,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null\r\n ) {\r\n relativePath = this.appendVersionParam(relativePath);\r\n return this.httpClient.post(`${this.path}${relativePath}`, body);\r\n }\r\n\r\n protected internalPut(\r\n relativePath: string,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null\r\n ) {\r\n relativePath = this.appendVersionParam(relativePath);\r\n return this.httpClient.put(`${this.path}${relativePath}`, body);\r\n }\r\n\r\n protected internalDelete(relativePath: string) {\r\n relativePath = this.appendVersionParam(relativePath);\r\n return this.httpClient.delete(`${this.path}${relativePath}`);\r\n }\r\n\r\n async partialDownloadResource(\r\n dataId: string,\r\n onProgress?: (progress: number, downloaded: Uint8Array) => void,\r\n signal?: AbortSignal\r\n ): Promise<void> {\r\n let pathname = `${this.path}/downloads/${dataId}`;\r\n pathname = this.appendVersionParam(pathname);\r\n\r\n // TODO: replace with $get to handle fetch errors\r\n const response = await fetch(`${this.httpClient.serverUrl}${pathname}`, {\r\n headers: this.httpClient.headers,\r\n signal,\r\n });\r\n\r\n // TODO: use ReadableStream pipeTo()\r\n const contentLength = response.headers.get(\"Content-Length\") ?? \"\";\r\n const total = parseInt(contentLength, 10);\r\n const reader = response.body.getReader();\r\n let loaded = 0;\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n if (done) break;\r\n loaded += value.byteLength;\r\n if (typeof onProgress === \"function\") onProgress(loaded / total, value);\r\n }\r\n }\r\n\r\n downloadFileRange(\r\n requestId: number,\r\n records: any | null,\r\n dataId: string,\r\n onProgress?: (progress: number, downloaded: Uint8Array, requestId: number) => void,\r\n signal?: AbortSignal\r\n ): Promise<void> {\r\n let pathname = `${this.path}/downloads/${dataId}?requestId=${requestId}`;\r\n pathname = this.appendVersionParam(pathname);\r\n return downloadPartOfFile(\r\n requestId,\r\n records,\r\n `${this.httpClient.serverUrl}${pathname}`,\r\n this.httpClient.headers,\r\n onProgress,\r\n signal\r\n );\r\n }\r\n\r\n // Reserved for future use\r\n\r\n get activeVersion(): number {\r\n return this.data.activeVersion;\r\n }\r\n\r\n /**\r\n * List of unique files from which the assembly was created.\r\n *\r\n * @readonly\r\n */\r\n get associatedFiles(): IAssociatedFileData[] {\r\n return this.data.associatedFiles;\r\n }\r\n\r\n /**\r\n * Assembly creation time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get created(): string {\r\n return this.data.created;\r\n }\r\n\r\n /**\r\n * Raw assembly data received from the server.\r\n *\r\n * @readonly\r\n */\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private set data(value: any) {\r\n this._data = value;\r\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\r\n this._data.owner.fullName = userFullName(this._data.owner);\r\n this._data.owner.initials = userInitials(this._data.owner.fullName);\r\n // associatedFiles since 23.12\r\n this._data.associatedFiles ??= [];\r\n this._data.associatedFiles.forEach((file) => (file.link = `${this.httpClient.serverUrl}/files/${file.fileId}`));\r\n }\r\n\r\n /**\r\n * List of file IDs from which the assembly was created.\r\n *\r\n * @readonly\r\n */\r\n get files(): string[] {\r\n return this.data.files;\r\n }\r\n\r\n /**\r\n * Assembly geometry data type:\r\n *\r\n * - `vsfx` - VSFX, assembly can be opened in `VisualizeJS` viewer.\r\n *\r\n * Returns an empty string if geometry data has not yet been extracted.\r\n */\r\n get geometryType(): string {\r\n return this.status === \"done\" ? \"vsfx\" : \"\";\r\n }\r\n\r\n /**\r\n * Unique assembly ID.\r\n *\r\n * @readonly\r\n */\r\n get id(): string {\r\n return this.data.id;\r\n }\r\n\r\n /**\r\n * Assembly name.\r\n */\r\n get name(): string {\r\n return this.data.name;\r\n }\r\n\r\n set name(value: string) {\r\n this.data.name = value;\r\n }\r\n\r\n // Reserved for future use\r\n\r\n get originalAssemblyId(): string {\r\n return this.data.originalAssemblyId;\r\n }\r\n\r\n /**\r\n * Assembly owner information.\r\n *\r\n * @property {string} userId - User ID.\r\n * @property {string} userName - User name.\r\n * @property {string} name - First name.\r\n * @property {string} lastName - Last name.\r\n * @property {string} fullName - Full name.\r\n * @property {string} initials - Initials.\r\n * @property {string} email - User email.\r\n * @property {string} avatarUrl - User avatar image URL.\r\n * @readonly\r\n */\r\n get owner(): IShortUserDescription {\r\n return this.data.owner;\r\n }\r\n\r\n // Reserved for future use\r\n\r\n get previewUrl(): string {\r\n return this.data.previewUrl ?? \"\";\r\n }\r\n\r\n /**\r\n * List of assembly related job IDs.\r\n *\r\n * @readonly\r\n */\r\n get relatedJobs(): string[] {\r\n return this.data.relatedJobs;\r\n }\r\n\r\n /**\r\n * Assembly geometry data and properties status. Can be `waiting`, `inprogress`, `done` or `failed`.\r\n *\r\n * An assemblies without geometry data cannot be opened in viewer.\r\n *\r\n * @readonly\r\n */\r\n get status(): string {\r\n return this.data.status;\r\n }\r\n\r\n /**\r\n * Assembly type. Returns an `assembly`.\r\n *\r\n * @readonly\r\n */\r\n get type(): string {\r\n return \"assembly\";\r\n }\r\n\r\n // Reserved for future use\r\n\r\n get version(): number {\r\n return this.data.version;\r\n }\r\n\r\n get versions(): IAssemblyVersionInfo[] {\r\n return this.data.versions;\r\n }\r\n\r\n /**\r\n * Refresh assembly data.\r\n *\r\n * @async\r\n */\r\n async checkout(): Promise<Assembly> {\r\n this.data = await json(this.internalGet(\"\"));\r\n return this;\r\n }\r\n\r\n /**\r\n * Updates assembly data on the server.\r\n *\r\n * @async\r\n * @param data - Raw assembly data.\r\n */\r\n async update(data: any): Promise<Assembly> {\r\n this.data = await json(this.internalPut(\"\", data));\r\n return this;\r\n }\r\n\r\n /**\r\n * Delete the assembly from the server.\r\n *\r\n * @async\r\n * @returns Returns the raw data of a deleted assembly.\r\n */\r\n delete(): Promise<any> {\r\n return json(this.internalDelete(\"\"));\r\n }\r\n\r\n /**\r\n * Save assembly data changes to the server. Call this method to update assembly data on the\r\n * server after any changes.\r\n *\r\n * @async\r\n */\r\n save(): Promise<Assembly> {\r\n return this.update(this.data);\r\n }\r\n\r\n // Reserved for future use\r\n\r\n setPreview(image?: ArrayBuffer | Blob | globalThis.File | FormData | string | null) {\r\n console.warn(\"Assembly does not support preview\");\r\n return Promise.resolve(this);\r\n }\r\n\r\n /**\r\n * Returns list of assembly models.\r\n *\r\n * @async\r\n */\r\n getModels(): Promise<Model[]> {\r\n return json(this.internalGet(\"/geometry\")).then((array) => array.map((data) => new Model(data, this)));\r\n }\r\n\r\n /**\r\n * Transformation matrix.\r\n *\r\n * @typedef {any} Transform\r\n * @property {any} translate - Translation part, move along the X, Y, Z axes.\r\n * @property {number} translate.x - The value for substruct for X axes.\r\n * @property {number} translate.y - The value for substruct for Y axes.\r\n * @property {number} translate.z - The value for substruct for Z axes.\r\n * @property {any} rotation - Rotation part, rotate by the specified angle, around the\r\n * specified vector.\r\n * @property {number} rotation.x - X coordinate of the rotation vector.\r\n * @property {number} rotation.y - Y coordinate of the rotation vector.\r\n * @property {number} rotation.z - Z coordinate of the rotation vector.\r\n * @property {number} rotation.angle - The angle of rotation.\r\n * @property {number} scale - Scaling part, scale with multiplier, from center of extends.\r\n */\r\n\r\n /**\r\n * Returns a model transformation.\r\n *\r\n * @param handle - Model handle.\r\n */\r\n getModelTransformMatrix(handle: string): any {\r\n return this.data.transform[handle];\r\n }\r\n\r\n /**\r\n * Set or delete a model transformation.\r\n *\r\n * @async\r\n * @param handle - Model handle.\r\n * @param transform - Transformation matrix. To delete transformation provide this to `undefined`.\r\n */\r\n setModelTransformMatrix(handle: string, transform: any): Promise<Assembly> {\r\n const obj = { ...this.data.transform };\r\n obj[handle] = transform;\r\n return this.update({ transform: obj });\r\n }\r\n\r\n /**\r\n * Returns the properties for an objects in the assembly.\r\n *\r\n * @async\r\n * @param handles - Object original handle or handles array. Leave this parameter undefined\r\n * to get properties for all objects in the assembly.\r\n * @returns {Promise<any>}\r\n */\r\n getProperties(handles?: string | string[]): Promise<any[]> {\r\n return json(this.internalGet(handles !== undefined ? `/properties?handles=${handles}` : \"/properties\"));\r\n }\r\n\r\n /**\r\n * Returns the list of original handles for an objects in the file that match the specified\r\n * patterns. Search patterns may be combined using query operators.\r\n *\r\n * @async\r\n * @example <caption>Simple search pattern.</caption>\r\n * searchPattern = {\r\n * key: \"Category\",\r\n * value: \"OST_Stairs\",\r\n * };\r\n *\r\n * @example <caption>Search patterns combination.</caption>\r\n * searchPattern = {\r\n * $or: [\r\n * {\r\n * $and: [\r\n * { key: \"Category\", value: \"OST_GenericModel\" },\r\n * { key: \"Level\", value: \"03 - Floor\" },\r\n * ],\r\n * },\r\n * { key: \"Category\", value: \"OST_Stairs\" },\r\n * ],\r\n * };\r\n *\r\n * @param searchPattern - Search pattern or combination of the patterns, see example below.\r\n */\r\n searchProperties(searchPattern: any): Promise<any[]> {\r\n return json(this.internalPost(\"/properties/search\", searchPattern));\r\n }\r\n\r\n /**\r\n * Returns the cda.json for an assembly.\r\n *\r\n * @async\r\n */\r\n getCdaTree(): Promise<any[]> {\r\n return json(this.internalGet(`/properties/tree`));\r\n }\r\n\r\n // Reserved for future use\r\n\r\n getViewpoints(): Promise<[]> {\r\n console.warn(\"Assembly does not support viewpoints\");\r\n return Promise.resolve([]);\r\n }\r\n\r\n saveViewpoint(viewpoint: any): Promise<any> {\r\n console.warn(\"Assembly does not support viewpoints\");\r\n return Promise.resolve({});\r\n }\r\n\r\n deleteViewpoint(guid: any): Promise<any> {\r\n console.warn(\"Assembly does not support viewpoints\");\r\n return Promise.resolve({});\r\n }\r\n\r\n getSnapshot(guid: any): Promise<any> {\r\n console.warn(\"Assembly does not support viewpoints\");\r\n return Promise.resolve({});\r\n }\r\n\r\n getSnapshotData(guid: any, bitmapGuid: any): Promise<string> {\r\n console.warn(\"Assembly does not support viewpoints\");\r\n return Promise.resolve(\"\");\r\n }\r\n\r\n /**\r\n * Download assembly resource data, such as geometry data.\r\n *\r\n * @async\r\n * @param dataId - Resource ID.\r\n * @param onProgress - Download progress callback.\r\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\r\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\r\n * and abort it if desired.\r\n */\r\n downloadResource(\r\n dataId: string,\r\n onProgress?: (progress: number) => void,\r\n signal?: AbortSignal\r\n ): Promise<ArrayBuffer> {\r\n return this.internalGet(`/downloads/${dataId}`, signal)\r\n .then((response) => downloadProgress(response, onProgress))\r\n .then((response) => response.arrayBuffer());\r\n }\r\n\r\n // Reserved for future use\r\n\r\n getReferences(signal?: AbortSignal) {\r\n return Promise.resolve({ fileId: \"\", references: [] });\r\n }\r\n\r\n /**\r\n * Wait for assembly to be created. Assembly is created when it changes to `done` or `failed` status.\r\n *\r\n * @async\r\n * @param params - An object containing waiting parameters.\r\n * @param params.timeout - The time, in milliseconds that the function should wait assembly.\r\n * If assembly is not created during this time, the `TimeoutError` exception will be thrown.\r\n * @param params.interval - The time, in milliseconds, the function should delay in between\r\n * checking assembly status.\r\n * @param params.signal- An <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\r\n * signal object instance, which can be used to abort waiting as desired.\r\n * @param params.onCheckout - Waiting progress callback. Return `true` to cancel waiting.\r\n * @returns {Promise<Assembly>}\r\n */\r\n waitForDone(params?: {\r\n timeout?: number;\r\n interval?: number;\r\n signal?: AbortSignal;\r\n onCheckout?: (assembly: Assembly, ready: boolean) => boolean;\r\n }): Promise<Assembly> {\r\n const checkDone = () =>\r\n this.checkout().then((assembly) => {\r\n const ready = [\"done\", \"failed\"].includes(assembly.status);\r\n const cancel = params?.onCheckout?.(assembly, ready);\r\n return cancel || ready;\r\n });\r\n\r\n return waitFor(checkDone, params).then(() => this);\r\n }\r\n\r\n /**\r\n * Returns a list of assembly clash tests.\r\n *\r\n * @async\r\n * @param {number} start - The starting index in the test list. Used for paging.\r\n * @param {number} limit - The maximum number of tests that should be returned per request.\r\n * Used for paging.\r\n * @param {string} name - Filter the tests by part of the name.\r\n * @param {string | string[]} ids - List of tests IDs to return. You can specify multiple IDs\r\n * on one `string` by separating them with a \"|\".\r\n * @param {bool} sortByDesc - Allows to specify the descending order of the result. By\r\n * default tests are sorted by name in ascending order.\r\n * @param {string} sortField - Allows to specify sort field.\r\n */\r\n getClashTests(\r\n start?: number,\r\n limit?: number,\r\n name?: string,\r\n ids?: string | string[],\r\n sortByDesc?: boolean,\r\n sortField?: string\r\n ): Promise<{ allSize: number; start: number; limit: number; result: ClashTest[]; size: number }> {\r\n const searchParams = new URLSearchParams();\r\n if (start > 0) searchParams.set(\"start\", start.toString());\r\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\r\n if (name) searchParams.set(\"name\", name);\r\n if (ids) {\r\n if (Array.isArray(ids)) ids = ids.join(\"|\");\r\n if (typeof ids === \"string\") ids = ids.trim();\r\n if (ids) searchParams.set(\"id\", ids);\r\n }\r\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\r\n if (sortField) searchParams.set(\"sortField\", sortField);\r\n\r\n let queryString = searchParams.toString();\r\n if (queryString) queryString = \"?\" + queryString;\r\n\r\n return this.internalGet(`/clashes${queryString}`)\r\n .then((response) => response.json())\r\n .then((tests) => {\r\n return {\r\n ...tests,\r\n result: tests.result.map((data) => new ClashTest(data, this.path, this.httpClient)),\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Returns the assembly clash test information.\r\n *\r\n * @async\r\n * @param testId - Test ID.\r\n */\r\n getClashTest(testId: string): Promise<ClashTest> {\r\n return this.internalGet(`/clashes/${testId}`)\r\n .then((response) => response.json())\r\n .then((data) => new ClashTest(data, this.path, this.httpClient));\r\n }\r\n\r\n /**\r\n * Create assembly clash test. Assembly must be in a `done` state, otherwise the test will fail.\r\n *\r\n * @async\r\n * @param name - Test name.\r\n * @param selectionTypeA - The type of first selection set for clash detection. Can be `all`,\r\n * `handles`, `models` or `searchquery`.\r\n * @param selectionTypeB - The type of second selection set for clash detection. Can be\r\n * `all`, `handles`, `models` or `searchquery`.\r\n * @param selectionSetA - First selection set for clash detection.\r\n * @param selectionSetB - Second selection set for clash detection.\r\n * @param params - An object containing test parameters.\r\n * @param params.tolerance - The distance of separation between entities at which test begins\r\n * detecting clashes.\r\n * @param params.clearance - The type of the clashes that the test detects: `true` for\r\n * `Сlearance clash` or `false` for `Hard clash`.\r\n * @param params.waitForDone - Wait for test to complete.\r\n * @param params.timeout - The time, in milliseconds that the function should wait test. If\r\n * test is not complete during this time, the `TimeoutError` exception will be thrown.\r\n * @param params.interval - The time, in milliseconds, the function should delay in between\r\n * checking test status.\r\n * @param params.signal- An <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\r\n * signal object instance, which can be used to abort waiting as desired.\r\n */\r\n createClashTest(\r\n name: string,\r\n selectionTypeA: string,\r\n selectionTypeB: string,\r\n selectionSetA?: string | string[],\r\n selectionSetB?: string | string[],\r\n params?: {\r\n tolerance?: number | string;\r\n clearance?: boolean;\r\n waitForDone?: boolean;\r\n timeout?: number;\r\n interval?: number;\r\n signal?: AbortSignal;\r\n }\r\n ): Promise<ClashTest> {\r\n const { tolerance, clearance, waitForDone } = params ?? {};\r\n if (!Array.isArray(selectionSetA)) selectionSetA = [selectionSetA];\r\n if (!Array.isArray(selectionSetB)) selectionSetB = [selectionSetB];\r\n\r\n return this.internalPost(\"/clashes\", {\r\n name,\r\n selectionTypeA,\r\n selectionTypeB,\r\n selectionSetA,\r\n selectionSetB,\r\n tolerance,\r\n clearance,\r\n })\r\n .then((response) => response.json())\r\n .then((data) => new ClashTest(data, this.path, this.httpClient))\r\n .then((result) => (waitForDone ? result.waitForDone(params) : result));\r\n }\r\n\r\n /**\r\n * Delete assembly clash test.\r\n *\r\n * @async\r\n * @param testId - Test ID.\r\n * @returns Returns the raw data of a deleted test.\r\n */\r\n deleteClashTest(testId: string): Promise<any> {\r\n return this.internalDelete(`/clashes/${testId}`).then((response) => response.json());\r\n }\r\n\r\n // Reserved for future use\r\n\r\n updateVersion(\r\n files?: string[],\r\n params: {\r\n waitForDone?: boolean;\r\n timeout?: number;\r\n interval?: number;\r\n signal?: AbortSignal;\r\n onProgress?: (progress: number, file: globalThis.File) => void;\r\n } = {\r\n waitForDone: false,\r\n }\r\n ): Promise<Assembly> {\r\n return Promise.reject(new Error(\"Assembly version support will be implemeted in a future release\"));\r\n }\r\n\r\n getVersions(): Promise<Assembly[] | undefined> {\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n getVersion(version: number): Promise<Assembly> {\r\n return Promise.reject(new FetchError(404));\r\n }\r\n\r\n deleteVersion(version: number): Promise<any> {\r\n return Promise.reject(new FetchError(404));\r\n }\r\n\r\n setActiveVersion(version: number) {\r\n return this.update({ activeVersion: version });\r\n }\r\n\r\n useVersion(version?: number) {\r\n this._useVersion = undefined;\r\n return this;\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nexport const CANVAS_EVENTS = [\r\n \"click\",\r\n \"dblclick\",\r\n \"mousedown\",\r\n \"mousemove\",\r\n \"mouseup\",\r\n \"mouseleave\",\r\n \"pointerdown\",\r\n \"pointermove\",\r\n \"pointerup\",\r\n \"pointerleave\",\r\n \"pointercancel\",\r\n \"wheel\",\r\n \"touchstart\",\r\n \"touchmove\",\r\n \"touchend\",\r\n \"touchcancel\",\r\n];\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IEvent, IEventEmitter } from \"./IEventEmitter2\";\r\n\r\n/**\r\n * The minimal basic Event that can be emitted by a {@link EventEmitter2}.\r\n */\r\nexport interface Event<T extends string = string> extends IEvent {\r\n type: T;\r\n}\r\n\r\n/**\r\n * Event emitter for custom objects.\r\n */\r\nexport class EventEmitter2<EventMap extends Record<string, any> = Record<string, any>> implements IEventEmitter {\r\n private _listeners = undefined;\r\n\r\n /**\r\n * Registers a new listener for an event type.\r\n *\r\n * @param type - The type of event to listen to.\r\n * @param listener - The function that gets called when the event is fired.\r\n */\r\n addEventListener<T extends keyof EventMap>(type: T, listener: (event: EventMap[T]) => void): this {\r\n if (this._listeners === undefined) this._listeners = {};\r\n if (this._listeners[type] === undefined) this._listeners[type] = [];\r\n this._listeners[type].push(listener);\r\n return this;\r\n }\r\n\r\n /**\r\n * Removes the listener from an event type.\r\n *\r\n * @param type - The type of the listener that gets removed.\r\n * @param listener - The listener function that gets removed.\r\n */\r\n removeEventListener<T extends keyof EventMap>(type: T, listener: (event: EventMap[T]) => void): this {\r\n if (this._listeners === undefined) return this;\r\n if (this._listeners[type] === undefined) return this;\r\n const listeners = this._listeners[type].filter((x) => x !== listener);\r\n this._listeners[type] = listeners.length === 0 ? undefined : listeners;\r\n return this;\r\n }\r\n\r\n /**\r\n * If `type` is specified, removes all registered listeners for type, otherwise removes all\r\n * registered listeners.\r\n *\r\n * @param type - The type of the listener that gets removed.\r\n */\r\n removeAllListeners<T extends keyof EventMap>(type?: T): this {\r\n if (type) this._listeners[type] = undefined;\r\n else this._listeners = undefined;\r\n return this;\r\n }\r\n\r\n /**\r\n * Fires the event. Calls each of the listeners registered for the event type `event.type`,\r\n * in the order they were registered.\r\n *\r\n * @param event - The event that gets fired.\r\n */\r\n emitEvent<T extends keyof EventMap>(event: Event<Extract<T, string>> & EventMap[T]): boolean {\r\n if (this._listeners === undefined) return false;\r\n if (this._listeners[event.type] === undefined) return false;\r\n const invoke = this._listeners[event.type].slice();\r\n invoke.forEach((listener) => listener.call(this, event));\r\n return true;\r\n }\r\n\r\n // Node.js style, to emit custom events\r\n\r\n /**\r\n * Alias to {@link EventEmitter2.addEventListener()}\r\n */\r\n on(type: string, listener: (event: object) => void): this {\r\n return this.addEventListener(type as any, listener as any);\r\n }\r\n\r\n /**\r\n * Alias to {@link EventEmitter2.removeEventListener()}.\r\n */\r\n off(type: string, listener: (event: object) => void): this {\r\n return this.removeEventListener(type as any, listener as any);\r\n }\r\n\r\n /**\r\n * Alias to {@link EventEmitter2.emitEvent()}.\r\n */\r\n emit(event: string | object, ...args: any[]): boolean {\r\n if (typeof event === \"string\") return this.emitEvent({ type: event, args } as any);\r\n else if (typeof event === \"object\") return this.emitEvent(event as any);\r\n else return false;\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { $get, $delete, $post, $put, $XMLHttp } from \"./impl/Utils\";\r\n\r\nexport class HttpClient implements IHttpClient {\r\n serverUrl: string;\r\n headers: HeadersInit;\r\n signInUserId: string;\r\n\r\n constructor(serverUrl: string) {\r\n this.serverUrl = serverUrl;\r\n }\r\n\r\n get(relativePath: string, signal?: AbortSignal): Promise<Response> {\r\n return $get(`${this.serverUrl}${relativePath}`, this.headers, signal);\r\n }\r\n\r\n post(\r\n relativePath: string,\r\n body?: string | object | ArrayBuffer | Blob | globalThis.File | FormData\r\n ): Promise<Response> {\r\n return $post(`${this.serverUrl}${relativePath}`, this.headers, body);\r\n }\r\n\r\n put(\r\n relativePath: string,\r\n body?: string | object | ArrayBuffer | Blob | globalThis.File | FormData\r\n ): Promise<Response> {\r\n return $put(`${this.serverUrl}${relativePath}`, this.headers, body);\r\n }\r\n\r\n delete(relativePath: string): Promise<Response> {\r\n return $delete(`${this.serverUrl}${relativePath}`, this.headers);\r\n }\r\n\r\n postFile(\r\n relativePath: string,\r\n file: globalThis.File,\r\n onProgress?: (progress: number) => void\r\n ): Promise<XMLHttpRequest> {\r\n const data = new FormData();\r\n data.append(\"file\", file);\r\n\r\n return $XMLHttp(`${this.serverUrl}${relativePath}`, {\r\n method: \"POST\",\r\n headers: this.headers,\r\n body: data,\r\n uploadProgress: onProgress,\r\n });\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { EventEmitter2 } from \"./EventEmitter2\";\r\n\r\nexport interface RGB {\r\n red: number;\r\n green: number;\r\n blue: number;\r\n}\r\n\r\n/**\r\n * `VisualizeJS` parameters.\r\n */\r\nexport interface OptionsData {\r\n /**\r\n * Show WCS\r\n *\r\n * @defaultValue true\r\n */\r\n showWCS?: boolean;\r\n\r\n /**\r\n * Enable camera animation\r\n *\r\n * @defaultValue true\r\n */\r\n cameraAnimation?: boolean;\r\n\r\n /**\r\n * Enable antialiasing use FXAA\r\n *\r\n * @defaultValue true\r\n */\r\n antialiasing?: boolean;\r\n\r\n /**\r\n * Enable ground shadows\r\n *\r\n * @defaultValue false\r\n */\r\n groundShadow?: boolean;\r\n\r\n /**\r\n * Enable shadows\r\n *\r\n * @defaultValue false\r\n */\r\n shadows?: boolean;\r\n\r\n /**\r\n * Camera speed on X axis\r\n *\r\n * @defaultValue 4\r\n */\r\n cameraAxisXSpeed?: number;\r\n\r\n /**\r\n * Camera speed on Y axis\r\n *\r\n * @defaultValue 1\r\n */\r\n cameraAxisYSpeed?: number;\r\n\r\n /**\r\n * Ambient occlusion\r\n *\r\n * @defaultValue false\r\n */\r\n ambientOcclusion?: boolean;\r\n\r\n /**\r\n * Enable partial load mode to be able open large drawing If enablePartialMode enabled, then\r\n * sceneGraph will be switched off\r\n *\r\n * @defaultValue false\r\n */\r\n enablePartialMode?: boolean;\r\n\r\n /**\r\n * The size of the memory buffer that the Viewer can use for graphics data\r\n *\r\n * @defaultValue 3294967296\r\n */\r\n memoryLimit?: number;\r\n\r\n /**\r\n * Cutting plane fill color\r\n *\r\n * @defaultValue { red: 0xff, green: 0x98, blue: 0x00 }\r\n */\r\n cuttingPlaneFillColor?: RGB;\r\n\r\n /**\r\n * Outline edges color in RGB format.\r\n */\r\n edgesColor?: { r: number; g: number; b: number };\r\n\r\n /**\r\n * Faces color in the RGB format.\r\n */\r\n facesColor?: { r: number; g: number; b: number };\r\n\r\n /**\r\n * Show or hide edges.\r\n */\r\n edgesVisibility?: boolean;\r\n\r\n /**\r\n * Show edges over drawing.\r\n */\r\n edgesOverlap?: boolean;\r\n\r\n /**\r\n * Show faces over drawing.\r\n */\r\n facesOverlap?: boolean;\r\n\r\n /**\r\n * Faces transparency value from 0 to 255.\r\n */\r\n facesTransparancy?: number;\r\n\r\n /**\r\n * Enable custom highlight settings.\r\n */\r\n enableCustomHighlight?: boolean;\r\n\r\n /**\r\n * Enable or disable scene graph, it increases perfomance improvement, but consumes memory\r\n * Large drawings can take up a lot of memory. If sceneGraph enabled, then enablePartialMode\r\n * will be switched off\r\n */\r\n sceneGraph: boolean;\r\n\r\n /**\r\n * Edge display models. No edges is usefull for less memory consumption: `false` - no edges\r\n * are displayed, `true` - display isolines.\r\n */\r\n edgeModel: boolean;\r\n\r\n /**\r\n * Reverse the mouse wheel direction for zooming: false - moving the wheel up zooms in,\r\n * moving down zooms out, `true` - moving the wheel up zooms out, moving down zooms in.\r\n */\r\n reverseZoomWheel: boolean;\r\n\r\n /**\r\n * Enable mouse wheel zooming.\r\n */\r\n enableZoomWheel: boolean;\r\n\r\n /**\r\n * Enable touch gestures. This option will be ignored when enableZoomWheel is disabled, since\r\n * gestures contains touch zoom.\r\n */\r\n enableGestures: boolean;\r\n\r\n /**\r\n * Default file geometry data type. Can be one of:\r\n *\r\n * - `vsfx` - `VSFX` (default), for opening a file in `VisualizeJS` viewer.\r\n * - `gltf` - `glTF`, for opening a file in `Three.js` viewer.\r\n */\r\n geometryType?: string;\r\n}\r\n\r\nexport class Options {\r\n protected _emitter?: EventEmitter2;\r\n protected _data: OptionsData;\r\n\r\n constructor(emitter?: EventEmitter2) {\r\n this._emitter = emitter;\r\n this._data = Options.defaults();\r\n this.loadFromStorage();\r\n }\r\n\r\n static defaults(): OptionsData {\r\n return {\r\n showWCS: true,\r\n cameraAnimation: true,\r\n antialiasing: true,\r\n groundShadow: false,\r\n shadows: false,\r\n cameraAxisXSpeed: 4,\r\n cameraAxisYSpeed: 1,\r\n ambientOcclusion: false,\r\n enablePartialMode: false,\r\n memoryLimit: 3294967296,\r\n cuttingPlaneFillColor: { red: 0xff, green: 0x98, blue: 0x00 },\r\n edgesColor: { r: 0xff, g: 0x98, b: 0x00 },\r\n facesColor: { r: 0xff, g: 0x98, b: 0x00 },\r\n edgesVisibility: true,\r\n edgesOverlap: true,\r\n facesOverlap: false,\r\n facesTransparancy: 200,\r\n enableCustomHighlight: true,\r\n sceneGraph: false,\r\n edgeModel: true,\r\n reverseZoomWheel: false,\r\n enableZoomWheel: true,\r\n enableGestures: true,\r\n geometryType: \"vsfx\",\r\n };\r\n }\r\n\r\n notifierChangeEvent(): void {\r\n if (this._emitter !== undefined) {\r\n this.saveToStorage();\r\n this._emitter.emit({ type: \"optionschange\", data: this });\r\n }\r\n }\r\n\r\n saveToStorage(): void {\r\n if (typeof window !== \"undefined\")\r\n try {\r\n localStorage.setItem(\"od-client-settings\", JSON.stringify(this.data));\r\n } catch (error) {\r\n console.error(\"Cannot save client settings.\", error);\r\n }\r\n }\r\n\r\n loadFromStorage(): void {\r\n if (typeof window !== \"undefined\")\r\n try {\r\n const item = localStorage.getItem(\"od-client-settings\");\r\n if (item) {\r\n const data = JSON.parse(item);\r\n this.data = { ...data };\r\n }\r\n } catch (error) {\r\n console.error(\"Cannot load client settings.\", error);\r\n }\r\n }\r\n\r\n /**\r\n * Reset options to default\r\n *\r\n * @param fields - Name of fields to be reset\r\n */\r\n resetToDefaults(fields?: string[]): void {\r\n if (fields !== undefined) {\r\n const defaults = Options.defaults();\r\n const resetData = fields.reduce((acc, field) => {\r\n acc[field] = defaults[field];\r\n return acc;\r\n }, {});\r\n\r\n this.data = { ...this.data, ...resetData };\r\n } else {\r\n this.data = { ...this.data, ...Options.defaults() };\r\n }\r\n }\r\n\r\n get data(): OptionsData {\r\n return this._data;\r\n }\r\n\r\n set data(value: OptionsData) {\r\n const sceneGraph = value.enablePartialMode ? false : value.sceneGraph;\r\n this._data = { ...Options.defaults(), ...this._data, ...value, sceneGraph };\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get showWCS(): boolean {\r\n return this._data.showWCS;\r\n }\r\n\r\n set showWCS(value: boolean) {\r\n this._data.showWCS = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get cameraAnimation(): boolean {\r\n return this._data.cameraAnimation;\r\n }\r\n\r\n set cameraAnimation(value: boolean) {\r\n this._data.cameraAnimation = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get antialiasing(): boolean {\r\n return this._data.antialiasing;\r\n }\r\n\r\n set antialiasing(value: boolean) {\r\n this._data.antialiasing = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get groundShadow(): boolean {\r\n return this._data.groundShadow;\r\n }\r\n\r\n set groundShadow(value: boolean) {\r\n this._data.groundShadow = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get shadows(): boolean {\r\n return this._data.shadows;\r\n }\r\n\r\n set shadows(value: boolean) {\r\n this._data.shadows = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get cameraAxisXSpeed(): number {\r\n return this._data.cameraAxisXSpeed;\r\n }\r\n\r\n set cameraAxisXSpeed(value: number) {\r\n this._data.cameraAxisXSpeed = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get cameraAxisYSpeed(): number {\r\n return this._data.cameraAxisYSpeed;\r\n }\r\n\r\n set cameraAxisYSpeed(value: number) {\r\n this.cameraAxisYSpeed = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get ambientOcclusion(): boolean {\r\n return this._data.ambientOcclusion;\r\n }\r\n\r\n set ambientOcclusion(value: boolean) {\r\n this._data.ambientOcclusion = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get enablePartialMode(): boolean {\r\n return this._data.enablePartialMode;\r\n }\r\n\r\n set enablePartialMode(value: boolean) {\r\n this._data.enablePartialMode = value;\r\n if (value) this._data.sceneGraph = false;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get memoryLimit(): number {\r\n return this._data.memoryLimit;\r\n }\r\n\r\n set memoryLimit(value: number) {\r\n this._data.memoryLimit = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get cuttingPlaneFillColor(): RGB {\r\n return this._data.cuttingPlaneFillColor;\r\n }\r\n\r\n set cuttingPlaneFillColor(value: RGB) {\r\n this._data.cuttingPlaneFillColor = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get edgesColor() {\r\n return this._data.edgesColor;\r\n }\r\n\r\n set edgesColor(value) {\r\n this._data.edgesColor = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get facesColor() {\r\n return this._data.facesColor;\r\n }\r\n\r\n set facesColor(value) {\r\n this._data.facesColor = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get edgesVisibility() {\r\n return this._data.edgesVisibility;\r\n }\r\n\r\n set edgesVisibility(value) {\r\n this._data.edgesVisibility = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get edgesOverlap() {\r\n return this._data.edgesOverlap;\r\n }\r\n\r\n set edgesOverlap(value) {\r\n this._data.edgesOverlap = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get facesOverlap() {\r\n return this._data.facesOverlap;\r\n }\r\n\r\n set facesOverlap(value) {\r\n this._data.facesOverlap = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get facesTransparancy() {\r\n return this._data.facesTransparancy;\r\n }\r\n\r\n set facesTransparancy(value) {\r\n this._data.facesTransparancy = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get enableCustomHighlight() {\r\n return this._data.enableCustomHighlight;\r\n }\r\n\r\n set enableCustomHighlight(value) {\r\n this._data.enableCustomHighlight = value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get sceneGraph() {\r\n return this._data.sceneGraph;\r\n }\r\n\r\n set sceneGraph(value) {\r\n this._data.sceneGraph = value;\r\n if (value) this._data.enablePartialMode = false;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get edgeModel() {\r\n return Boolean(this._data.edgeModel);\r\n }\r\n\r\n set edgeModel(value) {\r\n this._data.edgeModel = Boolean(value);\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get reverseZoomWheel() {\r\n return this._data.reverseZoomWheel;\r\n }\r\n\r\n set reverseZoomWheel(value: boolean) {\r\n this._data.reverseZoomWheel = !!value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get enableZoomWheel() {\r\n return this._data.enableZoomWheel;\r\n }\r\n\r\n set enableZoomWheel(value: boolean) {\r\n this._data.enableZoomWheel = !!value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get enableGestures() {\r\n return this._data.enableGestures;\r\n }\r\n\r\n set enableGestures(value: boolean) {\r\n this._data.enableGestures = !!value;\r\n this.notifierChangeEvent();\r\n }\r\n\r\n get geometryType() {\r\n return this._data.geometryType;\r\n }\r\n\r\n set geometryType(value: string) {\r\n this._data.geometryType = value;\r\n this.notifierChangeEvent();\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { json } from \"./impl/Utils\";\r\n\r\n/**\r\n * A permission provides information about {@link File | file} sharing granted to a specific\r\n * {@link User | users}, group, or project {@link Member | member}.\r\n */\r\nexport class Permission {\r\n private _data: any;\r\n protected fileId: string;\r\n protected httpClient: IHttpClient;\r\n\r\n /**\r\n * @param data - An object that implements permission data storage.\r\n * @param fileId - Owner file ID.\r\n * @param httpClient - Http client.\r\n */\r\n constructor(data: any, fileId: string, httpClient: IHttpClient) {\r\n this.httpClient = httpClient;\r\n this.fileId = fileId;\r\n this.data = data;\r\n }\r\n\r\n private internalGet() {\r\n return this.httpClient.get(`/files/${this.fileId}/permissions/${this.id}`);\r\n }\r\n\r\n private internalPut(body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null) {\r\n return this.httpClient.put(`/files/${this.fileId}/permissions/${this.id}`, body);\r\n }\r\n\r\n private internalDelete() {\r\n return this.httpClient.delete(`/files/${this.fileId}/permissions/${this.id}`);\r\n }\r\n\r\n /**\r\n * Defines what actions are allowed to be performed on a file with this permission:\r\n *\r\n * - `read` - The ability to read file description, geometry data and properties\r\n * - `readSourceFile` - The ability to read source file\r\n * - `write` - The ability to modify file name, description and references\r\n * - `readViewpoint` - The ability to read file viewpoints\r\n * - `createViewpoint` - The ability to create file viewpoints\r\n */\r\n get actions(): string[] {\r\n return this.data.actions;\r\n }\r\n\r\n set actions(value: string[]) {\r\n this._data.actions = value;\r\n }\r\n\r\n /**\r\n * Raw permission data received from the server.\r\n *\r\n * @readonly\r\n */\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private set data(value: any) {\r\n this._data = value;\r\n }\r\n\r\n /**\r\n * Unique permission ID.\r\n *\r\n * @readonly\r\n */\r\n get id(): string {\r\n return this.data.id;\r\n }\r\n\r\n /**\r\n * Principials are any entity that can be authenticated by the server, such as a any user or\r\n * project that will get access to the file.\r\n *\r\n * @typedef {any} Principial\r\n * @property {any} user - The user entry that get access to the file.\r\n * @property {string} user.id - User ID.\r\n * @property {string} user.name - User name.\r\n * @property {any} project - The project entry that get access to the file.\r\n * @property {string} project.id - Project ID.\r\n * @property {string} project.name - Project name.\r\n */\r\n\r\n /**\r\n * A collection of principials that will get access to the file.\r\n */\r\n get grantedTo(): any[] {\r\n return this.data.grantedTo;\r\n }\r\n\r\n set grantedTo(value: any[]) {\r\n this.data.grantedTo = value;\r\n }\r\n\r\n /**\r\n * Specifies whether all users have access to the file or not.\r\n */\r\n get public(): boolean {\r\n return this.data.public;\r\n }\r\n\r\n set public(value: boolean) {\r\n this.data.public = value;\r\n }\r\n\r\n /**\r\n * Refresh permission data.\r\n *\r\n * @async\r\n */\r\n async checkout(): Promise<Permission> {\r\n this.data = await json(this.internalGet());\r\n return this;\r\n }\r\n\r\n /**\r\n * Update permission data on the server.\r\n *\r\n * @async\r\n * @param data - Raw permission data.\r\n */\r\n async update(data: any): Promise<Permission> {\r\n this.data = await json(this.internalPut(data));\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove a permission from a file.\r\n *\r\n * @async\r\n * @returns Returns the raw data of a deleted permission.\r\n */\r\n delete(): Promise<any> {\r\n return json(this.internalDelete());\r\n }\r\n\r\n /**\r\n * Save permission data changes to the server. Call this method to update permission data on\r\n * the server after any changes.\r\n *\r\n * @async\r\n */\r\n save(): Promise<Permission> {\r\n return this.update(this.data);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { json, waitFor } from \"./impl/Utils\";\r\n\r\n/**\r\n * The class representing a `job` entity describes the process of converting a file from one\r\n * format to another, to obtain geometric data, validate the file, or run a clash test.\r\n */\r\nexport class Job {\r\n private _data: any;\r\n protected httpClient: IHttpClient;\r\n\r\n /**\r\n * @param data - An object that implements job data storage.\r\n * @param httpClient - Http client.\r\n */\r\n constructor(data: any, httpClient: IHttpClient) {\r\n this.httpClient = httpClient;\r\n this.data = data;\r\n }\r\n\r\n protected internalGet() {\r\n return this.httpClient.get(`/jobs/${this.data.id}`);\r\n }\r\n\r\n protected internalPut(body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null) {\r\n return this.httpClient.put(`/jobs/${this.data.id}`, body);\r\n }\r\n\r\n protected internalDelete() {\r\n return this.httpClient.delete(`/jobs/${this.data.id}`);\r\n }\r\n\r\n /**\r\n * The ID of the assembly the job is working on (internal).\r\n *\r\n * @readonly\r\n */\r\n get assemblyId(): string {\r\n return this.data.assemblyId;\r\n }\r\n\r\n /**\r\n * Job creator ID. Use {@link Client#getUser | Client.getUser()} to obtain detailed creator information.\r\n *\r\n * @readonly\r\n */\r\n get authorId(): string {\r\n return this.data.authorId;\r\n }\r\n\r\n /**\r\n * Job creation time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get createdAt(): string {\r\n return this.data.createdAt;\r\n }\r\n\r\n /**\r\n * Raw job data received from the server.\r\n *\r\n * @readonly\r\n */\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private set data(value: any) {\r\n this._data = value;\r\n }\r\n\r\n /**\r\n * `true` if job is `done` or `failed`. See {@link Job#status | status} for more details.\r\n *\r\n * @readonly\r\n */\r\n get done(): boolean {\r\n return this.data.status === \"done\" || this.data.status === \"failed\";\r\n }\r\n\r\n /**\r\n * The ID of the file the job is working on.\r\n *\r\n * @readonly\r\n */\r\n get fileId(): string {\r\n return this.data.fileId;\r\n }\r\n\r\n /**\r\n * Unique job ID.\r\n *\r\n * @readonly\r\n */\r\n get id(): string {\r\n return this.data.id;\r\n }\r\n\r\n /**\r\n * Job last update (UTC) time in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get lastUpdate(): string {\r\n return this.data.lastUpdate;\r\n }\r\n\r\n /**\r\n * Job type. Can be `properties`, `geomerty`, `geomertyGltf`, `validation`, `clash`, `dwg`,\r\n * `obj`, `gltf`, `glb`, `vsf`, `pdf` or `3dpdf`.\r\n *\r\n * @readonly\r\n */\r\n get outputFormat(): string {\r\n return this.data.outputFormat;\r\n }\r\n\r\n /**\r\n * Parameters for the job runner.\r\n *\r\n * @readonly\r\n */\r\n get parameters(): any {\r\n return this.data.parameters;\r\n }\r\n\r\n /**\r\n * Job status. Can be `waiting`, `inprogress`, `done` or `failed`.\r\n *\r\n * @readonly\r\n */\r\n get status(): string {\r\n return this.data.status;\r\n }\r\n\r\n /**\r\n * Job status description message.\r\n *\r\n * @readonly\r\n */\r\n get statusMessage(): string {\r\n return this.data.statusMessage;\r\n }\r\n\r\n /**\r\n * Job starting time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get startedAt(): string {\r\n return this.data.startedAt;\r\n }\r\n\r\n /**\r\n * Refresh job data.\r\n *\r\n * @async\r\n */\r\n async checkout(): Promise<Job> {\r\n this.data = await json(this.internalGet());\r\n return this;\r\n }\r\n\r\n /**\r\n * Update job data on the server. Only admins can update job data.\r\n *\r\n * @async\r\n * @param data - Raw job data.\r\n */\r\n async update(data: any): Promise<Job> {\r\n this.data = await json(this.internalPut(data));\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove a job from the server job list. Jobs that are in progress or have already been\r\n * completed cannot be deleted.\r\n *\r\n * @async\r\n * @returns Returns the raw data of a deleted job.\r\n */\r\n delete(): Promise<any> {\r\n return json(this.internalDelete());\r\n }\r\n\r\n // /**\r\n // * Save job data changes to the server. Call this method to update job data on the server\r\n // * after any changes.\r\n // *\r\n // * @async\r\n // * @returns {Promise<Job>}\r\n // */\r\n // save() {\r\n // return this.update(this.data);\r\n // }\r\n\r\n /**\r\n * Wait for job to be done. Job is done when it changes to `done` or `failed` status.\r\n *\r\n * @async\r\n * @param params - An object containing waiting parameters.\r\n * @param params.timeout - The time, in milliseconds that the function should wait job. If\r\n * jobs is not done during this time, the `TimeoutError` exception will be thrown.\r\n * @param params.interval - The time, in milliseconds, the function should delay in between\r\n * checking job status.\r\n * @param params.signal- An <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\r\n * signal object instance, which can be used to abort waiting as desired.\r\n * @param params.onCheckout - Waiting progress callback. Return `true` to cancel waiting.\r\n */\r\n waitForDone(params?: {\r\n timeout?: number;\r\n interval?: number;\r\n signal?: AbortSignal;\r\n onCheckout?: (job: Job, ready: boolean) => boolean;\r\n }): Promise<Job> {\r\n const checkDone = () =>\r\n this.checkout().then((job) => {\r\n const ready = [\"done\", \"failed\"].includes(job.status);\r\n const cancel = params?.onCheckout?.(job, ready);\r\n return cancel || ready;\r\n });\r\n\r\n return waitFor(checkDone, params).then(() => this);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { IFileStatus, IFileReferences, IFileVersionInfo } from \"./IFile\";\r\nimport { IShortUserDescription } from \"./IUser\";\r\nimport { Model } from \"./Model\";\r\nimport { Permission } from \"./Permission\";\r\nimport { Job } from \"./Job\";\r\nimport {\r\n json,\r\n text,\r\n downloadProgress,\r\n downloadPartOfFile,\r\n waitFor,\r\n parseArgs,\r\n userFullName,\r\n userInitials,\r\n} from \"./impl/Utils\";\r\n\r\n/**\r\n * The class representing a `file` entity.\r\n */\r\nexport class File {\r\n private _data: any;\r\n private _useVersion: number | undefined;\r\n public httpClient: IHttpClient;\r\n public path: string;\r\n\r\n /**\r\n * @param data - An object that implements file data storage.\r\n * @param httpClient - Http client for API.\r\n */\r\n constructor(data: any, httpClient: IHttpClient) {\r\n this.path = `/files/${data.id}`;\r\n this.httpClient = httpClient;\r\n this.data = data;\r\n }\r\n\r\n private appendVersionParam(relativePath: string): string {\r\n if (this._useVersion === undefined) return relativePath;\r\n\r\n const delimiter = relativePath.includes(\"?\") ? \"&\" : \"?\";\r\n return `${relativePath}${delimiter}version=${this._useVersion}`;\r\n }\r\n\r\n private internalGet(relativePath: string, signal?: AbortSignal) {\r\n relativePath = this.appendVersionParam(relativePath);\r\n return this.httpClient.get(`${this.path}${relativePath}`, signal);\r\n }\r\n\r\n private internalPost(\r\n relativePath: string,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null\r\n ) {\r\n relativePath = this.appendVersionParam(relativePath);\r\n return this.httpClient.post(`${this.path}${relativePath}`, body);\r\n }\r\n\r\n private internalPut(\r\n relativePath: string,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null\r\n ) {\r\n relativePath = this.appendVersionParam(relativePath);\r\n return this.httpClient.put(`${this.path}${relativePath}`, body);\r\n }\r\n\r\n private internalDelete(relativePath: string) {\r\n relativePath = this.appendVersionParam(relativePath);\r\n return this.httpClient.delete(`${this.path}${relativePath}`);\r\n }\r\n\r\n async partialDownloadResource(\r\n dataId: string,\r\n onProgress?: (progress: number, downloaded: Uint8Array) => void,\r\n signal?: AbortSignal\r\n ) {\r\n let pathname = `${this.path}/downloads/${dataId}`;\r\n pathname = this.appendVersionParam(pathname);\r\n\r\n // TODO: replace with $get to handle fetch errors\r\n const response = await fetch(`${this.httpClient.serverUrl}${pathname}`, {\r\n headers: this.httpClient.headers,\r\n signal,\r\n });\r\n\r\n // TODO: use ReadableStream pipeTo()\r\n const contentLength = response.headers.get(\"Content-Length\") ?? \"\";\r\n const total = parseInt(contentLength, 10);\r\n const reader = response.body.getReader();\r\n let loaded = 0;\r\n while (true) {\r\n const { done, value } = await reader.read();\r\n if (done) break;\r\n loaded += value.byteLength;\r\n if (typeof onProgress === \"function\") onProgress(loaded / total, value);\r\n }\r\n }\r\n\r\n downloadFileRange(\r\n requestId: number,\r\n records: any | null,\r\n dataId: string,\r\n onProgress?: (progress: number, downloaded: Uint8Array, requestId: number) => void,\r\n signal?: AbortSignal\r\n ) {\r\n let pathname = `${this.path}/downloads/${dataId}?requestId=${requestId}`;\r\n pathname = this.appendVersionParam(pathname);\r\n return downloadPartOfFile(\r\n requestId,\r\n records,\r\n `${this.httpClient.serverUrl}${pathname}`,\r\n this.httpClient.headers,\r\n onProgress,\r\n signal\r\n );\r\n }\r\n\r\n /**\r\n * Active version number of the file.\r\n *\r\n * @readonly\r\n */\r\n get activeVersion(): number {\r\n return this.data.activeVersion;\r\n }\r\n\r\n /**\r\n * File creation time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get created(): string {\r\n return this.data.created;\r\n }\r\n\r\n /**\r\n * File custom fields object, to store custom data.\r\n *\r\n * @readonly\r\n */\r\n get customFields(): any {\r\n return this.data.customFields;\r\n }\r\n\r\n set customFields(value: any) {\r\n this.data.customFields = value;\r\n }\r\n\r\n /**\r\n * Raw file data received from the server.\r\n *\r\n * @readonly\r\n */\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private set data(value: any) {\r\n this._data = value;\r\n this._data.previewUrl = value.preview ? `${this.httpClient.serverUrl}${this.path}/preview` : \"\";\r\n // owner since 24.8\r\n if (typeof this._data.owner === \"string\") this._data.owner = { userId: this._data.owner };\r\n this._data.owner ??= {};\r\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\r\n this._data.owner.fullName = userFullName(this._data.owner);\r\n this._data.owner.initials = userInitials(this._data.owner.fullName);\r\n // status since 24.9\r\n this._data.status ??= {};\r\n this._data.status.geometry ??= { state: this._data.geometryStatus ?? \"none\" };\r\n this._data.status.properties ??= { state: this._data.propertiesStatus ?? \"none\" };\r\n this._data.status.validation ??= { state: this._data.validationStatus ?? \"none\" };\r\n // updatedBy since 24.10\r\n this._data.updatedBy ??= {};\r\n this._data.updatedBy.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.updatedBy.userId}/avatar`;\r\n this._data.updatedBy.fullName = userFullName(this._data.updatedBy);\r\n this._data.updatedBy.initials = userInitials(this._data.updatedBy.fullName);\r\n // geometryGltf status since 24.12\r\n this._data.status.geometryGltf ??= { state: \"none\" };\r\n }\r\n\r\n /**\r\n * Returns a list of formats in which the active version of the file was exported. To export\r\n * file to one of the supported formats create File Converter job using\r\n * {@link File.createJob()}. To download exported file use {@link File.downloadResource()}.\r\n *\r\n * @readonly\r\n */\r\n get exports(): string[] {\r\n return this.data.exports;\r\n }\r\n\r\n /**\r\n * Geometry data type of the active file version. Can be one of:\r\n *\r\n * - `vsfx` - `VSFX`, file can be opened in `VisualizeJS` viewer.\r\n * - `gltf` - `glTF`, file can be opened in `Three.js` viewer.\r\n *\r\n * Returns an empty string if geometry data has not yet been extracted. A files without\r\n * geometry data can be exported to other formas, but cannot be opened in viewer.\r\n */\r\n get geometryType(): string {\r\n if (this.status.geometryGltf.state === \"done\") return \"gltf\";\r\n else if (this.status.geometry.state === \"done\") return \"vsfx\";\r\n else return \"\";\r\n }\r\n\r\n /**\r\n * Unique file ID.\r\n *\r\n * @readonly\r\n */\r\n get id(): string {\r\n return this.data.id;\r\n }\r\n\r\n /**\r\n * File name, including the extension.\r\n */\r\n get name(): string {\r\n return this.data.name;\r\n }\r\n\r\n set name(value: string) {\r\n this.data.name = value;\r\n }\r\n\r\n /**\r\n * If the file is a version, then returns the ID of the original file. Otherwise, returns the file ID.\r\n *\r\n * @readonly\r\n */\r\n get originalFileId(): string {\r\n return this.data.originalFileId;\r\n }\r\n\r\n /**\r\n * File owner information.\r\n *\r\n * @property {string} userId - User ID.\r\n * @property {string} userName - User name.\r\n * @property {string} name - First name.\r\n * @property {string} lastName - Last name.\r\n * @property {string} fullName - Full name.\r\n * @property {string} initials - Initials.\r\n * @property {string} email - User email.\r\n * @property {string} avatarUrl - User avatar image URL.\r\n * @readonly\r\n */\r\n get owner(): IShortUserDescription {\r\n return this.data.owner;\r\n }\r\n\r\n /**\r\n * File preview image URL. Use {@link File#setPreview | setPreview()} to change preview image.\r\n *\r\n * @readonly\r\n */\r\n get previewUrl(): string {\r\n return this.data.previewUrl;\r\n }\r\n\r\n /**\r\n * The size of the active version of the file in bytes.\r\n *\r\n * @readonly\r\n */\r\n get size(): number {\r\n return this.data.size;\r\n }\r\n\r\n /**\r\n * Total size of all versions of the file in the storage in bytes.\r\n *\r\n * @readonly\r\n */\r\n get sizeTotal(): number {\r\n return this.data.sizeTotal;\r\n }\r\n\r\n /**\r\n * Data status of the active version of the file. Contains:\r\n *\r\n * - `geometry` - status of geometry data of `VSFX` type.\r\n * - `geometryGltf` - status of geometry data of `glTF` type.\r\n * - `properties` - status of properties.\r\n * - `validation` - status of validation.\r\n *\r\n * Each status entity is a record with properties:\r\n *\r\n * - `state` - Data state. Can be `none`, `waiting`, `inprogress`, `done` or `failed`.\r\n * - `jobId` - Unique ID of the data job.\r\n *\r\n * @readonly\r\n */\r\n get status(): IFileStatus {\r\n return this.data.status;\r\n }\r\n\r\n /**\r\n * File type, matches the file extension.\r\n *\r\n * @readonly\r\n */\r\n get type(): string {\r\n return this.data.type;\r\n }\r\n\r\n /**\r\n * File last update time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get updatedAt(): string {\r\n return this.data.updatedAt;\r\n }\r\n\r\n /**\r\n * Information about the user who made the last update.\r\n *\r\n * @property {string} userId - User ID.\r\n * @property {string} userName - User name.\r\n * @property {string} name - First name.\r\n * @property {string} lastName - Last name.\r\n * @property {string} fullName - Full name.\r\n * @property {string} initials - Initials.\r\n * @property {string} email - User email.\r\n * @property {string} avatarUrl - User avatar image URL.\r\n * @readonly\r\n */\r\n get updatedBy(): IShortUserDescription {\r\n return this.data.updatedBy;\r\n }\r\n\r\n /**\r\n * Zero-based file version number for version files. The original file has version `0`.\r\n */\r\n\r\n get version(): number {\r\n return this.data.version;\r\n }\r\n\r\n /**\r\n * List of the file versions.\r\n *\r\n * @readonly\r\n */\r\n get versions(): IFileVersionInfo[] {\r\n return this.data.versions;\r\n }\r\n\r\n /**\r\n * Refresh file data.\r\n *\r\n * @async\r\n */\r\n async checkout(): Promise<File> {\r\n this.data = await json(this.internalGet(\"\"));\r\n return this;\r\n }\r\n\r\n /**\r\n * Update file data on the server.\r\n *\r\n * @async\r\n * @param data - Raw file data.\r\n */\r\n async update(data: any): Promise<File> {\r\n this.data = await json(this.internalPut(\"\", data));\r\n return this;\r\n }\r\n\r\n /**\r\n * Delete the file and all its versions from the server.\r\n *\r\n * @async\r\n * @returns Returns the raw data of a deleted file.\r\n */\r\n delete(): Promise<any> {\r\n return json(this.internalDelete(\"\"));\r\n }\r\n\r\n /**\r\n * Save file data changes to the server. Call this method to update file data on the server\r\n * after any changes.\r\n *\r\n * @async\r\n */\r\n save(): Promise<File> {\r\n return this.update(this.data);\r\n }\r\n\r\n /**\r\n * Set or remove the file preview.\r\n *\r\n * @async\r\n * @param image - Preview image. Can be a <a\r\n * href=\"https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\"\r\n * target=\"_blank\">Data URL</a> string, <a\r\n * href=\"https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer\"\r\n * target=\"_blank\">ArrayBuffer</a>, <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/Blob/Blob\" target=\"_blank\">Blob</a> or\r\n * Web API <a href=\"https://developer.mozilla.org/docs/Web/API/File\"\r\n * target=\"_blank\">File</a> object. Setting the `image` to `null` will remove the preview.\r\n */\r\n async setPreview(image?: ArrayBuffer | Blob | globalThis.File | FormData | string | null): Promise<File> {\r\n if (image) {\r\n this.data = await json(this.internalPost(\"/preview\", image));\r\n } else {\r\n this.data = await json(this.internalDelete(\"/preview\"));\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a list of models of the active version of the file.\r\n *\r\n * @async\r\n */\r\n getModels(): Promise<Model[]> {\r\n return json(this.internalGet(\"/geometry\")).then((array) => array.map((data) => new Model(data, this)));\r\n }\r\n\r\n // File does not support model transformation.\r\n\r\n getModelTransformMatrix(handle: string): any {\r\n return undefined;\r\n }\r\n\r\n setModelTransformMatrix(handle: string, transform: any): Promise<File> {\r\n console.warn(\"File does not support model transformation\");\r\n return Promise.resolve(this);\r\n }\r\n\r\n /**\r\n * Object properties.\r\n *\r\n * @typedef {any} Properties\r\n * @property {string} handle - Object original handle.\r\n * @property {string | any} * - Object property. Can be `any` for nested properties.\r\n */\r\n\r\n /**\r\n * Returns the properties for an objects in the active version of the file.\r\n *\r\n * @async\r\n * @param handles - Object original handle or handles array. Leave this parameter `undefined`\r\n * to get properties for all objects in the file.\r\n */\r\n getProperties(handles?: string | string[]): Promise<any[]> {\r\n return json(this.internalGet(handles !== undefined ? `/properties?handles=${handles}` : \"/properties\"));\r\n }\r\n\r\n /**\r\n * Search pattern.\r\n *\r\n * @typedef {any} SearchPattern\r\n * @property {string} key - Property name.\r\n * @property {string} value - Property value.\r\n */\r\n\r\n /**\r\n * Query operator. Operator name can be `$and`, `$or`, `$not`, `$eq`, `$regex`.\r\n *\r\n * @typedef {any} QueryOperator\r\n * @property {string | SearchPattern[] | QueryOperator[]} * - Array of the query values or\r\n * patterns for operator.\r\n */\r\n\r\n /**\r\n * Returns the list of original handles for an objects in the active version of the file that\r\n * match the specified patterns. Search patterns may be combined using query operators.\r\n *\r\n * @async\r\n * @example <caption>Simple search pattern.</caption>\r\n * searchPattern = {\r\n * key: \"Category\",\r\n * value: \"OST_Stairs\",\r\n * };\r\n *\r\n * @example <caption>Search patterns combination.</caption>\r\n * searchPattern = {\r\n * $or: [\r\n * {\r\n * $and: [\r\n * { key: \"Category\", value: \"OST_GenericModel\" },\r\n * { key: \"Level\", value: \"03 - Floor\" },\r\n * ],\r\n * },\r\n * { key: \"Category\", value: \"OST_Stairs\" },\r\n * ],\r\n * };\r\n *\r\n * @param {SearchPattern | QueryOperator} searchPattern - Search pattern or combination of\r\n * the patterns, see example below.\r\n * @returns {Promise<Properties[]>}\r\n */\r\n\r\n searchProperties(searchPattern: any): Promise<any[]> {\r\n return json(this.internalPost(\"/properties/search\", searchPattern));\r\n }\r\n\r\n /**\r\n * Returns the cda.json for an active version of the file.\r\n *\r\n * @async\r\n */\r\n getCdaTree(): Promise<any[]> {\r\n return json(this.internalGet(`/properties/tree`));\r\n }\r\n\r\n /**\r\n * Returns a list of file viewpoints.\r\n *\r\n * @async\r\n */\r\n getViewpoints(): Promise<any[]> {\r\n return json(this.internalGet(\"/viewpoints\")).then((viewpoints) => viewpoints.result);\r\n }\r\n\r\n /**\r\n * Add new file viewpoint. To create a new viewpoint use\r\n * {@link Viewer#createViewpoint | Viewer.createViewpoint()}.\r\n *\r\n * @async\r\n * @param viewpoint - Viewpoint.\r\n */\r\n saveViewpoint(viewpoint: any): Promise<any> {\r\n return json(this.internalPost(\"/viewpoints\", viewpoint));\r\n }\r\n\r\n /**\r\n * Delete file viewpoint.\r\n *\r\n * @async\r\n * @param guid - Viewpoint GUID.\r\n * @returns Returns the raw data of a deleted viewpoint.\r\n */\r\n deleteViewpoint(guid: string): Promise<any> {\r\n return json(this.internalDelete(`/viewpoints/${guid}`));\r\n }\r\n\r\n /**\r\n * Returns viewpoint preview image as <a\r\n * href=\"https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\"\r\n * target=\"_blank\">Data URL</a>.\r\n *\r\n * @async\r\n * @param guid - Viewpoint GUID.\r\n */\r\n getSnapshot(guid: string): Promise<string> {\r\n return text(this.internalGet(`/viewpoints/${guid}/snapshot`));\r\n }\r\n\r\n /**\r\n * Returns viewpoint preview data.\r\n *\r\n * @async\r\n * @param guid - Viewpoint GUID.\r\n * @param bitmapGuid - Bitmap GUID.\r\n */\r\n getSnapshotData(guid: string, bitmapGuid: string): Promise<string> {\r\n return text(this.internalGet(`/viewpoints/${guid}/bitmaps/${bitmapGuid}`));\r\n }\r\n\r\n /**\r\n * Download source of active version of the file.\r\n *\r\n * @async\r\n * @param onProgress - Download progress callback.\r\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\r\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\r\n * and abort it if desired.\r\n */\r\n download(onProgress?: (progress: number) => void, signal?: AbortSignal): Promise<ArrayBuffer> {\r\n return this.internalGet(`/downloads`, signal)\r\n .then((response) => downloadProgress(response, onProgress))\r\n .then((response) => response.arrayBuffer());\r\n }\r\n\r\n /**\r\n * Download file resource data of the active version of the file, such as exported file.\r\n *\r\n * @example <caption>Export file to DWG.</caption>\r\n * const job = await file.crateJob(\"dwg\");\r\n * await job.waitForDone();\r\n * const resourceId = file.exports.find((x) => x.endsWith(\".dwg\"));\r\n * const arrayBuffer = await file.downloadResource(resourceId);\r\n * const blob = new Blob([arrayBuffer]);\r\n * const fileName = file.name.replace(/\\.[^.]+$/, \"\") + \".dwg\";\r\n * FileSaver.saveAs(blob, fileName);\r\n *\r\n * @param dataId - Resource ID.\r\n * @param onProgress - Download progress callback.\r\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\r\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\r\n * and abort it if desired.\r\n */\r\n downloadResource(\r\n dataId: string,\r\n onProgress?: (progress: number) => void,\r\n signal?: AbortSignal\r\n ): Promise<ArrayBuffer> {\r\n return this.internalGet(`/downloads/${dataId}`, signal)\r\n .then((response) => downloadProgress(response, onProgress))\r\n .then((response) => response.arrayBuffer());\r\n }\r\n\r\n /**\r\n * Returns a list of references to files used to correct rendering of the current file.\r\n *\r\n * @async\r\n * @param [signal] - An <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\r\n * signal object instance, which can be used to abort waiting as desired.\r\n */\r\n getReferences(signal?: AbortSignal): Promise<IFileReferences> {\r\n return json(this.internalGet(\"/references\", signal));\r\n }\r\n\r\n /**\r\n * Set the file references.\r\n *\r\n * @async\r\n * @param references - File references.\r\n */\r\n setReferences(references: IFileReferences): Promise<IFileReferences> {\r\n return json(this.internalPut(\"/references\", references));\r\n }\r\n\r\n /**\r\n * Create a new job for the active version of the file.\r\n *\r\n * @async\r\n * @param outputFormat - The job type. Can be one of:\r\n *\r\n * - `geometry` - Extract file geometry data into `VSFX`.\r\n * - `geometryGltf` - Extract file geometry data into `glTF`.\r\n * - `properties` - Extract file properties.\r\n * - `validation` - Validate the file. Only for `IFC`.\r\n * - `dwg`, `obj`, `gltf`, `glb`, `vsf`, `pdf`, `3dpdf` - Export file to the one of the\r\n * supported format. Use {@link File.exports | File.exports()} to get the list of\r\n * completed file exports. Use {@link File.downloadResource | File.downloadResource()}\r\n * to download the exported file.\r\n * - Other custom job name. Custom job runner must be registered in the job templates table\r\n * before creating a job.\r\n *\r\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\r\n * for the File Converter tool in form \"--arg=value\".\r\n */\r\n createJob(outputFormat: string, parameters?: string | object): Promise<Job> {\r\n const pathname = this.appendVersionParam(\"/jobs\");\r\n return this.httpClient\r\n .post(pathname, {\r\n fileId: this.id,\r\n outputFormat,\r\n parameters: parseArgs(parameters),\r\n })\r\n .then((response) => response.json())\r\n .then((data) => new Job(data, this.httpClient));\r\n }\r\n\r\n /**\r\n * Create job to extract geometry data of active version of the file. This is alias to\r\n * {@link File.createJob | File.createJob(\"geometry\")}.\r\n *\r\n * @async\r\n * @param type - Geometry data type. Can be one of:\r\n *\r\n * - `vsfx` - `VSFX` (default), for opening a file in `VisualizeJS` viewer.\r\n * - `gltf` - `glTF`, for opening a file in `Three.js` viewer.\r\n *\r\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\r\n * for the File Converter tool in form \"--arg=value\".\r\n */\r\n extractGeometry(type?: string, parameters?: string | object): Promise<Job> {\r\n return this.createJob(type === \"gltf\" ? \"geometryGltf\" : \"geometry\", parameters);\r\n }\r\n\r\n /**\r\n * Create job to extract properties of the active version of the file. This is alias to\r\n * {@link File.createJob | File.createJob(\"properties\")}.\r\n *\r\n * @async\r\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\r\n * for the File Converter tool in form \"--arg=value\".\r\n */\r\n extractProperties(parameters?: string | object): Promise<Job> {\r\n return this.createJob(\"properties\", parameters);\r\n }\r\n\r\n /**\r\n * Create a job to validate the active version of the file. This is alias to\r\n * {@link File.createJob | File.createJob(\"validation\")}.\r\n *\r\n * To get validation report use\r\n * {@link File.downloadResource | File.downloadResource(\"validation_report.json\")}.\r\n *\r\n * @async\r\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\r\n * for the File Converter tool in form \"--arg=value\".\r\n */\r\n validate(parameters?: string | object): Promise<Job> {\r\n return this.createJob(\"validation\", parameters);\r\n }\r\n\r\n /**\r\n * Wait for jobs of the active version of the file to be done. Job is done when it changes to\r\n * `none`, `done` or `failed` status.\r\n *\r\n * @async\r\n * @param {string | string[]} jobs - Job or job array to wait on. Can be `geometry`,\r\n * `geometryGltf`, `properties`, `validation`, `dwg`, `obj`, `gltf`, `glb`, `vsf`, `pdf`,\r\n * `3dpdf` or custom job name.\r\n * @param {Boolean} [waitAll] - If this parameter is `true`, the function returns when all\r\n * the specified jobs have done. If `false`, the function returns when any one of the jobs are done.\r\n * @param {Object} [params] - An object containing waiting parameters.\r\n * @param {Number} [params.timeout] - The time, in milliseconds that the function should wait\r\n * jobs. If no one jobs are done during this time, the `TimeoutError` exception will be thrown.\r\n * @param {Number} [params.interval] - The time, in milliseconds, the function should delay\r\n * in between checking jobs status.\r\n * @param {AbortSignal} [params.signal] - An <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\r\n * signal object instance, which can be used to abort waiting as desired.\r\n * @param {function} [params.onCheckout] - Waiting progress callback. Return `true` to cancel waiting.\r\n * @returns {Promise<File>}\r\n */\r\n waitForDone(\r\n jobs,\r\n waitAll?: boolean,\r\n params?: {\r\n timeout?: number;\r\n interval?: number;\r\n signal?: AbortSignal;\r\n onCheckout?: (file: File, ready: boolean) => boolean;\r\n }\r\n ): Promise<this> {\r\n if (!Array.isArray(jobs)) jobs = [jobs];\r\n if (waitAll === undefined) waitAll = true;\r\n\r\n const checkDone = () =>\r\n this.checkout().then((file) => {\r\n const readyJobs = jobs.filter((x: string) =>\r\n [\"none\", \"done\", \"failed\"].includes(file.status[x]?.state ?? \"none\")\r\n );\r\n const ready = waitAll ? readyJobs.length === jobs.length : readyJobs.length > 0;\r\n const cancel = params?.onCheckout?.(file, ready);\r\n return cancel || ready;\r\n });\r\n\r\n return waitFor(checkDone, params).then(() => this);\r\n }\r\n\r\n /**\r\n * Returns a list of file permissions.\r\n *\r\n * @async\r\n */\r\n getPermissions(): Promise<Permission[]> {\r\n return json(this.internalGet(\"/permissions\")).then((array) =>\r\n array.map((data) => new Permission(data, this.id, this.httpClient))\r\n );\r\n }\r\n\r\n /**\r\n * Returns the permission information.\r\n *\r\n * @async\r\n * @param permissionId - Permission ID.\r\n */\r\n getPermission(permissionId: string): Promise<Permission> {\r\n return json(this.internalGet(`/permissions/${permissionId}`)).then(\r\n (data) => new Permission(data, this.id, this.httpClient)\r\n );\r\n }\r\n\r\n /**\r\n * Create a new file permission.\r\n *\r\n * @async\r\n * @param actions - Actions are allowed to be performed on a file with this permission. See\r\n * {@link Permission#actions | Permission.actions} for more details.\r\n * @param grantedTo - A collection of principials that will get access to the file.\r\n * @param public = false - Specifies whether all users have access to the file or not.\r\n */\r\n createPermission(actions: string | string[], grantedTo: any[], _public: boolean): Promise<Permission> {\r\n return json(\r\n this.internalPost(\"/permissions\", {\r\n actions: typeof actions === \"string\" ? [actions] : actions,\r\n grantedTo,\r\n public: _public,\r\n })\r\n ).then((data) => new Permission(data, this.id, this.httpClient));\r\n }\r\n\r\n /**\r\n * Delete file permission.\r\n *\r\n * @async\r\n * @param permissionId - Permission ID.\r\n * @returns Returns the raw data of a deleted permission.\r\n */\r\n deletePermission(permissionId: string): Promise<any> {\r\n return json(this.internalDelete(`/permissions/${permissionId}`));\r\n }\r\n\r\n /**\r\n * Upload the new version of the file to the server and extract the geometry and properties as needed.\r\n *\r\n * @async\r\n * @param file - Web API <a href=\"https://developer.mozilla.org/docs/Web/API/File\"\r\n * target=\"_blank\">File</a> object are generally retrieved from a <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/FileList\" target=\"_blank\">FileList</a>\r\n * object returned as a result of a user selecting files using the HTML `<input>` element.\r\n * @param params - An object containing upload parameters.\r\n * @param params.geometry=true - Create job to extract file geometry data. The geometry data\r\n * type is the same as the original file.\r\n * @param params.properties=false - Create job to extract file properties.\r\n * @param params.waitForDone=false - Wait for geometry and properties jobs to complete.\r\n * @param params.timeout - The time, in milliseconds that the function should wait jobs. If\r\n * no one jobs are done during this time, the `TimeoutError` exception will be thrown.\r\n * @param params.interval - The time, in milliseconds, the function should delay in between\r\n * checking jobs status.\r\n * @param params.signal - An <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\r\n * signal object instance, which can be used to abort waiting as desired.\r\n * @param params.onProgress - Upload progress callback.\r\n */\r\n\r\n async uploadVersion(\r\n file: globalThis.File,\r\n params: {\r\n geometry?: boolean;\r\n properties?: boolean;\r\n waitForDone?: boolean;\r\n timeout?: number;\r\n interval?: number;\r\n signal?: AbortSignal;\r\n onProgress?: (progress: number, file: globalThis.File) => void;\r\n } = {\r\n waitForDone: false,\r\n }\r\n ): Promise<File> {\r\n const result = await this.httpClient\r\n .postFile(`${this.path}/versions`, file, (progress) => params.onProgress?.(progress, file))\r\n .then((xhr: XMLHttpRequest) => JSON.parse(xhr.responseText))\r\n .then((data) => new File(data, this.httpClient));\r\n\r\n if (params.geometry === undefined && this.geometryType !== \"\") params.geometry = true;\r\n if (params.properties === undefined && this.status.properties.state !== \"none\") params.properties = true;\r\n\r\n const jobs: string[] = [];\r\n if (params.geometry) jobs.push((await result.extractGeometry(this.geometryType)).outputFormat);\r\n if (params.properties) jobs.push((await result.extractProperties()).outputFormat);\r\n if (params.waitForDone && jobs.length > 0) await result.waitForDone(jobs, true, params);\r\n\r\n await this.checkout();\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Returns a list of version files.\r\n *\r\n * @async\r\n */\r\n getVersions(): Promise<File[]> {\r\n return this.internalGet(\"/versions\")\r\n .then((response) => response.json())\r\n .then((files) => files.map((data) => new File(data, this.httpClient)))\r\n .then((files) => files.map((file) => (file.id == file.originalFileId ? file.useVersion(0) : file)));\r\n }\r\n\r\n /**\r\n * Returns the version file.\r\n *\r\n * @async\r\n * @param version - Desired version.\r\n */\r\n getVersion(version: number): Promise<File> {\r\n return this.internalGet(`/versions/${version}`)\r\n .then((response) => response.json())\r\n .then((data) => new File(data, this.httpClient))\r\n .then((file) => (file.id == file.originalFileId ? file.useVersion(0) : file));\r\n }\r\n\r\n /**\r\n * Delete version file.\r\n *\r\n * @async\r\n * @param version - Version to delete.\r\n */\r\n async deleteVersion(version: number): Promise<any> {\r\n const response = await this.internalDelete(`/versions/${version}`);\r\n const result = await response.json();\r\n\r\n await this.checkout();\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Replace the active version of the file with the selected version.\r\n *\r\n * @async\r\n * @param version - Desired active version.\r\n */\r\n\r\n setActiveVersion(version: number): Promise<File> {\r\n return this.update({ activeVersion: version });\r\n }\r\n\r\n /**\r\n * Use given version instead of active version for current file on client side. This version\r\n * change will affect the result:\r\n *\r\n * - getModels()\r\n * - getProperties()\r\n * - searchProperties()\r\n * - getCdaTree()\r\n * - download()\r\n * - downloadResource()\r\n * - createJob()\r\n * - extractGeometry()\r\n * - extractProperties()\r\n * - validate()\r\n * - waitForDone()\r\n * - Viewer.open()\r\n *\r\n * Other clients will still continue to use the currently active version of the file. Use\r\n * `undefined` to revert back to the active version.\r\n *\r\n * Note. You need to update the file data using [File.checkout()]{@link File#checkout} to\r\n * match the size and status fields to the version you selected.\r\n */\r\n useVersion(version?: number): this {\r\n this._useVersion = version;\r\n return this;\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { json } from \"./impl/Utils\";\r\n\r\n/**\r\n * A roles determines what permissions {@link User | users} have on a {@link Project | project}.\r\n */\r\nexport class Role {\r\n private _data: any;\r\n protected projectId: string;\r\n protected httpClient: IHttpClient;\r\n\r\n /**\r\n * @param data - An object that implements role data storage.\r\n * @param projectId - Owner project ID.\r\n * @param httpClient - Http client.\r\n */\r\n constructor(data: any, projectId: string, httpClient: IHttpClient) {\r\n this.httpClient = httpClient;\r\n this.projectId = projectId;\r\n this.data = data;\r\n }\r\n\r\n private internalGet() {\r\n return this.httpClient.get(`/projects/${this.projectId}/roles/${this.name}`);\r\n }\r\n\r\n private internalPut(body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null) {\r\n return this.httpClient.put(`/projects/${this.projectId}/roles/${this.name}`, body);\r\n }\r\n\r\n private internalDelete() {\r\n return this.httpClient.delete(`/projects/${this.projectId}/roles/${this.name}`);\r\n }\r\n\r\n /**\r\n * Role description.\r\n */\r\n get description(): string {\r\n return this.data.description;\r\n }\r\n\r\n set description(value: string) {\r\n this._data.description = value;\r\n }\r\n\r\n /**\r\n * Raw role data received from the server.\r\n *\r\n * @readonly\r\n */\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n set data(value: any) {\r\n this._data = value;\r\n }\r\n\r\n /**\r\n * Role name.\r\n */\r\n get name(): string {\r\n return this.data.name;\r\n }\r\n\r\n set name(value: string) {\r\n this._data.name = value;\r\n }\r\n\r\n /**\r\n * Role actions are allowed to be performed.\r\n *\r\n * @property {string[]} projectActions - Actions are allowed to be performed at the project\r\n * level: `update`, `createTopic`, `createDocument`.\r\n * @property {string[]} topicActions - Actions are allowed to be performed at the topic\r\n * level: `update`, `updateBimSnippet`, `updateRelatedTopics`, `updateDocumentReferences`,\r\n * `updateFiles`, `createComment`, `createViewpoint`, `delete`.\r\n * @property {string[]} commentActions - Actions are allowed to be performed at the comment\r\n * level: `update`, `delete`.\r\n * @property {string[]} viewpointActions - Actions are allowed to be performed at the\r\n * viewpoint level: `delete`.\r\n * @property {string[]} odaGroupActions - Actions are allowed to be performed at the members\r\n * level: `update`, `delete`.\r\n * @property {string[]} odaRoleActions - Actions are allowed to be performed at the roles\r\n * level: `update`, `delete`.\r\n */\r\n get permissions(): any {\r\n return this.data.permissions;\r\n }\r\n\r\n set permissions(value: any) {\r\n this.data.permissions = value || {};\r\n }\r\n\r\n /**\r\n * Refresh role data.\r\n *\r\n * @async\r\n */\r\n async checkout(): Promise<Role> {\r\n this.data = await json(this.internalGet());\r\n return this;\r\n }\r\n\r\n /**\r\n * Update role data on the server.\r\n *\r\n * @async\r\n * @param data - Raw role data.\r\n */\r\n async update(data: any): Promise<Role> {\r\n this.data = await json(this.internalPut(data));\r\n return this;\r\n }\r\n\r\n /**\r\n * Delete a role from the project.\r\n *\r\n * @async\r\n * @returns Returns the raw data of a deleted role.\r\n */\r\n delete(): Promise<any> {\r\n return json(this.internalDelete());\r\n }\r\n\r\n /**\r\n * Save role data changes to the server. Call this method to update role data on the server\r\n * after any changes.\r\n *\r\n * @async\r\n */\r\n save(): Promise<Role> {\r\n return this.update(this.data);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { IShortUserDescription } from \"./IUser\";\r\nimport { json, userFullName, userInitials } from \"./impl/Utils\";\r\n\r\n/**\r\n * Members are the {@link User | users} who have access to the {@link Project | project}.\r\n */\r\nexport class Member {\r\n private _data: any;\r\n protected projectId: string;\r\n protected httpClient: IHttpClient;\r\n\r\n /**\r\n * @param data - An object that implements member data storage.\r\n * @param projectId - Owner project ID.\r\n * @param httpClient - Http client.\r\n */\r\n constructor(data: any, projectId: string, httpClient: IHttpClient) {\r\n this.httpClient = httpClient;\r\n this.projectId = projectId;\r\n this.data = data;\r\n }\r\n\r\n private internalGet() {\r\n return this.httpClient.get(`/projects/${this.projectId}/members/${this.id}`);\r\n }\r\n\r\n private internalPut(body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null) {\r\n return this.httpClient.put(`/projects/${this.projectId}/members/${this.id}`, body);\r\n }\r\n\r\n private internalDelete() {\r\n return this.httpClient.delete(`/projects/${this.projectId}/members/${this.id}`);\r\n }\r\n\r\n /**\r\n * Raw member data received from the server.\r\n *\r\n * @readonly\r\n */\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private set data(value: any) {\r\n this._data = value;\r\n this._data.user.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.user.userId}/avatar`;\r\n this._data.user.fullName = userFullName(this._data.user);\r\n this._data.user.initials = userInitials(this._data.user.fullName);\r\n }\r\n\r\n /**\r\n * Unique member ID.\r\n *\r\n * @readonly\r\n */\r\n get id(): string {\r\n return this.data.id;\r\n }\r\n\r\n /**\r\n * Member role. See {@link Project#getRoles | Project.getRoles()} for more details.\r\n */\r\n get role(): string {\r\n return this.data.role;\r\n }\r\n\r\n set role(value: string) {\r\n this.data.role = value;\r\n }\r\n\r\n /**\r\n * Member type. Can be `owner` or `user`.\r\n *\r\n * @readonly\r\n */\r\n get type(): string {\r\n return this.data.type;\r\n }\r\n\r\n /**\r\n * User information.\r\n *\r\n * @property {string} userId - User ID.\r\n * @property {string} userName - User name.\r\n * @property {string} name - First name.\r\n * @property {string} lastName - Last name.\r\n * @property {string} fullName - Full name.\r\n * @property {string} initials - Initials.\r\n * @property {string} email - User email.\r\n * @property {string} avatarUrl - User avatar image URL.\r\n * @readonly\r\n */\r\n get user(): IShortUserDescription {\r\n return this.data.user;\r\n }\r\n\r\n /**\r\n * Refresh member data.\r\n *\r\n * @async\r\n */\r\n async checkout(): Promise<Member> {\r\n this.data = await json(this.internalGet());\r\n return this;\r\n }\r\n\r\n /**\r\n * Update member data on the server.\r\n *\r\n * @async\r\n * @param data - Raw member data.\r\n */\r\n async update(data: any): Promise<Member> {\r\n this.data = await json(this.internalPut(data));\r\n return this;\r\n }\r\n\r\n /**\r\n * Remove a member from a project.\r\n *\r\n * @async\r\n * @returns Returns the raw data of a deleted member.\r\n */\r\n delete(): Promise<any> {\r\n return json(this.internalDelete());\r\n }\r\n\r\n /**\r\n * Save member data changes to the server. Call this method to update member data on the\r\n * server after any changes.\r\n *\r\n * @async\r\n */\r\n save(): Promise<Member> {\r\n return this.update(this.data);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { IShortUserDescription } from \"./IUser\";\r\nimport { Role } from \"./Role\";\r\nimport { Member } from \"./Member\";\r\nimport { json, text, userFullName, userInitials } from \"./impl/Utils\";\r\n\r\n/**\r\n * Projects are used to collaborate on models and track issues.\r\n */\r\nexport class Project {\r\n private _data: any;\r\n protected httpClient: IHttpClient;\r\n\r\n /**\r\n * @param data - An object that implements project data storage.\r\n * @param httpClient - Http client.\r\n */\r\n constructor(data: any, httpClient: IHttpClient) {\r\n this.httpClient = httpClient;\r\n this.data = data;\r\n }\r\n\r\n protected internalGet(relativePath: string) {\r\n return this.httpClient.get(`/projects/${this.id}${relativePath}`);\r\n }\r\n\r\n protected internalPost(\r\n relativePath: string,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null\r\n ) {\r\n return this.httpClient.post(`/projects/${this.id}${relativePath}`, body);\r\n }\r\n\r\n protected internalPut(\r\n relativePath: string,\r\n body?: ArrayBuffer | Blob | globalThis.File | FormData | object | string | null\r\n ) {\r\n return this.httpClient.put(`/projects/${this.id}${relativePath}`, body);\r\n }\r\n\r\n protected internalDelete(relativePath: string) {\r\n return this.httpClient.delete(`/projects/${this.id}${relativePath}`);\r\n }\r\n\r\n /**\r\n * Project features the user has access to.\r\n *\r\n * @property {string[]} project_actions - Actions are allowed to be performed: `update`,\r\n * `createTopic`, `createDocument`.\r\n * @readonly\r\n */\r\n get authorization(): any {\r\n return this.data.authorization;\r\n }\r\n\r\n /**\r\n * Project creation time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get createdAt(): string {\r\n return this.data.createdAt;\r\n }\r\n\r\n /**\r\n * Project custom fields object, to store custom data.\r\n */\r\n get customFields(): any {\r\n return this.data.customFields;\r\n }\r\n\r\n set customFields(value: any) {\r\n this.data.customFields = value;\r\n }\r\n\r\n /**\r\n * Raw project data received from the server.\r\n *\r\n * @readonly\r\n */\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private set data(value: any) {\r\n this._data = value;\r\n this._data.previewUrl = value.avatarUrl ? `${this.httpClient.serverUrl}/projects/${this._data.id}/preview` : \"\";\r\n this._data.owner.avatarUrl = `${this.httpClient.serverUrl}/users/${this._data.owner.userId}/avatar`;\r\n this._data.owner.fullName = userFullName(this._data.owner);\r\n this._data.owner.initials = userInitials(this._data.owner.fullName);\r\n }\r\n\r\n /**\r\n * Project description.\r\n */\r\n get description(): string {\r\n return this.data.description;\r\n }\r\n\r\n set description(value: string) {\r\n this.data.description = value;\r\n }\r\n\r\n /**\r\n * Project end date in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n */\r\n get endDate(): string {\r\n return this.data.endDate;\r\n }\r\n\r\n set endDate(value: string | Date) {\r\n this.data.endDate = value instanceof Date ? value.toISOString() : value;\r\n }\r\n\r\n /**\r\n * Unique project ID.\r\n *\r\n * @readonly\r\n */\r\n get id(): string {\r\n return this.data.id;\r\n }\r\n\r\n /**\r\n * The number of members in the project.\r\n *\r\n * @readonly\r\n */\r\n get memberCount(): number {\r\n return this.data.memberCount;\r\n }\r\n\r\n /**\r\n * The number of models in the project.\r\n *\r\n * @readonly\r\n */\r\n get modelCount(): number {\r\n return this.data.modelCount;\r\n }\r\n\r\n /**\r\n * Project name.\r\n */\r\n get name(): string {\r\n return this.data.name;\r\n }\r\n\r\n set name(value: string) {\r\n this.data.name = value;\r\n }\r\n\r\n /**\r\n * Project owner information.\r\n *\r\n * @property {string} userId - User ID.\r\n * @property {string} userName - User name.\r\n * @property {string} name - First name.\r\n * @property {string} lastName - Last name.\r\n * @property {string} fullName - Full name.\r\n * @property {string} initials - Initials.\r\n * @property {string} email - User email.\r\n * @property {string} avatarUrl - User avatar image URL.\r\n * @readonly\r\n */\r\n get owner(): IShortUserDescription {\r\n return this.data.owner;\r\n }\r\n\r\n /**\r\n * Project preview image URL. Use [setPreview()]{@link Project#setPreview} to change preview image.\r\n *\r\n * @readonly\r\n */\r\n get previewUrl(): string {\r\n return this._data.previewUrl;\r\n }\r\n\r\n /**\r\n * `true` if project is public (shared) project.\r\n */\r\n get public(): boolean {\r\n return this.data.public;\r\n }\r\n\r\n set public(value: boolean) {\r\n this.data.public = value;\r\n }\r\n\r\n /**\r\n * Project start date in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n */\r\n get startDate(): string {\r\n return this.data.startDate;\r\n }\r\n\r\n set startDate(value: string | Date) {\r\n this.data.startDate = value instanceof Date ? value.toISOString() : value;\r\n }\r\n\r\n /**\r\n * The number of topics in the project.\r\n *\r\n * @readonly\r\n */\r\n get topicCount(): number {\r\n return this.data.topicCount;\r\n }\r\n\r\n /**\r\n * Project last update time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get updatedAt(): string {\r\n return this.data.updatedAt;\r\n }\r\n\r\n /**\r\n * Refresh project data.\r\n *\r\n * @async\r\n */\r\n async checkout(): Promise<Project> {\r\n this.data = await json(this.internalGet(\"\"));\r\n return this;\r\n }\r\n\r\n /**\r\n * Update project data on the server.\r\n *\r\n * @async\r\n * @param data - Raw project data.\r\n */\r\n async update(data: any): Promise<Project> {\r\n this.data = await json(this.internalPut(\"\", data));\r\n return this;\r\n }\r\n\r\n /**\r\n * Delete the project from the server.\r\n *\r\n * @async\r\n * @returns Returns the raw data of a deleted project.\r\n */\r\n delete(): Promise<any> {\r\n return text(this.internalDelete(\"\")).then((text) => {\r\n // TODO fix for server 23.5 and below\r\n try {\r\n return JSON.parse(text);\r\n } catch {\r\n return { id: this.id };\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Save project data changes to the server. Call this method to update project data on the\r\n * server after any changes.\r\n *\r\n * @async\r\n */\r\n save(): Promise<Project> {\r\n return this.update(this.data);\r\n }\r\n\r\n /**\r\n * Set or remove the project preview.\r\n *\r\n * @async\r\n * @param image - Preview image. Can be a <a\r\n * href=\"https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\"\r\n * target=\"_blank\">Data URL</a> string, <a\r\n * href=\"https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer\"\r\n * target=\"_blank\">ArrayBuffer</a>, <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/Blob/Blob\" target=\"_blank\">Blob</a> or\r\n * Web API <a href=\"https://developer.mozilla.org/docs/Web/API/File\"\r\n * target=\"_blank\">File</a> object. Setting the `image` to `null` will remove the preview.\r\n */\r\n\r\n async setPreview(image?: ArrayBuffer | Blob | globalThis.File | FormData | string | null) {\r\n if (image) {\r\n this.data = await json(this.internalPost(\"/preview\", image));\r\n } else {\r\n this.data = await json(this.internalDelete(\"/preview\"));\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns a list of project roles. Project {@link Member | members} have different abilities\r\n * depending on the role they have in a project.\r\n *\r\n * @async\r\n */\r\n getRoles(): Promise<Role[]> {\r\n return json(this.internalGet(\"/roles\")).then((array) =>\r\n array.map((data) => new Role(data, this.id, this.httpClient))\r\n );\r\n }\r\n\r\n /**\r\n * Returns the role information.\r\n *\r\n * @async\r\n * @param name - Role name.\r\n */\r\n getRole(name: string): Promise<Role> {\r\n return json(this.internalGet(`/roles/${name}`)).then((data) => new Role(data, this.id, this.httpClient));\r\n }\r\n\r\n /**\r\n * Create a new project role.\r\n *\r\n * @async\r\n * @param name - Role name.\r\n * @param description - Role description.\r\n * @param permissions - Actions are allowed to be performed. See\r\n * {@link Role#permissions | Role.permissions} for more details.\r\n */\r\n createRole(name: string, description: string, permissions: any): Promise<Role> {\r\n return json(\r\n this.internalPost(\"/roles\", {\r\n name,\r\n description,\r\n permissions: permissions || {},\r\n })\r\n ).then((data) => new Role(data, this.id, this.httpClient));\r\n }\r\n\r\n /**\r\n * Delete project role.\r\n *\r\n * @async\r\n * @param name - Role name.\r\n * @returns Returns the raw data of a deleted role.\r\n */\r\n deleteRole(name: string): Promise<any> {\r\n return json(this.internalDelete(`/roles/${name}`));\r\n }\r\n\r\n /**\r\n * Returns a list of project members.\r\n *\r\n * @async\r\n */\r\n getMembers(): Promise<Member[]> {\r\n return json(this.internalGet(\"/members\")).then((array) =>\r\n array.map((data) => new Member(data, this.id, this.httpClient))\r\n );\r\n }\r\n\r\n /**\r\n * Returns the member information.\r\n *\r\n * @async\r\n * @param memberId - Member ID.\r\n */\r\n getMember(memberId: string): Promise<Member> {\r\n return json(this.internalGet(`/members/${memberId}`)).then((data) => new Member(data, this.id, this.httpClient));\r\n }\r\n\r\n /**\r\n * Add a user to the project to become a member and have permission to perform actions.\r\n *\r\n * @async\r\n * @param userId - User ID.\r\n * @param role - User role from the list of project roles.\r\n */\r\n addMember(userId: string, role: string): Promise<Member> {\r\n return json(this.internalPost(\"/members\", { userId, role })).then(\r\n (data) => new Member(data, this.id, this.httpClient)\r\n );\r\n }\r\n\r\n /**\r\n * Remove a member from a project.\r\n *\r\n * @async\r\n * @param memberId - Member ID.\r\n * @returns Returns the raw data of a deleted member.\r\n */\r\n removeMember(memberId: string): Promise<any> {\r\n return json(this.internalDelete(`/members/${memberId}`));\r\n }\r\n\r\n /**\r\n * Information about the file (model) that can be reference in the project topics.\r\n *\r\n * @typedef {any} FileInformation\r\n * @property {any[]} display_information - The list of fields to allow users to associate the\r\n * file with a server model.\r\n * @property {string} display_information.field_display_name - Field display name.\r\n * @property {string} display_information.field_value - Field value.\r\n * @property {any} file - The file reference object.\r\n * @property {string} file.file_name - File name.\r\n * @property {string} file.reference - File ID.\r\n */\r\n\r\n /**\r\n * Returns a list of project files. To add a file to this list, create a `project` permission\r\n * on the file using {@link File#createPermission | File.createPermission()}.\r\n *\r\n * @async\r\n */\r\n getFilesInformation(): Promise<any[]> {\r\n return json(this.httpClient.get(`/bcf/3.0/projects/${this.data.id}/files_information`)).then((items) => {\r\n items.forEach((item) => {\r\n const getFieldValue = (displayName: string) => {\r\n return (item.display_information.find((x) => x.field_display_name === displayName) || {}).field_value;\r\n };\r\n\r\n const previewUrl = `${this.httpClient.serverUrl}/files/${item.file.reference}/preview`;\r\n const ownerAvatarUrl = `${this.httpClient.serverUrl}/users/${getFieldValue(\"Owner\")}/avatar`;\r\n\r\n const ownerFirstName = getFieldValue(\"Owner First Name\");\r\n const ownerLastName = getFieldValue(\"Owner Last Name\");\r\n const ownerUserName = getFieldValue(\"Owner User Name\");\r\n const ownerFullName = userFullName(ownerFirstName, ownerLastName, ownerUserName);\r\n const ownerInitials = userInitials(ownerFullName);\r\n\r\n item.display_information.push({ field_display_name: \"Preview URL\", field_value: previewUrl });\r\n item.display_information.push({ field_display_name: \"Owner Avatar URL\", field_value: ownerAvatarUrl });\r\n item.display_information.push({ field_display_name: \"Owner Full Name\", field_value: ownerFullName });\r\n item.display_information.push({ field_display_name: \"Owner Initials\", field_value: ownerInitials });\r\n\r\n // updatedBy since 24.10\r\n\r\n const updatedByAvatarUrl = `${this.httpClient.serverUrl}/users/${getFieldValue(\"Updated By\")}/avatar`;\r\n\r\n const updatedByFirstName = getFieldValue(\"Updated By First Name\");\r\n const updatedByLastName = getFieldValue(\"Updated By Last Name\");\r\n const updatedByUserName = getFieldValue(\"Updated By User Name\");\r\n const updatedByFullName = userFullName(updatedByFirstName, updatedByLastName, updatedByUserName);\r\n const updatedByInitials = userInitials(updatedByFullName);\r\n\r\n item.display_information.push({ field_display_name: \"Updated By Avatar URL\", field_value: updatedByAvatarUrl });\r\n item.display_information.push({ field_display_name: \"Updated By Full Name\", field_value: updatedByFullName });\r\n item.display_information.push({ field_display_name: \"Updated By Initials\", field_value: updatedByInitials });\r\n\r\n // geometryType since 24.12\r\n\r\n const geometry = getFieldValue(\"Geometry Status\");\r\n const geometryGltf = getFieldValue(\"GeometryGltf Status\");\r\n const geometryType = geometry === \"done\" ? \"vsfx\" : geometryGltf === \"done\" ? \"gltf\" : \"\";\r\n\r\n item.display_information.push({ field_display_name: \"Geometry Type\", field_value: geometryType });\r\n });\r\n return items;\r\n });\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { json, userFullName, userInitials } from \"./impl/Utils\";\r\n\r\nexport interface UserParams {\r\n /**\r\n * `true` if user is an administrator\r\n */\r\n isAdmin?: boolean;\r\n\r\n /**\r\n * User name\r\n */\r\n userName?: string;\r\n\r\n /**\r\n * First name\r\n */\r\n firstName?: string;\r\n\r\n /**\r\n * Last name\r\n */\r\n lastName?: string;\r\n\r\n /**\r\n * `true` if user is allowed to create a project\r\n */\r\n canCreateProject?: boolean;\r\n\r\n /**\r\n * The maximum number of projects that the user can create\r\n */\r\n projectsLimit?: number;\r\n\r\n /**\r\n * The size of the file storage available to the user\r\n */\r\n storageLimit?: number;\r\n}\r\n\r\n/**\r\n * The class representing a `user` entity.\r\n */\r\nexport class User {\r\n private _data: any;\r\n protected httpClient: IHttpClient;\r\n\r\n /**\r\n * @param data - An object that implements user data storage.\r\n * @param httpClient - Http client.\r\n */\r\n constructor(data: any, httpClient: IHttpClient) {\r\n this.httpClient = httpClient;\r\n this.data = data;\r\n }\r\n\r\n /**\r\n * User avatar image URL. Use {@link User#setAvatar | setAvatar()} to change avatar image.\r\n *\r\n * @readonly\r\n */\r\n get avatarUrl(): string {\r\n return this._data.avatarUrl;\r\n }\r\n\r\n /**\r\n * `true` if user is allowed to create a project.\r\n *\r\n * @readonly\r\n */\r\n get canCreateProject(): boolean {\r\n return this.data.canCreateProject;\r\n }\r\n\r\n /**\r\n * User account registration time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n *\r\n * @readonly\r\n */\r\n get createAt(): string {\r\n return this.data.createAt;\r\n }\r\n\r\n /**\r\n * User custom fields object, to store custom data.\r\n */\r\n get customFields(): any {\r\n return this.data.customFields;\r\n }\r\n\r\n set customFields(value: any) {\r\n this._data.customFields = value;\r\n }\r\n\r\n /**\r\n * Raw user data received from the server.\r\n *\r\n * @readonly\r\n */\r\n\r\n get data(): any {\r\n return this._data;\r\n }\r\n\r\n private set data(value: any) {\r\n this._data = value;\r\n this._data.avatarUrl = value.avatarImage ? `${this.httpClient.serverUrl}/users/${this._data.id}/avatar` : \"\";\r\n this._data.fullName = userFullName(this._data);\r\n this._data.initials = userInitials(this._data.fullName);\r\n }\r\n\r\n /**\r\n * User email.\r\n *\r\n * @readonly\r\n */\r\n get email(): string {\r\n return this.data.email;\r\n }\r\n\r\n /**\r\n * The user's email confirmation code, or an empty string if the email has already been confirmed.\r\n *\r\n * @readonly\r\n */\r\n get emailConfirmationId(): string {\r\n return this.data.emailConfirmationId;\r\n }\r\n\r\n /**\r\n * First name.\r\n */\r\n get firstName(): string {\r\n return this.data.firstName;\r\n }\r\n\r\n set firstName(value: string) {\r\n this._data.firstName = value;\r\n }\r\n\r\n /**\r\n * Full name. Returns the user's first and last name. If first name and last names are empty,\r\n * returns the user name.\r\n */\r\n get fullName(): string {\r\n return this.data.fullName;\r\n }\r\n\r\n /**\r\n * Unique user ID.\r\n *\r\n * @readonly\r\n */\r\n get id(): string {\r\n return this.data.id;\r\n }\r\n\r\n /**\r\n * User initials. Returns a first letters of the user's first and last names. If first name\r\n * and last names are empty, returns the first letter of the user name.\r\n */\r\n get initials(): string {\r\n return this.data.initials;\r\n }\r\n\r\n /**\r\n * `false` if the user has not yet confirmed his email address.\r\n *\r\n * @readonly\r\n */\r\n get isEmailConfirmed(): boolean {\r\n return this.data.isEmailConfirmed;\r\n }\r\n\r\n /**\r\n * User last update time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n */\r\n get lastModified(): string {\r\n return this.data.lastModified;\r\n }\r\n\r\n /**\r\n * Last name.\r\n */\r\n get lastName(): string {\r\n return this.data.lastName;\r\n }\r\n\r\n set lastName(value: string) {\r\n this._data.lastName = value;\r\n }\r\n\r\n /**\r\n * User last sign in time (UTC) in the format specified in <a\r\n * href=\"https://www.wikipedia.org/wiki/ISO_8601\" target=\"_blank\">ISO 8601</a>.\r\n */\r\n get lastSignIn(): string {\r\n return this.data.lastSignIn;\r\n }\r\n\r\n /**\r\n * The maximum number of projects that a user can create.\r\n *\r\n * @readonly\r\n */\r\n get projectsLimit(): number {\r\n return this.data.projectsLimit;\r\n }\r\n\r\n /**\r\n * The user's API key.\r\n *\r\n * @readonly\r\n */\r\n get token(): string {\r\n return this.data.tokenInfo.token;\r\n }\r\n\r\n /**\r\n * User name.\r\n */\r\n get userName(): string {\r\n return this.data.userName;\r\n }\r\n\r\n set userName(value: string) {\r\n this._data.userName = value;\r\n }\r\n\r\n /**\r\n * Refresh user data. Only admins can checkout other users, if the current logged in user\r\n * does not have administrator rights, hi can only checkout himself, otherwise an exception\r\n * will be thrown.\r\n */\r\n async checkout(): Promise<User> {\r\n if (this.id === this.httpClient.signInUserId) {\r\n const data = await json(this.httpClient.get(\"/user\"));\r\n this.data = { id: this.id, ...data };\r\n } else {\r\n const data = await json(this.httpClient.get(`/users/${this.id}`));\r\n this.data = { id: data.id, ...data.userBrief };\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Update user data on the server. Only admins can update other users, if the current logged\r\n * in user does not have administrator rights, hi can only update himself, otherwise an\r\n * exception will be thrown.\r\n *\r\n * @async\r\n * @param data - Raw user data.\r\n */\r\n async update(data: any) {\r\n if (this.id === this.httpClient.signInUserId) {\r\n const newData = await json(this.httpClient.put(\"/user\", data));\r\n this.data = { id: this.id, ...newData };\r\n } else {\r\n const newData = await json(this.httpClient.put(`/users/${this.id}`, { userBrief: data }));\r\n this.data = { id: newData.id, ...newData.userBrief };\r\n }\r\n return this;\r\n }\r\n\r\n /**\r\n * Delete a user from the server. Only admins can delete users, if the current logged in user\r\n * does not have administrator rights, an exception will be thrown.\r\n *\r\n * Admins can delete themselves or other admins. An admin can only delete himself if he is\r\n * not the last administrator.\r\n *\r\n * You need to re-login to continue working after deleting the current logged in user.\r\n *\r\n * @async\r\n * @returns Returns the raw data of a deleted user.\r\n */\r\n delete(): Promise<any> {\r\n return json(this.httpClient.delete(`/users/${this.id}`)).then((data) => {\r\n if (this.id === this.httpClient.signInUserId) {\r\n this.httpClient.headers = {};\r\n this.httpClient.signInUserId = \"\";\r\n }\r\n return data;\r\n });\r\n }\r\n\r\n /**\r\n * Save user data changes to the server. Call this method to update user data on the server\r\n * after any changes.\r\n *\r\n * @async\r\n */\r\n save(): Promise<User> {\r\n return this.update(this.data);\r\n }\r\n\r\n /**\r\n * Set or remove the user avatar. Only admins can set the avatar of other users, if the\r\n * current logged in user does not have administrator rights, he can only set his own avatar,\r\n * otherwise an exception will be thrown.\r\n *\r\n * @async\r\n * @param image - Avatar image. Can be a <a\r\n * href=\"https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\"\r\n * target=\"_blank\">Data URL</a> string, <a\r\n * href=\"https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/ArrayBuffer\"\r\n * target=\"_blank\">ArrayBuffer</a>, <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/Blob/Blob\" target=\"_blank\">Blob</a> or\r\n * Web API <a href=\"https://developer.mozilla.org/docs/Web/API/File\"\r\n * target=\"_blank\">File</a> object. Setting the `image` to `null` will remove the avatar.\r\n */\r\n async setAvatar(image?: ArrayBuffer | Blob | globalThis.File | FormData | string | null): Promise<User> {\r\n if (image) {\r\n if (this.id === this.httpClient.signInUserId) {\r\n const data = await json(this.httpClient.post(\"/user/avatar\", image));\r\n this.data = { id: this.id, ...data };\r\n } else {\r\n const data = await json(this.httpClient.post(`/users/${this.id}/avatar`, image));\r\n this.data = { id: data.id, ...data.userBrief };\r\n }\r\n } else {\r\n if (this.id === this.httpClient.signInUserId) {\r\n const data = await json(this.httpClient.delete(\"/user/avatar\"));\r\n this.data = { id: this.id, ...data };\r\n } else {\r\n const data = await json(this.httpClient.delete(`/users/${this.id}/avatar`));\r\n this.data = { id: data.id, ...data.userBrief };\r\n }\r\n }\r\n return this;\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { EventEmitter2 } from \"../Viewer/EventEmitter2\";\r\nimport { IHttpClient } from \"./IHttpClient\";\r\nimport { HttpClient } from \"./HttpClient\";\r\nimport { ClientEventMap } from \"./ClientEvents\";\r\nimport { Options } from \"../Viewer/Options\";\r\nimport { OptionsEventMap } from \"../Viewer/OptionsEvents\";\r\nimport { Assembly } from \"./Assembly\";\r\nimport { File } from \"./File\";\r\nimport { Job } from \"./Job\";\r\nimport { Project } from \"./Project\";\r\nimport { User } from \"./User\";\r\nimport { downloadProgress, json, text, parseArgs } from \"./impl/Utils\";\r\n\r\n/**\r\n * The `Client.js` library class that provides methods to access the [Open Cloud\r\n * Server](https://cloud.opendesign.com/docs/index.html#/opencloud_server) resources like\r\n * Projects, Files, Issues etc.\r\n */\r\nexport class Client extends EventEmitter2<ClientEventMap & OptionsEventMap> {\r\n private _options: Options;\r\n private _serverUrl: string;\r\n\r\n private _httpClient: IHttpClient;\r\n private _user: User | null;\r\n\r\n public eventEmitter: EventEmitter2;\r\n\r\n /**\r\n * @param params - An object containing client configuration parameters.\r\n * @param params.serverUrl - Open Cloud Server URL.\r\n */\r\n constructor(params: { serverUrl?: string; url?: string } = {}) {\r\n super();\r\n this.configure(params);\r\n this.eventEmitter = this;\r\n this._options = new Options(this);\r\n this._user = null;\r\n }\r\n\r\n /**\r\n * Open Cloud Server URL. Use {@link Client#configure | configure()} to change server URL.\r\n *\r\n * @readonly\r\n */\r\n get serverUrl(): string {\r\n return this._serverUrl;\r\n }\r\n\r\n /**\r\n * `VisualizeJS` parameters. Changes to these parameters are automatically applied to\r\n * `Viewer` instances associated with that client.\r\n */\r\n get options(): Options {\r\n return this._options;\r\n }\r\n\r\n /**\r\n * Change the client configuration parameters.\r\n *\r\n * @param params - An object containing new configuration parameters.\r\n * @param params.serverUrl - Open Cloud Server URL.\r\n * @returns Returns a reference to the `Client`.\r\n */\r\n configure(params: { serverUrl?: string }): this {\r\n this._serverUrl = (params.serverUrl || \"\").replace(/\\/+$/, \"\");\r\n this._httpClient = new HttpClient(this.serverUrl);\r\n this._user = null;\r\n return this;\r\n }\r\n\r\n /**\r\n * The Object represents server version information.\r\n *\r\n * @typedef {any} VersionResult\r\n * @property {string} version - The server version.\r\n * @property {string} hash - Build hash.\r\n */\r\n\r\n /**\r\n * Returns server version.\r\n *\r\n * @async\r\n */\r\n version(): Promise<any> {\r\n return this._httpClient\r\n .get(\"/version\")\r\n .then((response) => response.json())\r\n .then((data) => ({\r\n ...data,\r\n server: data.version,\r\n client: \"CLIENT_JS_VERSION\",\r\n }));\r\n }\r\n\r\n /**\r\n * Register a new user with the specified email and password.\r\n *\r\n * @async\r\n * @param email - User email. Cannot be empty.\r\n * @param password - User password. Cannot be empty. Password can only contain letters (a-z,\r\n * A-Z), numbers (0-9), and special characters (~!@#$%^&*()_-+={}[]:;\"'`<>,.?|/\\ ).\r\n * @param userName - User name. Cannot be empty or blank if defined. Leave undefined to use\r\n * `username` from email.\r\n */\r\n registerUser(email: string, password: string, userName?: string): Promise<any> {\r\n return this._httpClient\r\n .post(\"/register\", {\r\n email,\r\n password,\r\n userName: userName ?? (email + \"\").split(\"@\").at(0),\r\n })\r\n .then((response) => response.json());\r\n }\r\n\r\n /**\r\n * Resend the Confirmation Email to new user. If the user's email is already confirmed, an\r\n * exception will be thrown.\r\n *\r\n * @async\r\n * @param email - User email.\r\n * @param password - User password.\r\n */\r\n resendConfirmationEmail(email: string, password: string): Promise<any> {\r\n return this._httpClient\r\n .post(\"/register/email-confirmation\", { email, password })\r\n .then((response) => response.json());\r\n }\r\n\r\n /**\r\n * Confirm the user's email. If the user's email is already confirmed, an exception will be thrown.\r\n *\r\n * @async\r\n * @param emailConfirmationId - Confirmation code from the Confirmation Email.\r\n */\r\n confirmUserEmail(emailConfirmationId: string): Promise<any> {\r\n return this._httpClient\r\n .get(`/register/email-confirmation/${emailConfirmationId}`)\r\n .then((response) => response.json());\r\n }\r\n\r\n /**\r\n * Log in an existing user using email or user name.\r\n *\r\n * @async\r\n * @param email - An email or user name for authentication request.\r\n * @param password - Password for authentication request.\r\n */\r\n async signInWithEmail(email: string, password: string): Promise<User> {\r\n const credentials = btoa(unescape(encodeURIComponent(email + \":\" + password)));\r\n this._httpClient.headers = { Authorization: \"Basic \" + credentials };\r\n const data = await json(this._httpClient.get(\"/token\"));\r\n return this.setCurrentUser(data);\r\n }\r\n\r\n /**\r\n * Log in an existing user using API Key.\r\n *\r\n * @async\r\n * @param token - An access token for authentication request. See\r\n * {@link User#token | User.token} for more details.\r\n */\r\n async signInWithToken(token: string): Promise<User> {\r\n this._httpClient.headers = { Authorization: token };\r\n const data = await json(this._httpClient.get(\"/user\"));\r\n return this.setCurrentUser(data);\r\n }\r\n\r\n // Save the current logged in user information for internal use.\r\n\r\n private setCurrentUser(data: any): User {\r\n this._user = new User(data, this._httpClient);\r\n this._httpClient.headers = { Authorization: data.tokenInfo.token };\r\n this._httpClient.signInUserId = this._user.id;\r\n return this._user;\r\n }\r\n\r\n private clearCurrentUser(): void {\r\n this._user = null;\r\n this._httpClient.headers = {};\r\n this._httpClient.signInUserId = \"\";\r\n }\r\n\r\n /**\r\n * Returns the current logged in user information. Returns `null` if the user is not logged\r\n * in or the logged in user has deleted himself.\r\n */\r\n getCurrentUser(): User | null {\r\n if (this._user && !this._httpClient.signInUserId) this._user = null;\r\n return this._user;\r\n }\r\n\r\n /**\r\n * Returns a list of server users. Only admins can get a list of users, if the current logged\r\n * in user does not have administrator rights, an exception will be thrown.\r\n *\r\n * @async\r\n */\r\n getUsers(): Promise<User[]> {\r\n return json(this._httpClient.get(\"/users\"))\r\n .then((array) => array.map((data) => ({ id: data.id, ...data.userBrief })))\r\n .then((array) => array.map((data) => new User(data, this._httpClient)));\r\n }\r\n\r\n /**\r\n * Returns the user information. Only admins can get other users, if the current logged in\r\n * user does not have administrator rights, hi can only get himself, otherwise an exception\r\n * will be thrown.\r\n *\r\n * @async\r\n * @param userId - User ID.\r\n */\r\n getUser(userId: string): Promise<User> {\r\n if (userId === this._httpClient.signInUserId) {\r\n return json(this._httpClient.get(\"/user\"))\r\n .then((data) => ({ id: userId, ...data }))\r\n .then((data) => new User(data, this._httpClient));\r\n } else {\r\n return json(this._httpClient.get(`/users/${userId}`))\r\n .then((data) => ({ id: data.id, ...data.userBrief }))\r\n .then((data) => new User(data, this._httpClient));\r\n }\r\n }\r\n\r\n /**\r\n * Create a new user. Only admins can create users, if the current logged in user does not\r\n * have administrator rights, an exception will be thrown.\r\n *\r\n * @async\r\n * @param email - User email. Cannot be empty.\r\n * @param password - User password. Cannot be empty. Password can only contain latin letters\r\n * (a-z, A-Z), numbers (0-9), and special characters (~!@#$%^&*()_-+={}[]:;\"'`<>,.?|/\\ ).\r\n * @param params - Additional user data.\r\n * @param params.isAdmin - `true` if user is an administrator.\r\n * @param params.userName - User name. Cannot be empty or blank if defined. Leave undefined\r\n * to use `username` from email.\r\n * @param params.firstName - First name.\r\n * @param params.lastName - Last name.\r\n * @param params.canCreateProject - `true` if user is allowed to create a project.\r\n * @param params.projectsLimit - The maximum number of projects that the user can create.\r\n * @param params.storageLimit - The size of the file storage available to the user.\r\n */\r\n createUser(\r\n email: string,\r\n password: string,\r\n params: {\r\n isAdmin?: boolean;\r\n userName?: string;\r\n firstName?: string;\r\n lastName?: string;\r\n canCreateProject?: boolean;\r\n projectsLimit?: number;\r\n storageLimit?: number;\r\n } = {}\r\n ): Promise<User> {\r\n const { isAdmin, userName, ...rest } = params;\r\n return json(\r\n this._httpClient.post(\"/users\", {\r\n isAdmin,\r\n userBrief: {\r\n ...rest,\r\n email,\r\n userName: userName ?? (email + \"\").split(\"@\").at(0),\r\n },\r\n password,\r\n })\r\n )\r\n .then((data) => ({ id: data.id, ...data.userBrief }))\r\n .then((data) => new User(data, this._httpClient));\r\n }\r\n\r\n /**\r\n * Delete a user from the server. Only admins can delete users, if the current logged in user\r\n * does not have administrator rights, an exception will be thrown.\r\n *\r\n * Admins can delete themselves or other admins. An admin can only delete himself if he is\r\n * not the last administrator.\r\n *\r\n * You need to re-login to continue working after deleting the current logged in user.\r\n *\r\n * @async\r\n * @param userId - User ID.\r\n * @returns Returns the raw data of a deleted user.\r\n */\r\n deleteUser(userId: string): Promise<any> {\r\n return json(this._httpClient.delete(`/users/${userId}`)).then((data) => {\r\n if (userId === this._httpClient.signInUserId) {\r\n this.clearCurrentUser();\r\n }\r\n return data;\r\n });\r\n }\r\n\r\n /**\r\n * Result for file list.\r\n *\r\n * @typedef {any} FilesResult\r\n * @property {number} allSize - Total number of files the user has access to.\r\n * @property {number} start - The starting index in the file list in the request.\r\n * @property {number} limit - The maximum number of requested files.\r\n * @property {File[]} result - Result file list.\r\n * @property {number} size - The number of files in the result list.\r\n */\r\n\r\n /**\r\n * Returns a list of files the user has access to.\r\n *\r\n * @async\r\n * @param start - The starting index in the file list. Used for paging.\r\n * @param limit - The maximum number of files that should be returned per request. Used for paging.\r\n * @param name - Filter the files by part of the name.\r\n * @param ext - Filter the files by extension. Extension can be `dgn`, `dwf`, `dwg`, `dxf`,\r\n * `ifc`, `ifczip`, `nwc`, `nwd`, `obj`, `rcs`, `rfa`, `rvt`, `step`, `stl`, `stp`, `vsf`,\r\n * or any other drawing or reference file type extension. You can specify multiple\r\n * extensions on one `string` by separating them with a \"|\".\r\n * @param ids - List of file IDs to return. You can specify multiple IDs on one `string` by\r\n * separating them with a \"|\".\r\n * @param sortByDesc - Allows to specify the descending order of the result. By default,\r\n * files are sorted by name in ascending order.\r\n * @param {string} sortField - Allows to specify sort field.\r\n */\r\n getFiles(\r\n start?: number,\r\n limit?: number,\r\n name?: string,\r\n ext?: string | string[],\r\n ids?: string | string[],\r\n sortByDesc?: boolean,\r\n sortField?: string\r\n ): Promise<{ allSize: number; start: number; limit: number; result: File[]; size: number }> {\r\n const searchParams = new URLSearchParams();\r\n if (start > 0) searchParams.set(\"start\", start.toString());\r\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\r\n if (name) searchParams.set(\"name\", name);\r\n if (ext) {\r\n if (Array.isArray(ext)) ext = ext.join(\"|\");\r\n if (typeof ext === \"string\") ext = ext.toLowerCase();\r\n if (ext) searchParams.set(\"ext\", ext);\r\n }\r\n if (ids) {\r\n if (Array.isArray(ids)) ids = ids.join(\"|\");\r\n searchParams.set(\"id\", ids);\r\n }\r\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\r\n if (sortField) searchParams.set(\"sortField\", sortField);\r\n\r\n let queryString = searchParams.toString();\r\n if (queryString) queryString = \"?\" + queryString;\r\n\r\n return json(this._httpClient.get(`/files${queryString}`)).then((files) => {\r\n return {\r\n ...files,\r\n result: files.result.map((data) => new File(data, this._httpClient)),\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Returns the file information.\r\n *\r\n * @async\r\n * @param fileId - File ID.\r\n */\r\n getFile(fileId: string): Promise<File> {\r\n return json(this._httpClient.get(`/files/${fileId}`)).then((data) => new File(data, this._httpClient));\r\n }\r\n\r\n /**\r\n * Upload a drawing or reference file to the server.\r\n *\r\n * Fires:\r\n *\r\n * - {@link UploadProgressEvent | uploadprogress}\r\n *\r\n * @async\r\n * @param file - Web API <a href=\"https://developer.mozilla.org/docs/Web/API/File\"\r\n * target=\"_blank\">File</a> object are generally retrieved from a <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/FileList\" target=\"_blank\">FileList</a>\r\n * object returned as a result of a user selecting files using the HTML `<input>` element.\r\n * @param params - An object containing upload parameters.\r\n * @param params.geometry=true - Create job to extract file geometry data. Can be:\r\n *\r\n * - `true` - Extract file geometry data into type, defined by [options]{@link Client#options}.\r\n * - `vsfx` - Extract file geometry data into `VSFX` to open the file in `VisualizeJS` viewer.\r\n * - `gltf` - Extract file geometry data into `glTF` to open the file in `Three.js` viewer.\r\n *\r\n * @param params.properties=false - Create job to extract file properties.\r\n * @param params.waitForDone=false - Wait for geometry and properties jobs to complete.\r\n * @param params.timeout - The time, in milliseconds that the function should wait jobs. If\r\n * no one jobs are done during this time, the `TimeoutError` exception will be thrown.\r\n * @param params.interval - The time, in milliseconds, the function should delay in between\r\n * checking jobs status.\r\n * @param params.signal - An <a\r\n * href=\"https://developer.mozilla.org/docs/Web/API/AbortController\">AbortController</a>\r\n * signal object instance, which can be used to abort waiting as desired.\r\n * @param params.onProgress - Upload progress callback.\r\n */\r\n async uploadFile(\r\n file: globalThis.File,\r\n params: {\r\n geometry?: boolean | string;\r\n properties?: boolean;\r\n waitForDone?: boolean;\r\n timeout?: number;\r\n interval?: number;\r\n signal?: AbortSignal;\r\n onProgress?: (progress: number, file: globalThis.File) => void;\r\n } = {\r\n geometry: true,\r\n properties: false,\r\n waitForDone: false,\r\n }\r\n ): Promise<File> {\r\n const result = await this._httpClient\r\n .postFile(\"/files\", file, (progress) => {\r\n this.emitEvent({ type: \"uploadprogress\", data: progress, file });\r\n params.onProgress?.(progress, file);\r\n })\r\n .then((xhr: XMLHttpRequest) => JSON.parse(xhr.responseText))\r\n .then((data) => new File(data, this._httpClient));\r\n\r\n const geometryType = typeof params.geometry === \"string\" ? params.geometry : this.options.geometryType;\r\n\r\n const jobs: string[] = [];\r\n if (params.geometry) jobs.push((await result.extractGeometry(geometryType)).outputFormat);\r\n if (params.properties) jobs.push((await result.extractProperties()).outputFormat);\r\n if (params.waitForDone && jobs.length > 0) await result.waitForDone(jobs, true, params);\r\n\r\n return result;\r\n }\r\n\r\n /**\r\n * Delete the drawing or reference file from the server.\r\n *\r\n * @async\r\n * @param fileId - File ID.\r\n * @returns Returns the raw data of a deleted file.\r\n */\r\n deleteFile(fileId: string): Promise<any> {\r\n return json(this._httpClient.delete(`/files/${fileId}`));\r\n }\r\n\r\n /**\r\n * Download the drawing or reference file.\r\n *\r\n * @async\r\n * @param fileId - File ID.\r\n * @param onProgress - Download progress callback.\r\n * @param signal - An <a href=\"https://developer.mozilla.org/docs/Web/API/AbortSignal\" target\r\n * =\"_blank\">AbortSignal</a> object instance. Allows to communicate with a fetch request\r\n * and abort it if desired.\r\n */\r\n downloadFile(fileId: string, onProgress?: (progress: number) => void, signal?: AbortSignal): Promise<ArrayBuffer> {\r\n return this._httpClient\r\n .get(`/files/${fileId}/downloads`, signal)\r\n .then((response) => downloadProgress(response, onProgress))\r\n .then((response) => response.arrayBuffer());\r\n }\r\n\r\n /**\r\n * Result for job list.\r\n *\r\n * @typedef {any} JobsResult\r\n * @property {number} allSize - Total number of jobs created by the user.\r\n * @property {number} start - The starting index in the job list in the request.\r\n * @property {number} limit - The maximum number of requested jobs.\r\n * @property {Job[]} result - Result job list.\r\n * @property {number} size - The number of jobs in the result list.\r\n */\r\n\r\n /**\r\n * Returns a list of jobs created by current user.\r\n *\r\n * @async\r\n * @param status - Filter the jobs by status. Status can be `waiting`, `inpogress`, `done` or\r\n * `failed`. You can specify multiple statuses on one `string` by separating them with a \"|\".\r\n * @param limit - The maximum number of jobs that should be returned per request. Used for paging.\r\n * @param start - The starting index in the job list. Used for paging.\r\n * @param sortByDesc - Allows to specify the descending order of the result. By default, jobs\r\n * are sorted by creation time in ascending order.\r\n * @param {boolean} sortField - Allows to specify sort field.\r\n */\r\n getJobs(\r\n status?: string | string[],\r\n limit?: number,\r\n start?: number,\r\n sortByDesc?: boolean,\r\n sortField?: string\r\n ): Promise<{ allSize: number; start: number; limit: number; result: Job[]; size: number }> {\r\n const searchParams = new URLSearchParams();\r\n if (start > 0) searchParams.set(\"start\", start.toString());\r\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\r\n if (status) {\r\n if (Array.isArray(status)) status = status.join(\"|\");\r\n if (typeof status === \"string\") status = status.trim().toLowerCase();\r\n if (status) searchParams.set(\"status\", status);\r\n }\r\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\r\n if (sortField) searchParams.set(\"sortField\", sortField);\r\n\r\n let queryString = searchParams.toString();\r\n if (queryString) queryString = \"?\" + queryString;\r\n\r\n return json(this._httpClient.get(`/jobs${queryString}`)).then((jobs) => ({\r\n ...jobs,\r\n result: jobs.result.map((data) => new Job(data, this._httpClient)),\r\n }));\r\n }\r\n\r\n /**\r\n * Returns the job information.\r\n *\r\n * @async\r\n * @param jobId - Job ID.\r\n */\r\n getJob(jobId: string): Promise<Job> {\r\n return json(this._httpClient.get(`/jobs/${jobId}`)).then((data) => new Job(data, this._httpClient));\r\n }\r\n\r\n /**\r\n * Create a new job.\r\n *\r\n * @async\r\n * @param fileId - File ID.\r\n * @param outputFormat - The job type. Can be one of:\r\n *\r\n * - `geometry` - Extract file geometry data into `VSFX`.\r\n * - `geometryGltf` - Extract file geometry data into `glTF`.\r\n * - `properties` - Extract file properties.\r\n * - `validation` - Validate the file. Only for `IFC`.\r\n * - `dwg`, `obj`, `gltf`, `glb`, `vsf`, `pdf`, `3dpdf` - Export file to the one of the supported format.\r\n * - Other custom job name. Custom job runner must be registered in the job templates table\r\n * before creating a job.\r\n *\r\n * @param parameters - Parameters for the job runner. Can be given as command line arguments\r\n * for the File Converter tool in form \"--arg=value\".\r\n */\r\n createJob(fileId: string, outputFormat: string, parameters?: string | object): Promise<Job> {\r\n return this._httpClient\r\n .post(\"/jobs\", {\r\n fileId,\r\n outputFormat,\r\n parameters: parseArgs(parameters),\r\n })\r\n .then((response) => response.json())\r\n .then((data) => new Job(data, this._httpClient));\r\n }\r\n\r\n /**\r\n * Remove a job from the server job list. The method does not delete or stop jobs that are\r\n * already being executed.\r\n *\r\n * @async\r\n * @param jobId - Job ID.\r\n * @returns Returns the raw data of a deleted job.\r\n */\r\n deleteJob(jobId: string): Promise<any> {\r\n return json(this._httpClient.delete(`/jobs/${jobId}`));\r\n }\r\n\r\n /**\r\n * Result for assembly list.\r\n *\r\n * @typedef {any} AssembliesResult\r\n * @property {number} allSize - Total number of assemblies the user has access to.\r\n * @property {number} start - The starting index in the assembly list in the request.\r\n * @property {number} limit - The maximum number of requested assemblies.\r\n * @property {Assembly[]} result - Result assembly list.\r\n * @property {number} size - The number of assemblies in the result list.\r\n */\r\n\r\n /**\r\n * Returns a list of assemblies the user has access to.\r\n *\r\n * @async\r\n * @param start - The starting index in the assembly list. Used for paging.\r\n * @param limit - The maximum number of assemblies that should be returned per request. Used\r\n * for paging.\r\n * @param name - Filter the assemblies by part of the name.\r\n * @param ids - List of assembly IDs to return. You can specify multiple IDs on one `string`\r\n * by separating them with a \"|\".\r\n * @param sortByDesc - Allows to specify the descending order of the result. By default\r\n * assemblies are sorted by name in ascending order.\r\n * @param sortField - Allows to specify sort field.\r\n */\r\n getAssemblies(\r\n start?: number,\r\n limit?: number,\r\n name?: string,\r\n ids?: string | string[],\r\n sortByDesc?: boolean,\r\n sortField?: string\r\n ): Promise<{ allSize: number; start: number; limit: number; result: Assembly[]; size: number }> {\r\n const searchParams = new URLSearchParams();\r\n if (start > 0) searchParams.set(\"start\", start.toString());\r\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\r\n if (name) searchParams.set(\"name\", name);\r\n if (ids) {\r\n if (Array.isArray(ids)) ids = ids.join(\"|\");\r\n if (typeof ids === \"string\") ids = ids.trim();\r\n if (ids) searchParams.set(\"id\", ids);\r\n }\r\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\r\n if (sortField) searchParams.set(\"sortField\", sortField);\r\n\r\n let queryString = searchParams.toString();\r\n if (queryString) queryString = \"?\" + queryString;\r\n\r\n return json(this._httpClient.get(`/assemblies${queryString}`)).then((assemblies) => {\r\n return {\r\n ...assemblies,\r\n result: assemblies.result.map((data) => new Assembly(data, this._httpClient)),\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Get assembly information.\r\n *\r\n * @async\r\n * @param assemblyId - Assembly ID.\r\n */\r\n getAssembly(assemblyId: string): Promise<Assembly> {\r\n return json(this._httpClient.get(`/assemblies/${assemblyId}`)).then((data) => new Assembly(data, this._httpClient));\r\n }\r\n\r\n /**\r\n * Create a new assembly.\r\n *\r\n * @async\r\n * @param files - List of file IDs.\r\n * @param name - Assembly name.\r\n * @param params - An object containing upload parameters.\r\n * @param params.waitForDone=false - Wait for assembly to be created.\r\n */\r\n createAssembly(\r\n files: string[],\r\n name: string,\r\n params?: {\r\n waitForDone?: boolean;\r\n timeout?: number;\r\n interval?: number;\r\n signal?: AbortSignal;\r\n }\r\n ): Promise<Assembly> {\r\n const { waitForDone } = params ?? {};\r\n return this._httpClient\r\n .post(\"/assemblies\", { name, files })\r\n .then((response) => response.json())\r\n .then((data) => new Assembly(data, this._httpClient))\r\n .then((result) => (waitForDone ? result.waitForDone(params) : result));\r\n }\r\n\r\n /**\r\n * Delete the assembly from the server.\r\n *\r\n * @async\r\n * @param assemblyId - Assembly ID.\r\n * @returns Returns the raw data of a deleted assembly.\r\n */\r\n deleteAssembly(assemblyId: string): Promise<any> {\r\n return json(this._httpClient.delete(`/assemblies/${assemblyId}`));\r\n }\r\n\r\n /**\r\n * Result for project list.\r\n *\r\n * @typedef {any} ProjectsResult\r\n * @property {number} allSize - Total number of projects the user has access to.\r\n * @property {number} start - The starting index in the project list in the request.\r\n * @property {number} limit - The maximum number of requested projects.\r\n * @property {Project[]} result - Result project list.\r\n * @property {number} size - The number of projects in the result list.\r\n */\r\n\r\n /**\r\n * Returns a list of projects the user has access to.\r\n *\r\n * @async\r\n * @param start - The starting index in the project list. Used for paging.\r\n * @param limit - The maximum number of projects that should be returned per request. Used for paging.\r\n * @param name - Filter the projects by part of the name.\r\n * @param ids - List of project IDs to return. You can specify multiple IDs on one `string`\r\n * by separating them with a \"|\".\r\n * @param sortByDesc - Allows to specify the descending order of the result. By default\r\n * projects are sorted by name in ascending order.\r\n */\r\n getProjects(\r\n start?: number,\r\n limit?: number,\r\n name?: string,\r\n ids?: string | string[],\r\n sortByDesc?: boolean\r\n ): Promise<{ allSize: number; start: number; limit: number; result: Project[]; size: number }> {\r\n const searchParams = new URLSearchParams();\r\n if (start > 0) searchParams.set(\"start\", start.toString());\r\n if (limit > 0) searchParams.set(\"limit\", limit.toString());\r\n if (name) searchParams.set(\"name\", name);\r\n if (ids) {\r\n if (Array.isArray(ids)) ids = ids.join(\"|\");\r\n if (typeof ids === \"string\") ids = ids.trim();\r\n if (ids) searchParams.set(\"id\", ids);\r\n }\r\n if (sortByDesc !== undefined) searchParams.set(\"sortBy\", sortByDesc ? \"desc\" : \"asc\");\r\n\r\n let queryString = searchParams.toString();\r\n if (queryString) queryString = \"?\" + queryString;\r\n return json(this._httpClient.get(`/projects${queryString}`))\r\n .then((projects) => {\r\n // fix for server 23.5 and below\r\n if (Array.isArray(projects)) {\r\n let result = projects;\r\n if (ids) result = result.filter((x) => ids.includes(x.id));\r\n if (name) result = result.filter((x) => x.name.includes(name));\r\n if (limit > 0) {\r\n const begin = start > 0 ? start : 0;\r\n result = result.slice(begin, begin + limit);\r\n }\r\n return {\r\n allSize: projects.length,\r\n start,\r\n limit,\r\n result,\r\n size: result.length,\r\n };\r\n }\r\n return projects;\r\n })\r\n .then((projects) => {\r\n return {\r\n ...projects,\r\n result: projects.result.map((data) => new Project(data, this._httpClient)),\r\n };\r\n });\r\n }\r\n\r\n /**\r\n * Returns the project information.\r\n *\r\n * @async\r\n * @param projectId - Project ID.\r\n */\r\n getProject(projectId: string): Promise<Project> {\r\n return json(this._httpClient.get(`/projects/${projectId}`)).then((data) => new Project(data, this._httpClient));\r\n }\r\n\r\n /**\r\n * Create a new project.\r\n *\r\n * @async\r\n * @param name - Project name.\r\n * @param description - Project description.\r\n * @param startDate - Project start date.\r\n * @param endDate - Project end date.\r\n * @param avatarUrl - Project preview image URL. Can be <a\r\n * href=\"https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs\"\r\n * target=\"_blank\">Data URL</a>.\r\n */\r\n createProject(\r\n name: string,\r\n description?: string,\r\n startDate?: Date | string,\r\n endDate?: Date | string,\r\n avatarUrl?: string\r\n ): Promise<Project> {\r\n return json(\r\n this._httpClient.post(\"/projects\", {\r\n name,\r\n description,\r\n startDate: startDate instanceof Date ? startDate.toISOString() : startDate,\r\n endDate: endDate instanceof Date ? endDate.toISOString() : endDate,\r\n avatarUrl,\r\n })\r\n ).then((data) => new Project(data, this._httpClient));\r\n }\r\n\r\n /**\r\n * Delete the project from the server.\r\n *\r\n * @async\r\n * @param projectId - Project ID.\r\n * @returns Returns the raw data of a deleted project.\r\n */\r\n deleteProject(projectId: string): Promise<any> {\r\n return text(this._httpClient.delete(`/projects/${projectId}`)).then((text) => {\r\n // fix for server 23.5 and below\r\n try {\r\n return JSON.parse(text);\r\n } catch {\r\n return { id: projectId };\r\n }\r\n });\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IViewer } from \"./IViewer\";\r\nimport { ICommand, ICommandHandler, ICommandDescription, ICommandsMap, ICommands } from \"./ICommands\";\r\n\r\nclass Commands implements ICommands {\r\n private readonly _commands = new Map<string, ICommand>();\r\n\r\n registerCommand(id: string, handler: ICommandHandler, description?: ICommandDescription, thisArg?: any): void {\r\n this._commands.set(id, { id, handler, thisArg, description });\r\n }\r\n\r\n registerCommandAlias(id: string, alias: string): void {\r\n this.registerCommand(alias, (viewer: IViewer, ...args) => this.executeCommand(id, viewer, ...args));\r\n }\r\n\r\n getCommand(id: string): ICommand | undefined {\r\n return this._commands.get(id);\r\n }\r\n\r\n getCommands(): ICommandsMap {\r\n const map = new Map<string, ICommand>();\r\n this._commands.forEach((value, key) => map.set(key, value));\r\n return map;\r\n }\r\n\r\n executeCommand(id: string, viewer: IViewer, ...args: any[]): any {\r\n const command = this._commands.get(id);\r\n if (!command) {\r\n if (viewer) {\r\n const isDraggerCommand = viewer.draggers.includes(id);\r\n if (isDraggerCommand) return viewer.setActiveDragger(id);\r\n }\r\n\r\n console.warn(`Command '${id}' not found`);\r\n return undefined;\r\n }\r\n\r\n const { handler, thisArg } = command;\r\n const result = handler.apply(thisArg, [viewer, ...args]);\r\n\r\n viewer?.emit({ type: \"command\", data: id, args });\r\n\r\n return result;\r\n }\r\n}\r\n\r\nconst _commands = new Map<string, Commands>();\r\n\r\nexport function commands(viewerType: string): ICommands {\r\n let result = _commands.get(viewerType);\r\n if (!result) {\r\n result = new Commands();\r\n _commands.set(viewerType, result);\r\n }\r\n return result;\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"noop\", () => {});\r\ncommands(\"ThreeJS\").registerCommand(\"noop\", () => {});\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Matrix3d, OdTvPlane, Point3d, Vector3d } from \"./Geometry\";\r\n\r\nexport type ViewParams = {\r\n position: number[];\r\n target: number[];\r\n upVector: number[];\r\n viewFieldWidth: number;\r\n viewFieldHeight: number;\r\n perspective: boolean;\r\n};\r\n\r\nexport class OdaGeAction {\r\n protected m_module;\r\n\r\n constructor(module: any) {\r\n this.m_module = module;\r\n }\r\n\r\n protected getViewer(): any {\r\n return this.m_module.getViewer();\r\n }\r\n\r\n protected getModel(): any {\r\n return this.getViewer().getMarkupModel();\r\n }\r\n\r\n protected copyPoint(point: Point3d): Point3d {\r\n const p: Point3d = new this.m_module.Point3d();\r\n p.set(point.x, point.y, point.z);\r\n return p;\r\n }\r\n\r\n protected createVector3d(): Vector3d {\r\n return new this.m_module.Vector3d();\r\n }\r\n\r\n protected createPoint3d(): Point3d {\r\n return new this.m_module.Point3d();\r\n }\r\n\r\n protected createMatrix3d(): Matrix3d {\r\n return new this.m_module.Matrix3d();\r\n }\r\n\r\n protected createPlane(): OdTvPlane {\r\n return new this.m_module.OdTvPlane();\r\n }\r\n\r\n protected toVector(geVector): Vector3d {\r\n return this.m_module.Vector3d.createFromArray(geVector);\r\n }\r\n\r\n protected toGeVector(v: Vector3d): number[] {\r\n return [v.x, v.y, v.z];\r\n }\r\n\r\n protected toGePoint(point: Point3d): number[] {\r\n return [point.x, point.y, point.z];\r\n }\r\n\r\n protected toPoint(gePoint: number[]): Point3d {\r\n return this.m_module.Point3d.createFromArray(gePoint);\r\n }\r\n\r\n protected screenToWorld(x: number, y: number): Point3d {\r\n return this.toPoint(this.m_module.getViewer().screenToWorld(x, y));\r\n }\r\n\r\n protected toDoubleArray(points: Point3d[]): number[] {\r\n const p: number[] = [];\r\n for (let i = 0; i < points.length; i++) {\r\n p.push(points[i].x);\r\n p.push(points[i].y);\r\n p.push(points[i].z);\r\n }\r\n return p;\r\n }\r\n\r\n protected correctCameraTarget(): void {\r\n const params = this.getViewParams();\r\n const ext = this.m_module.getViewer().getActiveExtents();\r\n const { min, max } = ext;\r\n const target = this.toPoint(params.target);\r\n\r\n const contains =\r\n target.x >= min.x &&\r\n target.y >= min.y &&\r\n target.z >= min.z &&\r\n target.x <= max.x &&\r\n target.y <= max.y &&\r\n target.z <= max.z;\r\n if (!contains) {\r\n params.target = ext.center();\r\n this.setViewParams(params);\r\n }\r\n }\r\n\r\n protected setViewParams = (params: ViewParams) => {\r\n const extView = this.m_module.getViewer().getActiveTvExtendedView();\r\n extView.setView(\r\n params.position,\r\n params.target,\r\n params.upVector,\r\n params.viewFieldWidth,\r\n params.viewFieldHeight,\r\n params.perspective\r\n );\r\n extView.delete?.();\r\n };\r\n\r\n protected getViewParams = () => {\r\n const view = this.m_module.getViewer().activeView;\r\n const obj = {\r\n position: view.viewPosition,\r\n target: view.viewTarget,\r\n upVector: view.upVector,\r\n viewFieldWidth: view.viewFieldWidth,\r\n viewFieldHeight: view.viewFieldHeight,\r\n perspective: view.perspective,\r\n } as ViewParams;\r\n view.delete?.();\r\n return obj;\r\n };\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n/* eslint-disable no-unused-vars */\r\n\r\nimport { Viewer } from \"../../Viewer\";\r\nimport { CANVAS_EVENTS } from \"../../CanvasEvents\";\r\nimport { Point2d } from \"./Geometry\";\r\nimport { OdaGeAction } from \"./OdaGeAction\";\r\n\r\nconst CLICK_DELTA = 5;\r\n\r\nconst INTERACTIVITY_FPS = 24;\r\n\r\n/**\r\n * A [Viewer]{@link Viewer} event that fires when the viewer needs to be updated.\r\n *\r\n * @property {string} type - `update`\r\n * @event update\r\n */\r\n\r\n/**\r\n * A [Viewer]{@link Viewer} event that fires when the user selects an entity with the mouse.\r\n *\r\n * @property {string} type - `select`\r\n * @property {OdTvSelectionSet} data - The set of selected entities. For more information, see\r\n * [OdTvSelectionSet](https://cloud.opendesign.com/docs/index.html#/vis/OdTvSelectionSet?id=odtvselectionset).\r\n * @event select\r\n */\r\n\r\nexport class OdBaseDragger extends OdaGeAction {\r\n protected subject: Viewer;\r\n protected needInputText: boolean;\r\n protected mouseDownPosition: Point2d;\r\n protected autoSelect: boolean;\r\n protected onmessage: (event: any) => boolean;\r\n protected canvasEvents: string[];\r\n protected isDragging: boolean;\r\n protected press: boolean;\r\n\r\n public name: string;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject.visualizeJs);\r\n this.subject = subject;\r\n this.needInputText = false;\r\n this.mouseDownPosition = { x: 0, y: 0 };\r\n this.autoSelect = false;\r\n\r\n this.onmessage = (event) => this.subject.emitEvent(event);\r\n this.canvasEvents = CANVAS_EVENTS;\r\n }\r\n\r\n public initialize(): void {\r\n this.canvasEvents = this.canvasEvents.filter((x) => typeof this[x] === \"function\");\r\n this.canvasEvents.forEach((x) => (this[x] = this[x].bind(this)));\r\n this.canvasEvents.forEach((x) => this.subject.on(x, this[x]));\r\n\r\n this.getViewer().setEnableAutoSelect(!!this.autoSelect);\r\n }\r\n\r\n public dispose(): void {\r\n this.canvasEvents.forEach((x) => this.subject.off(x, this[x]));\r\n }\r\n\r\n protected relativeCoords(event: MouseEvent): Point2d {\r\n return { x: event.offsetX * window.devicePixelRatio, y: event.offsetY * window.devicePixelRatio };\r\n }\r\n\r\n protected pointerdown(ev: PointerEvent): void {\r\n if (!ev.isPrimary || OdBaseDragger.isGestureActive) {\r\n return;\r\n }\r\n\r\n (ev.target as HTMLElement).setPointerCapture(ev.pointerId);\r\n\r\n const relCoord = this.relativeCoords(ev);\r\n this.isDragging = true;\r\n this.mouseDownPosition = { x: relCoord.x, y: relCoord.y };\r\n this.start(relCoord.x, relCoord.y, ev.clientX, ev.clientY);\r\n this.subject.update();\r\n }\r\n\r\n protected pointerup(ev: PointerEvent): void {\r\n if (OdBaseDragger.needSkipPointerUp) {\r\n return;\r\n }\r\n\r\n if (!ev.isPrimary) {\r\n return;\r\n }\r\n\r\n (ev.target as HTMLElement).releasePointerCapture(ev.pointerId);\r\n\r\n const relCoord = this.relativeCoords(ev);\r\n this.end(relCoord.x, relCoord.y);\r\n this.isDragging = false;\r\n this.subject.update();\r\n }\r\n\r\n protected pointercancel(ev: PointerEvent): void {\r\n if (!ev.isPrimary) {\r\n return;\r\n }\r\n\r\n this.m_module.canvas.dispatchEvent(new PointerEvent(\"pointerup\", ev));\r\n }\r\n\r\n protected pointermove(ev: PointerEvent): void {\r\n if (!ev.isPrimary || OdBaseDragger.isGestureActive) {\r\n return;\r\n }\r\n\r\n const relCoord = this.relativeCoords(ev);\r\n this.drag(relCoord.x, relCoord.y, ev.movementX, ev.movementY);\r\n if (this.isDragging) {\r\n this.subject.update();\r\n }\r\n }\r\n\r\n protected click(ev: MouseEvent): void {\r\n const viewer = this.getViewer();\r\n const relCoord = this.relativeCoords(ev);\r\n const x = relCoord.x;\r\n const y = relCoord.y;\r\n\r\n const isNotDragging =\r\n Math.abs(x - this.mouseDownPosition.x) < CLICK_DELTA && Math.abs(y - this.mouseDownPosition.y) < CLICK_DELTA;\r\n\r\n if (viewer && viewer.getEnableAutoSelect() && isNotDragging) {\r\n viewer.unselect();\r\n viewer.select(x, y, x, y);\r\n this.subject.update();\r\n\r\n const selectionSet = viewer.getSelected();\r\n const handles = this.subject.getSelected();\r\n this.onmessage({ type: \"select\", data: selectionSet, handles });\r\n }\r\n }\r\n\r\n protected dblclick(ev: MouseEvent): void {\r\n const viewer = this.getViewer();\r\n const relCoord = this.relativeCoords(ev);\r\n const x = relCoord.x;\r\n const y = relCoord.y;\r\n\r\n const device = viewer.getActiveDevice();\r\n const clickView = device.viewAt([x, y]);\r\n if (clickView && !clickView.active) {\r\n viewer.activeView = clickView;\r\n clickView.delete();\r\n this.subject.update();\r\n } else {\r\n if (viewer && viewer.getEnableAutoSelect()) {\r\n const pSelected = viewer.getSelected();\r\n\r\n if (!pSelected.isNull() && pSelected.numItems() !== 0) {\r\n const itr = pSelected.getIterator();\r\n const entity = itr.getEntity();\r\n viewer.zoomToEntity(entity);\r\n\r\n this.onmessage({ type: \"zoomtoentity\", data: entity });\r\n this.subject.update();\r\n\r\n this.deleteAll([itr, entity]);\r\n }\r\n }\r\n }\r\n\r\n device.delete();\r\n }\r\n\r\n protected start(x: number, y: number, absoluteX = 0, absoluteY = 0): void {}\r\n\r\n protected drag(x: number, y: number, absoluteX = 0, absoluteY = 0): void {}\r\n\r\n protected end(x: number, y: number): void {}\r\n\r\n protected beginInteractivity = () => {\r\n const viewer = this.getViewer();\r\n const view = viewer.activeView;\r\n if (view[\"beginInteractivity\"]) {\r\n view.beginInteractivity(INTERACTIVITY_FPS);\r\n this.subject.update();\r\n }\r\n view.delete();\r\n };\r\n\r\n protected endInteractivity = () => {\r\n const viewer = this.getViewer();\r\n const view = viewer.activeView;\r\n if (view[\"endInteractivity\"]) {\r\n view.endInteractivity();\r\n\r\n const device = this.getViewer().getActiveDevice();\r\n const canvas = this.m_module.canvas;\r\n device.invalidate([0, 0, canvas.width, canvas.height]);\r\n device.delete();\r\n this.subject.update();\r\n }\r\n view.delete();\r\n };\r\n\r\n protected getActiveMarkupEntity(entityName: string): any {\r\n return this.subject.addMarkupEntity(entityName);\r\n }\r\n\r\n private syncOverlayView(): any {\r\n return this.subject.syncOverlay();\r\n }\r\n\r\n protected deleteAll(objects): void {\r\n for (const obj of objects) {\r\n obj?.delete?.();\r\n }\r\n }\r\n\r\n public updatePreview(): void {}\r\n\r\n private static _isGestureActive = false;\r\n\r\n protected static set isGestureActive(value: boolean) {\r\n if (OdBaseDragger._isGestureActive === value) {\r\n return;\r\n }\r\n\r\n OdBaseDragger._isGestureActive = value;\r\n if (OdBaseDragger._isGestureActive) {\r\n OdBaseDragger.needSkipPointerUp = true;\r\n }\r\n }\r\n\r\n protected static get isGestureActive() {\r\n return OdBaseDragger._isGestureActive;\r\n }\r\n\r\n private static _needSkipPointerUp = false;\r\n\r\n private static get needSkipPointerUp() {\r\n if (OdBaseDragger._needSkipPointerUp) {\r\n OdBaseDragger.needSkipPointerUp = false;\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private static set needSkipPointerUp(value: boolean) {\r\n OdBaseDragger._needSkipPointerUp = value;\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Point2d } from \"../Common/Geometry\";\r\n\r\nexport function createHtmlElementIfNeed(\r\n element: HTMLElement,\r\n targetElement: HTMLElement,\r\n dataTestId: string\r\n): HTMLElement {\r\n if (!element) {\r\n element = document.createElement(\"div\");\r\n element.setAttribute(\"data-testid\", dataTestId);\r\n\r\n targetElement.appendChild(element);\r\n }\r\n return element;\r\n}\r\n\r\nexport function destroyHtmlElement(element: HTMLElement, targetElement: HTMLElement) {\r\n if (element) {\r\n targetElement.removeChild(element);\r\n }\r\n return null;\r\n}\r\n\r\nexport function worldToScreen(gePoint: number[], moduleInstance, viewer): Point2d {\r\n const worldPoint = moduleInstance.Point3d.createFromArray(gePoint);\r\n const avp = viewer.activeView;\r\n const mtx = avp.worldToDeviceMatrix;\r\n\r\n const devicePoint = worldPoint.transformBy(mtx);\r\n\r\n const res = { x: devicePoint.x / window.devicePixelRatio, y: devicePoint.y / window.devicePixelRatio };\r\n\r\n mtx.delete();\r\n worldPoint.delete();\r\n devicePoint.delete();\r\n avp.delete();\r\n return res;\r\n}\r\n\r\nexport function getDistance(gePoint1: number[], gePoint2: number[], moduleInstance: any) {\r\n const tvPoint1 = moduleInstance.Point3d.createFromArray(gePoint1);\r\n const tvPoint2 = moduleInstance.Point3d.createFromArray(gePoint2);\r\n\r\n const distance = tvPoint1.distanceTo(tvPoint2).toFixed(2);\r\n\r\n tvPoint1.delete();\r\n tvPoint2.delete();\r\n\r\n return distance;\r\n}\r\n\r\nexport function getAngle(geStart: number[], geOrigin: number[], geEnd: number[], moduleInstance: any): number {\r\n const tvStart = moduleInstance.Point3d.createFromArray(geStart);\r\n const tvOrigin = moduleInstance.Point3d.createFromArray(geOrigin);\r\n const tvEnd = moduleInstance.Point3d.createFromArray(geEnd);\r\n\r\n const s1 = tvStart.sub(tvOrigin);\r\n const s2 = tvEnd.sub(tvOrigin);\r\n\r\n const v1 = s1.asVector();\r\n const v2 = s2.asVector();\r\n\r\n const angle = (180 * v1.angleTo(v2)) / Math.PI;\r\n\r\n return angle;\r\n}\r\n\r\nexport function getDataForDrawLine(p1: Point2d, p2: Point2d) {\r\n const dx = p2.x - p1.x;\r\n const dy = p2.y - p1.y;\r\n let angle = (180 * Math.atan(dy / dx)) / Math.PI;\r\n if (dx < 0) {\r\n angle -= 180;\r\n }\r\n const width = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\r\n return { angle, width };\r\n}\r\n\r\nfunction normalizeFloat(value: number): number {\r\n return value < 0 ? Math.ceil(value) : Math.floor(value);\r\n}\r\n\r\nconst lineSegmentsIntersect = (p1: Point2d, p2: Point2d, p3: Point2d, p4: Point2d): false | Point2d => {\r\n const a_dx = p2.x - p1.x;\r\n const a_dy = p2.y - p1.y;\r\n const b_dx = p4.x - p3.x;\r\n const b_dy = p4.y - p3.y;\r\n const s = (-a_dy * (p1.x - p3.x) + a_dx * (p1.y - p3.y)) / (-b_dx * a_dy + a_dx * b_dy);\r\n const t = (+b_dx * (p1.y - p3.y) - b_dy * (p1.x - p3.x)) / (-b_dx * a_dy + a_dx * b_dy);\r\n return s >= 0 && s <= 1 && t >= 0 && t <= 1\r\n ? {\r\n x: normalizeFloat(p1.x + t * a_dx),\r\n y: normalizeFloat(p1.y + t * a_dy),\r\n }\r\n : false;\r\n};\r\n\r\nfunction checkSegmentsIntersect(p1: Point2d, p2: Point2d, p3: Point2d, p4: Point2d, res: Point2d[]): void {\r\n const r = lineSegmentsIntersect(p1, p2, p3, p4);\r\n if (r) {\r\n res.push(r);\r\n }\r\n}\r\n\r\nexport function isInsideRect(p: Point2d, width: number, height: number): boolean {\r\n return p.x <= width && p.x >= 0 && p.y <= height && p.y >= 0;\r\n}\r\n\r\nexport function getDataForDrawLineWithFixed(p1: Point2d, p2: Point2d, width: number, height: number) {\r\n const pLU = { x: 0, y: 0 };\r\n const pRU = { x: width, y: 0 };\r\n\r\n const pLB = { x: 0, y: height };\r\n const pRB = { x: width, y: height };\r\n\r\n const intersects: Point2d[] = [];\r\n\r\n checkSegmentsIntersect(p1, p2, pLU, pRU, intersects);\r\n checkSegmentsIntersect(p1, p2, pLU, pLB, intersects);\r\n checkSegmentsIntersect(p1, p2, pLB, pRB, intersects);\r\n checkSegmentsIntersect(p1, p2, pRB, pRU, intersects);\r\n\r\n let fixedP1: Point2d = null;\r\n let fixedP2: Point2d = null;\r\n\r\n if (intersects.length === 0) {\r\n fixedP1 = p1;\r\n fixedP2 = p2;\r\n } else if (intersects.length === 1) {\r\n if (isInsideRect(p1, width, height)) {\r\n fixedP1 = p1;\r\n fixedP2 = intersects[0];\r\n } else {\r\n fixedP1 = intersects[0];\r\n fixedP2 = p2;\r\n }\r\n } else {\r\n fixedP1 = intersects[0];\r\n fixedP2 = intersects[1];\r\n }\r\n\r\n const dx = fixedP2.x - fixedP1.x;\r\n const dy = fixedP2.y - fixedP1.y;\r\n let angle = (180 * Math.atan(dy / dx)) / Math.PI;\r\n if (dx < 0) {\r\n angle -= 180;\r\n }\r\n const size = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\r\n return { angle, width: size, p1: fixedP1, p2: fixedP2 };\r\n}\r\n\r\nexport function onSetCallback(element: HTMLElement, cb: () => void): void {\r\n if (element) {\r\n element.onclick = cb ? () => cb() : () => {};\r\n }\r\n}\r\n\r\nexport function onSetSelectivity(element: HTMLElement, enable: boolean): void {\r\n element.style.pointerEvents = enable ? \"auto\" : \"none\";\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport * as utils from \"./MeasureUtils\";\r\n\r\nexport class MeasureLineItem {\r\n protected htmlElemStartPoint: HTMLElement;\r\n protected htmlElemEndPoint: HTMLElement;\r\n protected htmlElemLine: HTMLElement;\r\n protected htmlElemTitle: HTMLElement;\r\n protected startPoint: number[];\r\n protected endPoint: number[];\r\n protected unit: string;\r\n protected scale: number;\r\n protected size: number;\r\n protected style: CSSStyleDeclaration;\r\n protected viewer: any;\r\n protected moduleInstance: any;\r\n protected targetElement: HTMLElement;\r\n protected isFinishDraw: boolean;\r\n\r\n public lineThickness: number;\r\n\r\n constructor(targetElement: HTMLElement, viewer: any, moduleInstance: any) {\r\n this.htmlElemStartPoint = null;\r\n this.htmlElemEndPoint = null;\r\n this.htmlElemLine = null;\r\n this.htmlElemTitle = null;\r\n\r\n this.startPoint = null;\r\n this.endPoint = null;\r\n\r\n this.unit = \"\";\r\n this.scale = 1.0;\r\n this.size = 10.0;\r\n this.lineThickness = 2;\r\n\r\n this.style = {\r\n border: \"2px solid #FFFFFF\",\r\n background: \"#009bff\",\r\n color: \"white\",\r\n boxShadow: \"0 0 10px rgba(0,0,0,0.5)\",\r\n } as CSSStyleDeclaration;\r\n\r\n this.htmlElemStartPoint = utils.createHtmlElementIfNeed(this.htmlElemStartPoint, targetElement, \"ruler-start\");\r\n this.htmlElemEndPoint = utils.createHtmlElementIfNeed(this.htmlElemEndPoint, targetElement, \"ruler-end\");\r\n this.htmlElemLine = utils.createHtmlElementIfNeed(this.htmlElemLine, targetElement, \"ruler-line\");\r\n this.htmlElemTitle = utils.createHtmlElementIfNeed(this.htmlElemTitle, targetElement, \"ruler-value\");\r\n\r\n this.viewer = viewer;\r\n this.moduleInstance = moduleInstance;\r\n this.targetElement = targetElement;\r\n this.isFinishDraw = false;\r\n }\r\n\r\n drawMeasureLine(): void {\r\n const pointSize = this.size;\r\n const rect = this.moduleInstance.canvas.getBoundingClientRect();\r\n\r\n // draw start point\r\n if (this.startPoint) {\r\n this.htmlElemStartPoint = utils.createHtmlElementIfNeed(\r\n this.htmlElemStartPoint,\r\n this.targetElement,\r\n \"ruler-start\"\r\n );\r\n\r\n const pScreenStart = utils.worldToScreen(this.startPoint, this.moduleInstance, this.viewer);\r\n if (utils.isInsideRect(pScreenStart, rect.width, rect.height)) {\r\n this.htmlElemStartPoint.style.display = \"block\";\r\n this.htmlElemStartPoint.style.cursor = \"pointer\";\r\n this.htmlElemStartPoint.style.position = \"absolute\";\r\n this.htmlElemStartPoint.style.top = `${pScreenStart.y - pointSize / 2}px`;\r\n this.htmlElemStartPoint.style.left = `${pScreenStart.x - pointSize / 2}px`;\r\n this.htmlElemStartPoint.style.borderRadius = `${pointSize}px`;\r\n this.htmlElemStartPoint.style.border = this.style.border;\r\n this.htmlElemStartPoint.style.background = this.style.background;\r\n this.htmlElemStartPoint.style.zIndex = \"2\";\r\n this.htmlElemStartPoint.style.width = `${pointSize}px`;\r\n this.htmlElemStartPoint.style.height = `${pointSize}px`;\r\n this.htmlElemStartPoint.style.boxShadow = this.style.boxShadow;\r\n } else {\r\n this.htmlElemStartPoint.style.display = \"none\";\r\n }\r\n }\r\n\r\n // draw end point\r\n if (this.endPoint && this.isFinishDraw) {\r\n this.htmlElemEndPoint = utils.createHtmlElementIfNeed(this.htmlElemEndPoint, this.targetElement, \"ruler-end\");\r\n\r\n const pScreenEnd = utils.worldToScreen(this.endPoint, this.moduleInstance, this.viewer);\r\n\r\n if (utils.isInsideRect(pScreenEnd, rect.width, rect.height)) {\r\n this.htmlElemEndPoint.style.display = \"block\";\r\n this.htmlElemEndPoint.style.cursor = \"pointer\";\r\n this.htmlElemEndPoint.style.position = \"absolute\";\r\n this.htmlElemEndPoint.style.top = `${pScreenEnd.y - pointSize / 2}px`;\r\n this.htmlElemEndPoint.style.left = `${pScreenEnd.x - pointSize / 2}px`;\r\n this.htmlElemEndPoint.style.borderRadius = `${pointSize}px`;\r\n this.htmlElemEndPoint.style.border = this.style.border;\r\n this.htmlElemEndPoint.style.background = this.style.background;\r\n this.htmlElemEndPoint.style.zIndex = \"2\";\r\n this.htmlElemEndPoint.style.width = `${pointSize}px`;\r\n this.htmlElemEndPoint.style.height = `${pointSize}px`;\r\n this.htmlElemEndPoint.style.boxShadow = this.style.boxShadow;\r\n } else {\r\n this.htmlElemEndPoint.style.display = \"none\";\r\n }\r\n }\r\n\r\n if (this.endPoint && this.startPoint) {\r\n const point1 = utils.worldToScreen(this.startPoint, this.moduleInstance, this.viewer);\r\n const point2 = utils.worldToScreen(this.endPoint, this.moduleInstance, this.viewer);\r\n\r\n const { p1, p2, angle, width } = utils.getDataForDrawLineWithFixed(point1, point2, rect.width, rect.height);\r\n\r\n const dx = p2.x - p1.x;\r\n const dy = p2.y - p1.y;\r\n\r\n const height = this.lineThickness;\r\n if (utils.isInsideRect(p1, rect.width, rect.height) && utils.isInsideRect(p2, rect.width, rect.height)) {\r\n this.htmlElemLine = utils.createHtmlElementIfNeed(this.htmlElemLine, this.targetElement, \"ruler-line\");\r\n this.htmlElemLine.style.display = \"block\";\r\n this.htmlElemLine.style.cursor = \"pointer\";\r\n this.htmlElemLine.style.position = \"absolute\";\r\n this.htmlElemLine.style.top = `${p1.y}px`;\r\n this.htmlElemLine.style.left = `${p1.x}px`;\r\n this.htmlElemLine.style.width = `${width}px`;\r\n this.htmlElemLine.style.transform = `rotate(${angle}deg)`;\r\n this.htmlElemLine.style.transformOrigin = `0px ${height / 2}px`;\r\n this.htmlElemLine.style.boxShadow = this.style.boxShadow;\r\n this.htmlElemLine.style.border = \"none\";\r\n this.htmlElemLine.style.background = this.style.background;\r\n this.htmlElemLine.style.zIndex = \"1\";\r\n this.htmlElemLine.style.height = `${height}px`;\r\n\r\n const distance = `${this.getDistance()} ${this.unit}`;\r\n\r\n const pX = p1.x + dx / 2;\r\n const pY = p1.y + dy / 2;\r\n\r\n const widthTitle = distance.length * 10;\r\n\r\n this.htmlElemTitle = utils.createHtmlElementIfNeed(this.htmlElemTitle, this.targetElement, \"ruler-value\");\r\n this.htmlElemTitle.style.display = \"block\";\r\n this.htmlElemTitle.style.cursor = \"pointer\";\r\n this.htmlElemTitle.style.font = \"10px\";\r\n this.htmlElemTitle.style.color = \"white\";\r\n this.htmlElemTitle.style.position = \"Absolute\";\r\n this.htmlElemTitle.style.top = `${pY}px`;\r\n this.htmlElemTitle.style.left = `${pX - widthTitle / 2}px`;\r\n this.htmlElemTitle.style.width = `${widthTitle}px`;\r\n this.htmlElemTitle.style.transformOrigin = \"0px 0px\";\r\n this.htmlElemTitle.style.borderRadius = \"5px\";\r\n this.htmlElemTitle.style.boxShadow = this.style.boxShadow;\r\n this.htmlElemTitle.style.border = \"none\";\r\n this.htmlElemTitle.style.background = this.style.background;\r\n this.htmlElemTitle.style.zIndex = \"3\";\r\n this.htmlElemTitle.style.padding = \"2px\";\r\n this.htmlElemTitle.style.textAlign = \"center\";\r\n this.htmlElemTitle.innerHTML = `${distance}`;\r\n } else {\r\n this.htmlElemLine.style.display = \"none\";\r\n this.htmlElemTitle.style.display = \"none\";\r\n }\r\n }\r\n }\r\n\r\n getDistance(): number {\r\n return utils.getDistance(this.startPoint, this.endPoint, this.moduleInstance) / this.scale;\r\n }\r\n\r\n setStartPoint(gePoint: number[]): void {\r\n this.startPoint = gePoint;\r\n this.drawMeasureLine();\r\n }\r\n\r\n setEndPoint(gePoint: number[], isFinish: boolean): void {\r\n this.isFinishDraw = isFinish === undefined ? true : isFinish;\r\n this.endPoint = gePoint;\r\n this.drawMeasureLine();\r\n }\r\n\r\n update(): void {\r\n this.drawMeasureLine();\r\n }\r\n\r\n setSize(size: number): void {\r\n this.size = size;\r\n this.drawMeasureLine();\r\n }\r\n\r\n clear(): void {\r\n this.endPoint = null;\r\n this.startPoint = null;\r\n this.htmlElemStartPoint = utils.destroyHtmlElement(this.htmlElemStartPoint, this.targetElement);\r\n this.htmlElemEndPoint = utils.destroyHtmlElement(this.htmlElemEndPoint, this.targetElement);\r\n this.htmlElemLine = utils.destroyHtmlElement(this.htmlElemLine, this.targetElement);\r\n this.htmlElemTitle = utils.destroyHtmlElement(this.htmlElemTitle, this.targetElement);\r\n }\r\n\r\n setUnit(unit: string): void {\r\n this.unit = unit;\r\n this.drawMeasureLine();\r\n }\r\n\r\n setConversionFactor(scale: number): void {\r\n this.scale = scale;\r\n this.drawMeasureLine();\r\n }\r\n\r\n setStyle(style: CSSStyleDeclaration): void {\r\n this.style = style;\r\n this.drawMeasureLine();\r\n }\r\n\r\n setSelectionReactor(reactor: any): void {\r\n utils.onSetCallback(this.htmlElemStartPoint, reactor ? reactor.onStartPoint : null);\r\n utils.onSetCallback(this.htmlElemEndPoint, reactor ? reactor.onEndPoint : null);\r\n utils.onSetCallback(this.htmlElemTitle, reactor ? reactor.onTitle : null);\r\n }\r\n\r\n setSelectability(enable: boolean): void {\r\n utils.onSetSelectivity(this.htmlElemStartPoint, enable);\r\n utils.onSetSelectivity(this.htmlElemEndPoint, enable);\r\n utils.onSetSelectivity(this.htmlElemLine, enable);\r\n utils.onSetSelectivity(this.htmlElemTitle, enable);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Viewer } from \"../../Viewer\";\r\nimport { OdBaseDragger } from \"../Common/OdBaseDragger\";\r\nimport { MeasureLineItem } from \"./MeasureLineItem\";\r\n\r\nfunction renameUnit(table, unit) {\r\n return table[unit] || unit;\r\n}\r\n\r\nexport class MeasureLineDragger extends OdBaseDragger {\r\n protected lineThickness: number;\r\n protected gripingRadius: number;\r\n protected firstPoint: number[];\r\n protected secondPoint: number[];\r\n protected renameUnitTable: any;\r\n protected items: MeasureLineItem[];\r\n protected m_overlayElement: HTMLElement;\r\n protected previewMeasureLine: MeasureLineItem;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n this.lineThickness = 2;\r\n this.press = false;\r\n this.gripingRadius = 5.0;\r\n this.firstPoint = null;\r\n this.secondPoint = null;\r\n\r\n this.renameUnitTable = {\r\n Millimeters: \"mm\",\r\n Centimeters: \"cm\",\r\n Meters: \"m\",\r\n Feet: \"ft\",\r\n Inches: \"in\",\r\n Yards: \"yd\",\r\n Kilometers: \"km\",\r\n Miles: \"mi\",\r\n Micrometers: \"µm\",\r\n MicroInches: \"µin\",\r\n Undefined: \" \",\r\n };\r\n\r\n this.items = [];\r\n\r\n this.canvasEvents.push(\"resize\");\r\n }\r\n\r\n override initialize(): void {\r\n super.initialize();\r\n\r\n this.m_overlayElement = document.createElement(\"div\");\r\n this.m_overlayElement.style.background = \"rgba(0,0,0,0)\";\r\n this.m_overlayElement.style.position = \"fixed\";\r\n this.m_overlayElement.style.zIndex = \"1\";\r\n this.m_overlayElement.style.pointerEvents = \"none\";\r\n document.body.appendChild(this.m_overlayElement);\r\n\r\n this.resize();\r\n }\r\n\r\n override dispose(): void {\r\n super.dispose();\r\n this.m_overlayElement.remove();\r\n }\r\n\r\n override updatePreview(): void {\r\n this.items.forEach((item) => item.update());\r\n }\r\n\r\n resize(): void {\r\n const rect = this.m_module.canvas.getBoundingClientRect();\r\n\r\n this.m_overlayElement.style.top = `${rect.top}px`;\r\n this.m_overlayElement.style.left = `${rect.left}px`;\r\n this.m_overlayElement.style.width = `${rect.width}px`;\r\n this.m_overlayElement.style.height = `${rect.height}px`;\r\n }\r\n\r\n getSnapPointRadius(): number {\r\n const view = this.getViewer().activeView;\r\n const corners = view.viewDcCorners();\r\n\r\n const pt1 = corners.lowerLeft;\r\n const pt2 = corners.upperRight;\r\n\r\n pt2[0] -= pt1[0];\r\n pt2[1] -= pt1[1];\r\n\r\n return Math.min(pt2[0], pt2[1]) / 120;\r\n }\r\n\r\n override drag(x: number, y: number): void {\r\n this.createNewMeasureIfNeed();\r\n const point = this.getViewer().getSnapPoint(x, y, this.gripingRadius);\r\n\r\n if (this.isDragging) {\r\n if (point) {\r\n if (this.firstPoint) {\r\n this.secondPoint = point;\r\n this.previewMeasureLine.setStartPoint(this.firstPoint);\r\n this.previewMeasureLine.setEndPoint(this.secondPoint, true);\r\n } else {\r\n this.firstPoint = point;\r\n this.previewMeasureLine.setStartPoint(this.firstPoint);\r\n }\r\n } else {\r\n this.secondPoint = null;\r\n this.previewMeasureLine.clear();\r\n this.previewMeasureLine.setStartPoint(this.firstPoint);\r\n this.previewMeasureLine.setEndPoint(this.getViewer().screenToWorld(x, y), false);\r\n }\r\n } else {\r\n if (point) {\r\n this.previewMeasureLine.setStartPoint(point);\r\n } else {\r\n this.previewMeasureLine.clear();\r\n }\r\n }\r\n }\r\n\r\n override end(): void {\r\n if (this.firstPoint && this.secondPoint) {\r\n const newLineMeasure = this.createMeasureLine();\r\n newLineMeasure.setStartPoint(this.firstPoint);\r\n newLineMeasure.setEndPoint(this.secondPoint, true);\r\n }\r\n this.firstPoint = null;\r\n this.secondPoint = null;\r\n this.previewMeasureLine.clear();\r\n }\r\n\r\n createNewMeasureIfNeed(): void {\r\n if (!this.previewMeasureLine) {\r\n this.previewMeasureLine = this.createMeasureLine();\r\n }\r\n }\r\n\r\n createMeasureLine(): MeasureLineItem {\r\n const viewer = this.m_module.getViewer();\r\n const item = new MeasureLineItem(this.m_overlayElement, viewer, this.m_module);\r\n item.lineThickness = this.lineThickness || item.lineThickness;\r\n item.setUnit(renameUnit(this.renameUnitTable, viewer.getUnit()));\r\n this.items.push(item);\r\n return item;\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Viewer } from \"../Viewer\";\r\nimport { Point2d, Vector3 } from \"./Common/Geometry\";\r\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\r\n\r\nconst FocalLengthConst = 42.0;\r\n\r\nconst calcFocalLength = (lensLength: number, fieldWidth: number, fieldHeight: number): number => {\r\n return (lensLength / FocalLengthConst) * Math.sqrt(fieldWidth * fieldWidth + fieldHeight * fieldHeight);\r\n};\r\n\r\nexport class OdaWalkDragger extends OdBaseDragger {\r\n protected lastCoord: Point2d;\r\n protected speed: number;\r\n protected delta: number;\r\n protected keyPressMap: Set<string>;\r\n protected oldWCSEnableValue: boolean;\r\n protected viewParams: any;\r\n protected cameraId: any;\r\n protected cameraWalker: any;\r\n protected viewer: any;\r\n protected multiplier: number;\r\n protected lastFrameTS: number;\r\n protected animationId: any;\r\n protected deltaAngle: number;\r\n protected enableZoomWheelPreviousValue: boolean;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n this.viewer = undefined;\r\n\r\n this.multiplier = 5;\r\n this.speed = 1;\r\n\r\n this.keyPressMap = new Set();\r\n this.keydown = this.keydown.bind(this);\r\n this.keyup = this.keyup.bind(this);\r\n\r\n this.lastFrameTS = 0;\r\n this.animationId = undefined;\r\n this.processMovement = this.processMovement.bind(this);\r\n\r\n this.deltaAngle = Math.PI / 3600;\r\n this.autoSelect = true;\r\n }\r\n\r\n override initialize() {\r\n super.initialize();\r\n this.viewer = this.getViewer();\r\n\r\n window.addEventListener(\"keydown\", this.keydown, false);\r\n window.addEventListener(\"keyup\", this.keyup, false);\r\n\r\n this.oldWCSEnableValue = this.viewer.getEnableWCS();\r\n this.viewer.setEnableWCS(false);\r\n\r\n const view = this.viewer.activeView;\r\n const maxDimension = this.getMaxDimension(view);\r\n this.speed = maxDimension / 30000;\r\n\r\n this.subject.emitEvent({ type: \"walkstart\" });\r\n\r\n this.viewParams = this.getViewParams();\r\n //this.viewParams.lensLength = view.lensLength;\r\n\r\n this.setViewParams(this.viewParams);\r\n //view.lensLength = (view.lensLength * 42) / 120;\r\n\r\n const model = this.viewer.getActiveModel();\r\n this.cameraId = model.appendCamera(\"Camera0\");\r\n this.setupCamera(view);\r\n model.delete();\r\n\r\n //pCamera.setAdjustLensLength(true);\r\n this.cameraWalker = new this.m_module.OdTvCameraWalker();\r\n this.cameraWalker.setCamera(this.cameraId);\r\n\r\n this.subject.update();\r\n this.enableZoomWheelPreviousValue = this.subject.options.enableZoomWheel;\r\n this.subject.options.enableZoomWheel = false;\r\n }\r\n\r\n override dispose() {\r\n this.oldWCSEnableValue =\r\n this.oldWCSEnableValue !== undefined ? this.oldWCSEnableValue : this.subject.options.showWCS;\r\n this.viewer.setEnableWCS(this.oldWCSEnableValue);\r\n\r\n super.dispose();\r\n\r\n this.keyPressMap.clear();\r\n\r\n window.removeEventListener(\"keydown\", this.keydown);\r\n window.removeEventListener(\"keyup\", this.keyup);\r\n\r\n if (this.animationId) {\r\n window.cancelAnimationFrame(this.animationId);\r\n this.animationId = undefined;\r\n }\r\n\r\n if (this.cameraId) {\r\n const model = this.viewer.getActiveModel();\r\n model.removeEntity(this.cameraId);\r\n model.delete();\r\n this.cameraWalker?.delete();\r\n }\r\n\r\n if (this.viewParams) {\r\n this.setViewParams(this.viewParams);\r\n\r\n const avp = this.viewer.activeView;\r\n //avp.lensLength = this.viewParams.lensLength;\r\n avp.delete();\r\n }\r\n\r\n this.subject.update();\r\n this.subject.options.enableZoomWheel = this.enableZoomWheelPreviousValue;\r\n }\r\n\r\n keydown(ev) {\r\n switch (ev.code) {\r\n case \"NumpadSubtract\":\r\n case \"Minus\":\r\n if (this.multiplier > 1) {\r\n this.multiplier = this.multiplier - 1;\r\n this.subject.emitEvent({ type: \"walkspeedchange\", data: this.multiplier });\r\n }\r\n break;\r\n case \"NumpadAdd\":\r\n case \"Equal\":\r\n if (this.multiplier < 10) {\r\n this.multiplier = this.multiplier + 1;\r\n this.subject.emitEvent({ type: \"walkspeedchange\", data: this.multiplier });\r\n }\r\n break;\r\n case \"KeyW\":\r\n case \"KeyA\":\r\n case \"KeyS\":\r\n case \"KeyD\":\r\n case \"KeyQ\":\r\n case \"KeyE\":\r\n this.keyPressMap.add(ev.code);\r\n if (!this.animationId) this.processMovement(0);\r\n break;\r\n }\r\n }\r\n\r\n keyup(ev) {\r\n this.keyPressMap.delete(ev.code);\r\n if (this.keyPressMap.size < 1 && this.animationId) {\r\n window.cancelAnimationFrame(this.animationId);\r\n this.animationId = undefined;\r\n this.lastFrameTS = 0;\r\n }\r\n }\r\n\r\n processMovement(timestamp) {\r\n this.animationId = requestAnimationFrame(this.processMovement);\r\n\r\n if (this.lastFrameTS !== 0) {\r\n const deltaTS = timestamp - this.lastFrameTS;\r\n const currentDelta = this.multiplier * deltaTS * this.speed;\r\n\r\n for (const keyCode of this.keyPressMap) {\r\n switch (keyCode) {\r\n case \"KeyW\":\r\n this.cameraWalker.moveForward(currentDelta);\r\n break;\r\n case \"KeyS\":\r\n this.cameraWalker.moveBackward(currentDelta);\r\n break;\r\n case \"KeyA\":\r\n this.cameraWalker.moveLeft(currentDelta);\r\n break;\r\n case \"KeyD\":\r\n this.cameraWalker.moveRight(currentDelta);\r\n break;\r\n case \"KeyQ\":\r\n this.cameraWalker.moveUp(currentDelta);\r\n break;\r\n case \"KeyE\":\r\n this.cameraWalker.moveDown(currentDelta);\r\n break;\r\n }\r\n }\r\n this.subject.update();\r\n }\r\n\r\n this.lastFrameTS = timestamp;\r\n }\r\n\r\n override drag(x, y, dltX, dltY) {\r\n if (this.cameraId && this.isDragging) {\r\n if (dltX !== 0.0) this.turnLeft(-dltX * this.deltaAngle);\r\n if (dltY !== 0.0) this.cameraWalker.turnDown(dltY * this.deltaAngle);\r\n this.subject.update();\r\n }\r\n }\r\n\r\n turnLeft(angle) {\r\n //TODO: migrate to VisualizeJS\r\n const pCamera = this.cameraWalker.camera().openObjectAsCamera();\r\n const dir = this.toVector(pCamera.direction());\r\n const up = this.toVector(pCamera.upVector());\r\n\r\n const pos = pCamera.position();\r\n\r\n const rotMatrix = this.createMatrix3d();\r\n const zAxisVector: Vector3 = [0, 0, 1];\r\n rotMatrix.setToRotation(angle, zAxisVector, pos);\r\n dir.transformBy(rotMatrix);\r\n up.transformBy(rotMatrix);\r\n pCamera.setupCameraByDirection(pos, dir.toArray(), up.toArray());\r\n pCamera.delete();\r\n }\r\n\r\n setupCamera(view) {\r\n const pCamera = this.cameraId.openObjectAsCamera();\r\n const target = view.viewTarget;\r\n\r\n pCamera.setDisplayGlyph(false);\r\n pCamera.setDisplayTarget(false);\r\n pCamera.setAutoAdjust(true);\r\n pCamera.setupCamera(view.viewPosition, target, view.upVector);\r\n pCamera.setNearClip(false, 1.0);\r\n pCamera.setFarClip(false, 0);\r\n pCamera.setViewParameters(view.viewFieldWidth, view.viewFieldHeight, true);\r\n\r\n const focalL = calcFocalLength(view.lensLength, view.viewFieldWidth, view.viewFieldHeight);\r\n\r\n const pTarget = this.toPoint(view.viewTarget);\r\n const viewDir = this.toPoint(view.viewPosition);\r\n const viewDirSub = viewDir.sub(pTarget);\r\n const viewDirVec = viewDirSub.asVector();\r\n const viewDirVecNormal = viewDirVec.normalize();\r\n\r\n const geViewDir = this.toGeVector(viewDirVecNormal);\r\n const newGeViewDir = [geViewDir[0] * focalL, geViewDir[1] * focalL, geViewDir[2] * focalL];\r\n\r\n const pTarget2 = this.toPoint(view.viewTarget);\r\n const newGeViewDirPt = this.toPoint(newGeViewDir);\r\n\r\n const newPos = pTarget2.add(newGeViewDirPt);\r\n pCamera.setupCamera(this.toGePoint(newPos), view.viewTarget, view.upVector);\r\n\r\n this.deleteAll([pTarget, viewDir, viewDirSub, viewDirVec, viewDirVecNormal, pTarget2, newGeViewDirPt, newPos]);\r\n\r\n pCamera.assignView(view);\r\n pCamera.delete();\r\n }\r\n\r\n getMaxDimension(view) {\r\n const [xmax, ymax, zmax] = view.sceneExtents.max();\r\n const [xmin, ymin, zmin] = view.sceneExtents.min();\r\n const volume = [xmax - xmin, ymax - ymin, zmax - zmin];\r\n return Math.max(...volume);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Viewer } from \"../Viewer\";\r\nimport { Point2d, Point3d } from \"./Common/Geometry\";\r\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\r\n\r\nexport class OdBaseCuttingPlaneDragger extends OdBaseDragger {\r\n protected m_size_x: number;\r\n protected m_size_y: number;\r\n protected m_size_z: number;\r\n protected m_center: Point3d;\r\n protected m_normal: number[];\r\n protected index: number;\r\n protected m_model: any;\r\n protected m_entity: any;\r\n protected planePreview: any;\r\n protected m_last: Point3d;\r\n protected m_click: Point2d;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n this.press = false;\r\n\r\n //this.getViewer().getMarkupController().clear();\r\n\r\n const ext = this.getViewer().getActiveExtents();\r\n const min = ext.min();\r\n const max = ext.max();\r\n\r\n this.m_size_x = Math.abs(max[0] - min[0]) / 2;\r\n this.m_size_y = Math.abs(max[1] - min[1]) / 2;\r\n this.m_size_z = Math.abs(max[2] - min[2]) / 2;\r\n\r\n this.m_center = this.toPoint(ext.center());\r\n this.m_normal = this.createNormal();\r\n\r\n const avp = this.getViewer().activeView;\r\n const plane = this.createPlane();\r\n plane.set(this.toGePoint(this.m_center), this.m_normal);\r\n\r\n avp.addCuttingPlane(plane);\r\n this.index = avp.numCuttingPlanes() - 1;\r\n\r\n const { red, green, blue } = this.subject.options.cuttingPlaneFillColor;\r\n avp.setEnableCuttingPlaneFill(true, red, green, blue);\r\n avp.setCuttingPlaneFillPatternEnabled(true, this.m_module.CuttingPlaneFillStyle.kHorizontalBars, 0x0, 0x0, 0x0);\r\n\r\n this.m_model = this.getModel();\r\n this.createPreview();\r\n\r\n this.deleteAll([ext, avp, plane]);\r\n }\r\n\r\n override dispose(): void {\r\n super.dispose();\r\n\r\n if (this.m_entity) {\r\n this.m_model.removeEntity(this.m_entity);\r\n this.deleteAll([this.m_model, this.m_entity, this.planePreview, this.m_center]);\r\n this.m_entity = null;\r\n this.planePreview = null;\r\n this.subject.update();\r\n }\r\n }\r\n\r\n createNormal(): number[] {\r\n return [0, 0, 0];\r\n }\r\n\r\n handleDelta(delta: Point3d): Point3d {\r\n return delta;\r\n }\r\n\r\n getPlanePreviewCoordinate(): any[] {\r\n return [];\r\n }\r\n\r\n override start(x: number, y: number): void {\r\n this.press = true;\r\n this.m_last = this.screenToWorld(x, y);\r\n this.m_click = { x, y };\r\n }\r\n\r\n override drag(x: number, y: number): void {\r\n if (this.press) {\r\n const point = this.screenToWorld(x, y);\r\n const delta = this.handleDelta(point.sub(this.m_last));\r\n\r\n const oldCenter = this.m_center;\r\n this.m_center = oldCenter.add(delta);\r\n\r\n const oldLast = this.m_last;\r\n this.m_last = point;\r\n\r\n const avp = this.getViewer().activeView;\r\n const plane = this.createPlane();\r\n const newPlane = plane.set(this.toGePoint(this.m_center), this.m_normal);\r\n const newCutting = avp.updateCuttingPlane(this.index, plane);\r\n\r\n this.drawPreview();\r\n\r\n this.deleteAll([avp, plane, oldCenter, delta, oldLast, newPlane, newCutting]);\r\n\r\n const device = this.getViewer().getActiveDevice();\r\n device.invalidate(device.getSize());\r\n }\r\n }\r\n\r\n override end(x: number, y: number): void {\r\n this.press = false;\r\n if (x === this.m_click.x && y === this.m_click.y) {\r\n this.m_normal = [this.m_normal[0] * -1, this.m_normal[1] * -1, this.m_normal[2] * -1];\r\n\r\n const avp = this.getViewer().activeView;\r\n const plane = this.createPlane();\r\n plane.set(this.toGePoint(this.m_center), this.m_normal);\r\n avp.updateCuttingPlane(this.index, plane);\r\n\r\n this.deleteAll([avp, plane, this.m_last]);\r\n\r\n const device = this.getViewer().getActiveDevice();\r\n device.invalidate(device.getSize());\r\n }\r\n }\r\n\r\n createPreview(): void {\r\n this.m_entity = this.m_model.appendEntity(\"&CuttingPlanePreview\");\r\n\r\n const GeometryTypes = this.m_module.GeometryTypes;\r\n\r\n const transparencyDef = new this.m_module.OdTvTransparencyDef();\r\n const colorDef = new this.m_module.OdTvColorDef(112, 112, 112); //0x53, 0x72, 0xAE\r\n\r\n transparencyDef.setValue(0.9);\r\n\r\n const entityPtr = this.m_entity.openObject();\r\n entityPtr.setColor(colorDef, GeometryTypes.kFaces.value);\r\n\r\n colorDef.setColor(112, 112, 112); //0xcd, 0xe2, 0xff\r\n entityPtr.setColor(colorDef, GeometryTypes.kEdges.value);\r\n\r\n entityPtr.setLineWeight(5);\r\n\r\n entityPtr.setTransparency(transparencyDef, GeometryTypes.kFaces);\r\n transparencyDef.setValue(1.0);\r\n entityPtr.setTransparency(transparencyDef, GeometryTypes.kEdges);\r\n\r\n this.planePreview = entityPtr.appendPolygon(this.getPlanePreviewCoordinate());\r\n const polygonPtr = this.planePreview.openAsPolygon();\r\n polygonPtr.setFilled(true);\r\n\r\n this.deleteAll([transparencyDef, colorDef, entityPtr, polygonPtr, GeometryTypes]);\r\n this.subject.syncOverlay();\r\n }\r\n\r\n drawPreview(): void {\r\n const polygonPtr = this.planePreview.openAsPolygon();\r\n polygonPtr.setPoints(this.getPlanePreviewCoordinate());\r\n this.deleteAll([polygonPtr]);\r\n this.subject.syncOverlay();\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Point3d } from \"./Common/Geometry\";\r\nimport { OdBaseCuttingPlaneDragger } from \"./OdBaseCuttingPlaneDragger\";\r\n\r\nexport class OdCuttingPlaneXAxisDragger extends OdBaseCuttingPlaneDragger {\r\n override createNormal(): number[] {\r\n return [1, 0, 0];\r\n }\r\n\r\n override handleDelta(delta: Point3d): Point3d {\r\n delta.y = 0.0;\r\n delta.z = 0.0;\r\n return delta;\r\n }\r\n\r\n override getPlanePreviewCoordinate(): number[] {\r\n return [\r\n this.m_center.x,\r\n this.m_center.y - this.m_size_y,\r\n this.m_center.z - this.m_size_z,\r\n this.m_center.x,\r\n this.m_center.y + this.m_size_y,\r\n this.m_center.z - this.m_size_z,\r\n this.m_center.x,\r\n this.m_center.y + this.m_size_y,\r\n this.m_center.z + this.m_size_z,\r\n this.m_center.x,\r\n this.m_center.y - this.m_size_y,\r\n this.m_center.z + this.m_size_z,\r\n ];\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Point3d } from \"./Common/Geometry\";\r\nimport { OdBaseCuttingPlaneDragger } from \"./OdBaseCuttingPlaneDragger\";\r\n\r\nexport class OdCuttingPlaneYAxisDragger extends OdBaseCuttingPlaneDragger {\r\n override createNormal(): number[] {\r\n return [0, 1, 0];\r\n }\r\n\r\n override handleDelta(delta: Point3d): Point3d {\r\n delta.x = 0.0;\r\n delta.z = 0.0;\r\n return delta;\r\n }\r\n\r\n override getPlanePreviewCoordinate(): number[] {\r\n return [\r\n this.m_center.x - this.m_size_x,\r\n this.m_center.y,\r\n this.m_center.z - this.m_size_z,\r\n this.m_center.x + this.m_size_x,\r\n this.m_center.y,\r\n this.m_center.z - this.m_size_z,\r\n this.m_center.x + this.m_size_x,\r\n this.m_center.y,\r\n this.m_center.z + this.m_size_z,\r\n this.m_center.x - this.m_size_x,\r\n this.m_center.y,\r\n this.m_center.z + this.m_size_z,\r\n ];\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Point3d } from \"./Common/Geometry\";\r\nimport { OdBaseCuttingPlaneDragger } from \"./OdBaseCuttingPlaneDragger\";\r\n\r\nexport class OdCuttingPlaneZAxisDragger extends OdBaseCuttingPlaneDragger {\r\n override createNormal(): number[] {\r\n return [0, 0, 1];\r\n }\r\n\r\n override handleDelta(delta: Point3d): Point3d {\r\n delta.x = 0.0;\r\n delta.y = 0.0;\r\n return delta;\r\n }\r\n\r\n override getPlanePreviewCoordinate(): number[] {\r\n return [\r\n this.m_center.x - this.m_size_x,\r\n this.m_center.y - this.m_size_y,\r\n this.m_center.z,\r\n this.m_center.x + this.m_size_x,\r\n this.m_center.y - this.m_size_y,\r\n this.m_center.z,\r\n this.m_center.x + this.m_size_x,\r\n this.m_center.y + this.m_size_y,\r\n this.m_center.z,\r\n this.m_center.x - this.m_size_x,\r\n this.m_center.y + this.m_size_y,\r\n this.m_center.z,\r\n ];\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Point2d, Point3d, Vector3d } from \"../Common/Geometry\";\r\nimport { Viewer } from \"../../Viewer\";\r\n\r\nexport class OrbitAction {\r\n private _m_module: any;\r\n private _subject: Viewer;\r\n private _beginInteractivity: () => void;\r\n private _endInteractivity: () => void;\r\n private m_viewCenter: any;\r\n private m_startPoint: Point2d;\r\n\r\n constructor(m_module: any, subject: Viewer, beginInteractivity: () => void, endInteractivity: () => void) {\r\n this._m_module = m_module;\r\n this._subject = subject;\r\n this._beginInteractivity = beginInteractivity;\r\n this._endInteractivity = endInteractivity;\r\n }\r\n\r\n public beginAction(x: number, y: number) {\r\n this.m_viewCenter = this.getCenter();\r\n this.m_startPoint = { x, y };\r\n\r\n const view = this.getViewer().activeView;\r\n\r\n view.delete();\r\n this._beginInteractivity();\r\n }\r\n\r\n public action(x: number, y: number) {\r\n const view = this.getViewer().activeView;\r\n\r\n const corners = view.vportRect;\r\n\r\n const size = Math.max(Math.abs(corners[2] - corners[0]), Math.abs(corners[3] - corners[1]));\r\n\r\n const distX = ((this.m_startPoint.x - x) * Math.PI) / size;\r\n const distY = ((this.m_startPoint.y - y) * Math.PI) / size;\r\n\r\n this.m_startPoint.x = x;\r\n this.m_startPoint.y = y;\r\n\r\n const xOrbit = distY;\r\n const yOrbit = distX;\r\n\r\n const viewParams = {\r\n position: view.viewPosition,\r\n target: view.viewTarget,\r\n upVector: view.upVector,\r\n viewFieldWidth: view.viewFieldWidth,\r\n viewFieldHeight: view.viewFieldHeight,\r\n perspective: view.perspective,\r\n };\r\n\r\n view.delete();\r\n\r\n const sideVector = this.getSideVector(viewParams);\r\n\r\n if (xOrbit !== 0.0) {\r\n this.calculateXOrbit(viewParams, -xOrbit, sideVector);\r\n }\r\n\r\n if (yOrbit !== 0.0) {\r\n this.calculateYOrbit(viewParams, yOrbit, sideVector);\r\n }\r\n\r\n sideVector.delete();\r\n\r\n const extView = this.getViewer().getActiveTvExtendedView();\r\n\r\n extView.setView(\r\n viewParams.position,\r\n viewParams.target,\r\n viewParams.upVector,\r\n viewParams.viewFieldWidth,\r\n viewParams.viewFieldHeight,\r\n viewParams.perspective\r\n );\r\n extView.delete();\r\n\r\n this._subject.activeDragger()?.updatePreview();\r\n }\r\n\r\n public endAction() {\r\n this._endInteractivity();\r\n }\r\n\r\n private getSideVector(viewParams: any): any {\r\n const pUpV = this.toVector(viewParams.upVector);\r\n const pTarget = this.toPoint(viewParams.target);\r\n const pPosition = this.toPoint(viewParams.position);\r\n\r\n const direct = pTarget.sub(pPosition);\r\n const vDirect = direct.asVector();\r\n\r\n const vCross = pUpV.crossProduct(vDirect);\r\n const sideVector = vCross.normalize();\r\n\r\n this.deleteAll([direct, pUpV, pTarget, pPosition, vDirect, vCross]);\r\n\r\n return sideVector;\r\n }\r\n\r\n private calculateXOrbit(viewParams: any, delta: number, sideVector: Vector3d): void {\r\n {\r\n const pPoint = this.toPoint(viewParams.position);\r\n const pCenter = this.toPoint(this.m_viewCenter);\r\n\r\n const rotatePoint = pPoint.rotateByBasePoint(delta, sideVector, pCenter);\r\n viewParams.position = rotatePoint.toArray();\r\n\r\n this.deleteAll([pPoint, pCenter, rotatePoint]);\r\n }\r\n\r\n {\r\n const pTarget = this.toPoint(viewParams.target);\r\n const pCenter = this.toPoint(this.m_viewCenter);\r\n\r\n const rotatePoint = pTarget.rotateByBasePoint(delta, sideVector, pCenter);\r\n viewParams.target = rotatePoint.toArray();\r\n\r\n this.deleteAll([pTarget, pCenter, rotatePoint]);\r\n }\r\n\r\n {\r\n const pPoint = this.toPoint(viewParams.position);\r\n const pTarget = this.toPoint(viewParams.target);\r\n const pCenter = this.toPoint(this.m_viewCenter);\r\n\r\n const pUp = pTarget.sub(pPoint);\r\n const vUp = pUp.asVector();\r\n\r\n const crossProduct = vUp.crossProduct(sideVector);\r\n const crossProductNormal = crossProduct.normalize();\r\n\r\n viewParams.upVector = crossProductNormal.toArray();\r\n\r\n this.deleteAll([pPoint, pTarget, pCenter, pUp, vUp, crossProduct, crossProductNormal]);\r\n }\r\n }\r\n\r\n private calculateYOrbit(viewParams: any, delta: number, sideVector: any): void {\r\n {\r\n const pPoint = this.toPoint(viewParams.position);\r\n const pCenter = this.toPoint(this.m_viewCenter);\r\n\r\n const zAxis = this.toVector(this._m_module.Vector3d.kZAxis);\r\n\r\n const rotatePoint = pPoint.rotateByBasePoint(delta, zAxis, pCenter);\r\n viewParams.position = rotatePoint.toArray();\r\n\r\n this.deleteAll([zAxis, pPoint, pCenter, rotatePoint]);\r\n }\r\n\r\n {\r\n const pTarget = this.toPoint(viewParams.target);\r\n const pCenter = this.toPoint(this.m_viewCenter);\r\n\r\n const zAxis = this.toVector(this._m_module.Vector3d.kZAxis);\r\n\r\n const rotatePoint = pTarget.rotateByBasePoint(delta, zAxis, pCenter);\r\n viewParams.target = rotatePoint.toArray();\r\n\r\n this.deleteAll([zAxis, pTarget, pCenter, rotatePoint]);\r\n }\r\n\r\n {\r\n const zAxis = this.toVector(this._m_module.Vector3d.kZAxis);\r\n const pTarget = this.toPoint(viewParams.target);\r\n const pPoint = this.toPoint(viewParams.position);\r\n\r\n const side = sideVector.rotateBy(delta, zAxis);\r\n\r\n const pUp = pTarget.sub(pPoint);\r\n const vUp = pUp.asVector();\r\n\r\n const cross = vUp.crossProduct(side);\r\n const crossNormal = cross.normalize();\r\n\r\n viewParams.upVector = crossNormal.toArray();\r\n\r\n this.deleteAll([zAxis, pTarget, pPoint, side, pUp, vUp, cross, crossNormal]);\r\n }\r\n }\r\n\r\n private getCenter(): any {\r\n const viewer = this.getViewer();\r\n let center;\r\n\r\n const pSet = viewer.getSelected();\r\n if (!pSet.isNull() && pSet.numItems() !== 0) {\r\n const itr = pSet.getIterator();\r\n let ext, entId, extSelected;\r\n for (; !itr.done(); itr.step()) {\r\n entId = itr.getEntity();\r\n ext = entId.getWCSExtents();\r\n if (extSelected) extSelected.addExt(ext);\r\n else extSelected = ext;\r\n }\r\n center = extSelected.center();\r\n\r\n extSelected.delete();\r\n itr.delete();\r\n } else {\r\n center = viewer.getActiveExtents().center();\r\n }\r\n\r\n return center;\r\n }\r\n\r\n private getViewer(): any {\r\n return this._m_module.getViewer();\r\n }\r\n\r\n private toVector(geVector): Vector3d {\r\n return this._m_module.Vector3d.createFromArray(geVector);\r\n }\r\n\r\n private toPoint(gePoint: number[]): Point3d {\r\n return this._m_module.Point3d.createFromArray(gePoint);\r\n }\r\n\r\n private deleteAll(objects): void {\r\n for (const obj of objects) {\r\n obj?.delete?.();\r\n }\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n/* eslint-disable no-unused-vars */\r\nimport { Viewer } from \"../Viewer\";\r\nimport { OrbitAction } from \"./Actions/OrbitAction\";\r\nimport { Point2d } from \"./Common/Geometry\";\r\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\r\n\r\nexport class OdOrbitDragger extends OdBaseDragger {\r\n private _orbitAction: OrbitAction;\r\n protected m_viewCenter: any;\r\n protected m_startPoint: Point2d;\r\n protected startCameraParams: any;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n this.autoSelect = true;\r\n this.press = false;\r\n this._orbitAction = new OrbitAction(this.m_module, this.subject, this.beginInteractivity, this.endInteractivity);\r\n }\r\n\r\n override start(x: number, y: number): void {\r\n this.press = true;\r\n this._orbitAction.beginAction(x, y);\r\n }\r\n\r\n setDefaultViewParams(): void {\r\n const extView = this.getViewer().getActiveTvExtendedView();\r\n extView.setView(\r\n this.startCameraParams.position,\r\n this.startCameraParams.target,\r\n this.startCameraParams.upVector,\r\n this.startCameraParams.viewFieldWidth,\r\n this.startCameraParams.viewFieldHeight,\r\n this.startCameraParams.perspective\r\n );\r\n extView.delete();\r\n }\r\n\r\n override drag(x: number, y: number, dltX: number, dltY: number): void {\r\n if (this.press) {\r\n this._orbitAction.action(x, y);\r\n }\r\n }\r\n\r\n override end(): void {\r\n this.press = false;\r\n this._orbitAction.endAction();\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Point2d, Point3d } from \"../Common/Geometry\";\r\nimport { ViewParams } from \"../Common/OdaGeAction\";\r\nimport { Viewer } from \"../../Viewer\";\r\n\r\nexport class PanAction {\r\n private _m_module: any;\r\n private _subject: Viewer;\r\n private _m_start: Point3d;\r\n private _deltaScreenPosition: Point2d;\r\n private _beginInteractivity: () => void;\r\n private _endInteractivity: () => void;\r\n private _getViewParams: () => ViewParams;\r\n private _setViewParams: (params: ViewParams) => void;\r\n\r\n constructor(\r\n m_module: any,\r\n subject: Viewer,\r\n beginInteractivity: () => void,\r\n endInteractivity: () => void,\r\n getViewParams: () => ViewParams,\r\n setViewParams: (params: ViewParams) => void\r\n ) {\r\n this._m_module = m_module;\r\n this._subject = subject;\r\n this._beginInteractivity = beginInteractivity;\r\n this._endInteractivity = endInteractivity;\r\n this._getViewParams = getViewParams;\r\n this._setViewParams = setViewParams;\r\n }\r\n\r\n public beginAction(x: number, y: number) {\r\n this._m_start = this.screenToWorld(x, y);\r\n this._deltaScreenPosition = { x, y };\r\n this._beginInteractivity();\r\n }\r\n\r\n public action(x: number, y: number) {\r\n const { Vector3d } = this._m_module;\r\n const params = this._getViewParams();\r\n const pt = this.screenToWorld(x, y);\r\n\r\n const ptSub = this._m_start.sub(pt);\r\n const delta = ptSub.asVector();\r\n\r\n const target = Vector3d.createFromArray(params.target);\r\n const targetWithDelta = target.add(delta);\r\n params.target = targetWithDelta.toArray();\r\n\r\n const position = Vector3d.createFromArray(params.position);\r\n const positionWithDelta = position.add(delta);\r\n params.position = positionWithDelta.toArray();\r\n\r\n this._setViewParams(params);\r\n target.delete();\r\n\r\n targetWithDelta.delete();\r\n position.delete();\r\n positionWithDelta.delete();\r\n\r\n this._subject.activeDragger()?.updatePreview();\r\n this._subject.emitEvent({\r\n type: \"pan\",\r\n x,\r\n y,\r\n dX: x - this._deltaScreenPosition.x,\r\n dY: y - this._deltaScreenPosition.y,\r\n });\r\n\r\n this._deltaScreenPosition = { x, y };\r\n }\r\n\r\n public endAction() {\r\n this._endInteractivity();\r\n }\r\n\r\n private screenToWorld(x: number, y: number): Point3d {\r\n return this._m_module.Point3d.createFromArray(this._m_module.getViewer().screenToWorld(x, y));\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n/* eslint-disable no-unused-vars */\r\nimport { Viewer } from \"../Viewer\";\r\nimport { PanAction } from \"./Actions/PanAction\";\r\nimport { Point3d } from \"./Common/Geometry\";\r\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\r\n\r\nexport class OdPanDragger extends OdBaseDragger {\r\n private _panAction: PanAction;\r\n protected m_start: Point3d;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n this.autoSelect = true;\r\n this.press = false;\r\n this._panAction = new PanAction(\r\n this.m_module,\r\n this.subject,\r\n this.beginInteractivity,\r\n this.endInteractivity,\r\n this.getViewParams,\r\n this.setViewParams\r\n );\r\n }\r\n\r\n override start(x: number, y: number): void {\r\n this.press = true;\r\n this._panAction.beginAction(x, y);\r\n }\r\n\r\n override drag(x: number, y: number, dltX: number, dltY: number): void {\r\n if (this.press) {\r\n this._panAction.action(x, y);\r\n }\r\n }\r\n\r\n override end(x: number, y: number): void {\r\n this.press = false;\r\n this._panAction.endAction();\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../../Viewer\";\r\n\r\nexport class ZoomAction {\r\n private _m_module: any;\r\n private _subject: Viewer;\r\n\r\n constructor(m_module: any, subject: Viewer) {\r\n this._m_module = m_module;\r\n this._subject = subject;\r\n }\r\n\r\n public action(x: number, y: number, zoomFactor: number) {\r\n const viewer = this._m_module.getViewer();\r\n viewer.zoomAt(zoomFactor, x, y);\r\n\r\n this._subject.activeDragger()?.updatePreview();\r\n this._subject.emitEvent({\r\n type: \"zoomat\",\r\n data: zoomFactor,\r\n });\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n/* eslint-disable no-unused-vars */\r\nimport { Viewer } from \"../Viewer\";\r\nimport { ZoomAction } from \"./Actions/ZoomAction\";\r\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\r\n\r\nexport class OdZoomDragger extends OdBaseDragger {\r\n private _zoomAction: ZoomAction;\r\n protected pressX: number;\r\n protected pressY: number;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n this.autoSelect = true;\r\n this.press = false;\r\n this._zoomAction = new ZoomAction(this.m_module, this.subject);\r\n }\r\n\r\n override start(x: number, y: number): void {\r\n this.press = true;\r\n this.pressX = x;\r\n this.pressY = y;\r\n this.beginInteractivity();\r\n }\r\n\r\n override drag(x: number, y: number, dltX: number, dltY: number): void {\r\n if (this.press) {\r\n const ZOOM_SPEED = 0.025;\r\n const zoomFactor = dltY > 0 ? 1 + ZOOM_SPEED : 1 - ZOOM_SPEED;\r\n this._zoomAction.action(this.pressX, this.pressY, zoomFactor);\r\n }\r\n }\r\n\r\n override end(): void {\r\n this.press = false;\r\n this.endInteractivity();\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\r\nimport { ZoomAction } from \"./Actions/ZoomAction\";\r\n\r\nconst INTERACTIVITY_TIME_OUT = 100;\r\n\r\nexport class OdZoomWheelDragger extends OdBaseDragger {\r\n private _zoomAction: ZoomAction;\r\n\r\n private _endInteractivityTimeOutId;\r\n\r\n private _isEnableInteractivityMode: boolean;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n\r\n // ignore all events except \"wheel\" so as not to interfere with other handlers\r\n this.canvasEvents = [\"wheel\"];\r\n this._zoomAction = new ZoomAction(this.m_module, this.subject);\r\n this._endInteractivityTimeOutId = undefined;\r\n this._isEnableInteractivityMode = false;\r\n }\r\n\r\n wheel(event) {\r\n if (!this.subject.options.enableZoomWheel) {\r\n return;\r\n }\r\n\r\n event = event || window.event;\r\n event.preventDefault();\r\n\r\n const zoomReverse = this.subject.options.reverseZoomWheel ? -1 : 1;\r\n const zoomSpeed = 0.075 * zoomReverse;\r\n\r\n const viewer = this.getViewer();\r\n if (viewer) {\r\n const zoomFactor = event.deltaY > 0 ? 1 + zoomSpeed : 1 - zoomSpeed;\r\n\r\n this._zoomAction.action(\r\n event.offsetX * window.devicePixelRatio,\r\n event.offsetY * window.devicePixelRatio,\r\n zoomFactor\r\n );\r\n\r\n if (!this._isEnableInteractivityMode) {\r\n this._isEnableInteractivityMode = true;\r\n this.beginInteractivity();\r\n }\r\n\r\n if (this._endInteractivityTimeOutId) {\r\n clearTimeout(this._endInteractivityTimeOutId);\r\n }\r\n\r\n if (!this._isEnableInteractivityMode) {\r\n this._isEnableInteractivityMode = true;\r\n this.beginInteractivity();\r\n }\r\n\r\n if (this._endInteractivityTimeOutId) {\r\n clearTimeout(this._endInteractivityTimeOutId);\r\n }\r\n\r\n this.subject.update(true);\r\n\r\n this._endInteractivityTimeOutId = setTimeout(() => {\r\n this._endInteractivityTimeOutId = undefined;\r\n this.endInteractivity();\r\n this._isEnableInteractivityMode = false;\r\n }, INTERACTIVITY_TIME_OUT);\r\n }\r\n }\r\n\r\n override dispose(): void {\r\n if (this._endInteractivityTimeOutId) {\r\n clearTimeout(this._endInteractivityTimeOutId);\r\n this.endInteractivity();\r\n this._isEnableInteractivityMode = false;\r\n }\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Point3d } from \"../Common/Geometry\";\r\n\r\nexport class OdSelectionFrame {\r\n protected m_start: number[];\r\n protected m_end: number[];\r\n protected m_model: any;\r\n protected m_module: any;\r\n protected m_entity: any;\r\n protected m_frame: any;\r\n\r\n constructor() {\r\n this.m_start = [0, 0, 0]; // 0\r\n this.m_end = [0, 0, 0]; // 2\r\n\r\n this.m_model = null;\r\n }\r\n\r\n createPoint3d(): Point3d {\r\n return new this.m_module.Point3d();\r\n }\r\n\r\n init(instance: any, model: any): void {\r\n this.m_module = instance;\r\n this.m_model = model;\r\n }\r\n\r\n getViewer() {\r\n return this.m_module.getViewer();\r\n }\r\n\r\n setValue(value: number[]): void {\r\n this.m_end = value;\r\n this.draw();\r\n }\r\n\r\n setStartPoint(point: number[]): void {\r\n this.m_start = point;\r\n this.m_end = point;\r\n this.draw();\r\n }\r\n\r\n toDoubleArray(points: Point3d[]): number[] {\r\n const p: number[] = [];\r\n for (let i = 0; i < points.length; i++) {\r\n p.push(points[i].x);\r\n p.push(points[i].y);\r\n p.push(points[i].z);\r\n }\r\n return p;\r\n }\r\n\r\n draw(): void {\r\n const view = this.getViewer().activeView;\r\n const viewM = view.viewingMatrix;\r\n\r\n const points = [];\r\n points.push(this.m_start);\r\n points.push(this.createPoint3d());\r\n points.push(this.m_end);\r\n points.push(this.createPoint3d());\r\n\r\n const p0 = this.createPoint3d();\r\n p0.set(this.m_start[0], this.m_start[1], this.m_start[2]);\r\n\r\n const p2 = this.createPoint3d();\r\n p2.set(this.m_end[0], this.m_end[1], this.m_end[2]);\r\n\r\n p0.transformBy(viewM);\r\n p2.transformBy(viewM);\r\n\r\n points[1].x = p0.x;\r\n points[3].x = p2.x;\r\n points[1].y = p2.y;\r\n points[3].y = p0.y;\r\n points[1].z = points[3].z = p2.z;\r\n\r\n const eyeM = view.eyeToWorldMatrix;\r\n points[1].transformBy(eyeM);\r\n points[3].transformBy(eyeM);\r\n\r\n if (!this.m_entity) {\r\n this.m_entity = this.m_model.appendEntity(\"\");\r\n const entityPtr = this.m_entity.openObject();\r\n\r\n entityPtr.setColor(112, 112, 112);\r\n entityPtr.setLineWeight(2);\r\n\r\n this.m_frame = entityPtr.appendPolygon(this.toDoubleArray(points));\r\n entityPtr.delete();\r\n } else {\r\n this.m_frame.openAsPolygon().setPoints(this.toDoubleArray(points));\r\n }\r\n }\r\n\r\n clear(): void {\r\n if (this.m_entity) {\r\n this.m_model.removeEntity(this.m_entity);\r\n this.m_entity = null;\r\n }\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n/* eslint-disable no-unused-vars */\r\n\r\nimport { Viewer } from \"../../Viewer\";\r\nimport { OdBaseDragger } from \"../Common/OdBaseDragger\";\r\nimport { OdSelectionFrame } from \"./OdSelectionFrame\";\r\n\r\nexport class OdZoomWindowDragger extends OdBaseDragger {\r\n protected m_frame: any;\r\n protected m_minX: number;\r\n protected m_minY: number;\r\n protected m_maxX: number;\r\n protected m_maxY: number;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n this.autoSelect = true;\r\n this.press = false;\r\n this.needInputText = false;\r\n\r\n this.m_frame = new OdSelectionFrame();\r\n this.m_frame.init(this.m_module, this.getModel());\r\n }\r\n\r\n override start(x: number, y: number): void {\r\n this.press = true;\r\n this.m_minX = x;\r\n this.m_minY = y;\r\n\r\n const startPoint = this.screenToWorld(x, y);\r\n this.m_frame.setStartPoint(startPoint);\r\n }\r\n\r\n override drag(x: number, y: number, dltX: number, dltY: number): void {\r\n if (this.press) {\r\n this.m_maxX = x;\r\n this.m_maxY = y;\r\n\r\n const point = this.screenToWorld(x, y);\r\n this.m_frame.setValue(point);\r\n }\r\n }\r\n\r\n override end(x: number, y: number): void {\r\n this.press = false;\r\n this.m_maxX = x;\r\n this.m_maxY = y;\r\n\r\n if (this.m_minX !== this.m_maxX && this.m_minY !== this.m_maxY) {\r\n this.m_frame.clear();\r\n this.getViewer().zoomWindow(this.m_minX, this.m_minY, this.m_maxX, this.m_maxY);\r\n }\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n/* eslint-disable no-unused-vars */\r\nimport { Viewer } from \"../Viewer\";\r\nimport { Point2d } from \"./Common/Geometry\";\r\nimport { ViewParams } from \"./Common/OdaGeAction\";\r\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\r\n\r\nexport class OrbitAroundBuildingDragger extends OdBaseDragger {\r\n protected maxPolarAngle: number;\r\n protected minPolarAngle: number;\r\n protected m_viewCenter: any;\r\n protected m_startPoint: Point2d;\r\n protected startCameraParams: ViewParams;\r\n protected m_delta: number;\r\n\r\n constructor(viewer: Viewer) {\r\n super(viewer);\r\n this.autoSelect = true;\r\n this.press = false;\r\n this.maxPolarAngle = Math.PI / 2;\r\n this.minPolarAngle = 0; // radians\r\n }\r\n\r\n override start(x: number, y: number): void {\r\n this.press = true;\r\n\r\n this.m_viewCenter = this.getCenter();\r\n this.m_startPoint = { x, y };\r\n\r\n const view = this.getViewer().activeView;\r\n\r\n this.startCameraParams = this.getViewParams();\r\n\r\n const corners = view.vportRect;\r\n\r\n this.m_delta = Math.max(corners[1] - corners[0], corners[2] - corners[3]);\r\n\r\n this.beginInteractivity();\r\n }\r\n\r\n setDefaultViewParams(): void {\r\n this.setViewParams(this.startCameraParams);\r\n }\r\n\r\n override drag(x: number, y: number, dltX: number, dltY: number): void {\r\n if (this.press) {\r\n let dX = x - this.m_startPoint.x;\r\n let dY = y - this.m_startPoint.y;\r\n\r\n dX *= Math.PI / this.m_delta;\r\n dY *= Math.PI / this.m_delta;\r\n\r\n this.setDefaultViewParams();\r\n\r\n const { Vector3d, Matrix3d } = this.m_module;\r\n\r\n const target = Vector3d.createFromArray(this.startCameraParams.target);\r\n const offset = Vector3d.createFromArray(this.startCameraParams.position).sub(target);\r\n const dir = offset.normalize();\r\n\r\n const zMatrix = new Matrix3d();\r\n zMatrix.setToIdentity();\r\n const xMatrix = new Matrix3d();\r\n xMatrix.setToIdentity();\r\n\r\n // ---- restore start rotation ----\r\n\r\n const yAxis = Vector3d.createFromArray([dir.x, dir.y, dir.z]);\r\n const zAxis = Vector3d.createFromArray(this.startCameraParams.upVector);\r\n const xAxis = yAxis.crossProduct(zAxis);\r\n\r\n // ----------- zAxis rotation restore -----------\r\n let xyDir = Vector3d.createFromArray([yAxis.x, yAxis.y, 0]);\r\n\r\n if (xyDir.length() <= 0.00001) {\r\n xyDir.set(-xAxis.y, xAxis.x, 0);\r\n } else {\r\n xyDir = xyDir.normalize();\r\n }\r\n const xyAngle =\r\n Math.sign(xyDir.dotProduct(Vector3d.createFromArray([-1, 0, 0]))) *\r\n xyDir.angleTo(Vector3d.createFromArray([0, 1, 0]));\r\n dX -= xyAngle;\r\n // ----------- zAxis rotation restore -----------\r\n\r\n // ----------- xAxis rotation restore -----------\r\n let yzDir = Vector3d.createFromArray([dir.x, dir.y, 0]);\r\n let yzAngle = 0;\r\n if (yzDir.length() <= 0.00001) {\r\n yzAngle = (-dir.z * Math.PI) / 2;\r\n } else {\r\n yzDir = yzDir.normalize();\r\n yzAngle = -yzDir.angleTo(dir);\r\n }\r\n dY -= yzAngle;\r\n // ----------- xAxis rotation restore -----------\r\n\r\n // ---- restore start rotation ----\r\n\r\n zMatrix.setToRotation(-dX, [0, 0, 1], [0, 0, 0]);\r\n\r\n const xAngle = Math.max(this.minPolarAngle, Math.min(this.maxPolarAngle, dY));\r\n xMatrix.setToRotation(xAngle, [1, 0, 0], [0, 0, 0]);\r\n\r\n const endMatrix = zMatrix.postMultBy(xMatrix);\r\n\r\n let pos = Vector3d.createFromArray([0, 1, 0]).transformBy(endMatrix);\r\n const up = Vector3d.createFromArray([0, 0, 1]).transformBy(endMatrix);\r\n\r\n pos.setLength(offset.length());\r\n pos = target.add(pos);\r\n\r\n const current = this.getViewParams();\r\n\r\n current.position = pos.toArray();\r\n current.upVector = up.toArray();\r\n\r\n this.setViewParams(current);\r\n }\r\n }\r\n\r\n override end(): void {\r\n this.press = false;\r\n this.endInteractivity();\r\n }\r\n\r\n getCenter(): any {\r\n const viewer = this.getViewer();\r\n\r\n let ext = viewer.getActiveExtents();\r\n\r\n const pSet = viewer.getSelected();\r\n if (!pSet.isNull() && pSet.numItems() !== 0) {\r\n const itr = pSet.getIterator();\r\n const entId = itr.getEntity();\r\n\r\n if (entId.getType() === 1) {\r\n const obj = entId.openObject();\r\n\r\n ext.delete();\r\n ext = obj.getExtents();\r\n\r\n obj.delete();\r\n } else if (entId.getType() === 2) {\r\n const obj = entId.openObjectAsInsert();\r\n const extTuple = obj.getExtents();\r\n\r\n ext.delete();\r\n ext = extTuple.ext;\r\n\r\n extTuple.delete();\r\n obj.delete();\r\n }\r\n\r\n itr.delete();\r\n }\r\n\r\n const center = ext.center();\r\n\r\n ext.delete();\r\n return center;\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../../Viewer\";\r\nimport { OrbitAction } from \"../Actions/OrbitAction\";\r\nimport { PanAction } from \"../Actions/PanAction\";\r\nimport { ZoomAction } from \"../Actions/ZoomAction\";\r\nimport { Point2d } from \"./Geometry\";\r\nimport { OdBaseDragger } from \"./OdBaseDragger\";\r\n\r\nexport enum GestureAction {\r\n None,\r\n Orbit,\r\n Pan,\r\n Zoom,\r\n}\r\n\r\nexport class GestureManager extends OdBaseDragger {\r\n private _previousEvents = new Map<number, PointerEvent>();\r\n private _currentEvents = new Map<number, PointerEvent>();\r\n private _lastGestureAction = GestureAction.None;\r\n private _orbitAction: OrbitAction;\r\n private _panAction: PanAction;\r\n private _zoomAction: ZoomAction;\r\n\r\n private _initialDistance: number;\r\n private readonly _maxInitialDistanceDifference = 30 * window.devicePixelRatio;\r\n\r\n private _isSingleTouchEnabled = false;\r\n\r\n public get isSingleTouchEnabled(): boolean {\r\n return this._isSingleTouchEnabled;\r\n }\r\n\r\n public set isSingleTouchEnabled(value: boolean) {\r\n this._isSingleTouchEnabled = value;\r\n }\r\n\r\n public constructor(subject: Viewer) {\r\n super(subject);\r\n\r\n this._orbitAction = new OrbitAction(this.m_module, this.subject, this.beginInteractivity, this.endInteractivity);\r\n this._panAction = new PanAction(\r\n this.m_module,\r\n this.subject,\r\n this.beginInteractivity,\r\n this.endInteractivity,\r\n this.getViewParams,\r\n this.setViewParams\r\n );\r\n this._zoomAction = new ZoomAction(this.m_module, this.subject);\r\n }\r\n\r\n private getMiddlePoint(events: Map<number, PointerEvent>): Point2d {\r\n if (events.size !== 2) {\r\n return undefined;\r\n }\r\n\r\n const keys = this.getKeys(events);\r\n const point0 = this.relativeCoords(events.get(keys[0]));\r\n const point1 = this.relativeCoords(events.get(keys[1]));\r\n\r\n return {\r\n x: Math.floor((point0.x + point1.x) / 2),\r\n y: Math.floor((point0.y + point1.y) / 2),\r\n };\r\n }\r\n\r\n private getFirstPoint(events: Map<number, PointerEvent>): Point2d {\r\n if (events.size < 1) {\r\n return undefined;\r\n }\r\n\r\n const keys = this.getKeys(events);\r\n return this.relativeCoords(events.get(keys[0]));\r\n }\r\n\r\n private getDistance(events: Map<number, PointerEvent>): number {\r\n if (events.size !== 2) {\r\n return -1;\r\n }\r\n\r\n const keys = this.getKeys(events);\r\n const point0 = this.relativeCoords(events.get(keys[0]));\r\n const point1 = this.relativeCoords(events.get(keys[1]));\r\n\r\n return Math.hypot(point0.x - point1.x, point0.y - point1.y);\r\n }\r\n\r\n private updateEvent(event: PointerEvent) {\r\n const eventNotInCurrentEvents = !this._currentEvents.get(event.pointerId);\r\n if (eventNotInCurrentEvents && this._currentEvents.size === 2) {\r\n return;\r\n }\r\n\r\n const previousEvent = this._currentEvents.get(event.pointerId);\r\n if (previousEvent) {\r\n this._previousEvents.set(previousEvent.pointerId, previousEvent);\r\n }\r\n\r\n this._currentEvents.set(event.pointerId, event);\r\n\r\n if (eventNotInCurrentEvents) {\r\n this._initialDistance = this.getDistance(this._currentEvents);\r\n }\r\n }\r\n\r\n private removeEvent(event: PointerEvent) {\r\n this._currentEvents.delete(event.pointerId);\r\n this._previousEvents.delete(event.pointerId);\r\n\r\n if (this._currentEvents.size < 2) {\r\n this._initialDistance = -1;\r\n }\r\n }\r\n\r\n private getKeys(map: Map<number, PointerEvent>): number[] {\r\n return Array.from(map.keys());\r\n }\r\n\r\n private analyzeGesture() {\r\n if (this._currentEvents.size === 2) {\r\n const currentDistance = this.getDistance(this._currentEvents);\r\n const previousDistance = this.getDistance(this._previousEvents);\r\n\r\n const currentDistanceEqualsInitialDistance =\r\n Math.abs(this._initialDistance - currentDistance) <= this._maxInitialDistanceDifference;\r\n if (currentDistanceEqualsInitialDistance) {\r\n this.executePanAction(this.getMiddlePoint(this._currentEvents));\r\n } else {\r\n if (previousDistance !== -1 && currentDistance !== previousDistance) {\r\n this.executeZoomAction(currentDistance, previousDistance);\r\n }\r\n }\r\n } else if (this._currentEvents.size === 1 && this.isSingleTouchEnabled) {\r\n this.executeOrbitAction(this.getFirstPoint(this._currentEvents));\r\n }\r\n }\r\n\r\n private executeZoomAction(currentDistance: number, previousDistance: number) {\r\n if (this._lastGestureAction !== GestureAction.Zoom) {\r\n this.executeEndAction(this._lastGestureAction);\r\n this._lastGestureAction = GestureAction.Zoom;\r\n OdBaseDragger.isGestureActive = true;\r\n }\r\n\r\n const zoomSpeed = (currentDistance - previousDistance) / 700;\r\n const zoomFactor = 1 + zoomSpeed;\r\n const middlePoint = this.getMiddlePoint(this._currentEvents);\r\n this._zoomAction.action(middlePoint.x, middlePoint.y, zoomFactor);\r\n this.subject.update();\r\n }\r\n\r\n private executePanAction(currentPoint: Point2d) {\r\n if (this._lastGestureAction !== GestureAction.Pan) {\r\n this.executeEndAction(this._lastGestureAction);\r\n this._lastGestureAction = GestureAction.Pan;\r\n OdBaseDragger.isGestureActive = true;\r\n\r\n this._panAction.beginAction(currentPoint.x, currentPoint.y);\r\n }\r\n\r\n this._panAction.action(currentPoint.x, currentPoint.y);\r\n this.subject.update();\r\n }\r\n\r\n private executeOrbitAction(currentPoint: Point2d) {\r\n if (this._lastGestureAction !== GestureAction.Orbit) {\r\n this.executeEndAction(this._lastGestureAction);\r\n this._lastGestureAction = GestureAction.Orbit;\r\n OdBaseDragger.isGestureActive = true;\r\n\r\n this._orbitAction.beginAction(currentPoint.x, currentPoint.y);\r\n }\r\n\r\n this._orbitAction.action(currentPoint.x, currentPoint.y);\r\n this.subject.update();\r\n }\r\n\r\n private executeEndAction(gestureAction: GestureAction) {\r\n if (gestureAction === GestureAction.Orbit) this._orbitAction.endAction();\r\n if (gestureAction === GestureAction.Pan) this._panAction.endAction();\r\n OdBaseDragger.isGestureActive = false;\r\n }\r\n\r\n private needIgnoreEvent(event: PointerEvent): boolean {\r\n return (\r\n !this.subject.options.enableZoomWheel || !this.subject.options.enableGestures || !this.eventIsTouchEvent(event)\r\n );\r\n }\r\n\r\n private eventIsTouchEvent(event: PointerEvent): boolean {\r\n return event.pointerType === \"touch\" || event.pointerType === \"\";\r\n }\r\n\r\n override pointerdown(event: PointerEvent) {\r\n if (this.needIgnoreEvent(event)) {\r\n return;\r\n }\r\n\r\n this.updateEvent(event);\r\n }\r\n\r\n override pointermove(event: PointerEvent) {\r\n if (this.needIgnoreEvent(event)) {\r\n return;\r\n }\r\n\r\n this.updateEvent(event);\r\n this.analyzeGesture();\r\n }\r\n\r\n override pointerup(event: PointerEvent) {\r\n if (this.needIgnoreEvent(event)) {\r\n return;\r\n }\r\n\r\n this.removeEvent(event);\r\n\r\n if (this._currentEvents.size < 2) {\r\n this.executeEndAction(this._lastGestureAction);\r\n OdBaseDragger.isGestureActive = false;\r\n }\r\n\r\n this._lastGestureAction = GestureAction.None;\r\n }\r\n\r\n override pointercancel(event: PointerEvent) {\r\n if (this.needIgnoreEvent(event)) {\r\n return;\r\n }\r\n\r\n this.pointerup(event);\r\n }\r\n\r\n pointerleave(event: PointerEvent) {\r\n if (this.needIgnoreEvent(event)) {\r\n return;\r\n }\r\n\r\n this.pointerup(event);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nexport function loadScript(url: string) {\r\n return new Promise((resolve, reject) => {\r\n const script = document.createElement(\"script\");\r\n script.src = url;\r\n script.async = true;\r\n script.onload = () => resolve(script);\r\n script.onerror = () => {\r\n script.remove();\r\n reject(new Error(`GET ${url} failed to load script`));\r\n };\r\n document.body.appendChild(script);\r\n });\r\n}\r\n\r\nexport const memoize = (f) => {\r\n const cache = {};\r\n return (...args) => {\r\n const argStr = JSON.stringify(args);\r\n cache[argStr] = cache[argStr] || f(...args);\r\n return cache[argStr];\r\n };\r\n};\r\n\r\nfunction loadVisuazlizeJsScript(url) {\r\n if (window[\"getVisualizeLibInst\"]) {\r\n const script = window[\"getVisualizeLibInst\"].script;\r\n if (script) {\r\n if (script.src === url) return Promise.resolve(script);\r\n script.remove();\r\n }\r\n delete window[\"getVisualizeLibInst\"];\r\n }\r\n return loadScript(url);\r\n}\r\n\r\nexport const loadVisualizeJs = (url: string, onprogress) => {\r\n return loadVisuazlizeJsScript(url).then((script) => {\r\n return new Promise((resolve, reject) => {\r\n const instance = window[\"getVisualizeLibInst\"]({\r\n urlMemFile: url + \".wasm\",\r\n TOTAL_MEMORY: 134217728,\r\n onprogress,\r\n });\r\n instance[\"loadWasmError\"] = reject;\r\n instance.postRun.push(() => {\r\n window[\"getVisualizeLibInst\"].script = script;\r\n resolve(instance);\r\n });\r\n });\r\n });\r\n};\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Model } from \"../../Api/Model\";\r\nimport { OptionsData } from \"../Options\";\r\nimport { Viewer } from \"../Viewer\";\r\n\r\nexport class BaseLoader {\r\n protected viewer: Viewer;\r\n protected model: Model;\r\n protected options: OptionsData;\r\n\r\n constructor(viewer: Viewer, model: Model, options: OptionsData) {\r\n this.viewer = viewer;\r\n this.model = model;\r\n this.options = options;\r\n }\r\n\r\n async load(): Promise<void> {}\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { BaseLoader } from \"./BaseLoader\";\r\n\r\nexport class TCSLoader extends BaseLoader {\r\n override async load(): Promise<void> {\r\n if (!this.viewer.visualizeJs) return;\r\n\r\n const visLib = this.viewer.visLib();\r\n const visViewer = visLib.getViewer();\r\n const abortController = new AbortController();\r\n\r\n const listFileForDownload = [this.model.database, ...this.model.geometry];\r\n const chunksProgress = listFileForDownload.map(() => 0);\r\n\r\n const calcProgress = (index, progress) => {\r\n chunksProgress[index] = progress;\r\n const fileProgress = chunksProgress.reduce((acc, progress) => (acc += progress)) / (chunksProgress.length || 1);\r\n this.viewer.emitEvent({ type: \"geometryprogress\", data: fileProgress, model: this.model });\r\n };\r\n\r\n this.viewer._abortController = abortController;\r\n\r\n try {\r\n this.viewer.emitEvent({ type: \"geometrystart\", model: this.model });\r\n\r\n for (let i = 0; i < listFileForDownload.length; i++) {\r\n const chunk = listFileForDownload[i];\r\n\r\n const progressCb = (progress) => calcProgress(i, progress);\r\n const arrayBuffer = await this.model.downloadResource(chunk, progressCb, abortController.signal);\r\n\r\n if (abortController.signal.aborted) {\r\n await Promise.reject(new Error(`Open model aborted ${this.model.name}`));\r\n }\r\n\r\n visViewer.parseStream(new Uint8Array(arrayBuffer));\r\n this.viewer.update();\r\n\r\n const data = new Uint8Array(arrayBuffer);\r\n\r\n if (i === 0) {\r\n this.viewer.update(true);\r\n\r\n this.viewer.syncOpenCloudVisualStyle(false);\r\n this.viewer.syncOptions();\r\n this.viewer.resize();\r\n\r\n this.viewer.emitEvent({ type: \"databasechunk\", data, model: this.model });\r\n } else {\r\n this.viewer.emitEvent({ type: \"geometrychunk\", data, model: this.model });\r\n }\r\n }\r\n\r\n this.viewer.emitEvent({ type: \"geometryend\", model: this.model });\r\n } catch (error) {\r\n this.viewer.emitEvent({ type: \"geometryerror\", data: error, model: this.model });\r\n throw error;\r\n }\r\n }\r\n}\r\n","import { Viewer } from \"../Viewer\";\r\n\r\nconst DELAY_TIME_MULTIPLEXER = 2.0;\r\nconst START_UPDATE_TIME = 1000;\r\n\r\nexport enum UpdateType {\r\n kDelay,\r\n kNormal,\r\n kForce,\r\n}\r\n\r\nexport class UpdaterController {\r\n private lastUpdate: number;\r\n private viewer: Viewer;\r\n public delayUpdateTime: number;\r\n\r\n constructor() {\r\n this.delayUpdateTime = START_UPDATE_TIME;\r\n }\r\n\r\n initialize(viewer: Viewer) {\r\n this.viewer = viewer;\r\n this.lastUpdate = performance.now();\r\n }\r\n\r\n update(type: UpdateType) {\r\n const isNeedUpdate = type !== UpdateType.kDelay || performance.now() - this.lastUpdate >= this.delayUpdateTime;\r\n const isForce = type === UpdateType.kForce;\r\n\r\n if (isNeedUpdate) {\r\n this.viewer.update(isForce);\r\n this.lastUpdate = performance.now();\r\n this.delayUpdateTime *= DELAY_TIME_MULTIPLEXER;\r\n }\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { BaseLoader } from \"./BaseLoader\";\r\nimport { UpdaterController, UpdateType } from \"./UpdaterController\";\r\n\r\nexport class VsfXLoader extends BaseLoader {\r\n override async load(): Promise<void> {\r\n if (!this.viewer.visualizeJs) return;\r\n\r\n const visLib = this.viewer.visLib();\r\n const visViewer = visLib.getViewer();\r\n const abortController = new AbortController();\r\n\r\n const updaterController = new UpdaterController();\r\n updaterController.initialize(this.viewer);\r\n\r\n this.viewer._abortController = abortController;\r\n\r\n let isFireDatabaseChunk = false;\r\n\r\n const chunkLoadHandler = (progress, data) => {\r\n if (!this.viewer.visualizeJs) return;\r\n\r\n const status = visViewer.parseVsfx(data);\r\n updaterController.update(UpdateType.kDelay);\r\n\r\n this.viewer.emitEvent({ type: \"geometryprogress\", data: progress, model: this.model });\r\n\r\n let state = false;\r\n if (\r\n status === visLib.DatabaseStreamStatus.ReadyServiceData ||\r\n (status === visLib.DatabaseStreamStatus.Complete && !isFireDatabaseChunk)\r\n ) {\r\n isFireDatabaseChunk = true;\r\n state = true;\r\n }\r\n\r\n if (state) {\r\n updaterController.update(UpdateType.kForce);\r\n\r\n this.viewer.syncOpenCloudVisualStyle(false);\r\n this.viewer.syncOptions();\r\n this.viewer.resize();\r\n\r\n this.viewer.emitEvent({ type: \"databasechunk\", data, model: this.model });\r\n } else {\r\n this.viewer.emitEvent({ type: \"geometrychunk\", data, model: this.model });\r\n }\r\n };\r\n\r\n console.time(\"File load time\");\r\n try {\r\n this.viewer.emitEvent({ type: \"geometrystart\", model: this.model });\r\n\r\n await this.model.partialDownloadResource(this.model.database, chunkLoadHandler, abortController.signal);\r\n console.timeEnd(\"File load time\");\r\n\r\n updaterController.update(UpdateType.kNormal);\r\n\r\n this.viewer.emitEvent({ type: \"geometryend\", model: this.model });\r\n } catch (error) {\r\n this.viewer.emitEvent({ type: \"geometryerror\", data: error, model: this.model });\r\n throw error;\r\n }\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { BaseLoader } from \"./BaseLoader\";\r\nimport { UpdaterController, UpdateType } from \"./UpdaterController\";\r\n\r\nexport class VsfXPartialLoader extends BaseLoader {\r\n override async load(): Promise<void> {\r\n if (!this.viewer.visualizeJs) return;\r\n\r\n const visLib = this.viewer.visLib();\r\n const visViewer = visLib.getViewer();\r\n const abortController = new AbortController();\r\n const abortControllerForRequestMap = new Map();\r\n let servicePartAborted = false;\r\n\r\n const pendingRequestsMap = new Map();\r\n const PENDING_REQUESTS_SIZE = 50;\r\n const PENDING_REQUESTS_TIMEOUT = 250;\r\n let pendingRequestsTimerId = 0;\r\n const pendingRequestsAbortHandler = () => clearTimeout(pendingRequestsTimerId);\r\n\r\n const pendingRequestsAbortController = new AbortController();\r\n abortControllerForRequestMap.set(0, pendingRequestsAbortController);\r\n\r\n const updaterController = new UpdaterController();\r\n updaterController.initialize(this.viewer);\r\n\r\n this.viewer._abortController = abortController;\r\n this.viewer._abortControllerForRequestMap = abortControllerForRequestMap;\r\n\r\n visViewer.memoryLimit = this.options.memoryLimit;\r\n\r\n const requestLoadHandler = (progress, data, requestId) => {\r\n if (!this.viewer.visualizeJs) return;\r\n\r\n const state = visViewer.parseVsfxInPartialMode(requestId, data);\r\n updaterController.update(UpdateType.kDelay);\r\n\r\n this.viewer.emitEvent({ type: \"geometryprogress\", data: progress, model: this.model });\r\n\r\n if (state) {\r\n updaterController.update(UpdateType.kForce);\r\n\r\n this.viewer.syncOpenCloudVisualStyle(false);\r\n this.viewer.syncOptions();\r\n this.viewer.resize();\r\n\r\n this.viewer.emitEvent({ type: \"databasechunk\", data, model: this.model });\r\n } else {\r\n this.viewer.emitEvent({ type: \"geometrychunk\", data, model: this.model });\r\n }\r\n };\r\n\r\n const downloadPartOfFile = async (requestId, records, dataId, isMultipleParts = false) => {\r\n const abortCtrl = new AbortController();\r\n abortControllerForRequestMap.set(requestId, abortCtrl);\r\n try {\r\n await this.model.downloadFileRange(requestId, records, dataId, requestLoadHandler, abortCtrl.signal);\r\n } catch (error) {\r\n this.viewer.emitEvent({ type: \"geometryerror\", data: error, model: this.model });\r\n } finally {\r\n const requests = isMultipleParts ? [...new Set(records.map((item) => item.reqId))] : [requestId];\r\n requests.forEach((requestId) => visViewer.onRequestResponseComplete(requestId));\r\n abortControllerForRequestMap.delete(requestId);\r\n updaterController.update(UpdateType.kNormal);\r\n }\r\n };\r\n\r\n const recordsToArray = (requestId, records) => {\r\n const res = [];\r\n for (let i = 0; i < records.size(); i++) {\r\n const record = records.get(i);\r\n res.push({\r\n reqId: requestId,\r\n begin: record.begin,\r\n end: record.end,\r\n size: parseInt(record.end, 10) - parseInt(record.begin, 10),\r\n });\r\n record.delete();\r\n }\r\n return res;\r\n };\r\n\r\n const objectHandler = {\r\n onServicePartReceived: (bHasIndex) => {\r\n if (bHasIndex) {\r\n servicePartAborted = true;\r\n abortController.abort();\r\n }\r\n },\r\n\r\n onRequest: (requestId, records) => {\r\n downloadPartOfFile(requestId, records, this.model.database);\r\n },\r\n\r\n onFullLoaded: () => {\r\n updaterController.update(UpdateType.kNormal);\r\n console.timeEnd(\"File load time\");\r\n },\r\n\r\n onRequestResponseParsed: (requestId) => {\r\n abortControllerForRequestMap.delete(requestId);\r\n updaterController.update(UpdateType.kNormal);\r\n },\r\n\r\n onRequestAborted: (requestId) => {\r\n const abortCtrl = abortControllerForRequestMap.get(requestId);\r\n if (abortCtrl) abortCtrl.abort();\r\n },\r\n\r\n onRequestResourceFile: async (requestId, _, records) => {\r\n const dataId = `${this.model.fileId}${this.model.file.type}`;\r\n\r\n let pendingRequests = [];\r\n let recNumber = 0;\r\n const pendingRequestsRecord = pendingRequestsMap.get(dataId);\r\n if (pendingRequestsRecord) {\r\n pendingRequests = pendingRequestsRecord.array;\r\n recNumber = pendingRequestsRecord.number;\r\n }\r\n\r\n // first several records of each file are processed without grouping (they usually require to be processed sequentially)\r\n if (recNumber < 6) {\r\n pendingRequestsMap.set(dataId, { array: pendingRequests, number: recNumber + 1 });\r\n await downloadPartOfFile(requestId, records, dataId);\r\n return;\r\n }\r\n\r\n // group requests to each file to launch a combined server request\r\n if (pendingRequests.length >= PENDING_REQUESTS_SIZE) {\r\n if (pendingRequestsTimerId) {\r\n window.clearTimeout(pendingRequestsTimerId);\r\n pendingRequestsTimerId = 0;\r\n }\r\n\r\n downloadPartOfFile(requestId, pendingRequests, dataId, true);\r\n pendingRequests = [...recordsToArray(requestId, records)];\r\n } else {\r\n pendingRequests = [...pendingRequests, ...recordsToArray(requestId, records)];\r\n }\r\n\r\n pendingRequestsMap.set(dataId, { array: pendingRequests, number: recNumber + 1 });\r\n\r\n // set timeout to wait for the new requests, after that process the remaining requests\r\n if (pendingRequestsTimerId === 0) {\r\n pendingRequestsTimerId = window.setTimeout(() => {\r\n pendingRequestsAbortController.signal.removeEventListener(\"abort\", pendingRequestsAbortHandler);\r\n pendingRequestsTimerId = 0;\r\n\r\n pendingRequestsMap.forEach((requestsRecord, keyFileName) => {\r\n const array = requestsRecord.array;\r\n if (array.length > 0) {\r\n downloadPartOfFile(requestId, array, keyFileName, true);\r\n pendingRequestsMap.set(keyFileName, { array: [], number: requestsRecord.number + 1 });\r\n }\r\n });\r\n }, PENDING_REQUESTS_TIMEOUT);\r\n\r\n pendingRequestsAbortController.signal.addEventListener(\"abort\", pendingRequestsAbortHandler, { once: true });\r\n }\r\n },\r\n };\r\n\r\n visViewer.attachPartialResolver(objectHandler);\r\n\r\n console.time(\"File load time\");\r\n try {\r\n this.viewer.emitEvent({ type: \"geometrystart\", model: this.model });\r\n\r\n await this.model\r\n .downloadFileRange(0, null, this.model.database, requestLoadHandler, abortController.signal)\r\n .catch((error) => {\r\n if (!servicePartAborted) throw error;\r\n });\r\n\r\n this.viewer.emitEvent({ type: \"geometryend\", model: this.model });\r\n } catch (error) {\r\n if (pendingRequestsTimerId) {\r\n window.clearTimeout(pendingRequestsTimerId);\r\n pendingRequestsTimerId = 0;\r\n }\r\n\r\n this.viewer.emitEvent({ type: \"geometryerror\", data: error, model: this.model });\r\n throw error;\r\n }\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { TCSLoader } from \"./TCSLoader\";\r\nimport { VsfXLoader } from \"./VsfXLoader\";\r\nimport { VsfXPartialLoader } from \"./VsfXPartialLoader\";\r\nimport { Viewer } from \"../Viewer\";\r\nimport { Model } from \"../../Api/Model\";\r\nimport { OptionsData } from \"../Options\";\r\n\r\nexport class LoaderFactory {\r\n create(viewer: Viewer, model: Model, options: OptionsData) {\r\n const geometryType = model.database.split(\".\").pop();\r\n if (model.geometry.length === 0 && geometryType === \"vsfx\") {\r\n return options.enablePartialMode\r\n ? new VsfXPartialLoader(viewer, model, options)\r\n : new VsfXLoader(viewer, model, options);\r\n }\r\n if (geometryType === \"data\") {\r\n return new TCSLoader(viewer, model, options);\r\n }\r\n throw new Error(`Unknown geometry type: ${geometryType}`);\r\n }\r\n}\r\n","import { OdBaseDragger } from \"../Draggers/Common/OdBaseDragger\";\r\nimport { Viewer } from \"../Viewer\";\r\nimport { IMarkupObject } from \"./Api/IMarkupObject\";\r\n\r\nexport enum MarkupType {\r\n Unknown,\r\n Konva = \"Konva\",\r\n Visualize = \"Visualize\",\r\n}\r\n\r\nexport enum MarkupMode {\r\n Line = \"Line\",\r\n Text = \"Text\",\r\n Rectangle = \"Rectangle\",\r\n Ellipse = \"Ellipse\",\r\n Arrow = \"Arrow\",\r\n Image = \"Image\",\r\n}\r\n\r\nexport interface IMarkup {\r\n lineWidth: number;\r\n\r\n initialize(viewer: Viewer, canvas: HTMLCanvasElement, canvasEvents: string[]): void;\r\n dispose(): void;\r\n\r\n getDraggers(): Map<string, typeof OdBaseDragger>;\r\n clearOverlay(): void;\r\n getMarkupColor(): { r: number; g: number; b: number };\r\n setMarkupColor(r: number, g: number, b: number): void;\r\n colorizeAllMarkup(r: number, g: number, b: number): void;\r\n drawViewpoint(viewpoint: any): void;\r\n createViewpoint(): object;\r\n\r\n createObject(type: string, params: any): IMarkupObject;\r\n getObjects(): IMarkupObject[];\r\n getSelectedObjects(): IMarkupObject[];\r\n selectObjects(objects: IMarkupObject[]): void;\r\n clearSelected(): void;\r\n}\r\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports._registerNode = exports.Konva = exports.glob = void 0;\nconst PI_OVER_180 = Math.PI / 180;\nfunction detectBrowser() {\n return (typeof window !== 'undefined' &&\n ({}.toString.call(window) === '[object Window]' ||\n {}.toString.call(window) === '[object global]'));\n}\nexports.glob = typeof global !== 'undefined'\n ? global\n : typeof window !== 'undefined'\n ? window\n : typeof WorkerGlobalScope !== 'undefined'\n ? self\n : {};\nexports.Konva = {\n _global: exports.glob,\n version: '9.3.1',\n isBrowser: detectBrowser(),\n isUnminified: /param/.test(function (param) { }.toString()),\n dblClickWindow: 400,\n getAngle(angle) {\n return exports.Konva.angleDeg ? angle * PI_OVER_180 : angle;\n },\n enableTrace: false,\n pointerEventsEnabled: true,\n autoDrawEnabled: true,\n hitOnDragEnabled: false,\n capturePointerEventsEnabled: false,\n _mouseListenClick: false,\n _touchListenClick: false,\n _pointerListenClick: false,\n _mouseInDblClickWindow: false,\n _touchInDblClickWindow: false,\n _pointerInDblClickWindow: false,\n _mouseDblClickPointerId: null,\n _touchDblClickPointerId: null,\n _pointerDblClickPointerId: null,\n pixelRatio: (typeof window !== 'undefined' && window.devicePixelRatio) || 1,\n dragDistance: 3,\n angleDeg: true,\n showWarnings: true,\n dragButtons: [0, 1],\n isDragging() {\n return exports.Konva['DD'].isDragging;\n },\n isDragReady() {\n return !!exports.Konva['DD'].node;\n },\n releaseCanvasOnDestroy: true,\n document: exports.glob.document,\n _injectGlobal(Konva) {\n exports.glob.Konva = Konva;\n },\n};\nconst _registerNode = (NodeClass) => {\n exports.Konva[NodeClass.prototype.getClassName()] = NodeClass;\n};\nexports._registerNode = _registerNode;\nexports.Konva._injectGlobal(exports.Konva);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Util = exports.Transform = void 0;\nconst Global_1 = require(\"./Global\");\nclass Transform {\n constructor(m = [1, 0, 0, 1, 0, 0]) {\n this.dirty = false;\n this.m = (m && m.slice()) || [1, 0, 0, 1, 0, 0];\n }\n reset() {\n this.m[0] = 1;\n this.m[1] = 0;\n this.m[2] = 0;\n this.m[3] = 1;\n this.m[4] = 0;\n this.m[5] = 0;\n }\n copy() {\n return new Transform(this.m);\n }\n copyInto(tr) {\n tr.m[0] = this.m[0];\n tr.m[1] = this.m[1];\n tr.m[2] = this.m[2];\n tr.m[3] = this.m[3];\n tr.m[4] = this.m[4];\n tr.m[5] = this.m[5];\n }\n point(point) {\n var m = this.m;\n return {\n x: m[0] * point.x + m[2] * point.y + m[4],\n y: m[1] * point.x + m[3] * point.y + m[5],\n };\n }\n translate(x, y) {\n this.m[4] += this.m[0] * x + this.m[2] * y;\n this.m[5] += this.m[1] * x + this.m[3] * y;\n return this;\n }\n scale(sx, sy) {\n this.m[0] *= sx;\n this.m[1] *= sx;\n this.m[2] *= sy;\n this.m[3] *= sy;\n return this;\n }\n rotate(rad) {\n var c = Math.cos(rad);\n var s = Math.sin(rad);\n var m11 = this.m[0] * c + this.m[2] * s;\n var m12 = this.m[1] * c + this.m[3] * s;\n var m21 = this.m[0] * -s + this.m[2] * c;\n var m22 = this.m[1] * -s + this.m[3] * c;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n getTranslation() {\n return {\n x: this.m[4],\n y: this.m[5],\n };\n }\n skew(sx, sy) {\n var m11 = this.m[0] + this.m[2] * sy;\n var m12 = this.m[1] + this.m[3] * sy;\n var m21 = this.m[2] + this.m[0] * sx;\n var m22 = this.m[3] + this.m[1] * sx;\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n return this;\n }\n multiply(matrix) {\n var m11 = this.m[0] * matrix.m[0] + this.m[2] * matrix.m[1];\n var m12 = this.m[1] * matrix.m[0] + this.m[3] * matrix.m[1];\n var m21 = this.m[0] * matrix.m[2] + this.m[2] * matrix.m[3];\n var m22 = this.m[1] * matrix.m[2] + this.m[3] * matrix.m[3];\n var dx = this.m[0] * matrix.m[4] + this.m[2] * matrix.m[5] + this.m[4];\n var dy = this.m[1] * matrix.m[4] + this.m[3] * matrix.m[5] + this.m[5];\n this.m[0] = m11;\n this.m[1] = m12;\n this.m[2] = m21;\n this.m[3] = m22;\n this.m[4] = dx;\n this.m[5] = dy;\n return this;\n }\n invert() {\n var d = 1 / (this.m[0] * this.m[3] - this.m[1] * this.m[2]);\n var m0 = this.m[3] * d;\n var m1 = -this.m[1] * d;\n var m2 = -this.m[2] * d;\n var m3 = this.m[0] * d;\n var m4 = d * (this.m[2] * this.m[5] - this.m[3] * this.m[4]);\n var m5 = d * (this.m[1] * this.m[4] - this.m[0] * this.m[5]);\n this.m[0] = m0;\n this.m[1] = m1;\n this.m[2] = m2;\n this.m[3] = m3;\n this.m[4] = m4;\n this.m[5] = m5;\n return this;\n }\n getMatrix() {\n return this.m;\n }\n decompose() {\n var a = this.m[0];\n var b = this.m[1];\n var c = this.m[2];\n var d = this.m[3];\n var e = this.m[4];\n var f = this.m[5];\n var delta = a * d - b * c;\n let result = {\n x: e,\n y: f,\n rotation: 0,\n scaleX: 0,\n scaleY: 0,\n skewX: 0,\n skewY: 0,\n };\n if (a != 0 || b != 0) {\n var r = Math.sqrt(a * a + b * b);\n result.rotation = b > 0 ? Math.acos(a / r) : -Math.acos(a / r);\n result.scaleX = r;\n result.scaleY = delta / r;\n result.skewX = (a * c + b * d) / delta;\n result.skewY = 0;\n }\n else if (c != 0 || d != 0) {\n var s = Math.sqrt(c * c + d * d);\n result.rotation =\n Math.PI / 2 - (d > 0 ? Math.acos(-c / s) : -Math.acos(c / s));\n result.scaleX = delta / s;\n result.scaleY = s;\n result.skewX = 0;\n result.skewY = (a * c + b * d) / delta;\n }\n else {\n }\n result.rotation = exports.Util._getRotation(result.rotation);\n return result;\n }\n}\nexports.Transform = Transform;\nvar OBJECT_ARRAY = '[object Array]', OBJECT_NUMBER = '[object Number]', OBJECT_STRING = '[object String]', OBJECT_BOOLEAN = '[object Boolean]', PI_OVER_DEG180 = Math.PI / 180, DEG180_OVER_PI = 180 / Math.PI, HASH = '#', EMPTY_STRING = '', ZERO = '0', KONVA_WARNING = 'Konva warning: ', KONVA_ERROR = 'Konva error: ', RGB_PAREN = 'rgb(', COLORS = {\n aliceblue: [240, 248, 255],\n antiquewhite: [250, 235, 215],\n aqua: [0, 255, 255],\n aquamarine: [127, 255, 212],\n azure: [240, 255, 255],\n beige: [245, 245, 220],\n bisque: [255, 228, 196],\n black: [0, 0, 0],\n blanchedalmond: [255, 235, 205],\n blue: [0, 0, 255],\n blueviolet: [138, 43, 226],\n brown: [165, 42, 42],\n burlywood: [222, 184, 135],\n cadetblue: [95, 158, 160],\n chartreuse: [127, 255, 0],\n chocolate: [210, 105, 30],\n coral: [255, 127, 80],\n cornflowerblue: [100, 149, 237],\n cornsilk: [255, 248, 220],\n crimson: [220, 20, 60],\n cyan: [0, 255, 255],\n darkblue: [0, 0, 139],\n darkcyan: [0, 139, 139],\n darkgoldenrod: [184, 132, 11],\n darkgray: [169, 169, 169],\n darkgreen: [0, 100, 0],\n darkgrey: [169, 169, 169],\n darkkhaki: [189, 183, 107],\n darkmagenta: [139, 0, 139],\n darkolivegreen: [85, 107, 47],\n darkorange: [255, 140, 0],\n darkorchid: [153, 50, 204],\n darkred: [139, 0, 0],\n darksalmon: [233, 150, 122],\n darkseagreen: [143, 188, 143],\n darkslateblue: [72, 61, 139],\n darkslategray: [47, 79, 79],\n darkslategrey: [47, 79, 79],\n darkturquoise: [0, 206, 209],\n darkviolet: [148, 0, 211],\n deeppink: [255, 20, 147],\n deepskyblue: [0, 191, 255],\n dimgray: [105, 105, 105],\n dimgrey: [105, 105, 105],\n dodgerblue: [30, 144, 255],\n firebrick: [178, 34, 34],\n floralwhite: [255, 255, 240],\n forestgreen: [34, 139, 34],\n fuchsia: [255, 0, 255],\n gainsboro: [220, 220, 220],\n ghostwhite: [248, 248, 255],\n gold: [255, 215, 0],\n goldenrod: [218, 165, 32],\n gray: [128, 128, 128],\n green: [0, 128, 0],\n greenyellow: [173, 255, 47],\n grey: [128, 128, 128],\n honeydew: [240, 255, 240],\n hotpink: [255, 105, 180],\n indianred: [205, 92, 92],\n indigo: [75, 0, 130],\n ivory: [255, 255, 240],\n khaki: [240, 230, 140],\n lavender: [230, 230, 250],\n lavenderblush: [255, 240, 245],\n lawngreen: [124, 252, 0],\n lemonchiffon: [255, 250, 205],\n lightblue: [173, 216, 230],\n lightcoral: [240, 128, 128],\n lightcyan: [224, 255, 255],\n lightgoldenrodyellow: [250, 250, 210],\n lightgray: [211, 211, 211],\n lightgreen: [144, 238, 144],\n lightgrey: [211, 211, 211],\n lightpink: [255, 182, 193],\n lightsalmon: [255, 160, 122],\n lightseagreen: [32, 178, 170],\n lightskyblue: [135, 206, 250],\n lightslategray: [119, 136, 153],\n lightslategrey: [119, 136, 153],\n lightsteelblue: [176, 196, 222],\n lightyellow: [255, 255, 224],\n lime: [0, 255, 0],\n limegreen: [50, 205, 50],\n linen: [250, 240, 230],\n magenta: [255, 0, 255],\n maroon: [128, 0, 0],\n mediumaquamarine: [102, 205, 170],\n mediumblue: [0, 0, 205],\n mediumorchid: [186, 85, 211],\n mediumpurple: [147, 112, 219],\n mediumseagreen: [60, 179, 113],\n mediumslateblue: [123, 104, 238],\n mediumspringgreen: [0, 250, 154],\n mediumturquoise: [72, 209, 204],\n mediumvioletred: [199, 21, 133],\n midnightblue: [25, 25, 112],\n mintcream: [245, 255, 250],\n mistyrose: [255, 228, 225],\n moccasin: [255, 228, 181],\n navajowhite: [255, 222, 173],\n navy: [0, 0, 128],\n oldlace: [253, 245, 230],\n olive: [128, 128, 0],\n olivedrab: [107, 142, 35],\n orange: [255, 165, 0],\n orangered: [255, 69, 0],\n orchid: [218, 112, 214],\n palegoldenrod: [238, 232, 170],\n palegreen: [152, 251, 152],\n paleturquoise: [175, 238, 238],\n palevioletred: [219, 112, 147],\n papayawhip: [255, 239, 213],\n peachpuff: [255, 218, 185],\n peru: [205, 133, 63],\n pink: [255, 192, 203],\n plum: [221, 160, 203],\n powderblue: [176, 224, 230],\n purple: [128, 0, 128],\n rebeccapurple: [102, 51, 153],\n red: [255, 0, 0],\n rosybrown: [188, 143, 143],\n royalblue: [65, 105, 225],\n saddlebrown: [139, 69, 19],\n salmon: [250, 128, 114],\n sandybrown: [244, 164, 96],\n seagreen: [46, 139, 87],\n seashell: [255, 245, 238],\n sienna: [160, 82, 45],\n silver: [192, 192, 192],\n skyblue: [135, 206, 235],\n slateblue: [106, 90, 205],\n slategray: [119, 128, 144],\n slategrey: [119, 128, 144],\n snow: [255, 255, 250],\n springgreen: [0, 255, 127],\n steelblue: [70, 130, 180],\n tan: [210, 180, 140],\n teal: [0, 128, 128],\n thistle: [216, 191, 216],\n transparent: [255, 255, 255, 0],\n tomato: [255, 99, 71],\n turquoise: [64, 224, 208],\n violet: [238, 130, 238],\n wheat: [245, 222, 179],\n white: [255, 255, 255],\n whitesmoke: [245, 245, 245],\n yellow: [255, 255, 0],\n yellowgreen: [154, 205, 5],\n}, RGB_REGEX = /rgb\\((\\d{1,3}),(\\d{1,3}),(\\d{1,3})\\)/, animQueue = [];\nconst req = (typeof requestAnimationFrame !== 'undefined' && requestAnimationFrame) ||\n function (f) {\n setTimeout(f, 60);\n };\nexports.Util = {\n _isElement(obj) {\n return !!(obj && obj.nodeType == 1);\n },\n _isFunction(obj) {\n return !!(obj && obj.constructor && obj.call && obj.apply);\n },\n _isPlainObject(obj) {\n return !!obj && obj.constructor === Object;\n },\n _isArray(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_ARRAY;\n },\n _isNumber(obj) {\n return (Object.prototype.toString.call(obj) === OBJECT_NUMBER &&\n !isNaN(obj) &&\n isFinite(obj));\n },\n _isString(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_STRING;\n },\n _isBoolean(obj) {\n return Object.prototype.toString.call(obj) === OBJECT_BOOLEAN;\n },\n isObject(val) {\n return val instanceof Object;\n },\n isValidSelector(selector) {\n if (typeof selector !== 'string') {\n return false;\n }\n var firstChar = selector[0];\n return (firstChar === '#' ||\n firstChar === '.' ||\n firstChar === firstChar.toUpperCase());\n },\n _sign(number) {\n if (number === 0) {\n return 1;\n }\n if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n },\n requestAnimFrame(callback) {\n animQueue.push(callback);\n if (animQueue.length === 1) {\n req(function () {\n const queue = animQueue;\n animQueue = [];\n queue.forEach(function (cb) {\n cb();\n });\n });\n }\n },\n createCanvasElement() {\n var canvas = document.createElement('canvas');\n try {\n canvas.style = canvas.style || {};\n }\n catch (e) { }\n return canvas;\n },\n createImageElement() {\n return document.createElement('img');\n },\n _isInDocument(el) {\n while ((el = el.parentNode)) {\n if (el == document) {\n return true;\n }\n }\n return false;\n },\n _urlToImage(url, callback) {\n var imageObj = exports.Util.createImageElement();\n imageObj.onload = function () {\n callback(imageObj);\n };\n imageObj.src = url;\n },\n _rgbToHex(r, g, b) {\n return ((1 << 24) + (r << 16) + (g << 8) + b).toString(16).slice(1);\n },\n _hexToRgb(hex) {\n hex = hex.replace(HASH, EMPTY_STRING);\n var bigint = parseInt(hex, 16);\n return {\n r: (bigint >> 16) & 255,\n g: (bigint >> 8) & 255,\n b: bigint & 255,\n };\n },\n getRandomColor() {\n var randColor = ((Math.random() * 0xffffff) << 0).toString(16);\n while (randColor.length < 6) {\n randColor = ZERO + randColor;\n }\n return HASH + randColor;\n },\n getRGB(color) {\n var rgb;\n if (color in COLORS) {\n rgb = COLORS[color];\n return {\n r: rgb[0],\n g: rgb[1],\n b: rgb[2],\n };\n }\n else if (color[0] === HASH) {\n return this._hexToRgb(color.substring(1));\n }\n else if (color.substr(0, 4) === RGB_PAREN) {\n rgb = RGB_REGEX.exec(color.replace(/ /g, ''));\n return {\n r: parseInt(rgb[1], 10),\n g: parseInt(rgb[2], 10),\n b: parseInt(rgb[3], 10),\n };\n }\n else {\n return {\n r: 0,\n g: 0,\n b: 0,\n };\n }\n },\n colorToRGBA(str) {\n str = str || 'black';\n return (exports.Util._namedColorToRBA(str) ||\n exports.Util._hex3ColorToRGBA(str) ||\n exports.Util._hex4ColorToRGBA(str) ||\n exports.Util._hex6ColorToRGBA(str) ||\n exports.Util._hex8ColorToRGBA(str) ||\n exports.Util._rgbColorToRGBA(str) ||\n exports.Util._rgbaColorToRGBA(str) ||\n exports.Util._hslColorToRGBA(str));\n },\n _namedColorToRBA(str) {\n var c = COLORS[str.toLowerCase()];\n if (!c) {\n return null;\n }\n return {\n r: c[0],\n g: c[1],\n b: c[2],\n a: 1,\n };\n },\n _rgbColorToRGBA(str) {\n if (str.indexOf('rgb(') === 0) {\n str = str.match(/rgb\\(([^)]+)\\)/)[1];\n var parts = str.split(/ *, */).map(Number);\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: 1,\n };\n }\n },\n _rgbaColorToRGBA(str) {\n if (str.indexOf('rgba(') === 0) {\n str = str.match(/rgba\\(([^)]+)\\)/)[1];\n var parts = str.split(/ *, */).map((n, index) => {\n if (n.slice(-1) === '%') {\n return index === 3 ? parseInt(n) / 100 : (parseInt(n) / 100) * 255;\n }\n return Number(n);\n });\n return {\n r: parts[0],\n g: parts[1],\n b: parts[2],\n a: parts[3],\n };\n }\n },\n _hex8ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 9) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: parseInt(str.slice(7, 9), 16) / 0xff,\n };\n }\n },\n _hex6ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 7) {\n return {\n r: parseInt(str.slice(1, 3), 16),\n g: parseInt(str.slice(3, 5), 16),\n b: parseInt(str.slice(5, 7), 16),\n a: 1,\n };\n }\n },\n _hex4ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 5) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: parseInt(str[4] + str[4], 16) / 0xff,\n };\n }\n },\n _hex3ColorToRGBA(str) {\n if (str[0] === '#' && str.length === 4) {\n return {\n r: parseInt(str[1] + str[1], 16),\n g: parseInt(str[2] + str[2], 16),\n b: parseInt(str[3] + str[3], 16),\n a: 1,\n };\n }\n },\n _hslColorToRGBA(str) {\n if (/hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.test(str)) {\n const [_, ...hsl] = /hsl\\((\\d+),\\s*([\\d.]+)%,\\s*([\\d.]+)%\\)/g.exec(str);\n const h = Number(hsl[0]) / 360;\n const s = Number(hsl[1]) / 100;\n const l = Number(hsl[2]) / 100;\n let t2;\n let t3;\n let val;\n if (s === 0) {\n val = l * 255;\n return {\n r: Math.round(val),\n g: Math.round(val),\n b: Math.round(val),\n a: 1,\n };\n }\n if (l < 0.5) {\n t2 = l * (1 + s);\n }\n else {\n t2 = l + s - l * s;\n }\n const t1 = 2 * l - t2;\n const rgb = [0, 0, 0];\n for (let i = 0; i < 3; i++) {\n t3 = h + (1 / 3) * -(i - 1);\n if (t3 < 0) {\n t3++;\n }\n if (t3 > 1) {\n t3--;\n }\n if (6 * t3 < 1) {\n val = t1 + (t2 - t1) * 6 * t3;\n }\n else if (2 * t3 < 1) {\n val = t2;\n }\n else if (3 * t3 < 2) {\n val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n }\n else {\n val = t1;\n }\n rgb[i] = val * 255;\n }\n return {\n r: Math.round(rgb[0]),\n g: Math.round(rgb[1]),\n b: Math.round(rgb[2]),\n a: 1,\n };\n }\n },\n haveIntersection(r1, r2) {\n return !(r2.x > r1.x + r1.width ||\n r2.x + r2.width < r1.x ||\n r2.y > r1.y + r1.height ||\n r2.y + r2.height < r1.y);\n },\n cloneObject(obj) {\n var retObj = {};\n for (var key in obj) {\n if (this._isPlainObject(obj[key])) {\n retObj[key] = this.cloneObject(obj[key]);\n }\n else if (this._isArray(obj[key])) {\n retObj[key] = this.cloneArray(obj[key]);\n }\n else {\n retObj[key] = obj[key];\n }\n }\n return retObj;\n },\n cloneArray(arr) {\n return arr.slice(0);\n },\n degToRad(deg) {\n return deg * PI_OVER_DEG180;\n },\n radToDeg(rad) {\n return rad * DEG180_OVER_PI;\n },\n _degToRad(deg) {\n exports.Util.warn('Util._degToRad is removed. Please use public Util.degToRad instead.');\n return exports.Util.degToRad(deg);\n },\n _radToDeg(rad) {\n exports.Util.warn('Util._radToDeg is removed. Please use public Util.radToDeg instead.');\n return exports.Util.radToDeg(rad);\n },\n _getRotation(radians) {\n return Global_1.Konva.angleDeg ? exports.Util.radToDeg(radians) : radians;\n },\n _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.slice(1);\n },\n throw(str) {\n throw new Error(KONVA_ERROR + str);\n },\n error(str) {\n console.error(KONVA_ERROR + str);\n },\n warn(str) {\n if (!Global_1.Konva.showWarnings) {\n return;\n }\n console.warn(KONVA_WARNING + str);\n },\n each(obj, func) {\n for (var key in obj) {\n func(key, obj[key]);\n }\n },\n _inRange(val, left, right) {\n return left <= val && val < right;\n },\n _getProjectionToSegment(x1, y1, x2, y2, x3, y3) {\n var x, y, dist;\n var pd2 = (x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2);\n if (pd2 == 0) {\n x = x1;\n y = y1;\n dist = (x3 - x2) * (x3 - x2) + (y3 - y2) * (y3 - y2);\n }\n else {\n var u = ((x3 - x1) * (x2 - x1) + (y3 - y1) * (y2 - y1)) / pd2;\n if (u < 0) {\n x = x1;\n y = y1;\n dist = (x1 - x3) * (x1 - x3) + (y1 - y3) * (y1 - y3);\n }\n else if (u > 1.0) {\n x = x2;\n y = y2;\n dist = (x2 - x3) * (x2 - x3) + (y2 - y3) * (y2 - y3);\n }\n else {\n x = x1 + u * (x2 - x1);\n y = y1 + u * (y2 - y1);\n dist = (x - x3) * (x - x3) + (y - y3) * (y - y3);\n }\n }\n return [x, y, dist];\n },\n _getProjectionToLine(pt, line, isClosed) {\n var pc = exports.Util.cloneObject(pt);\n var dist = Number.MAX_VALUE;\n line.forEach(function (p1, i) {\n if (!isClosed && i === line.length - 1) {\n return;\n }\n var p2 = line[(i + 1) % line.length];\n var proj = exports.Util._getProjectionToSegment(p1.x, p1.y, p2.x, p2.y, pt.x, pt.y);\n var px = proj[0], py = proj[1], pdist = proj[2];\n if (pdist < dist) {\n pc.x = px;\n pc.y = py;\n dist = pdist;\n }\n });\n return pc;\n },\n _prepareArrayForTween(startArray, endArray, isClosed) {\n var n, start = [], end = [];\n if (startArray.length > endArray.length) {\n var temp = endArray;\n endArray = startArray;\n startArray = temp;\n }\n for (n = 0; n < startArray.length; n += 2) {\n start.push({\n x: startArray[n],\n y: startArray[n + 1],\n });\n }\n for (n = 0; n < endArray.length; n += 2) {\n end.push({\n x: endArray[n],\n y: endArray[n + 1],\n });\n }\n var newStart = [];\n end.forEach(function (point) {\n var pr = exports.Util._getProjectionToLine(point, start, isClosed);\n newStart.push(pr.x);\n newStart.push(pr.y);\n });\n return newStart;\n },\n _prepareToStringify(obj) {\n var desc;\n obj.visitedByCircularReferenceRemoval = true;\n for (var key in obj) {\n if (!(obj.hasOwnProperty(key) && obj[key] && typeof obj[key] == 'object')) {\n continue;\n }\n desc = Object.getOwnPropertyDescriptor(obj, key);\n if (obj[key].visitedByCircularReferenceRemoval ||\n exports.Util._isElement(obj[key])) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n else if (exports.Util._prepareToStringify(obj[key]) === null) {\n if (desc.configurable) {\n delete obj[key];\n }\n else {\n return null;\n }\n }\n }\n delete obj.visitedByCircularReferenceRemoval;\n return obj;\n },\n _assign(target, source) {\n for (var key in source) {\n target[key] = source[key];\n }\n return target;\n },\n _getFirstPointerId(evt) {\n if (!evt.touches) {\n return evt.pointerId || 999;\n }\n else {\n return evt.changedTouches[0].identifier;\n }\n },\n releaseCanvas(...canvases) {\n if (!Global_1.Konva.releaseCanvasOnDestroy)\n return;\n canvases.forEach((c) => {\n c.width = 0;\n c.height = 0;\n });\n },\n drawRoundedRectPath(context, width, height, cornerRadius) {\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.moveTo(topLeft, 0);\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getComponentValidator = exports.getBooleanValidator = exports.getNumberArrayValidator = exports.getFunctionValidator = exports.getStringOrGradientValidator = exports.getStringValidator = exports.getNumberOrAutoValidator = exports.getNumberOrArrayOfNumbersValidator = exports.getNumberValidator = exports.alphaComponent = exports.RGBComponent = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nfunction _formatValue(val) {\n if (Util_1.Util._isString(val)) {\n return '\"' + val + '\"';\n }\n if (Object.prototype.toString.call(val) === '[object Number]') {\n return val;\n }\n if (Util_1.Util._isBoolean(val)) {\n return val;\n }\n return Object.prototype.toString.call(val);\n}\nfunction RGBComponent(val) {\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n return Math.round(val);\n}\nexports.RGBComponent = RGBComponent;\nfunction alphaComponent(val) {\n if (val > 1) {\n return 1;\n }\n else if (val < 0.0001) {\n return 0.0001;\n }\n return val;\n}\nexports.alphaComponent = alphaComponent;\nfunction getNumberValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isNumber(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number.');\n }\n return val;\n };\n }\n}\nexports.getNumberValidator = getNumberValidator;\nfunction getNumberOrArrayOfNumbersValidator(noOfElements) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n let isNumber = Util_1.Util._isNumber(val);\n let isValidArray = Util_1.Util._isArray(val) && val.length == noOfElements;\n if (!isNumber && !isValidArray) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or Array<number>(' +\n noOfElements +\n ')');\n }\n return val;\n };\n }\n}\nexports.getNumberOrArrayOfNumbersValidator = getNumberOrArrayOfNumbersValidator;\nfunction getNumberOrAutoValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isNumber = Util_1.Util._isNumber(val);\n var isAuto = val === 'auto';\n if (!(isNumber || isAuto)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a number or \"auto\".');\n }\n return val;\n };\n }\n}\nexports.getNumberOrAutoValidator = getNumberOrAutoValidator;\nfunction getStringValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isString(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string.');\n }\n return val;\n };\n }\n}\nexports.getStringValidator = getStringValidator;\nfunction getStringOrGradientValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const isString = Util_1.Util._isString(val);\n const isGradient = Object.prototype.toString.call(val) === '[object CanvasGradient]' ||\n (val && val.addColorStop);\n if (!(isString || isGradient)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a string or a native gradient.');\n }\n return val;\n };\n }\n}\nexports.getStringOrGradientValidator = getStringOrGradientValidator;\nfunction getFunctionValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (!Util_1.Util._isFunction(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a function.');\n }\n return val;\n };\n }\n}\nexports.getFunctionValidator = getFunctionValidator;\nfunction getNumberArrayValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n const TypedArray = Int8Array ? Object.getPrototypeOf(Int8Array) : null;\n if (TypedArray && val instanceof TypedArray) {\n return val;\n }\n if (!Util_1.Util._isArray(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a array of numbers.');\n }\n else {\n val.forEach(function (item) {\n if (!Util_1.Util._isNumber(item)) {\n Util_1.Util.warn('\"' +\n attr +\n '\" attribute has non numeric element ' +\n item +\n '. Make sure that all elements are numbers.');\n }\n });\n }\n return val;\n };\n }\n}\nexports.getNumberArrayValidator = getNumberArrayValidator;\nfunction getBooleanValidator() {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n var isBool = val === true || val === false;\n if (!isBool) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be a boolean.');\n }\n return val;\n };\n }\n}\nexports.getBooleanValidator = getBooleanValidator;\nfunction getComponentValidator(components) {\n if (Global_1.Konva.isUnminified) {\n return function (val, attr) {\n if (val === undefined || val === null) {\n return val;\n }\n if (!Util_1.Util.isObject(val)) {\n Util_1.Util.warn(_formatValue(val) +\n ' is a not valid value for \"' +\n attr +\n '\" attribute. The value should be an object with properties ' +\n components);\n }\n return val;\n };\n }\n}\nexports.getComponentValidator = getComponentValidator;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Factory = void 0;\nconst Util_1 = require(\"./Util\");\nconst Validators_1 = require(\"./Validators\");\nvar GET = 'get', SET = 'set';\nexports.Factory = {\n addGetterSetter(constructor, attr, def, validator, after) {\n exports.Factory.addGetter(constructor, attr, def);\n exports.Factory.addSetter(constructor, attr, validator, after);\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addGetter(constructor, attr, def) {\n var method = GET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] =\n constructor.prototype[method] ||\n function () {\n var val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n },\n addSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n if (!constructor.prototype[method]) {\n exports.Factory.overWriteSetter(constructor, attr, validator, after);\n }\n },\n overWriteSetter(constructor, attr, validator, after) {\n var method = SET + Util_1.Util._capitalize(attr);\n constructor.prototype[method] = function (val) {\n if (validator && val !== undefined && val !== null) {\n val = validator.call(this, val, attr);\n }\n this._setAttr(attr, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n },\n addComponentsGetterSetter(constructor, attr, components, validator, after) {\n var len = components.length, capitalize = Util_1.Util._capitalize, getter = GET + capitalize(attr), setter = SET + capitalize(attr), n, component;\n constructor.prototype[getter] = function () {\n var ret = {};\n for (n = 0; n < len; n++) {\n component = components[n];\n ret[component] = this.getAttr(attr + capitalize(component));\n }\n return ret;\n };\n var basicValidator = (0, Validators_1.getComponentValidator)(components);\n constructor.prototype[setter] = function (val) {\n var oldVal = this.attrs[attr], key;\n if (validator) {\n val = validator.call(this, val);\n }\n if (basicValidator) {\n basicValidator.call(this, val, attr);\n }\n for (key in val) {\n if (!val.hasOwnProperty(key)) {\n continue;\n }\n this._setAttr(attr + capitalize(key), val[key]);\n }\n if (!val) {\n components.forEach((component) => {\n this._setAttr(attr + capitalize(component), undefined);\n });\n }\n this._fireChangeEvent(attr, oldVal, val);\n if (after) {\n after.call(this);\n }\n return this;\n };\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n addOverloadedGetterSetter(constructor, attr) {\n var capitalizedAttr = Util_1.Util._capitalize(attr), setter = SET + capitalizedAttr, getter = GET + capitalizedAttr;\n constructor.prototype[attr] = function () {\n if (arguments.length) {\n this[setter](arguments[0]);\n return this;\n }\n return this[getter]();\n };\n },\n addDeprecatedGetterSetter(constructor, attr, def, validator) {\n Util_1.Util.error('Adding deprecated ' + attr);\n var method = GET + Util_1.Util._capitalize(attr);\n var message = attr +\n ' property is deprecated and will be removed soon. Look at Konva change log for more information.';\n constructor.prototype[method] = function () {\n Util_1.Util.error(message);\n var val = this.attrs[attr];\n return val === undefined ? def : val;\n };\n exports.Factory.addSetter(constructor, attr, validator, function () {\n Util_1.Util.error(message);\n });\n exports.Factory.addOverloadedGetterSetter(constructor, attr);\n },\n backCompat(constructor, methods) {\n Util_1.Util.each(methods, function (oldMethodName, newMethodName) {\n var method = constructor.prototype[newMethodName];\n var oldGetter = GET + Util_1.Util._capitalize(oldMethodName);\n var oldSetter = SET + Util_1.Util._capitalize(oldMethodName);\n function deprecated() {\n method.apply(this, arguments);\n Util_1.Util.error('\"' +\n oldMethodName +\n '\" method is deprecated and will be removed soon. Use \"\"' +\n newMethodName +\n '\" instead.');\n }\n constructor.prototype[oldMethodName] = deprecated;\n constructor.prototype[oldGetter] = deprecated;\n constructor.prototype[oldSetter] = deprecated;\n });\n },\n afterSetFilter() {\n this._filterUpToDate = false;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitContext = exports.SceneContext = exports.Context = void 0;\nconst Util_1 = require(\"./Util\");\nconst Global_1 = require(\"./Global\");\nfunction simplifyArray(arr) {\n var retArr = [], len = arr.length, util = Util_1.Util, n, val;\n for (n = 0; n < len; n++) {\n val = arr[n];\n if (util._isNumber(val)) {\n val = Math.round(val * 1000) / 1000;\n }\n else if (!util._isString(val)) {\n val = val + '';\n }\n retArr.push(val);\n }\n return retArr;\n}\nvar COMMA = ',', OPEN_PAREN = '(', CLOSE_PAREN = ')', OPEN_PAREN_BRACKET = '([', CLOSE_BRACKET_PAREN = '])', SEMICOLON = ';', DOUBLE_PAREN = '()', EQUALS = '=', CONTEXT_METHODS = [\n 'arc',\n 'arcTo',\n 'beginPath',\n 'bezierCurveTo',\n 'clearRect',\n 'clip',\n 'closePath',\n 'createLinearGradient',\n 'createPattern',\n 'createRadialGradient',\n 'drawImage',\n 'ellipse',\n 'fill',\n 'fillText',\n 'getImageData',\n 'createImageData',\n 'lineTo',\n 'moveTo',\n 'putImageData',\n 'quadraticCurveTo',\n 'rect',\n 'roundRect',\n 'restore',\n 'rotate',\n 'save',\n 'scale',\n 'setLineDash',\n 'setTransform',\n 'stroke',\n 'strokeText',\n 'transform',\n 'translate',\n];\nvar CONTEXT_PROPERTIES = [\n 'fillStyle',\n 'strokeStyle',\n 'shadowColor',\n 'shadowBlur',\n 'shadowOffsetX',\n 'shadowOffsetY',\n 'letterSpacing',\n 'lineCap',\n 'lineDashOffset',\n 'lineJoin',\n 'lineWidth',\n 'miterLimit',\n 'direction',\n 'font',\n 'textAlign',\n 'textBaseline',\n 'globalAlpha',\n 'globalCompositeOperation',\n 'imageSmoothingEnabled',\n];\nconst traceArrMax = 100;\nclass Context {\n constructor(canvas) {\n this.canvas = canvas;\n if (Global_1.Konva.enableTrace) {\n this.traceArr = [];\n this._enableTrace();\n }\n }\n fillShape(shape) {\n if (shape.fillEnabled()) {\n this._fill(shape);\n }\n }\n _fill(shape) {\n }\n strokeShape(shape) {\n if (shape.hasStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n }\n fillStrokeShape(shape) {\n if (shape.attrs.fillAfterStrokeEnabled) {\n this.strokeShape(shape);\n this.fillShape(shape);\n }\n else {\n this.fillShape(shape);\n this.strokeShape(shape);\n }\n }\n getTrace(relaxed, rounded) {\n var traceArr = this.traceArr, len = traceArr.length, str = '', n, trace, method, args;\n for (n = 0; n < len; n++) {\n trace = traceArr[n];\n method = trace.method;\n if (method) {\n args = trace.args;\n str += method;\n if (relaxed) {\n str += DOUBLE_PAREN;\n }\n else {\n if (Util_1.Util._isArray(args[0])) {\n str += OPEN_PAREN_BRACKET + args.join(COMMA) + CLOSE_BRACKET_PAREN;\n }\n else {\n if (rounded) {\n args = args.map((a) => typeof a === 'number' ? Math.floor(a) : a);\n }\n str += OPEN_PAREN + args.join(COMMA) + CLOSE_PAREN;\n }\n }\n }\n else {\n str += trace.property;\n if (!relaxed) {\n str += EQUALS + trace.val;\n }\n }\n str += SEMICOLON;\n }\n return str;\n }\n clearTrace() {\n this.traceArr = [];\n }\n _trace(str) {\n var traceArr = this.traceArr, len;\n traceArr.push(str);\n len = traceArr.length;\n if (len >= traceArrMax) {\n traceArr.shift();\n }\n }\n reset() {\n var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(1 * pixelRatio, 0, 0, 1 * pixelRatio, 0, 0);\n }\n getCanvas() {\n return this.canvas;\n }\n clear(bounds) {\n var canvas = this.getCanvas();\n if (bounds) {\n this.clearRect(bounds.x || 0, bounds.y || 0, bounds.width || 0, bounds.height || 0);\n }\n else {\n this.clearRect(0, 0, canvas.getWidth() / canvas.pixelRatio, canvas.getHeight() / canvas.pixelRatio);\n }\n }\n _applyLineCap(shape) {\n const lineCap = shape.attrs.lineCap;\n if (lineCap) {\n this.setAttr('lineCap', lineCap);\n }\n }\n _applyOpacity(shape) {\n var absOpacity = shape.getAbsoluteOpacity();\n if (absOpacity !== 1) {\n this.setAttr('globalAlpha', absOpacity);\n }\n }\n _applyLineJoin(shape) {\n const lineJoin = shape.attrs.lineJoin;\n if (lineJoin) {\n this.setAttr('lineJoin', lineJoin);\n }\n }\n setAttr(attr, val) {\n this._context[attr] = val;\n }\n arc(x, y, radius, startAngle, endAngle, counterClockwise) {\n this._context.arc(x, y, radius, startAngle, endAngle, counterClockwise);\n }\n arcTo(x1, y1, x2, y2, radius) {\n this._context.arcTo(x1, y1, x2, y2, radius);\n }\n beginPath() {\n this._context.beginPath();\n }\n bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y) {\n this._context.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n }\n clearRect(x, y, width, height) {\n this._context.clearRect(x, y, width, height);\n }\n clip(...args) {\n this._context.clip.apply(this._context, args);\n }\n closePath() {\n this._context.closePath();\n }\n createImageData(width, height) {\n var a = arguments;\n if (a.length === 2) {\n return this._context.createImageData(width, height);\n }\n else if (a.length === 1) {\n return this._context.createImageData(width);\n }\n }\n createLinearGradient(x0, y0, x1, y1) {\n return this._context.createLinearGradient(x0, y0, x1, y1);\n }\n createPattern(image, repetition) {\n return this._context.createPattern(image, repetition);\n }\n createRadialGradient(x0, y0, r0, x1, y1, r1) {\n return this._context.createRadialGradient(x0, y0, r0, x1, y1, r1);\n }\n drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight) {\n var a = arguments, _context = this._context;\n if (a.length === 3) {\n _context.drawImage(image, sx, sy);\n }\n else if (a.length === 5) {\n _context.drawImage(image, sx, sy, sWidth, sHeight);\n }\n else if (a.length === 9) {\n _context.drawImage(image, sx, sy, sWidth, sHeight, dx, dy, dWidth, dHeight);\n }\n }\n ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise) {\n this._context.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterclockwise);\n }\n isPointInPath(x, y, path, fillRule) {\n if (path) {\n return this._context.isPointInPath(path, x, y, fillRule);\n }\n return this._context.isPointInPath(x, y, fillRule);\n }\n fill(...args) {\n this._context.fill.apply(this._context, args);\n }\n fillRect(x, y, width, height) {\n this._context.fillRect(x, y, width, height);\n }\n strokeRect(x, y, width, height) {\n this._context.strokeRect(x, y, width, height);\n }\n fillText(text, x, y, maxWidth) {\n if (maxWidth) {\n this._context.fillText(text, x, y, maxWidth);\n }\n else {\n this._context.fillText(text, x, y);\n }\n }\n measureText(text) {\n return this._context.measureText(text);\n }\n getImageData(sx, sy, sw, sh) {\n return this._context.getImageData(sx, sy, sw, sh);\n }\n lineTo(x, y) {\n this._context.lineTo(x, y);\n }\n moveTo(x, y) {\n this._context.moveTo(x, y);\n }\n rect(x, y, width, height) {\n this._context.rect(x, y, width, height);\n }\n roundRect(x, y, width, height, radii) {\n this._context.roundRect(x, y, width, height, radii);\n }\n putImageData(imageData, dx, dy) {\n this._context.putImageData(imageData, dx, dy);\n }\n quadraticCurveTo(cpx, cpy, x, y) {\n this._context.quadraticCurveTo(cpx, cpy, x, y);\n }\n restore() {\n this._context.restore();\n }\n rotate(angle) {\n this._context.rotate(angle);\n }\n save() {\n this._context.save();\n }\n scale(x, y) {\n this._context.scale(x, y);\n }\n setLineDash(segments) {\n if (this._context.setLineDash) {\n this._context.setLineDash(segments);\n }\n else if ('mozDash' in this._context) {\n this._context['mozDash'] = segments;\n }\n else if ('webkitLineDash' in this._context) {\n this._context['webkitLineDash'] = segments;\n }\n }\n getLineDash() {\n return this._context.getLineDash();\n }\n setTransform(a, b, c, d, e, f) {\n this._context.setTransform(a, b, c, d, e, f);\n }\n stroke(path2d) {\n if (path2d) {\n this._context.stroke(path2d);\n }\n else {\n this._context.stroke();\n }\n }\n strokeText(text, x, y, maxWidth) {\n this._context.strokeText(text, x, y, maxWidth);\n }\n transform(a, b, c, d, e, f) {\n this._context.transform(a, b, c, d, e, f);\n }\n translate(x, y) {\n this._context.translate(x, y);\n }\n _enableTrace() {\n var that = this, len = CONTEXT_METHODS.length, origSetter = this.setAttr, n, args;\n var func = function (methodName) {\n var origMethod = that[methodName], ret;\n that[methodName] = function () {\n args = simplifyArray(Array.prototype.slice.call(arguments, 0));\n ret = origMethod.apply(that, arguments);\n that._trace({\n method: methodName,\n args: args,\n });\n return ret;\n };\n };\n for (n = 0; n < len; n++) {\n func(CONTEXT_METHODS[n]);\n }\n that.setAttr = function () {\n origSetter.apply(that, arguments);\n var prop = arguments[0];\n var val = arguments[1];\n if (prop === 'shadowOffsetX' ||\n prop === 'shadowOffsetY' ||\n prop === 'shadowBlur') {\n val = val / this.canvas.getPixelRatio();\n }\n that._trace({\n property: prop,\n val: val,\n });\n };\n }\n _applyGlobalCompositeOperation(node) {\n const op = node.attrs.globalCompositeOperation;\n var def = !op || op === 'source-over';\n if (!def) {\n this.setAttr('globalCompositeOperation', op);\n }\n }\n}\nexports.Context = Context;\nCONTEXT_PROPERTIES.forEach(function (prop) {\n Object.defineProperty(Context.prototype, prop, {\n get() {\n return this._context[prop];\n },\n set(val) {\n this._context[prop] = val;\n },\n });\n});\nclass SceneContext extends Context {\n constructor(canvas, { willReadFrequently = false } = {}) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently,\n });\n }\n _fillColor(shape) {\n var fill = shape.fill();\n this.setAttr('fillStyle', fill);\n shape._fillFunc(this);\n }\n _fillPattern(shape) {\n this.setAttr('fillStyle', shape._getFillPattern());\n shape._fillFunc(this);\n }\n _fillLinearGradient(shape) {\n var grd = shape._getLinearGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fillRadialGradient(shape) {\n const grd = shape._getRadialGradient();\n if (grd) {\n this.setAttr('fillStyle', grd);\n shape._fillFunc(this);\n }\n }\n _fill(shape) {\n const hasColor = shape.fill(), fillPriority = shape.getFillPriority();\n if (hasColor && fillPriority === 'color') {\n this._fillColor(shape);\n return;\n }\n const hasPattern = shape.getFillPatternImage();\n if (hasPattern && fillPriority === 'pattern') {\n this._fillPattern(shape);\n return;\n }\n const hasLinearGradient = shape.getFillLinearGradientColorStops();\n if (hasLinearGradient && fillPriority === 'linear-gradient') {\n this._fillLinearGradient(shape);\n return;\n }\n const hasRadialGradient = shape.getFillRadialGradientColorStops();\n if (hasRadialGradient && fillPriority === 'radial-gradient') {\n this._fillRadialGradient(shape);\n return;\n }\n if (hasColor) {\n this._fillColor(shape);\n }\n else if (hasPattern) {\n this._fillPattern(shape);\n }\n else if (hasLinearGradient) {\n this._fillLinearGradient(shape);\n }\n else if (hasRadialGradient) {\n this._fillRadialGradient(shape);\n }\n }\n _strokeLinearGradient(shape) {\n const start = shape.getStrokeLinearGradientStartPoint(), end = shape.getStrokeLinearGradientEndPoint(), colorStops = shape.getStrokeLinearGradientColorStops(), grd = this.createLinearGradient(start.x, start.y, end.x, end.y);\n if (colorStops) {\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n this.setAttr('strokeStyle', grd);\n }\n }\n _stroke(shape) {\n var dash = shape.dash(), strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (shape.hasStroke()) {\n if (!strokeScaleEnabled) {\n this.save();\n var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n if (dash && shape.dashEnabled()) {\n this.setLineDash(dash);\n this.setAttr('lineDashOffset', shape.dashOffset());\n }\n this.setAttr('lineWidth', shape.strokeWidth());\n if (!shape.getShadowForStrokeEnabled()) {\n this.setAttr('shadowColor', 'rgba(0,0,0,0)');\n }\n var hasLinearGradient = shape.getStrokeLinearGradientColorStops();\n if (hasLinearGradient) {\n this._strokeLinearGradient(shape);\n }\n else {\n this.setAttr('strokeStyle', shape.stroke());\n }\n shape._strokeFunc(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n _applyShadow(shape) {\n var _a, _b, _c;\n var color = (_a = shape.getShadowRGBA()) !== null && _a !== void 0 ? _a : 'black', blur = (_b = shape.getShadowBlur()) !== null && _b !== void 0 ? _b : 5, offset = (_c = shape.getShadowOffset()) !== null && _c !== void 0 ? _c : {\n x: 0,\n y: 0,\n }, scale = shape.getAbsoluteScale(), ratio = this.canvas.getPixelRatio(), scaleX = scale.x * ratio, scaleY = scale.y * ratio;\n this.setAttr('shadowColor', color);\n this.setAttr('shadowBlur', blur * Math.min(Math.abs(scaleX), Math.abs(scaleY)));\n this.setAttr('shadowOffsetX', offset.x * scaleX);\n this.setAttr('shadowOffsetY', offset.y * scaleY);\n }\n}\nexports.SceneContext = SceneContext;\nclass HitContext extends Context {\n constructor(canvas) {\n super(canvas);\n this._context = canvas._canvas.getContext('2d', {\n willReadFrequently: true,\n });\n }\n _fill(shape) {\n this.save();\n this.setAttr('fillStyle', shape.colorKey);\n shape._fillFuncHit(this);\n this.restore();\n }\n strokeShape(shape) {\n if (shape.hasHitStroke()) {\n this._stroke(shape);\n }\n }\n _stroke(shape) {\n if (shape.hasHitStroke()) {\n const strokeScaleEnabled = shape.getStrokeScaleEnabled();\n if (!strokeScaleEnabled) {\n this.save();\n var pixelRatio = this.getCanvas().getPixelRatio();\n this.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);\n }\n this._applyLineCap(shape);\n var hitStrokeWidth = shape.hitStrokeWidth();\n var strokeWidth = hitStrokeWidth === 'auto' ? shape.strokeWidth() : hitStrokeWidth;\n this.setAttr('lineWidth', strokeWidth);\n this.setAttr('strokeStyle', shape.colorKey);\n shape._strokeFuncHit(this);\n if (!strokeScaleEnabled) {\n this.restore();\n }\n }\n }\n}\nexports.HitContext = HitContext;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HitCanvas = exports.SceneCanvas = exports.Canvas = void 0;\nconst Util_1 = require(\"./Util\");\nconst Context_1 = require(\"./Context\");\nconst Global_1 = require(\"./Global\");\nconst Factory_1 = require(\"./Factory\");\nconst Validators_1 = require(\"./Validators\");\nvar _pixelRatio;\nfunction getDevicePixelRatio() {\n if (_pixelRatio) {\n return _pixelRatio;\n }\n var canvas = Util_1.Util.createCanvasElement();\n var context = canvas.getContext('2d');\n _pixelRatio = (function () {\n var devicePixelRatio = Global_1.Konva._global.devicePixelRatio || 1, backingStoreRatio = context.webkitBackingStorePixelRatio ||\n context.mozBackingStorePixelRatio ||\n context.msBackingStorePixelRatio ||\n context.oBackingStorePixelRatio ||\n context.backingStorePixelRatio ||\n 1;\n return devicePixelRatio / backingStoreRatio;\n })();\n Util_1.Util.releaseCanvas(canvas);\n return _pixelRatio;\n}\nclass Canvas {\n constructor(config) {\n this.pixelRatio = 1;\n this.width = 0;\n this.height = 0;\n this.isCache = false;\n var conf = config || {};\n var pixelRatio = conf.pixelRatio || Global_1.Konva.pixelRatio || getDevicePixelRatio();\n this.pixelRatio = pixelRatio;\n this._canvas = Util_1.Util.createCanvasElement();\n this._canvas.style.padding = '0';\n this._canvas.style.margin = '0';\n this._canvas.style.border = '0';\n this._canvas.style.background = 'transparent';\n this._canvas.style.position = 'absolute';\n this._canvas.style.top = '0';\n this._canvas.style.left = '0';\n }\n getContext() {\n return this.context;\n }\n getPixelRatio() {\n return this.pixelRatio;\n }\n setPixelRatio(pixelRatio) {\n var previousRatio = this.pixelRatio;\n this.pixelRatio = pixelRatio;\n this.setSize(this.getWidth() / previousRatio, this.getHeight() / previousRatio);\n }\n setWidth(width) {\n this.width = this._canvas.width = width * this.pixelRatio;\n this._canvas.style.width = width + 'px';\n var pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n setHeight(height) {\n this.height = this._canvas.height = height * this.pixelRatio;\n this._canvas.style.height = height + 'px';\n var pixelRatio = this.pixelRatio, _context = this.getContext()._context;\n _context.scale(pixelRatio, pixelRatio);\n }\n getWidth() {\n return this.width;\n }\n getHeight() {\n return this.height;\n }\n setSize(width, height) {\n this.setWidth(width || 0);\n this.setHeight(height || 0);\n }\n toDataURL(mimeType, quality) {\n try {\n return this._canvas.toDataURL(mimeType, quality);\n }\n catch (e) {\n try {\n return this._canvas.toDataURL();\n }\n catch (err) {\n Util_1.Util.error('Unable to get data URL. ' +\n err.message +\n ' For more info read https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n return '';\n }\n }\n }\n}\nexports.Canvas = Canvas;\nFactory_1.Factory.addGetterSetter(Canvas, 'pixelRatio', undefined, (0, Validators_1.getNumberValidator)());\nclass SceneCanvas extends Canvas {\n constructor(config = { width: 0, height: 0, willReadFrequently: false }) {\n super(config);\n this.context = new Context_1.SceneContext(this, {\n willReadFrequently: config.willReadFrequently,\n });\n this.setSize(config.width, config.height);\n }\n}\nexports.SceneCanvas = SceneCanvas;\nclass HitCanvas extends Canvas {\n constructor(config = { width: 0, height: 0 }) {\n super(config);\n this.hitCanvas = true;\n this.context = new Context_1.HitContext(this);\n this.setSize(config.width, config.height);\n }\n}\nexports.HitCanvas = HitCanvas;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DD = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nexports.DD = {\n get isDragging() {\n var flag = false;\n exports.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus === 'dragging') {\n flag = true;\n }\n });\n return flag;\n },\n justDragged: false,\n get node() {\n var node;\n exports.DD._dragElements.forEach((elem) => {\n node = elem.node;\n });\n return node;\n },\n _dragElements: new Map(),\n _drag(evt) {\n const nodesToFireEvents = [];\n exports.DD._dragElements.forEach((elem, key) => {\n const { node } = elem;\n const stage = node.getStage();\n stage.setPointersPositions(evt);\n if (elem.pointerId === undefined) {\n elem.pointerId = Util_1.Util._getFirstPointerId(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus !== 'dragging') {\n var dragDistance = node.dragDistance();\n var distance = Math.max(Math.abs(pos.x - elem.startPointerPos.x), Math.abs(pos.y - elem.startPointerPos.y));\n if (distance < dragDistance) {\n return;\n }\n node.startDrag({ evt });\n if (!node.isDragging()) {\n return;\n }\n }\n node._setDragPosition(evt, elem);\n nodesToFireEvents.push(node);\n });\n nodesToFireEvents.forEach((node) => {\n node.fire('dragmove', {\n type: 'dragmove',\n target: node,\n evt: evt,\n }, true);\n });\n },\n _endDragBefore(evt) {\n const drawNodes = [];\n exports.DD._dragElements.forEach((elem) => {\n const { node } = elem;\n const stage = node.getStage();\n if (evt) {\n stage.setPointersPositions(evt);\n }\n const pos = stage._changedPointerPositions.find((pos) => pos.id === elem.pointerId);\n if (!pos) {\n return;\n }\n if (elem.dragStatus === 'dragging' || elem.dragStatus === 'stopped') {\n exports.DD.justDragged = true;\n Global_1.Konva._mouseListenClick = false;\n Global_1.Konva._touchListenClick = false;\n Global_1.Konva._pointerListenClick = false;\n elem.dragStatus = 'stopped';\n }\n const drawNode = elem.node.getLayer() ||\n (elem.node instanceof Global_1.Konva['Stage'] && elem.node);\n if (drawNode && drawNodes.indexOf(drawNode) === -1) {\n drawNodes.push(drawNode);\n }\n });\n drawNodes.forEach((drawNode) => {\n drawNode.draw();\n });\n },\n _endDragAfter(evt) {\n exports.DD._dragElements.forEach((elem, key) => {\n if (elem.dragStatus === 'stopped') {\n elem.node.fire('dragend', {\n type: 'dragend',\n target: elem.node,\n evt: evt,\n }, true);\n }\n if (elem.dragStatus !== 'dragging') {\n exports.DD._dragElements.delete(key);\n }\n });\n },\n};\nif (Global_1.Konva.isBrowser) {\n window.addEventListener('mouseup', exports.DD._endDragBefore, true);\n window.addEventListener('touchend', exports.DD._endDragBefore, true);\n window.addEventListener('mousemove', exports.DD._drag);\n window.addEventListener('touchmove', exports.DD._drag);\n window.addEventListener('mouseup', exports.DD._endDragAfter, false);\n window.addEventListener('touchend', exports.DD._endDragAfter, false);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Node = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Global_1 = require(\"./Global\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Validators_1 = require(\"./Validators\");\nvar ABSOLUTE_OPACITY = 'absoluteOpacity', ALL_LISTENERS = 'allEventListeners', ABSOLUTE_TRANSFORM = 'absoluteTransform', ABSOLUTE_SCALE = 'absoluteScale', CANVAS = 'canvas', CHANGE = 'Change', CHILDREN = 'children', KONVA = 'konva', LISTENING = 'listening', MOUSEENTER = 'mouseenter', MOUSELEAVE = 'mouseleave', NAME = 'name', SET = 'set', SHAPE = 'Shape', SPACE = ' ', STAGE = 'stage', TRANSFORM = 'transform', UPPER_STAGE = 'Stage', VISIBLE = 'visible', TRANSFORM_CHANGE_STR = [\n 'xChange.konva',\n 'yChange.konva',\n 'scaleXChange.konva',\n 'scaleYChange.konva',\n 'skewXChange.konva',\n 'skewYChange.konva',\n 'rotationChange.konva',\n 'offsetXChange.konva',\n 'offsetYChange.konva',\n 'transformsEnabledChange.konva',\n].join(SPACE);\nlet idCounter = 1;\nclass Node {\n constructor(config) {\n this._id = idCounter++;\n this.eventListeners = {};\n this.attrs = {};\n this.index = 0;\n this._allEventListeners = null;\n this.parent = null;\n this._cache = new Map();\n this._attachedDepsListeners = new Map();\n this._lastPos = null;\n this._batchingTransformChange = false;\n this._needClearTransformCache = false;\n this._filterUpToDate = false;\n this._isUnderCache = false;\n this._dragEventId = null;\n this._shouldFireChangeEvents = false;\n this.setAttrs(config);\n this._shouldFireChangeEvents = true;\n }\n hasChildren() {\n return false;\n }\n _clearCache(attr) {\n if ((attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM) &&\n this._cache.get(attr)) {\n this._cache.get(attr).dirty = true;\n }\n else if (attr) {\n this._cache.delete(attr);\n }\n else {\n this._cache.clear();\n }\n }\n _getCache(attr, privateGetter) {\n var cache = this._cache.get(attr);\n var isTransform = attr === TRANSFORM || attr === ABSOLUTE_TRANSFORM;\n var invalid = cache === undefined || (isTransform && cache.dirty === true);\n if (invalid) {\n cache = privateGetter.call(this);\n this._cache.set(attr, cache);\n }\n return cache;\n }\n _calculate(name, deps, getter) {\n if (!this._attachedDepsListeners.get(name)) {\n const depsString = deps.map((dep) => dep + 'Change.konva').join(SPACE);\n this.on(depsString, () => {\n this._clearCache(name);\n });\n this._attachedDepsListeners.set(name, true);\n }\n return this._getCache(name, getter);\n }\n _getCanvasCache() {\n return this._cache.get(CANVAS);\n }\n _clearSelfAndDescendantCache(attr) {\n this._clearCache(attr);\n if (attr === ABSOLUTE_TRANSFORM) {\n this.fire('absoluteTransformChange');\n }\n }\n clearCache() {\n if (this._cache.has(CANVAS)) {\n const { scene, filter, hit } = this._cache.get(CANVAS);\n Util_1.Util.releaseCanvas(scene, filter, hit);\n this._cache.delete(CANVAS);\n }\n this._clearSelfAndDescendantCache();\n this._requestDraw();\n return this;\n }\n cache(config) {\n var conf = config || {};\n var rect = {};\n if (conf.x === undefined ||\n conf.y === undefined ||\n conf.width === undefined ||\n conf.height === undefined) {\n rect = this.getClientRect({\n skipTransform: true,\n relativeTo: this.getParent() || undefined,\n });\n }\n var width = Math.ceil(conf.width || rect.width), height = Math.ceil(conf.height || rect.height), pixelRatio = conf.pixelRatio, x = conf.x === undefined ? Math.floor(rect.x) : conf.x, y = conf.y === undefined ? Math.floor(rect.y) : conf.y, offset = conf.offset || 0, drawBorder = conf.drawBorder || false, hitCanvasPixelRatio = conf.hitCanvasPixelRatio || 1;\n if (!width || !height) {\n Util_1.Util.error('Can not cache the node. Width or height of the node equals 0. Caching is skipped.');\n return;\n }\n const extraPaddingX = Math.abs(Math.round(rect.x) - x) > 0.5 ? 1 : 0;\n const extraPaddingY = Math.abs(Math.round(rect.y) - y) > 0.5 ? 1 : 0;\n width += offset * 2 + extraPaddingX;\n height += offset * 2 + extraPaddingY;\n x -= offset;\n y -= offset;\n var cachedSceneCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: width,\n height: height,\n }), cachedFilterCanvas = new Canvas_1.SceneCanvas({\n pixelRatio: pixelRatio,\n width: 0,\n height: 0,\n willReadFrequently: true,\n }), cachedHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: hitCanvasPixelRatio,\n width: width,\n height: height,\n }), sceneContext = cachedSceneCanvas.getContext(), hitContext = cachedHitCanvas.getContext();\n cachedHitCanvas.isCache = true;\n cachedSceneCanvas.isCache = true;\n this._cache.delete(CANVAS);\n this._filterUpToDate = false;\n if (conf.imageSmoothingEnabled === false) {\n cachedSceneCanvas.getContext()._context.imageSmoothingEnabled = false;\n cachedFilterCanvas.getContext()._context.imageSmoothingEnabled = false;\n }\n sceneContext.save();\n hitContext.save();\n sceneContext.translate(-x, -y);\n hitContext.translate(-x, -y);\n this._isUnderCache = true;\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this.drawScene(cachedSceneCanvas, this);\n this.drawHit(cachedHitCanvas, this);\n this._isUnderCache = false;\n sceneContext.restore();\n hitContext.restore();\n if (drawBorder) {\n sceneContext.save();\n sceneContext.beginPath();\n sceneContext.rect(0, 0, width, height);\n sceneContext.closePath();\n sceneContext.setAttr('strokeStyle', 'red');\n sceneContext.setAttr('lineWidth', 5);\n sceneContext.stroke();\n sceneContext.restore();\n }\n this._cache.set(CANVAS, {\n scene: cachedSceneCanvas,\n filter: cachedFilterCanvas,\n hit: cachedHitCanvas,\n x: x,\n y: y,\n });\n this._requestDraw();\n return this;\n }\n isCached() {\n return this._cache.has(CANVAS);\n }\n getClientRect(config) {\n throw new Error('abstract \"getClientRect\" method call');\n }\n _transformedRect(rect, top) {\n var points = [\n { x: rect.x, y: rect.y },\n { x: rect.x + rect.width, y: rect.y },\n { x: rect.x + rect.width, y: rect.y + rect.height },\n { x: rect.x, y: rect.y + rect.height },\n ];\n var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n var trans = this.getAbsoluteTransform(top);\n points.forEach(function (point) {\n var transformed = trans.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n _drawCachedSceneCanvas(context) {\n context.save();\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n const canvasCache = this._getCanvasCache();\n context.translate(canvasCache.x, canvasCache.y);\n var cacheCanvas = this._getCachedSceneCanvas();\n var ratio = cacheCanvas.pixelRatio;\n context.drawImage(cacheCanvas._canvas, 0, 0, cacheCanvas.width / ratio, cacheCanvas.height / ratio);\n context.restore();\n }\n _drawCachedHitCanvas(context) {\n var canvasCache = this._getCanvasCache(), hitCanvas = canvasCache.hit;\n context.save();\n context.translate(canvasCache.x, canvasCache.y);\n context.drawImage(hitCanvas._canvas, 0, 0, hitCanvas.width / hitCanvas.pixelRatio, hitCanvas.height / hitCanvas.pixelRatio);\n context.restore();\n }\n _getCachedSceneCanvas() {\n var filters = this.filters(), cachedCanvas = this._getCanvasCache(), sceneCanvas = cachedCanvas.scene, filterCanvas = cachedCanvas.filter, filterContext = filterCanvas.getContext(), len, imageData, n, filter;\n if (filters) {\n if (!this._filterUpToDate) {\n var ratio = sceneCanvas.pixelRatio;\n filterCanvas.setSize(sceneCanvas.width / sceneCanvas.pixelRatio, sceneCanvas.height / sceneCanvas.pixelRatio);\n try {\n len = filters.length;\n filterContext.clear();\n filterContext.drawImage(sceneCanvas._canvas, 0, 0, sceneCanvas.getWidth() / ratio, sceneCanvas.getHeight() / ratio);\n imageData = filterContext.getImageData(0, 0, filterCanvas.getWidth(), filterCanvas.getHeight());\n for (n = 0; n < len; n++) {\n filter = filters[n];\n if (typeof filter !== 'function') {\n Util_1.Util.error('Filter should be type of function, but got ' +\n typeof filter +\n ' instead. Please check correct filters');\n continue;\n }\n filter.call(this, imageData);\n filterContext.putImageData(imageData, 0, 0);\n }\n }\n catch (e) {\n Util_1.Util.error('Unable to apply filter. ' +\n e.message +\n ' This post my help you https://konvajs.org/docs/posts/Tainted_Canvas.html.');\n }\n this._filterUpToDate = true;\n }\n return filterCanvas;\n }\n return sceneCanvas;\n }\n on(evtStr, handler) {\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (arguments.length === 3) {\n return this._delegate.apply(this, arguments);\n }\n var events = evtStr.split(SPACE), len = events.length, n, event, parts, baseEvent, name;\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1] || '';\n if (!this.eventListeners[baseEvent]) {\n this.eventListeners[baseEvent] = [];\n }\n this.eventListeners[baseEvent].push({\n name: name,\n handler: handler,\n });\n }\n return this;\n }\n off(evtStr, callback) {\n var events = (evtStr || '').split(SPACE), len = events.length, n, t, event, parts, baseEvent, name;\n this._cache && this._cache.delete(ALL_LISTENERS);\n if (!evtStr) {\n for (t in this.eventListeners) {\n this._off(t);\n }\n }\n for (n = 0; n < len; n++) {\n event = events[n];\n parts = event.split('.');\n baseEvent = parts[0];\n name = parts[1];\n if (baseEvent) {\n if (this.eventListeners[baseEvent]) {\n this._off(baseEvent, name, callback);\n }\n }\n else {\n for (t in this.eventListeners) {\n this._off(t, name, callback);\n }\n }\n }\n return this;\n }\n dispatchEvent(evt) {\n var e = {\n target: this,\n type: evt.type,\n evt: evt,\n };\n this.fire(evt.type, e);\n return this;\n }\n addEventListener(type, handler) {\n this.on(type, function (evt) {\n handler.call(this, evt.evt);\n });\n return this;\n }\n removeEventListener(type) {\n this.off(type);\n return this;\n }\n _delegate(event, selector, handler) {\n var stopNode = this;\n this.on(event, function (evt) {\n var targets = evt.target.findAncestors(selector, true, stopNode);\n for (var i = 0; i < targets.length; i++) {\n evt = Util_1.Util.cloneObject(evt);\n evt.currentTarget = targets[i];\n handler.call(targets[i], evt);\n }\n });\n }\n remove() {\n if (this.isDragging()) {\n this.stopDrag();\n }\n DragAndDrop_1.DD._dragElements.delete(this._id);\n this._remove();\n return this;\n }\n _clearCaches() {\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n this._clearSelfAndDescendantCache(ABSOLUTE_SCALE);\n this._clearSelfAndDescendantCache(STAGE);\n this._clearSelfAndDescendantCache(VISIBLE);\n this._clearSelfAndDescendantCache(LISTENING);\n }\n _remove() {\n this._clearCaches();\n var parent = this.getParent();\n if (parent && parent.children) {\n parent.children.splice(this.index, 1);\n parent._setChildrenIndices();\n this.parent = null;\n }\n }\n destroy() {\n this.remove();\n this.clearCache();\n return this;\n }\n getAttr(attr) {\n var method = 'get' + Util_1.Util._capitalize(attr);\n if (Util_1.Util._isFunction(this[method])) {\n return this[method]();\n }\n return this.attrs[attr];\n }\n getAncestors() {\n var parent = this.getParent(), ancestors = [];\n while (parent) {\n ancestors.push(parent);\n parent = parent.getParent();\n }\n return ancestors;\n }\n getAttrs() {\n return (this.attrs || {});\n }\n setAttrs(config) {\n this._batchTransformChanges(() => {\n var key, method;\n if (!config) {\n return this;\n }\n for (key in config) {\n if (key === CHILDREN) {\n continue;\n }\n method = SET + Util_1.Util._capitalize(key);\n if (Util_1.Util._isFunction(this[method])) {\n this[method](config[key]);\n }\n else {\n this._setAttr(key, config[key]);\n }\n }\n });\n return this;\n }\n isListening() {\n return this._getCache(LISTENING, this._isListening);\n }\n _isListening(relativeTo) {\n const listening = this.listening();\n if (!listening) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isListening(relativeTo);\n }\n else {\n return true;\n }\n }\n isVisible() {\n return this._getCache(VISIBLE, this._isVisible);\n }\n _isVisible(relativeTo) {\n const visible = this.visible();\n if (!visible) {\n return false;\n }\n const parent = this.getParent();\n if (parent && parent !== relativeTo && this !== relativeTo) {\n return parent._isVisible(relativeTo);\n }\n else {\n return true;\n }\n }\n shouldDrawHit(top, skipDragCheck = false) {\n if (top) {\n return this._isVisible(top) && this._isListening(top);\n }\n var layer = this.getLayer();\n var layerUnderDrag = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (elem.dragStatus !== 'dragging') {\n return;\n }\n else if (elem.node.nodeType === 'Stage') {\n layerUnderDrag = true;\n }\n else if (elem.node.getLayer() === layer) {\n layerUnderDrag = true;\n }\n });\n var dragSkip = !skipDragCheck && !Global_1.Konva.hitOnDragEnabled && layerUnderDrag;\n return this.isListening() && this.isVisible() && !dragSkip;\n }\n show() {\n this.visible(true);\n return this;\n }\n hide() {\n this.visible(false);\n return this;\n }\n getZIndex() {\n return this.index || 0;\n }\n getAbsoluteZIndex() {\n var depth = this.getDepth(), that = this, index = 0, nodes, len, n, child;\n function addChildren(children) {\n nodes = [];\n len = children.length;\n for (n = 0; n < len; n++) {\n child = children[n];\n index++;\n if (child.nodeType !== SHAPE) {\n nodes = nodes.concat(child.getChildren().slice());\n }\n if (child._id === that._id) {\n n = len;\n }\n }\n if (nodes.length > 0 && nodes[0].getDepth() <= depth) {\n addChildren(nodes);\n }\n }\n const stage = this.getStage();\n if (that.nodeType !== UPPER_STAGE && stage) {\n addChildren(stage.getChildren());\n }\n return index;\n }\n getDepth() {\n var depth = 0, parent = this.parent;\n while (parent) {\n depth++;\n parent = parent.parent;\n }\n return depth;\n }\n _batchTransformChanges(func) {\n this._batchingTransformChange = true;\n func();\n this._batchingTransformChange = false;\n if (this._needClearTransformCache) {\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n }\n this._needClearTransformCache = false;\n }\n setPosition(pos) {\n this._batchTransformChanges(() => {\n this.x(pos.x);\n this.y(pos.y);\n });\n return this;\n }\n getPosition() {\n return {\n x: this.x(),\n y: this.y(),\n };\n }\n getRelativePointerPosition() {\n const stage = this.getStage();\n if (!stage) {\n return null;\n }\n var pos = stage.getPointerPosition();\n if (!pos) {\n return null;\n }\n var transform = this.getAbsoluteTransform().copy();\n transform.invert();\n return transform.point(pos);\n }\n getAbsolutePosition(top) {\n let haveCachedParent = false;\n let parent = this.parent;\n while (parent) {\n if (parent.isCached()) {\n haveCachedParent = true;\n break;\n }\n parent = parent.parent;\n }\n if (haveCachedParent && !top) {\n top = true;\n }\n var absoluteMatrix = this.getAbsoluteTransform(top).getMatrix(), absoluteTransform = new Util_1.Transform(), offset = this.offset();\n absoluteTransform.m = absoluteMatrix.slice();\n absoluteTransform.translate(offset.x, offset.y);\n return absoluteTransform.getTranslation();\n }\n setAbsolutePosition(pos) {\n const { x, y, ...origTrans } = this._clearTransform();\n this.attrs.x = x;\n this.attrs.y = y;\n this._clearCache(TRANSFORM);\n var it = this._getAbsoluteTransform().copy();\n it.invert();\n it.translate(pos.x, pos.y);\n pos = {\n x: this.attrs.x + it.getTranslation().x,\n y: this.attrs.y + it.getTranslation().y,\n };\n this._setTransform(origTrans);\n this.setPosition({ x: pos.x, y: pos.y });\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n return this;\n }\n _setTransform(trans) {\n var key;\n for (key in trans) {\n this.attrs[key] = trans[key];\n }\n }\n _clearTransform() {\n var trans = {\n x: this.x(),\n y: this.y(),\n rotation: this.rotation(),\n scaleX: this.scaleX(),\n scaleY: this.scaleY(),\n offsetX: this.offsetX(),\n offsetY: this.offsetY(),\n skewX: this.skewX(),\n skewY: this.skewY(),\n };\n this.attrs.x = 0;\n this.attrs.y = 0;\n this.attrs.rotation = 0;\n this.attrs.scaleX = 1;\n this.attrs.scaleY = 1;\n this.attrs.offsetX = 0;\n this.attrs.offsetY = 0;\n this.attrs.skewX = 0;\n this.attrs.skewY = 0;\n return trans;\n }\n move(change) {\n var changeX = change.x, changeY = change.y, x = this.x(), y = this.y();\n if (changeX !== undefined) {\n x += changeX;\n }\n if (changeY !== undefined) {\n y += changeY;\n }\n this.setPosition({ x: x, y: y });\n return this;\n }\n _eachAncestorReverse(func, top) {\n var family = [], parent = this.getParent(), len, n;\n if (top && top._id === this._id) {\n return;\n }\n family.unshift(this);\n while (parent && (!top || parent._id !== top._id)) {\n family.unshift(parent);\n parent = parent.parent;\n }\n len = family.length;\n for (n = 0; n < len; n++) {\n func(family[n]);\n }\n }\n rotate(theta) {\n this.rotation(this.rotation() + theta);\n return this;\n }\n moveToTop() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToTop function is ignored.');\n return false;\n }\n var index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.push(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveUp() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveUp function is ignored.');\n return false;\n }\n var index = this.index, len = this.parent.getChildren().length;\n if (index < len - 1) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index + 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveDown() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveDown function is ignored.');\n return false;\n }\n var index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.splice(index - 1, 0, this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. moveToBottom function is ignored.');\n return false;\n }\n var index = this.index;\n if (index > 0) {\n this.parent.children.splice(index, 1);\n this.parent.children.unshift(this);\n this.parent._setChildrenIndices();\n return true;\n }\n return false;\n }\n setZIndex(zIndex) {\n if (!this.parent) {\n Util_1.Util.warn('Node has no parent. zIndex parameter is ignored.');\n return this;\n }\n if (zIndex < 0 || zIndex >= this.parent.children.length) {\n Util_1.Util.warn('Unexpected value ' +\n zIndex +\n ' for zIndex property. zIndex is just index of a node in children of its parent. Expected value is from 0 to ' +\n (this.parent.children.length - 1) +\n '.');\n }\n var index = this.index;\n this.parent.children.splice(index, 1);\n this.parent.children.splice(zIndex, 0, this);\n this.parent._setChildrenIndices();\n return this;\n }\n getAbsoluteOpacity() {\n return this._getCache(ABSOLUTE_OPACITY, this._getAbsoluteOpacity);\n }\n _getAbsoluteOpacity() {\n var absOpacity = this.opacity();\n var parent = this.getParent();\n if (parent && !parent._isUnderCache) {\n absOpacity *= parent.getAbsoluteOpacity();\n }\n return absOpacity;\n }\n moveTo(newContainer) {\n if (this.getParent() !== newContainer) {\n this._remove();\n newContainer.add(this);\n }\n return this;\n }\n toObject() {\n var attrs = this.getAttrs(), key, val, getter, defaultValue, nonPlainObject;\n const obj = {\n attrs: {},\n className: this.getClassName(),\n };\n for (key in attrs) {\n val = attrs[key];\n nonPlainObject =\n Util_1.Util.isObject(val) && !Util_1.Util._isPlainObject(val) && !Util_1.Util._isArray(val);\n if (nonPlainObject) {\n continue;\n }\n getter = typeof this[key] === 'function' && this[key];\n delete attrs[key];\n defaultValue = getter ? getter.call(this) : null;\n attrs[key] = val;\n if (defaultValue !== val) {\n obj.attrs[key] = val;\n }\n }\n return Util_1.Util._prepareToStringify(obj);\n }\n toJSON() {\n return JSON.stringify(this.toObject());\n }\n getParent() {\n return this.parent;\n }\n findAncestors(selector, includeSelf, stopNode) {\n var res = [];\n if (includeSelf && this._isMatch(selector)) {\n res.push(this);\n }\n var ancestor = this.parent;\n while (ancestor) {\n if (ancestor === stopNode) {\n return res;\n }\n if (ancestor._isMatch(selector)) {\n res.push(ancestor);\n }\n ancestor = ancestor.parent;\n }\n return res;\n }\n isAncestorOf(node) {\n return false;\n }\n findAncestor(selector, includeSelf, stopNode) {\n return this.findAncestors(selector, includeSelf, stopNode)[0];\n }\n _isMatch(selector) {\n if (!selector) {\n return false;\n }\n if (typeof selector === 'function') {\n return selector(this);\n }\n var selectorArr = selector.replace(/ /g, '').split(','), len = selectorArr.length, n, sel;\n for (n = 0; n < len; n++) {\n sel = selectorArr[n];\n if (!Util_1.Util.isValidSelector(sel)) {\n Util_1.Util.warn('Selector \"' +\n sel +\n '\" is invalid. Allowed selectors examples are \"#foo\", \".bar\" or \"Group\".');\n Util_1.Util.warn('If you have a custom shape with such className, please change it to start with upper letter like \"Triangle\".');\n Util_1.Util.warn('Konva is awesome, right?');\n }\n if (sel.charAt(0) === '#') {\n if (this.id() === sel.slice(1)) {\n return true;\n }\n }\n else if (sel.charAt(0) === '.') {\n if (this.hasName(sel.slice(1))) {\n return true;\n }\n }\n else if (this.className === sel || this.nodeType === sel) {\n return true;\n }\n }\n return false;\n }\n getLayer() {\n var parent = this.getParent();\n return parent ? parent.getLayer() : null;\n }\n getStage() {\n return this._getCache(STAGE, this._getStage);\n }\n _getStage() {\n var parent = this.getParent();\n if (parent) {\n return parent.getStage();\n }\n else {\n return null;\n }\n }\n fire(eventType, evt = {}, bubble) {\n evt.target = evt.target || this;\n if (bubble) {\n this._fireAndBubble(eventType, evt);\n }\n else {\n this._fire(eventType, evt);\n }\n return this;\n }\n getAbsoluteTransform(top) {\n if (top) {\n return this._getAbsoluteTransform(top);\n }\n else {\n return this._getCache(ABSOLUTE_TRANSFORM, this._getAbsoluteTransform);\n }\n }\n _getAbsoluteTransform(top) {\n var at;\n if (top) {\n at = new Util_1.Transform();\n this._eachAncestorReverse(function (node) {\n var transformsEnabled = node.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(node.getTransform());\n }\n else if (transformsEnabled === 'position') {\n at.translate(node.x() - node.offsetX(), node.y() - node.offsetY());\n }\n }, top);\n return at;\n }\n else {\n at = this._cache.get(ABSOLUTE_TRANSFORM) || new Util_1.Transform();\n if (this.parent) {\n this.parent.getAbsoluteTransform().copyInto(at);\n }\n else {\n at.reset();\n }\n var transformsEnabled = this.transformsEnabled();\n if (transformsEnabled === 'all') {\n at.multiply(this.getTransform());\n }\n else if (transformsEnabled === 'position') {\n const x = this.attrs.x || 0;\n const y = this.attrs.y || 0;\n const offsetX = this.attrs.offsetX || 0;\n const offsetY = this.attrs.offsetY || 0;\n at.translate(x - offsetX, y - offsetY);\n }\n at.dirty = false;\n return at;\n }\n }\n getAbsoluteScale(top) {\n var parent = this;\n while (parent) {\n if (parent._isUnderCache) {\n top = parent;\n }\n parent = parent.getParent();\n }\n const transform = this.getAbsoluteTransform(top);\n const attrs = transform.decompose();\n return {\n x: attrs.scaleX,\n y: attrs.scaleY,\n };\n }\n getAbsoluteRotation() {\n return this.getAbsoluteTransform().decompose().rotation;\n }\n getTransform() {\n return this._getCache(TRANSFORM, this._getTransform);\n }\n _getTransform() {\n var _a, _b;\n var m = this._cache.get(TRANSFORM) || new Util_1.Transform();\n m.reset();\n var x = this.x(), y = this.y(), rotation = Global_1.Konva.getAngle(this.rotation()), scaleX = (_a = this.attrs.scaleX) !== null && _a !== void 0 ? _a : 1, scaleY = (_b = this.attrs.scaleY) !== null && _b !== void 0 ? _b : 1, skewX = this.attrs.skewX || 0, skewY = this.attrs.skewY || 0, offsetX = this.attrs.offsetX || 0, offsetY = this.attrs.offsetY || 0;\n if (x !== 0 || y !== 0) {\n m.translate(x, y);\n }\n if (rotation !== 0) {\n m.rotate(rotation);\n }\n if (skewX !== 0 || skewY !== 0) {\n m.skew(skewX, skewY);\n }\n if (scaleX !== 1 || scaleY !== 1) {\n m.scale(scaleX, scaleY);\n }\n if (offsetX !== 0 || offsetY !== 0) {\n m.translate(-1 * offsetX, -1 * offsetY);\n }\n m.dirty = false;\n return m;\n }\n clone(obj) {\n var attrs = Util_1.Util.cloneObject(this.attrs), key, allListeners, len, n, listener;\n for (key in obj) {\n attrs[key] = obj[key];\n }\n var node = new this.constructor(attrs);\n for (key in this.eventListeners) {\n allListeners = this.eventListeners[key];\n len = allListeners.length;\n for (n = 0; n < len; n++) {\n listener = allListeners[n];\n if (listener.name.indexOf(KONVA) < 0) {\n if (!node.eventListeners[key]) {\n node.eventListeners[key] = [];\n }\n node.eventListeners[key].push(listener);\n }\n }\n }\n return node;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n var box = this.getClientRect();\n var stage = this.getStage(), x = config.x !== undefined ? config.x : Math.floor(box.x), y = config.y !== undefined ? config.y : Math.floor(box.y), pixelRatio = config.pixelRatio || 1, canvas = new Canvas_1.SceneCanvas({\n width: config.width || Math.ceil(box.width) || (stage ? stage.width() : 0),\n height: config.height ||\n Math.ceil(box.height) ||\n (stage ? stage.height() : 0),\n pixelRatio: pixelRatio,\n }), context = canvas.getContext();\n const bufferCanvas = new Canvas_1.SceneCanvas({\n width: canvas.width,\n height: canvas.height,\n pixelRatio: canvas.pixelRatio,\n });\n if (config.imageSmoothingEnabled === false) {\n context._context.imageSmoothingEnabled = false;\n }\n context.save();\n if (x || y) {\n context.translate(-1 * x, -1 * y);\n }\n this.drawScene(canvas, undefined, bufferCanvas);\n context.restore();\n return canvas;\n }\n toCanvas(config) {\n return this._toKonvaCanvas(config)._canvas;\n }\n toDataURL(config) {\n config = config || {};\n var mimeType = config.mimeType || null, quality = config.quality || null;\n var url = this._toKonvaCanvas(config).toDataURL(mimeType, quality);\n if (config.callback) {\n config.callback(url);\n }\n return url;\n }\n toImage(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n Util_1.Util._urlToImage(this.toDataURL(config), function (img) {\n resolve(img);\n callback === null || callback === void 0 ? void 0 : callback(img);\n });\n }\n catch (err) {\n reject(err);\n }\n });\n }\n toBlob(config) {\n return new Promise((resolve, reject) => {\n try {\n const callback = config === null || config === void 0 ? void 0 : config.callback;\n if (callback)\n delete config.callback;\n this.toCanvas(config).toBlob((blob) => {\n resolve(blob);\n callback === null || callback === void 0 ? void 0 : callback(blob);\n }, config === null || config === void 0 ? void 0 : config.mimeType, config === null || config === void 0 ? void 0 : config.quality);\n }\n catch (err) {\n reject(err);\n }\n });\n }\n setSize(size) {\n this.width(size.width);\n this.height(size.height);\n return this;\n }\n getSize() {\n return {\n width: this.width(),\n height: this.height(),\n };\n }\n getClassName() {\n return this.className || this.nodeType;\n }\n getType() {\n return this.nodeType;\n }\n getDragDistance() {\n if (this.attrs.dragDistance !== undefined) {\n return this.attrs.dragDistance;\n }\n else if (this.parent) {\n return this.parent.getDragDistance();\n }\n else {\n return Global_1.Konva.dragDistance;\n }\n }\n _off(type, name, callback) {\n var evtListeners = this.eventListeners[type], i, evtName, handler;\n for (i = 0; i < evtListeners.length; i++) {\n evtName = evtListeners[i].name;\n handler = evtListeners[i].handler;\n if ((evtName !== 'konva' || name === 'konva') &&\n (!name || evtName === name) &&\n (!callback || callback === handler)) {\n evtListeners.splice(i, 1);\n if (evtListeners.length === 0) {\n delete this.eventListeners[type];\n break;\n }\n i--;\n }\n }\n }\n _fireChangeEvent(attr, oldVal, newVal) {\n this._fire(attr + CHANGE, {\n oldVal: oldVal,\n newVal: newVal,\n });\n }\n addName(name) {\n if (!this.hasName(name)) {\n var oldName = this.name();\n var newName = oldName ? oldName + ' ' + name : name;\n this.name(newName);\n }\n return this;\n }\n hasName(name) {\n if (!name) {\n return false;\n }\n const fullName = this.name();\n if (!fullName) {\n return false;\n }\n var names = (fullName || '').split(/\\s/g);\n return names.indexOf(name) !== -1;\n }\n removeName(name) {\n var names = (this.name() || '').split(/\\s/g);\n var index = names.indexOf(name);\n if (index !== -1) {\n names.splice(index, 1);\n this.name(names.join(' '));\n }\n return this;\n }\n setAttr(attr, val) {\n var func = this[SET + Util_1.Util._capitalize(attr)];\n if (Util_1.Util._isFunction(func)) {\n func.call(this, val);\n }\n else {\n this._setAttr(attr, val);\n }\n return this;\n }\n _requestDraw() {\n if (Global_1.Konva.autoDrawEnabled) {\n const drawNode = this.getLayer() || this.getStage();\n drawNode === null || drawNode === void 0 ? void 0 : drawNode.batchDraw();\n }\n }\n _setAttr(key, val) {\n var oldVal = this.attrs[key];\n if (oldVal === val && !Util_1.Util.isObject(val)) {\n return;\n }\n if (val === undefined || val === null) {\n delete this.attrs[key];\n }\n else {\n this.attrs[key] = val;\n }\n if (this._shouldFireChangeEvents) {\n this._fireChangeEvent(key, oldVal, val);\n }\n this._requestDraw();\n }\n _setComponentAttr(key, component, val) {\n var oldVal;\n if (val !== undefined) {\n oldVal = this.attrs[key];\n if (!oldVal) {\n this.attrs[key] = this.getAttr(key);\n }\n this.attrs[key][component] = val;\n this._fireChangeEvent(key, oldVal, val);\n }\n }\n _fireAndBubble(eventType, evt, compareShape) {\n if (evt && this.nodeType === SHAPE) {\n evt.target = this;\n }\n var shouldStop = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n ((compareShape &&\n (this === compareShape ||\n (this.isAncestorOf && this.isAncestorOf(compareShape)))) ||\n (this.nodeType === 'Stage' && !compareShape));\n if (!shouldStop) {\n this._fire(eventType, evt);\n var stopBubble = (eventType === MOUSEENTER || eventType === MOUSELEAVE) &&\n compareShape &&\n compareShape.isAncestorOf &&\n compareShape.isAncestorOf(this) &&\n !compareShape.isAncestorOf(this.parent);\n if (((evt && !evt.cancelBubble) || !evt) &&\n this.parent &&\n this.parent.isListening() &&\n !stopBubble) {\n if (compareShape && compareShape.parent) {\n this._fireAndBubble.call(this.parent, eventType, evt, compareShape);\n }\n else {\n this._fireAndBubble.call(this.parent, eventType, evt);\n }\n }\n }\n }\n _getProtoListeners(eventType) {\n var _a, _b, _c;\n const allListeners = (_a = this._cache.get(ALL_LISTENERS)) !== null && _a !== void 0 ? _a : {};\n let events = allListeners === null || allListeners === void 0 ? void 0 : allListeners[eventType];\n if (events === undefined) {\n events = [];\n let obj = Object.getPrototypeOf(this);\n while (obj) {\n const hierarchyEvents = (_c = (_b = obj.eventListeners) === null || _b === void 0 ? void 0 : _b[eventType]) !== null && _c !== void 0 ? _c : [];\n events.push(...hierarchyEvents);\n obj = Object.getPrototypeOf(obj);\n }\n allListeners[eventType] = events;\n this._cache.set(ALL_LISTENERS, allListeners);\n }\n return events;\n }\n _fire(eventType, evt) {\n evt = evt || {};\n evt.currentTarget = this;\n evt.type = eventType;\n const topListeners = this._getProtoListeners(eventType);\n if (topListeners) {\n for (var i = 0; i < topListeners.length; i++) {\n topListeners[i].handler.call(this, evt);\n }\n }\n const selfListeners = this.eventListeners[eventType];\n if (selfListeners) {\n for (var i = 0; i < selfListeners.length; i++) {\n selfListeners[i].handler.call(this, evt);\n }\n }\n }\n draw() {\n this.drawScene();\n this.drawHit();\n return this;\n }\n _createDragElement(evt) {\n var pointerId = evt ? evt.pointerId : undefined;\n var stage = this.getStage();\n var ap = this.getAbsolutePosition();\n if (!stage) {\n return;\n }\n var pos = stage._getPointerById(pointerId) ||\n stage._changedPointerPositions[0] ||\n ap;\n DragAndDrop_1.DD._dragElements.set(this._id, {\n node: this,\n startPointerPos: pos,\n offset: {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n },\n dragStatus: 'ready',\n pointerId,\n });\n }\n startDrag(evt, bubbleEvent = true) {\n if (!DragAndDrop_1.DD._dragElements.has(this._id)) {\n this._createDragElement(evt);\n }\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n elem.dragStatus = 'dragging';\n this.fire('dragstart', {\n type: 'dragstart',\n target: this,\n evt: evt && evt.evt,\n }, bubbleEvent);\n }\n _setDragPosition(evt, elem) {\n const pos = this.getStage()._getPointerById(elem.pointerId);\n if (!pos) {\n return;\n }\n var newNodePos = {\n x: pos.x - elem.offset.x,\n y: pos.y - elem.offset.y,\n };\n var dbf = this.dragBoundFunc();\n if (dbf !== undefined) {\n const bounded = dbf.call(this, newNodePos, evt);\n if (!bounded) {\n Util_1.Util.warn('dragBoundFunc did not return any value. That is unexpected behavior. You must return new absolute position from dragBoundFunc.');\n }\n else {\n newNodePos = bounded;\n }\n }\n if (!this._lastPos ||\n this._lastPos.x !== newNodePos.x ||\n this._lastPos.y !== newNodePos.y) {\n this.setAbsolutePosition(newNodePos);\n this._requestDraw();\n }\n this._lastPos = newNodePos;\n }\n stopDrag(evt) {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n if (elem) {\n elem.dragStatus = 'stopped';\n }\n DragAndDrop_1.DD._endDragBefore(evt);\n DragAndDrop_1.DD._endDragAfter(evt);\n }\n setDraggable(draggable) {\n this._setAttr('draggable', draggable);\n this._dragChange();\n }\n isDragging() {\n const elem = DragAndDrop_1.DD._dragElements.get(this._id);\n return elem ? elem.dragStatus === 'dragging' : false;\n }\n _listenDrag() {\n this._dragCleanup();\n this.on('mousedown.konva touchstart.konva', function (evt) {\n var shouldCheckButton = evt.evt['button'] !== undefined;\n var canDrag = !shouldCheckButton || Global_1.Konva.dragButtons.indexOf(evt.evt['button']) >= 0;\n if (!canDrag) {\n return;\n }\n if (this.isDragging()) {\n return;\n }\n var hasDraggingChild = false;\n DragAndDrop_1.DD._dragElements.forEach((elem) => {\n if (this.isAncestorOf(elem.node)) {\n hasDraggingChild = true;\n }\n });\n if (!hasDraggingChild) {\n this._createDragElement(evt);\n }\n });\n }\n _dragChange() {\n if (this.attrs.draggable) {\n this._listenDrag();\n }\n else {\n this._dragCleanup();\n var stage = this.getStage();\n if (!stage) {\n return;\n }\n const dragElement = DragAndDrop_1.DD._dragElements.get(this._id);\n const isDragging = dragElement && dragElement.dragStatus === 'dragging';\n const isReady = dragElement && dragElement.dragStatus === 'ready';\n if (isDragging) {\n this.stopDrag();\n }\n else if (isReady) {\n DragAndDrop_1.DD._dragElements.delete(this._id);\n }\n }\n }\n _dragCleanup() {\n this.off('mousedown.konva');\n this.off('touchstart.konva');\n }\n isClientRectOnScreen(margin = { x: 0, y: 0 }) {\n const stage = this.getStage();\n if (!stage) {\n return false;\n }\n const screenRect = {\n x: -margin.x,\n y: -margin.y,\n width: stage.width() + 2 * margin.x,\n height: stage.height() + 2 * margin.y,\n };\n return Util_1.Util.haveIntersection(screenRect, this.getClientRect());\n }\n static create(data, container) {\n if (Util_1.Util._isString(data)) {\n data = JSON.parse(data);\n }\n return this._createNode(data, container);\n }\n static _createNode(obj, container) {\n var className = Node.prototype.getClassName.call(obj), children = obj.children, no, len, n;\n if (container) {\n obj.attrs.container = container;\n }\n if (!Global_1.Konva[className]) {\n Util_1.Util.warn('Can not find a node with class name \"' +\n className +\n '\". Fallback to \"Shape\".');\n className = 'Shape';\n }\n const Class = Global_1.Konva[className];\n no = new Class(obj.attrs);\n if (children) {\n len = children.length;\n for (n = 0; n < len; n++) {\n no.add(Node._createNode(children[n]));\n }\n }\n return no;\n }\n}\nexports.Node = Node;\nNode.prototype.nodeType = 'Node';\nNode.prototype._attrsAffectingSize = [];\nNode.prototype.eventListeners = {};\nNode.prototype.on.call(Node.prototype, TRANSFORM_CHANGE_STR, function () {\n if (this._batchingTransformChange) {\n this._needClearTransformCache = true;\n return;\n }\n this._clearCache(TRANSFORM);\n this._clearSelfAndDescendantCache(ABSOLUTE_TRANSFORM);\n});\nNode.prototype.on.call(Node.prototype, 'visibleChange.konva', function () {\n this._clearSelfAndDescendantCache(VISIBLE);\n});\nNode.prototype.on.call(Node.prototype, 'listeningChange.konva', function () {\n this._clearSelfAndDescendantCache(LISTENING);\n});\nNode.prototype.on.call(Node.prototype, 'opacityChange.konva', function () {\n this._clearSelfAndDescendantCache(ABSOLUTE_OPACITY);\n});\nconst addGetterSetter = Factory_1.Factory.addGetterSetter;\naddGetterSetter(Node, 'zIndex');\naddGetterSetter(Node, 'absolutePosition');\naddGetterSetter(Node, 'position');\naddGetterSetter(Node, 'x', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'y', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'globalCompositeOperation', 'source-over', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'opacity', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'name', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'id', '', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'rotation', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'scale', ['x', 'y']);\naddGetterSetter(Node, 'scaleX', 1, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'scaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'skew', ['x', 'y']);\naddGetterSetter(Node, 'skewX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'skewY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Node, 'offset', ['x', 'y']);\naddGetterSetter(Node, 'offsetX', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'offsetY', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'dragDistance', null, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'width', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'height', 0, (0, Validators_1.getNumberValidator)());\naddGetterSetter(Node, 'listening', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'preventDefault', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'filters', null, function (val) {\n this._filterUpToDate = false;\n return val;\n});\naddGetterSetter(Node, 'visible', true, (0, Validators_1.getBooleanValidator)());\naddGetterSetter(Node, 'transformsEnabled', 'all', (0, Validators_1.getStringValidator)());\naddGetterSetter(Node, 'size');\naddGetterSetter(Node, 'dragBoundFunc');\naddGetterSetter(Node, 'draggable', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.backCompat(Node, {\n rotateDeg: 'rotate',\n setRotationDeg: 'setRotation',\n getRotationDeg: 'getRotation',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Container = void 0;\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nclass Container extends Node_1.Node {\n constructor() {\n super(...arguments);\n this.children = [];\n }\n getChildren(filterFunc) {\n if (!filterFunc) {\n return this.children || [];\n }\n const children = this.children || [];\n var results = [];\n children.forEach(function (child) {\n if (filterFunc(child)) {\n results.push(child);\n }\n });\n return results;\n }\n hasChildren() {\n return this.getChildren().length > 0;\n }\n removeChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.remove();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n destroyChildren() {\n this.getChildren().forEach((child) => {\n child.parent = null;\n child.index = 0;\n child.destroy();\n });\n this.children = [];\n this._requestDraw();\n return this;\n }\n add(...children) {\n if (children.length === 0) {\n return this;\n }\n if (children.length > 1) {\n for (var i = 0; i < children.length; i++) {\n this.add(children[i]);\n }\n return this;\n }\n const child = children[0];\n if (child.getParent()) {\n child.moveTo(this);\n return this;\n }\n this._validateAdd(child);\n child.index = this.getChildren().length;\n child.parent = this;\n child._clearCaches();\n this.getChildren().push(child);\n this._fire('add', {\n child: child,\n });\n this._requestDraw();\n return this;\n }\n destroy() {\n if (this.hasChildren()) {\n this.destroyChildren();\n }\n super.destroy();\n return this;\n }\n find(selector) {\n return this._generalFind(selector, false);\n }\n findOne(selector) {\n var result = this._generalFind(selector, true);\n return result.length > 0 ? result[0] : undefined;\n }\n _generalFind(selector, findOne) {\n var retArr = [];\n this._descendants((node) => {\n const valid = node._isMatch(selector);\n if (valid) {\n retArr.push(node);\n }\n if (valid && findOne) {\n return true;\n }\n return false;\n });\n return retArr;\n }\n _descendants(fn) {\n let shouldStop = false;\n const children = this.getChildren();\n for (const child of children) {\n shouldStop = fn(child);\n if (shouldStop) {\n return true;\n }\n if (!child.hasChildren()) {\n continue;\n }\n shouldStop = child._descendants(fn);\n if (shouldStop) {\n return true;\n }\n }\n return false;\n }\n toObject() {\n var obj = Node_1.Node.prototype.toObject.call(this);\n obj.children = [];\n this.getChildren().forEach((child) => {\n obj.children.push(child.toObject());\n });\n return obj;\n }\n isAncestorOf(node) {\n var parent = node.getParent();\n while (parent) {\n if (parent._id === this._id) {\n return true;\n }\n parent = parent.getParent();\n }\n return false;\n }\n clone(obj) {\n var node = Node_1.Node.prototype.clone.call(this, obj);\n this.getChildren().forEach(function (no) {\n node.add(no.clone());\n });\n return node;\n }\n getAllIntersections(pos) {\n var arr = [];\n this.find('Shape').forEach((shape) => {\n if (shape.isVisible() && shape.intersects(pos)) {\n arr.push(shape);\n }\n });\n return arr;\n }\n _clearSelfAndDescendantCache(attr) {\n var _a;\n super._clearSelfAndDescendantCache(attr);\n if (this.isCached()) {\n return;\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (node) {\n node._clearSelfAndDescendantCache(attr);\n });\n }\n _setChildrenIndices() {\n var _a;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child, n) {\n child.index = n;\n });\n this._requestDraw();\n }\n drawScene(can, top, bufferCanvas) {\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas()), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedSceneCanvas = cachedCanvas && cachedCanvas.scene;\n var caching = canvas && canvas.isCache;\n if (!this.isVisible() && !caching) {\n return this;\n }\n if (cachedSceneCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawScene', canvas, top, bufferCanvas);\n }\n return this;\n }\n drawHit(can, top) {\n if (!this.shouldDrawHit(top)) {\n return this;\n }\n var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas), context = canvas && canvas.getContext(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (cachedHitCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n }\n else {\n this._drawChildren('drawHit', canvas, top);\n }\n return this;\n }\n _drawChildren(drawMethod, canvas, top, bufferCanvas) {\n var _a;\n var context = canvas && canvas.getContext(), clipWidth = this.clipWidth(), clipHeight = this.clipHeight(), clipFunc = this.clipFunc(), hasClip = (clipWidth && clipHeight) || clipFunc;\n const selfCache = top === this;\n if (hasClip) {\n context.save();\n var transform = this.getAbsoluteTransform(top);\n var m = transform.getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n context.beginPath();\n let clipArgs;\n if (clipFunc) {\n clipArgs = clipFunc.call(this, context, this);\n }\n else {\n var clipX = this.clipX();\n var clipY = this.clipY();\n context.rect(clipX, clipY, clipWidth, clipHeight);\n }\n context.clip.apply(context, clipArgs);\n m = transform.copy().invert().getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n var hasComposition = !selfCache &&\n this.globalCompositeOperation() !== 'source-over' &&\n drawMethod === 'drawScene';\n if (hasComposition) {\n context.save();\n context._applyGlobalCompositeOperation(this);\n }\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n child[drawMethod](canvas, top, bufferCanvas);\n });\n if (hasComposition) {\n context.restore();\n }\n if (hasClip) {\n context.restore();\n }\n }\n getClientRect(config = {}) {\n var _a;\n var skipTransform = config.skipTransform;\n var relativeTo = config.relativeTo;\n var minX, minY, maxX, maxY;\n var selfRect = {\n x: Infinity,\n y: Infinity,\n width: 0,\n height: 0,\n };\n var that = this;\n (_a = this.children) === null || _a === void 0 ? void 0 : _a.forEach(function (child) {\n if (!child.visible()) {\n return;\n }\n var rect = child.getClientRect({\n relativeTo: that,\n skipShadow: config.skipShadow,\n skipStroke: config.skipStroke,\n });\n if (rect.width === 0 && rect.height === 0) {\n return;\n }\n if (minX === undefined) {\n minX = rect.x;\n minY = rect.y;\n maxX = rect.x + rect.width;\n maxY = rect.y + rect.height;\n }\n else {\n minX = Math.min(minX, rect.x);\n minY = Math.min(minY, rect.y);\n maxX = Math.max(maxX, rect.x + rect.width);\n maxY = Math.max(maxY, rect.y + rect.height);\n }\n });\n var shapes = this.find('Shape');\n var hasVisible = false;\n for (var i = 0; i < shapes.length; i++) {\n var shape = shapes[i];\n if (shape._isVisible(this)) {\n hasVisible = true;\n break;\n }\n }\n if (hasVisible && minX !== undefined) {\n selfRect = {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n else {\n selfRect = {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n if (!skipTransform) {\n return this._transformedRect(selfRect, relativeTo);\n }\n return selfRect;\n }\n}\nexports.Container = Container;\nFactory_1.Factory.addComponentsGetterSetter(Container, 'clip', [\n 'x',\n 'y',\n 'width',\n 'height',\n]);\nFactory_1.Factory.addGetterSetter(Container, 'clipX', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipY', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipWidth', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipHeight', undefined, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Container, 'clipFunc');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.releaseCapture = exports.setPointerCapture = exports.hasPointerCapture = exports.createEvent = exports.getCapturedShape = void 0;\nconst Global_1 = require(\"./Global\");\nconst Captures = new Map();\nconst SUPPORT_POINTER_EVENTS = Global_1.Konva._global['PointerEvent'] !== undefined;\nfunction getCapturedShape(pointerId) {\n return Captures.get(pointerId);\n}\nexports.getCapturedShape = getCapturedShape;\nfunction createEvent(evt) {\n return {\n evt,\n pointerId: evt.pointerId,\n };\n}\nexports.createEvent = createEvent;\nfunction hasPointerCapture(pointerId, shape) {\n return Captures.get(pointerId) === shape;\n}\nexports.hasPointerCapture = hasPointerCapture;\nfunction setPointerCapture(pointerId, shape) {\n releaseCapture(pointerId);\n const stage = shape.getStage();\n if (!stage)\n return;\n Captures.set(pointerId, shape);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('gotpointercapture', createEvent(new PointerEvent('gotpointercapture')));\n }\n}\nexports.setPointerCapture = setPointerCapture;\nfunction releaseCapture(pointerId, target) {\n const shape = Captures.get(pointerId);\n if (!shape)\n return;\n const stage = shape.getStage();\n if (stage && stage.content) {\n }\n Captures.delete(pointerId);\n if (SUPPORT_POINTER_EVENTS) {\n shape._fire('lostpointercapture', createEvent(new PointerEvent('lostpointercapture')));\n }\n}\nexports.releaseCapture = releaseCapture;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Stage = exports.stages = void 0;\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nconst Canvas_1 = require(\"./Canvas\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nvar STAGE = 'Stage', STRING = 'string', PX = 'px', MOUSEOUT = 'mouseout', MOUSELEAVE = 'mouseleave', MOUSEOVER = 'mouseover', MOUSEENTER = 'mouseenter', MOUSEMOVE = 'mousemove', MOUSEDOWN = 'mousedown', MOUSEUP = 'mouseup', POINTERMOVE = 'pointermove', POINTERDOWN = 'pointerdown', POINTERUP = 'pointerup', POINTERCANCEL = 'pointercancel', LOSTPOINTERCAPTURE = 'lostpointercapture', POINTEROUT = 'pointerout', POINTERLEAVE = 'pointerleave', POINTEROVER = 'pointerover', POINTERENTER = 'pointerenter', CONTEXTMENU = 'contextmenu', TOUCHSTART = 'touchstart', TOUCHEND = 'touchend', TOUCHMOVE = 'touchmove', TOUCHCANCEL = 'touchcancel', WHEEL = 'wheel', MAX_LAYERS_NUMBER = 5, EVENTS = [\n [MOUSEENTER, '_pointerenter'],\n [MOUSEDOWN, '_pointerdown'],\n [MOUSEMOVE, '_pointermove'],\n [MOUSEUP, '_pointerup'],\n [MOUSELEAVE, '_pointerleave'],\n [TOUCHSTART, '_pointerdown'],\n [TOUCHMOVE, '_pointermove'],\n [TOUCHEND, '_pointerup'],\n [TOUCHCANCEL, '_pointercancel'],\n [MOUSEOVER, '_pointerover'],\n [WHEEL, '_wheel'],\n [CONTEXTMENU, '_contextmenu'],\n [POINTERDOWN, '_pointerdown'],\n [POINTERMOVE, '_pointermove'],\n [POINTERUP, '_pointerup'],\n [POINTERCANCEL, '_pointercancel'],\n [LOSTPOINTERCAPTURE, '_lostpointercapture'],\n];\nconst EVENTS_MAP = {\n mouse: {\n [POINTEROUT]: MOUSEOUT,\n [POINTERLEAVE]: MOUSELEAVE,\n [POINTEROVER]: MOUSEOVER,\n [POINTERENTER]: MOUSEENTER,\n [POINTERMOVE]: MOUSEMOVE,\n [POINTERDOWN]: MOUSEDOWN,\n [POINTERUP]: MOUSEUP,\n [POINTERCANCEL]: 'mousecancel',\n pointerclick: 'click',\n pointerdblclick: 'dblclick',\n },\n touch: {\n [POINTEROUT]: 'touchout',\n [POINTERLEAVE]: 'touchleave',\n [POINTEROVER]: 'touchover',\n [POINTERENTER]: 'touchenter',\n [POINTERMOVE]: TOUCHMOVE,\n [POINTERDOWN]: TOUCHSTART,\n [POINTERUP]: TOUCHEND,\n [POINTERCANCEL]: TOUCHCANCEL,\n pointerclick: 'tap',\n pointerdblclick: 'dbltap',\n },\n pointer: {\n [POINTEROUT]: POINTEROUT,\n [POINTERLEAVE]: POINTERLEAVE,\n [POINTEROVER]: POINTEROVER,\n [POINTERENTER]: POINTERENTER,\n [POINTERMOVE]: POINTERMOVE,\n [POINTERDOWN]: POINTERDOWN,\n [POINTERUP]: POINTERUP,\n [POINTERCANCEL]: POINTERCANCEL,\n pointerclick: 'pointerclick',\n pointerdblclick: 'pointerdblclick',\n },\n};\nconst getEventType = (type) => {\n if (type.indexOf('pointer') >= 0) {\n return 'pointer';\n }\n if (type.indexOf('touch') >= 0) {\n return 'touch';\n }\n return 'mouse';\n};\nconst getEventsMap = (eventType) => {\n const type = getEventType(eventType);\n if (type === 'pointer') {\n return Global_1.Konva.pointerEventsEnabled && EVENTS_MAP.pointer;\n }\n if (type === 'touch') {\n return EVENTS_MAP.touch;\n }\n if (type === 'mouse') {\n return EVENTS_MAP.mouse;\n }\n};\nfunction checkNoClip(attrs = {}) {\n if (attrs.clipFunc || attrs.clipWidth || attrs.clipHeight) {\n Util_1.Util.warn('Stage does not support clipping. Please use clip for Layers or Groups.');\n }\n return attrs;\n}\nconst NO_POINTERS_MESSAGE = `Pointer position is missing and not registered by the stage. Looks like it is outside of the stage container. You can set it manually from event: stage.setPointersPositions(event);`;\nexports.stages = [];\nclass Stage extends Container_1.Container {\n constructor(config) {\n super(checkNoClip(config));\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n this._buildDOM();\n this._bindContentEvents();\n exports.stages.push(this);\n this.on('widthChange.konva heightChange.konva', this._resizeDOM);\n this.on('visibleChange.konva', this._checkVisibility);\n this.on('clipWidthChange.konva clipHeightChange.konva clipFuncChange.konva', () => {\n checkNoClip(this.attrs);\n });\n this._checkVisibility();\n }\n _validateAdd(child) {\n const isLayer = child.getType() === 'Layer';\n const isFastLayer = child.getType() === 'FastLayer';\n const valid = isLayer || isFastLayer;\n if (!valid) {\n Util_1.Util.throw('You may only add layers to the stage.');\n }\n }\n _checkVisibility() {\n if (!this.content) {\n return;\n }\n const style = this.visible() ? '' : 'none';\n this.content.style.display = style;\n }\n setContainer(container) {\n if (typeof container === STRING) {\n if (container.charAt(0) === '.') {\n var className = container.slice(1);\n container = document.getElementsByClassName(className)[0];\n }\n else {\n var id;\n if (container.charAt(0) !== '#') {\n id = container;\n }\n else {\n id = container.slice(1);\n }\n container = document.getElementById(id);\n }\n if (!container) {\n throw 'Can not find container in document with id ' + id;\n }\n }\n this._setAttr('container', container);\n if (this.content) {\n if (this.content.parentElement) {\n this.content.parentElement.removeChild(this.content);\n }\n container.appendChild(this.content);\n }\n return this;\n }\n shouldDrawHit() {\n return true;\n }\n clear() {\n var layers = this.children, len = layers.length, n;\n for (n = 0; n < len; n++) {\n layers[n].clear();\n }\n return this;\n }\n clone(obj) {\n if (!obj) {\n obj = {};\n }\n obj.container =\n typeof document !== 'undefined' && document.createElement('div');\n return Container_1.Container.prototype.clone.call(this, obj);\n }\n destroy() {\n super.destroy();\n var content = this.content;\n if (content && Util_1.Util._isInDocument(content)) {\n this.container().removeChild(content);\n }\n var index = exports.stages.indexOf(this);\n if (index > -1) {\n exports.stages.splice(index, 1);\n }\n Util_1.Util.releaseCanvas(this.bufferCanvas._canvas, this.bufferHitCanvas._canvas);\n return this;\n }\n getPointerPosition() {\n const pos = this._pointerPositions[0] || this._changedPointerPositions[0];\n if (!pos) {\n Util_1.Util.warn(NO_POINTERS_MESSAGE);\n return null;\n }\n return {\n x: pos.x,\n y: pos.y,\n };\n }\n _getPointerById(id) {\n return this._pointerPositions.find((p) => p.id === id);\n }\n getPointersPositions() {\n return this._pointerPositions;\n }\n getStage() {\n return this;\n }\n getContent() {\n return this.content;\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.x = config.x || 0;\n config.y = config.y || 0;\n config.width = config.width || this.width();\n config.height = config.height || this.height();\n var canvas = new Canvas_1.SceneCanvas({\n width: config.width,\n height: config.height,\n pixelRatio: config.pixelRatio || 1,\n });\n var _context = canvas.getContext()._context;\n var layers = this.children;\n if (config.x || config.y) {\n _context.translate(-1 * config.x, -1 * config.y);\n }\n layers.forEach(function (layer) {\n if (!layer.isVisible()) {\n return;\n }\n var layerCanvas = layer._toKonvaCanvas(config);\n _context.drawImage(layerCanvas._canvas, config.x, config.y, layerCanvas.getWidth() / layerCanvas.getPixelRatio(), layerCanvas.getHeight() / layerCanvas.getPixelRatio());\n });\n return canvas;\n }\n getIntersection(pos) {\n if (!pos) {\n return null;\n }\n var layers = this.children, len = layers.length, end = len - 1, n;\n for (n = end; n >= 0; n--) {\n const shape = layers[n].getIntersection(pos);\n if (shape) {\n return shape;\n }\n }\n return null;\n }\n _resizeDOM() {\n var width = this.width();\n var height = this.height();\n if (this.content) {\n this.content.style.width = width + PX;\n this.content.style.height = height + PX;\n }\n this.bufferCanvas.setSize(width, height);\n this.bufferHitCanvas.setSize(width, height);\n this.children.forEach((layer) => {\n layer.setSize({ width, height });\n layer.draw();\n });\n }\n add(layer, ...rest) {\n if (arguments.length > 1) {\n for (var i = 0; i < arguments.length; i++) {\n this.add(arguments[i]);\n }\n return this;\n }\n super.add(layer);\n var length = this.children.length;\n if (length > MAX_LAYERS_NUMBER) {\n Util_1.Util.warn('The stage has ' +\n length +\n ' layers. Recommended maximum number of layers is 3-5. Adding more layers into the stage may drop the performance. Rethink your tree structure, you can use Konva.Group.');\n }\n layer.setSize({ width: this.width(), height: this.height() });\n layer.draw();\n if (Global_1.Konva.isBrowser) {\n this.content.appendChild(layer.canvas._canvas);\n }\n return this;\n }\n getParent() {\n return null;\n }\n getLayer() {\n return null;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n getLayers() {\n return this.children;\n }\n _bindContentEvents() {\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n EVENTS.forEach(([event, methodName]) => {\n this.content.addEventListener(event, (evt) => {\n this[methodName](evt);\n }, { passive: false });\n });\n }\n _pointerenter(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerenter, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointerover(evt) {\n this.setPointersPositions(evt);\n const events = getEventsMap(evt.type);\n if (events) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _getTargetShape(evenType) {\n let shape = this[evenType + 'targetShape'];\n if (shape && !shape.getStage()) {\n shape = null;\n }\n return shape;\n }\n _pointerleave(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n var targetShape = this._getTargetShape(eventType);\n var eventsEnabled = !DragAndDrop_1.DD.isDragging || Global_1.Konva.hitOnDragEnabled;\n if (targetShape && eventsEnabled) {\n targetShape._fireAndBubble(events.pointerout, { evt: evt });\n targetShape._fireAndBubble(events.pointerleave, { evt: evt });\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this[eventType + 'targetShape'] = null;\n }\n else if (eventsEnabled) {\n this._fire(events.pointerleave, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n this._fire(events.pointerout, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n this.pointerPos = null;\n this._pointerPositions = [];\n }\n _pointerdown(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n var triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n var shape = this.getIntersection(pos);\n DragAndDrop_1.DD.justDragged = false;\n Global_1.Konva['_' + eventType + 'ListenClick'] = true;\n if (!shape || !shape.isListening()) {\n return;\n }\n if (Global_1.Konva.capturePointerEventsEnabled) {\n shape.setPointerCapture(pos.id);\n }\n this[eventType + 'ClickStartShape'] = shape;\n shape._fireAndBubble(events.pointerdown, {\n evt: evt,\n pointerId: pos.id,\n });\n triggeredOnShape = true;\n const isTouch = evt.type.indexOf('touch') >= 0;\n if (shape.preventDefault() && evt.cancelable && isTouch) {\n evt.preventDefault();\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerdown, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._pointerPositions[0].id,\n });\n }\n }\n _pointermove(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n if (DragAndDrop_1.DD.isDragging && DragAndDrop_1.DD.node.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n var eventsEnabled = !DragAndDrop_1.DD.isDragging || Global_1.Konva.hitOnDragEnabled;\n if (!eventsEnabled) {\n return;\n }\n var processedShapesIds = {};\n let triggeredOnShape = false;\n var targetShape = this._getTargetShape(eventType);\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n var differentTarget = targetShape !== shape;\n if (differentTarget && targetShape) {\n targetShape._fireAndBubble(events.pointerout, { ...event }, shape);\n targetShape._fireAndBubble(events.pointerleave, { ...event }, shape);\n }\n if (shape) {\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n if (differentTarget) {\n shape._fireAndBubble(events.pointerover, { ...event }, targetShape);\n shape._fireAndBubble(events.pointerenter, { ...event }, targetShape);\n this[eventType + 'targetShape'] = shape;\n }\n shape._fireAndBubble(events.pointermove, { ...event });\n }\n else {\n if (targetShape) {\n this._fire(events.pointerover, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n this[eventType + 'targetShape'] = null;\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointermove, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n }\n _pointerup(evt) {\n const events = getEventsMap(evt.type);\n const eventType = getEventType(evt.type);\n if (!events) {\n return;\n }\n this.setPointersPositions(evt);\n const clickStartShape = this[eventType + 'ClickStartShape'];\n const clickEndShape = this[eventType + 'ClickEndShape'];\n var processedShapesIds = {};\n let triggeredOnShape = false;\n this._changedPointerPositions.forEach((pos) => {\n const shape = (PointerEvents.getCapturedShape(pos.id) ||\n this.getIntersection(pos));\n if (shape) {\n shape.releaseCapture(pos.id);\n if (processedShapesIds[shape._id]) {\n return;\n }\n processedShapesIds[shape._id] = true;\n }\n const pointerId = pos.id;\n const event = { evt: evt, pointerId };\n let fireDblClick = false;\n if (Global_1.Konva['_' + eventType + 'InDblClickWindow']) {\n fireDblClick = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n else if (!DragAndDrop_1.DD.justDragged) {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = true;\n clearTimeout(this[eventType + 'DblTimeout']);\n }\n this[eventType + 'DblTimeout'] = setTimeout(function () {\n Global_1.Konva['_' + eventType + 'InDblClickWindow'] = false;\n }, Global_1.Konva.dblClickWindow);\n if (shape && shape.isListening()) {\n triggeredOnShape = true;\n this[eventType + 'ClickEndShape'] = shape;\n shape._fireAndBubble(events.pointerup, { ...event });\n if (Global_1.Konva['_' + eventType + 'ListenClick'] &&\n clickStartShape &&\n clickStartShape === shape) {\n shape._fireAndBubble(events.pointerclick, { ...event });\n if (fireDblClick && clickEndShape && clickEndShape === shape) {\n shape._fireAndBubble(events.pointerdblclick, { ...event });\n }\n }\n }\n else {\n this[eventType + 'ClickEndShape'] = null;\n if (Global_1.Konva['_' + eventType + 'ListenClick']) {\n this._fire(events.pointerclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n if (fireDblClick) {\n this._fire(events.pointerdblclick, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId,\n });\n }\n }\n });\n if (!triggeredOnShape) {\n this._fire(events.pointerup, {\n evt: evt,\n target: this,\n currentTarget: this,\n pointerId: this._changedPointerPositions[0].id,\n });\n }\n Global_1.Konva['_' + eventType + 'ListenClick'] = false;\n if (evt.cancelable && eventType !== 'touch') {\n evt.preventDefault();\n }\n }\n _contextmenu(evt) {\n this.setPointersPositions(evt);\n var shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(CONTEXTMENU, { evt: evt });\n }\n else {\n this._fire(CONTEXTMENU, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _wheel(evt) {\n this.setPointersPositions(evt);\n var shape = this.getIntersection(this.getPointerPosition());\n if (shape && shape.isListening()) {\n shape._fireAndBubble(WHEEL, { evt: evt });\n }\n else {\n this._fire(WHEEL, {\n evt: evt,\n target: this,\n currentTarget: this,\n });\n }\n }\n _pointercancel(evt) {\n this.setPointersPositions(evt);\n const shape = PointerEvents.getCapturedShape(evt.pointerId) ||\n this.getIntersection(this.getPointerPosition());\n if (shape) {\n shape._fireAndBubble(POINTERUP, PointerEvents.createEvent(evt));\n }\n PointerEvents.releaseCapture(evt.pointerId);\n }\n _lostpointercapture(evt) {\n PointerEvents.releaseCapture(evt.pointerId);\n }\n setPointersPositions(evt) {\n var contentPosition = this._getContentPosition(), x = null, y = null;\n evt = evt ? evt : window.event;\n if (evt.touches !== undefined) {\n this._pointerPositions = [];\n this._changedPointerPositions = [];\n Array.prototype.forEach.call(evt.touches, (touch) => {\n this._pointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n Array.prototype.forEach.call(evt.changedTouches || evt.touches, (touch) => {\n this._changedPointerPositions.push({\n id: touch.identifier,\n x: (touch.clientX - contentPosition.left) / contentPosition.scaleX,\n y: (touch.clientY - contentPosition.top) / contentPosition.scaleY,\n });\n });\n }\n else {\n x = (evt.clientX - contentPosition.left) / contentPosition.scaleX;\n y = (evt.clientY - contentPosition.top) / contentPosition.scaleY;\n this.pointerPos = {\n x: x,\n y: y,\n };\n this._pointerPositions = [{ x, y, id: Util_1.Util._getFirstPointerId(evt) }];\n this._changedPointerPositions = [\n { x, y, id: Util_1.Util._getFirstPointerId(evt) },\n ];\n }\n }\n _setPointerPosition(evt) {\n Util_1.Util.warn('Method _setPointerPosition is deprecated. Use \"stage.setPointersPositions(event)\" instead.');\n this.setPointersPositions(evt);\n }\n _getContentPosition() {\n if (!this.content || !this.content.getBoundingClientRect) {\n return {\n top: 0,\n left: 0,\n scaleX: 1,\n scaleY: 1,\n };\n }\n var rect = this.content.getBoundingClientRect();\n return {\n top: rect.top,\n left: rect.left,\n scaleX: rect.width / this.content.clientWidth || 1,\n scaleY: rect.height / this.content.clientHeight || 1,\n };\n }\n _buildDOM() {\n this.bufferCanvas = new Canvas_1.SceneCanvas({\n width: this.width(),\n height: this.height(),\n });\n this.bufferHitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n width: this.width(),\n height: this.height(),\n });\n if (!Global_1.Konva.isBrowser) {\n return;\n }\n var container = this.container();\n if (!container) {\n throw 'Stage has no container. A container is required.';\n }\n container.innerHTML = '';\n this.content = document.createElement('div');\n this.content.style.position = 'relative';\n this.content.style.userSelect = 'none';\n this.content.className = 'konvajs-content';\n this.content.setAttribute('role', 'presentation');\n container.appendChild(this.content);\n this._resizeDOM();\n }\n cache() {\n Util_1.Util.warn('Cache function is not allowed for stage. You may use cache only for layers, groups and shapes.');\n return this;\n }\n clearCache() {\n return this;\n }\n batchDraw() {\n this.getChildren().forEach(function (layer) {\n layer.batchDraw();\n });\n return this;\n }\n}\nexports.Stage = Stage;\nStage.prototype.nodeType = STAGE;\n(0, Global_2._registerNode)(Stage);\nFactory_1.Factory.addGetterSetter(Stage, 'container');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Shape = exports.shapes = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Factory_1 = require(\"./Factory\");\nconst Node_1 = require(\"./Node\");\nconst Validators_1 = require(\"./Validators\");\nconst Global_2 = require(\"./Global\");\nconst PointerEvents = require(\"./PointerEvents\");\nvar HAS_SHADOW = 'hasShadow';\nvar SHADOW_RGBA = 'shadowRGBA';\nvar patternImage = 'patternImage';\nvar linearGradient = 'linearGradient';\nvar radialGradient = 'radialGradient';\nlet dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext('2d');\n return dummyContext;\n}\nexports.shapes = {};\nfunction _fillFunc(context) {\n const fillRule = this.attrs.fillRule;\n if (fillRule) {\n context.fill(fillRule);\n }\n else {\n context.fill();\n }\n}\nfunction _strokeFunc(context) {\n context.stroke();\n}\nfunction _fillFuncHit(context) {\n context.fill();\n}\nfunction _strokeFuncHit(context) {\n context.stroke();\n}\nfunction _clearHasShadowCache() {\n this._clearCache(HAS_SHADOW);\n}\nfunction _clearGetShadowRGBACache() {\n this._clearCache(SHADOW_RGBA);\n}\nfunction _clearFillPatternCache() {\n this._clearCache(patternImage);\n}\nfunction _clearLinearGradientCache() {\n this._clearCache(linearGradient);\n}\nfunction _clearRadialGradientCache() {\n this._clearCache(radialGradient);\n}\nclass Shape extends Node_1.Node {\n constructor(config) {\n super(config);\n let key;\n while (true) {\n key = Util_1.Util.getRandomColor();\n if (key && !(key in exports.shapes)) {\n break;\n }\n }\n this.colorKey = key;\n exports.shapes[key] = this;\n }\n getContext() {\n Util_1.Util.warn('shape.getContext() method is deprecated. Please do not use it.');\n return this.getLayer().getContext();\n }\n getCanvas() {\n Util_1.Util.warn('shape.getCanvas() method is deprecated. Please do not use it.');\n return this.getLayer().getCanvas();\n }\n getSceneFunc() {\n return this.attrs.sceneFunc || this['_sceneFunc'];\n }\n getHitFunc() {\n return this.attrs.hitFunc || this['_hitFunc'];\n }\n hasShadow() {\n return this._getCache(HAS_SHADOW, this._hasShadow);\n }\n _hasShadow() {\n return (this.shadowEnabled() &&\n this.shadowOpacity() !== 0 &&\n !!(this.shadowColor() ||\n this.shadowBlur() ||\n this.shadowOffsetX() ||\n this.shadowOffsetY()));\n }\n _getFillPattern() {\n return this._getCache(patternImage, this.__getFillPattern);\n }\n __getFillPattern() {\n if (this.fillPatternImage()) {\n var ctx = getDummyContext();\n const pattern = ctx.createPattern(this.fillPatternImage(), this.fillPatternRepeat() || 'repeat');\n if (pattern && pattern.setTransform) {\n const tr = new Util_1.Transform();\n tr.translate(this.fillPatternX(), this.fillPatternY());\n tr.rotate(Global_1.Konva.getAngle(this.fillPatternRotation()));\n tr.scale(this.fillPatternScaleX(), this.fillPatternScaleY());\n tr.translate(-1 * this.fillPatternOffsetX(), -1 * this.fillPatternOffsetY());\n const m = tr.getMatrix();\n const matrix = typeof DOMMatrix === 'undefined'\n ? {\n a: m[0],\n b: m[1],\n c: m[2],\n d: m[3],\n e: m[4],\n f: m[5],\n }\n : new DOMMatrix(m);\n pattern.setTransform(matrix);\n }\n return pattern;\n }\n }\n _getLinearGradient() {\n return this._getCache(linearGradient, this.__getLinearGradient);\n }\n __getLinearGradient() {\n var colorStops = this.fillLinearGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillLinearGradientStartPoint();\n var end = this.fillLinearGradientEndPoint();\n var grd = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n _getRadialGradient() {\n return this._getCache(radialGradient, this.__getRadialGradient);\n }\n __getRadialGradient() {\n var colorStops = this.fillRadialGradientColorStops();\n if (colorStops) {\n var ctx = getDummyContext();\n var start = this.fillRadialGradientStartPoint();\n var end = this.fillRadialGradientEndPoint();\n var grd = ctx.createRadialGradient(start.x, start.y, this.fillRadialGradientStartRadius(), end.x, end.y, this.fillRadialGradientEndRadius());\n for (var n = 0; n < colorStops.length; n += 2) {\n grd.addColorStop(colorStops[n], colorStops[n + 1]);\n }\n return grd;\n }\n }\n getShadowRGBA() {\n return this._getCache(SHADOW_RGBA, this._getShadowRGBA);\n }\n _getShadowRGBA() {\n if (!this.hasShadow()) {\n return;\n }\n var rgba = Util_1.Util.colorToRGBA(this.shadowColor());\n if (rgba) {\n return ('rgba(' +\n rgba.r +\n ',' +\n rgba.g +\n ',' +\n rgba.b +\n ',' +\n rgba.a * (this.shadowOpacity() || 1) +\n ')');\n }\n }\n hasFill() {\n return this._calculate('hasFill', [\n 'fillEnabled',\n 'fill',\n 'fillPatternImage',\n 'fillLinearGradientColorStops',\n 'fillRadialGradientColorStops',\n ], () => {\n return (this.fillEnabled() &&\n !!(this.fill() ||\n this.fillPatternImage() ||\n this.fillLinearGradientColorStops() ||\n this.fillRadialGradientColorStops()));\n });\n }\n hasStroke() {\n return this._calculate('hasStroke', [\n 'strokeEnabled',\n 'strokeWidth',\n 'stroke',\n 'strokeLinearGradientColorStops',\n ], () => {\n return (this.strokeEnabled() &&\n this.strokeWidth() &&\n !!(this.stroke() || this.strokeLinearGradientColorStops()));\n });\n }\n hasHitStroke() {\n const width = this.hitStrokeWidth();\n if (width === 'auto') {\n return this.hasStroke();\n }\n return this.strokeEnabled() && !!width;\n }\n intersects(point) {\n var stage = this.getStage();\n if (!stage) {\n return false;\n }\n const bufferHitCanvas = stage.bufferHitCanvas;\n bufferHitCanvas.getContext().clear();\n this.drawHit(bufferHitCanvas, undefined, true);\n const p = bufferHitCanvas.context.getImageData(Math.round(point.x), Math.round(point.y), 1, 1).data;\n return p[3] > 0;\n }\n destroy() {\n Node_1.Node.prototype.destroy.call(this);\n delete exports.shapes[this.colorKey];\n delete this.colorKey;\n return this;\n }\n _useBufferCanvas(forceFill) {\n var _a;\n const perfectDrawEnabled = (_a = this.attrs.perfectDrawEnabled) !== null && _a !== void 0 ? _a : true;\n if (!perfectDrawEnabled) {\n return false;\n }\n const hasFill = forceFill || this.hasFill();\n const hasStroke = this.hasStroke();\n const isTransparent = this.getAbsoluteOpacity() !== 1;\n if (hasFill && hasStroke && isTransparent) {\n return true;\n }\n const hasShadow = this.hasShadow();\n const strokeForShadow = this.shadowForStrokeEnabled();\n if (hasFill && hasStroke && hasShadow && strokeForShadow) {\n return true;\n }\n return false;\n }\n setStrokeHitEnabled(val) {\n Util_1.Util.warn('strokeHitEnabled property is deprecated. Please use hitStrokeWidth instead.');\n if (val) {\n this.hitStrokeWidth('auto');\n }\n else {\n this.hitStrokeWidth(0);\n }\n }\n getStrokeHitEnabled() {\n if (this.hitStrokeWidth() === 0) {\n return false;\n }\n else {\n return true;\n }\n }\n getSelfRect() {\n var size = this.size();\n return {\n x: this._centroid ? -size.width / 2 : 0,\n y: this._centroid ? -size.height / 2 : 0,\n width: size.width,\n height: size.height,\n };\n }\n getClientRect(config = {}) {\n const skipTransform = config.skipTransform;\n const relativeTo = config.relativeTo;\n const fillRect = this.getSelfRect();\n const applyStroke = !config.skipStroke && this.hasStroke();\n const strokeWidth = (applyStroke && this.strokeWidth()) || 0;\n const fillAndStrokeWidth = fillRect.width + strokeWidth;\n const fillAndStrokeHeight = fillRect.height + strokeWidth;\n const applyShadow = !config.skipShadow && this.hasShadow();\n const shadowOffsetX = applyShadow ? this.shadowOffsetX() : 0;\n const shadowOffsetY = applyShadow ? this.shadowOffsetY() : 0;\n const preWidth = fillAndStrokeWidth + Math.abs(shadowOffsetX);\n const preHeight = fillAndStrokeHeight + Math.abs(shadowOffsetY);\n const blurRadius = (applyShadow && this.shadowBlur()) || 0;\n const width = preWidth + blurRadius * 2;\n const height = preHeight + blurRadius * 2;\n const rect = {\n width: width,\n height: height,\n x: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetX, 0) +\n fillRect.x,\n y: -(strokeWidth / 2 + blurRadius) +\n Math.min(shadowOffsetY, 0) +\n fillRect.y,\n };\n if (!skipTransform) {\n return this._transformedRect(rect, relativeTo);\n }\n return rect;\n }\n drawScene(can, top, bufferCanvas) {\n var layer = this.getLayer();\n var canvas = can || layer.getCanvas(), context = canvas.getContext(), cachedCanvas = this._getCanvasCache(), drawFunc = this.getSceneFunc(), hasShadow = this.hasShadow(), stage, bufferContext;\n var skipBuffer = canvas.isCache;\n var cachingSelf = top === this;\n if (!this.isVisible() && !cachingSelf) {\n return this;\n }\n if (cachedCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedSceneCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n if (this._useBufferCanvas() && !skipBuffer) {\n stage = this.getStage();\n const bc = bufferCanvas || stage.bufferCanvas;\n bufferContext = bc.getContext();\n bufferContext.clear();\n bufferContext.save();\n bufferContext._applyLineJoin(this);\n var o = this.getAbsoluteTransform(top).getMatrix();\n bufferContext.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n drawFunc.call(this, bufferContext, this);\n bufferContext.restore();\n var ratio = bc.pixelRatio;\n if (hasShadow) {\n context._applyShadow(this);\n }\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n context.drawImage(bc._canvas, 0, 0, bc.width / ratio, bc.height / ratio);\n }\n else {\n context._applyLineJoin(this);\n if (!cachingSelf) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n context._applyOpacity(this);\n context._applyGlobalCompositeOperation(this);\n }\n if (hasShadow) {\n context._applyShadow(this);\n }\n drawFunc.call(this, context, this);\n }\n context.restore();\n return this;\n }\n drawHit(can, top, skipDragCheck = false) {\n if (!this.shouldDrawHit(top, skipDragCheck)) {\n return this;\n }\n var layer = this.getLayer(), canvas = can || layer.hitCanvas, context = canvas && canvas.getContext(), drawFunc = this.hitFunc() || this.sceneFunc(), cachedCanvas = this._getCanvasCache(), cachedHitCanvas = cachedCanvas && cachedCanvas.hit;\n if (!this.colorKey) {\n Util_1.Util.warn('Looks like your canvas has a destroyed shape in it. Do not reuse shape after you destroyed it. If you want to reuse shape you should call remove() instead of destroy()');\n }\n if (cachedHitCanvas) {\n context.save();\n var m = this.getAbsoluteTransform(top).getMatrix();\n context.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n this._drawCachedHitCanvas(context);\n context.restore();\n return this;\n }\n if (!drawFunc) {\n return this;\n }\n context.save();\n context._applyLineJoin(this);\n const selfCache = this === top;\n if (!selfCache) {\n var o = this.getAbsoluteTransform(top).getMatrix();\n context.transform(o[0], o[1], o[2], o[3], o[4], o[5]);\n }\n drawFunc.call(this, context, this);\n context.restore();\n return this;\n }\n drawHitFromCache(alphaThreshold = 0) {\n var cachedCanvas = this._getCanvasCache(), sceneCanvas = this._getCachedSceneCanvas(), hitCanvas = cachedCanvas.hit, hitContext = hitCanvas.getContext(), hitWidth = hitCanvas.getWidth(), hitHeight = hitCanvas.getHeight(), hitImageData, hitData, len, rgbColorKey, i, alpha;\n hitContext.clear();\n hitContext.drawImage(sceneCanvas._canvas, 0, 0, hitWidth, hitHeight);\n try {\n hitImageData = hitContext.getImageData(0, 0, hitWidth, hitHeight);\n hitData = hitImageData.data;\n len = hitData.length;\n rgbColorKey = Util_1.Util._hexToRgb(this.colorKey);\n for (i = 0; i < len; i += 4) {\n alpha = hitData[i + 3];\n if (alpha > alphaThreshold) {\n hitData[i] = rgbColorKey.r;\n hitData[i + 1] = rgbColorKey.g;\n hitData[i + 2] = rgbColorKey.b;\n hitData[i + 3] = 255;\n }\n else {\n hitData[i + 3] = 0;\n }\n }\n hitContext.putImageData(hitImageData, 0, 0);\n }\n catch (e) {\n Util_1.Util.error('Unable to draw hit graph from cached scene canvas. ' + e.message);\n }\n return this;\n }\n hasPointerCapture(pointerId) {\n return PointerEvents.hasPointerCapture(pointerId, this);\n }\n setPointerCapture(pointerId) {\n PointerEvents.setPointerCapture(pointerId, this);\n }\n releaseCapture(pointerId) {\n PointerEvents.releaseCapture(pointerId, this);\n }\n}\nexports.Shape = Shape;\nShape.prototype._fillFunc = _fillFunc;\nShape.prototype._strokeFunc = _strokeFunc;\nShape.prototype._fillFuncHit = _fillFuncHit;\nShape.prototype._strokeFuncHit = _strokeFuncHit;\nShape.prototype._centroid = false;\nShape.prototype.nodeType = 'Shape';\n(0, Global_2._registerNode)(Shape);\nShape.prototype.eventListeners = {};\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowBlurChange.konva shadowOffsetChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearHasShadowCache);\nShape.prototype.on.call(Shape.prototype, 'shadowColorChange.konva shadowOpacityChange.konva shadowEnabledChange.konva', _clearGetShadowRGBACache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillPatternImageChange.konva fillPatternRepeatChange.konva fillPatternScaleXChange.konva fillPatternScaleYChange.konva fillPatternOffsetXChange.konva fillPatternOffsetYChange.konva fillPatternXChange.konva fillPatternYChange.konva fillPatternRotationChange.konva', _clearFillPatternCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillLinearGradientColorStopsChange.konva fillLinearGradientStartPointXChange.konva fillLinearGradientStartPointYChange.konva fillLinearGradientEndPointXChange.konva fillLinearGradientEndPointYChange.konva', _clearLinearGradientCache);\nShape.prototype.on.call(Shape.prototype, 'fillPriorityChange.konva fillRadialGradientColorStopsChange.konva fillRadialGradientStartPointXChange.konva fillRadialGradientStartPointYChange.konva fillRadialGradientEndPointXChange.konva fillRadialGradientEndPointYChange.konva fillRadialGradientStartRadiusChange.konva fillRadialGradientEndRadiusChange.konva', _clearRadialGradientCache);\nFactory_1.Factory.addGetterSetter(Shape, 'stroke', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeWidth', 2, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillAfterStrokeEnabled', false);\nFactory_1.Factory.addGetterSetter(Shape, 'hitStrokeWidth', 'auto', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'strokeHitEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'perfectDrawEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowForStrokeEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'lineJoin');\nFactory_1.Factory.addGetterSetter(Shape, 'lineCap');\nFactory_1.Factory.addGetterSetter(Shape, 'sceneFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'hitFunc');\nFactory_1.Factory.addGetterSetter(Shape, 'dash');\nFactory_1.Factory.addGetterSetter(Shape, 'dashOffset', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowColor', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowBlur', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOpacity', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'shadowOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'shadowOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternImage');\nFactory_1.Factory.addGetterSetter(Shape, 'fill', undefined, (0, Validators_1.getStringOrGradientValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndRadius', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientColorStops');\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRepeat', 'repeat');\nFactory_1.Factory.addGetterSetter(Shape, 'fillEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'shadowEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'dashEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeScaleEnabled', true);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPriority', 'color');\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternOffset', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternOffsetY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillPatternScale', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleX', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternScaleY', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientStartPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'strokeLinearGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillLinearGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'strokeLinearGradientEndPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientStartPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientStartPointY', 0);\nFactory_1.Factory.addComponentsGetterSetter(Shape, 'fillRadialGradientEndPoint', [\n 'x',\n 'y',\n]);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointX', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRadialGradientEndPointY', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillPatternRotation', 0);\nFactory_1.Factory.addGetterSetter(Shape, 'fillRule', undefined, (0, Validators_1.getStringValidator)());\nFactory_1.Factory.backCompat(Shape, {\n dashArray: 'dash',\n getDashArray: 'getDash',\n setDashArray: 'getDash',\n drawFunc: 'sceneFunc',\n getDrawFunc: 'getSceneFunc',\n setDrawFunc: 'setSceneFunc',\n drawHitFunc: 'hitFunc',\n getDrawHitFunc: 'getHitFunc',\n setDrawHitFunc: 'setHitFunc',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Layer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Node_1 = require(\"./Node\");\nconst Factory_1 = require(\"./Factory\");\nconst Canvas_1 = require(\"./Canvas\");\nconst Validators_1 = require(\"./Validators\");\nconst Shape_1 = require(\"./Shape\");\nconst Global_1 = require(\"./Global\");\nvar HASH = '#', BEFORE_DRAW = 'beforeDraw', DRAW = 'draw', INTERSECTION_OFFSETS = [\n { x: 0, y: 0 },\n { x: -1, y: -1 },\n { x: 1, y: -1 },\n { x: 1, y: 1 },\n { x: -1, y: 1 },\n], INTERSECTION_OFFSETS_LEN = INTERSECTION_OFFSETS.length;\nclass Layer extends Container_1.Container {\n constructor(config) {\n super(config);\n this.canvas = new Canvas_1.SceneCanvas();\n this.hitCanvas = new Canvas_1.HitCanvas({\n pixelRatio: 1,\n });\n this._waitingForDraw = false;\n this.on('visibleChange.konva', this._checkVisibility);\n this._checkVisibility();\n this.on('imageSmoothingEnabledChange.konva', this._setSmoothEnabled);\n this._setSmoothEnabled();\n }\n createPNGStream() {\n const c = this.canvas._canvas;\n return c.createPNGStream();\n }\n getCanvas() {\n return this.canvas;\n }\n getNativeCanvasElement() {\n return this.canvas._canvas;\n }\n getHitCanvas() {\n return this.hitCanvas;\n }\n getContext() {\n return this.getCanvas().getContext();\n }\n clear(bounds) {\n this.getContext().clear(bounds);\n this.getHitCanvas().getContext().clear(bounds);\n return this;\n }\n setZIndex(index) {\n super.setZIndex(index);\n var stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n if (index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n }\n return this;\n }\n moveToTop() {\n Node_1.Node.prototype.moveToTop.call(this);\n var stage = this.getStage();\n if (stage && stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveUp() {\n var moved = Node_1.Node.prototype.moveUp.call(this);\n if (!moved) {\n return false;\n }\n var stage = this.getStage();\n if (!stage || !stage.content) {\n return false;\n }\n stage.content.removeChild(this.getNativeCanvasElement());\n if (this.index < stage.children.length - 1) {\n stage.content.insertBefore(this.getNativeCanvasElement(), stage.children[this.index + 1].getCanvas()._canvas);\n }\n else {\n stage.content.appendChild(this.getNativeCanvasElement());\n }\n return true;\n }\n moveDown() {\n if (Node_1.Node.prototype.moveDown.call(this)) {\n var stage = this.getStage();\n if (stage) {\n var children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[this.index + 1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n moveToBottom() {\n if (Node_1.Node.prototype.moveToBottom.call(this)) {\n var stage = this.getStage();\n if (stage) {\n var children = stage.children;\n if (stage.content) {\n stage.content.removeChild(this.getNativeCanvasElement());\n stage.content.insertBefore(this.getNativeCanvasElement(), children[1].getCanvas()._canvas);\n }\n }\n return true;\n }\n return false;\n }\n getLayer() {\n return this;\n }\n remove() {\n var _canvas = this.getNativeCanvasElement();\n Node_1.Node.prototype.remove.call(this);\n if (_canvas && _canvas.parentNode && Util_1.Util._isInDocument(_canvas)) {\n _canvas.parentNode.removeChild(_canvas);\n }\n return this;\n }\n getStage() {\n return this.parent;\n }\n setSize({ width, height }) {\n this.canvas.setSize(width, height);\n this.hitCanvas.setSize(width, height);\n this._setSmoothEnabled();\n return this;\n }\n _validateAdd(child) {\n var type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to a layer.');\n }\n }\n _toKonvaCanvas(config) {\n config = config || {};\n config.width = config.width || this.getWidth();\n config.height = config.height || this.getHeight();\n config.x = config.x !== undefined ? config.x : this.x();\n config.y = config.y !== undefined ? config.y : this.y();\n return Node_1.Node.prototype._toKonvaCanvas.call(this, config);\n }\n _checkVisibility() {\n const visible = this.visible();\n if (visible) {\n this.canvas._canvas.style.display = 'block';\n }\n else {\n this.canvas._canvas.style.display = 'none';\n }\n }\n _setSmoothEnabled() {\n this.getContext()._context.imageSmoothingEnabled =\n this.imageSmoothingEnabled();\n }\n getWidth() {\n if (this.parent) {\n return this.parent.width();\n }\n }\n setWidth() {\n Util_1.Util.warn('Can not change width of layer. Use \"stage.width(value)\" function instead.');\n }\n getHeight() {\n if (this.parent) {\n return this.parent.height();\n }\n }\n setHeight() {\n Util_1.Util.warn('Can not change height of layer. Use \"stage.height(value)\" function instead.');\n }\n batchDraw() {\n if (!this._waitingForDraw) {\n this._waitingForDraw = true;\n Util_1.Util.requestAnimFrame(() => {\n this.draw();\n this._waitingForDraw = false;\n });\n }\n return this;\n }\n getIntersection(pos) {\n if (!this.isListening() || !this.isVisible()) {\n return null;\n }\n var spiralSearchDistance = 1;\n var continueSearch = false;\n while (true) {\n for (let i = 0; i < INTERSECTION_OFFSETS_LEN; i++) {\n const intersectionOffset = INTERSECTION_OFFSETS[i];\n const obj = this._getIntersection({\n x: pos.x + intersectionOffset.x * spiralSearchDistance,\n y: pos.y + intersectionOffset.y * spiralSearchDistance,\n });\n const shape = obj.shape;\n if (shape) {\n return shape;\n }\n continueSearch = !!obj.antialiased;\n if (!obj.antialiased) {\n break;\n }\n }\n if (continueSearch) {\n spiralSearchDistance += 1;\n }\n else {\n return null;\n }\n }\n }\n _getIntersection(pos) {\n const ratio = this.hitCanvas.pixelRatio;\n const p = this.hitCanvas.context.getImageData(Math.round(pos.x * ratio), Math.round(pos.y * ratio), 1, 1).data;\n const p3 = p[3];\n if (p3 === 255) {\n const colorKey = Util_1.Util._rgbToHex(p[0], p[1], p[2]);\n const shape = Shape_1.shapes[HASH + colorKey];\n if (shape) {\n return {\n shape: shape,\n };\n }\n return {\n antialiased: true,\n };\n }\n else if (p3 > 0) {\n return {\n antialiased: true,\n };\n }\n return {};\n }\n drawScene(can, top) {\n var layer = this.getLayer(), canvas = can || (layer && layer.getCanvas());\n this._fire(BEFORE_DRAW, {\n node: this,\n });\n if (this.clearBeforeDraw()) {\n canvas.getContext().clear();\n }\n Container_1.Container.prototype.drawScene.call(this, canvas, top);\n this._fire(DRAW, {\n node: this,\n });\n return this;\n }\n drawHit(can, top) {\n var layer = this.getLayer(), canvas = can || (layer && layer.hitCanvas);\n if (layer && layer.clearBeforeDraw()) {\n layer.getHitCanvas().getContext().clear();\n }\n Container_1.Container.prototype.drawHit.call(this, canvas, top);\n return this;\n }\n enableHitGraph() {\n this.hitGraphEnabled(true);\n return this;\n }\n disableHitGraph() {\n this.hitGraphEnabled(false);\n return this;\n }\n setHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n this.listening(val);\n }\n getHitGraphEnabled(val) {\n Util_1.Util.warn('hitGraphEnabled method is deprecated. Please use layer.listening() instead.');\n return this.listening();\n }\n toggleHitCanvas() {\n if (!this.parent || !this.parent['content']) {\n return;\n }\n var parent = this.parent;\n var added = !!this.hitCanvas._canvas.parentNode;\n if (added) {\n parent.content.removeChild(this.hitCanvas._canvas);\n }\n else {\n parent.content.appendChild(this.hitCanvas._canvas);\n }\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.getNativeCanvasElement(), this.getHitCanvas()._canvas);\n return super.destroy();\n }\n}\nexports.Layer = Layer;\nLayer.prototype.nodeType = 'Layer';\n(0, Global_1._registerNode)(Layer);\nFactory_1.Factory.addGetterSetter(Layer, 'imageSmoothingEnabled', true);\nFactory_1.Factory.addGetterSetter(Layer, 'clearBeforeDraw', true);\nFactory_1.Factory.addGetterSetter(Layer, 'hitGraphEnabled', true, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FastLayer = void 0;\nconst Util_1 = require(\"./Util\");\nconst Layer_1 = require(\"./Layer\");\nconst Global_1 = require(\"./Global\");\nclass FastLayer extends Layer_1.Layer {\n constructor(attrs) {\n super(attrs);\n this.listening(false);\n Util_1.Util.warn('Konva.Fast layer is deprecated. Please use \"new Konva.Layer({ listening: false })\" instead.');\n }\n}\nexports.FastLayer = FastLayer;\nFastLayer.prototype.nodeType = 'FastLayer';\n(0, Global_1._registerNode)(FastLayer);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Group = void 0;\nconst Util_1 = require(\"./Util\");\nconst Container_1 = require(\"./Container\");\nconst Global_1 = require(\"./Global\");\nclass Group extends Container_1.Container {\n _validateAdd(child) {\n var type = child.getType();\n if (type !== 'Group' && type !== 'Shape') {\n Util_1.Util.throw('You may only add groups and shapes to groups.');\n }\n }\n}\nexports.Group = Group;\nGroup.prototype.nodeType = 'Group';\n(0, Global_1._registerNode)(Group);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Animation = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst now = (function () {\n if (Global_1.glob.performance && Global_1.glob.performance.now) {\n return function () {\n return Global_1.glob.performance.now();\n };\n }\n return function () {\n return new Date().getTime();\n };\n})();\nclass Animation {\n constructor(func, layers) {\n this.id = Animation.animIdCounter++;\n this.frame = {\n time: 0,\n timeDiff: 0,\n lastTime: now(),\n frameRate: 0,\n };\n this.func = func;\n this.setLayers(layers);\n }\n setLayers(layers) {\n let lays = [];\n if (layers) {\n lays = Array.isArray(layers) ? layers : [layers];\n }\n this.layers = lays;\n return this;\n }\n getLayers() {\n return this.layers;\n }\n addLayer(layer) {\n const layers = this.layers;\n const len = layers.length;\n for (let n = 0; n < len; n++) {\n if (layers[n]._id === layer._id) {\n return false;\n }\n }\n this.layers.push(layer);\n return true;\n }\n isRunning() {\n const a = Animation;\n const animations = a.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === this.id) {\n return true;\n }\n }\n return false;\n }\n start() {\n this.stop();\n this.frame.timeDiff = 0;\n this.frame.lastTime = now();\n Animation._addAnimation(this);\n return this;\n }\n stop() {\n Animation._removeAnimation(this);\n return this;\n }\n _updateFrameObject(time) {\n this.frame.timeDiff = time - this.frame.lastTime;\n this.frame.lastTime = time;\n this.frame.time += this.frame.timeDiff;\n this.frame.frameRate = 1000 / this.frame.timeDiff;\n }\n static _addAnimation(anim) {\n this.animations.push(anim);\n this._handleAnimation();\n }\n static _removeAnimation(anim) {\n const id = anim.id;\n const animations = this.animations;\n const len = animations.length;\n for (let n = 0; n < len; n++) {\n if (animations[n].id === id) {\n this.animations.splice(n, 1);\n break;\n }\n }\n }\n static _runFrames() {\n const layerHash = {};\n const animations = this.animations;\n for (let n = 0; n < animations.length; n++) {\n const anim = animations[n];\n const layers = anim.layers;\n const func = anim.func;\n anim._updateFrameObject(now());\n const layersLen = layers.length;\n let needRedraw;\n if (func) {\n needRedraw = func.call(anim, anim.frame) !== false;\n }\n else {\n needRedraw = true;\n }\n if (!needRedraw) {\n continue;\n }\n for (let i = 0; i < layersLen; i++) {\n const layer = layers[i];\n if (layer._id !== undefined) {\n layerHash[layer._id] = layer;\n }\n }\n }\n for (let key in layerHash) {\n if (!layerHash.hasOwnProperty(key)) {\n continue;\n }\n layerHash[key].batchDraw();\n }\n }\n static _animationLoop() {\n const Anim = Animation;\n if (Anim.animations.length) {\n Anim._runFrames();\n Util_1.Util.requestAnimFrame(Anim._animationLoop);\n }\n else {\n Anim.animRunning = false;\n }\n }\n static _handleAnimation() {\n if (!this.animRunning) {\n this.animRunning = true;\n Util_1.Util.requestAnimFrame(this._animationLoop);\n }\n }\n}\nexports.Animation = Animation;\nAnimation.animations = [];\nAnimation.animIdCounter = 0;\nAnimation.animRunning = false;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Easings = exports.Tween = void 0;\nconst Util_1 = require(\"./Util\");\nconst Animation_1 = require(\"./Animation\");\nconst Node_1 = require(\"./Node\");\nconst Global_1 = require(\"./Global\");\nvar blacklist = {\n node: 1,\n duration: 1,\n easing: 1,\n onFinish: 1,\n yoyo: 1,\n}, PAUSED = 1, PLAYING = 2, REVERSING = 3, idCounter = 0, colorAttrs = ['fill', 'stroke', 'shadowColor'];\nclass TweenEngine {\n constructor(prop, propFunc, func, begin, finish, duration, yoyo) {\n this.prop = prop;\n this.propFunc = propFunc;\n this.begin = begin;\n this._pos = begin;\n this.duration = duration;\n this._change = 0;\n this.prevPos = 0;\n this.yoyo = yoyo;\n this._time = 0;\n this._position = 0;\n this._startTime = 0;\n this._finish = 0;\n this.func = func;\n this._change = finish - this.begin;\n this.pause();\n }\n fire(str) {\n var handler = this[str];\n if (handler) {\n handler();\n }\n }\n setTime(t) {\n if (t > this.duration) {\n if (this.yoyo) {\n this._time = this.duration;\n this.reverse();\n }\n else {\n this.finish();\n }\n }\n else if (t < 0) {\n if (this.yoyo) {\n this._time = 0;\n this.play();\n }\n else {\n this.reset();\n }\n }\n else {\n this._time = t;\n this.update();\n }\n }\n getTime() {\n return this._time;\n }\n setPosition(p) {\n this.prevPos = this._pos;\n this.propFunc(p);\n this._pos = p;\n }\n getPosition(t) {\n if (t === undefined) {\n t = this._time;\n }\n return this.func(t, this.begin, this._change, this.duration);\n }\n play() {\n this.state = PLAYING;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onPlay');\n }\n reverse() {\n this.state = REVERSING;\n this._time = this.duration - this._time;\n this._startTime = this.getTimer() - this._time;\n this.onEnterFrame();\n this.fire('onReverse');\n }\n seek(t) {\n this.pause();\n this._time = t;\n this.update();\n this.fire('onSeek');\n }\n reset() {\n this.pause();\n this._time = 0;\n this.update();\n this.fire('onReset');\n }\n finish() {\n this.pause();\n this._time = this.duration;\n this.update();\n this.fire('onFinish');\n }\n update() {\n this.setPosition(this.getPosition(this._time));\n this.fire('onUpdate');\n }\n onEnterFrame() {\n var t = this.getTimer() - this._startTime;\n if (this.state === PLAYING) {\n this.setTime(t);\n }\n else if (this.state === REVERSING) {\n this.setTime(this.duration - t);\n }\n }\n pause() {\n this.state = PAUSED;\n this.fire('onPause');\n }\n getTimer() {\n return new Date().getTime();\n }\n}\nclass Tween {\n constructor(config) {\n var that = this, node = config.node, nodeId = node._id, duration, easing = config.easing || exports.Easings.Linear, yoyo = !!config.yoyo, key;\n if (typeof config.duration === 'undefined') {\n duration = 0.3;\n }\n else if (config.duration === 0) {\n duration = 0.001;\n }\n else {\n duration = config.duration;\n }\n this.node = node;\n this._id = idCounter++;\n var layers = node.getLayer() ||\n (node instanceof Global_1.Konva['Stage'] ? node.getLayers() : null);\n if (!layers) {\n Util_1.Util.error('Tween constructor have `node` that is not in a layer. Please add node into layer first.');\n }\n this.anim = new Animation_1.Animation(function () {\n that.tween.onEnterFrame();\n }, layers);\n this.tween = new TweenEngine(key, function (i) {\n that._tweenFunc(i);\n }, easing, 0, 1, duration * 1000, yoyo);\n this._addListeners();\n if (!Tween.attrs[nodeId]) {\n Tween.attrs[nodeId] = {};\n }\n if (!Tween.attrs[nodeId][this._id]) {\n Tween.attrs[nodeId][this._id] = {};\n }\n if (!Tween.tweens[nodeId]) {\n Tween.tweens[nodeId] = {};\n }\n for (key in config) {\n if (blacklist[key] === undefined) {\n this._addAttr(key, config[key]);\n }\n }\n this.reset();\n this.onFinish = config.onFinish;\n this.onReset = config.onReset;\n this.onUpdate = config.onUpdate;\n }\n _addAttr(key, end) {\n var node = this.node, nodeId = node._id, start, diff, tweenId, n, len, trueEnd, trueStart, endRGBA;\n tweenId = Tween.tweens[nodeId][key];\n if (tweenId) {\n delete Tween.attrs[nodeId][tweenId][key];\n }\n start = node.getAttr(key);\n if (Util_1.Util._isArray(end)) {\n diff = [];\n len = Math.max(end.length, start.length);\n if (key === 'points' && end.length !== start.length) {\n if (end.length > start.length) {\n trueStart = start;\n start = Util_1.Util._prepareArrayForTween(start, end, node.closed());\n }\n else {\n trueEnd = end;\n end = Util_1.Util._prepareArrayForTween(end, start, node.closed());\n }\n }\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n diff.push(end[n] - start[n]);\n }\n else {\n var startRGBA = Util_1.Util.colorToRGBA(start[n]);\n endRGBA = Util_1.Util.colorToRGBA(end[n]);\n start[n] = startRGBA;\n diff.push({\n r: endRGBA.r - startRGBA.r,\n g: endRGBA.g - startRGBA.g,\n b: endRGBA.b - startRGBA.b,\n a: endRGBA.a - startRGBA.a,\n });\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n diff.push(end[n] - start[n]);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n start = Util_1.Util.colorToRGBA(start);\n endRGBA = Util_1.Util.colorToRGBA(end);\n diff = {\n r: endRGBA.r - start.r,\n g: endRGBA.g - start.g,\n b: endRGBA.b - start.b,\n a: endRGBA.a - start.a,\n };\n }\n else {\n diff = end - start;\n }\n Tween.attrs[nodeId][this._id][key] = {\n start: start,\n diff: diff,\n end: end,\n trueEnd: trueEnd,\n trueStart: trueStart,\n };\n Tween.tweens[nodeId][key] = this._id;\n }\n _tweenFunc(i) {\n var node = this.node, attrs = Tween.attrs[node._id][this._id], key, attr, start, diff, newVal, n, len, end;\n for (key in attrs) {\n attr = attrs[key];\n start = attr.start;\n diff = attr.diff;\n end = attr.end;\n if (Util_1.Util._isArray(start)) {\n newVal = [];\n len = Math.max(start.length, end.length);\n if (key.indexOf('fill') === 0) {\n for (n = 0; n < len; n++) {\n if (n % 2 === 0) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n else {\n newVal.push('rgba(' +\n Math.round(start[n].r + diff[n].r * i) +\n ',' +\n Math.round(start[n].g + diff[n].g * i) +\n ',' +\n Math.round(start[n].b + diff[n].b * i) +\n ',' +\n (start[n].a + diff[n].a * i) +\n ')');\n }\n }\n }\n else {\n for (n = 0; n < len; n++) {\n newVal.push((start[n] || 0) + diff[n] * i);\n }\n }\n }\n else if (colorAttrs.indexOf(key) !== -1) {\n newVal =\n 'rgba(' +\n Math.round(start.r + diff.r * i) +\n ',' +\n Math.round(start.g + diff.g * i) +\n ',' +\n Math.round(start.b + diff.b * i) +\n ',' +\n (start.a + diff.a * i) +\n ')';\n }\n else {\n newVal = start + diff * i;\n }\n node.setAttr(key, newVal);\n }\n }\n _addListeners() {\n this.tween.onPlay = () => {\n this.anim.start();\n };\n this.tween.onReverse = () => {\n this.anim.start();\n };\n this.tween.onPause = () => {\n this.anim.stop();\n };\n this.tween.onFinish = () => {\n var node = this.node;\n var attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueEnd) {\n node.setAttr('points', attrs.points.trueEnd);\n }\n if (this.onFinish) {\n this.onFinish.call(this);\n }\n };\n this.tween.onReset = () => {\n var node = this.node;\n var attrs = Tween.attrs[node._id][this._id];\n if (attrs.points && attrs.points.trueStart) {\n node.points(attrs.points.trueStart);\n }\n if (this.onReset) {\n this.onReset();\n }\n };\n this.tween.onUpdate = () => {\n if (this.onUpdate) {\n this.onUpdate.call(this);\n }\n };\n }\n play() {\n this.tween.play();\n return this;\n }\n reverse() {\n this.tween.reverse();\n return this;\n }\n reset() {\n this.tween.reset();\n return this;\n }\n seek(t) {\n this.tween.seek(t * 1000);\n return this;\n }\n pause() {\n this.tween.pause();\n return this;\n }\n finish() {\n this.tween.finish();\n return this;\n }\n destroy() {\n var nodeId = this.node._id, thisId = this._id, attrs = Tween.tweens[nodeId], key;\n this.pause();\n for (key in attrs) {\n delete Tween.tweens[nodeId][key];\n }\n delete Tween.attrs[nodeId][thisId];\n }\n}\nexports.Tween = Tween;\nTween.attrs = {};\nTween.tweens = {};\nNode_1.Node.prototype.to = function (params) {\n var onFinish = params.onFinish;\n params.node = this;\n params.onFinish = function () {\n this.destroy();\n if (onFinish) {\n onFinish();\n }\n };\n var tween = new Tween(params);\n tween.play();\n};\nexports.Easings = {\n BackEaseIn(t, b, c, d) {\n var s = 1.70158;\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n },\n BackEaseOut(t, b, c, d) {\n var s = 1.70158;\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n },\n BackEaseInOut(t, b, c, d) {\n var s = 1.70158;\n if ((t /= d / 2) < 1) {\n return (c / 2) * (t * t * (((s *= 1.525) + 1) * t - s)) + b;\n }\n return (c / 2) * ((t -= 2) * t * (((s *= 1.525) + 1) * t + s) + 2) + b;\n },\n ElasticEaseIn(t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (-(a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) + b);\n },\n ElasticEaseOut(t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d) === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n return (a * Math.pow(2, -10 * t) * Math.sin(((t * d - s) * (2 * Math.PI)) / p) +\n c +\n b);\n },\n ElasticEaseInOut(t, b, c, d, a, p) {\n var s = 0;\n if (t === 0) {\n return b;\n }\n if ((t /= d / 2) === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n if (!a || a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n s = (p / (2 * Math.PI)) * Math.asin(c / a);\n }\n if (t < 1) {\n return (-0.5 *\n (a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p)) +\n b);\n }\n return (a *\n Math.pow(2, -10 * (t -= 1)) *\n Math.sin(((t * d - s) * (2 * Math.PI)) / p) *\n 0.5 +\n c +\n b);\n },\n BounceEaseOut(t, b, c, d) {\n if ((t /= d) < 1 / 2.75) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < 2 / 2.75) {\n return c * (7.5625 * (t -= 1.5 / 2.75) * t + 0.75) + b;\n }\n else if (t < 2.5 / 2.75) {\n return c * (7.5625 * (t -= 2.25 / 2.75) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= 2.625 / 2.75) * t + 0.984375) + b;\n }\n },\n BounceEaseIn(t, b, c, d) {\n return c - exports.Easings.BounceEaseOut(d - t, 0, c, d) + b;\n },\n BounceEaseInOut(t, b, c, d) {\n if (t < d / 2) {\n return exports.Easings.BounceEaseIn(t * 2, 0, c, d) * 0.5 + b;\n }\n else {\n return exports.Easings.BounceEaseOut(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n },\n EaseIn(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n EaseOut(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n EaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t + b;\n }\n return (-c / 2) * (--t * (t - 2) - 1) + b;\n },\n StrongEaseIn(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n },\n StrongEaseOut(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n },\n StrongEaseInOut(t, b, c, d) {\n if ((t /= d / 2) < 1) {\n return (c / 2) * t * t * t * t * t + b;\n }\n return (c / 2) * ((t -= 2) * t * t * t * t + 2) + b;\n },\n Linear(t, b, c, d) {\n return (c * t) / d + b;\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst Global_1 = require(\"./Global\");\nconst Util_1 = require(\"./Util\");\nconst Node_1 = require(\"./Node\");\nconst Container_1 = require(\"./Container\");\nconst Stage_1 = require(\"./Stage\");\nconst Layer_1 = require(\"./Layer\");\nconst FastLayer_1 = require(\"./FastLayer\");\nconst Group_1 = require(\"./Group\");\nconst DragAndDrop_1 = require(\"./DragAndDrop\");\nconst Shape_1 = require(\"./Shape\");\nconst Animation_1 = require(\"./Animation\");\nconst Tween_1 = require(\"./Tween\");\nconst Context_1 = require(\"./Context\");\nconst Canvas_1 = require(\"./Canvas\");\nexports.Konva = Util_1.Util._assign(Global_1.Konva, {\n Util: Util_1.Util,\n Transform: Util_1.Transform,\n Node: Node_1.Node,\n Container: Container_1.Container,\n Stage: Stage_1.Stage,\n stages: Stage_1.stages,\n Layer: Layer_1.Layer,\n FastLayer: FastLayer_1.FastLayer,\n Group: Group_1.Group,\n DD: DragAndDrop_1.DD,\n Shape: Shape_1.Shape,\n shapes: Shape_1.shapes,\n Animation: Animation_1.Animation,\n Tween: Tween_1.Tween,\n Easings: Tween_1.Easings,\n Context: Context_1.Context,\n Canvas: Canvas_1.Canvas,\n});\nexports.default = exports.Konva;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arc = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Arc extends Shape_1.Shape {\n _sceneFunc(context) {\n var angle = Global_1.Konva.getAngle(this.angle()), clockwise = this.clockwise();\n context.beginPath();\n context.arc(0, 0, this.outerRadius(), 0, angle, clockwise);\n context.arc(0, 0, this.innerRadius(), angle, 0, !clockwise);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n getSelfRect() {\n const innerRadius = this.innerRadius();\n const outerRadius = this.outerRadius();\n const clockwise = this.clockwise();\n const angle = Global_1.Konva.getAngle(clockwise ? 360 - this.angle() : this.angle());\n const boundLeftRatio = Math.cos(Math.min(angle, Math.PI));\n const boundRightRatio = 1;\n const boundTopRatio = Math.sin(Math.min(Math.max(Math.PI, angle), (3 * Math.PI) / 2));\n const boundBottomRatio = Math.sin(Math.min(angle, Math.PI / 2));\n const boundLeft = boundLeftRatio * (boundLeftRatio > 0 ? innerRadius : outerRadius);\n const boundRight = boundRightRatio * (boundRightRatio > 0 ? outerRadius : innerRadius);\n const boundTop = boundTopRatio * (boundTopRatio > 0 ? innerRadius : outerRadius);\n const boundBottom = boundBottomRatio * (boundBottomRatio > 0 ? outerRadius : innerRadius);\n return {\n x: boundLeft,\n y: clockwise ? -1 * boundBottom : boundTop,\n width: boundRight - boundLeft,\n height: boundBottom - boundTop,\n };\n }\n}\nexports.Arc = Arc;\nArc.prototype._centroid = true;\nArc.prototype.className = 'Arc';\nArc.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_2._registerNode)(Arc);\nFactory_1.Factory.addGetterSetter(Arc, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arc, 'clockwise', false, (0, Validators_1.getBooleanValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Line = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nfunction getControlPoints(x0, y0, x1, y1, x2, y2, t) {\n var d01 = Math.sqrt(Math.pow(x1 - x0, 2) + Math.pow(y1 - y0, 2)), d12 = Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2)), fa = (t * d01) / (d01 + d12), fb = (t * d12) / (d01 + d12), p1x = x1 - fa * (x2 - x0), p1y = y1 - fa * (y2 - y0), p2x = x1 + fb * (x2 - x0), p2y = y1 + fb * (y2 - y0);\n return [p1x, p1y, p2x, p2y];\n}\nfunction expandPoints(p, tension) {\n var len = p.length, allPoints = [], n, cp;\n for (n = 2; n < len - 2; n += 2) {\n cp = getControlPoints(p[n - 2], p[n - 1], p[n], p[n + 1], p[n + 2], p[n + 3], tension);\n if (isNaN(cp[0])) {\n continue;\n }\n allPoints.push(cp[0]);\n allPoints.push(cp[1]);\n allPoints.push(p[n]);\n allPoints.push(p[n + 1]);\n allPoints.push(cp[2]);\n allPoints.push(cp[3]);\n }\n return allPoints;\n}\nclass Line extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.on('pointsChange.konva tensionChange.konva closedChange.konva bezierChange.konva', function () {\n this._clearCache('tensionPoints');\n });\n }\n _sceneFunc(context) {\n var points = this.points(), length = points.length, tension = this.tension(), closed = this.closed(), bezier = this.bezier(), tp, len, n;\n if (!length) {\n return;\n }\n context.beginPath();\n context.moveTo(points[0], points[1]);\n if (tension !== 0 && length > 4) {\n tp = this.getTensionPoints();\n len = tp.length;\n n = closed ? 0 : 4;\n if (!closed) {\n context.quadraticCurveTo(tp[0], tp[1], tp[2], tp[3]);\n }\n while (n < len - 2) {\n context.bezierCurveTo(tp[n++], tp[n++], tp[n++], tp[n++], tp[n++], tp[n++]);\n }\n if (!closed) {\n context.quadraticCurveTo(tp[len - 2], tp[len - 1], points[length - 2], points[length - 1]);\n }\n }\n else if (bezier) {\n n = 2;\n while (n < length) {\n context.bezierCurveTo(points[n++], points[n++], points[n++], points[n++], points[n++], points[n++]);\n }\n }\n else {\n for (n = 2; n < length; n += 2) {\n context.lineTo(points[n], points[n + 1]);\n }\n }\n if (closed) {\n context.closePath();\n context.fillStrokeShape(this);\n }\n else {\n context.strokeShape(this);\n }\n }\n getTensionPoints() {\n return this._getCache('tensionPoints', this._getTensionPoints);\n }\n _getTensionPoints() {\n if (this.closed()) {\n return this._getTensionPointsClosed();\n }\n else {\n return expandPoints(this.points(), this.tension());\n }\n }\n _getTensionPointsClosed() {\n var p = this.points(), len = p.length, tension = this.tension(), firstControlPoints = getControlPoints(p[len - 2], p[len - 1], p[0], p[1], p[2], p[3], tension), lastControlPoints = getControlPoints(p[len - 4], p[len - 3], p[len - 2], p[len - 1], p[0], p[1], tension), middle = expandPoints(p, tension), tp = [firstControlPoints[2], firstControlPoints[3]]\n .concat(middle)\n .concat([\n lastControlPoints[0],\n lastControlPoints[1],\n p[len - 2],\n p[len - 1],\n lastControlPoints[2],\n lastControlPoints[3],\n firstControlPoints[0],\n firstControlPoints[1],\n p[0],\n p[1],\n ]);\n return tp;\n }\n getWidth() {\n return this.getSelfRect().width;\n }\n getHeight() {\n return this.getSelfRect().height;\n }\n getSelfRect() {\n var points = this.points();\n if (points.length < 4) {\n return {\n x: points[0] || 0,\n y: points[1] || 0,\n width: 0,\n height: 0,\n };\n }\n if (this.tension() !== 0) {\n points = [\n points[0],\n points[1],\n ...this._getTensionPoints(),\n points[points.length - 2],\n points[points.length - 1],\n ];\n }\n else {\n points = this.points();\n }\n var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n}\nexports.Line = Line;\nLine.prototype.className = 'Line';\nLine.prototype._attrsAffectingSize = ['points', 'bezier', 'tension'];\n(0, Global_1._registerNode)(Line);\nFactory_1.Factory.addGetterSetter(Line, 'closed', false);\nFactory_1.Factory.addGetterSetter(Line, 'bezier', false);\nFactory_1.Factory.addGetterSetter(Line, 'tension', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Line, 'points', [], (0, Validators_1.getNumberArrayValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.t2length = exports.getQuadraticArcLength = exports.getCubicArcLength = exports.binomialCoefficients = exports.cValues = exports.tValues = void 0;\nexports.tValues = [\n [],\n [],\n [\n -0.5773502691896257645091487805019574556476,\n 0.5773502691896257645091487805019574556476,\n ],\n [\n 0, -0.7745966692414833770358530799564799221665,\n 0.7745966692414833770358530799564799221665,\n ],\n [\n -0.3399810435848562648026657591032446872005,\n 0.3399810435848562648026657591032446872005,\n -0.8611363115940525752239464888928095050957,\n 0.8611363115940525752239464888928095050957,\n ],\n [\n 0, -0.5384693101056830910363144207002088049672,\n 0.5384693101056830910363144207002088049672,\n -0.9061798459386639927976268782993929651256,\n 0.9061798459386639927976268782993929651256,\n ],\n [\n 0.6612093864662645136613995950199053470064,\n -0.6612093864662645136613995950199053470064,\n -0.2386191860831969086305017216807119354186,\n 0.2386191860831969086305017216807119354186,\n -0.9324695142031520278123015544939946091347,\n 0.9324695142031520278123015544939946091347,\n ],\n [\n 0, 0.4058451513773971669066064120769614633473,\n -0.4058451513773971669066064120769614633473,\n -0.7415311855993944398638647732807884070741,\n 0.7415311855993944398638647732807884070741,\n -0.9491079123427585245261896840478512624007,\n 0.9491079123427585245261896840478512624007,\n ],\n [\n -0.1834346424956498049394761423601839806667,\n 0.1834346424956498049394761423601839806667,\n -0.5255324099163289858177390491892463490419,\n 0.5255324099163289858177390491892463490419,\n -0.7966664774136267395915539364758304368371,\n 0.7966664774136267395915539364758304368371,\n -0.9602898564975362316835608685694729904282,\n 0.9602898564975362316835608685694729904282,\n ],\n [\n 0, -0.8360311073266357942994297880697348765441,\n 0.8360311073266357942994297880697348765441,\n -0.9681602395076260898355762029036728700494,\n 0.9681602395076260898355762029036728700494,\n -0.3242534234038089290385380146433366085719,\n 0.3242534234038089290385380146433366085719,\n -0.6133714327005903973087020393414741847857,\n 0.6133714327005903973087020393414741847857,\n ],\n [\n -0.1488743389816312108848260011297199846175,\n 0.1488743389816312108848260011297199846175,\n -0.4333953941292471907992659431657841622,\n 0.4333953941292471907992659431657841622,\n -0.6794095682990244062343273651148735757692,\n 0.6794095682990244062343273651148735757692,\n -0.8650633666889845107320966884234930485275,\n 0.8650633666889845107320966884234930485275,\n -0.9739065285171717200779640120844520534282,\n 0.9739065285171717200779640120844520534282,\n ],\n [\n 0, -0.2695431559523449723315319854008615246796,\n 0.2695431559523449723315319854008615246796,\n -0.5190961292068118159257256694586095544802,\n 0.5190961292068118159257256694586095544802,\n -0.7301520055740493240934162520311534580496,\n 0.7301520055740493240934162520311534580496,\n -0.8870625997680952990751577693039272666316,\n 0.8870625997680952990751577693039272666316,\n -0.9782286581460569928039380011228573907714,\n 0.9782286581460569928039380011228573907714,\n ],\n [\n -0.1252334085114689154724413694638531299833,\n 0.1252334085114689154724413694638531299833,\n -0.3678314989981801937526915366437175612563,\n 0.3678314989981801937526915366437175612563,\n -0.587317954286617447296702418940534280369,\n 0.587317954286617447296702418940534280369,\n -0.7699026741943046870368938332128180759849,\n 0.7699026741943046870368938332128180759849,\n -0.9041172563704748566784658661190961925375,\n 0.9041172563704748566784658661190961925375,\n -0.9815606342467192506905490901492808229601,\n 0.9815606342467192506905490901492808229601,\n ],\n [\n 0, -0.2304583159551347940655281210979888352115,\n 0.2304583159551347940655281210979888352115,\n -0.4484927510364468528779128521276398678019,\n 0.4484927510364468528779128521276398678019,\n -0.6423493394403402206439846069955156500716,\n 0.6423493394403402206439846069955156500716,\n -0.8015780907333099127942064895828598903056,\n 0.8015780907333099127942064895828598903056,\n -0.9175983992229779652065478365007195123904,\n 0.9175983992229779652065478365007195123904,\n -0.9841830547185881494728294488071096110649,\n 0.9841830547185881494728294488071096110649,\n ],\n [\n -0.1080549487073436620662446502198347476119,\n 0.1080549487073436620662446502198347476119,\n -0.3191123689278897604356718241684754668342,\n 0.3191123689278897604356718241684754668342,\n -0.5152486363581540919652907185511886623088,\n 0.5152486363581540919652907185511886623088,\n -0.6872929048116854701480198030193341375384,\n 0.6872929048116854701480198030193341375384,\n -0.8272013150697649931897947426503949610397,\n 0.8272013150697649931897947426503949610397,\n -0.928434883663573517336391139377874264477,\n 0.928434883663573517336391139377874264477,\n -0.986283808696812338841597266704052801676,\n 0.986283808696812338841597266704052801676,\n ],\n [\n 0, -0.2011940939974345223006283033945962078128,\n 0.2011940939974345223006283033945962078128,\n -0.3941513470775633698972073709810454683627,\n 0.3941513470775633698972073709810454683627,\n -0.5709721726085388475372267372539106412383,\n 0.5709721726085388475372267372539106412383,\n -0.7244177313601700474161860546139380096308,\n 0.7244177313601700474161860546139380096308,\n -0.8482065834104272162006483207742168513662,\n 0.8482065834104272162006483207742168513662,\n -0.9372733924007059043077589477102094712439,\n 0.9372733924007059043077589477102094712439,\n -0.9879925180204854284895657185866125811469,\n 0.9879925180204854284895657185866125811469,\n ],\n [\n -0.0950125098376374401853193354249580631303,\n 0.0950125098376374401853193354249580631303,\n -0.281603550779258913230460501460496106486,\n 0.281603550779258913230460501460496106486,\n -0.45801677765722738634241944298357757354,\n 0.45801677765722738634241944298357757354,\n -0.6178762444026437484466717640487910189918,\n 0.6178762444026437484466717640487910189918,\n -0.7554044083550030338951011948474422683538,\n 0.7554044083550030338951011948474422683538,\n -0.8656312023878317438804678977123931323873,\n 0.8656312023878317438804678977123931323873,\n -0.9445750230732325760779884155346083450911,\n 0.9445750230732325760779884155346083450911,\n -0.9894009349916499325961541734503326274262,\n 0.9894009349916499325961541734503326274262,\n ],\n [\n 0, -0.1784841814958478558506774936540655574754,\n 0.1784841814958478558506774936540655574754,\n -0.3512317634538763152971855170953460050405,\n 0.3512317634538763152971855170953460050405,\n -0.5126905370864769678862465686295518745829,\n 0.5126905370864769678862465686295518745829,\n -0.6576711592166907658503022166430023351478,\n 0.6576711592166907658503022166430023351478,\n -0.7815140038968014069252300555204760502239,\n 0.7815140038968014069252300555204760502239,\n -0.8802391537269859021229556944881556926234,\n 0.8802391537269859021229556944881556926234,\n -0.9506755217687677612227169578958030214433,\n 0.9506755217687677612227169578958030214433,\n -0.9905754753144173356754340199406652765077,\n 0.9905754753144173356754340199406652765077,\n ],\n [\n -0.0847750130417353012422618529357838117333,\n 0.0847750130417353012422618529357838117333,\n -0.2518862256915055095889728548779112301628,\n 0.2518862256915055095889728548779112301628,\n -0.4117511614628426460359317938330516370789,\n 0.4117511614628426460359317938330516370789,\n -0.5597708310739475346078715485253291369276,\n 0.5597708310739475346078715485253291369276,\n -0.6916870430603532078748910812888483894522,\n 0.6916870430603532078748910812888483894522,\n -0.8037049589725231156824174550145907971032,\n 0.8037049589725231156824174550145907971032,\n -0.8926024664975557392060605911271455154078,\n 0.8926024664975557392060605911271455154078,\n -0.9558239495713977551811958929297763099728,\n 0.9558239495713977551811958929297763099728,\n -0.9915651684209309467300160047061507702525,\n 0.9915651684209309467300160047061507702525,\n ],\n [\n 0, -0.1603586456402253758680961157407435495048,\n 0.1603586456402253758680961157407435495048,\n -0.3165640999636298319901173288498449178922,\n 0.3165640999636298319901173288498449178922,\n -0.4645707413759609457172671481041023679762,\n 0.4645707413759609457172671481041023679762,\n -0.6005453046616810234696381649462392798683,\n 0.6005453046616810234696381649462392798683,\n -0.7209661773352293786170958608237816296571,\n 0.7209661773352293786170958608237816296571,\n -0.8227146565371428249789224867127139017745,\n 0.8227146565371428249789224867127139017745,\n -0.9031559036148179016426609285323124878093,\n 0.9031559036148179016426609285323124878093,\n -0.960208152134830030852778840687651526615,\n 0.960208152134830030852778840687651526615,\n -0.9924068438435844031890176702532604935893,\n 0.9924068438435844031890176702532604935893,\n ],\n [\n -0.0765265211334973337546404093988382110047,\n 0.0765265211334973337546404093988382110047,\n -0.227785851141645078080496195368574624743,\n 0.227785851141645078080496195368574624743,\n -0.3737060887154195606725481770249272373957,\n 0.3737060887154195606725481770249272373957,\n -0.5108670019508270980043640509552509984254,\n 0.5108670019508270980043640509552509984254,\n -0.6360536807265150254528366962262859367433,\n 0.6360536807265150254528366962262859367433,\n -0.7463319064601507926143050703556415903107,\n 0.7463319064601507926143050703556415903107,\n -0.8391169718222188233945290617015206853296,\n 0.8391169718222188233945290617015206853296,\n -0.9122344282513259058677524412032981130491,\n 0.9122344282513259058677524412032981130491,\n -0.963971927277913791267666131197277221912,\n 0.963971927277913791267666131197277221912,\n -0.9931285991850949247861223884713202782226,\n 0.9931285991850949247861223884713202782226,\n ],\n [\n 0, -0.1455618541608950909370309823386863301163,\n 0.1455618541608950909370309823386863301163,\n -0.288021316802401096600792516064600319909,\n 0.288021316802401096600792516064600319909,\n -0.4243421202074387835736688885437880520964,\n 0.4243421202074387835736688885437880520964,\n -0.551618835887219807059018796724313286622,\n 0.551618835887219807059018796724313286622,\n -0.667138804197412319305966669990339162597,\n 0.667138804197412319305966669990339162597,\n -0.7684399634756779086158778513062280348209,\n 0.7684399634756779086158778513062280348209,\n -0.8533633645833172836472506385875676702761,\n 0.8533633645833172836472506385875676702761,\n -0.9200993341504008287901871337149688941591,\n 0.9200993341504008287901871337149688941591,\n -0.9672268385663062943166222149076951614246,\n 0.9672268385663062943166222149076951614246,\n -0.9937521706203895002602420359379409291933,\n 0.9937521706203895002602420359379409291933,\n ],\n [\n -0.0697392733197222212138417961186280818222,\n 0.0697392733197222212138417961186280818222,\n -0.2078604266882212854788465339195457342156,\n 0.2078604266882212854788465339195457342156,\n -0.3419358208920842251581474204273796195591,\n 0.3419358208920842251581474204273796195591,\n -0.4693558379867570264063307109664063460953,\n 0.4693558379867570264063307109664063460953,\n -0.5876404035069115929588769276386473488776,\n 0.5876404035069115929588769276386473488776,\n -0.6944872631866827800506898357622567712673,\n 0.6944872631866827800506898357622567712673,\n -0.7878168059792081620042779554083515213881,\n 0.7878168059792081620042779554083515213881,\n -0.8658125777203001365364256370193787290847,\n 0.8658125777203001365364256370193787290847,\n -0.9269567721871740005206929392590531966353,\n 0.9269567721871740005206929392590531966353,\n -0.9700604978354287271239509867652687108059,\n 0.9700604978354287271239509867652687108059,\n -0.994294585482399292073031421161298980393,\n 0.994294585482399292073031421161298980393,\n ],\n [\n 0, -0.1332568242984661109317426822417661370104,\n 0.1332568242984661109317426822417661370104,\n -0.264135680970344930533869538283309602979,\n 0.264135680970344930533869538283309602979,\n -0.390301038030290831421488872880605458578,\n 0.390301038030290831421488872880605458578,\n -0.5095014778460075496897930478668464305448,\n 0.5095014778460075496897930478668464305448,\n -0.6196098757636461563850973116495956533871,\n 0.6196098757636461563850973116495956533871,\n -0.7186613631319501944616244837486188483299,\n 0.7186613631319501944616244837486188483299,\n -0.8048884016188398921511184069967785579414,\n 0.8048884016188398921511184069967785579414,\n -0.8767523582704416673781568859341456716389,\n 0.8767523582704416673781568859341456716389,\n -0.9329710868260161023491969890384229782357,\n 0.9329710868260161023491969890384229782357,\n -0.9725424712181152319560240768207773751816,\n 0.9725424712181152319560240768207773751816,\n -0.9947693349975521235239257154455743605736,\n 0.9947693349975521235239257154455743605736,\n ],\n [\n -0.0640568928626056260850430826247450385909,\n 0.0640568928626056260850430826247450385909,\n -0.1911188674736163091586398207570696318404,\n 0.1911188674736163091586398207570696318404,\n -0.3150426796961633743867932913198102407864,\n 0.3150426796961633743867932913198102407864,\n -0.4337935076260451384870842319133497124524,\n 0.4337935076260451384870842319133497124524,\n -0.5454214713888395356583756172183723700107,\n 0.5454214713888395356583756172183723700107,\n -0.6480936519369755692524957869107476266696,\n 0.6480936519369755692524957869107476266696,\n -0.7401241915785543642438281030999784255232,\n 0.7401241915785543642438281030999784255232,\n -0.8200019859739029219539498726697452080761,\n 0.8200019859739029219539498726697452080761,\n -0.8864155270044010342131543419821967550873,\n 0.8864155270044010342131543419821967550873,\n -0.9382745520027327585236490017087214496548,\n 0.9382745520027327585236490017087214496548,\n -0.9747285559713094981983919930081690617411,\n 0.9747285559713094981983919930081690617411,\n -0.9951872199970213601799974097007368118745,\n 0.9951872199970213601799974097007368118745,\n ],\n];\nexports.cValues = [\n [],\n [],\n [1.0, 1.0],\n [\n 0.8888888888888888888888888888888888888888,\n 0.5555555555555555555555555555555555555555,\n 0.5555555555555555555555555555555555555555,\n ],\n [\n 0.6521451548625461426269360507780005927646,\n 0.6521451548625461426269360507780005927646,\n 0.3478548451374538573730639492219994072353,\n 0.3478548451374538573730639492219994072353,\n ],\n [\n 0.5688888888888888888888888888888888888888,\n 0.4786286704993664680412915148356381929122,\n 0.4786286704993664680412915148356381929122,\n 0.2369268850561890875142640407199173626432,\n 0.2369268850561890875142640407199173626432,\n ],\n [\n 0.3607615730481386075698335138377161116615,\n 0.3607615730481386075698335138377161116615,\n 0.4679139345726910473898703439895509948116,\n 0.4679139345726910473898703439895509948116,\n 0.1713244923791703450402961421727328935268,\n 0.1713244923791703450402961421727328935268,\n ],\n [\n 0.4179591836734693877551020408163265306122,\n 0.3818300505051189449503697754889751338783,\n 0.3818300505051189449503697754889751338783,\n 0.2797053914892766679014677714237795824869,\n 0.2797053914892766679014677714237795824869,\n 0.1294849661688696932706114326790820183285,\n 0.1294849661688696932706114326790820183285,\n ],\n [\n 0.3626837833783619829651504492771956121941,\n 0.3626837833783619829651504492771956121941,\n 0.3137066458778872873379622019866013132603,\n 0.3137066458778872873379622019866013132603,\n 0.2223810344533744705443559944262408844301,\n 0.2223810344533744705443559944262408844301,\n 0.1012285362903762591525313543099621901153,\n 0.1012285362903762591525313543099621901153,\n ],\n [\n 0.3302393550012597631645250692869740488788,\n 0.1806481606948574040584720312429128095143,\n 0.1806481606948574040584720312429128095143,\n 0.0812743883615744119718921581105236506756,\n 0.0812743883615744119718921581105236506756,\n 0.3123470770400028400686304065844436655987,\n 0.3123470770400028400686304065844436655987,\n 0.2606106964029354623187428694186328497718,\n 0.2606106964029354623187428694186328497718,\n ],\n [\n 0.295524224714752870173892994651338329421,\n 0.295524224714752870173892994651338329421,\n 0.2692667193099963550912269215694693528597,\n 0.2692667193099963550912269215694693528597,\n 0.2190863625159820439955349342281631924587,\n 0.2190863625159820439955349342281631924587,\n 0.1494513491505805931457763396576973324025,\n 0.1494513491505805931457763396576973324025,\n 0.0666713443086881375935688098933317928578,\n 0.0666713443086881375935688098933317928578,\n ],\n [\n 0.272925086777900630714483528336342189156,\n 0.2628045445102466621806888698905091953727,\n 0.2628045445102466621806888698905091953727,\n 0.2331937645919904799185237048431751394317,\n 0.2331937645919904799185237048431751394317,\n 0.1862902109277342514260976414316558916912,\n 0.1862902109277342514260976414316558916912,\n 0.1255803694649046246346942992239401001976,\n 0.1255803694649046246346942992239401001976,\n 0.0556685671161736664827537204425485787285,\n 0.0556685671161736664827537204425485787285,\n ],\n [\n 0.2491470458134027850005624360429512108304,\n 0.2491470458134027850005624360429512108304,\n 0.2334925365383548087608498989248780562594,\n 0.2334925365383548087608498989248780562594,\n 0.2031674267230659217490644558097983765065,\n 0.2031674267230659217490644558097983765065,\n 0.160078328543346226334652529543359071872,\n 0.160078328543346226334652529543359071872,\n 0.1069393259953184309602547181939962242145,\n 0.1069393259953184309602547181939962242145,\n 0.047175336386511827194615961485017060317,\n 0.047175336386511827194615961485017060317,\n ],\n [\n 0.2325515532308739101945895152688359481566,\n 0.2262831802628972384120901860397766184347,\n 0.2262831802628972384120901860397766184347,\n 0.2078160475368885023125232193060527633865,\n 0.2078160475368885023125232193060527633865,\n 0.1781459807619457382800466919960979955128,\n 0.1781459807619457382800466919960979955128,\n 0.1388735102197872384636017768688714676218,\n 0.1388735102197872384636017768688714676218,\n 0.0921214998377284479144217759537971209236,\n 0.0921214998377284479144217759537971209236,\n 0.0404840047653158795200215922009860600419,\n 0.0404840047653158795200215922009860600419,\n ],\n [\n 0.2152638534631577901958764433162600352749,\n 0.2152638534631577901958764433162600352749,\n 0.2051984637212956039659240656612180557103,\n 0.2051984637212956039659240656612180557103,\n 0.1855383974779378137417165901251570362489,\n 0.1855383974779378137417165901251570362489,\n 0.1572031671581935345696019386238421566056,\n 0.1572031671581935345696019386238421566056,\n 0.1215185706879031846894148090724766259566,\n 0.1215185706879031846894148090724766259566,\n 0.0801580871597602098056332770628543095836,\n 0.0801580871597602098056332770628543095836,\n 0.0351194603317518630318328761381917806197,\n 0.0351194603317518630318328761381917806197,\n ],\n [\n 0.2025782419255612728806201999675193148386,\n 0.1984314853271115764561183264438393248186,\n 0.1984314853271115764561183264438393248186,\n 0.1861610000155622110268005618664228245062,\n 0.1861610000155622110268005618664228245062,\n 0.1662692058169939335532008604812088111309,\n 0.1662692058169939335532008604812088111309,\n 0.1395706779261543144478047945110283225208,\n 0.1395706779261543144478047945110283225208,\n 0.1071592204671719350118695466858693034155,\n 0.1071592204671719350118695466858693034155,\n 0.0703660474881081247092674164506673384667,\n 0.0703660474881081247092674164506673384667,\n 0.0307532419961172683546283935772044177217,\n 0.0307532419961172683546283935772044177217,\n ],\n [\n 0.1894506104550684962853967232082831051469,\n 0.1894506104550684962853967232082831051469,\n 0.1826034150449235888667636679692199393835,\n 0.1826034150449235888667636679692199393835,\n 0.1691565193950025381893120790303599622116,\n 0.1691565193950025381893120790303599622116,\n 0.1495959888165767320815017305474785489704,\n 0.1495959888165767320815017305474785489704,\n 0.1246289712555338720524762821920164201448,\n 0.1246289712555338720524762821920164201448,\n 0.0951585116824927848099251076022462263552,\n 0.0951585116824927848099251076022462263552,\n 0.0622535239386478928628438369943776942749,\n 0.0622535239386478928628438369943776942749,\n 0.0271524594117540948517805724560181035122,\n 0.0271524594117540948517805724560181035122,\n ],\n [\n 0.1794464703562065254582656442618856214487,\n 0.1765627053669926463252709901131972391509,\n 0.1765627053669926463252709901131972391509,\n 0.1680041021564500445099706637883231550211,\n 0.1680041021564500445099706637883231550211,\n 0.1540457610768102880814315948019586119404,\n 0.1540457610768102880814315948019586119404,\n 0.1351363684685254732863199817023501973721,\n 0.1351363684685254732863199817023501973721,\n 0.1118838471934039710947883856263559267358,\n 0.1118838471934039710947883856263559267358,\n 0.0850361483171791808835353701910620738504,\n 0.0850361483171791808835353701910620738504,\n 0.0554595293739872011294401653582446605128,\n 0.0554595293739872011294401653582446605128,\n 0.0241483028685479319601100262875653246916,\n 0.0241483028685479319601100262875653246916,\n ],\n [\n 0.1691423829631435918406564701349866103341,\n 0.1691423829631435918406564701349866103341,\n 0.1642764837458327229860537764659275904123,\n 0.1642764837458327229860537764659275904123,\n 0.1546846751262652449254180038363747721932,\n 0.1546846751262652449254180038363747721932,\n 0.1406429146706506512047313037519472280955,\n 0.1406429146706506512047313037519472280955,\n 0.1225552067114784601845191268002015552281,\n 0.1225552067114784601845191268002015552281,\n 0.1009420441062871655628139849248346070628,\n 0.1009420441062871655628139849248346070628,\n 0.0764257302548890565291296776166365256053,\n 0.0764257302548890565291296776166365256053,\n 0.0497145488949697964533349462026386416808,\n 0.0497145488949697964533349462026386416808,\n 0.0216160135264833103133427102664524693876,\n 0.0216160135264833103133427102664524693876,\n ],\n [\n 0.1610544498487836959791636253209167350399,\n 0.1589688433939543476499564394650472016787,\n 0.1589688433939543476499564394650472016787,\n 0.152766042065859666778855400897662998461,\n 0.152766042065859666778855400897662998461,\n 0.1426067021736066117757461094419029724756,\n 0.1426067021736066117757461094419029724756,\n 0.1287539625393362276755157848568771170558,\n 0.1287539625393362276755157848568771170558,\n 0.1115666455473339947160239016817659974813,\n 0.1115666455473339947160239016817659974813,\n 0.0914900216224499994644620941238396526609,\n 0.0914900216224499994644620941238396526609,\n 0.0690445427376412265807082580060130449618,\n 0.0690445427376412265807082580060130449618,\n 0.0448142267656996003328381574019942119517,\n 0.0448142267656996003328381574019942119517,\n 0.0194617882297264770363120414644384357529,\n 0.0194617882297264770363120414644384357529,\n ],\n [\n 0.1527533871307258506980843319550975934919,\n 0.1527533871307258506980843319550975934919,\n 0.1491729864726037467878287370019694366926,\n 0.1491729864726037467878287370019694366926,\n 0.1420961093183820513292983250671649330345,\n 0.1420961093183820513292983250671649330345,\n 0.1316886384491766268984944997481631349161,\n 0.1316886384491766268984944997481631349161,\n 0.118194531961518417312377377711382287005,\n 0.118194531961518417312377377711382287005,\n 0.1019301198172404350367501354803498761666,\n 0.1019301198172404350367501354803498761666,\n 0.0832767415767047487247581432220462061001,\n 0.0832767415767047487247581432220462061001,\n 0.0626720483341090635695065351870416063516,\n 0.0626720483341090635695065351870416063516,\n 0.040601429800386941331039952274932109879,\n 0.040601429800386941331039952274932109879,\n 0.0176140071391521183118619623518528163621,\n 0.0176140071391521183118619623518528163621,\n ],\n [\n 0.1460811336496904271919851476833711882448,\n 0.1445244039899700590638271665537525436099,\n 0.1445244039899700590638271665537525436099,\n 0.1398873947910731547221334238675831108927,\n 0.1398873947910731547221334238675831108927,\n 0.132268938633337461781052574496775604329,\n 0.132268938633337461781052574496775604329,\n 0.1218314160537285341953671771257335983563,\n 0.1218314160537285341953671771257335983563,\n 0.1087972991671483776634745780701056420336,\n 0.1087972991671483776634745780701056420336,\n 0.0934444234560338615532897411139320884835,\n 0.0934444234560338615532897411139320884835,\n 0.0761001136283793020170516533001831792261,\n 0.0761001136283793020170516533001831792261,\n 0.0571344254268572082836358264724479574912,\n 0.0571344254268572082836358264724479574912,\n 0.0369537897708524937999506682993296661889,\n 0.0369537897708524937999506682993296661889,\n 0.0160172282577743333242246168584710152658,\n 0.0160172282577743333242246168584710152658,\n ],\n [\n 0.1392518728556319933754102483418099578739,\n 0.1392518728556319933754102483418099578739,\n 0.1365414983460151713525738312315173965863,\n 0.1365414983460151713525738312315173965863,\n 0.1311735047870623707329649925303074458757,\n 0.1311735047870623707329649925303074458757,\n 0.1232523768105124242855609861548144719594,\n 0.1232523768105124242855609861548144719594,\n 0.1129322960805392183934006074217843191142,\n 0.1129322960805392183934006074217843191142,\n 0.1004141444428809649320788378305362823508,\n 0.1004141444428809649320788378305362823508,\n 0.0859416062170677274144436813727028661891,\n 0.0859416062170677274144436813727028661891,\n 0.0697964684245204880949614189302176573987,\n 0.0697964684245204880949614189302176573987,\n 0.0522933351526832859403120512732112561121,\n 0.0522933351526832859403120512732112561121,\n 0.0337749015848141547933022468659129013491,\n 0.0337749015848141547933022468659129013491,\n 0.0146279952982722006849910980471854451902,\n 0.0146279952982722006849910980471854451902,\n ],\n [\n 0.1336545721861061753514571105458443385831,\n 0.132462039404696617371642464703316925805,\n 0.132462039404696617371642464703316925805,\n 0.1289057221880821499785953393997936532597,\n 0.1289057221880821499785953393997936532597,\n 0.1230490843067295304675784006720096548158,\n 0.1230490843067295304675784006720096548158,\n 0.1149966402224113649416435129339613014914,\n 0.1149966402224113649416435129339613014914,\n 0.1048920914645414100740861850147438548584,\n 0.1048920914645414100740861850147438548584,\n 0.0929157660600351474770186173697646486034,\n 0.0929157660600351474770186173697646486034,\n 0.0792814117767189549228925247420432269137,\n 0.0792814117767189549228925247420432269137,\n 0.0642324214085258521271696151589109980391,\n 0.0642324214085258521271696151589109980391,\n 0.0480376717310846685716410716320339965612,\n 0.0480376717310846685716410716320339965612,\n 0.0309880058569794443106942196418845053837,\n 0.0309880058569794443106942196418845053837,\n 0.0134118594871417720813094934586150649766,\n 0.0134118594871417720813094934586150649766,\n ],\n [\n 0.1279381953467521569740561652246953718517,\n 0.1279381953467521569740561652246953718517,\n 0.1258374563468282961213753825111836887264,\n 0.1258374563468282961213753825111836887264,\n 0.121670472927803391204463153476262425607,\n 0.121670472927803391204463153476262425607,\n 0.1155056680537256013533444839067835598622,\n 0.1155056680537256013533444839067835598622,\n 0.1074442701159656347825773424466062227946,\n 0.1074442701159656347825773424466062227946,\n 0.0976186521041138882698806644642471544279,\n 0.0976186521041138882698806644642471544279,\n 0.086190161531953275917185202983742667185,\n 0.086190161531953275917185202983742667185,\n 0.0733464814110803057340336152531165181193,\n 0.0733464814110803057340336152531165181193,\n 0.0592985849154367807463677585001085845412,\n 0.0592985849154367807463677585001085845412,\n 0.0442774388174198061686027482113382288593,\n 0.0442774388174198061686027482113382288593,\n 0.0285313886289336631813078159518782864491,\n 0.0285313886289336631813078159518782864491,\n 0.0123412297999871995468056670700372915759,\n 0.0123412297999871995468056670700372915759,\n ],\n];\nexports.binomialCoefficients = [[1], [1, 1], [1, 2, 1], [1, 3, 3, 1]];\nconst getCubicArcLength = (xs, ys, t) => {\n let z;\n let sum;\n let correctedT;\n const n = 20;\n z = t / 2;\n sum = 0;\n for (let i = 0; i < n; i++) {\n correctedT = z * exports.tValues[n][i] + z;\n sum += exports.cValues[n][i] * BFunc(xs, ys, correctedT);\n }\n return z * sum;\n};\nexports.getCubicArcLength = getCubicArcLength;\nconst getQuadraticArcLength = (xs, ys, t) => {\n if (t === undefined) {\n t = 1;\n }\n const ax = xs[0] - 2 * xs[1] + xs[2];\n const ay = ys[0] - 2 * ys[1] + ys[2];\n const bx = 2 * xs[1] - 2 * xs[0];\n const by = 2 * ys[1] - 2 * ys[0];\n const A = 4 * (ax * ax + ay * ay);\n const B = 4 * (ax * bx + ay * by);\n const C = bx * bx + by * by;\n if (A === 0) {\n return (t * Math.sqrt(Math.pow(xs[2] - xs[0], 2) + Math.pow(ys[2] - ys[0], 2)));\n }\n const b = B / (2 * A);\n const c = C / A;\n const u = t + b;\n const k = c - b * b;\n const uuk = u * u + k > 0 ? Math.sqrt(u * u + k) : 0;\n const bbk = b * b + k > 0 ? Math.sqrt(b * b + k) : 0;\n const term = b + Math.sqrt(b * b + k) !== 0\n ? k * Math.log(Math.abs((u + uuk) / (b + bbk)))\n : 0;\n return (Math.sqrt(A) / 2) * (u * uuk - b * bbk + term);\n};\nexports.getQuadraticArcLength = getQuadraticArcLength;\nfunction BFunc(xs, ys, t) {\n const xbase = getDerivative(1, t, xs);\n const ybase = getDerivative(1, t, ys);\n const combined = xbase * xbase + ybase * ybase;\n return Math.sqrt(combined);\n}\nconst getDerivative = (derivative, t, vs) => {\n const n = vs.length - 1;\n let _vs;\n let value;\n if (n === 0) {\n return 0;\n }\n if (derivative === 0) {\n value = 0;\n for (let k = 0; k <= n; k++) {\n value +=\n exports.binomialCoefficients[n][k] *\n Math.pow(1 - t, n - k) *\n Math.pow(t, k) *\n vs[k];\n }\n return value;\n }\n else {\n _vs = new Array(n);\n for (let k = 0; k < n; k++) {\n _vs[k] = n * (vs[k + 1] - vs[k]);\n }\n return getDerivative(derivative - 1, t, _vs);\n }\n};\nconst t2length = (length, totalLength, func) => {\n let error = 1;\n let t = length / totalLength;\n let step = (length - func(t)) / totalLength;\n let numIterations = 0;\n while (error > 0.001) {\n const increasedTLength = func(t + step);\n const increasedTError = Math.abs(length - increasedTLength) / totalLength;\n if (increasedTError < error) {\n error = increasedTError;\n t += step;\n }\n else {\n const decreasedTLength = func(t - step);\n const decreasedTError = Math.abs(length - decreasedTLength) / totalLength;\n if (decreasedTError < error) {\n error = decreasedTError;\n t -= step;\n }\n else {\n step /= 2;\n }\n }\n numIterations++;\n if (numIterations > 500) {\n break;\n }\n }\n return t;\n};\nexports.t2length = t2length;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Path = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst BezierFunctions_1 = require(\"../BezierFunctions\");\nclass Path extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dataArray = [];\n this.pathLength = 0;\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n });\n }\n _readDataAttribute() {\n this.dataArray = Path.parsePathData(this.data());\n this.pathLength = Path.getPathLength(this.dataArray);\n }\n _sceneFunc(context) {\n var ca = this.dataArray;\n context.beginPath();\n var isClosed = false;\n for (var n = 0; n < ca.length; n++) {\n var c = ca[n].command;\n var p = ca[n].points;\n switch (c) {\n case 'L':\n context.lineTo(p[0], p[1]);\n break;\n case 'M':\n context.moveTo(p[0], p[1]);\n break;\n case 'C':\n context.bezierCurveTo(p[0], p[1], p[2], p[3], p[4], p[5]);\n break;\n case 'Q':\n context.quadraticCurveTo(p[0], p[1], p[2], p[3]);\n break;\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6], fs = p[7];\n var r = rx > ry ? rx : ry;\n var scaleX = rx > ry ? 1 : rx / ry;\n var scaleY = rx > ry ? ry / rx : 1;\n context.translate(cx, cy);\n context.rotate(psi);\n context.scale(scaleX, scaleY);\n context.arc(0, 0, r, theta, theta + dTheta, 1 - fs);\n context.scale(1 / scaleX, 1 / scaleY);\n context.rotate(-psi);\n context.translate(-cx, -cy);\n break;\n case 'z':\n isClosed = true;\n context.closePath();\n break;\n }\n }\n if (!isClosed && !this.hasFill()) {\n context.strokeShape(this);\n }\n else {\n context.fillStrokeShape(this);\n }\n }\n getSelfRect() {\n var points = [];\n this.dataArray.forEach(function (data) {\n if (data.command === 'A') {\n var start = data.points[4];\n var dTheta = data.points[5];\n var end = data.points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n if (dTheta < 0) {\n for (let t = start - inc; t > end; t -= inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n else {\n for (let t = start + inc; t < end; t += inc) {\n const point = Path.getPointOnEllipticalArc(data.points[0], data.points[1], data.points[2], data.points[3], t, 0);\n points.push(point.x, point.y);\n }\n }\n }\n else if (data.command === 'C') {\n for (let t = 0.0; t <= 1; t += 0.01) {\n const point = Path.getPointOnCubicBezier(t, data.start.x, data.start.y, data.points[0], data.points[1], data.points[2], data.points[3], data.points[4], data.points[5]);\n points.push(point.x, point.y);\n }\n }\n else {\n points = points.concat(data.points);\n }\n });\n var minX = points[0];\n var maxX = points[0];\n var minY = points[1];\n var maxY = points[1];\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n if (!isNaN(x)) {\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n }\n if (!isNaN(y)) {\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n }\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getLength() {\n return this.pathLength;\n }\n getPointAtLength(length) {\n return Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n static getLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n static getPathLength(dataArray) {\n let pathLength = 0;\n for (var i = 0; i < dataArray.length; ++i) {\n pathLength += dataArray[i].pathLength;\n }\n return pathLength;\n }\n static getPointAtLengthOfDataArray(length, dataArray) {\n var point, i = 0, ii = dataArray.length;\n if (!ii) {\n return null;\n }\n while (i < ii && length > dataArray[i].pathLength) {\n length -= dataArray[i].pathLength;\n ++i;\n }\n if (i === ii) {\n point = dataArray[i - 1].points.slice(-2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n if (length < 0.01) {\n point = dataArray[i].points.slice(0, 2);\n return {\n x: point[0],\n y: point[1],\n };\n }\n var cp = dataArray[i];\n var p = cp.points;\n switch (cp.command) {\n case 'L':\n return Path.getPointOnLine(length, cp.start.x, cp.start.y, p[0], p[1]);\n case 'C':\n return Path.getPointOnCubicBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getCubicArcLength)([cp.start.x, p[0], p[2], p[4]], [cp.start.y, p[1], p[3], p[5]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3], p[4], p[5]);\n case 'Q':\n return Path.getPointOnQuadraticBezier((0, BezierFunctions_1.t2length)(length, Path.getPathLength(dataArray), (i) => {\n return (0, BezierFunctions_1.getQuadraticArcLength)([cp.start.x, p[0], p[2]], [cp.start.y, p[1], p[3]], i);\n }), cp.start.x, cp.start.y, p[0], p[1], p[2], p[3]);\n case 'A':\n var cx = p[0], cy = p[1], rx = p[2], ry = p[3], theta = p[4], dTheta = p[5], psi = p[6];\n theta += (dTheta * length) / cp.pathLength;\n return Path.getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi);\n }\n return null;\n }\n static getPointOnLine(dist, P1x, P1y, P2x, P2y, fromX, fromY) {\n if (fromX === undefined) {\n fromX = P1x;\n }\n if (fromY === undefined) {\n fromY = P1y;\n }\n var m = (P2y - P1y) / (P2x - P1x + 0.00000001);\n var run = Math.sqrt((dist * dist) / (1 + m * m));\n if (P2x < P1x) {\n run *= -1;\n }\n var rise = m * run;\n var pt;\n if (P2x === P1x) {\n pt = {\n x: fromX,\n y: fromY + rise,\n };\n }\n else if ((fromY - P1y) / (fromX - P1x + 0.00000001) === m) {\n pt = {\n x: fromX + run,\n y: fromY + rise,\n };\n }\n else {\n var ix, iy;\n var len = this.getLineLength(P1x, P1y, P2x, P2y);\n var u = (fromX - P1x) * (P2x - P1x) + (fromY - P1y) * (P2y - P1y);\n u = u / (len * len);\n ix = P1x + u * (P2x - P1x);\n iy = P1y + u * (P2y - P1y);\n var pRise = this.getLineLength(fromX, fromY, ix, iy);\n var pRun = Math.sqrt(dist * dist - pRise * pRise);\n run = Math.sqrt((pRun * pRun) / (1 + m * m));\n if (P2x < P1x) {\n run *= -1;\n }\n rise = m * run;\n pt = {\n x: ix + run,\n y: iy + rise,\n };\n }\n return pt;\n }\n static getPointOnCubicBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y, P4x, P4y) {\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n var x = P4x * CB1(pct) + P3x * CB2(pct) + P2x * CB3(pct) + P1x * CB4(pct);\n var y = P4y * CB1(pct) + P3y * CB2(pct) + P2y * CB3(pct) + P1y * CB4(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnQuadraticBezier(pct, P1x, P1y, P2x, P2y, P3x, P3y) {\n function QB1(t) {\n return t * t;\n }\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n var x = P3x * QB1(pct) + P2x * QB2(pct) + P1x * QB3(pct);\n var y = P3y * QB1(pct) + P2y * QB2(pct) + P1y * QB3(pct);\n return {\n x: x,\n y: y,\n };\n }\n static getPointOnEllipticalArc(cx, cy, rx, ry, theta, psi) {\n var cosPsi = Math.cos(psi), sinPsi = Math.sin(psi);\n var pt = {\n x: rx * Math.cos(theta),\n y: ry * Math.sin(theta),\n };\n return {\n x: cx + (pt.x * cosPsi - pt.y * sinPsi),\n y: cy + (pt.x * sinPsi + pt.y * cosPsi),\n };\n }\n static parsePathData(data) {\n if (!data) {\n return [];\n }\n var cs = data;\n var cc = [\n 'm',\n 'M',\n 'l',\n 'L',\n 'v',\n 'V',\n 'h',\n 'H',\n 'z',\n 'Z',\n 'c',\n 'C',\n 'q',\n 'Q',\n 't',\n 'T',\n 's',\n 'S',\n 'a',\n 'A',\n ];\n cs = cs.replace(new RegExp(' ', 'g'), ',');\n for (var n = 0; n < cc.length; n++) {\n cs = cs.replace(new RegExp(cc[n], 'g'), '|' + cc[n]);\n }\n var arr = cs.split('|');\n var ca = [];\n var coords = [];\n var cpx = 0;\n var cpy = 0;\n var re = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:e[-+]?\\d+)?)/gi;\n var match;\n for (n = 1; n < arr.length; n++) {\n var str = arr[n];\n var c = str.charAt(0);\n str = str.slice(1);\n coords.length = 0;\n while ((match = re.exec(str))) {\n coords.push(match[0]);\n }\n var p = [];\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n if (coords[j] === '00') {\n p.push(0, 0);\n continue;\n }\n var parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n p.push(parsed);\n }\n else {\n p.push(0);\n }\n }\n while (p.length > 0) {\n if (isNaN(p[0])) {\n break;\n }\n var cmd = '';\n var points = [];\n var startX = cpx, startY = cpy;\n var prevCmd, ctlPtx, ctlPty;\n var rx, ry, psi, fa, fs, x1, y1;\n switch (c) {\n case 'l':\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'L':\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'm':\n var dx = p.shift();\n var dy = p.shift();\n cpx += dx;\n cpy += dy;\n cmd = 'M';\n if (ca.length > 2 && ca[ca.length - 1].command === 'z') {\n for (var idx = ca.length - 2; idx >= 0; idx--) {\n if (ca[idx].command === 'M') {\n cpx = ca[idx].points[0] + dx;\n cpy = ca[idx].points[1] + dy;\n break;\n }\n }\n }\n points.push(cpx, cpy);\n c = 'l';\n break;\n case 'M':\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'M';\n points.push(cpx, cpy);\n c = 'L';\n break;\n case 'h':\n cpx += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'H':\n cpx = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'v':\n cpy += p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'V':\n cpy = p.shift();\n cmd = 'L';\n points.push(cpx, cpy);\n break;\n case 'C':\n points.push(p.shift(), p.shift(), p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'c':\n points.push(cpx + p.shift(), cpy + p.shift(), cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'S':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 's':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'C') {\n ctlPtx = cpx + (cpx - prevCmd.points[2]);\n ctlPty = cpy + (cpy - prevCmd.points[3]);\n }\n points.push(ctlPtx, ctlPty, cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'C';\n points.push(cpx, cpy);\n break;\n case 'Q':\n points.push(p.shift(), p.shift());\n cpx = p.shift();\n cpy = p.shift();\n points.push(cpx, cpy);\n break;\n case 'q':\n points.push(cpx + p.shift(), cpy + p.shift());\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(cpx, cpy);\n break;\n case 'T':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 't':\n ctlPtx = cpx;\n ctlPty = cpy;\n prevCmd = ca[ca.length - 1];\n if (prevCmd.command === 'Q') {\n ctlPtx = cpx + (cpx - prevCmd.points[0]);\n ctlPty = cpy + (cpy - prevCmd.points[1]);\n }\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'Q';\n points.push(ctlPtx, ctlPty, cpx, cpy);\n break;\n case 'A':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx = p.shift();\n cpy = p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n case 'a':\n rx = p.shift();\n ry = p.shift();\n psi = p.shift();\n fa = p.shift();\n fs = p.shift();\n x1 = cpx;\n y1 = cpy;\n cpx += p.shift();\n cpy += p.shift();\n cmd = 'A';\n points = this.convertEndpointToCenterParameterization(x1, y1, cpx, cpy, fa, fs, rx, ry, psi);\n break;\n }\n ca.push({\n command: cmd || c,\n points: points,\n start: {\n x: startX,\n y: startY,\n },\n pathLength: this.calcLength(startX, startY, cmd || c, points),\n });\n }\n if (c === 'z' || c === 'Z') {\n ca.push({\n command: 'z',\n points: [],\n start: undefined,\n pathLength: 0,\n });\n }\n }\n return ca;\n }\n static calcLength(x, y, cmd, points) {\n var len, p1, p2, t;\n var path = Path;\n switch (cmd) {\n case 'L':\n return path.getLineLength(x, y, points[0], points[1]);\n case 'C':\n return (0, BezierFunctions_1.getCubicArcLength)([x, points[0], points[2], points[4]], [y, points[1], points[3], points[5]], 1);\n case 'Q':\n return (0, BezierFunctions_1.getQuadraticArcLength)([x, points[0], points[2]], [y, points[1], points[3]], 1);\n case 'A':\n len = 0.0;\n var start = points[4];\n var dTheta = points[5];\n var end = points[4] + dTheta;\n var inc = Math.PI / 180.0;\n if (Math.abs(start - end) < inc) {\n inc = Math.abs(start - end);\n }\n p1 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], start, 0);\n if (dTheta < 0) {\n for (t = start - inc; t > end; t -= inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n else {\n for (t = start + inc; t < end; t += inc) {\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], t, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n p1 = p2;\n }\n }\n p2 = path.getPointOnEllipticalArc(points[0], points[1], points[2], points[3], end, 0);\n len += path.getLineLength(p1.x, p1.y, p2.x, p2.y);\n return len;\n }\n return 0;\n }\n static convertEndpointToCenterParameterization(x1, y1, x2, y2, fa, fs, rx, ry, psiDeg) {\n var psi = psiDeg * (Math.PI / 180.0);\n var xp = (Math.cos(psi) * (x1 - x2)) / 2.0 + (Math.sin(psi) * (y1 - y2)) / 2.0;\n var yp = (-1 * Math.sin(psi) * (x1 - x2)) / 2.0 +\n (Math.cos(psi) * (y1 - y2)) / 2.0;\n var lambda = (xp * xp) / (rx * rx) + (yp * yp) / (ry * ry);\n if (lambda > 1) {\n rx *= Math.sqrt(lambda);\n ry *= Math.sqrt(lambda);\n }\n var f = Math.sqrt((rx * rx * (ry * ry) - rx * rx * (yp * yp) - ry * ry * (xp * xp)) /\n (rx * rx * (yp * yp) + ry * ry * (xp * xp)));\n if (fa === fs) {\n f *= -1;\n }\n if (isNaN(f)) {\n f = 0;\n }\n var cxp = (f * rx * yp) / ry;\n var cyp = (f * -ry * xp) / rx;\n var cx = (x1 + x2) / 2.0 + Math.cos(psi) * cxp - Math.sin(psi) * cyp;\n var cy = (y1 + y2) / 2.0 + Math.sin(psi) * cxp + Math.cos(psi) * cyp;\n var vMag = function (v) {\n return Math.sqrt(v[0] * v[0] + v[1] * v[1]);\n };\n var vRatio = function (u, v) {\n return (u[0] * v[0] + u[1] * v[1]) / (vMag(u) * vMag(v));\n };\n var vAngle = function (u, v) {\n return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(vRatio(u, v));\n };\n var theta = vAngle([1, 0], [(xp - cxp) / rx, (yp - cyp) / ry]);\n var u = [(xp - cxp) / rx, (yp - cyp) / ry];\n var v = [(-1 * xp - cxp) / rx, (-1 * yp - cyp) / ry];\n var dTheta = vAngle(u, v);\n if (vRatio(u, v) <= -1) {\n dTheta = Math.PI;\n }\n if (vRatio(u, v) >= 1) {\n dTheta = 0;\n }\n if (fs === 0 && dTheta > 0) {\n dTheta = dTheta - 2 * Math.PI;\n }\n if (fs === 1 && dTheta < 0) {\n dTheta = dTheta + 2 * Math.PI;\n }\n return [cx, cy, rx, ry, theta, dTheta, psi, fs];\n }\n}\nexports.Path = Path;\nPath.prototype.className = 'Path';\nPath.prototype._attrsAffectingSize = ['data'];\n(0, Global_1._registerNode)(Path);\nFactory_1.Factory.addGetterSetter(Path, 'data');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Arrow = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Line_1 = require(\"./Line\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nconst Path_1 = require(\"./Path\");\nclass Arrow extends Line_1.Line {\n _sceneFunc(ctx) {\n super._sceneFunc(ctx);\n var PI2 = Math.PI * 2;\n var points = this.points();\n var tp = points;\n var fromTension = this.tension() !== 0 && points.length > 4;\n if (fromTension) {\n tp = this.getTensionPoints();\n }\n var length = this.pointerLength();\n var n = points.length;\n var dx, dy;\n if (fromTension) {\n const lp = [\n tp[tp.length - 4],\n tp[tp.length - 3],\n tp[tp.length - 2],\n tp[tp.length - 1],\n points[n - 2],\n points[n - 1],\n ];\n const lastLength = Path_1.Path.calcLength(tp[tp.length - 4], tp[tp.length - 3], 'C', lp);\n const previous = Path_1.Path.getPointOnQuadraticBezier(Math.min(1, 1 - length / lastLength), lp[0], lp[1], lp[2], lp[3], lp[4], lp[5]);\n dx = points[n - 2] - previous.x;\n dy = points[n - 1] - previous.y;\n }\n else {\n dx = points[n - 2] - points[n - 4];\n dy = points[n - 1] - points[n - 3];\n }\n var radians = (Math.atan2(dy, dx) + PI2) % PI2;\n var width = this.pointerWidth();\n if (this.pointerAtEnding()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[n - 2], points[n - 1]);\n ctx.rotate(radians);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n if (this.pointerAtBeginning()) {\n ctx.save();\n ctx.beginPath();\n ctx.translate(points[0], points[1]);\n if (fromTension) {\n dx = (tp[0] + tp[2]) / 2 - points[0];\n dy = (tp[1] + tp[3]) / 2 - points[1];\n }\n else {\n dx = points[2] - points[0];\n dy = points[3] - points[1];\n }\n ctx.rotate((Math.atan2(-dy, -dx) + PI2) % PI2);\n ctx.moveTo(0, 0);\n ctx.lineTo(-length, width / 2);\n ctx.lineTo(-length, -width / 2);\n ctx.closePath();\n ctx.restore();\n this.__fillStroke(ctx);\n }\n }\n __fillStroke(ctx) {\n var isDashEnabled = this.dashEnabled();\n if (isDashEnabled) {\n this.attrs.dashEnabled = false;\n ctx.setLineDash([]);\n }\n ctx.fillStrokeShape(this);\n if (isDashEnabled) {\n this.attrs.dashEnabled = true;\n }\n }\n getSelfRect() {\n const lineRect = super.getSelfRect();\n const offset = this.pointerWidth() / 2;\n return {\n x: lineRect.x - offset,\n y: lineRect.y - offset,\n width: lineRect.width + offset * 2,\n height: lineRect.height + offset * 2,\n };\n }\n}\nexports.Arrow = Arrow;\nArrow.prototype.className = 'Arrow';\n(0, Global_1._registerNode)(Arrow);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerLength', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerWidth', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtBeginning', false);\nFactory_1.Factory.addGetterSetter(Arrow, 'pointerAtEnding', true);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Circle = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Circle extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.attrs.radius || 0, 0, Math.PI * 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n if (this.radius() !== width / 2) {\n this.radius(width / 2);\n }\n }\n setHeight(height) {\n if (this.radius() !== height / 2) {\n this.radius(height / 2);\n }\n }\n}\nexports.Circle = Circle;\nCircle.prototype._centroid = true;\nCircle.prototype.className = 'Circle';\nCircle.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(Circle);\nFactory_1.Factory.addGetterSetter(Circle, 'radius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ellipse = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Ellipse extends Shape_1.Shape {\n _sceneFunc(context) {\n var rx = this.radiusX(), ry = this.radiusY();\n context.beginPath();\n context.save();\n if (rx !== ry) {\n context.scale(1, ry / rx);\n }\n context.arc(0, 0, rx, 0, Math.PI * 2, false);\n context.restore();\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radiusX() * 2;\n }\n getHeight() {\n return this.radiusY() * 2;\n }\n setWidth(width) {\n this.radiusX(width / 2);\n }\n setHeight(height) {\n this.radiusY(height / 2);\n }\n}\nexports.Ellipse = Ellipse;\nEllipse.prototype.className = 'Ellipse';\nEllipse.prototype._centroid = true;\nEllipse.prototype._attrsAffectingSize = ['radiusX', 'radiusY'];\n(0, Global_1._registerNode)(Ellipse);\nFactory_1.Factory.addComponentsGetterSetter(Ellipse, 'radius', ['x', 'y']);\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ellipse, 'radiusY', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Image = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nclass Image extends Shape_1.Shape {\n constructor(attrs) {\n super(attrs);\n this.on('imageChange.konva', () => {\n this._setImageLoad();\n });\n this._setImageLoad();\n }\n _setImageLoad() {\n const image = this.image();\n if (image && image.complete) {\n return;\n }\n if (image && image.readyState === 4) {\n return;\n }\n if (image && image['addEventListener']) {\n image['addEventListener']('load', () => {\n this._requestDraw();\n });\n }\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _sceneFunc(context) {\n const width = this.getWidth();\n const height = this.getHeight();\n const cornerRadius = this.cornerRadius();\n const image = this.attrs.image;\n let params;\n if (image) {\n const cropWidth = this.attrs.cropWidth;\n const cropHeight = this.attrs.cropHeight;\n if (cropWidth && cropHeight) {\n params = [\n image,\n this.cropX(),\n this.cropY(),\n cropWidth,\n cropHeight,\n 0,\n 0,\n width,\n height,\n ];\n }\n else {\n params = [image, 0, 0, width, height];\n }\n }\n if (this.hasFill() || this.hasStroke() || cornerRadius) {\n context.beginPath();\n cornerRadius\n ? Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius)\n : context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (cornerRadius) {\n context.clip();\n }\n context.drawImage.apply(context, params);\n }\n }\n _hitFunc(context) {\n var width = this.width(), height = this.height(), cornerRadius = this.cornerRadius();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n var _a, _b;\n return (_a = this.attrs.width) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.width;\n }\n getHeight() {\n var _a, _b;\n return (_a = this.attrs.height) !== null && _a !== void 0 ? _a : (_b = this.image()) === null || _b === void 0 ? void 0 : _b.height;\n }\n static fromURL(url, callback, onError = null) {\n var img = Util_1.Util.createImageElement();\n img.onload = function () {\n var image = new Image({\n image: img,\n });\n callback(image);\n };\n img.onerror = onError;\n img.crossOrigin = 'Anonymous';\n img.src = url;\n }\n}\nexports.Image = Image;\nImage.prototype.className = 'Image';\n(0, Global_1._registerNode)(Image);\nFactory_1.Factory.addGetterSetter(Image, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\nFactory_1.Factory.addGetterSetter(Image, 'image');\nFactory_1.Factory.addComponentsGetterSetter(Image, 'crop', ['x', 'y', 'width', 'height']);\nFactory_1.Factory.addGetterSetter(Image, 'cropX', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropY', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Image, 'cropHeight', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Tag = exports.Label = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Group_1 = require(\"../Group\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar ATTR_CHANGE_LIST = [\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'padding',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'pointerDirection',\n 'pointerWidth',\n 'pointerHeight',\n], CHANGE_KONVA = 'Change.konva', NONE = 'none', UP = 'up', RIGHT = 'right', DOWN = 'down', LEFT = 'left', attrChangeListLen = ATTR_CHANGE_LIST.length;\nclass Label extends Group_1.Group {\n constructor(config) {\n super(config);\n this.on('add.konva', function (evt) {\n this._addListeners(evt.child);\n this._sync();\n });\n }\n getText() {\n return this.find('Text')[0];\n }\n getTag() {\n return this.find('Tag')[0];\n }\n _addListeners(text) {\n var that = this, n;\n var func = function () {\n that._sync();\n };\n for (n = 0; n < attrChangeListLen; n++) {\n text.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, func);\n }\n }\n getWidth() {\n return this.getText().width();\n }\n getHeight() {\n return this.getText().height();\n }\n _sync() {\n var text = this.getText(), tag = this.getTag(), width, height, pointerDirection, pointerWidth, x, y, pointerHeight;\n if (text && tag) {\n width = text.width();\n height = text.height();\n pointerDirection = tag.pointerDirection();\n pointerWidth = tag.pointerWidth();\n pointerHeight = tag.pointerHeight();\n x = 0;\n y = 0;\n switch (pointerDirection) {\n case UP:\n x = width / 2;\n y = -1 * pointerHeight;\n break;\n case RIGHT:\n x = width + pointerWidth;\n y = height / 2;\n break;\n case DOWN:\n x = width / 2;\n y = height + pointerHeight;\n break;\n case LEFT:\n x = -1 * pointerWidth;\n y = height / 2;\n break;\n }\n tag.setAttrs({\n x: -1 * x,\n y: -1 * y,\n width: width,\n height: height,\n });\n text.setAttrs({\n x: -1 * x,\n y: -1 * y,\n });\n }\n }\n}\nexports.Label = Label;\nLabel.prototype.className = 'Label';\n(0, Global_1._registerNode)(Label);\nclass Tag extends Shape_1.Shape {\n _sceneFunc(context) {\n var width = this.width(), height = this.height(), pointerDirection = this.pointerDirection(), pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), cornerRadius = this.cornerRadius();\n let topLeft = 0;\n let topRight = 0;\n let bottomLeft = 0;\n let bottomRight = 0;\n if (typeof cornerRadius === 'number') {\n topLeft =\n topRight =\n bottomLeft =\n bottomRight =\n Math.min(cornerRadius, width / 2, height / 2);\n }\n else {\n topLeft = Math.min(cornerRadius[0] || 0, width / 2, height / 2);\n topRight = Math.min(cornerRadius[1] || 0, width / 2, height / 2);\n bottomRight = Math.min(cornerRadius[2] || 0, width / 2, height / 2);\n bottomLeft = Math.min(cornerRadius[3] || 0, width / 2, height / 2);\n }\n context.beginPath();\n context.moveTo(topLeft, 0);\n if (pointerDirection === UP) {\n context.lineTo((width - pointerWidth) / 2, 0);\n context.lineTo(width / 2, -1 * pointerHeight);\n context.lineTo((width + pointerWidth) / 2, 0);\n }\n context.lineTo(width - topRight, 0);\n context.arc(width - topRight, topRight, topRight, (Math.PI * 3) / 2, 0, false);\n if (pointerDirection === RIGHT) {\n context.lineTo(width, (height - pointerHeight) / 2);\n context.lineTo(width + pointerWidth, height / 2);\n context.lineTo(width, (height + pointerHeight) / 2);\n }\n context.lineTo(width, height - bottomRight);\n context.arc(width - bottomRight, height - bottomRight, bottomRight, 0, Math.PI / 2, false);\n if (pointerDirection === DOWN) {\n context.lineTo((width + pointerWidth) / 2, height);\n context.lineTo(width / 2, height + pointerHeight);\n context.lineTo((width - pointerWidth) / 2, height);\n }\n context.lineTo(bottomLeft, height);\n context.arc(bottomLeft, height - bottomLeft, bottomLeft, Math.PI / 2, Math.PI, false);\n if (pointerDirection === LEFT) {\n context.lineTo(0, (height + pointerHeight) / 2);\n context.lineTo(-1 * pointerWidth, height / 2);\n context.lineTo(0, (height - pointerHeight) / 2);\n }\n context.lineTo(0, topLeft);\n context.arc(topLeft, topLeft, topLeft, Math.PI, (Math.PI * 3) / 2, false);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getSelfRect() {\n var x = 0, y = 0, pointerWidth = this.pointerWidth(), pointerHeight = this.pointerHeight(), direction = this.pointerDirection(), width = this.width(), height = this.height();\n if (direction === UP) {\n y -= pointerHeight;\n height += pointerHeight;\n }\n else if (direction === DOWN) {\n height += pointerHeight;\n }\n else if (direction === LEFT) {\n x -= pointerWidth * 1.5;\n width += pointerWidth;\n }\n else if (direction === RIGHT) {\n width += pointerWidth * 1.5;\n }\n return {\n x: x,\n y: y,\n width: width,\n height: height,\n };\n }\n}\nexports.Tag = Tag;\nTag.prototype.className = 'Tag';\n(0, Global_1._registerNode)(Tag);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerDirection', NONE);\nFactory_1.Factory.addGetterSetter(Tag, 'pointerWidth', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'pointerHeight', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Tag, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Rect = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nclass Rect extends Shape_1.Shape {\n _sceneFunc(context) {\n var cornerRadius = this.cornerRadius(), width = this.width(), height = this.height();\n context.beginPath();\n if (!cornerRadius) {\n context.rect(0, 0, width, height);\n }\n else {\n Util_1.Util.drawRoundedRectPath(context, width, height, cornerRadius);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n}\nexports.Rect = Rect;\nRect.prototype.className = 'Rect';\n(0, Global_1._registerNode)(Rect);\nFactory_1.Factory.addGetterSetter(Rect, 'cornerRadius', 0, (0, Validators_1.getNumberOrArrayOfNumbersValidator)(4));\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RegularPolygon = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass RegularPolygon extends Shape_1.Shape {\n _sceneFunc(context) {\n const points = this._getPoints();\n context.beginPath();\n context.moveTo(points[0].x, points[0].y);\n for (var n = 1; n < points.length; n++) {\n context.lineTo(points[n].x, points[n].y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n _getPoints() {\n const sides = this.attrs.sides;\n const radius = this.attrs.radius || 0;\n const points = [];\n for (var n = 0; n < sides; n++) {\n points.push({\n x: radius * Math.sin((n * 2 * Math.PI) / sides),\n y: -1 * radius * Math.cos((n * 2 * Math.PI) / sides),\n });\n }\n return points;\n }\n getSelfRect() {\n const points = this._getPoints();\n var minX = points[0].x;\n var maxX = points[0].y;\n var minY = points[0].x;\n var maxY = points[0].y;\n points.forEach((point) => {\n minX = Math.min(minX, point.x);\n maxX = Math.max(maxX, point.x);\n minY = Math.min(minY, point.y);\n maxY = Math.max(maxY, point.y);\n });\n return {\n x: minX,\n y: minY,\n width: maxX - minX,\n height: maxY - minY,\n };\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.RegularPolygon = RegularPolygon;\nRegularPolygon.prototype.className = 'RegularPolygon';\nRegularPolygon.prototype._centroid = true;\nRegularPolygon.prototype._attrsAffectingSize = ['radius'];\n(0, Global_1._registerNode)(RegularPolygon);\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(RegularPolygon, 'sides', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Ring = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar PIx2 = Math.PI * 2;\nclass Ring extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.innerRadius(), 0, PIx2, false);\n context.moveTo(this.outerRadius(), 0);\n context.arc(0, 0, this.outerRadius(), PIx2, 0, true);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Ring = Ring;\nRing.prototype.className = 'Ring';\nRing.prototype._centroid = true;\nRing.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Ring);\nFactory_1.Factory.addGetterSetter(Ring, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Ring, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sprite = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Animation_1 = require(\"../Animation\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Sprite extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this._updated = true;\n this.anim = new Animation_1.Animation(() => {\n var updated = this._updated;\n this._updated = false;\n return updated;\n });\n this.on('animationChange.konva', function () {\n this.frameIndex(0);\n });\n this.on('frameIndexChange.konva', function () {\n this._updated = true;\n });\n this.on('frameRateChange.konva', function () {\n if (!this.anim.isRunning()) {\n return;\n }\n clearInterval(this.interval);\n this._setInterval();\n });\n }\n _sceneFunc(context) {\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), x = set[ix4 + 0], y = set[ix4 + 1], width = set[ix4 + 2], height = set[ix4 + 3], image = this.image();\n if (this.hasFill() || this.hasStroke()) {\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n if (image) {\n if (offsets) {\n var offset = offsets[anim], ix2 = index * 2;\n context.drawImage(image, x, y, width, height, offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.drawImage(image, x, y, width, height, 0, 0, width, height);\n }\n }\n }\n _hitFunc(context) {\n var anim = this.animation(), index = this.frameIndex(), ix4 = index * 4, set = this.animations()[anim], offsets = this.frameOffsets(), width = set[ix4 + 2], height = set[ix4 + 3];\n context.beginPath();\n if (offsets) {\n var offset = offsets[anim];\n var ix2 = index * 2;\n context.rect(offset[ix2 + 0], offset[ix2 + 1], width, height);\n }\n else {\n context.rect(0, 0, width, height);\n }\n context.closePath();\n context.fillShape(this);\n }\n _useBufferCanvas() {\n return super._useBufferCanvas(true);\n }\n _setInterval() {\n var that = this;\n this.interval = setInterval(function () {\n that._updateIndex();\n }, 1000 / this.frameRate());\n }\n start() {\n if (this.isRunning()) {\n return;\n }\n var layer = this.getLayer();\n this.anim.setLayers(layer);\n this._setInterval();\n this.anim.start();\n }\n stop() {\n this.anim.stop();\n clearInterval(this.interval);\n }\n isRunning() {\n return this.anim.isRunning();\n }\n _updateIndex() {\n var index = this.frameIndex(), animation = this.animation(), animations = this.animations(), anim = animations[animation], len = anim.length / 4;\n if (index < len - 1) {\n this.frameIndex(index + 1);\n }\n else {\n this.frameIndex(0);\n }\n }\n}\nexports.Sprite = Sprite;\nSprite.prototype.className = 'Sprite';\n(0, Global_1._registerNode)(Sprite);\nFactory_1.Factory.addGetterSetter(Sprite, 'animation');\nFactory_1.Factory.addGetterSetter(Sprite, 'animations');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameOffsets');\nFactory_1.Factory.addGetterSetter(Sprite, 'image');\nFactory_1.Factory.addGetterSetter(Sprite, 'frameIndex', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Sprite, 'frameRate', 17, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.backCompat(Sprite, {\n index: 'frameIndex',\n getIndex: 'getFrameIndex',\n setIndex: 'setFrameIndex',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Star = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nclass Star extends Shape_1.Shape {\n _sceneFunc(context) {\n var innerRadius = this.innerRadius(), outerRadius = this.outerRadius(), numPoints = this.numPoints();\n context.beginPath();\n context.moveTo(0, 0 - outerRadius);\n for (var n = 1; n < numPoints * 2; n++) {\n var radius = n % 2 === 0 ? outerRadius : innerRadius;\n var x = radius * Math.sin((n * Math.PI) / numPoints);\n var y = -1 * radius * Math.cos((n * Math.PI) / numPoints);\n context.lineTo(x, y);\n }\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.outerRadius() * 2;\n }\n getHeight() {\n return this.outerRadius() * 2;\n }\n setWidth(width) {\n this.outerRadius(width / 2);\n }\n setHeight(height) {\n this.outerRadius(height / 2);\n }\n}\nexports.Star = Star;\nStar.prototype.className = 'Star';\nStar.prototype._centroid = true;\nStar.prototype._attrsAffectingSize = ['innerRadius', 'outerRadius'];\n(0, Global_1._registerNode)(Star);\nFactory_1.Factory.addGetterSetter(Star, 'numPoints', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'innerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Star, 'outerRadius', 0, (0, Validators_1.getNumberValidator)());\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Text = exports.stringToArray = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nfunction stringToArray(string) {\n return Array.from(string);\n}\nexports.stringToArray = stringToArray;\nvar AUTO = 'auto', CENTER = 'center', INHERIT = 'inherit', JUSTIFY = 'justify', CHANGE_KONVA = 'Change.konva', CONTEXT_2D = '2d', DASH = '-', LEFT = 'left', LTR = 'ltr', TEXT = 'text', TEXT_UPPER = 'Text', TOP = 'top', BOTTOM = 'bottom', MIDDLE = 'middle', NORMAL = 'normal', PX_SPACE = 'px ', SPACE = ' ', RIGHT = 'right', RTL = 'rtl', WORD = 'word', CHAR = 'char', NONE = 'none', ELLIPSIS = '…', ATTR_CHANGE_LIST = [\n 'direction',\n 'fontFamily',\n 'fontSize',\n 'fontStyle',\n 'fontVariant',\n 'padding',\n 'align',\n 'verticalAlign',\n 'lineHeight',\n 'text',\n 'width',\n 'height',\n 'wrap',\n 'ellipsis',\n 'letterSpacing',\n], attrChangeListLen = ATTR_CHANGE_LIST.length;\nfunction normalizeFontFamily(fontFamily) {\n return fontFamily\n .split(',')\n .map((family) => {\n family = family.trim();\n const hasSpace = family.indexOf(' ') >= 0;\n const hasQuotes = family.indexOf('\"') >= 0 || family.indexOf(\"'\") >= 0;\n if (hasSpace && !hasQuotes) {\n family = `\"${family}\"`;\n }\n return family;\n })\n .join(', ');\n}\nvar dummyContext;\nfunction getDummyContext() {\n if (dummyContext) {\n return dummyContext;\n }\n dummyContext = Util_1.Util.createCanvasElement().getContext(CONTEXT_2D);\n return dummyContext;\n}\nfunction _fillFunc(context) {\n context.fillText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction _strokeFunc(context) {\n context.setAttr('miterLimit', 2);\n context.strokeText(this._partialText, this._partialTextX, this._partialTextY);\n}\nfunction checkDefaultFill(config) {\n config = config || {};\n if (!config.fillLinearGradientColorStops &&\n !config.fillRadialGradientColorStops &&\n !config.fillPatternImage) {\n config.fill = config.fill || 'black';\n }\n return config;\n}\nclass Text extends Shape_1.Shape {\n constructor(config) {\n super(checkDefaultFill(config));\n this._partialTextX = 0;\n this._partialTextY = 0;\n for (var n = 0; n < attrChangeListLen; n++) {\n this.on(ATTR_CHANGE_LIST[n] + CHANGE_KONVA, this._setTextData);\n }\n this._setTextData();\n }\n _sceneFunc(context) {\n var textArr = this.textArr, textArrLen = textArr.length;\n if (!this.text()) {\n return;\n }\n var padding = this.padding(), fontSize = this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, verticalAlign = this.verticalAlign(), direction = this.direction(), alignY = 0, align = this.align(), totalWidth = this.getWidth(), letterSpacing = this.letterSpacing(), fill = this.fill(), textDecoration = this.textDecoration(), shouldUnderline = textDecoration.indexOf('underline') !== -1, shouldLineThrough = textDecoration.indexOf('line-through') !== -1, n;\n direction = direction === INHERIT ? context.direction : direction;\n var translateY = 0;\n var translateY = lineHeightPx / 2;\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n if (direction === RTL) {\n context.setAttr('direction', direction);\n }\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', MIDDLE);\n context.setAttr('textAlign', LEFT);\n if (verticalAlign === MIDDLE) {\n alignY = (this.getHeight() - textArrLen * lineHeightPx - padding * 2) / 2;\n }\n else if (verticalAlign === BOTTOM) {\n alignY = this.getHeight() - textArrLen * lineHeightPx - padding * 2;\n }\n context.translate(padding, alignY + padding);\n for (n = 0; n < textArrLen; n++) {\n var lineTranslateX = 0;\n var lineTranslateY = 0;\n var obj = textArr[n], text = obj.text, width = obj.width, lastLine = obj.lastInParagraph, spacesNumber, oneWord, lineWidth;\n context.save();\n if (align === RIGHT) {\n lineTranslateX += totalWidth - width - padding * 2;\n }\n else if (align === CENTER) {\n lineTranslateX += (totalWidth - width - padding * 2) / 2;\n }\n if (shouldUnderline) {\n context.save();\n context.beginPath();\n context.moveTo(lineTranslateX, translateY + lineTranslateY + Math.round(fontSize / 2));\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && !lastLine ? totalWidth - padding * 2 : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY + Math.round(fontSize / 2));\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (shouldLineThrough) {\n context.save();\n context.beginPath();\n context.moveTo(lineTranslateX, translateY + lineTranslateY);\n spacesNumber = text.split(' ').length - 1;\n oneWord = spacesNumber === 0;\n lineWidth =\n align === JUSTIFY && lastLine && !oneWord\n ? totalWidth - padding * 2\n : width;\n context.lineTo(lineTranslateX + Math.round(lineWidth), translateY + lineTranslateY);\n context.lineWidth = fontSize / 15;\n const gradient = this._getLinearGradient();\n context.strokeStyle = gradient || fill;\n context.stroke();\n context.restore();\n }\n if (direction !== RTL && (letterSpacing !== 0 || align === JUSTIFY)) {\n spacesNumber = text.split(' ').length - 1;\n var array = stringToArray(text);\n for (var li = 0; li < array.length; li++) {\n var letter = array[li];\n if (letter === ' ' && !lastLine && align === JUSTIFY) {\n lineTranslateX += (totalWidth - padding * 2 - width) / spacesNumber;\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = letter;\n context.fillStrokeShape(this);\n lineTranslateX += this.measureSize(letter).width + letterSpacing;\n }\n }\n else {\n if (letterSpacing !== 0) {\n context.setAttr('letterSpacing', `${letterSpacing}px`);\n }\n this._partialTextX = lineTranslateX;\n this._partialTextY = translateY + lineTranslateY;\n this._partialText = text;\n context.fillStrokeShape(this);\n }\n context.restore();\n if (textArrLen > 1) {\n translateY += lineHeightPx;\n }\n }\n }\n _hitFunc(context) {\n var width = this.getWidth(), height = this.getHeight();\n context.beginPath();\n context.rect(0, 0, width, height);\n context.closePath();\n context.fillStrokeShape(this);\n }\n setText(text) {\n var str = Util_1.Util._isString(text)\n ? text\n : text === null || text === undefined\n ? ''\n : text + '';\n this._setAttr(TEXT, str);\n return this;\n }\n getWidth() {\n var isAuto = this.attrs.width === AUTO || this.attrs.width === undefined;\n return isAuto ? this.getTextWidth() + this.padding() * 2 : this.attrs.width;\n }\n getHeight() {\n var isAuto = this.attrs.height === AUTO || this.attrs.height === undefined;\n return isAuto\n ? this.fontSize() * this.textArr.length * this.lineHeight() +\n this.padding() * 2\n : this.attrs.height;\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n measureSize(text) {\n var _context = getDummyContext(), fontSize = this.fontSize(), metrics;\n _context.save();\n _context.font = this._getContextFont();\n metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: fontSize,\n };\n }\n _getContextFont() {\n return (this.fontStyle() +\n SPACE +\n this.fontVariant() +\n SPACE +\n (this.fontSize() + PX_SPACE) +\n normalizeFontFamily(this.fontFamily()));\n }\n _addTextLine(line) {\n const align = this.align();\n if (align === JUSTIFY) {\n line = line.trim();\n }\n var width = this._getTextWidth(line);\n return this.textArr.push({\n text: line,\n width: width,\n lastInParagraph: false,\n });\n }\n _getTextWidth(text) {\n var letterSpacing = this.letterSpacing();\n var length = text.length;\n return (getDummyContext().measureText(text).width +\n (length ? letterSpacing * (length - 1) : 0));\n }\n _setTextData() {\n var lines = this.text().split('\\n'), fontSize = +this.fontSize(), textWidth = 0, lineHeightPx = this.lineHeight() * fontSize, width = this.attrs.width, height = this.attrs.height, fixedWidth = width !== AUTO && width !== undefined, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxWidth = width - padding * 2, maxHeightPx = height - padding * 2, currentHeightPx = 0, wrap = this.wrap(), shouldWrap = wrap !== NONE, wrapAtWord = wrap !== CHAR && shouldWrap, shouldAddEllipsis = this.ellipsis();\n this.textArr = [];\n getDummyContext().font = this._getContextFont();\n var additionalWidth = shouldAddEllipsis ? this._getTextWidth(ELLIPSIS) : 0;\n for (var i = 0, max = lines.length; i < max; ++i) {\n var line = lines[i];\n var lineWidth = this._getTextWidth(line);\n if (fixedWidth && lineWidth > maxWidth) {\n while (line.length > 0) {\n var low = 0, high = line.length, match = '', matchWidth = 0;\n while (low < high) {\n var mid = (low + high) >>> 1, substr = line.slice(0, mid + 1), substrWidth = this._getTextWidth(substr) + additionalWidth;\n if (substrWidth <= maxWidth) {\n low = mid + 1;\n match = substr;\n matchWidth = substrWidth;\n }\n else {\n high = mid;\n }\n }\n if (match) {\n if (wrapAtWord) {\n var wrapIndex;\n var nextChar = line[match.length];\n var nextIsSpaceOrDash = nextChar === SPACE || nextChar === DASH;\n if (nextIsSpaceOrDash && matchWidth <= maxWidth) {\n wrapIndex = match.length;\n }\n else {\n wrapIndex =\n Math.max(match.lastIndexOf(SPACE), match.lastIndexOf(DASH)) +\n 1;\n }\n if (wrapIndex > 0) {\n low = wrapIndex;\n match = match.slice(0, low);\n matchWidth = this._getTextWidth(match);\n }\n }\n match = match.trimRight();\n this._addTextLine(match);\n textWidth = Math.max(textWidth, matchWidth);\n currentHeightPx += lineHeightPx;\n var shouldHandleEllipsis = this._shouldHandleEllipsis(currentHeightPx);\n if (shouldHandleEllipsis) {\n this._tryToAddEllipsisToLastLine();\n break;\n }\n line = line.slice(low);\n line = line.trimLeft();\n if (line.length > 0) {\n lineWidth = this._getTextWidth(line);\n if (lineWidth <= maxWidth) {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n break;\n }\n }\n }\n else {\n break;\n }\n }\n }\n else {\n this._addTextLine(line);\n currentHeightPx += lineHeightPx;\n textWidth = Math.max(textWidth, lineWidth);\n if (this._shouldHandleEllipsis(currentHeightPx) && i < max - 1) {\n this._tryToAddEllipsisToLastLine();\n }\n }\n if (this.textArr[this.textArr.length - 1]) {\n this.textArr[this.textArr.length - 1].lastInParagraph = true;\n }\n if (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx) {\n break;\n }\n }\n this.textHeight = fontSize;\n this.textWidth = textWidth;\n }\n _shouldHandleEllipsis(currentHeightPx) {\n var fontSize = +this.fontSize(), lineHeightPx = this.lineHeight() * fontSize, height = this.attrs.height, fixedHeight = height !== AUTO && height !== undefined, padding = this.padding(), maxHeightPx = height - padding * 2, wrap = this.wrap(), shouldWrap = wrap !== NONE;\n return (!shouldWrap ||\n (fixedHeight && currentHeightPx + lineHeightPx > maxHeightPx));\n }\n _tryToAddEllipsisToLastLine() {\n var width = this.attrs.width, fixedWidth = width !== AUTO && width !== undefined, padding = this.padding(), maxWidth = width - padding * 2, shouldAddEllipsis = this.ellipsis();\n var lastLine = this.textArr[this.textArr.length - 1];\n if (!lastLine || !shouldAddEllipsis) {\n return;\n }\n if (fixedWidth) {\n var haveSpace = this._getTextWidth(lastLine.text + ELLIPSIS) < maxWidth;\n if (!haveSpace) {\n lastLine.text = lastLine.text.slice(0, lastLine.text.length - 3);\n }\n }\n this.textArr.splice(this.textArr.length - 1, 1);\n this._addTextLine(lastLine.text + ELLIPSIS);\n }\n getStrokeScaleEnabled() {\n return true;\n }\n _useBufferCanvas() {\n const hasLine = this.textDecoration().indexOf('underline') !== -1 ||\n this.textDecoration().indexOf('line-through') !== -1;\n const hasShadow = this.hasShadow();\n if (hasLine && hasShadow) {\n return true;\n }\n return super._useBufferCanvas();\n }\n}\nexports.Text = Text;\nText.prototype._fillFunc = _fillFunc;\nText.prototype._strokeFunc = _strokeFunc;\nText.prototype.className = TEXT_UPPER;\nText.prototype._attrsAffectingSize = [\n 'text',\n 'fontSize',\n 'padding',\n 'wrap',\n 'lineHeight',\n 'letterSpacing',\n];\n(0, Global_1._registerNode)(Text);\nFactory_1.Factory.overWriteSetter(Text, 'width', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.overWriteSetter(Text, 'height', (0, Validators_1.getNumberOrAutoValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'direction', INHERIT);\nFactory_1.Factory.addGetterSetter(Text, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(Text, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(Text, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'align', LEFT);\nFactory_1.Factory.addGetterSetter(Text, 'verticalAlign', TOP);\nFactory_1.Factory.addGetterSetter(Text, 'lineHeight', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'wrap', WORD);\nFactory_1.Factory.addGetterSetter(Text, 'ellipsis', false, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'text', '', (0, Validators_1.getStringValidator)());\nFactory_1.Factory.addGetterSetter(Text, 'textDecoration', '');\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TextPath = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Path_1 = require(\"./Path\");\nconst Text_1 = require(\"./Text\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_1 = require(\"../Global\");\nvar EMPTY_STRING = '', NORMAL = 'normal';\nfunction _fillFunc(context) {\n context.fillText(this.partialText, 0, 0);\n}\nfunction _strokeFunc(context) {\n context.strokeText(this.partialText, 0, 0);\n}\nclass TextPath extends Shape_1.Shape {\n constructor(config) {\n super(config);\n this.dummyCanvas = Util_1.Util.createCanvasElement();\n this.dataArray = [];\n this._readDataAttribute();\n this.on('dataChange.konva', function () {\n this._readDataAttribute();\n this._setTextData();\n });\n this.on('textChange.konva alignChange.konva letterSpacingChange.konva kerningFuncChange.konva fontSizeChange.konva fontFamilyChange.konva', this._setTextData);\n this._setTextData();\n }\n _getTextPathLength() {\n return Path_1.Path.getPathLength(this.dataArray);\n }\n _getPointAtLength(length) {\n if (!this.attrs.data) {\n return null;\n }\n const totalLength = this.pathLength;\n if (length - 1 > totalLength) {\n return null;\n }\n return Path_1.Path.getPointAtLengthOfDataArray(length, this.dataArray);\n }\n _readDataAttribute() {\n this.dataArray = Path_1.Path.parsePathData(this.attrs.data);\n this.pathLength = this._getTextPathLength();\n }\n _sceneFunc(context) {\n context.setAttr('font', this._getContextFont());\n context.setAttr('textBaseline', this.textBaseline());\n context.setAttr('textAlign', 'left');\n context.save();\n var textDecoration = this.textDecoration();\n var fill = this.fill();\n var fontSize = this.fontSize();\n var glyphInfo = this.glyphInfo;\n if (textDecoration === 'underline') {\n context.beginPath();\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n context.save();\n var p0 = glyphInfo[i].p0;\n context.translate(p0.x, p0.y);\n context.rotate(glyphInfo[i].rotation);\n this.partialText = glyphInfo[i].text;\n context.fillStrokeShape(this);\n if (textDecoration === 'underline') {\n if (i === 0) {\n context.moveTo(0, fontSize / 2 + 1);\n }\n context.lineTo(fontSize, fontSize / 2 + 1);\n }\n context.restore();\n }\n if (textDecoration === 'underline') {\n context.strokeStyle = fill;\n context.lineWidth = fontSize / 20;\n context.stroke();\n }\n context.restore();\n }\n _hitFunc(context) {\n context.beginPath();\n var glyphInfo = this.glyphInfo;\n if (glyphInfo.length >= 1) {\n var p0 = glyphInfo[0].p0;\n context.moveTo(p0.x, p0.y);\n }\n for (var i = 0; i < glyphInfo.length; i++) {\n var p1 = glyphInfo[i].p1;\n context.lineTo(p1.x, p1.y);\n }\n context.setAttr('lineWidth', this.fontSize());\n context.setAttr('strokeStyle', this.colorKey);\n context.stroke();\n }\n getTextWidth() {\n return this.textWidth;\n }\n getTextHeight() {\n Util_1.Util.warn('text.getTextHeight() method is deprecated. Use text.height() - for full height and text.fontSize() - for one line height.');\n return this.textHeight;\n }\n setText(text) {\n return Text_1.Text.prototype.setText.call(this, text);\n }\n _getContextFont() {\n return Text_1.Text.prototype._getContextFont.call(this);\n }\n _getTextSize(text) {\n var dummyCanvas = this.dummyCanvas;\n var _context = dummyCanvas.getContext('2d');\n _context.save();\n _context.font = this._getContextFont();\n var metrics = _context.measureText(text);\n _context.restore();\n return {\n width: metrics.width,\n height: parseInt(`${this.fontSize()}`, 10),\n };\n }\n _setTextData() {\n const { width, height } = this._getTextSize(this.attrs.text);\n this.textWidth = width;\n this.textHeight = height;\n this.glyphInfo = [];\n if (!this.attrs.data) {\n return null;\n }\n const letterSpacing = this.letterSpacing();\n const align = this.align();\n const kerningFunc = this.kerningFunc();\n const textWidth = Math.max(this.textWidth + ((this.attrs.text || '').length - 1) * letterSpacing, 0);\n let offset = 0;\n if (align === 'center') {\n offset = Math.max(0, this.pathLength / 2 - textWidth / 2);\n }\n if (align === 'right') {\n offset = Math.max(0, this.pathLength - textWidth);\n }\n const charArr = (0, Text_1.stringToArray)(this.text());\n let offsetToGlyph = offset;\n for (var i = 0; i < charArr.length; i++) {\n const charStartPoint = this._getPointAtLength(offsetToGlyph);\n if (!charStartPoint)\n return;\n let glyphWidth = this._getTextSize(charArr[i]).width + letterSpacing;\n if (charArr[i] === ' ' && align === 'justify') {\n const numberOfSpaces = this.text().split(' ').length - 1;\n glyphWidth += (this.pathLength - textWidth) / numberOfSpaces;\n }\n const charEndPoint = this._getPointAtLength(offsetToGlyph + glyphWidth);\n if (!charEndPoint)\n return;\n const width = Path_1.Path.getLineLength(charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n let kern = 0;\n if (kerningFunc) {\n try {\n kern = kerningFunc(charArr[i - 1], charArr[i]) * this.fontSize();\n }\n catch (e) {\n kern = 0;\n }\n }\n charStartPoint.x += kern;\n charEndPoint.x += kern;\n this.textWidth += kern;\n const midpoint = Path_1.Path.getPointOnLine(kern + width / 2.0, charStartPoint.x, charStartPoint.y, charEndPoint.x, charEndPoint.y);\n const rotation = Math.atan2(charEndPoint.y - charStartPoint.y, charEndPoint.x - charStartPoint.x);\n this.glyphInfo.push({\n transposeX: midpoint.x,\n transposeY: midpoint.y,\n text: charArr[i],\n rotation: rotation,\n p0: charStartPoint,\n p1: charEndPoint,\n });\n offsetToGlyph += glyphWidth;\n }\n }\n getSelfRect() {\n if (!this.glyphInfo.length) {\n return {\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n };\n }\n var points = [];\n this.glyphInfo.forEach(function (info) {\n points.push(info.p0.x);\n points.push(info.p0.y);\n points.push(info.p1.x);\n points.push(info.p1.y);\n });\n var minX = points[0] || 0;\n var maxX = points[0] || 0;\n var minY = points[1] || 0;\n var maxY = points[1] || 0;\n var x, y;\n for (var i = 0; i < points.length / 2; i++) {\n x = points[i * 2];\n y = points[i * 2 + 1];\n minX = Math.min(minX, x);\n maxX = Math.max(maxX, x);\n minY = Math.min(minY, y);\n maxY = Math.max(maxY, y);\n }\n var fontSize = this.fontSize();\n return {\n x: minX - fontSize / 2,\n y: minY - fontSize / 2,\n width: maxX - minX + fontSize,\n height: maxY - minY + fontSize,\n };\n }\n destroy() {\n Util_1.Util.releaseCanvas(this.dummyCanvas);\n return super.destroy();\n }\n}\nexports.TextPath = TextPath;\nTextPath.prototype._fillFunc = _fillFunc;\nTextPath.prototype._strokeFunc = _strokeFunc;\nTextPath.prototype._fillFuncHit = _fillFunc;\nTextPath.prototype._strokeFuncHit = _strokeFunc;\nTextPath.prototype.className = 'TextPath';\nTextPath.prototype._attrsAffectingSize = ['text', 'fontSize', 'data'];\n(0, Global_1._registerNode)(TextPath);\nFactory_1.Factory.addGetterSetter(TextPath, 'data');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontFamily', 'Arial');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontSize', 12, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'fontStyle', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'align', 'left');\nFactory_1.Factory.addGetterSetter(TextPath, 'letterSpacing', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(TextPath, 'textBaseline', 'middle');\nFactory_1.Factory.addGetterSetter(TextPath, 'fontVariant', NORMAL);\nFactory_1.Factory.addGetterSetter(TextPath, 'text', EMPTY_STRING);\nFactory_1.Factory.addGetterSetter(TextPath, 'textDecoration', null);\nFactory_1.Factory.addGetterSetter(TextPath, 'kerningFunc', null);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Transformer = void 0;\nconst Util_1 = require(\"../Util\");\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Shape_1 = require(\"../Shape\");\nconst Rect_1 = require(\"./Rect\");\nconst Group_1 = require(\"../Group\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nvar EVENTS_NAME = 'tr-konva';\nvar ATTR_CHANGE_LIST = [\n 'resizeEnabledChange',\n 'rotateAnchorOffsetChange',\n 'rotateEnabledChange',\n 'enabledAnchorsChange',\n 'anchorSizeChange',\n 'borderEnabledChange',\n 'borderStrokeChange',\n 'borderStrokeWidthChange',\n 'borderDashChange',\n 'anchorStrokeChange',\n 'anchorStrokeWidthChange',\n 'anchorFillChange',\n 'anchorCornerRadiusChange',\n 'ignoreStrokeChange',\n 'anchorStyleFuncChange',\n]\n .map((e) => e + `.${EVENTS_NAME}`)\n .join(' ');\nvar NODES_RECT = 'nodesRect';\nvar TRANSFORM_CHANGE_STR = [\n 'widthChange',\n 'heightChange',\n 'scaleXChange',\n 'scaleYChange',\n 'skewXChange',\n 'skewYChange',\n 'rotationChange',\n 'offsetXChange',\n 'offsetYChange',\n 'transformsEnabledChange',\n 'strokeWidthChange',\n];\nvar ANGLES = {\n 'top-left': -45,\n 'top-center': 0,\n 'top-right': 45,\n 'middle-right': -90,\n 'middle-left': 90,\n 'bottom-left': -135,\n 'bottom-center': 180,\n 'bottom-right': 135,\n};\nconst TOUCH_DEVICE = 'ontouchstart' in Global_1.Konva._global;\nfunction getCursor(anchorName, rad, rotateCursor) {\n if (anchorName === 'rotater') {\n return rotateCursor;\n }\n rad += Util_1.Util.degToRad(ANGLES[anchorName] || 0);\n var angle = ((Util_1.Util.radToDeg(rad) % 360) + 360) % 360;\n if (Util_1.Util._inRange(angle, 315 + 22.5, 360) || Util_1.Util._inRange(angle, 0, 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 45 - 22.5, 45 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 90 - 22.5, 90 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 135 - 22.5, 135 + 22.5)) {\n return 'nwse-resize';\n }\n else if (Util_1.Util._inRange(angle, 180 - 22.5, 180 + 22.5)) {\n return 'ns-resize';\n }\n else if (Util_1.Util._inRange(angle, 225 - 22.5, 225 + 22.5)) {\n return 'nesw-resize';\n }\n else if (Util_1.Util._inRange(angle, 270 - 22.5, 270 + 22.5)) {\n return 'ew-resize';\n }\n else if (Util_1.Util._inRange(angle, 315 - 22.5, 315 + 22.5)) {\n return 'nwse-resize';\n }\n else {\n Util_1.Util.error('Transformer has unknown angle for cursor detection: ' + angle);\n return 'pointer';\n }\n}\nvar ANCHORS_NAMES = [\n 'top-left',\n 'top-center',\n 'top-right',\n 'middle-right',\n 'middle-left',\n 'bottom-left',\n 'bottom-center',\n 'bottom-right',\n];\nvar MAX_SAFE_INTEGER = 100000000;\nfunction getCenter(shape) {\n return {\n x: shape.x +\n (shape.width / 2) * Math.cos(shape.rotation) +\n (shape.height / 2) * Math.sin(-shape.rotation),\n y: shape.y +\n (shape.height / 2) * Math.cos(shape.rotation) +\n (shape.width / 2) * Math.sin(shape.rotation),\n };\n}\nfunction rotateAroundPoint(shape, angleRad, point) {\n const x = point.x +\n (shape.x - point.x) * Math.cos(angleRad) -\n (shape.y - point.y) * Math.sin(angleRad);\n const y = point.y +\n (shape.x - point.x) * Math.sin(angleRad) +\n (shape.y - point.y) * Math.cos(angleRad);\n return {\n ...shape,\n rotation: shape.rotation + angleRad,\n x,\n y,\n };\n}\nfunction rotateAroundCenter(shape, deltaRad) {\n const center = getCenter(shape);\n return rotateAroundPoint(shape, deltaRad, center);\n}\nfunction getSnap(snaps, newRotationRad, tol) {\n let snapped = newRotationRad;\n for (let i = 0; i < snaps.length; i++) {\n const angle = Global_1.Konva.getAngle(snaps[i]);\n const absDiff = Math.abs(angle - newRotationRad) % (Math.PI * 2);\n const dif = Math.min(absDiff, Math.PI * 2 - absDiff);\n if (dif < tol) {\n snapped = angle;\n }\n }\n return snapped;\n}\nclass Transformer extends Group_1.Group {\n constructor(config) {\n super(config);\n this._movingAnchorName = null;\n this._transforming = false;\n this._createElements();\n this._handleMouseMove = this._handleMouseMove.bind(this);\n this._handleMouseUp = this._handleMouseUp.bind(this);\n this.update = this.update.bind(this);\n this.on(ATTR_CHANGE_LIST, this.update);\n if (this.getNode()) {\n this.update();\n }\n }\n attachTo(node) {\n this.setNode(node);\n return this;\n }\n setNode(node) {\n Util_1.Util.warn('tr.setNode(shape), tr.node(shape) and tr.attachTo(shape) methods are deprecated. Please use tr.nodes(nodesArray) instead.');\n return this.setNodes([node]);\n }\n getNode() {\n return this._nodes && this._nodes[0];\n }\n _getEventNamespace() {\n return EVENTS_NAME + this._id;\n }\n setNodes(nodes = []) {\n if (this._nodes && this._nodes.length) {\n this.detach();\n }\n const filteredNodes = nodes.filter((node) => {\n if (node.isAncestorOf(this)) {\n Util_1.Util.error('Konva.Transformer cannot be an a child of the node you are trying to attach');\n return false;\n }\n return true;\n });\n this._nodes = nodes = filteredNodes;\n if (nodes.length === 1 && this.useSingleNodeRotation()) {\n this.rotation(nodes[0].getAbsoluteRotation());\n }\n else {\n this.rotation(0);\n }\n this._nodes.forEach((node) => {\n const onChange = () => {\n if (this.nodes().length === 1 && this.useSingleNodeRotation()) {\n this.rotation(this.nodes()[0].getAbsoluteRotation());\n }\n this._resetTransformCache();\n if (!this._transforming && !this.isDragging()) {\n this.update();\n }\n };\n const additionalEvents = node._attrsAffectingSize\n .map((prop) => prop + 'Change.' + this._getEventNamespace())\n .join(' ');\n node.on(additionalEvents, onChange);\n node.on(TRANSFORM_CHANGE_STR.map((e) => e + `.${this._getEventNamespace()}`).join(' '), onChange);\n node.on(`absoluteTransformChange.${this._getEventNamespace()}`, onChange);\n this._proxyDrag(node);\n });\n this._resetTransformCache();\n var elementsCreated = !!this.findOne('.top-left');\n if (elementsCreated) {\n this.update();\n }\n return this;\n }\n _proxyDrag(node) {\n let lastPos;\n node.on(`dragstart.${this._getEventNamespace()}`, (e) => {\n lastPos = node.getAbsolutePosition();\n if (!this.isDragging() && node !== this.findOne('.back')) {\n this.startDrag(e, false);\n }\n });\n node.on(`dragmove.${this._getEventNamespace()}`, (e) => {\n if (!lastPos) {\n return;\n }\n const abs = node.getAbsolutePosition();\n const dx = abs.x - lastPos.x;\n const dy = abs.y - lastPos.y;\n this.nodes().forEach((otherNode) => {\n if (otherNode === node) {\n return;\n }\n if (otherNode.isDragging()) {\n return;\n }\n const otherAbs = otherNode.getAbsolutePosition();\n otherNode.setAbsolutePosition({\n x: otherAbs.x + dx,\n y: otherAbs.y + dy,\n });\n otherNode.startDrag(e);\n });\n lastPos = null;\n });\n }\n getNodes() {\n return this._nodes || [];\n }\n getActiveAnchor() {\n return this._movingAnchorName;\n }\n detach() {\n if (this._nodes) {\n this._nodes.forEach((node) => {\n node.off('.' + this._getEventNamespace());\n });\n }\n this._nodes = [];\n this._resetTransformCache();\n }\n _resetTransformCache() {\n this._clearCache(NODES_RECT);\n this._clearCache('transform');\n this._clearSelfAndDescendantCache('absoluteTransform');\n }\n _getNodeRect() {\n return this._getCache(NODES_RECT, this.__getNodeRect);\n }\n __getNodeShape(node, rot = this.rotation(), relative) {\n var rect = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n var absScale = node.getAbsoluteScale(relative);\n var absPos = node.getAbsolutePosition(relative);\n var dx = rect.x * absScale.x - node.offsetX() * absScale.x;\n var dy = rect.y * absScale.y - node.offsetY() * absScale.y;\n const rotation = (Global_1.Konva.getAngle(node.getAbsoluteRotation()) + Math.PI * 2) %\n (Math.PI * 2);\n const box = {\n x: absPos.x + dx * Math.cos(rotation) + dy * Math.sin(-rotation),\n y: absPos.y + dy * Math.cos(rotation) + dx * Math.sin(rotation),\n width: rect.width * absScale.x,\n height: rect.height * absScale.y,\n rotation: rotation,\n };\n return rotateAroundPoint(box, -Global_1.Konva.getAngle(rot), {\n x: 0,\n y: 0,\n });\n }\n __getNodeRect() {\n var node = this.getNode();\n if (!node) {\n return {\n x: -MAX_SAFE_INTEGER,\n y: -MAX_SAFE_INTEGER,\n width: 0,\n height: 0,\n rotation: 0,\n };\n }\n const totalPoints = [];\n this.nodes().map((node) => {\n const box = node.getClientRect({\n skipTransform: true,\n skipShadow: true,\n skipStroke: this.ignoreStroke(),\n });\n var points = [\n { x: box.x, y: box.y },\n { x: box.x + box.width, y: box.y },\n { x: box.x + box.width, y: box.y + box.height },\n { x: box.x, y: box.y + box.height },\n ];\n var trans = node.getAbsoluteTransform();\n points.forEach(function (point) {\n var transformed = trans.point(point);\n totalPoints.push(transformed);\n });\n });\n const tr = new Util_1.Transform();\n tr.rotate(-Global_1.Konva.getAngle(this.rotation()));\n var minX = Infinity, minY = Infinity, maxX = -Infinity, maxY = -Infinity;\n totalPoints.forEach(function (point) {\n var transformed = tr.point(point);\n if (minX === undefined) {\n minX = maxX = transformed.x;\n minY = maxY = transformed.y;\n }\n minX = Math.min(minX, transformed.x);\n minY = Math.min(minY, transformed.y);\n maxX = Math.max(maxX, transformed.x);\n maxY = Math.max(maxY, transformed.y);\n });\n tr.invert();\n const p = tr.point({ x: minX, y: minY });\n return {\n x: p.x,\n y: p.y,\n width: maxX - minX,\n height: maxY - minY,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n };\n }\n getX() {\n return this._getNodeRect().x;\n }\n getY() {\n return this._getNodeRect().y;\n }\n getWidth() {\n return this._getNodeRect().width;\n }\n getHeight() {\n return this._getNodeRect().height;\n }\n _createElements() {\n this._createBack();\n ANCHORS_NAMES.forEach((name) => {\n this._createAnchor(name);\n });\n this._createAnchor('rotater');\n }\n _createAnchor(name) {\n var anchor = new Rect_1.Rect({\n stroke: 'rgb(0, 161, 255)',\n fill: 'white',\n strokeWidth: 1,\n name: name + ' _anchor',\n dragDistance: 0,\n draggable: true,\n hitStrokeWidth: TOUCH_DEVICE ? 10 : 'auto',\n });\n var self = this;\n anchor.on('mousedown touchstart', function (e) {\n self._handleMouseDown(e);\n });\n anchor.on('dragstart', (e) => {\n anchor.stopDrag();\n e.cancelBubble = true;\n });\n anchor.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n anchor.on('mouseenter', () => {\n var rad = Global_1.Konva.getAngle(this.rotation());\n var rotateCursor = this.rotateAnchorCursor();\n var cursor = getCursor(name, rad, rotateCursor);\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = cursor);\n this._cursorChange = true;\n });\n anchor.on('mouseout', () => {\n anchor.getStage().content &&\n (anchor.getStage().content.style.cursor = '');\n this._cursorChange = false;\n });\n this.add(anchor);\n }\n _createBack() {\n var back = new Shape_1.Shape({\n name: 'back',\n width: 0,\n height: 0,\n draggable: true,\n sceneFunc(ctx, shape) {\n var tr = shape.getParent();\n var padding = tr.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.moveTo(shape.width() / 2, -padding);\n if (tr.rotateEnabled() && tr.rotateLineVisible()) {\n ctx.lineTo(shape.width() / 2, -tr.rotateAnchorOffset() * Util_1.Util._sign(shape.height()) - padding);\n }\n ctx.fillStrokeShape(shape);\n },\n hitFunc: (ctx, shape) => {\n if (!this.shouldOverdrawWholeArea()) {\n return;\n }\n var padding = this.padding();\n ctx.beginPath();\n ctx.rect(-padding, -padding, shape.width() + padding * 2, shape.height() + padding * 2);\n ctx.fillStrokeShape(shape);\n },\n });\n this.add(back);\n this._proxyDrag(back);\n back.on('dragstart', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragmove', (e) => {\n e.cancelBubble = true;\n });\n back.on('dragend', (e) => {\n e.cancelBubble = true;\n });\n this.on('dragmove', (e) => {\n this.update();\n });\n }\n _handleMouseDown(e) {\n this._movingAnchorName = e.target.name().split(' ')[0];\n var attrs = this._getNodeRect();\n var width = attrs.width;\n var height = attrs.height;\n var hypotenuse = Math.sqrt(Math.pow(width, 2) + Math.pow(height, 2));\n this.sin = Math.abs(height / hypotenuse);\n this.cos = Math.abs(width / hypotenuse);\n if (typeof window !== 'undefined') {\n window.addEventListener('mousemove', this._handleMouseMove);\n window.addEventListener('touchmove', this._handleMouseMove);\n window.addEventListener('mouseup', this._handleMouseUp, true);\n window.addEventListener('touchend', this._handleMouseUp, true);\n }\n this._transforming = true;\n var ap = e.target.getAbsolutePosition();\n var pos = e.target.getStage().getPointerPosition();\n this._anchorDragOffset = {\n x: pos.x - ap.x,\n y: pos.y - ap.y,\n };\n this._fire('transformstart', { evt: e.evt, target: this.getNode() });\n this._nodes.forEach((target) => {\n target._fire('transformstart', { evt: e.evt, target });\n });\n }\n _handleMouseMove(e) {\n var x, y, newHypotenuse;\n var anchorNode = this.findOne('.' + this._movingAnchorName);\n var stage = anchorNode.getStage();\n stage.setPointersPositions(e);\n const pp = stage.getPointerPosition();\n let newNodePos = {\n x: pp.x - this._anchorDragOffset.x,\n y: pp.y - this._anchorDragOffset.y,\n };\n const oldAbs = anchorNode.getAbsolutePosition();\n if (this.anchorDragBoundFunc()) {\n newNodePos = this.anchorDragBoundFunc()(oldAbs, newNodePos, e);\n }\n anchorNode.setAbsolutePosition(newNodePos);\n const newAbs = anchorNode.getAbsolutePosition();\n if (oldAbs.x === newAbs.x && oldAbs.y === newAbs.y) {\n return;\n }\n if (this._movingAnchorName === 'rotater') {\n var attrs = this._getNodeRect();\n x = anchorNode.x() - attrs.width / 2;\n y = -anchorNode.y() + attrs.height / 2;\n let delta = Math.atan2(-y, x) + Math.PI / 2;\n if (attrs.height < 0) {\n delta -= Math.PI;\n }\n var oldRotation = Global_1.Konva.getAngle(this.rotation());\n const newRotation = oldRotation + delta;\n const tol = Global_1.Konva.getAngle(this.rotationSnapTolerance());\n const snappedRot = getSnap(this.rotationSnaps(), newRotation, tol);\n const diff = snappedRot - attrs.rotation;\n const shape = rotateAroundCenter(attrs, diff);\n this._fitNodesInto(shape, e);\n return;\n }\n var shiftBehavior = this.shiftBehavior();\n var keepProportion;\n if (shiftBehavior === 'inverted') {\n keepProportion = this.keepRatio() && !e.shiftKey;\n }\n else if (shiftBehavior === 'none') {\n keepProportion = this.keepRatio();\n }\n else {\n keepProportion = this.keepRatio() || e.shiftKey;\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (this._movingAnchorName === 'top-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-right').x(),\n y: this.findOne('.bottom-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-left').x() > comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-left').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-left').x(comparePoint.x - x);\n this.findOne('.top-left').y(comparePoint.y - y);\n }\n }\n else if (this._movingAnchorName === 'top-center') {\n this.findOne('.top-left').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'top-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.bottom-left').x(),\n y: this.findOne('.bottom-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(comparePoint.y - anchorNode.y(), 2));\n var reverseX = this.findOne('.top-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.top-right').y() > comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.top-right').x(comparePoint.x + x);\n this.findOne('.top-right').y(comparePoint.y - y);\n }\n var pos = anchorNode.position();\n this.findOne('.top-left').y(pos.y);\n this.findOne('.bottom-right').x(pos.x);\n }\n else if (this._movingAnchorName === 'middle-left') {\n this.findOne('.top-left').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'middle-right') {\n this.findOne('.bottom-right').x(anchorNode.x());\n }\n else if (this._movingAnchorName === 'bottom-left') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-right').x(),\n y: this.findOne('.top-right').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(comparePoint.x - anchorNode.x(), 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = comparePoint.x < anchorNode.x() ? -1 : 1;\n var reverseY = anchorNode.y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n anchorNode.x(comparePoint.x - x);\n anchorNode.y(comparePoint.y + y);\n }\n pos = anchorNode.position();\n this.findOne('.top-left').x(pos.x);\n this.findOne('.bottom-right').y(pos.y);\n }\n else if (this._movingAnchorName === 'bottom-center') {\n this.findOne('.bottom-right').y(anchorNode.y());\n }\n else if (this._movingAnchorName === 'bottom-right') {\n if (keepProportion) {\n var comparePoint = centeredScaling\n ? {\n x: this.width() / 2,\n y: this.height() / 2,\n }\n : {\n x: this.findOne('.top-left').x(),\n y: this.findOne('.top-left').y(),\n };\n newHypotenuse = Math.sqrt(Math.pow(anchorNode.x() - comparePoint.x, 2) +\n Math.pow(anchorNode.y() - comparePoint.y, 2));\n var reverseX = this.findOne('.bottom-right').x() < comparePoint.x ? -1 : 1;\n var reverseY = this.findOne('.bottom-right').y() < comparePoint.y ? -1 : 1;\n x = newHypotenuse * this.cos * reverseX;\n y = newHypotenuse * this.sin * reverseY;\n this.findOne('.bottom-right').x(comparePoint.x + x);\n this.findOne('.bottom-right').y(comparePoint.y + y);\n }\n }\n else {\n console.error(new Error('Wrong position argument of selection resizer: ' +\n this._movingAnchorName));\n }\n var centeredScaling = this.centeredScaling() || e.altKey;\n if (centeredScaling) {\n var topLeft = this.findOne('.top-left');\n var bottomRight = this.findOne('.bottom-right');\n var topOffsetX = topLeft.x();\n var topOffsetY = topLeft.y();\n var bottomOffsetX = this.getWidth() - bottomRight.x();\n var bottomOffsetY = this.getHeight() - bottomRight.y();\n bottomRight.move({\n x: -topOffsetX,\n y: -topOffsetY,\n });\n topLeft.move({\n x: bottomOffsetX,\n y: bottomOffsetY,\n });\n }\n var absPos = this.findOne('.top-left').getAbsolutePosition();\n x = absPos.x;\n y = absPos.y;\n var width = this.findOne('.bottom-right').x() - this.findOne('.top-left').x();\n var height = this.findOne('.bottom-right').y() - this.findOne('.top-left').y();\n this._fitNodesInto({\n x: x,\n y: y,\n width: width,\n height: height,\n rotation: Global_1.Konva.getAngle(this.rotation()),\n }, e);\n }\n _handleMouseUp(e) {\n this._removeEvents(e);\n }\n getAbsoluteTransform() {\n return this.getTransform();\n }\n _removeEvents(e) {\n if (this._transforming) {\n this._transforming = false;\n if (typeof window !== 'undefined') {\n window.removeEventListener('mousemove', this._handleMouseMove);\n window.removeEventListener('touchmove', this._handleMouseMove);\n window.removeEventListener('mouseup', this._handleMouseUp, true);\n window.removeEventListener('touchend', this._handleMouseUp, true);\n }\n var node = this.getNode();\n this._fire('transformend', { evt: e, target: node });\n if (node) {\n this._nodes.forEach((target) => {\n target._fire('transformend', { evt: e, target });\n });\n }\n this._movingAnchorName = null;\n }\n }\n _fitNodesInto(newAttrs, evt) {\n var oldAttrs = this._getNodeRect();\n const minSize = 1;\n if (Util_1.Util._inRange(newAttrs.width, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n if (Util_1.Util._inRange(newAttrs.height, -this.padding() * 2 - minSize, minSize)) {\n this.update();\n return;\n }\n var t = new Util_1.Transform();\n t.rotate(Global_1.Konva.getAngle(this.rotation()));\n if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('left') >= 0) {\n const offset = t.point({\n x: -this.padding() * 2,\n y: 0,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n newAttrs.width += this.padding() * 2;\n this._movingAnchorName = this._movingAnchorName.replace('left', 'right');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n }\n else if (this._movingAnchorName &&\n newAttrs.width < 0 &&\n this._movingAnchorName.indexOf('right') >= 0) {\n const offset = t.point({\n x: this.padding() * 2,\n y: 0,\n });\n this._movingAnchorName = this._movingAnchorName.replace('right', 'left');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.width += this.padding() * 2;\n }\n if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('top') >= 0) {\n const offset = t.point({\n x: 0,\n y: -this.padding() * 2,\n });\n newAttrs.x += offset.x;\n newAttrs.y += offset.y;\n this._movingAnchorName = this._movingAnchorName.replace('top', 'bottom');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n else if (this._movingAnchorName &&\n newAttrs.height < 0 &&\n this._movingAnchorName.indexOf('bottom') >= 0) {\n const offset = t.point({\n x: 0,\n y: this.padding() * 2,\n });\n this._movingAnchorName = this._movingAnchorName.replace('bottom', 'top');\n this._anchorDragOffset.x -= offset.x;\n this._anchorDragOffset.y -= offset.y;\n newAttrs.height += this.padding() * 2;\n }\n if (this.boundBoxFunc()) {\n const bounded = this.boundBoxFunc()(oldAttrs, newAttrs);\n if (bounded) {\n newAttrs = bounded;\n }\n else {\n Util_1.Util.warn('boundBoxFunc returned falsy. You should return new bound rect from it!');\n }\n }\n const baseSize = 10000000;\n const oldTr = new Util_1.Transform();\n oldTr.translate(oldAttrs.x, oldAttrs.y);\n oldTr.rotate(oldAttrs.rotation);\n oldTr.scale(oldAttrs.width / baseSize, oldAttrs.height / baseSize);\n const newTr = new Util_1.Transform();\n const newScaleX = newAttrs.width / baseSize;\n const newScaleY = newAttrs.height / baseSize;\n if (this.flipEnabled() === false) {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.translate(newAttrs.width < 0 ? newAttrs.width : 0, newAttrs.height < 0 ? newAttrs.height : 0);\n newTr.scale(Math.abs(newScaleX), Math.abs(newScaleY));\n }\n else {\n newTr.translate(newAttrs.x, newAttrs.y);\n newTr.rotate(newAttrs.rotation);\n newTr.scale(newScaleX, newScaleY);\n }\n const delta = newTr.multiply(oldTr.invert());\n this._nodes.forEach((node) => {\n var _a;\n const parentTransform = node.getParent().getAbsoluteTransform();\n const localTransform = node.getTransform().copy();\n localTransform.translate(node.offsetX(), node.offsetY());\n const newLocalTransform = new Util_1.Transform();\n newLocalTransform\n .multiply(parentTransform.copy().invert())\n .multiply(delta)\n .multiply(parentTransform)\n .multiply(localTransform);\n const attrs = newLocalTransform.decompose();\n node.setAttrs(attrs);\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util_1.Util._getRotation(newAttrs.rotation));\n this._resetTransformCache();\n this.update();\n this.getLayer().batchDraw();\n }\n forceUpdate() {\n this._resetTransformCache();\n this.update();\n }\n _batchChangeChild(selector, attrs) {\n const anchor = this.findOne(selector);\n anchor.setAttrs(attrs);\n }\n update() {\n var _a;\n var attrs = this._getNodeRect();\n this.rotation(Util_1.Util._getRotation(attrs.rotation));\n var width = attrs.width;\n var height = attrs.height;\n var enabledAnchors = this.enabledAnchors();\n var resizeEnabled = this.resizeEnabled();\n var padding = this.padding();\n var anchorSize = this.anchorSize();\n const anchors = this.find('._anchor');\n anchors.forEach((node) => {\n node.setAttrs({\n width: anchorSize,\n height: anchorSize,\n offsetX: anchorSize / 2,\n offsetY: anchorSize / 2,\n stroke: this.anchorStroke(),\n strokeWidth: this.anchorStrokeWidth(),\n fill: this.anchorFill(),\n cornerRadius: this.anchorCornerRadius(),\n });\n });\n this._batchChangeChild('.top-left', {\n x: 0,\n y: 0,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-left') >= 0,\n });\n this._batchChangeChild('.top-center', {\n x: width / 2,\n y: 0,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-center') >= 0,\n });\n this._batchChangeChild('.top-right', {\n x: width,\n y: 0,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('top-right') >= 0,\n });\n this._batchChangeChild('.middle-left', {\n x: 0,\n y: height / 2,\n offsetX: anchorSize / 2 + padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-left') >= 0,\n });\n this._batchChangeChild('.middle-right', {\n x: width,\n y: height / 2,\n offsetX: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('middle-right') >= 0,\n });\n this._batchChangeChild('.bottom-left', {\n x: 0,\n y: height,\n offsetX: anchorSize / 2 + padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-left') >= 0,\n });\n this._batchChangeChild('.bottom-center', {\n x: width / 2,\n y: height,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-center') >= 0,\n });\n this._batchChangeChild('.bottom-right', {\n x: width,\n y: height,\n offsetX: anchorSize / 2 - padding,\n offsetY: anchorSize / 2 - padding,\n visible: resizeEnabled && enabledAnchors.indexOf('bottom-right') >= 0,\n });\n this._batchChangeChild('.rotater', {\n x: width / 2,\n y: -this.rotateAnchorOffset() * Util_1.Util._sign(height) - padding,\n visible: this.rotateEnabled(),\n });\n this._batchChangeChild('.back', {\n width: width,\n height: height,\n visible: this.borderEnabled(),\n stroke: this.borderStroke(),\n strokeWidth: this.borderStrokeWidth(),\n dash: this.borderDash(),\n x: 0,\n y: 0,\n });\n const styleFunc = this.anchorStyleFunc();\n if (styleFunc) {\n anchors.forEach((node) => {\n styleFunc(node);\n });\n }\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n }\n isTransforming() {\n return this._transforming;\n }\n stopTransform() {\n if (this._transforming) {\n this._removeEvents();\n var anchorNode = this.findOne('.' + this._movingAnchorName);\n if (anchorNode) {\n anchorNode.stopDrag();\n }\n }\n }\n destroy() {\n if (this.getStage() && this._cursorChange) {\n this.getStage().content && (this.getStage().content.style.cursor = '');\n }\n Group_1.Group.prototype.destroy.call(this);\n this.detach();\n this._removeEvents();\n return this;\n }\n toObject() {\n return Node_1.Node.prototype.toObject.call(this);\n }\n clone(obj) {\n var node = Node_1.Node.prototype.clone.call(this, obj);\n return node;\n }\n getClientRect() {\n if (this.nodes().length > 0) {\n return super.getClientRect();\n }\n else {\n return { x: 0, y: 0, width: 0, height: 0 };\n }\n }\n}\nexports.Transformer = Transformer;\nfunction validateAnchors(val) {\n if (!(val instanceof Array)) {\n Util_1.Util.warn('enabledAnchors value should be an array');\n }\n if (val instanceof Array) {\n val.forEach(function (name) {\n if (ANCHORS_NAMES.indexOf(name) === -1) {\n Util_1.Util.warn('Unknown anchor name: ' +\n name +\n '. Available names are: ' +\n ANCHORS_NAMES.join(', '));\n }\n });\n }\n return val || [];\n}\nTransformer.prototype.className = 'Transformer';\n(0, Global_2._registerNode)(Transformer);\nFactory_1.Factory.addGetterSetter(Transformer, 'enabledAnchors', ANCHORS_NAMES, validateAnchors);\nFactory_1.Factory.addGetterSetter(Transformer, 'flipEnabled', true, (0, Validators_1.getBooleanValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'resizeEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorSize', 10, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateLineVisible', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnaps', []);\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorOffset', 50, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'rotateAnchorCursor', 'crosshair');\nFactory_1.Factory.addGetterSetter(Transformer, 'rotationSnapTolerance', 5, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderEnabled', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorFill', 'white');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorCornerRadius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStroke', 'rgb(0, 161, 255)');\nFactory_1.Factory.addGetterSetter(Transformer, 'borderStrokeWidth', 1, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'borderDash');\nFactory_1.Factory.addGetterSetter(Transformer, 'keepRatio', true);\nFactory_1.Factory.addGetterSetter(Transformer, 'shiftBehavior', 'default');\nFactory_1.Factory.addGetterSetter(Transformer, 'centeredScaling', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'ignoreStroke', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'padding', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Transformer, 'node');\nFactory_1.Factory.addGetterSetter(Transformer, 'nodes');\nFactory_1.Factory.addGetterSetter(Transformer, 'boundBoxFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorDragBoundFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'anchorStyleFunc');\nFactory_1.Factory.addGetterSetter(Transformer, 'shouldOverdrawWholeArea', false);\nFactory_1.Factory.addGetterSetter(Transformer, 'useSingleNodeRotation', true);\nFactory_1.Factory.backCompat(Transformer, {\n lineEnabled: 'borderEnabled',\n rotateHandlerOffset: 'rotateAnchorOffset',\n enabledHandlers: 'enabledAnchors',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Wedge = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Shape_1 = require(\"../Shape\");\nconst Global_1 = require(\"../Global\");\nconst Validators_1 = require(\"../Validators\");\nconst Global_2 = require(\"../Global\");\nclass Wedge extends Shape_1.Shape {\n _sceneFunc(context) {\n context.beginPath();\n context.arc(0, 0, this.radius(), 0, Global_1.Konva.getAngle(this.angle()), this.clockwise());\n context.lineTo(0, 0);\n context.closePath();\n context.fillStrokeShape(this);\n }\n getWidth() {\n return this.radius() * 2;\n }\n getHeight() {\n return this.radius() * 2;\n }\n setWidth(width) {\n this.radius(width / 2);\n }\n setHeight(height) {\n this.radius(height / 2);\n }\n}\nexports.Wedge = Wedge;\nWedge.prototype.className = 'Wedge';\nWedge.prototype._centroid = true;\nWedge.prototype._attrsAffectingSize = ['radius'];\n(0, Global_2._registerNode)(Wedge);\nFactory_1.Factory.addGetterSetter(Wedge, 'radius', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'angle', 0, (0, Validators_1.getNumberValidator)());\nFactory_1.Factory.addGetterSetter(Wedge, 'clockwise', false);\nFactory_1.Factory.backCompat(Wedge, {\n angleDeg: 'angle',\n getAngleDeg: 'getAngle',\n setAngleDeg: 'setAngle',\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Blur = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction BlurStack() {\n this.r = 0;\n this.g = 0;\n this.b = 0;\n this.a = 0;\n this.next = null;\n}\nvar mul_table = [\n 512, 512, 456, 512, 328, 456, 335, 512, 405, 328, 271, 456, 388, 335, 292,\n 512, 454, 405, 364, 328, 298, 271, 496, 456, 420, 388, 360, 335, 312, 292,\n 273, 512, 482, 454, 428, 405, 383, 364, 345, 328, 312, 298, 284, 271, 259,\n 496, 475, 456, 437, 420, 404, 388, 374, 360, 347, 335, 323, 312, 302, 292,\n 282, 273, 265, 512, 497, 482, 468, 454, 441, 428, 417, 405, 394, 383, 373,\n 364, 354, 345, 337, 328, 320, 312, 305, 298, 291, 284, 278, 271, 265, 259,\n 507, 496, 485, 475, 465, 456, 446, 437, 428, 420, 412, 404, 396, 388, 381,\n 374, 367, 360, 354, 347, 341, 335, 329, 323, 318, 312, 307, 302, 297, 292,\n 287, 282, 278, 273, 269, 265, 261, 512, 505, 497, 489, 482, 475, 468, 461,\n 454, 447, 441, 435, 428, 422, 417, 411, 405, 399, 394, 389, 383, 378, 373,\n 368, 364, 359, 354, 350, 345, 341, 337, 332, 328, 324, 320, 316, 312, 309,\n 305, 301, 298, 294, 291, 287, 284, 281, 278, 274, 271, 268, 265, 262, 259,\n 257, 507, 501, 496, 491, 485, 480, 475, 470, 465, 460, 456, 451, 446, 442,\n 437, 433, 428, 424, 420, 416, 412, 408, 404, 400, 396, 392, 388, 385, 381,\n 377, 374, 370, 367, 363, 360, 357, 354, 350, 347, 344, 341, 338, 335, 332,\n 329, 326, 323, 320, 318, 315, 312, 310, 307, 304, 302, 299, 297, 294, 292,\n 289, 287, 285, 282, 280, 278, 275, 273, 271, 269, 267, 265, 263, 261, 259,\n];\nvar shg_table = [\n 9, 11, 12, 13, 13, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17,\n 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19,\n 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,\n 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,\n 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,\n 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,\n 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24,\n 24, 24, 24, 24, 24, 24, 24,\n];\nfunction filterGaussBlurRGBA(imageData, radius) {\n var pixels = imageData.data, width = imageData.width, height = imageData.height;\n var x, y, i, p, yp, yi, yw, r_sum, g_sum, b_sum, a_sum, r_out_sum, g_out_sum, b_out_sum, a_out_sum, r_in_sum, g_in_sum, b_in_sum, a_in_sum, pr, pg, pb, pa, rbs;\n var div = radius + radius + 1, widthMinus1 = width - 1, heightMinus1 = height - 1, radiusPlus1 = radius + 1, sumFactor = (radiusPlus1 * (radiusPlus1 + 1)) / 2, stackStart = new BlurStack(), stackEnd = null, stack = stackStart, stackIn = null, stackOut = null, mul_sum = mul_table[radius], shg_sum = shg_table[radius];\n for (i = 1; i < div; i++) {\n stack = stack.next = new BlurStack();\n if (i === radiusPlus1) {\n stackEnd = stack;\n }\n }\n stack.next = stackStart;\n yw = yi = 0;\n for (y = 0; y < height; y++) {\n r_in_sum =\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_sum =\n g_sum =\n b_sum =\n a_sum =\n 0;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n for (i = 1; i < radiusPlus1; i++) {\n p = yi + ((widthMinus1 < i ? widthMinus1 : i) << 2);\n r_sum += (stack.r = pr = pixels[p]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[p + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[p + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[p + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n }\n stackIn = stackStart;\n stackOut = stackEnd;\n for (x = 0; x < width; x++) {\n pixels[yi + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa !== 0) {\n pa = 255 / pa;\n pixels[yi] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[yi + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[yi] = pixels[yi + 1] = pixels[yi + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p = (yw + ((p = x + radius + 1) < widthMinus1 ? p : widthMinus1)) << 2;\n r_in_sum += stackIn.r = pixels[p];\n g_in_sum += stackIn.g = pixels[p + 1];\n b_in_sum += stackIn.b = pixels[p + 2];\n a_in_sum += stackIn.a = pixels[p + 3];\n r_sum += r_in_sum;\n g_sum += g_in_sum;\n b_sum += b_in_sum;\n a_sum += a_in_sum;\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += 4;\n }\n yw += width;\n }\n for (x = 0; x < width; x++) {\n g_in_sum =\n b_in_sum =\n a_in_sum =\n r_in_sum =\n g_sum =\n b_sum =\n a_sum =\n r_sum =\n 0;\n yi = x << 2;\n r_out_sum = radiusPlus1 * (pr = pixels[yi]);\n g_out_sum = radiusPlus1 * (pg = pixels[yi + 1]);\n b_out_sum = radiusPlus1 * (pb = pixels[yi + 2]);\n a_out_sum = radiusPlus1 * (pa = pixels[yi + 3]);\n r_sum += sumFactor * pr;\n g_sum += sumFactor * pg;\n b_sum += sumFactor * pb;\n a_sum += sumFactor * pa;\n stack = stackStart;\n for (i = 0; i < radiusPlus1; i++) {\n stack.r = pr;\n stack.g = pg;\n stack.b = pb;\n stack.a = pa;\n stack = stack.next;\n }\n yp = width;\n for (i = 1; i <= radius; i++) {\n yi = (yp + x) << 2;\n r_sum += (stack.r = pr = pixels[yi]) * (rbs = radiusPlus1 - i);\n g_sum += (stack.g = pg = pixels[yi + 1]) * rbs;\n b_sum += (stack.b = pb = pixels[yi + 2]) * rbs;\n a_sum += (stack.a = pa = pixels[yi + 3]) * rbs;\n r_in_sum += pr;\n g_in_sum += pg;\n b_in_sum += pb;\n a_in_sum += pa;\n stack = stack.next;\n if (i < heightMinus1) {\n yp += width;\n }\n }\n yi = x;\n stackIn = stackStart;\n stackOut = stackEnd;\n for (y = 0; y < height; y++) {\n p = yi << 2;\n pixels[p + 3] = pa = (a_sum * mul_sum) >> shg_sum;\n if (pa > 0) {\n pa = 255 / pa;\n pixels[p] = ((r_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 1] = ((g_sum * mul_sum) >> shg_sum) * pa;\n pixels[p + 2] = ((b_sum * mul_sum) >> shg_sum) * pa;\n }\n else {\n pixels[p] = pixels[p + 1] = pixels[p + 2] = 0;\n }\n r_sum -= r_out_sum;\n g_sum -= g_out_sum;\n b_sum -= b_out_sum;\n a_sum -= a_out_sum;\n r_out_sum -= stackIn.r;\n g_out_sum -= stackIn.g;\n b_out_sum -= stackIn.b;\n a_out_sum -= stackIn.a;\n p =\n (x +\n ((p = y + radiusPlus1) < heightMinus1 ? p : heightMinus1) * width) <<\n 2;\n r_sum += r_in_sum += stackIn.r = pixels[p];\n g_sum += g_in_sum += stackIn.g = pixels[p + 1];\n b_sum += b_in_sum += stackIn.b = pixels[p + 2];\n a_sum += a_in_sum += stackIn.a = pixels[p + 3];\n stackIn = stackIn.next;\n r_out_sum += pr = stackOut.r;\n g_out_sum += pg = stackOut.g;\n b_out_sum += pb = stackOut.b;\n a_out_sum += pa = stackOut.a;\n r_in_sum -= pr;\n g_in_sum -= pg;\n b_in_sum -= pb;\n a_in_sum -= pa;\n stackOut = stackOut.next;\n yi += width;\n }\n }\n}\nconst Blur = function Blur(imageData) {\n var radius = Math.round(this.blurRadius());\n if (radius > 0) {\n filterGaussBlurRGBA(imageData, radius);\n }\n};\nexports.Blur = Blur;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blurRadius', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Brighten = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Brighten = function (imageData) {\n var brightness = this.brightness() * 255, data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 4) {\n data[i] += brightness;\n data[i + 1] += brightness;\n data[i + 2] += brightness;\n }\n};\nexports.Brighten = Brighten;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'brightness', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Contrast = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Contrast = function (imageData) {\n var adjust = Math.pow((this.contrast() + 100) / 100, 2);\n var data = imageData.data, nPixels = data.length, red = 150, green = 150, blue = 150, i;\n for (i = 0; i < nPixels; i += 4) {\n red = data[i];\n green = data[i + 1];\n blue = data[i + 2];\n red /= 255;\n red -= 0.5;\n red *= adjust;\n red += 0.5;\n red *= 255;\n green /= 255;\n green -= 0.5;\n green *= adjust;\n green += 0.5;\n green *= 255;\n blue /= 255;\n blue -= 0.5;\n blue *= adjust;\n blue += 0.5;\n blue *= 255;\n red = red < 0 ? 0 : red > 255 ? 255 : red;\n green = green < 0 ? 0 : green > 255 ? 255 : green;\n blue = blue < 0 ? 0 : blue > 255 ? 255 : blue;\n data[i] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n }\n};\nexports.Contrast = Contrast;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'contrast', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Emboss = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nconst Emboss = function (imageData) {\n var strength = this.embossStrength() * 10, greyLevel = this.embossWhiteLevel() * 255, direction = this.embossDirection(), blend = this.embossBlend(), dirY = 0, dirX = 0, data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n switch (direction) {\n case 'top-left':\n dirY = -1;\n dirX = -1;\n break;\n case 'top':\n dirY = -1;\n dirX = 0;\n break;\n case 'top-right':\n dirY = -1;\n dirX = 1;\n break;\n case 'right':\n dirY = 0;\n dirX = 1;\n break;\n case 'bottom-right':\n dirY = 1;\n dirX = 1;\n break;\n case 'bottom':\n dirY = 1;\n dirX = 0;\n break;\n case 'bottom-left':\n dirY = 1;\n dirX = -1;\n break;\n case 'left':\n dirY = 0;\n dirX = -1;\n break;\n default:\n Util_1.Util.error('Unknown emboss direction: ' + direction);\n }\n do {\n var offsetY = (y - 1) * w4;\n var otherY = dirY;\n if (y + otherY < 1) {\n otherY = 0;\n }\n if (y + otherY > h) {\n otherY = 0;\n }\n var offsetYOther = (y - 1 + otherY) * w * 4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var otherX = dirX;\n if (x + otherX < 1) {\n otherX = 0;\n }\n if (x + otherX > w) {\n otherX = 0;\n }\n var offsetOther = offsetYOther + (x - 1 + otherX) * 4;\n var dR = data[offset] - data[offsetOther];\n var dG = data[offset + 1] - data[offsetOther + 1];\n var dB = data[offset + 2] - data[offsetOther + 2];\n var dif = dR;\n var absDif = dif > 0 ? dif : -dif;\n var absG = dG > 0 ? dG : -dG;\n var absB = dB > 0 ? dB : -dB;\n if (absG > absDif) {\n dif = dG;\n }\n if (absB > absDif) {\n dif = dB;\n }\n dif *= strength;\n if (blend) {\n var r = data[offset] + dif;\n var g = data[offset + 1] + dif;\n var b = data[offset + 2] + dif;\n data[offset] = r > 255 ? 255 : r < 0 ? 0 : r;\n data[offset + 1] = g > 255 ? 255 : g < 0 ? 0 : g;\n data[offset + 2] = b > 255 ? 255 : b < 0 ? 0 : b;\n }\n else {\n var grey = greyLevel - dif;\n if (grey < 0) {\n grey = 0;\n }\n else if (grey > 255) {\n grey = 255;\n }\n data[offset] = data[offset + 1] = data[offset + 2] = grey;\n }\n } while (--x);\n } while (--y);\n};\nexports.Emboss = Emboss;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossStrength', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossWhiteLevel', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossDirection', 'top-left', null, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'embossBlend', false, null, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Enhance = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction remap(fromValue, fromMin, fromMax, toMin, toMax) {\n var fromRange = fromMax - fromMin, toRange = toMax - toMin, toValue;\n if (fromRange === 0) {\n return toMin + toRange / 2;\n }\n if (toRange === 0) {\n return toMin;\n }\n toValue = (fromValue - fromMin) / fromRange;\n toValue = toRange * toValue + toMin;\n return toValue;\n}\nconst Enhance = function (imageData) {\n var data = imageData.data, nSubPixels = data.length, rMin = data[0], rMax = rMin, r, gMin = data[1], gMax = gMin, g, bMin = data[2], bMax = bMin, b, i;\n var enhanceAmount = this.enhance();\n if (enhanceAmount === 0) {\n return;\n }\n for (i = 0; i < nSubPixels; i += 4) {\n r = data[i + 0];\n if (r < rMin) {\n rMin = r;\n }\n else if (r > rMax) {\n rMax = r;\n }\n g = data[i + 1];\n if (g < gMin) {\n gMin = g;\n }\n else if (g > gMax) {\n gMax = g;\n }\n b = data[i + 2];\n if (b < bMin) {\n bMin = b;\n }\n else if (b > bMax) {\n bMax = b;\n }\n }\n if (rMax === rMin) {\n rMax = 255;\n rMin = 0;\n }\n if (gMax === gMin) {\n gMax = 255;\n gMin = 0;\n }\n if (bMax === bMin) {\n bMax = 255;\n bMin = 0;\n }\n var rMid, rGoalMax, rGoalMin, gMid, gGoalMax, gGoalMin, bMid, bGoalMax, bGoalMin;\n if (enhanceAmount > 0) {\n rGoalMax = rMax + enhanceAmount * (255 - rMax);\n rGoalMin = rMin - enhanceAmount * (rMin - 0);\n gGoalMax = gMax + enhanceAmount * (255 - gMax);\n gGoalMin = gMin - enhanceAmount * (gMin - 0);\n bGoalMax = bMax + enhanceAmount * (255 - bMax);\n bGoalMin = bMin - enhanceAmount * (bMin - 0);\n }\n else {\n rMid = (rMax + rMin) * 0.5;\n rGoalMax = rMax + enhanceAmount * (rMax - rMid);\n rGoalMin = rMin + enhanceAmount * (rMin - rMid);\n gMid = (gMax + gMin) * 0.5;\n gGoalMax = gMax + enhanceAmount * (gMax - gMid);\n gGoalMin = gMin + enhanceAmount * (gMin - gMid);\n bMid = (bMax + bMin) * 0.5;\n bGoalMax = bMax + enhanceAmount * (bMax - bMid);\n bGoalMin = bMin + enhanceAmount * (bMin - bMid);\n }\n for (i = 0; i < nSubPixels; i += 4) {\n data[i + 0] = remap(data[i + 0], rMin, rMax, rGoalMin, rGoalMax);\n data[i + 1] = remap(data[i + 1], gMin, gMax, gGoalMin, gGoalMax);\n data[i + 2] = remap(data[i + 2], bMin, bMax, bGoalMin, bGoalMax);\n }\n};\nexports.Enhance = Enhance;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'enhance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Grayscale = void 0;\nconst Grayscale = function (imageData) {\n var data = imageData.data, len = data.length, i, brightness;\n for (i = 0; i < len; i += 4) {\n brightness = 0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2];\n data[i] = brightness;\n data[i + 1] = brightness;\n data[i + 2] = brightness;\n }\n};\nexports.Grayscale = Grayscale;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSL = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'luminance', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nconst HSL = function (imageData) {\n var data = imageData.data, nPixels = data.length, v = 1, s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, l = this.luminance() * 127, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n var r, g, b, a;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b + l;\n data[i + 1] = gr * r + gg * g + gb * b + l;\n data[i + 2] = br * r + bg * g + bb * b + l;\n data[i + 3] = a;\n }\n};\nexports.HSL = HSL;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.HSV = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst HSV = function (imageData) {\n var data = imageData.data, nPixels = data.length, v = Math.pow(2, this.value()), s = Math.pow(2, this.saturation()), h = Math.abs(this.hue() + 360) % 360, i;\n var vsu = v * s * Math.cos((h * Math.PI) / 180), vsw = v * s * Math.sin((h * Math.PI) / 180);\n var rr = 0.299 * v + 0.701 * vsu + 0.167 * vsw, rg = 0.587 * v - 0.587 * vsu + 0.33 * vsw, rb = 0.114 * v - 0.114 * vsu - 0.497 * vsw;\n var gr = 0.299 * v - 0.299 * vsu - 0.328 * vsw, gg = 0.587 * v + 0.413 * vsu + 0.035 * vsw, gb = 0.114 * v - 0.114 * vsu + 0.293 * vsw;\n var br = 0.299 * v - 0.3 * vsu + 1.25 * vsw, bg = 0.587 * v - 0.586 * vsu - 1.05 * vsw, bb = 0.114 * v + 0.886 * vsu - 0.2 * vsw;\n var r, g, b, a;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n data[i + 0] = rr * r + rg * g + rb * b;\n data[i + 1] = gr * r + gg * g + gb * b;\n data[i + 2] = br * r + bg * g + bb * b;\n data[i + 3] = a;\n }\n};\nexports.HSV = HSV;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'hue', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'saturation', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'value', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Invert = void 0;\nconst Invert = function (imageData) {\n var data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n};\nexports.Invert = Invert;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Kaleidoscope = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Util_1 = require(\"../Util\");\nconst Validators_1 = require(\"../Validators\");\nvar ToPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta;\n var conversion = ((360 / tSize) * Math.PI) / 180, sin, cos;\n for (theta = 0; theta < tSize; theta += 1) {\n sin = Math.sin(theta * conversion);\n cos = Math.cos(theta * conversion);\n for (radius = 0; radius < rSize; radius += 1) {\n x = Math.floor(xMid + ((rMax * radius) / rSize) * cos);\n y = Math.floor(yMid + ((rMax * radius) / rSize) * sin);\n i = (y * xSize + x) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n a = srcPixels[i + 3];\n i = (theta + radius * xSize) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nvar FromPolar = function (src, dst, opt) {\n var srcPixels = src.data, dstPixels = dst.data, xSize = src.width, ySize = src.height, xMid = opt.polarCenterX || xSize / 2, yMid = opt.polarCenterY || ySize / 2, i, x, y, dx, dy, r = 0, g = 0, b = 0, a = 0;\n var rad, rMax = Math.sqrt(xMid * xMid + yMid * yMid);\n x = xSize - xMid;\n y = ySize - yMid;\n rad = Math.sqrt(x * x + y * y);\n rMax = rad > rMax ? rad : rMax;\n var rSize = ySize, tSize = xSize, radius, theta, phaseShift = opt.polarRotation || 0;\n var x1, y1;\n for (x = 0; x < xSize; x += 1) {\n for (y = 0; y < ySize; y += 1) {\n dx = x - xMid;\n dy = y - yMid;\n radius = (Math.sqrt(dx * dx + dy * dy) * rSize) / rMax;\n theta = ((Math.atan2(dy, dx) * 180) / Math.PI + 360 + phaseShift) % 360;\n theta = (theta * tSize) / 360;\n x1 = Math.floor(theta);\n y1 = Math.floor(radius);\n i = (y1 * xSize + x1) * 4;\n r = srcPixels[i + 0];\n g = srcPixels[i + 1];\n b = srcPixels[i + 2];\n a = srcPixels[i + 3];\n i = (y * xSize + x) * 4;\n dstPixels[i + 0] = r;\n dstPixels[i + 1] = g;\n dstPixels[i + 2] = b;\n dstPixels[i + 3] = a;\n }\n }\n};\nconst Kaleidoscope = function (imageData) {\n var xSize = imageData.width, ySize = imageData.height;\n var x, y, xoff, i, r, g, b, a, srcPos, dstPos;\n var power = Math.round(this.kaleidoscopePower());\n var angle = Math.round(this.kaleidoscopeAngle());\n var offset = Math.floor((xSize * (angle % 360)) / 360);\n if (power < 1) {\n return;\n }\n var tempCanvas = Util_1.Util.createCanvasElement();\n tempCanvas.width = xSize;\n tempCanvas.height = ySize;\n var scratchData = tempCanvas\n .getContext('2d')\n .getImageData(0, 0, xSize, ySize);\n Util_1.Util.releaseCanvas(tempCanvas);\n ToPolar(imageData, scratchData, {\n polarCenterX: xSize / 2,\n polarCenterY: ySize / 2,\n });\n var minSectionSize = xSize / Math.pow(2, power);\n while (minSectionSize <= 8) {\n minSectionSize = minSectionSize * 2;\n power -= 1;\n }\n minSectionSize = Math.ceil(minSectionSize);\n var sectionSize = minSectionSize;\n var xStart = 0, xEnd = sectionSize, xDelta = 1;\n if (offset + minSectionSize > xSize) {\n xStart = sectionSize;\n xEnd = 0;\n xDelta = -1;\n }\n for (y = 0; y < ySize; y += 1) {\n for (x = xStart; x !== xEnd; x += xDelta) {\n xoff = Math.round(x + offset) % xSize;\n srcPos = (xSize * y + xoff) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + x) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n }\n for (y = 0; y < ySize; y += 1) {\n sectionSize = Math.floor(minSectionSize);\n for (i = 0; i < power; i += 1) {\n for (x = 0; x < sectionSize + 1; x += 1) {\n srcPos = (xSize * y + x) * 4;\n r = scratchData.data[srcPos + 0];\n g = scratchData.data[srcPos + 1];\n b = scratchData.data[srcPos + 2];\n a = scratchData.data[srcPos + 3];\n dstPos = (xSize * y + sectionSize * 2 - x - 1) * 4;\n scratchData.data[dstPos + 0] = r;\n scratchData.data[dstPos + 1] = g;\n scratchData.data[dstPos + 2] = b;\n scratchData.data[dstPos + 3] = a;\n }\n sectionSize *= 2;\n }\n }\n FromPolar(scratchData, imageData, { polarRotation: 0 });\n};\nexports.Kaleidoscope = Kaleidoscope;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopePower', 2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'kaleidoscopeAngle', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Mask = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nfunction pixelAt(idata, x, y) {\n var idx = (y * idata.width + x) * 4;\n var d = [];\n d.push(idata.data[idx++], idata.data[idx++], idata.data[idx++], idata.data[idx++]);\n return d;\n}\nfunction rgbDistance(p1, p2) {\n return Math.sqrt(Math.pow(p1[0] - p2[0], 2) +\n Math.pow(p1[1] - p2[1], 2) +\n Math.pow(p1[2] - p2[2], 2));\n}\nfunction rgbMean(pTab) {\n var m = [0, 0, 0];\n for (var i = 0; i < pTab.length; i++) {\n m[0] += pTab[i][0];\n m[1] += pTab[i][1];\n m[2] += pTab[i][2];\n }\n m[0] /= pTab.length;\n m[1] /= pTab.length;\n m[2] /= pTab.length;\n return m;\n}\nfunction backgroundMask(idata, threshold) {\n var rgbv_no = pixelAt(idata, 0, 0);\n var rgbv_ne = pixelAt(idata, idata.width - 1, 0);\n var rgbv_so = pixelAt(idata, 0, idata.height - 1);\n var rgbv_se = pixelAt(idata, idata.width - 1, idata.height - 1);\n var thres = threshold || 10;\n if (rgbDistance(rgbv_no, rgbv_ne) < thres &&\n rgbDistance(rgbv_ne, rgbv_se) < thres &&\n rgbDistance(rgbv_se, rgbv_so) < thres &&\n rgbDistance(rgbv_so, rgbv_no) < thres) {\n var mean = rgbMean([rgbv_ne, rgbv_no, rgbv_se, rgbv_so]);\n var mask = [];\n for (var i = 0; i < idata.width * idata.height; i++) {\n var d = rgbDistance(mean, [\n idata.data[i * 4],\n idata.data[i * 4 + 1],\n idata.data[i * 4 + 2],\n ]);\n mask[i] = d < thres ? 0 : 255;\n }\n return mask;\n }\n}\nfunction applyMask(idata, mask) {\n for (var i = 0; i < idata.width * idata.height; i++) {\n idata.data[4 * i + 3] = mask[i];\n }\n}\nfunction erodeMask(mask, sw, sh) {\n var weights = [1, 1, 1, 1, 0, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a === 255 * 8 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction dilateMask(mask, sw, sh) {\n var weights = [1, 1, 1, 1, 1, 1, 1, 1, 1];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a >= 255 * 4 ? 255 : 0;\n }\n }\n return maskResult;\n}\nfunction smoothEdgeMask(mask, sw, sh) {\n var weights = [1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9, 1 / 9];\n var side = Math.round(Math.sqrt(weights.length));\n var halfSide = Math.floor(side / 2);\n var maskResult = [];\n for (var y = 0; y < sh; y++) {\n for (var x = 0; x < sw; x++) {\n var so = y * sw + x;\n var a = 0;\n for (var cy = 0; cy < side; cy++) {\n for (var cx = 0; cx < side; cx++) {\n var scy = y + cy - halfSide;\n var scx = x + cx - halfSide;\n if (scy >= 0 && scy < sh && scx >= 0 && scx < sw) {\n var srcOff = scy * sw + scx;\n var wt = weights[cy * side + cx];\n a += mask[srcOff] * wt;\n }\n }\n }\n maskResult[so] = a;\n }\n }\n return maskResult;\n}\nconst Mask = function (imageData) {\n var threshold = this.threshold(), mask = backgroundMask(imageData, threshold);\n if (mask) {\n mask = erodeMask(mask, imageData.width, imageData.height);\n mask = dilateMask(mask, imageData.width, imageData.height);\n mask = smoothEdgeMask(mask, imageData.width, imageData.height);\n applyMask(imageData, mask);\n }\n return imageData;\n};\nexports.Mask = Mask;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Noise = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Noise = function (imageData) {\n var amount = this.noise() * 255, data = imageData.data, nPixels = data.length, half = amount / 2, i;\n for (i = 0; i < nPixels; i += 4) {\n data[i + 0] += half - 2 * half * Math.random();\n data[i + 1] += half - 2 * half * Math.random();\n data[i + 2] += half - 2 * half * Math.random();\n }\n};\nexports.Noise = Noise;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'noise', 0.2, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Pixelate = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Util_1 = require(\"../Util\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Pixelate = function (imageData) {\n var pixelSize = Math.ceil(this.pixelSize()), width = imageData.width, height = imageData.height, x, y, i, red, green, blue, alpha, nBinsX = Math.ceil(width / pixelSize), nBinsY = Math.ceil(height / pixelSize), xBinStart, xBinEnd, yBinStart, yBinEnd, xBin, yBin, pixelsInBin, data = imageData.data;\n if (pixelSize <= 0) {\n Util_1.Util.error('pixelSize value can not be <= 0');\n return;\n }\n for (xBin = 0; xBin < nBinsX; xBin += 1) {\n for (yBin = 0; yBin < nBinsY; yBin += 1) {\n red = 0;\n green = 0;\n blue = 0;\n alpha = 0;\n xBinStart = xBin * pixelSize;\n xBinEnd = xBinStart + pixelSize;\n yBinStart = yBin * pixelSize;\n yBinEnd = yBinStart + pixelSize;\n pixelsInBin = 0;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n red += data[i + 0];\n green += data[i + 1];\n blue += data[i + 2];\n alpha += data[i + 3];\n pixelsInBin += 1;\n }\n }\n red = red / pixelsInBin;\n green = green / pixelsInBin;\n blue = blue / pixelsInBin;\n alpha = alpha / pixelsInBin;\n for (x = xBinStart; x < xBinEnd; x += 1) {\n if (x >= width) {\n continue;\n }\n for (y = yBinStart; y < yBinEnd; y += 1) {\n if (y >= height) {\n continue;\n }\n i = (width * y + x) * 4;\n data[i + 0] = red;\n data[i + 1] = green;\n data[i + 2] = blue;\n data[i + 3] = alpha;\n }\n }\n }\n }\n};\nexports.Pixelate = Pixelate;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'pixelSize', 8, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Posterize = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Posterize = function (imageData) {\n var levels = Math.round(this.levels() * 254) + 1, data = imageData.data, len = data.length, scale = 255 / levels, i;\n for (i = 0; i < len; i += 1) {\n data[i] = Math.floor(data[i] / scale) * scale;\n }\n};\nexports.Posterize = Posterize;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'levels', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGB = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGB = function (imageData) {\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), i, brightness;\n for (i = 0; i < nPixels; i += 4) {\n brightness =\n (0.34 * data[i] + 0.5 * data[i + 1] + 0.16 * data[i + 2]) / 255;\n data[i] = brightness * red;\n data[i + 1] = brightness * green;\n data[i + 2] = brightness * blue;\n data[i + 3] = data[i + 3];\n }\n};\nexports.RGB = RGB;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RGBA = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst RGBA = function (imageData) {\n var data = imageData.data, nPixels = data.length, red = this.red(), green = this.green(), blue = this.blue(), alpha = this.alpha(), i, ia;\n for (i = 0; i < nPixels; i += 4) {\n ia = 1 - alpha;\n data[i] = red * alpha + data[i] * ia;\n data[i + 1] = green * alpha + data[i + 1] * ia;\n data[i + 2] = blue * alpha + data[i + 2] * ia;\n }\n};\nexports.RGBA = RGBA;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'red', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'green', 0, function (val) {\n this._filterUpToDate = false;\n if (val > 255) {\n return 255;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return Math.round(val);\n }\n});\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'blue', 0, Validators_1.RGBComponent, Factory_1.Factory.afterSetFilter);\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'alpha', 1, function (val) {\n this._filterUpToDate = false;\n if (val > 1) {\n return 1;\n }\n else if (val < 0) {\n return 0;\n }\n else {\n return val;\n }\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Sepia = void 0;\nconst Sepia = function (imageData) {\n var data = imageData.data, nPixels = data.length, i, r, g, b;\n for (i = 0; i < nPixels; i += 4) {\n r = data[i + 0];\n g = data[i + 1];\n b = data[i + 2];\n data[i + 0] = Math.min(255, r * 0.393 + g * 0.769 + b * 0.189);\n data[i + 1] = Math.min(255, r * 0.349 + g * 0.686 + b * 0.168);\n data[i + 2] = Math.min(255, r * 0.272 + g * 0.534 + b * 0.131);\n }\n};\nexports.Sepia = Sepia;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Solarize = void 0;\nconst Solarize = function (imageData) {\n var data = imageData.data, w = imageData.width, h = imageData.height, w4 = w * 4, y = h;\n do {\n var offsetY = (y - 1) * w4;\n var x = w;\n do {\n var offset = offsetY + (x - 1) * 4;\n var r = data[offset];\n var g = data[offset + 1];\n var b = data[offset + 2];\n if (r > 127) {\n r = 255 - r;\n }\n if (g > 127) {\n g = 255 - g;\n }\n if (b > 127) {\n b = 255 - b;\n }\n data[offset] = r;\n data[offset + 1] = g;\n data[offset + 2] = b;\n } while (--x);\n } while (--y);\n};\nexports.Solarize = Solarize;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Threshold = void 0;\nconst Factory_1 = require(\"../Factory\");\nconst Node_1 = require(\"../Node\");\nconst Validators_1 = require(\"../Validators\");\nconst Threshold = function (imageData) {\n var level = this.threshold() * 255, data = imageData.data, len = data.length, i;\n for (i = 0; i < len; i += 1) {\n data[i] = data[i] < level ? 0 : 255;\n }\n};\nexports.Threshold = Threshold;\nFactory_1.Factory.addGetterSetter(Node_1.Node, 'threshold', 0.5, (0, Validators_1.getNumberValidator)(), Factory_1.Factory.afterSetFilter);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Konva = void 0;\nconst _CoreInternals_1 = require(\"./_CoreInternals\");\nconst Arc_1 = require(\"./shapes/Arc\");\nconst Arrow_1 = require(\"./shapes/Arrow\");\nconst Circle_1 = require(\"./shapes/Circle\");\nconst Ellipse_1 = require(\"./shapes/Ellipse\");\nconst Image_1 = require(\"./shapes/Image\");\nconst Label_1 = require(\"./shapes/Label\");\nconst Line_1 = require(\"./shapes/Line\");\nconst Path_1 = require(\"./shapes/Path\");\nconst Rect_1 = require(\"./shapes/Rect\");\nconst RegularPolygon_1 = require(\"./shapes/RegularPolygon\");\nconst Ring_1 = require(\"./shapes/Ring\");\nconst Sprite_1 = require(\"./shapes/Sprite\");\nconst Star_1 = require(\"./shapes/Star\");\nconst Text_1 = require(\"./shapes/Text\");\nconst TextPath_1 = require(\"./shapes/TextPath\");\nconst Transformer_1 = require(\"./shapes/Transformer\");\nconst Wedge_1 = require(\"./shapes/Wedge\");\nconst Blur_1 = require(\"./filters/Blur\");\nconst Brighten_1 = require(\"./filters/Brighten\");\nconst Contrast_1 = require(\"./filters/Contrast\");\nconst Emboss_1 = require(\"./filters/Emboss\");\nconst Enhance_1 = require(\"./filters/Enhance\");\nconst Grayscale_1 = require(\"./filters/Grayscale\");\nconst HSL_1 = require(\"./filters/HSL\");\nconst HSV_1 = require(\"./filters/HSV\");\nconst Invert_1 = require(\"./filters/Invert\");\nconst Kaleidoscope_1 = require(\"./filters/Kaleidoscope\");\nconst Mask_1 = require(\"./filters/Mask\");\nconst Noise_1 = require(\"./filters/Noise\");\nconst Pixelate_1 = require(\"./filters/Pixelate\");\nconst Posterize_1 = require(\"./filters/Posterize\");\nconst RGB_1 = require(\"./filters/RGB\");\nconst RGBA_1 = require(\"./filters/RGBA\");\nconst Sepia_1 = require(\"./filters/Sepia\");\nconst Solarize_1 = require(\"./filters/Solarize\");\nconst Threshold_1 = require(\"./filters/Threshold\");\nexports.Konva = _CoreInternals_1.Konva.Util._assign(_CoreInternals_1.Konva, {\n Arc: Arc_1.Arc,\n Arrow: Arrow_1.Arrow,\n Circle: Circle_1.Circle,\n Ellipse: Ellipse_1.Ellipse,\n Image: Image_1.Image,\n Label: Label_1.Label,\n Tag: Label_1.Tag,\n Line: Line_1.Line,\n Path: Path_1.Path,\n Rect: Rect_1.Rect,\n RegularPolygon: RegularPolygon_1.RegularPolygon,\n Ring: Ring_1.Ring,\n Sprite: Sprite_1.Sprite,\n Star: Star_1.Star,\n Text: Text_1.Text,\n TextPath: TextPath_1.TextPath,\n Transformer: Transformer_1.Transformer,\n Wedge: Wedge_1.Wedge,\n Filters: {\n Blur: Blur_1.Blur,\n Brighten: Brighten_1.Brighten,\n Contrast: Contrast_1.Contrast,\n Emboss: Emboss_1.Emboss,\n Enhance: Enhance_1.Enhance,\n Grayscale: Grayscale_1.Grayscale,\n HSL: HSL_1.HSL,\n HSV: HSV_1.HSV,\n Invert: Invert_1.Invert,\n Kaleidoscope: Kaleidoscope_1.Kaleidoscope,\n Mask: Mask_1.Mask,\n Noise: Noise_1.Noise,\n Pixelate: Pixelate_1.Pixelate,\n Posterize: Posterize_1.Posterize,\n RGB: RGB_1.RGB,\n RGBA: RGBA_1.RGBA,\n Sepia: Sepia_1.Sepia,\n Solarize: Solarize_1.Solarize,\n Threshold: Threshold_1.Threshold,\n },\n});\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst _FullInternals_1 = require(\"./_FullInternals\");\nmodule.exports = _FullInternals_1.Konva;\n","export class MarkupColor {\r\n public R: number;\r\n public G: number;\r\n public B: number;\r\n\r\n private _hex: string;\r\n\r\n /**\r\n * Color in #000000 format\r\n */\r\n get HexColor(): string {\r\n return \"#\" + this._hex;\r\n }\r\n\r\n get RGB(): { r: number; g: number; b: number } {\r\n return { r: this.R, g: this.G, b: this.B };\r\n }\r\n\r\n constructor(r: number, g: number, b: number) {\r\n this.setColor(r, g, b);\r\n }\r\n\r\n public setColor(r: number, g: number, b: number): void {\r\n this.R = r;\r\n this.G = g;\r\n this.B = b;\r\n\r\n this._hex = this.rgbToHex(r, g, b);\r\n }\r\n\r\n private rgbToHex(r: number, g: number, b: number): string {\r\n const valueToHex = (c) => {\r\n const hex = c.toString(16);\r\n return hex === \"0\" ? \"00\" : hex;\r\n };\r\n\r\n return valueToHex(r) + valueToHex(g) + valueToHex(b);\r\n }\r\n}\r\n","import Konva from \"konva\";\r\nimport { IMarkupLine } from \"../../IMarkupLine\";\r\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\r\n\r\nexport class KonvaLine implements IMarkupLine, IMarkupColorable {\r\n private _ref: Konva.Line;\r\n\r\n constructor(params: { points: { x: number; y: number }[]; color: string; width: number }, ref = null) {\r\n if (ref) {\r\n this._ref = ref;\r\n this._ref.id(this._ref._id.toString());\r\n return;\r\n }\r\n\r\n if (!params.points) return;\r\n\r\n const konvaPoints = [];\r\n params.points.forEach((point) => konvaPoints.push(point.x, point.y));\r\n\r\n this._ref = new Konva.Line({\r\n stroke: params.color ?? \"#ff0000\",\r\n strokeWidth: params.width ?? 4,\r\n globalCompositeOperation: \"source-over\",\r\n lineCap: \"round\",\r\n lineJoin: \"round\",\r\n points: konvaPoints,\r\n draggable: true,\r\n strokeScaleEnabled: false,\r\n });\r\n\r\n this._ref.id(this._ref._id.toString());\r\n }\r\n\r\n ref() {\r\n return this._ref;\r\n }\r\n\r\n id(): string {\r\n return this._ref.id();\r\n }\r\n\r\n enableMouseEditing(value: boolean) {\r\n this._ref.draggable(value);\r\n }\r\n\r\n type(): string {\r\n return \"line\";\r\n }\r\n\r\n getColor(): string {\r\n return this._ref.stroke();\r\n }\r\n\r\n setColor(hex: string) {\r\n this._ref.stroke(hex);\r\n }\r\n\r\n getRotation(): number {\r\n return this._ref.rotation();\r\n }\r\n\r\n setRotation(degrees: number): void {\r\n this._ref.rotation(degrees);\r\n }\r\n\r\n getZIndex(): number {\r\n return this._ref.zIndex();\r\n }\r\n\r\n setZIndex(zIndex: number): void {\r\n this._ref.zIndex(zIndex);\r\n }\r\n\r\n delete() {\r\n this._ref.destroy();\r\n this._ref = null;\r\n }\r\n\r\n getPoints(): [] {\r\n return this._ref.attrs.points;\r\n }\r\n\r\n setLineWidth(size: number) {\r\n this._ref.strokeWidth(size);\r\n }\r\n\r\n getLineWidth(): number {\r\n return this._ref.strokeWidth();\r\n }\r\n\r\n addPoints(points: [{ x: number; y: number }]) {\r\n let newPoints = this._ref.points();\r\n points.forEach((point) => {\r\n newPoints = newPoints.concat([point.x, point.y]);\r\n });\r\n\r\n this._ref.points(newPoints);\r\n }\r\n}\r\n","import Konva from \"konva\";\r\nimport { IMarkupText } from \"../../IMarkupText\";\r\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\r\n\r\nexport class KonvaText implements IMarkupText, IMarkupColorable {\r\n private _ref: Konva.Text;\r\n private readonly TEXT_FONT_FAMILY = \"Calibri\";\r\n\r\n constructor(\r\n params: { position: { x: number; y: number }; text: string; fontSize: number; color: string; rotation: number },\r\n ref = null\r\n ) {\r\n if (ref) {\r\n this._ref = ref;\r\n this._ref.id(this._ref._id.toString());\r\n return;\r\n }\r\n\r\n if (!params || !params.text) return;\r\n\r\n this._ref = new Konva.Text({\r\n x: params.position.x,\r\n y: params.position.y,\r\n text: params.text,\r\n fontSize: params.fontSize ?? 34,\r\n fontFamily: this.TEXT_FONT_FAMILY,\r\n fill: params.color ?? \"#ff0000\",\r\n align: \"left\",\r\n draggable: true,\r\n rotation: params.rotation ?? 0,\r\n });\r\n\r\n this._ref.id(this._ref._id.toString());\r\n }\r\n\r\n ref() {\r\n return this._ref;\r\n }\r\n\r\n id(): string {\r\n return this._ref.id();\r\n }\r\n\r\n enableMouseEditing(value: boolean) {\r\n this._ref.draggable(value);\r\n }\r\n\r\n type(): string {\r\n return \"text\";\r\n }\r\n\r\n getColor(): string {\r\n return this._ref.fill();\r\n }\r\n\r\n setColor(hex: string) {\r\n this._ref.fill(hex);\r\n }\r\n\r\n getRotation(): number {\r\n return this._ref.rotation();\r\n }\r\n\r\n setRotation(degrees: number): void {\r\n this._ref.rotation(degrees);\r\n }\r\n\r\n getZIndex(): number {\r\n return this._ref.zIndex();\r\n }\r\n\r\n setZIndex(zIndex: number): void {\r\n this._ref.zIndex(zIndex);\r\n }\r\n\r\n delete() {\r\n this._ref.destroy();\r\n this._ref = null;\r\n }\r\n\r\n getText(): string {\r\n return this._ref.text();\r\n }\r\n\r\n setText(text: string): void {\r\n this._ref.text(text);\r\n }\r\n\r\n getPosition(): { x: number; y: number } {\r\n return this._ref.getPosition();\r\n }\r\n\r\n setPosition(x: number, y: number) {\r\n this._ref.setPosition({ x, y });\r\n }\r\n\r\n getFontSize() {\r\n return this._ref.fontSize();\r\n }\r\n\r\n setFontSize(size: number) {\r\n this._ref.fontSize(size);\r\n }\r\n}\r\n","import Konva from \"konva\";\r\nimport { IMarkupRectangle } from \"../../IMarkupRectangle\";\r\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\r\n\r\nexport class KonvaRectangle implements IMarkupRectangle, IMarkupColorable {\r\n private _ref: Konva.Rect;\r\n\r\n constructor(\r\n params: { pos: { x: number; y: number }; color: string; lineWidth: number; width: number; height: number },\r\n ref = null\r\n ) {\r\n if (ref) {\r\n this._ref = ref;\r\n this._ref.id(this._ref._id.toString());\r\n return;\r\n }\r\n\r\n if (!params.pos) return;\r\n\r\n this._ref = new Konva.Rect({\r\n stroke: params.color ?? \"#ff0000\",\r\n strokeWidth: params.lineWidth ?? 4,\r\n globalCompositeOperation: \"source-over\",\r\n lineCap: \"round\",\r\n lineJoin: \"round\",\r\n x: params.pos.x,\r\n y: params.pos.y,\r\n width: params.width,\r\n height: params.height,\r\n draggable: true,\r\n strokeScaleEnabled: false,\r\n });\r\n\r\n this._ref.id(this._ref._id.toString());\r\n }\r\n\r\n getPosition(): { x: number; y: number } {\r\n return this._ref.position();\r\n }\r\n\r\n getWidth(): number {\r\n return this._ref.width();\r\n }\r\n\r\n getHeigth(): number {\r\n return this._ref.height();\r\n }\r\n\r\n setWidth(w: number) {\r\n this._ref.width(w);\r\n }\r\n\r\n setHeight(h: number) {\r\n this._ref.height(h);\r\n }\r\n\r\n setPosition(x: number, y: number) {\r\n this._ref.setPosition({ x, y });\r\n }\r\n\r\n ref() {\r\n return this._ref;\r\n }\r\n\r\n id(): string {\r\n return this._ref.id();\r\n }\r\n\r\n enableMouseEditing(value: boolean): void {\r\n this._ref.draggable(value);\r\n }\r\n\r\n type(): string {\r\n return \"rectangle\";\r\n }\r\n\r\n getColor(): string {\r\n return this._ref.stroke();\r\n }\r\n\r\n setColor(hex: string): void {\r\n this._ref.stroke(hex);\r\n }\r\n\r\n getRotation(): number {\r\n return this._ref.rotation();\r\n }\r\n\r\n setRotation(degrees: number): void {\r\n this._ref.rotation(degrees);\r\n }\r\n\r\n getZIndex(): number {\r\n return this._ref.zIndex();\r\n }\r\n\r\n setZIndex(zIndex: number): void {\r\n this._ref.zIndex(zIndex);\r\n }\r\n\r\n delete(): void {\r\n this._ref.destroy();\r\n this._ref = null;\r\n }\r\n\r\n setLineWidth(size: number): void {\r\n this._ref.strokeWidth(size);\r\n }\r\n\r\n getLineWidth(): number {\r\n return this._ref.strokeWidth();\r\n }\r\n}\r\n","import Konva from \"konva\";\r\nimport { IMarkupEllipse } from \"../../IMarkupEllipse\";\r\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\r\n\r\nexport class KonvaEllipse implements IMarkupEllipse, IMarkupColorable {\r\n private _ref: Konva.Ellipse;\r\n\r\n constructor(\r\n params: { pos: { x: number; y: number }; radius: { x: number; y: number }; color: string; lineWidth: number },\r\n ref = null\r\n ) {\r\n if (ref) {\r\n this._ref = ref;\r\n this._ref.id(this._ref._id.toString());\r\n return;\r\n }\r\n\r\n if (!params.pos) return;\r\n\r\n this._ref = new Konva.Ellipse({\r\n stroke: params.color ?? \"#ff0000\",\r\n strokeWidth: params.lineWidth ?? 4,\r\n globalCompositeOperation: \"source-over\",\r\n lineCap: \"round\",\r\n lineJoin: \"round\",\r\n x: params.pos.x,\r\n y: params.pos.y,\r\n radiusX: params.radius.x,\r\n radiusY: params.radius.y,\r\n draggable: true,\r\n strokeScaleEnabled: false,\r\n });\r\n\r\n this._ref.id(this._ref._id.toString());\r\n }\r\n\r\n getPosition(): { x: number; y: number } {\r\n return this._ref.position();\r\n }\r\n\r\n setPosition(x: number, y: number) {\r\n this._ref.setPosition({ x, y });\r\n }\r\n\r\n getRadiusX(): number {\r\n return this._ref.radiusX();\r\n }\r\n\r\n setRadiusX(r: number) {\r\n this._ref.radius({ x: r, y: this._ref.radiusY() });\r\n }\r\n\r\n getRadiusY(): number {\r\n return this._ref.radiusY();\r\n }\r\n\r\n setRadiusY(r: number) {\r\n this._ref.radius({ x: this._ref.radiusX(), y: r });\r\n }\r\n\r\n getLineWidth(): number {\r\n return this._ref.strokeWidth();\r\n }\r\n\r\n setLineWidth(size: number) {\r\n this._ref.strokeWidth(size);\r\n }\r\n\r\n ref() {\r\n return this._ref;\r\n }\r\n\r\n id(): string {\r\n return this._ref.id();\r\n }\r\n\r\n enableMouseEditing(value: boolean) {\r\n this._ref.draggable(value);\r\n }\r\n\r\n type(): string {\r\n return \"ellipse\";\r\n }\r\n\r\n getColor(): string {\r\n return this._ref.stroke();\r\n }\r\n\r\n setColor(hex: string) {\r\n this._ref.stroke(hex);\r\n }\r\n\r\n getRotation(): number {\r\n return this._ref.rotation();\r\n }\r\n\r\n setRotation(degrees: number): void {\r\n this._ref.rotation(degrees);\r\n }\r\n\r\n getZIndex(): number {\r\n return this._ref.zIndex();\r\n }\r\n\r\n setZIndex(zIndex: number): void {\r\n this._ref.zIndex(zIndex);\r\n }\r\n\r\n delete() {\r\n this._ref.destroy();\r\n this._ref = null;\r\n }\r\n}\r\n","import Konva from \"konva\";\r\nimport { IMarkupArrow } from \"../../IMarkupArrow\";\r\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\r\n\r\nexport class KonvaArrow implements IMarkupArrow, IMarkupColorable {\r\n private _ref: Konva.Arrow;\r\n\r\n constructor(\r\n params: {\r\n points: [];\r\n pointerWidth: number;\r\n pointerLength: number;\r\n color: string;\r\n lineWidth: number;\r\n },\r\n ref = null\r\n ) {\r\n if (ref) {\r\n this._ref = ref;\r\n this._ref.id(this._ref._id.toString());\r\n return;\r\n }\r\n\r\n if (!params.points) return;\r\n\r\n this._ref = new Konva.Arrow({\r\n stroke: params.color ?? \"#ff0000\",\r\n fill: params.color ?? \"#ff0000\",\r\n strokeWidth: params.lineWidth ?? 4,\r\n globalCompositeOperation: \"source-over\",\r\n lineCap: \"round\",\r\n lineJoin: \"round\",\r\n points: params.points,\r\n pointerWidth: params.pointerWidth,\r\n pointerLength: params.pointerLength,\r\n draggable: true,\r\n strokeScaleEnabled: false,\r\n });\r\n\r\n this._ref.id(this._ref._id.toString());\r\n }\r\n\r\n ref() {\r\n return this._ref;\r\n }\r\n\r\n id(): string {\r\n return this._ref.id();\r\n }\r\n\r\n enableMouseEditing(value: boolean) {\r\n this._ref.draggable(value);\r\n }\r\n\r\n type(): string {\r\n return \"arrow\";\r\n }\r\n\r\n getColor(): string {\r\n return this._ref.stroke();\r\n }\r\n\r\n setColor(hex: string) {\r\n this._ref.stroke(hex);\r\n }\r\n\r\n getRotation(): number {\r\n return this._ref.rotation();\r\n }\r\n\r\n setRotation(degrees: number): void {\r\n this._ref.rotation(degrees);\r\n }\r\n\r\n getZIndex(): number {\r\n return this._ref.zIndex();\r\n }\r\n\r\n setZIndex(zIndex: number): void {\r\n this._ref.zIndex(zIndex);\r\n }\r\n\r\n delete() {\r\n this._ref.destroy();\r\n this._ref = null;\r\n }\r\n\r\n getPoints(): number[] {\r\n return this._ref.attrs.points;\r\n }\r\n\r\n setPoints(points: number[]) {\r\n this._ref.points(points);\r\n }\r\n\r\n getPointerWidth(): number {\r\n return this._ref.pointerWidth();\r\n }\r\n\r\n setPointerWidth(w: number) {\r\n this._ref.pointerWidth(w);\r\n }\r\n\r\n getPointerLength(): number {\r\n return this._ref.pointerLength();\r\n }\r\n\r\n setPointerLength(l: number) {\r\n this._ref.pointerLength(l);\r\n }\r\n\r\n getLineWidth(): number {\r\n return this._ref.strokeWidth();\r\n }\r\n\r\n setLineWidth(size: number) {\r\n this._ref.strokeWidth(size);\r\n }\r\n}\r\n","import Konva from \"konva\";\r\nimport { IMarkupImage } from \"../../IMarkupImage\";\r\n\r\nexport class KonvaImage implements IMarkupImage {\r\n private _ref: Konva.Image;\r\n private _canvasImage: HTMLImageElement;\r\n private _ratio = 1;\r\n\r\n constructor(params: { position: { x: number; y: number }; src: string; width: number; height: number }, ref = null) {\r\n if (ref) {\r\n if (ref.height() === 0 || ref.width() === 0) return;\r\n\r\n this._ref = ref;\r\n this._canvasImage = ref.image();\r\n this._ref.id(this._ref._id.toString());\r\n this._ratio = this._ref.height() / this._ref.width();\r\n return;\r\n }\r\n\r\n if (!params.position || !params.src) return;\r\n this._canvasImage = new Image();\r\n\r\n this._ref = new Konva.Image({\r\n x: params.position.x,\r\n y: params.position.y,\r\n image: this._canvasImage,\r\n width: params.width,\r\n height: params.height,\r\n draggable: true,\r\n });\r\n\r\n this._canvasImage.onload = () => {\r\n this._ref.image(this._canvasImage);\r\n this._ratio = this._ref.height() === 0 || this._ref.width() === 0 ? 1 : this._ref.height() / this._ref.width();\r\n };\r\n\r\n this._canvasImage.src = params.src;\r\n\r\n this._ref.id(this._ref._id.toString());\r\n }\r\n\r\n getSrc(): string {\r\n return this._canvasImage.src;\r\n }\r\n\r\n setSrc(src: any) {\r\n this._canvasImage.src = src;\r\n }\r\n\r\n getWidth(): number {\r\n return this._ref.width();\r\n }\r\n\r\n setWidth(w: number) {\r\n this._ref.width(w);\r\n this._ref.height(w * this._ratio);\r\n }\r\n\r\n getHeight(): number {\r\n return this._ref.height();\r\n }\r\n\r\n setHeight(h: number) {\r\n this._ref.height(h);\r\n this._ref.width(h / this._ratio);\r\n }\r\n\r\n ref() {\r\n return this._ref;\r\n }\r\n\r\n id(): string {\r\n return this._ref.id();\r\n }\r\n\r\n enableMouseEditing(value: boolean) {\r\n this._ref.draggable(value);\r\n }\r\n\r\n type(): string {\r\n return \"image\";\r\n }\r\n\r\n // we can break Liskov Substitution Principle, need to use separate IColorable\r\n // getColor(): string {\r\n // return this._ref.fill();\r\n // }\r\n\r\n // setColor(hex: string) {\r\n // this._ref.fill(hex);\r\n // }\r\n\r\n getRotation(): number {\r\n return this._ref.rotation();\r\n }\r\n\r\n setRotation(degrees: number): void {\r\n this._ref.rotation(degrees);\r\n }\r\n\r\n getZIndex(): number {\r\n return this._ref.zIndex();\r\n }\r\n\r\n setZIndex(zIndex: number): void {\r\n this._ref.zIndex(zIndex);\r\n }\r\n\r\n delete() {\r\n this._ref.destroy();\r\n this._ref = null;\r\n }\r\n\r\n getPosition(): { x: number; y: number } {\r\n return this._ref.getPosition();\r\n }\r\n\r\n setPosition(x: number, y: number) {\r\n this._ref.setPosition({ x, y });\r\n }\r\n}\r\n","import Konva from \"konva\";\r\nimport { IMarkup, MarkupMode } from \"../../IMarkup\";\r\nimport { Viewer } from \"../../../Viewer\";\r\nimport { ChangeActiveDraggerEvent, PanEvent } from \"../../../ViewerEvents\";\r\nimport { MarkupColor } from \"./MarkupColor\";\r\nimport * as utils from \"../../../Draggers/MeasureLineDragger/MeasureUtils\";\r\nimport { OdBaseDragger } from \"../../../Draggers/Common/OdBaseDragger\";\r\nimport { IMarkupObject } from \"../../Api/IMarkupObject\";\r\nimport { KonvaLine } from \"../../Api/Impl/Konva/KonvaLine\";\r\nimport { KonvaText } from \"../../Api/Impl/Konva/KonvaText\";\r\nimport { KonvaRectangle } from \"../../Api/Impl/Konva/KonvaRectangle\";\r\nimport { KonvaEllipse } from \"../../Api/Impl/Konva/KonvaEllipse\";\r\nimport { KonvaArrow } from \"../../Api/Impl/Konva/KonvaArrow\";\r\nimport { KonvaImage } from \"../../Api/Impl/Konva/KonvaImage\";\r\n\r\nclass KonvaShape {\r\n name: string;\r\n initializer: (ref: any) => any;\r\n}\r\n\r\n// move to separate class and create factory with enum?\r\nconst MarkupMode2Konva = new Map<MarkupMode, KonvaShape>([\r\n [\r\n MarkupMode.Line,\r\n {\r\n name: \"Line\",\r\n initializer: (ref) => {\r\n return new KonvaLine(null, ref);\r\n },\r\n },\r\n ],\r\n [\r\n MarkupMode.Text,\r\n {\r\n name: \"Text\",\r\n initializer: (ref) => {\r\n return new KonvaText(null, ref);\r\n },\r\n },\r\n ],\r\n [\r\n MarkupMode.Rectangle,\r\n {\r\n name: \"Rect\",\r\n initializer: (ref) => {\r\n return new KonvaRectangle(null, ref);\r\n },\r\n },\r\n ],\r\n [\r\n MarkupMode.Ellipse,\r\n {\r\n name: \"Ellipse\",\r\n initializer: (ref) => {\r\n return new KonvaEllipse(null, ref);\r\n },\r\n },\r\n ],\r\n [\r\n MarkupMode.Arrow,\r\n {\r\n name: \"Arrow\",\r\n initializer: (ref) => {\r\n return new KonvaArrow(null, ref);\r\n },\r\n },\r\n ],\r\n [\r\n MarkupMode.Image,\r\n {\r\n name: \"Image\",\r\n initializer: (ref) => {\r\n return new KonvaImage(null, ref);\r\n },\r\n },\r\n ],\r\n]);\r\n\r\nexport class KonvaMarkup implements IMarkup {\r\n private _isInitialized = false;\r\n private _viewer: Viewer;\r\n private _canvasOriginal: HTMLCanvasElement;\r\n private _canvasEvents: string[];\r\n private _markupIsActive: boolean;\r\n private _markupMode: MarkupMode;\r\n private _markupColor: MarkupColor;\r\n private _konvaStage: Konva.Stage;\r\n private _konvaLayer: Konva.Layer;\r\n private _konvaTransformer: Konva.Transformer;\r\n\r\n private _textInputRef: HTMLTextAreaElement;\r\n private _textInputPos: Konva.Vector2d;\r\n private _textInputAngle: number;\r\n private _markupContainer: HTMLDivElement;\r\n private _zIndex = 1;\r\n\r\n private readonly _markupContainerName = \"markupContainer\";\r\n private readonly TEXT_FONT_FAMILY = \"Calibri\";\r\n\r\n public lineWidth = 4;\r\n\r\n initialize(viewer: Viewer, canvas: HTMLCanvasElement, canvasEvents: string[] = []): void {\r\n if (!Konva)\r\n throw new Error(\r\n 'Konva Markup: Error during Markup Initialization. Konva is not initialized. Update node_modules or add to your page <script src=\"https://unpkg.com/konva@9/konva.min.js\"></script>'\r\n );\r\n\r\n this._viewer = viewer;\r\n\r\n this._canvasOriginal = canvas;\r\n this._canvasEvents = canvasEvents;\r\n\r\n this._markupContainer = document.createElement(\"div\");\r\n this._markupContainer.id = this._markupContainerName;\r\n this._markupContainer.style.position = \"absolute\";\r\n this._markupContainer.style.top = \"0px\";\r\n this._markupContainer.style.left = \"0px\";\r\n // to eliminate grey box during delete elements\r\n this._markupContainer.style.outline = \"0px\";\r\n\r\n const parentDiv = this._canvasOriginal.parentElement;\r\n parentDiv.appendChild(this._markupContainer);\r\n\r\n this._markupColor = new MarkupColor(255, 0, 0);\r\n this._markupIsActive = false;\r\n\r\n this.initializeKonva();\r\n this.resize();\r\n\r\n this._canvasEvents.forEach((x) => this._markupContainer.addEventListener(x, this.redirectToViewer));\r\n\r\n this._viewer.addEventListener(\"resize\", this.resize);\r\n this._viewer.addEventListener(\"changeactivedragger\", this.changeActiveDragger);\r\n this._viewer.addEventListener(\"pan\", this.pan);\r\n\r\n this._isInitialized = true;\r\n }\r\n\r\n dispose(): void {\r\n if (!this._isInitialized) return;\r\n\r\n this._canvasEvents.forEach((x) => this._markupContainer.removeEventListener(x, this.redirectToViewer));\r\n\r\n this._viewer.removeEventListener(\"pan\", this.pan);\r\n this._viewer.removeEventListener(\"changeactivedragger\", this.changeActiveDragger);\r\n this._viewer.removeEventListener(\"resize\", this.resize);\r\n\r\n this.destroyKonva();\r\n\r\n this._markupContainer.remove();\r\n\r\n this._markupContainer = undefined;\r\n this._canvasOriginal = undefined;\r\n this._viewer = undefined;\r\n\r\n this._isInitialized = false;\r\n }\r\n\r\n changeActiveDragger = (event: ChangeActiveDraggerEvent) => {\r\n const draggerName = event.data;\r\n\r\n this._markupContainer.className = this._canvasOriginal.className\r\n .split(\" \")\r\n .filter((x) => !x.startsWith(\"oda-cursor-\"))\r\n .filter((x) => x)\r\n .concat(`oda-cursor-${draggerName.toLowerCase()}`)\r\n .join(\" \");\r\n\r\n this.removeTextInput();\r\n\r\n const markupMode = MarkupMode[draggerName];\r\n const konvaMode = MarkupMode2Konva.get(markupMode);\r\n if (konvaMode) {\r\n this._markupMode = markupMode;\r\n this._markupIsActive = true;\r\n } else {\r\n this._markupIsActive = false;\r\n this._konvaTransformer.nodes([]);\r\n }\r\n };\r\n\r\n resize = () => {\r\n this._konvaStage?.width(this._canvasOriginal.clientWidth);\r\n this._konvaStage?.height(this._canvasOriginal.clientHeight);\r\n };\r\n\r\n pan = (event: PanEvent) => {\r\n const dX = event.dX / window.devicePixelRatio;\r\n const dY = event.dY / window.devicePixelRatio;\r\n\r\n Object.values(MarkupMode).forEach((mode) => this.konvaLayerFind(mode).forEach((x) => x.move({ x: dX, y: dY })));\r\n };\r\n\r\n redirectToViewer = (event) => {\r\n this._viewer.emit(event);\r\n };\r\n\r\n getDraggers(): Map<string, typeof OdBaseDragger> {\r\n return null;\r\n }\r\n\r\n clearOverlay(): void {\r\n this.removeTextInput();\r\n this._konvaTransformer.nodes([]);\r\n Object.values(MarkupMode).forEach((mode) => this.konvaLayerFind(mode).forEach((x) => x.destroy()));\r\n }\r\n\r\n getMarkupColor(): { r: number; g: number; b: number } {\r\n return this._markupColor.RGB;\r\n }\r\n\r\n setMarkupColor(r: number, g: number, b: number): void {\r\n this._markupColor.setColor(r, g, b);\r\n }\r\n\r\n colorizeAllMarkup(r = 255, g = 0, b = 0): void {\r\n const hex = new MarkupColor(r, g, b).HexColor;\r\n Object.values(MarkupMode).forEach((mode) => {\r\n this.konvaLayerFind(mode).forEach((x) => {\r\n const konvaObj = MarkupMode2Konva.get(mode).initializer(x);\r\n if (konvaObj.setColor) konvaObj.setColor(hex);\r\n });\r\n });\r\n\r\n this._konvaLayer.draw();\r\n }\r\n\r\n drawViewpoint(viewpoint: any): void {\r\n function getLogicalPoint3dAsArray(point3d) {\r\n return [point3d.x, point3d.y, point3d.z];\r\n }\r\n\r\n if (!this._isInitialized) return;\r\n if (!this._viewer.visualizeJs) return;\r\n\r\n const visLib = this._viewer.visLib();\r\n const visViewer = visLib.getViewer();\r\n const activeView = visViewer.activeView;\r\n\r\n this._viewer.resetActiveDragger();\r\n this._viewer.clearSlices();\r\n this._viewer.clearOverlay();\r\n\r\n if (viewpoint.orthogonal_camera) {\r\n activeView.setView(\r\n getLogicalPoint3dAsArray(viewpoint.orthogonal_camera.view_point),\r\n getLogicalPoint3dAsArray(viewpoint.orthogonal_camera.direction),\r\n getLogicalPoint3dAsArray(viewpoint.orthogonal_camera.up_vector),\r\n viewpoint.orthogonal_camera.field_width,\r\n viewpoint.orthogonal_camera.field_height,\r\n true\r\n );\r\n }\r\n\r\n this._viewer.syncOverlay();\r\n\r\n const markupColor = viewpoint.custom_fields.markup_color || { r: 255, g: 0, b: 0 };\r\n this.setMarkupColor(markupColor.r, markupColor.g, markupColor.b);\r\n\r\n if (viewpoint.clipping_planes) {\r\n for (const plane of viewpoint.clipping_planes) {\r\n const cuttingPlane = new visLib.OdTvPlane();\r\n cuttingPlane.set(getLogicalPoint3dAsArray(plane.location), getLogicalPoint3dAsArray(plane.direction));\r\n\r\n activeView.addCuttingPlane(cuttingPlane);\r\n activeView.setEnableCuttingPlaneFill(true, 0x66, 0x66, 0x66);\r\n }\r\n }\r\n\r\n this.loadMarkup(viewpoint);\r\n\r\n this._viewer.update();\r\n }\r\n\r\n createViewpoint(): object {\r\n function getLogicalPoint3dFromArray(array) {\r\n return { x: array[0], y: array[1], z: array[2] };\r\n }\r\n\r\n if (!this._isInitialized) return {};\r\n if (!this._viewer.visualizeJs) return {};\r\n\r\n const visLib = this._viewer.visLib();\r\n const visViewer = visLib.getViewer();\r\n const activeView = visViewer.activeView;\r\n\r\n const viewpoint = {\r\n lines: [],\r\n texts: [],\r\n clipping_planes: [],\r\n } as any;\r\n\r\n viewpoint.orthogonal_camera = {\r\n view_point: getLogicalPoint3dFromArray(activeView.viewPosition),\r\n direction: getLogicalPoint3dFromArray(activeView.viewTarget),\r\n up_vector: getLogicalPoint3dFromArray(activeView.upVector),\r\n field_width: activeView.viewFieldWidth,\r\n field_height: activeView.viewFieldHeight,\r\n };\r\n\r\n for (let i = 0; i < activeView.numCuttingPlanes(); i++) {\r\n const cuttingPlane = activeView.getCuttingPlane(i);\r\n\r\n const plane = {\r\n location: getLogicalPoint3dFromArray(cuttingPlane.getOrigin()),\r\n direction: getLogicalPoint3dFromArray(cuttingPlane.normal()),\r\n };\r\n\r\n viewpoint.clipping_planes.push(plane);\r\n }\r\n\r\n viewpoint.snapshot = {\r\n data: this.combineMarkupWithDrawing(),\r\n };\r\n\r\n viewpoint.custom_fields = {\r\n markup_color: this.getMarkupColor(),\r\n };\r\n\r\n const markupLines = this.getMarkupLines();\r\n if (markupLines && markupLines.length > 0) {\r\n markupLines?.forEach((markupLine) => {\r\n const line = {\r\n points: [],\r\n color: markupLine.color || \"ff0000\",\r\n width: markupLine.width || 3,\r\n };\r\n for (const point of markupLine.points) {\r\n line.points.push(getLogicalPoint3dFromArray(point));\r\n }\r\n viewpoint.lines.push(line);\r\n });\r\n }\r\n\r\n const markupTexts = this.getMarkupTexts();\r\n if (markupTexts && markupTexts.length > 0) {\r\n markupTexts?.forEach((markupText) => {\r\n const text = {\r\n position: getLogicalPoint3dFromArray(markupText.position),\r\n text: markupText.text,\r\n angle: markupText.rotation ?? 0,\r\n text_size: markupText.size,\r\n color: markupText.color,\r\n };\r\n viewpoint.texts.push(text);\r\n });\r\n }\r\n\r\n viewpoint.description = new Date().toDateString();\r\n return viewpoint;\r\n }\r\n\r\n createObject(type: string, params: any): IMarkupObject {\r\n let object;\r\n let zIndex = this._zIndex;\r\n\r\n // TODO: factory?\r\n switch (type) {\r\n case \"line\":\r\n object = new KonvaLine(params);\r\n zIndex = 1;\r\n break;\r\n case \"text\":\r\n object = new KonvaText(params);\r\n break;\r\n case \"rectangle\":\r\n object = new KonvaRectangle(params);\r\n zIndex = 1;\r\n break;\r\n case \"ellipse\":\r\n object = new KonvaEllipse(params);\r\n zIndex = 1;\r\n break;\r\n case \"arrow\":\r\n object = new KonvaArrow(params);\r\n break;\r\n case \"image\":\r\n object = new KonvaImage(params);\r\n zIndex = 0;\r\n break;\r\n default:\r\n throw new Error(\"Markup CreateObject - unsupported type has been detected.\");\r\n }\r\n\r\n this.addObject(object);\r\n\r\n // Set zIndex only when shape has been added to Layer else we will get \"Konva warning: Node has no parent. zIndex parameter is ignored.\"\r\n object.setZIndex(zIndex);\r\n this._zIndex++;\r\n return object;\r\n }\r\n\r\n getObjects(): IMarkupObject[] {\r\n const objects = [];\r\n this.konvaLayerFind(MarkupMode.Line).forEach((line) => {\r\n objects.push(new KonvaLine(null, line));\r\n });\r\n\r\n this.konvaLayerFind(MarkupMode.Text).forEach((text) => {\r\n objects.push(new KonvaText(null, text));\r\n });\r\n\r\n this.konvaLayerFind(MarkupMode.Rectangle).forEach((rectangle) => {\r\n objects.push(new KonvaRectangle(null, rectangle));\r\n });\r\n\r\n this.konvaLayerFind(MarkupMode.Ellipse).forEach((ellipse) => {\r\n objects.push(new KonvaEllipse(null, ellipse));\r\n });\r\n\r\n this.konvaLayerFind(MarkupMode.Arrow).forEach((arrow) => {\r\n objects.push(new KonvaArrow(null, arrow));\r\n });\r\n\r\n this.konvaLayerFind(MarkupMode.Image).forEach((image) => {\r\n objects.push(new KonvaImage(null, image));\r\n });\r\n\r\n return objects;\r\n }\r\n\r\n getSelectedObjects(): IMarkupObject[] {\r\n const objects = [];\r\n\r\n this._konvaTransformer.nodes().forEach((obj) => {\r\n const konvaShapeName = obj.className;\r\n switch (konvaShapeName) {\r\n case \"Line\":\r\n objects.push(new KonvaLine(null, obj));\r\n break;\r\n case \"Text\":\r\n objects.push(new KonvaText(null, obj));\r\n break;\r\n case \"Rect\":\r\n objects.push(new KonvaRectangle(null, obj));\r\n break;\r\n case \"Ellipse\":\r\n objects.push(new KonvaEllipse(null, obj));\r\n break;\r\n case \"Arrow\":\r\n objects.push(new KonvaArrow(null, obj));\r\n break;\r\n case \"Image\":\r\n objects.push(new KonvaImage(null, obj));\r\n break;\r\n default:\r\n break;\r\n }\r\n });\r\n\r\n return objects;\r\n }\r\n\r\n selectObjects(objects: IMarkupObject[]) {\r\n const selectedObjs = this._konvaTransformer.nodes().concat(objects.map((x) => x.ref()));\r\n this._konvaTransformer.nodes(selectedObjs);\r\n }\r\n\r\n clearSelected(): void {\r\n this._konvaTransformer.nodes([]);\r\n }\r\n\r\n private addObject(object: IMarkupObject): void {\r\n this._konvaLayer.add(object.ref());\r\n }\r\n\r\n private konvaLayerFind(markupShape: MarkupMode): any {\r\n const konvaShape = MarkupMode2Konva.get(markupShape);\r\n if (konvaShape) {\r\n // for \"draggable\" Konva uses Rectangles in Transformer. We need only Shapes from Layer.\r\n const konvaShapes = this._konvaLayer.find(konvaShape.name).filter((x) => x.parent instanceof Konva.Layer);\r\n return konvaShapes;\r\n }\r\n }\r\n\r\n private initializeKonva(): any {\r\n // first we need Konva core things: stage and layer\r\n this._konvaStage = new Konva.Stage({\r\n container: this._markupContainerName,\r\n width: this._canvasOriginal.clientWidth,\r\n height: this._canvasOriginal.clientHeight,\r\n });\r\n const stage = this._konvaStage;\r\n const layer = new Konva.Layer({ pixelRation: window.devicePixelRatio });\r\n stage.add(layer);\r\n this._konvaLayer = layer;\r\n\r\n const transformer = new Konva.Transformer({\r\n shouldOverdrawWholeArea: false,\r\n });\r\n\r\n this._konvaTransformer = transformer;\r\n layer.add(transformer);\r\n\r\n let isPaint = false;\r\n let lastLine;\r\n\r\n stage.on(\"mousedown touchstart\", (e) => {\r\n // do nothing if we mousedown on any shape\r\n if (!this._markupIsActive || e.target !== stage || this._markupMode === MarkupMode.Text) return;\r\n\r\n if (e.target === stage && transformer.nodes().length > 0) {\r\n transformer.nodes([]);\r\n return;\r\n }\r\n\r\n const pos = stage.getPointerPosition();\r\n\r\n if (this._markupMode === MarkupMode.Line) {\r\n // add point twice, so we have some drawings even on a simple click\r\n lastLine = this.addLine([pos.x, pos.y, pos.x, pos.y]);\r\n\r\n isPaint = true;\r\n } else if (this._markupMode === MarkupMode.Rectangle) {\r\n this.addRectangle({ x: pos.x, y: pos.y }, 50, 50);\r\n } else if (this._markupMode === MarkupMode.Ellipse) {\r\n this.addEllipse({ x: pos.x, y: pos.y }, { x: 50, y: 50 });\r\n } else if (this._markupMode === MarkupMode.Arrow) {\r\n this.addArrow([pos.x, pos.y, pos.x + 50, pos.y + 50], 5, 5);\r\n }\r\n });\r\n\r\n stage.on(\"mouseup touchend\", (e) => {\r\n if (!this._markupIsActive) return;\r\n isPaint = false;\r\n });\r\n\r\n stage.on(\"mousemove touchmove\", (e) => {\r\n if (!this._markupIsActive) return;\r\n if (!isPaint) {\r\n return;\r\n }\r\n\r\n // prevent scrolling on touch devices\r\n //e.evt.preventDefault();\r\n\r\n const pos = stage.getPointerPosition();\r\n const newPoints = lastLine.points().concat([pos.x, pos.y]);\r\n lastLine.points(newPoints);\r\n });\r\n\r\n // clicks should select/deselect shapes\r\n stage.on(\"click tap\", (e) => {\r\n if (!this._markupIsActive) return;\r\n\r\n // if click on empty area - remove all selections\r\n if (e.target === stage) {\r\n if (this._markupMode === MarkupMode.Text) {\r\n if (this._textInputRef) this.addText(this._textInputRef.value, this._textInputPos, this._textInputAngle);\r\n else if (transformer.nodes().length === 0) {\r\n const pos = stage.getPointerPosition();\r\n this.createTextInput(pos, e.evt.pageX, e.evt.pageY, 0, null);\r\n }\r\n }\r\n transformer.nodes([]);\r\n return;\r\n }\r\n\r\n if (e.target.className === \"Text\" && transformer.nodes().length === 1 && transformer.nodes()[0] === e.target) {\r\n if (this._textInputRef) this.addText(this._textInputRef.value, this._textInputPos, this._textInputAngle);\r\n else\r\n this.createTextInput(\r\n { x: e.target.attrs.x, y: e.target.attrs.y },\r\n e.evt.pageX,\r\n e.evt.pageY,\r\n e.target.attrs.rotation,\r\n e.target.attrs.text\r\n );\r\n return;\r\n } else {\r\n this.removeTextInput();\r\n }\r\n\r\n // do we pressed shift or ctrl?\r\n const metaPressed = e.evt.shiftKey || e.evt.ctrlKey || e.evt.metaKey;\r\n const isSelected = transformer.nodes().indexOf(e.target) >= 0;\r\n\r\n if (!metaPressed && !isSelected) {\r\n // if no key pressed and the node is not selected\r\n // select just one\r\n transformer.nodes([e.target]);\r\n } else if (metaPressed && isSelected) {\r\n // if we pressed keys and node was selected\r\n // we need to remove it from selection:\r\n const nodes = transformer.nodes().slice(); // use slice to have new copy of array\r\n // remove node from array\r\n nodes.splice(nodes.indexOf(e.target), 1);\r\n transformer.nodes(nodes);\r\n } else if (metaPressed && !isSelected) {\r\n // add the node into selection\r\n const nodes = transformer.nodes().concat([e.target]);\r\n transformer.nodes(nodes);\r\n }\r\n });\r\n\r\n const container = stage.container();\r\n container.tabIndex = 1;\r\n // focus it\r\n // also stage will be in focus on its click\r\n container.focus();\r\n\r\n container.addEventListener(\"keydown\", (e) => {\r\n if (!this._markupIsActive) return;\r\n if (e.code === \"Delete\") {\r\n const trNodes = this._konvaTransformer.nodes();\r\n if (trNodes.length > 0) {\r\n this._konvaTransformer.nodes().forEach((x) => x.destroy());\r\n this._konvaTransformer.nodes([]);\r\n }\r\n layer.draw();\r\n return;\r\n }\r\n e.preventDefault();\r\n });\r\n }\r\n\r\n private destroyKonva() {\r\n this.clearOverlay();\r\n\r\n this._konvaStage.destroy();\r\n\r\n this._konvaLayer = undefined;\r\n this._konvaTransformer = undefined;\r\n this._konvaStage = undefined;\r\n }\r\n\r\n private getMarkupLines() {\r\n const lines = [];\r\n this.konvaLayerFind(MarkupMode.Line).forEach((line) => {\r\n const linePoints = line.attrs.points;\r\n if (!linePoints) return;\r\n const worldPoints = [];\r\n const absoluteTransform = line.getAbsoluteTransform();\r\n for (let i = 0; i < linePoints.length; i += 2) {\r\n // https://stackoverflow.com/a/57641487 - check answer's comments\r\n const atPoint = absoluteTransform.point({ x: linePoints[i], y: linePoints[i + 1] });\r\n const worldPoint = this._viewer\r\n .visViewer()\r\n .screenToWorld(atPoint.x * window.devicePixelRatio, atPoint.y * window.devicePixelRatio);\r\n worldPoints.push(worldPoint);\r\n }\r\n\r\n const konvaLine = new KonvaLine(null, line);\r\n lines.push({\r\n points: worldPoints,\r\n color: konvaLine.getColor(),\r\n width: konvaLine.getLineWidth(),\r\n });\r\n });\r\n\r\n return lines;\r\n }\r\n\r\n private getMarkupTexts() {\r\n const texts = [];\r\n\r\n const textSize = 0.02;\r\n let textScale = 1.0;\r\n\r\n const projMtrx = this._viewer.visViewer().activeView.projectionMatrix;\r\n const mtrxNumber = projMtrx.get(1, 1);\r\n const tol = 1.0e-6;\r\n if (!(mtrxNumber < tol && mtrxNumber > -tol)) {\r\n textScale = 1 / mtrxNumber;\r\n }\r\n\r\n this.konvaLayerFind(MarkupMode.Text).forEach((text) => {\r\n if (!text) return;\r\n texts.push({\r\n position: this._viewer\r\n .visViewer()\r\n .screenToWorld(text.attrs.x * window.devicePixelRatio, text.attrs.y * window.devicePixelRatio),\r\n text: text.attrs.text,\r\n rotation: text.attrs.rotation && Math.abs(text.attrs.rotation) > tol ? text.attrs.rotation : 0,\r\n size: textSize * textScale,\r\n color: text.attrs.fill,\r\n });\r\n });\r\n\r\n return texts;\r\n }\r\n\r\n private loadMarkup(viewpoint) {\r\n const vpLines = viewpoint.lines;\r\n vpLines?.forEach((vpLine) => {\r\n const linePoints = [];\r\n vpLine.points.forEach((point) => {\r\n const screenPoint = utils.worldToScreen(\r\n [point.x, point.y, point.z],\r\n this._viewer.visualizeJs,\r\n this._viewer.visViewer()\r\n );\r\n linePoints.push(screenPoint.x);\r\n linePoints.push(screenPoint.y);\r\n });\r\n\r\n this.addLine(linePoints, vpLine.color, vpLine.width);\r\n });\r\n\r\n const vpTexts = viewpoint.texts;\r\n vpTexts?.forEach((vpText) => {\r\n const screenPoint = utils.worldToScreen(\r\n [vpText.position.x, vpText.position.y, vpText.position.z],\r\n this._viewer.visualizeJs,\r\n this._viewer.visViewer()\r\n );\r\n this.addText(vpText.text, screenPoint, vpText.angle, vpText.color);\r\n });\r\n }\r\n\r\n private combineMarkupWithDrawing() {\r\n const trNodes = this._konvaTransformer.nodes();\r\n if (trNodes.length > 0) {\r\n this._konvaTransformer.nodes([]);\r\n }\r\n\r\n const tempCanvas = document.createElement(\"canvas\");\r\n tempCanvas.height = this._canvasOriginal.height;\r\n tempCanvas.width = this._canvasOriginal.width;\r\n const ctx = tempCanvas.getContext(\"2d\");\r\n ctx.drawImage(this._canvasOriginal, 0, 0);\r\n ctx.drawImage(this._konvaStage.toCanvas({ pixelRatio: window.devicePixelRatio }), 0, 0);\r\n return tempCanvas.toDataURL(\"image/jpeg\", 0.25);\r\n }\r\n\r\n private addLine(linePoints: number[], color?: string, width?: number): Konva.Line | void {\r\n if (!linePoints || linePoints.length === 0) return;\r\n const points: { x: number; y: number }[] = [];\r\n for (let i = 0; i < linePoints.length; i += 2) {\r\n points.push({ x: linePoints[i], y: linePoints[i + 1] });\r\n }\r\n\r\n const konvaLine = new KonvaLine({\r\n points,\r\n color: color || this._markupColor.HexColor,\r\n width: width || this.lineWidth,\r\n });\r\n\r\n const obj = konvaLine.ref();\r\n this._konvaLayer.add(obj);\r\n return obj;\r\n }\r\n\r\n private createTextInput(pos: Konva.Vector2d, inputX: number, inputY: number, angle: number, text: string): void {\r\n if (!this._textInputRef) {\r\n this._textInputPos = pos;\r\n this._textInputAngle = angle;\r\n this._textInputRef = document.createElement(\"textarea\");\r\n this._textInputRef.style.zIndex = \"9999\";\r\n this._textInputRef.style.position = \"absolute\";\r\n this._textInputRef.style.display = \"block\";\r\n this._textInputRef.style.top = inputY + \"px\";\r\n this._textInputRef.style.left = inputX + \"px\";\r\n this._textInputRef.onkeydown = (event) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n this.addText(this._textInputRef.value, this._textInputPos, this._textInputAngle);\r\n }\r\n if (event.key === \"Escape\") {\r\n event.preventDefault();\r\n this.removeTextInput();\r\n }\r\n };\r\n if (text) this._textInputRef.value = text;\r\n document.body.appendChild(this._textInputRef);\r\n\r\n setTimeout(() => {\r\n this._textInputRef.focus();\r\n }, 50);\r\n } else {\r\n this.removeTextInput();\r\n }\r\n }\r\n\r\n private removeTextInput(): void {\r\n this._textInputRef?.remove();\r\n this._textInputRef = null;\r\n this._textInputPos = null;\r\n this._textInputAngle = 0;\r\n }\r\n\r\n private addText(specifiedText: string, pos: Konva.Vector2d, angle: number, color?: string): void {\r\n if (specifiedText) {\r\n const konvaText = new Konva.Text({\r\n x: pos.x,\r\n y: pos.y,\r\n text: specifiedText,\r\n fontSize: 34,\r\n fontFamily: this.TEXT_FONT_FAMILY,\r\n fill: color || this._markupColor.HexColor,\r\n align: \"left\",\r\n draggable: true,\r\n rotation: angle,\r\n });\r\n\r\n this._konvaLayer.add(konvaText);\r\n }\r\n\r\n const trNodes = this._konvaTransformer.nodes();\r\n if (trNodes.length > 0) {\r\n // in case of edit - remove old Konva.Text object\r\n trNodes[0].destroy();\r\n this._konvaTransformer.nodes([]);\r\n }\r\n\r\n this.removeTextInput();\r\n\r\n return;\r\n }\r\n\r\n private addRectangle(pos: Konva.Vector2d, width: number, height: number): Konva.Rect | void {\r\n if (!pos) return;\r\n const konvaRectangle = new Konva.Rect({\r\n stroke: this._markupColor.HexColor,\r\n strokeWidth: this.lineWidth,\r\n globalCompositeOperation: \"source-over\",\r\n lineCap: \"round\",\r\n lineJoin: \"round\",\r\n x: pos.x,\r\n y: pos.y,\r\n width,\r\n height,\r\n draggable: true,\r\n strokeScaleEnabled: false,\r\n });\r\n\r\n this._konvaLayer.add(konvaRectangle);\r\n return konvaRectangle;\r\n }\r\n\r\n private addEllipse(pos: { x: number; y: number }, radius: { x: number; y: number }): Konva.Ellipse | void {\r\n if (!pos) return;\r\n\r\n const konvaEllipse = new Konva.Ellipse({\r\n stroke: this._markupColor.HexColor,\r\n strokeWidth: this.lineWidth,\r\n globalCompositeOperation: \"source-over\",\r\n lineCap: \"round\",\r\n lineJoin: \"round\",\r\n x: pos.x,\r\n y: pos.y,\r\n radiusX: radius.x,\r\n radiusY: radius.y,\r\n draggable: true,\r\n strokeScaleEnabled: false,\r\n });\r\n\r\n this._konvaLayer.add(konvaEllipse);\r\n return konvaEllipse;\r\n }\r\n\r\n private addArrow(points: number[], pointerWidth: number, pointerLength: number): Konva.Arrow | void {\r\n if (!points) return;\r\n\r\n const konvaArrow = new Konva.Arrow({\r\n stroke: this._markupColor.HexColor,\r\n fill: this._markupColor.HexColor,\r\n strokeWidth: this.lineWidth,\r\n globalCompositeOperation: \"source-over\",\r\n lineCap: \"round\",\r\n lineJoin: \"round\",\r\n points,\r\n pointerWidth,\r\n pointerLength,\r\n draggable: true,\r\n strokeScaleEnabled: false,\r\n });\r\n\r\n this._konvaLayer.add(konvaArrow);\r\n return konvaArrow;\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Viewer } from \"../Viewer\";\r\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\r\n\r\nexport const MARKUP_ENTITY_LINE = \"$MarkupTempEntity_Line\";\r\n\r\nexport class OdaLineDragger extends OdBaseDragger {\r\n protected entity: any;\r\n protected points: any[];\r\n protected drawPoints: any[];\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n this.press = false;\r\n }\r\n\r\n override dispose(): void {\r\n super.dispose();\r\n this.end();\r\n this.points = null;\r\n this.drawPoints = null;\r\n }\r\n\r\n override start(x: number, y: number): void {\r\n const point = this.getViewer().screenToWorld(x, y);\r\n this.drawPoints = [point[0], point[1], point[2]];\r\n }\r\n\r\n override drag(x: number, y: number): void {\r\n if (this.isDragging) {\r\n const point = this.getViewer().screenToWorld(x, y);\r\n this.drawPoints.push(point[0], point[1], point[2]);\r\n this._updateFrame();\r\n }\r\n }\r\n\r\n override end(): void {\r\n if (this.entity) {\r\n this.entity.delete();\r\n this.drawPoints = null;\r\n this.entity = null;\r\n }\r\n }\r\n\r\n private _updateFrame(): void {\r\n if (this.entity) {\r\n const model = this.getViewer().getMarkupModel();\r\n model.removeEntity(this.entity);\r\n model.delete();\r\n this.entity.delete();\r\n }\r\n\r\n this.entity = this.getActiveMarkupEntity(MARKUP_ENTITY_LINE);\r\n\r\n const entityPtr = this.entity.openObject();\r\n entityPtr.appendPolyline(this.drawPoints).delete();\r\n entityPtr.delete();\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\nimport { Viewer } from \"../Viewer\";\r\nimport { Point3d } from \"./Common/Geometry\";\r\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\r\n\r\nexport const MARKUP_ENTITY_TEXT = \"$MarkupTempEntity_Text\";\r\n\r\nexport class OdaTextDragger extends OdBaseDragger {\r\n protected textRef: HTMLTextAreaElement;\r\n protected m_center: Point3d;\r\n protected entity: any;\r\n protected readonly TEXT_HEIGHT_ALIGN = 24;\r\n\r\n constructor(subject: Viewer) {\r\n super(subject);\r\n this.press = false;\r\n }\r\n\r\n override dispose(): void {\r\n super.dispose();\r\n this.textRef?.remove();\r\n this.textRef = null;\r\n }\r\n\r\n private _finishInput(): void {\r\n if (this.textRef && this.textRef.value.trimLeft()) {\r\n this._updateFrame();\r\n }\r\n this.textRef?.remove();\r\n this.textRef = null;\r\n }\r\n\r\n override start(x: number, y: number, absoluteX: number, absoluteY: number) {\r\n if (!this.textRef) {\r\n this.textRef = document.createElement(\"textarea\");\r\n this.textRef.style.zIndex = \"9999\";\r\n this.textRef.style.position = \"absolute\";\r\n this.textRef.style.display = \"block\";\r\n this.textRef.style.top = absoluteY + \"px\";\r\n this.textRef.style.left = absoluteX + \"px\";\r\n this.textRef.onkeypress = (event) => {\r\n if (event.key === \"Enter\") {\r\n event.preventDefault();\r\n this._finishInput();\r\n }\r\n };\r\n document.body.appendChild(this.textRef);\r\n\r\n this.press = true;\r\n this.m_center = this.screenToWorld(x, y + this.TEXT_HEIGHT_ALIGN);\r\n this.needInputText = true;\r\n } else {\r\n this._finishInput();\r\n }\r\n }\r\n\r\n private _updateFrame(): void {\r\n this.entity = this.getActiveMarkupEntity(MARKUP_ENTITY_TEXT);\r\n const entityPtr = this.entity.openObject();\r\n\r\n const view = this.getViewer().activeView;\r\n const pos = this.toPoint(view.viewPosition);\r\n const target = this.toPoint(view.viewTarget);\r\n\r\n const eyeToWorld = view.eyeToWorldMatrix;\r\n const eyeDir = pos.sub(target).asVector();\r\n\r\n const xDir = this.toVector([1.0, 0.0, 0.0]);\r\n const direction = xDir.transformBy(eyeToWorld);\r\n\r\n const mtrx = this.createMatrix3d();\r\n mtrx.setToWorldToPlane(this.toGeVector(eyeDir));\r\n direction.transformBy(mtrx);\r\n\r\n const angel = -Math.atan2(-direction.y, direction.x);\r\n\r\n const textSize = 0.02;\r\n let textScale = 1.0;\r\n\r\n const projMtrx = view.projectionMatrix;\r\n const mtrxNumber = projMtrx.get(1, 1);\r\n const tol = 1.0e-6;\r\n if (!(mtrxNumber < tol && mtrxNumber > -tol)) {\r\n textScale = 1 / mtrxNumber;\r\n }\r\n\r\n const geomData = entityPtr.appendText(this.toGePoint(this.m_center), this.textRef.value.trimLeft());\r\n const textPtr = geomData.openAsText();\r\n\r\n textPtr.setNormal(this.toGeVector(eyeDir));\r\n textPtr.setRotation(angel);\r\n textPtr.setTextSize(textSize * textScale);\r\n textPtr.delete();\r\n geomData.delete();\r\n entityPtr.delete();\r\n }\r\n}\r\n","import { IMarkup, MarkupMode } from \"../../IMarkup\";\r\nimport { Viewer } from \"../../../Viewer\";\r\nimport { OdBaseDragger } from \"../../../Draggers/Common/OdBaseDragger\";\r\nimport { MARKUP_ENTITY_LINE, OdaLineDragger } from \"../../../Draggers/OdaLineDragger\";\r\nimport { MARKUP_ENTITY_TEXT, OdaTextDragger } from \"../../../Draggers/OdaTextDragger\";\r\nimport { IMarkupObject } from \"../../Api/IMarkupObject\";\r\n\r\nexport class VisualizeMarkup implements IMarkup {\r\n private _viewer: Viewer;\r\n protected _markupColor = { r: 255, g: 0, b: 0 };\r\n\r\n public lineWidth = 0;\r\n\r\n initialize(viewer: Viewer, canvas: HTMLCanvasElement, canvasEvents: string[]): void {\r\n this._viewer = viewer;\r\n }\r\n\r\n dispose(): void {}\r\n\r\n getDraggers(): Map<string, typeof OdBaseDragger> {\r\n return new Map<string, typeof OdBaseDragger>([\r\n [MarkupMode.Line, OdaLineDragger],\r\n [MarkupMode.Text, OdaTextDragger],\r\n ]);\r\n }\r\n\r\n clearOverlay(): void {\r\n if (!this._viewer.visualizeJs) return;\r\n\r\n const visViewer = this._viewer.visViewer();\r\n const model = visViewer.getMarkupModel();\r\n model.clearEntities();\r\n model.delete();\r\n\r\n this._viewer.update();\r\n }\r\n\r\n getMarkupColor(): { r: number; g: number; b: number } {\r\n return this._markupColor;\r\n }\r\n\r\n setMarkupColor(r: number, g: number, b: number): void {\r\n const color = { r, g, b };\r\n this._markupColor = color;\r\n }\r\n\r\n colorizeAllMarkup(r = 255, g = 0, b = 0): void {\r\n if (!this._viewer.visualizeJs) return;\r\n\r\n const visViewer = this._viewer.visViewer();\r\n const model = visViewer.getMarkupModel();\r\n const itr = model.getEntitiesIterator();\r\n for (; !itr.done(); itr.step()) {\r\n const entityId = itr.getEntity();\r\n const entityPtr = entityId.openObject();\r\n const entityName = entityPtr.getName();\r\n\r\n if (entityName === MARKUP_ENTITY_LINE || entityName === MARKUP_ENTITY_TEXT) {\r\n entityPtr.setColor(r, g, b);\r\n }\r\n\r\n entityPtr.delete();\r\n }\r\n itr.delete();\r\n\r\n this._viewer.update();\r\n }\r\n\r\n drawViewpoint(viewpoint: any): void {\r\n function getLogicalPoint3dAsArray(point3d) {\r\n return [point3d.x, point3d.y, point3d.z];\r\n }\r\n\r\n function getPoint3d(module, gePoint) {\r\n return module.Point3d.createFromArray(gePoint);\r\n }\r\n\r\n if (!this._viewer.visualizeJs) return;\r\n\r\n const visLib = this._viewer.visLib();\r\n const visViewer = visLib.getViewer();\r\n const activeView = visViewer.activeView;\r\n\r\n this._viewer.resetActiveDragger();\r\n this._viewer.clearSlices();\r\n this.clearOverlay();\r\n\r\n if (viewpoint.orthogonal_camera) {\r\n activeView.setView(\r\n getLogicalPoint3dAsArray(viewpoint.orthogonal_camera.view_point),\r\n getLogicalPoint3dAsArray(viewpoint.orthogonal_camera.direction),\r\n getLogicalPoint3dAsArray(viewpoint.orthogonal_camera.up_vector),\r\n viewpoint.orthogonal_camera.field_width,\r\n viewpoint.orthogonal_camera.field_height,\r\n true\r\n );\r\n }\r\n\r\n this._viewer.syncOverlay();\r\n\r\n const markupColor = viewpoint.custom_fields.markup_color || { r: 255, g: 0, b: 0 };\r\n this.setMarkupColor(markupColor.r, markupColor.g, markupColor.b);\r\n\r\n if (viewpoint.lines) {\r\n for (const line of viewpoint.lines) {\r\n const entityId = this._viewer.addMarkupEntity(MARKUP_ENTITY_LINE);\r\n const entityPtr = entityId.openObject();\r\n\r\n const entityData = [];\r\n for (const point of line.points) {\r\n entityData.push(point.x, point.y, point.z);\r\n }\r\n const geomData = entityPtr.appendPolyline(entityData);\r\n\r\n geomData.delete();\r\n entityPtr.delete();\r\n }\r\n }\r\n\r\n if (viewpoint.texts) {\r\n const pos = getPoint3d(visLib, activeView.viewPosition);\r\n const target = getPoint3d(visLib, activeView.viewTarget);\r\n const normal = pos.sub(target).asVector();\r\n\r\n for (const text of viewpoint.texts) {\r\n const entityId = this._viewer.addMarkupEntity(MARKUP_ENTITY_TEXT);\r\n const entityPtr = entityId.openObject();\r\n\r\n const geomData = entityPtr.appendText(getLogicalPoint3dAsArray(text.position), text.text);\r\n\r\n const textPtr = geomData.openAsText();\r\n textPtr.setNormal(getLogicalPoint3dAsArray(normal));\r\n textPtr.setRotation(text.angle);\r\n textPtr.setTextSize(text.text_size);\r\n\r\n textPtr.delete();\r\n geomData.delete();\r\n entityPtr.delete();\r\n }\r\n }\r\n\r\n if (viewpoint.clipping_planes) {\r\n for (const plane of viewpoint.clipping_planes) {\r\n const cuttingPlane = new visLib.OdTvPlane();\r\n cuttingPlane.set(getLogicalPoint3dAsArray(plane.location), getLogicalPoint3dAsArray(plane.direction));\r\n\r\n activeView.addCuttingPlane(cuttingPlane);\r\n activeView.setEnableCuttingPlaneFill(true, 0x66, 0x66, 0x66);\r\n }\r\n }\r\n\r\n this._viewer.update();\r\n }\r\n\r\n createViewpoint(): object {\r\n function getLogicalPoint3dFromArray(array) {\r\n return { x: array[0], y: array[1], z: array[2] };\r\n }\r\n\r\n if (!this._viewer.visualizeJs) return {};\r\n\r\n const visLib = this._viewer.visLib();\r\n const visViewer = visLib.getViewer();\r\n const activeView = visViewer.activeView;\r\n\r\n const viewpoint = {\r\n lines: [],\r\n texts: [],\r\n clipping_planes: [],\r\n } as any;\r\n\r\n viewpoint.orthogonal_camera = {\r\n view_point: getLogicalPoint3dFromArray(activeView.viewPosition),\r\n direction: getLogicalPoint3dFromArray(activeView.viewTarget),\r\n up_vector: getLogicalPoint3dFromArray(activeView.upVector),\r\n field_width: activeView.viewFieldWidth,\r\n field_height: activeView.viewFieldHeight,\r\n };\r\n\r\n const model = visViewer.getMarkupModel();\r\n const itr = model.getEntitiesIterator();\r\n for (; !itr.done(); itr.step()) {\r\n const entityId = itr.getEntity();\r\n const entityPtr = entityId.openObject();\r\n const entityName = entityPtr.getName();\r\n\r\n const geomItr = entityPtr.getGeometryDataIterator();\r\n if (geomItr.done()) {\r\n entityPtr.delete();\r\n continue;\r\n }\r\n\r\n const geometryId = geomItr.getGeometryData();\r\n\r\n if (entityName === MARKUP_ENTITY_LINE) {\r\n const polylinePtr = geometryId.openAsPolyline();\r\n const points = polylinePtr.getPoints();\r\n\r\n const line = {\r\n points: [],\r\n };\r\n for (const point of points) {\r\n line.points.push(getLogicalPoint3dFromArray(point));\r\n }\r\n\r\n viewpoint.lines.push(line);\r\n polylinePtr.delete();\r\n } else if (entityName === MARKUP_ENTITY_TEXT) {\r\n const textPtr = geometryId.openAsText();\r\n const position = textPtr.getPosition();\r\n\r\n const text = {\r\n position: getLogicalPoint3dFromArray(position),\r\n text: textPtr.getString(),\r\n angle: textPtr.getRotation(),\r\n text_size: textPtr.getTextSize(),\r\n };\r\n\r\n viewpoint.texts.push(text);\r\n textPtr.delete();\r\n }\r\n\r\n entityPtr.delete();\r\n }\r\n itr.delete();\r\n\r\n for (let i = 0; i < activeView.numCuttingPlanes(); i++) {\r\n const cuttingPlane = activeView.getCuttingPlane(i);\r\n\r\n const plane = {\r\n location: getLogicalPoint3dFromArray(cuttingPlane.getOrigin()),\r\n direction: getLogicalPoint3dFromArray(cuttingPlane.normal()),\r\n };\r\n\r\n viewpoint.clipping_planes.push(plane);\r\n }\r\n\r\n viewpoint.snapshot = {\r\n data: visLib.canvas.toDataURL(\"image/jpeg\", 0.25),\r\n };\r\n\r\n viewpoint.custom_fields = {\r\n markup_color: this.getMarkupColor(),\r\n };\r\n\r\n viewpoint.description = new Date().toDateString();\r\n return viewpoint;\r\n }\r\n\r\n getLayer(): any {\r\n throw new Error(\"Not implemented yet\");\r\n }\r\n\r\n createObject(type: string, params: any): IMarkupObject {\r\n throw new Error(\"Not implemented yet\");\r\n }\r\n\r\n getObjects(): IMarkupObject[] {\r\n throw new Error(\"Not implemented yet\");\r\n }\r\n\r\n getSelectedObjects(): IMarkupObject[] {\r\n throw new Error(\"Not implemented yet\");\r\n }\r\n\r\n selectObjects(objects: IMarkupObject[]): void {\r\n throw new Error(\"Not implemented yet\");\r\n }\r\n\r\n clearSelected(): void {\r\n throw new Error(\"Not implemented yet\");\r\n }\r\n}\r\n","import { IMarkup, MarkupType } from \"./IMarkup\";\r\nimport { KonvaMarkup } from \"./Impl/Konva/KonvaMarkup\";\r\nimport { VisualizeMarkup } from \"./Impl/Visualize/VisualizeMarkup\";\r\n\r\nexport class MarkupFactory {\r\n public static createMarkup(markupType: MarkupType): IMarkup {\r\n let markup;\r\n switch (markupType) {\r\n case MarkupType.Konva:\r\n markup = this.createKonva();\r\n break;\r\n\r\n case MarkupType.Visualize:\r\n markup = this.createVisualize();\r\n break;\r\n\r\n default:\r\n throw new Error(\"Error during Markup Initialization. Markup Type is unknown.\");\r\n break;\r\n }\r\n\r\n return markup;\r\n }\r\n\r\n private static createKonva(): IMarkup {\r\n return new KonvaMarkup();\r\n }\r\n\r\n private static createVisualize(): IMarkup {\r\n return new VisualizeMarkup();\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { IViewer } from \"./IViewer\";\r\nimport { commands } from \"./Commands\";\r\nimport { EventEmitter2 } from \"./EventEmitter2\";\r\nimport { ViewerEventMap } from \"./ViewerEvents\";\r\nimport { OptionsEventMap, OptionsChangeEvent } from \"./OptionsEvents\";\r\nimport { CANVAS_EVENTS } from \"./CanvasEvents\";\r\n\r\nimport { OdBaseDragger } from \"./Draggers/Common/OdBaseDragger\";\r\nimport { MeasureLineDragger } from \"./Draggers/MeasureLineDragger/index\";\r\nimport { OdaWalkDragger } from \"./Draggers/OdaWalkDragger\";\r\nimport { OdCuttingPlaneXAxisDragger } from \"./Draggers/OdCuttingPlaneXAxisDragger\";\r\nimport { OdCuttingPlaneYAxisDragger } from \"./Draggers/OdCuttingPlaneYAxisDragger\";\r\nimport { OdCuttingPlaneZAxisDragger } from \"./Draggers/OdCuttingPlaneZAxisDragger\";\r\nimport { OdOrbitDragger } from \"./Draggers/OdOrbitDragger\";\r\nimport { OdPanDragger } from \"./Draggers/OdPanDragger\";\r\nimport { OdZoomDragger } from \"./Draggers/OdZoomDragger\";\r\nimport { OdZoomWheelDragger } from \"./Draggers/OdZoomWheelDragger\";\r\nimport { OdZoomWindowDragger } from \"./Draggers/OdZoomWindowDragger/index\";\r\nimport { OrbitAroundBuildingDragger } from \"./Draggers/OrbitAroundBuildingDragger\";\r\nimport { GestureManager } from \"./Draggers/Common/GestureManager\";\r\n\r\nimport { loadVisualizeJs } from \"./utils\";\r\n\r\nimport { Client } from \"../Api/Client\";\r\nimport { File } from \"../Api/File\";\r\nimport { Assembly } from \"../Api/Assembly\";\r\nimport { Model } from \"../Api/Model\";\r\nimport { Options, OptionsData } from \"./Options\";\r\nimport { LoaderFactory } from \"./Loaders/LoaderFactory\";\r\nimport { MarkupFactory } from \"./Markup/MarkupFactory\";\r\nimport { IMarkup, MarkupType } from \"./Markup/IMarkup\";\r\n\r\nconst OVERLAY_VIEW_NAME = \"$OVERLAY_VIEW_NAME\";\r\n\r\nconst isExist = (value) => value !== undefined && value !== null;\r\n\r\n/**\r\n * The `Client.js` library class that provides methods to integrate with the\r\n * [VisualizeJS](https://cloud.opendesign.com/docs/index.html#/visualizejs) library.\r\n */\r\n\r\nexport class Viewer extends EventEmitter2<ViewerEventMap & OptionsEventMap> implements IViewer {\r\n private _activeDragger: OdBaseDragger | null;\r\n private _zoomWheelDragger: OdZoomWheelDragger | null;\r\n private _gestureManager: GestureManager | null;\r\n private _enableAutoUpdate: boolean;\r\n private _isNeedRender: boolean;\r\n private _isRunAsyncUpdate: boolean;\r\n private _renderTime: DOMHighResTimeStamp;\r\n\r\n protected _options: Options;\r\n protected _visualizeJsUrl: string;\r\n protected _abortControllerForReferences: AbortController | undefined;\r\n\r\n private clientoptionschange: (event: OptionsChangeEvent) => void;\r\n private canvaseventlistener: (event: Event) => void;\r\n\r\n public draggerFactory: Map<string, typeof OdBaseDragger>;\r\n public canvasEvents: string[];\r\n private frameId: number;\r\n private _resizeObserver: ResizeObserver | undefined;\r\n public canvas: HTMLCanvasElement | undefined;\r\n public markup: IMarkup;\r\n\r\n public visualizeJs: any;\r\n public _abortController: AbortController | undefined;\r\n public _abortControllerForRequestMap: Map<string, AbortController> | undefined;\r\n public client: Client;\r\n\r\n /**\r\n * @param client - The `Client` instance that provides access to a server. Do not specify\r\n * `Client` if you need a standalone viewer instance without access to server models.\r\n * @param params - An object containing viewer configuration parameters.\r\n * @param params.visualizeJsUrl - `VisualizeJS` library URL. Set this URL to use your own\r\n * library instance, or leave it undefined or blank to use the default URL defined by\r\n * `Client.js` you are using.\r\n *\r\n * _Note: Your own `VisualizeJS` library version must match the version of the `Client.js`\r\n * you are using._\r\n * @param params.enableAutoUpdate - Enable auto-update of the viewer after any changes. If\r\n * the auto-update is disabled, you need to update the `VisualizeJS` viewer and the active\r\n * dragger manually using the `update` event. Default is `true`.\r\n */\r\n constructor(\r\n client?: Client,\r\n params: { visualizeJsUrl?: string; enableAutoUpdate?: boolean; markupType?: MarkupType } = {\r\n markupType: MarkupType.Konva,\r\n }\r\n ) {\r\n super();\r\n this.configure(params);\r\n\r\n this._options = new Options(this);\r\n\r\n this.client = client;\r\n this.clientoptionschange = (event: OptionsChangeEvent) => (this._options.data = event.data.data);\r\n\r\n this._activeDragger = null;\r\n this._renderTime = 0;\r\n\r\n this.markup = MarkupFactory.createMarkup(params.markupType ?? MarkupType.Konva);\r\n\r\n this.draggerFactory = new Map<string, typeof OdBaseDragger>();\r\n this.registerDragger(\"Pan\", OdPanDragger);\r\n this.registerDragger(\"Orbit\", OdOrbitDragger);\r\n this.registerDragger(\"Zoom\", OdZoomDragger);\r\n this.registerDragger(\"ZoomWindow\", OdZoomWindowDragger);\r\n this.registerDragger(\"OrbitAroundBuilding\", OrbitAroundBuildingDragger);\r\n this.registerDragger(\"MeasureLine\", MeasureLineDragger);\r\n this.registerDragger(\"CuttingPlaneXAxis\", OdCuttingPlaneXAxisDragger);\r\n this.registerDragger(\"CuttingPlaneYAxis\", OdCuttingPlaneYAxisDragger);\r\n this.registerDragger(\"CuttingPlaneZAxis\", OdCuttingPlaneZAxisDragger);\r\n this.registerDragger(\"Walk\", OdaWalkDragger);\r\n\r\n const markupDraggers = this.markup.getDraggers();\r\n markupDraggers?.forEach((value, key) => {\r\n this.registerDragger(key, value);\r\n });\r\n\r\n this.canvasEvents = CANVAS_EVENTS;\r\n this.canvaseventlistener = (event: Event) => this.emit(event);\r\n\r\n this._enableAutoUpdate = params.enableAutoUpdate ?? true;\r\n this._isNeedRender = false;\r\n this._isRunAsyncUpdate = false;\r\n\r\n this.render = this.render.bind(this);\r\n this.resize = this.resize.bind(this);\r\n }\r\n\r\n /**\r\n * `VisualizeJS` parameters.\r\n *\r\n * Use this only for standalone viewer instances. Use {@link Client#options | Client.options}\r\n * instead if the viewer was created with a `Client` reference using\r\n * {@link Viewer | Viewer.create(client)}. Changes in client options will be automatically\r\n * applied to the viewer options.\r\n */\r\n get options(): Options {\r\n return this._options;\r\n }\r\n\r\n /**\r\n * `VisualizeJS` library URL. Use {@link Viewer#configure | configure()} to change library URL.\r\n *\r\n * @readonly\r\n */\r\n get visualizeJsUrl(): string {\r\n return this._visualizeJsUrl;\r\n }\r\n\r\n /**\r\n * Change the viewer configuration parameters.\r\n *\r\n * @param params - An object containing new configuration parameters.\r\n * @param params.visualizeJsUrl - `VisualizeJS` library URL. Set this URL to use your own\r\n * library instance or leave it blank to use the default URL defined by `Client.js`.\r\n */\r\n configure(params: { visualizeJsUrl?: string }): this {\r\n this._visualizeJsUrl = params.visualizeJsUrl || \"VISUALIZE_JS_URL\";\r\n return this;\r\n }\r\n\r\n /**\r\n * A [Viewer]{@link Viewer} event measuring progress of loading a `VisualizeJS` library.\r\n *\r\n * @property {string} type - `visualizeprogress`\r\n * @property {number} loaded - A 64-bit unsigned integer value indicating the amount of work\r\n * already performed by the underlying process. The ratio of work done can be calculated by\r\n * dividing total by the value of this property.\r\n * @property {number} total - A 64-bit unsigned integer representing the total amount of work\r\n * that the underlying process is in the progress of performing.\r\n * @event visualizeprogress\r\n */\r\n\r\n /**\r\n * Load `VisualizeJS` module and initialize it with the specified canvas. Call\r\n * {@link Viewer#dispose | dispose()} to release allocated resources.\r\n *\r\n * @async\r\n * @param canvas - HTML `<canvas>` element for `VisualizeJS`.\r\n * @param onProgress - A callback function that handles events measuring progress of loading\r\n * of the `VisualizeJS` library. Retrieves {@link event:visualizeprogress | visualizeprogress} event.\r\n */\r\n async initialize(canvas: HTMLCanvasElement, onProgress?: (event: ProgressEvent) => void): Promise<this> {\r\n if (this.client) {\r\n this.client.addEventListener(\"optionschange\", this.clientoptionschange);\r\n this.options.data = this.client.options.data;\r\n }\r\n this.addEventListener(\"optionschange\", (event) => this.syncOptions(event.data));\r\n\r\n if (canvas.style.width === \"\" && canvas.style.height === \"\") {\r\n canvas.style.width = \"100%\";\r\n canvas.style.height = \"100%\";\r\n }\r\n canvas.style.touchAction = \"none\";\r\n\r\n canvas.width = canvas.clientWidth * window.devicePixelRatio;\r\n canvas.height = canvas.clientHeight * window.devicePixelRatio;\r\n\r\n const visualizeJs: any = await loadVisualizeJs(this.visualizeJsUrl, (ev) => {\r\n const { loaded, timeStamp, total, lengthComputable } = ev;\r\n const event = { loaded, timeStamp, total, lengthComputable, type: \"visualizeprogress\" } as ProgressEvent;\r\n onProgress?.(event);\r\n });\r\n\r\n this.visualizeJs = visualizeJs;\r\n this.visualizeJs.canvas = canvas;\r\n this.visualizeJs.Viewer.create();\r\n\r\n this.canvas = canvas;\r\n this.canvasEvents.forEach((x) => canvas.addEventListener(x, this.canvaseventlistener));\r\n\r\n this.markup.initialize(this, canvas, this.canvasEvents);\r\n\r\n this._resizeObserver = new ResizeObserver(this.resize);\r\n this._resizeObserver.observe(canvas.parentElement);\r\n this.resize();\r\n\r\n this._zoomWheelDragger = new OdZoomWheelDragger(this);\r\n this._zoomWheelDragger.name = \"ZoomWheel\";\r\n this._zoomWheelDragger.initialize();\r\n\r\n this._gestureManager = new GestureManager(this);\r\n this._gestureManager.initialize();\r\n\r\n this.syncOpenCloudVisualStyle(true);\r\n this.syncOptions();\r\n\r\n this._renderTime = performance.now();\r\n this.render(this._renderTime);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Releases all resources allocated by this `Viewer` instance. Call this method before\r\n * release the `Viewer` instance.\r\n */\r\n dispose(): this {\r\n this.cancel();\r\n this.emitEvent({ type: \"dispose\" });\r\n\r\n if (this.frameId) cancelAnimationFrame(this.frameId);\r\n this.frameId = 0;\r\n\r\n this.setActiveDragger(\"\");\r\n\r\n this._zoomWheelDragger?.dispose();\r\n this._gestureManager?.dispose();\r\n\r\n this.removeAllListeners();\r\n\r\n this._resizeObserver?.disconnect();\r\n this._resizeObserver = undefined;\r\n\r\n this.markup.dispose();\r\n\r\n this.canvasEvents.forEach((x) => this.canvas?.removeEventListener(x, this.canvaseventlistener));\r\n this.canvas = undefined;\r\n\r\n this.visualizeJs?.getViewer().clear();\r\n this.visualizeJs = undefined;\r\n\r\n this.client?.removeEventListener(\"optionschange\", this.clientoptionschange);\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Returns `true` if `VisualizeJS` module has been loaded andinitialized.\r\n */\r\n isInitialized(): boolean {\r\n return !!this.visualizeJs;\r\n }\r\n\r\n // internal render/resize routines\r\n\r\n private render(time: DOMHighResTimeStamp) {\r\n this.frameId = requestAnimationFrame(this.render);\r\n\r\n if (!this.visualizeJs) return;\r\n\r\n if (this._isRunAsyncUpdate) return;\r\n\r\n const visViewer = this.visualizeJs.getViewer();\r\n if (visViewer.isRunningAnimation() || this._isNeedRender) {\r\n visViewer.update();\r\n this._activeDragger?.updatePreview();\r\n this._isNeedRender = !visViewer.getActiveDevice().isValid();\r\n\r\n const deltaTime = (time - this._renderTime) / 1000;\r\n this._renderTime = time;\r\n this.emitEvent({ type: \"render\", time, deltaTime });\r\n }\r\n }\r\n\r\n public resize(): this {\r\n if (!this.visualizeJs) return this;\r\n\r\n const { clientWidth, clientHeight } = this.canvas;\r\n this.canvas.width = clientWidth * window.devicePixelRatio;\r\n this.canvas.height = clientHeight * window.devicePixelRatio;\r\n\r\n const visViewer = this.visualizeJs.getViewer();\r\n visViewer.resize(0, this.canvas.width, this.canvas.height, 0);\r\n\r\n this.update(true);\r\n this.emitEvent({ type: \"resize\", width: clientWidth, height: clientHeight });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Updates the viewer. Do nothing if the auto-update mode is disabled in the constructor (use\r\n * the `update` event to update viewer manually).\r\n *\r\n * Fires:\r\n *\r\n * - {@link UpdateEvent | update}\r\n *\r\n * @param force - If `true` updates the viewer immidietly. Otherwise updates on next\r\n * animation frame. Default is `false`.\r\n */\r\n update(force?: boolean) {\r\n if (this._enableAutoUpdate) {\r\n if (force) {\r\n this.visViewer()?.update();\r\n this.activeDragger()?.updatePreview();\r\n } else {\r\n this._isNeedRender = true;\r\n }\r\n }\r\n this.emitEvent({ type: \"update\", data: force });\r\n }\r\n\r\n /**\r\n * Update with internal schedule, need after change operation when have long update for\r\n * update without lock UI\r\n *\r\n * @param maxScheduleUpdateTimeInMs - Maximum time for one update, by default 30 ms\r\n * @param maxScheduleUpdateCount - Maximum count of schedule update\r\n * @returns return void Promise\r\n */\r\n\r\n private scheduleUpdateAsync(maxScheduleUpdateTimeInMs = 50): Promise<void> {\r\n return new Promise<void>((resolve, reject) => {\r\n setTimeout(() => {\r\n try {\r\n this.visViewer()?.update(maxScheduleUpdateTimeInMs);\r\n this.activeDragger()?.updatePreview();\r\n resolve();\r\n } catch (e) {\r\n console.error(e);\r\n reject();\r\n }\r\n }, 0);\r\n });\r\n }\r\n\r\n async updateAsync(maxScheduleUpdateTimeInMs = 50, maxScheduleUpdateCount = 50): Promise<void> {\r\n this._isRunAsyncUpdate = true;\r\n const device = this.visViewer().getActiveDevice();\r\n try {\r\n for (let iterationCount = 0; !device.isValid() && iterationCount < maxScheduleUpdateCount; iterationCount++) {\r\n await this.scheduleUpdateAsync(maxScheduleUpdateTimeInMs);\r\n }\r\n await this.scheduleUpdateAsync(maxScheduleUpdateTimeInMs);\r\n } catch (e) {\r\n console.error(e);\r\n } finally {\r\n this._isRunAsyncUpdate = false;\r\n }\r\n }\r\n\r\n /**\r\n * Returns `VisualizeJS`\r\n * {@link https://cloud.opendesign.com/docs/index.html#/visualizejs_api | module} instance.\r\n */\r\n visLib(): any {\r\n return this.visualizeJs;\r\n }\r\n\r\n /**\r\n * Returns `VisualizeJS`\r\n * {@link https://cloud.opendesign.com/docs/index.html#/vis/Viewer | Viewer} instance.\r\n */\r\n visViewer(): any {\r\n return this.visualizeJs?.getViewer();\r\n }\r\n\r\n // update the VisualizeJS options\r\n\r\n syncOpenCloudVisualStyle(isInitializing: boolean): this {\r\n if (!this.visualizeJs) return this;\r\n\r\n const visLib = this.visLib();\r\n const visViewer = visLib.getViewer();\r\n\r\n const device = visViewer.getActiveDevice();\r\n if (device.isNull()) return this;\r\n\r\n const view = device.getActiveView();\r\n\r\n // setup light\r\n view.enableDefaultLighting(true, visLib.DefaultLightingType.kTwoLights);\r\n view.setDefaultLightingIntensity(1.25);\r\n\r\n let visualStyleId;\r\n try {\r\n visualStyleId = visViewer.findVisualStyle(\"OpenCloud\");\r\n } catch (e) {\r\n if (!isInitializing) {\r\n console.log(\"OpenCloud visual style not found, creating it on client side\");\r\n }\r\n visualStyleId = visViewer.createVisualStyle(\"OpenCloud\");\r\n\r\n const colorDef = new visLib.OdTvColorDef(66, 66, 66);\r\n const shadedVsId = visViewer.findVisualStyle(\"Realistic\");\r\n\r\n const visualStylePtr = visualStyleId.openObject();\r\n visualStylePtr.copyFrom(shadedVsId);\r\n visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kFaceModifiers, 0, visLib.VisualStyleOperations.kSet);\r\n //visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kEdgeModel, 1, visLib.VisualStyleOperations.kSet);\r\n visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kEdgeModel, 2, visLib.VisualStyleOperations.kSet);\r\n visualStylePtr.setOptionDouble(visLib.VisualStyleOptions.kEdgeCreaseAngle, 60, visLib.VisualStyleOperations.kSet);\r\n visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kEdgeStyles, 0, visLib.VisualStyleOperations.kSet);\r\n visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kEdgeModifiers, 8, visLib.VisualStyleOperations.kSet);\r\n visualStylePtr.setOptionColor(\r\n visLib.VisualStyleOptions.kEdgeColorValue,\r\n colorDef,\r\n visLib.VisualStyleOperations.kSet\r\n );\r\n visualStylePtr.delete();\r\n }\r\n\r\n view.visualStyle = visualStyleId;\r\n\r\n view.delete();\r\n device.delete();\r\n\r\n return this;\r\n }\r\n\r\n syncOptions(options: OptionsData = this.options.data): this {\r\n if (!this.visualizeJs) return this;\r\n\r\n const visLib = this.visLib();\r\n const visViewer = visLib.getViewer();\r\n\r\n const device = visViewer.getActiveDevice();\r\n if (device.isNull()) return this;\r\n\r\n if (options.showWCS !== visViewer.getEnableWCS()) {\r\n visViewer.setEnableWCS(options.showWCS);\r\n }\r\n if (options.cameraAnimation !== visViewer.getEnableAnimation()) {\r\n visViewer.setEnableAnimation(options.cameraAnimation);\r\n }\r\n if (options.antialiasing !== visViewer.fxaaAntiAliasing3d) {\r\n visViewer.fxaaAntiAliasing3d = options.antialiasing;\r\n visViewer.fxaaQuality = 5;\r\n }\r\n\r\n if (options.shadows !== visViewer.shadows) {\r\n visViewer.shadows = options.shadows;\r\n\r\n const canvas = visLib.canvas;\r\n device.invalidate([0, canvas.clientWidth, canvas.clientHeight, 0]);\r\n }\r\n\r\n if (options.groundShadow !== visViewer.groundShadow) {\r\n visViewer.groundShadow = options.groundShadow;\r\n }\r\n\r\n if (options.ambientOcclusion !== device.getOptionBool(visLib.DeviceOptions.kSSAOEnable)) {\r\n device.setOptionBool(visLib.DeviceOptions.kSSAOEnable, options.ambientOcclusion);\r\n device.setOptionBool(visLib.DeviceOptions.kSSAODynamicRadius, true);\r\n device.setOptionDouble(visLib.DeviceOptions.kSSAORadius, 1);\r\n device.setOptionInt32(visLib.DeviceOptions.kSSAOLoops, 32);\r\n device.setOptionDouble(visLib.DeviceOptions.kSSAOPower, 2);\r\n device.setOptionInt32(visLib.DeviceOptions.kSSAOBlurRadius, 2);\r\n\r\n const activeView = visViewer.activeView;\r\n activeView.setSSAOEnabled(options.ambientOcclusion);\r\n activeView.delete();\r\n }\r\n\r\n if (isExist(options.edgeModel)) {\r\n const activeView = device.getActiveView();\r\n\r\n const visualStyleId = visViewer.findVisualStyle(\"OpenCloud\");\r\n const visualStylePtr = visualStyleId.openObject();\r\n\r\n visualStylePtr.setOptionInt32(\r\n visLib.VisualStyleOptions.kEdgeModel,\r\n options.edgeModel ? 2 : 0,\r\n visLib.VisualStyleOperations.kSet\r\n );\r\n\r\n activeView.visualStyle = visualStyleId;\r\n\r\n visualStylePtr.delete();\r\n visualStyleId.delete();\r\n activeView.delete();\r\n }\r\n\r\n device.delete();\r\n\r\n this.syncHighlightingOptions(options);\r\n this.update();\r\n\r\n return this;\r\n }\r\n\r\n syncHighlightingOptions(options: OptionsData = this.options.data): this {\r\n if (!this.visualizeJs) return this;\r\n\r\n const params = options.enableCustomHighlight ? options : Options.defaults();\r\n\r\n const visLib = this.visLib();\r\n const visViewer = visLib.getViewer();\r\n const { Entry, OdTvRGBColorDef } = visLib;\r\n\r\n const highlightStyleId = visViewer.findHighlightStyle(\"Web_Default\");\r\n const highlightStylePtr = highlightStyleId.openObject();\r\n\r\n if (isExist(params.facesColor)) {\r\n const color = new OdTvRGBColorDef(params.facesColor.r, params.facesColor.g, params.facesColor.b);\r\n highlightStylePtr.setFacesColor(Entry.k3D.value | Entry.k3DTop.value, color);\r\n color.delete();\r\n }\r\n\r\n if (isExist(params.facesOverlap)) {\r\n highlightStylePtr.setFacesVisibility(Entry.k3DTop.value, params.facesOverlap);\r\n }\r\n if (isExist(params.facesTransparancy)) {\r\n highlightStylePtr.setFacesTransparency(Entry.k3D.value | Entry.k3DTop.value, params.facesTransparancy);\r\n }\r\n\r\n if (isExist(params.edgesColor)) {\r\n const color = new OdTvRGBColorDef(params.edgesColor.r, params.edgesColor.g, params.edgesColor.b);\r\n highlightStylePtr.setEdgesColor(\r\n Entry.k3DTop.value | Entry.k3D.value | Entry.k2D.value | Entry.k2DTop.value,\r\n color\r\n );\r\n color.delete();\r\n }\r\n\r\n if (isExist(params.edgesVisibility)) {\r\n highlightStylePtr.setEdgesVisibility(\r\n Entry.k2D.value | Entry.k2DTop.value | Entry.k3DTop.value | Entry.k3D.value,\r\n params.edgesVisibility\r\n );\r\n }\r\n if (isExist(params.edgesOverlap)) {\r\n const visibility = !isExist(params.edgesVisibility) ? true : params.edgesVisibility;\r\n highlightStylePtr.setEdgesVisibility(Entry.k2DTop.value | Entry.k3DTop.value, params.edgesOverlap && visibility);\r\n }\r\n\r\n const device = visViewer.getActiveDevice();\r\n if (!device.isNull()) {\r\n const canvas = visLib.canvas;\r\n\r\n device.invalidate([0, canvas.clientWidth, canvas.clientHeight, 0]);\r\n device.delete();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * List of names of available draggers:\r\n *\r\n * - `Line`\r\n * - `Text`\r\n * - `Pan`\r\n * - `Orbit`\r\n * - `Zoom`\r\n * - `ZoomWindow`\r\n * - `OrbitAroundBuilding`\r\n * - `MeasureLine`\r\n * - `CuttingPlaneXAxis`\r\n * - `CuttingPlaneYAxis`\r\n * - `CuttingPlaneZAxis`\r\n * - `Walk`\r\n *\r\n * @readonly\r\n */\r\n get draggers(): string[] {\r\n return [...this.draggerFactory.keys()];\r\n }\r\n\r\n /**\r\n * Register dragger on draggerFactory.\r\n *\r\n * @param name - Dragger name.\r\n * @param dragger - Dragger class.\r\n */\r\n public registerDragger(name: string, dragger: typeof OdBaseDragger): void {\r\n this.draggerFactory.set(name, dragger);\r\n }\r\n\r\n /**\r\n * Returns active dragger instance or `null` if there is no active dragger.\r\n */\r\n activeDragger(): any | null {\r\n return this._activeDragger;\r\n }\r\n\r\n /**\r\n * Set active dragger. `Viewer` must be {@link Viewer#initialize | initialized} before enable\r\n * dragger or exception is thrown.\r\n *\r\n * Fires:\r\n *\r\n * - {@link ChangeActiveDragger | changeactivedragger}\r\n *\r\n * @param name - Dragger name. Can be one of the {@link Viewer#draggers | draggers} list.\r\n * @returns Returns active dragger instance or `null` if there is no dragger with the given name.\r\n */\r\n setActiveDragger(name: string): OdBaseDragger | null {\r\n if (this._activeDragger?.name !== name) {\r\n if (this._activeDragger) {\r\n this._activeDragger.dispose();\r\n this._activeDragger = null;\r\n }\r\n const Constructor = this.draggerFactory.get(name);\r\n if (Constructor) {\r\n this._activeDragger = new Constructor(this);\r\n this._activeDragger.name = name;\r\n this._activeDragger.initialize();\r\n }\r\n const canvas = this.canvas;\r\n if (canvas) {\r\n canvas.className = canvas.className\r\n .split(\" \")\r\n .filter((x) => !x.startsWith(\"oda-cursor-\"))\r\n .filter((x) => x)\r\n .concat(`oda-cursor-${name.toLowerCase()}`)\r\n .join(\" \");\r\n }\r\n this.emitEvent({ type: \"changeactivedragger\", data: name });\r\n }\r\n return this._activeDragger;\r\n }\r\n\r\n /**\r\n * Reset the state of the active dragger.\r\n */\r\n resetActiveDragger(): void {\r\n const dragger = this._activeDragger;\r\n if (dragger) {\r\n this.setActiveDragger(\"\");\r\n this.setActiveDragger(dragger.name);\r\n }\r\n }\r\n\r\n /**\r\n * Remove all cutting planes.\r\n */\r\n clearSlices(): void {\r\n if (!this.visualizeJs) return;\r\n\r\n const visViewer = this.visViewer();\r\n const activeView = visViewer.activeView;\r\n activeView.removeCuttingPlanes();\r\n activeView.delete();\r\n\r\n this.update();\r\n }\r\n\r\n /**\r\n * Remove markup overlay.\r\n */\r\n clearOverlay(): void {\r\n this.markup.clearOverlay();\r\n }\r\n\r\n /**\r\n * Synchronize markup overlay.\r\n */\r\n syncOverlay(): any {\r\n if (!this.visualizeJs) return;\r\n\r\n const visViewer = this.visViewer();\r\n const activeView = visViewer.activeView;\r\n\r\n let overlayView = visViewer.getViewByName(OVERLAY_VIEW_NAME);\r\n if (!overlayView) {\r\n const overlayModel = visViewer.getMarkupModel();\r\n const pDevice = visViewer.getActiveDevice();\r\n\r\n overlayView = pDevice.createView(OVERLAY_VIEW_NAME, false);\r\n overlayView.addModel(overlayModel);\r\n\r\n activeView.addSibling(overlayView);\r\n pDevice.addView(overlayView);\r\n }\r\n\r\n overlayView.viewPosition = activeView.viewPosition;\r\n overlayView.viewTarget = activeView.viewTarget;\r\n overlayView.upVector = activeView.upVector;\r\n overlayView.viewFieldWidth = activeView.viewFieldWidth;\r\n overlayView.viewFieldHeight = activeView.viewFieldHeight;\r\n\r\n const viewPort = overlayView.getViewport();\r\n overlayView.setViewport(viewPort.lowerLeft, viewPort.upperRight);\r\n overlayView.vportRect = activeView.vportRect;\r\n\r\n this.update();\r\n\r\n return overlayView;\r\n }\r\n\r\n /**\r\n * Returns `true` if current drawing is 3D drawing.\r\n */\r\n is3D(): boolean {\r\n if (!this.visualizeJs) return false;\r\n\r\n const visViewer = this.visViewer();\r\n const ext = visViewer.getActiveExtents();\r\n const min = ext.min();\r\n const max = ext.max();\r\n const extHeight = max[2] - min[2];\r\n return extHeight !== 0;\r\n\r\n //return visViewer.activeView.upVector[1] >= 0.95;\r\n }\r\n\r\n /**\r\n * Returns a list of original handles for the selected entities.\r\n */\r\n getSelected(): string[] {\r\n return this.executeCommand(\"getSelected\");\r\n }\r\n\r\n /**\r\n * Select model entities by original handles that are obtained using\r\n * {@link File.getProperties | File.getProperties()} or\r\n * {@link File.searchProperties | File.searchProperties()} methods.\r\n *\r\n * Fires:\r\n *\r\n * - {@link SelectEvent | select}\r\n *\r\n * @param handles - The list of original handles.\r\n */\r\n setSelected(handles?: string[]): void {\r\n this.executeCommand(\"setSelected\", handles);\r\n }\r\n\r\n /**\r\n * Load model references into the viewer. References are images, fonts, or any other files to\r\n * correct rendering of the model.\r\n *\r\n * @async\r\n * @param model - Instance of model with references. If a `File` instance is specified\r\n * instead of a model, the file references will be loaded.\r\n */\r\n async loadReferences(model: Model | File | Assembly): Promise<this> {\r\n if (!this.visualizeJs) return this;\r\n\r\n const abortController = new AbortController();\r\n this._abortControllerForReferences?.abort();\r\n this._abortControllerForReferences = abortController;\r\n\r\n let references = [];\r\n await model\r\n .getReferences(abortController.signal)\r\n .then((data) => (references = data.references))\r\n .catch((e) => console.error(\"Cannot load model references.\", e));\r\n\r\n for (const file of references) {\r\n await this.client\r\n .downloadFile(file.id, undefined, abortController.signal)\r\n .then((arrayBuffer) => this.visualizeJs?.getViewer().addEmbeddedFile(file.name, new Uint8Array(arrayBuffer)))\r\n .catch((e) => console.error(`Cannot load reference file ${file.name}.`, e));\r\n }\r\n\r\n return this;\r\n }\r\n\r\n // Internal loading routines\r\n\r\n applyModelTransformMatrix(model: Model | Assembly) {\r\n this.executeCommand(\"applyModelTransform\", model);\r\n }\r\n\r\n applySceneGraphSettings(options = this.options) {\r\n if (!this.visualizeJs) return;\r\n\r\n const visLib = this.visLib();\r\n const visViewer = visLib.getViewer();\r\n\r\n const device = visViewer.getActiveDevice();\r\n if (isExist(options.sceneGraph)) {\r\n device.setOptionBool(visLib.DeviceOptions.kDelaySceneGraphProc, !options.sceneGraph);\r\n }\r\n // if (options.enablePartialMode && visLib.HpTrc.Usd >= visViewer.memoryLimit) {\r\n // device.setOptionBool(visLib.DeviceOptions.kDelaySceneGraphProc, true);\r\n // }\r\n device.delete();\r\n\r\n this.update();\r\n }\r\n\r\n /**\r\n * Loads a model of a file or assembly into the viewer.\r\n *\r\n * This method requires a [Client]{@link Client | Client} instance to work. For standalone\r\n * viewer instance use {@link Viewer#openVsfFile | openVsfFile()} or\r\n * {@link Viewer#openVsfxFile | openVsfxFile()}.\r\n *\r\n * Fires:\r\n *\r\n * - {@link OpenEvent | open}\r\n * - {@link GeometryStartEvent | geometrystart}\r\n * - {@link GeometryProgressEvent | geometryprogress}\r\n * - {@link DatabaseChunkEvent | databasechunk}\r\n * - {@link GeometryChunkEvent | geometrychunk}\r\n * - {@link GeometryEndEvent | geometryend}\r\n * - {@link GeometryErrorEvent | geometryerror}\r\n *\r\n * @async\r\n * @param model - Model instance to load. If a `File` instance with multiple models is\r\n * specified, the default model will be loaded. If there is no default model, first\r\n * availiable model will be loaded.\r\n */\r\n async open(model: Model | File | Assembly): Promise<this> {\r\n if (!this.visualizeJs) return this;\r\n\r\n this.cancel();\r\n this.clear();\r\n\r\n this.emitEvent({ type: \"open\", model });\r\n\r\n if (model instanceof File || model instanceof Assembly) {\r\n const models = (await model.getModels()) ?? [];\r\n model = models.find((model) => model.default) ?? models[0];\r\n }\r\n if (!model) throw new Error(\"No default model found\");\r\n\r\n await this.loadReferences(model);\r\n\r\n const overrideOptions = new Options();\r\n overrideOptions.data = this.options.data;\r\n if (model.file.type === \".rcs\") {\r\n console.log(\"Partial load mode is forced for RCS file\");\r\n overrideOptions.enablePartialMode = true;\r\n }\r\n\r\n const loaderFactory = new LoaderFactory();\r\n const loader = loaderFactory.create(this, model, overrideOptions.data);\r\n await loader.load();\r\n\r\n if (this.visualizeJs) {\r\n this.applyModelTransformMatrix(model);\r\n this.applySceneGraphSettings();\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Loads a VSF file into the viewer.\r\n *\r\n * Fires:\r\n *\r\n * - {@link OpenEvent | open}\r\n * - {@link GeometryStartEvent | geometrystart}\r\n * - {@link GeometryProgressEvent | geometryprogress}\r\n * - {@link DatabaseChunkEvent | databasechunk}\r\n * - {@link GeometryEndEvent | geometryend}\r\n * - {@link GeometryErrorEvent | geometryerror}\r\n *\r\n * @param buffer - Binary data buffer to load.\r\n */\r\n openVsfFile(buffer: Uint8Array | ArrayBuffer): this {\r\n if (!this.visualizeJs) return this;\r\n\r\n this.cancel();\r\n this.clear();\r\n\r\n this.emitEvent({ type: \"open\", buffer });\r\n\r\n try {\r\n this.emitEvent({ type: \"geometrystart\", buffer });\r\n\r\n const visLib = this.visLib();\r\n const visViewer = visLib.getViewer();\r\n\r\n const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\r\n visViewer.parseFile(data);\r\n\r\n this.syncOpenCloudVisualStyle(false);\r\n this.syncOptions();\r\n this.resize();\r\n\r\n this.emitEvent({ type: \"geometryprogress\", data: 1, buffer });\r\n this.emitEvent({ type: \"databasechunk\", data, buffer });\r\n this.emitEvent({ type: \"geometryend\", buffer });\r\n } catch (error) {\r\n this.emitEvent({ type: \"geometryerror\", data: error, buffer });\r\n throw error;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Loads a VSFX file into the viewer.\r\n *\r\n * Fires:\r\n *\r\n * - {@link OpenEvent | open}\r\n * - {@link GeometryStartEvent | geometrystart}\r\n * - {@link GeometryProgressEvent | geometryprogress}\r\n * - {@link DatabaseChunkEvent | databasechunk}\r\n * - {@link GeometryEndEvent | geometryend}\r\n * - {@link GeometryErrorEvent | geometryerror}\r\n *\r\n * @param buffer - Binary data buffer to load.\r\n */\r\n openVsfxFile(buffer: Uint8Array | ArrayBuffer): this {\r\n if (!this.visualizeJs) return this;\r\n\r\n this.cancel();\r\n this.clear();\r\n\r\n this.emitEvent({ type: \"open\", buffer });\r\n\r\n try {\r\n this.emitEvent({ type: \"geometrystart\", buffer });\r\n\r\n const visLib = this.visLib();\r\n const visViewer = visLib.getViewer();\r\n\r\n const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\r\n visViewer.parseVsfx(data);\r\n\r\n this.syncOpenCloudVisualStyle(false);\r\n this.syncOptions();\r\n this.resize();\r\n\r\n this.emitEvent({ type: \"geometryprogress\", data: 1, buffer });\r\n this.emitEvent({ type: \"databasechunk\", data, buffer });\r\n this.emitEvent({ type: \"geometryend\", buffer });\r\n } catch (error) {\r\n this.emitEvent({ type: \"geometryerror\", data: error, buffer });\r\n throw error;\r\n }\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Cancels asynchronous model loading started by {@link Viewer#open | open()}.\r\n */\r\n cancel(): this {\r\n this._abortControllerForReferences?.abort();\r\n this._abortControllerForReferences = undefined;\r\n\r\n this._abortController?.abort();\r\n this._abortController = undefined;\r\n\r\n this._abortControllerForRequestMap?.forEach((controller) => controller.abort());\r\n this._abortControllerForRequestMap = undefined;\r\n\r\n this.emitEvent({ type: \"cancel\" });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Unloads the model and clears the viewer.\r\n */\r\n clear(): this {\r\n if (!this.visualizeJs) return this;\r\n\r\n const visLib = this.visLib();\r\n const visViewer = visLib.getViewer();\r\n\r\n this.clearOverlay();\r\n\r\n visViewer.clear();\r\n visViewer.createLocalDatabase();\r\n\r\n this.syncOpenCloudVisualStyle(true);\r\n this.syncOptions();\r\n this.resize();\r\n\r\n this.emitEvent({ type: \"clear\" });\r\n\r\n return this;\r\n }\r\n\r\n /**\r\n * Get markup color.\r\n *\r\n * @returns Color with `RGB` values.\r\n */\r\n getMarkupColor(): { r: number; g: number; b: number } {\r\n return this.markup.getMarkupColor();\r\n }\r\n\r\n /**\r\n * Set markup color.\r\n *\r\n * @param r - `Red` part of color.\r\n * @param g - `Green` part of color.\r\n * @param b - `Blue` part of color.\r\n */\r\n setMarkupColor(r = 255, g = 0, b = 0): void {\r\n this.markup.setMarkupColor(r, g, b);\r\n const color = { r, g, b };\r\n this.emitEvent({ type: \"changemarkupcolor\", data: color });\r\n }\r\n\r\n /**\r\n * Colorize all markup entities with the specified color.\r\n *\r\n * @param r - `Red` part of color.\r\n * @param g - `Green` part of color.\r\n * @param b - `Blue` part of color.\r\n */\r\n colorizeAllMarkup(r = 255, g = 0, b = 0): void {\r\n this.markup.colorizeAllMarkup(r, g, b);\r\n }\r\n\r\n /**\r\n * Add an empty markup entity to the overlay.\r\n */\r\n addMarkupEntity(entityName: string) {\r\n if (!this.visualizeJs) return null;\r\n\r\n this.syncOverlay();\r\n\r\n const visViewer = this.visViewer();\r\n const model = visViewer.getMarkupModel();\r\n const entityId = model.appendEntity(entityName);\r\n const entityPtr = entityId.openObject();\r\n\r\n const color = this.getMarkupColor();\r\n entityPtr.setColor(color.r, color.g, color.b);\r\n entityPtr.setLineWeight(2);\r\n entityPtr.delete();\r\n\r\n this.update();\r\n\r\n return entityId;\r\n }\r\n\r\n /**\r\n * Draw a viewpoint. To get a list of available model viewpoints, use the\r\n * {@link Model#getViewpoints | Model.getViewpoints()} or\r\n * {@link File#getViewpoints | File.getViewpoints()}.\r\n *\r\n * @param viewpoint - Viewpoint.\r\n */\r\n drawViewpoint(viewpoint: any): void {\r\n this.markup.drawViewpoint(viewpoint);\r\n }\r\n\r\n /**\r\n * Create a viewpoint. To add a viewpoint to the list of model viewpoints, use the\r\n * {@link Model#saveViewpoint | Model.saveViewpoint()} or\r\n * {@link File#saveViewpoint | File.saveViewpoint()}.\r\n */\r\n createViewpoint(): object {\r\n const vp = this.markup.createViewpoint();\r\n return vp;\r\n }\r\n\r\n /**\r\n * Executes the command denoted by the given command identifier.\r\n *\r\n * @param id - Identifier of the command to execute.\r\n * @param args - Parameters passed to the command function.\r\n * @returns A returned value of the given command. Returns `undefined` when the command doesn't exists.\r\n */\r\n executeCommand(id: string, ...args: any[]): any {\r\n return commands(\"VisualizeJS\").executeCommand(id, this, ...args);\r\n }\r\n}\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\nimport { Model } from \"../../Api/Model\";\r\nimport { Assembly } from \"../../Api/Assembly\";\r\n\r\nexport const composeMatrixFromTransform = (translate, rotate, scale, modelCenter, matrix) => {\r\n const translateMatrix = matrix.setTranslation([translate.x, translate.y, translate.z]);\r\n const rotateMatrix = matrix.setToRotation(rotate.angle, [rotate.x, rotate.y, rotate.z], modelCenter);\r\n const scaleMatrix = matrix.setToScaling(scale, modelCenter);\r\n return translateMatrix.postMultBy(rotateMatrix).postMultBy(scaleMatrix);\r\n};\r\n\r\nfunction applyModelTransform(viewer: Viewer, model: Model | File | Assembly) {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const assembly = model instanceof Model ? model.assembly : model;\r\n if (!(assembly instanceof Assembly)) return;\r\n\r\n const visLib = viewer.visLib();\r\n const visViewer = visLib.getViewer();\r\n\r\n const modelItr = visViewer.getModelIterator();\r\n for (; !modelItr.done(); modelItr.step()) {\r\n const modelPtr = modelItr.getModel();\r\n\r\n const transform = assembly.getModelTransformMatrix(modelPtr.getDatabaseHandle());\r\n if (transform) {\r\n const extents = modelPtr.getExtents();\r\n const matrix = composeMatrixFromTransform(\r\n transform.translate,\r\n transform.rotation,\r\n transform.scale,\r\n extents.center(),\r\n new visLib.Matrix3d()\r\n );\r\n\r\n modelPtr.setModelingMatrix(matrix, true);\r\n }\r\n }\r\n modelItr.delete();\r\n\r\n visViewer.clearViewExtentsCache?.();\r\n\r\n viewer.update();\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"applyModelTransform\", applyModelTransform);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"clearMarkup\", (viewer: Viewer) => viewer.clearOverlay());\r\ncommands(\"VisualizeJS\").registerCommandAlias(\"clearMarkup\", \"clearOverlay\");\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"clearSlices\", (viewer: Viewer) => viewer.clearSlices());\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction createPreview(viewer: Viewer, type = \"image/jpeg\", encoderOptions = 0.25): string {\r\n if (!viewer.visualizeJs) return \"\";\r\n\r\n return viewer.canvas?.toDataURL(type, encoderOptions) || \"\";\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"createPreview\", createPreview);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction explode(viewer: Viewer, index = 0): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visViewer = viewer.visViewer();\r\n visViewer.explode(index);\r\n\r\n viewer.update();\r\n viewer.emit({ type: \"explode\", data: index });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"explode\", explode);\r\ncommands(\"VisualizeJS\").registerCommand(\"collect\", (viewer: any) => explode(viewer, 0));\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction getDefaultViewPositions(viewer: Viewer): string[] {\r\n if (!viewer.visualizeJs) return [];\r\n\r\n const visLib = viewer.visLib();\r\n\r\n const defViewPos = visLib.DefaultViewPosition;\r\n return Object.keys(defViewPos).filter((x) => x !== \"values\");\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"getDefaultViewPositions\", getDefaultViewPositions);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction getModels(viewer: Viewer): string[] {\r\n if (!viewer.visualizeJs) return [];\r\n\r\n const visViewer = viewer.visViewer();\r\n\r\n const handles: string[] = [];\r\n const modelItr = visViewer.getModelIterator();\r\n for (; !modelItr.done(); modelItr.step()) {\r\n const modelPtr = modelItr.getModel();\r\n if (modelPtr.getName()[0] !== \"$\") handles.push(modelPtr.getDatabaseHandle());\r\n }\r\n modelItr.delete();\r\n\r\n return handles;\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"getModels\", getModels);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction getSelected(viewer: Viewer): string[] {\r\n if (!viewer.visualizeJs) return [];\r\n\r\n const visViewer = viewer.visViewer();\r\n\r\n const handles: string[] = [];\r\n const selectionSet = visViewer.getSelected();\r\n if (!selectionSet.isNull() && selectionSet.numItems() !== 0) {\r\n const itr = selectionSet.getIterator();\r\n for (; !itr.done(); itr.step()) {\r\n const entityId = itr.getEntity();\r\n\r\n const entityPtr =\r\n entityId.getType() === 1\r\n ? entityId.openObject()\r\n : entityId.getType() === 2\r\n ? entityId.openObjectAsInsert()\r\n : null;\r\n\r\n if (entityPtr) {\r\n const handle = entityPtr.getNativeDatabaseHandle();\r\n if (handle !== \"-1\") handles.push(handle);\r\n entityPtr.delete();\r\n }\r\n }\r\n itr.delete();\r\n }\r\n\r\n return handles;\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"getSelected\", getSelected);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction hideSelected(viewer: Viewer): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visViewer = viewer.visViewer();\r\n visViewer.hideSelectedObjects(false);\r\n\r\n viewer.update();\r\n viewer.emit({ type: \"hide\" });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"hideSelected\", hideSelected);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction isolateSelected(viewer: Viewer): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visViewer = viewer.visViewer();\r\n visViewer.isolateSelectedObjects(false);\r\n\r\n viewer.update();\r\n viewer.emit({ type: \"isolate\" });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"isolateSelected\", isolateSelected);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction regenerateAll(viewer: Viewer): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visViewer = viewer.visViewer();\r\n visViewer.regenAll();\r\n\r\n viewer.update();\r\n viewer.emit({ type: \"regenerateall\" });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"regenerateAll\", regenerateAll);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction resetView(viewer: Viewer): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n viewer.executeCommand(\"setActiveDragger\", \"\");\r\n viewer.executeCommand(\"clearSlices\");\r\n viewer.executeCommand(\"clearOverlay\");\r\n viewer.executeCommand(\"setMarkupColor\");\r\n viewer.executeCommand(\"unselect\");\r\n viewer.executeCommand(\"showAll\");\r\n viewer.executeCommand(\"explode\", 0);\r\n viewer.executeCommand(\"zoomToExtents\", true);\r\n viewer.executeCommand(\"k3DViewSW\");\r\n\r\n viewer.emit({ type: \"resetview\" });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"resetView\", resetView);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction selectModel(viewer: Viewer, handle: string): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visViewer = viewer.visViewer();\r\n const activeView = visViewer.activeView;\r\n\r\n const modelItr = visViewer.getModelIterator();\r\n for (; !modelItr.done(); modelItr.step()) {\r\n const modelPtr = modelItr.getModel();\r\n if (modelPtr.getDatabaseHandle() === handle) {\r\n const selectionSet = activeView.selectCrossing([0, 9999, 9999, 0], modelPtr);\r\n\r\n visViewer.setSelected(selectionSet);\r\n const handles = viewer.getSelected();\r\n\r\n viewer.update();\r\n viewer.emitEvent({ type: \"select\", data: selectionSet, handles });\r\n\r\n selectionSet.delete();\r\n break;\r\n }\r\n }\r\n modelItr.delete();\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"selectModel\", selectModel);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"setActiveDragger\", (viewer: Viewer, dragger = \"\") => {\r\n viewer.setActiveDragger(dragger);\r\n});\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction setDefaultViewPosition(viewer: Viewer, position = \"\"): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visLib = viewer.visLib();\r\n const visViewer = viewer.visViewer();\r\n\r\n const defViewPos = visLib.DefaultViewPosition;\r\n visViewer.setDefaultViewPositionWithAnimation(defViewPos[position]);\r\n\r\n viewer.update();\r\n viewer.emit({ type: \"viewposition\", data: position });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"setDefaultViewPosition\", setDefaultViewPosition);\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewTop\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewTop\"));\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewBottom\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewBottom\"));\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewLeft\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewLeft\"));\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewRight\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewRight\"));\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewFront\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewFront\"));\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewBack\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewBack\"));\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewSE\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewSE\"));\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewSW\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewSW\"));\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewNE\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewNE\"));\r\ncommands(\"VisualizeJS\").registerCommand(\"k3DViewNW\", (viewer) => setDefaultViewPosition(viewer, \"k3DViewNW\"));\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"setMarkupColor\", (viewer: Viewer, r = 255, g = 0, b = 0) => {\r\n viewer.setMarkupColor(r, g, b);\r\n});\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction setSelected(viewer: Viewer, handles: string[] = []): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visLib = viewer.visLib();\r\n const visViewer = visLib.getViewer();\r\n\r\n const selectionSet = new visLib.OdTvSelectionSet();\r\n handles?.forEach((handle) => {\r\n const entityId = visViewer.getEntityByOriginalHandle(handle + \"\");\r\n if (!entityId.isNull()) selectionSet.appendEntity(entityId);\r\n });\r\n\r\n visViewer.setSelected(selectionSet);\r\n\r\n viewer.update();\r\n viewer.emitEvent({ type: \"select\", data: selectionSet, handles });\r\n\r\n selectionSet.delete();\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"setSelected\", setSelected);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction showAll(viewer: Viewer): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visViewer = viewer.visViewer();\r\n visViewer.unisolateSelectedObjects(false);\r\n\r\n viewer.update();\r\n viewer.emit({ type: \"showall\" });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"showAll\", showAll);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction unselect(viewer: Viewer): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visViewer = viewer.visViewer();\r\n visViewer.unselect();\r\n\r\n viewer.update();\r\n viewer.emitEvent({ type: \"select\", data: visViewer.getSelected(), handles: [] });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"unselect\", unselect);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction zoomToExtents(viewer: Viewer, force = false, animate = viewer.options.cameraAnimation): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visViewer = viewer.visViewer();\r\n const saveEnableAmination = visViewer.getEnableAnimation();\r\n\r\n visViewer.setEnableAnimation(animate);\r\n visViewer.zoomExtents(force);\r\n visViewer.update();\r\n visViewer.setEnableAnimation(saveEnableAmination);\r\n\r\n viewer.update();\r\n viewer.emitEvent({ type: \"zoom\" });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"zoomToExtents\", zoomToExtents);\r\ncommands(\"VisualizeJS\").registerCommandAlias(\"zoomToExtents\", \"zoomExtents\");\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction zoomToObjects(viewer: Viewer, handles: string[] = []): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visLib = viewer.visLib();\r\n const visViewer = viewer.visViewer();\r\n\r\n const selectionSet = new visLib.OdTvSelectionSet();\r\n handles.forEach((handle) => {\r\n const entityId = visViewer.getEntityByOriginalHandle(handle + \"\");\r\n if (!entityId.isNull()) selectionSet.appendEntity(entityId);\r\n });\r\n\r\n visViewer.zoomToObjects?.(selectionSet);\r\n\r\n viewer.update();\r\n viewer.emitEvent({ type: \"zoom\" });\r\n\r\n selectionSet.delete();\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"zoomToObjects\", zoomToObjects);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nimport { Viewer } from \"../Viewer\";\r\nimport { commands } from \"../Commands\";\r\n\r\nfunction zoomToSelected(viewer: Viewer): void {\r\n if (!viewer.visualizeJs) return;\r\n\r\n const visViewer = viewer.visViewer();\r\n\r\n const selectionSet = visViewer.getSelected();\r\n visViewer.zoomToObjects?.(selectionSet);\r\n\r\n viewer.update();\r\n viewer.emitEvent({ type: \"zoom\" });\r\n}\r\n\r\ncommands(\"VisualizeJS\").registerCommand(\"zoomToSelected\", zoomToSelected);\r\n","///////////////////////////////////////////////////////////////////////////////\r\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\r\n// All rights reserved.\r\n//\r\n// This software and its documentation and related materials are owned by\r\n// the Alliance. The software may only be incorporated into application\r\n// programs owned by members of the Alliance, subject to a signed\r\n// Membership Agreement and Supplemental Software License Agreement with the\r\n// Alliance. The structure and organization of this software are the valuable\r\n// trade secrets of the Alliance and its suppliers. The software is also\r\n// protected by copyright law and international treaty provisions. Application\r\n// programs incorporating this software must include the following statement\r\n// with their copyright notices:\r\n//\r\n// This application incorporates Open Design Alliance software pursuant to a\r\n// license agreement with Open Design Alliance.\r\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\r\n// All rights reserved.\r\n//\r\n// By use of this software, its documentation or related materials, you\r\n// acknowledge and accept the above terms.\r\n///////////////////////////////////////////////////////////////////////////////\r\n\r\nexport { Assembly } from \"./Api/Assembly\";\r\nexport { CANVAS_EVENTS } from \"./Viewer/CanvasEvents\";\r\nexport { Client } from \"./Api/Client\";\r\nexport { ClashTest } from \"./Api/ClashTest\";\r\nexport { commands } from \"./Viewer/Commands\";\r\nexport { EventEmitter2 } from \"./Viewer/EventEmitter2\";\r\nexport { File } from \"./Api/File\";\r\nexport { IViewer } from \"./Viewer/IViewer\";\r\nexport { Job } from \"./Api/Job\";\r\nexport { Member } from \"./Api/Member\";\r\nexport { Model } from \"./Api/Model\";\r\nexport { OdBaseDragger } from \"./Viewer/Draggers/Common/OdBaseDragger\";\r\nexport { Options, OptionsData } from \"./Viewer/Options\";\r\nexport { Permission } from \"./Api/Permission\";\r\nexport { Project } from \"./Api/Project\";\r\nexport { Role } from \"./Api/Role\";\r\nexport { User } from \"./Api/User\";\r\nexport { Viewer, Viewer as VisualizejsViewer } from \"./Viewer/Viewer\";\r\n\r\nexport * from \"./Api/ClientEvents\";\r\nexport * from \"./Viewer/OptionsEvents\";\r\nexport * from \"./Viewer/ViewerCommands\";\r\nexport * from \"./Viewer/ViewerEvents\";\r\n\r\nexport const version = \"CLIENT_JS_VERSION\";\r\n"],"names":["File","utils.createHtmlElementIfNeed","utils.worldToScreen","utils.isInsideRect","utils.getDataForDrawLineWithFixed","utils.getDistance","utils.destroyHtmlElement","utils.onSetCallback","utils.onSetSelectivity","global","require$$0","Global_1","Util_1","require$$1","Context_1","Canvas_1","require$$2","Factory_1","require$$3","Validators_1","require$$4","Node_1","require$$5","SPACE","TRANSFORM_CHANGE_STR","Container_1","PointerEvents","require$$6","Layer_1","Shape_1","require$$7","FastLayer_1","Group_1","Animation_1","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","Arc_1","Global_2","Line_1","Path_1","Arrow_1","Circle_1","Ellipse_1","Image_1","Image","Label_1","ATTR_CHANGE_LIST","CHANGE_KONVA","NONE","RIGHT","LEFT","attrChangeListLen","Rect_1","RegularPolygon_1","Ring_1","Sprite_1","Star_1","Text_1","NORMAL","_fillFunc","_strokeFunc","TextPath_1","Transformer_1","Wedge_1","Blur_1","Brighten_1","Contrast_1","Emboss_1","Enhance_1","Grayscale_1","HSL_1","HSV_1","Invert_1","Kaleidoscope_1","Mask_1","Noise_1","Pixelate_1","Posterize_1","RGB_1","RGBA_1","Sepia_1","Solarize_1","Threshold_1","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","libModule"],"mappings":"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IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,yCAAyC;IACjD,SAAQ,yCAAyC;IACjD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,yCAAyC;IACjD,SAAQ,yCAAyC;UAC5C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,yCAAyC;IACjD,SAAQ,yCAAyC;IACjD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,yCAAyC;IACjD,SAAQ,yCAAyC;IACjD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,yCAAyC;IACjD,SAAQ,yCAAyC;IACjD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,yCAAyC;IACjD,SAAQ,yCAAyC;IACjD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;IAClD,SAAQ,0CAA0C;UAC7C;SACD;IACJ,SAAQ,0CAA0C;IAClD,SAAQ,yCAAyC;IACjD,SAAQ,yCAAyC;IACjD,SAAQ,0CAA0C;IAClD,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AG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;IAC7E,CAAC,CAAC;IACF,IAAI,SAAS,GAAG;IAChB,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IACjF,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE;IAC9E,IAAI,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE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"}
|