@inweb/viewer-visualize 25.3.13
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 +63 -0
- package/dist/viewer-visualize.js +16982 -0
- package/dist/viewer-visualize.js.map +1 -0
- package/dist/viewer-visualize.min.js +1 -0
- package/dist/viewer-visualize.module.js +5267 -0
- package/dist/viewer-visualize.module.js.map +1 -0
- package/lib/Viewer/Commands/ApplyModelTransform.d.ts +1 -0
- package/lib/Viewer/Commands/ClearMarkup.d.ts +1 -0
- package/lib/Viewer/Commands/ClearSlices.d.ts +1 -0
- package/lib/Viewer/Commands/CreatePreview.d.ts +1 -0
- package/lib/Viewer/Commands/Explode.d.ts +1 -0
- package/lib/Viewer/Commands/GetDefaultViewPositions.d.ts +1 -0
- package/lib/Viewer/Commands/GetModels.d.ts +1 -0
- package/lib/Viewer/Commands/GetSelected.d.ts +1 -0
- package/lib/Viewer/Commands/HideSelected.d.ts +1 -0
- package/lib/Viewer/Commands/IsolateSelected.d.ts +1 -0
- package/lib/Viewer/Commands/RegenerateAll.d.ts +1 -0
- package/lib/Viewer/Commands/ResetView.d.ts +1 -0
- package/lib/Viewer/Commands/SelectModel.d.ts +1 -0
- package/lib/Viewer/Commands/SetActiveDragger.d.ts +1 -0
- package/lib/Viewer/Commands/SetDefaultViewPosition.d.ts +1 -0
- package/lib/Viewer/Commands/SetMarkupColor.d.ts +1 -0
- package/lib/Viewer/Commands/SetSelected.d.ts +1 -0
- package/lib/Viewer/Commands/ShowAll.d.ts +1 -0
- package/lib/Viewer/Commands/Unselect.d.ts +1 -0
- package/lib/Viewer/Commands/ZoomToExtents.d.ts +1 -0
- package/lib/Viewer/Commands/ZoomToObjects.d.ts +1 -0
- package/lib/Viewer/Commands/ZoomToSelected.d.ts +1 -0
- package/lib/Viewer/Commands/index.d.ts +22 -0
- package/lib/Viewer/Draggers/Actions/OrbitAction.d.ts +21 -0
- package/lib/Viewer/Draggers/Actions/PanAction.d.ts +17 -0
- package/lib/Viewer/Draggers/Actions/ZoomAction.d.ts +7 -0
- package/lib/Viewer/Draggers/Common/Geometry.d.ts +114 -0
- package/lib/Viewer/Draggers/Common/GestureManager.d.ts +40 -0
- package/lib/Viewer/Draggers/Common/OdBaseDragger.d.ts +53 -0
- package/lib/Viewer/Draggers/Common/OdaGeAction.d.ts +29 -0
- package/lib/Viewer/Draggers/MeasureLineDragger/MeasureLineItem.d.ts +30 -0
- package/lib/Viewer/Draggers/MeasureLineDragger/MeasureUtils.d.ts +19 -0
- package/lib/Viewer/Draggers/MeasureLineDragger/index.d.ts +23 -0
- package/lib/Viewer/Draggers/OdBaseCuttingPlaneDragger.d.ts +26 -0
- package/lib/Viewer/Draggers/OdCuttingPlaneXAxisDragger.d.ts +7 -0
- package/lib/Viewer/Draggers/OdCuttingPlaneYAxisDragger.d.ts +7 -0
- package/lib/Viewer/Draggers/OdCuttingPlaneZAxisDragger.d.ts +7 -0
- package/lib/Viewer/Draggers/OdOrbitDragger.d.ts +14 -0
- package/lib/Viewer/Draggers/OdPanDragger.d.ts +11 -0
- package/lib/Viewer/Draggers/OdZoomDragger.d.ts +11 -0
- package/lib/Viewer/Draggers/OdZoomWheelDragger.d.ts +10 -0
- package/lib/Viewer/Draggers/OdZoomWindowDragger/OdSelectionFrame.d.ts +18 -0
- package/lib/Viewer/Draggers/OdZoomWindowDragger/index.d.ts +13 -0
- package/lib/Viewer/Draggers/OdaLineDragger.d.ts +14 -0
- package/lib/Viewer/Draggers/OdaTextDragger.d.ts +15 -0
- package/lib/Viewer/Draggers/OdaWalkDragger.d.ts +29 -0
- package/lib/Viewer/Draggers/OrbitAroundBuildingDragger.d.ts +18 -0
- package/lib/Viewer/Loaders/BaseLoader.d.ts +10 -0
- package/lib/Viewer/Loaders/LoaderFactory.d.ts +10 -0
- package/lib/Viewer/Loaders/TCSLoader.d.ts +4 -0
- package/lib/Viewer/Loaders/UpdaterController.d.ts +14 -0
- package/lib/Viewer/Loaders/VsfXLoader.d.ts +4 -0
- package/lib/Viewer/Loaders/VsfXPartialLoader.d.ts +4 -0
- package/lib/Viewer/Loaders/VsfXStreamingLoader.d.ts +4 -0
- package/lib/Viewer/Markup/Api/IMarkupArrow.d.ts +21 -0
- package/lib/Viewer/Markup/Api/IMarkupCloud.d.ts +14 -0
- package/lib/Viewer/Markup/Api/IMarkupColorable.d.ts +4 -0
- package/lib/Viewer/Markup/Api/IMarkupEllipse.d.ts +14 -0
- package/lib/Viewer/Markup/Api/IMarkupImage.d.ts +14 -0
- package/lib/Viewer/Markup/Api/IMarkupLine.d.ts +12 -0
- package/lib/Viewer/Markup/Api/IMarkupObject.d.ts +11 -0
- package/lib/Viewer/Markup/Api/IMarkupRectangle.d.ts +14 -0
- package/lib/Viewer/Markup/Api/IMarkupText.d.ts +12 -0
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaArrow.d.ts +46 -0
- package/lib/Viewer/Markup/Api/Impl/Konva/KonvaCloud.d.ts +35 -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 +36 -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 +39 -0
- package/lib/Viewer/Markup/Impl/Konva/KonvaMarkup.d.ts +70 -0
- package/lib/Viewer/Markup/Impl/Konva/MarkupColor.d.ts +18 -0
- package/lib/Viewer/Markup/Impl/Visualize/VisualizeMarkup.d.ts +33 -0
- package/lib/Viewer/Markup/MarkupFactory.d.ts +6 -0
- package/lib/Viewer/Viewer.d.ts +346 -0
- package/lib/Viewer/utils.d.ts +3 -0
- package/lib/index.d.ts +3 -0
- package/package.json +44 -0
- package/src/Viewer/Commands/ApplyModelTransform.ts +69 -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/index.ts +45 -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/Loaders/BaseLoader.ts +40 -0
- package/src/Viewer/Loaders/LoaderFactory.ts +48 -0
- package/src/Viewer/Loaders/TCSLoader.ts +82 -0
- package/src/Viewer/Loaders/UpdaterController.ts +36 -0
- package/src/Viewer/Loaders/VsfXLoader.ts +65 -0
- package/src/Viewer/Loaders/VsfXPartialLoader.ts +208 -0
- package/src/Viewer/Loaders/VsfXStreamingLoader.ts +87 -0
- package/src/Viewer/Markup/Api/IMarkupArrow.ts +12 -0
- package/src/Viewer/Markup/Api/IMarkupCloud.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 +13 -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 +117 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaCloud.ts +208 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaEllipse.ts +118 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaImage.ts +123 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaLine.ts +131 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaRectangle.ts +119 -0
- package/src/Viewer/Markup/Api/Impl/Konva/KonvaText.ts +110 -0
- package/src/Viewer/Markup/IMarkup.ts +42 -0
- package/src/Viewer/Markup/Impl/Konva/KonvaMarkup.ts +1144 -0
- package/src/Viewer/Markup/Impl/Konva/MarkupColor.ts +39 -0
- package/src/Viewer/Markup/Impl/Visualize/VisualizeMarkup.ts +229 -0
- package/src/Viewer/Markup/MarkupFactory.ts +32 -0
- package/src/Viewer/Viewer.ts +1183 -0
- package/src/Viewer/utils.ts +74 -0
- package/src/index.ts +26 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"viewer-visualize.js","sources":["../../viewer-core/dist/viewer-core.module.js","../../eventemitter2/dist/eventemitter2.module.js","../src/Viewer/Draggers/Common/OdaGeAction.ts","../src/Viewer/Draggers/Common/OdBaseDragger.ts","../src/Viewer/Draggers/MeasureLineDragger/MeasureUtils.ts","../src/Viewer/Draggers/MeasureLineDragger/MeasureLineItem.ts","../src/Viewer/Draggers/MeasureLineDragger/index.ts","../src/Viewer/Draggers/OdaWalkDragger.ts","../src/Viewer/Draggers/OdBaseCuttingPlaneDragger.ts","../src/Viewer/Draggers/OdCuttingPlaneXAxisDragger.ts","../src/Viewer/Draggers/OdCuttingPlaneYAxisDragger.ts","../src/Viewer/Draggers/OdCuttingPlaneZAxisDragger.ts","../src/Viewer/Draggers/Actions/OrbitAction.ts","../src/Viewer/Draggers/OdOrbitDragger.ts","../src/Viewer/Draggers/Actions/PanAction.ts","../src/Viewer/Draggers/OdPanDragger.ts","../src/Viewer/Draggers/Actions/ZoomAction.ts","../src/Viewer/Draggers/OdZoomDragger.ts","../src/Viewer/Draggers/OdZoomWheelDragger.ts","../src/Viewer/Draggers/OdZoomWindowDragger/OdSelectionFrame.ts","../src/Viewer/Draggers/OdZoomWindowDragger/index.ts","../src/Viewer/Draggers/OrbitAroundBuildingDragger.ts","../src/Viewer/Draggers/Common/GestureManager.ts","../src/Viewer/utils.ts","../src/Viewer/Loaders/BaseLoader.ts","../src/Viewer/Loaders/TCSLoader.ts","../src/Viewer/Loaders/UpdaterController.ts","../src/Viewer/Loaders/VsfXStreamingLoader.ts","../src/Viewer/Loaders/VsfXPartialLoader.ts","../src/Viewer/Loaders/VsfXLoader.ts","../src/Viewer/Loaders/LoaderFactory.ts","../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","../src/Viewer/Markup/Impl/Konva/MarkupColor.ts","../src/Viewer/Markup/Api/Impl/Konva/KonvaLine.ts","../src/Viewer/Markup/Api/Impl/Konva/KonvaText.ts","../src/Viewer/Markup/Api/Impl/Konva/KonvaRectangle.ts","../src/Viewer/Markup/Api/Impl/Konva/KonvaEllipse.ts","../src/Viewer/Markup/Api/Impl/Konva/KonvaArrow.ts","../src/Viewer/Markup/Api/Impl/Konva/KonvaImage.ts","../src/Viewer/Markup/Api/Impl/Konva/KonvaCloud.ts","../src/Viewer/Markup/Impl/Konva/KonvaMarkup.ts","../src/Viewer/Draggers/OdaLineDragger.ts","../src/Viewer/Draggers/OdaTextDragger.ts","../src/Viewer/Markup/Impl/Visualize/VisualizeMarkup.ts","../src/Viewer/Markup/MarkupFactory.ts","../src/Viewer/Viewer.ts"],"sourcesContent":["class Commands {\n constructor() {\n this._commands = new Map;\n }\n registerCommand(id, handler, description, thisArg) {\n this._commands.set(id, {\n id: id,\n handler: handler,\n thisArg: thisArg,\n description: description\n });\n }\n registerCommandAlias(id, alias) {\n this.registerCommand(alias, ((viewer, ...args) => this.executeCommand(id, viewer, ...args)));\n }\n getCommand(id) {\n return this._commands.get(id);\n }\n getCommands() {\n const map = new Map;\n this._commands.forEach(((value, key) => map.set(key, value)));\n return map;\n }\n executeCommand(id, viewer, ...args) {\n const command = this._commands.get(id);\n if (!command) {\n if (viewer) {\n const isDraggerCommand = viewer.draggers.includes(id);\n if (isDraggerCommand) return viewer.setActiveDragger(id);\n }\n console.warn(`Command '${id}' not found`);\n return undefined;\n }\n const {handler: handler, thisArg: thisArg} = command;\n const result = handler.apply(thisArg, [ viewer, ...args ]);\n viewer === null || viewer === void 0 ? void 0 : viewer.emit({\n type: \"command\",\n data: id,\n args: args\n });\n return result;\n }\n}\n\nconst _commands = new Map;\n\nfunction commands(viewerType = \"\") {\n let result = _commands.get(viewerType);\n if (!result) {\n result = new Commands;\n _commands.set(viewerType, result);\n }\n return result;\n}\n\ncommands(\"\").registerCommand(\"noop\", (() => {}));\n\ncommands(\"VisualizeJS\").registerCommand(\"noop\", (() => {}));\n\ncommands(\"ThreeJS\").registerCommand(\"noop\", (() => {}));\n\nclass Options {\n constructor(emitter) {\n this._emitter = emitter;\n this._data = Options.defaults();\n this.loadFromStorage();\n }\n static defaults() {\n return {\n showWCS: true,\n cameraAnimation: true,\n antialiasing: true,\n groundShadow: false,\n shadows: false,\n cameraAxisXSpeed: 4,\n cameraAxisYSpeed: 1,\n ambientOcclusion: false,\n enableStreamingMode: true,\n enablePartialMode: false,\n memoryLimit: 3294967296,\n cuttingPlaneFillColor: {\n red: 255,\n green: 152,\n blue: 0\n },\n edgesColor: {\n r: 255,\n g: 152,\n b: 0\n },\n facesColor: {\n r: 255,\n g: 152,\n b: 0\n },\n edgesVisibility: true,\n edgesOverlap: true,\n facesOverlap: false,\n facesTransparancy: 200,\n enableCustomHighlight: true,\n sceneGraph: false,\n edgeModel: true,\n reverseZoomWheel: false,\n enableZoomWheel: true,\n enableGestures: true,\n geometryType: \"vsfx\"\n };\n }\n notifierChangeEvent() {\n if (this._emitter !== undefined) {\n this.saveToStorage();\n this._emitter.emit({\n type: \"optionschange\",\n data: this\n });\n }\n }\n saveToStorage() {\n if (typeof window !== \"undefined\") try {\n localStorage.setItem(\"od-client-settings\", JSON.stringify(this.data));\n } catch (error) {\n console.error(\"Cannot save client settings.\", error);\n }\n }\n loadFromStorage() {\n if (typeof window !== \"undefined\") try {\n const item = localStorage.getItem(\"od-client-settings\");\n if (item) {\n const data = JSON.parse(item);\n this.data = {\n ...data\n };\n }\n } catch (error) {\n console.error(\"Cannot load client settings.\", error);\n }\n }\n resetToDefaults(fields) {\n if (fields !== undefined) {\n const defaults = Options.defaults();\n const resetData = fields.reduce(((acc, field) => {\n acc[field] = defaults[field];\n return acc;\n }), {});\n this.data = {\n ...this.data,\n ...resetData\n };\n } else {\n this.data = {\n ...this.data,\n ...Options.defaults()\n };\n }\n }\n get data() {\n return this._data;\n }\n set data(value) {\n const sceneGraph = value.enablePartialMode ? false : value.sceneGraph;\n this._data = {\n ...Options.defaults(),\n ...this._data,\n ...value,\n sceneGraph: sceneGraph\n };\n this.notifierChangeEvent();\n }\n get showWCS() {\n return this._data.showWCS;\n }\n set showWCS(value) {\n this._data.showWCS = value;\n this.notifierChangeEvent();\n }\n get cameraAnimation() {\n return this._data.cameraAnimation;\n }\n set cameraAnimation(value) {\n this._data.cameraAnimation = value;\n this.notifierChangeEvent();\n }\n get antialiasing() {\n return this._data.antialiasing;\n }\n set antialiasing(value) {\n this._data.antialiasing = value;\n this.notifierChangeEvent();\n }\n get groundShadow() {\n return this._data.groundShadow;\n }\n set groundShadow(value) {\n this._data.groundShadow = value;\n this.notifierChangeEvent();\n }\n get shadows() {\n return this._data.shadows;\n }\n set shadows(value) {\n this._data.shadows = value;\n this.notifierChangeEvent();\n }\n get cameraAxisXSpeed() {\n return this._data.cameraAxisXSpeed;\n }\n set cameraAxisXSpeed(value) {\n this._data.cameraAxisXSpeed = value;\n this.notifierChangeEvent();\n }\n get cameraAxisYSpeed() {\n return this._data.cameraAxisYSpeed;\n }\n set cameraAxisYSpeed(value) {\n this.cameraAxisYSpeed = value;\n this.notifierChangeEvent();\n }\n get ambientOcclusion() {\n return this._data.ambientOcclusion;\n }\n set ambientOcclusion(value) {\n this._data.ambientOcclusion = value;\n this.notifierChangeEvent();\n }\n get enableStreamingMode() {\n return this._data.enableStreamingMode;\n }\n set enableStreamingMode(value) {\n this._data.enableStreamingMode = value;\n if (this._data.enableStreamingMode) {\n this._data.enablePartialMode = false;\n }\n this.notifierChangeEvent();\n }\n get enablePartialMode() {\n return this._data.enablePartialMode;\n }\n set enablePartialMode(value) {\n this._data.enablePartialMode = value;\n if (value) this._data.sceneGraph = false;\n this.notifierChangeEvent();\n }\n get memoryLimit() {\n return this._data.memoryLimit;\n }\n set memoryLimit(value) {\n this._data.memoryLimit = value;\n this.notifierChangeEvent();\n }\n get cuttingPlaneFillColor() {\n return this._data.cuttingPlaneFillColor;\n }\n set cuttingPlaneFillColor(value) {\n this._data.cuttingPlaneFillColor = value;\n this.notifierChangeEvent();\n }\n get edgesColor() {\n return this._data.edgesColor;\n }\n set edgesColor(value) {\n this._data.edgesColor = value;\n this.notifierChangeEvent();\n }\n get facesColor() {\n return this._data.facesColor;\n }\n set facesColor(value) {\n this._data.facesColor = value;\n this.notifierChangeEvent();\n }\n get edgesVisibility() {\n return this._data.edgesVisibility;\n }\n set edgesVisibility(value) {\n this._data.edgesVisibility = value;\n this.notifierChangeEvent();\n }\n get edgesOverlap() {\n return this._data.edgesOverlap;\n }\n set edgesOverlap(value) {\n this._data.edgesOverlap = value;\n this.notifierChangeEvent();\n }\n get facesOverlap() {\n return this._data.facesOverlap;\n }\n set facesOverlap(value) {\n this._data.facesOverlap = value;\n this.notifierChangeEvent();\n }\n get facesTransparancy() {\n return this._data.facesTransparancy;\n }\n set facesTransparancy(value) {\n this._data.facesTransparancy = value;\n this.notifierChangeEvent();\n }\n get enableCustomHighlight() {\n return this._data.enableCustomHighlight;\n }\n set enableCustomHighlight(value) {\n this._data.enableCustomHighlight = value;\n this.notifierChangeEvent();\n }\n get sceneGraph() {\n return this._data.sceneGraph;\n }\n set sceneGraph(value) {\n this._data.sceneGraph = value;\n if (value) this._data.enablePartialMode = false;\n this.notifierChangeEvent();\n }\n get edgeModel() {\n return Boolean(this._data.edgeModel);\n }\n set edgeModel(value) {\n this._data.edgeModel = Boolean(value);\n this.notifierChangeEvent();\n }\n get reverseZoomWheel() {\n return this._data.reverseZoomWheel;\n }\n set reverseZoomWheel(value) {\n this._data.reverseZoomWheel = !!value;\n this.notifierChangeEvent();\n }\n get enableZoomWheel() {\n return this._data.enableZoomWheel;\n }\n set enableZoomWheel(value) {\n this._data.enableZoomWheel = !!value;\n this.notifierChangeEvent();\n }\n get enableGestures() {\n return this._data.enableGestures;\n }\n set enableGestures(value) {\n this._data.enableGestures = !!value;\n this.notifierChangeEvent();\n }\n get geometryType() {\n return this._data.geometryType;\n }\n set geometryType(value) {\n this._data.geometryType = value;\n this.notifierChangeEvent();\n }\n}\n\nconst CANVAS_EVENTS = [ \"click\", \"dblclick\", \"mousedown\", \"mousemove\", \"mouseup\", \"mouseleave\", \"pointerdown\", \"pointermove\", \"pointerup\", \"pointerleave\", \"pointercancel\", \"wheel\", \"touchstart\", \"touchmove\", \"touchend\", \"touchcancel\" ];\n\nexport { CANVAS_EVENTS, Options, commands };\n//# sourceMappingURL=viewer-core.module.js.map\n","class EventEmitter2 {\n constructor() {\n this._listeners = undefined;\n }\n addEventListener(type, listener) {\n if (this._listeners === undefined) this._listeners = {};\n if (this._listeners[type] === undefined) this._listeners[type] = [];\n this._listeners[type].push(listener);\n return this;\n }\n removeEventListener(type, listener) {\n if (this._listeners === undefined) return this;\n if (this._listeners[type] === undefined) return this;\n const listeners = this._listeners[type].filter((x => x !== listener));\n this._listeners[type] = listeners.length === 0 ? undefined : listeners;\n return this;\n }\n removeAllListeners(type) {\n if (type) this._listeners[type] = undefined; else this._listeners = undefined;\n return this;\n }\n emitEvent(event) {\n if (this._listeners === undefined) return false;\n if (this._listeners[event.type] === undefined) return false;\n const invoke = this._listeners[event.type].slice();\n invoke.forEach((listener => listener.call(this, event)));\n return true;\n }\n on(type, listener) {\n return this.addEventListener(type, listener);\n }\n off(type, listener) {\n return this.removeEventListener(type, listener);\n }\n emit(event, ...args) {\n if (typeof event === \"string\") return this.emitEvent({\n type: event,\n args: args\n }); else if (typeof event === \"object\") return this.emitEvent(event); else return false;\n }\n}\n\nexport { EventEmitter2 };\n//# sourceMappingURL=eventemitter2.module.js.map\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Matrix3d, OdTvPlane, Point3d, Vector3d } from \"./Geometry\";\n\nexport type ViewParams = {\n position: number[];\n target: number[];\n upVector: number[];\n viewFieldWidth: number;\n viewFieldHeight: number;\n perspective: boolean;\n};\n\nexport class OdaGeAction {\n protected m_module;\n\n constructor(module: any) {\n this.m_module = module;\n }\n\n protected getViewer(): any {\n return this.m_module.getViewer();\n }\n\n protected getModel(): any {\n return this.getViewer().getMarkupModel();\n }\n\n protected copyPoint(point: Point3d): Point3d {\n const p: Point3d = new this.m_module.Point3d();\n p.set(point.x, point.y, point.z);\n return p;\n }\n\n protected createVector3d(): Vector3d {\n return new this.m_module.Vector3d();\n }\n\n protected createPoint3d(): Point3d {\n return new this.m_module.Point3d();\n }\n\n protected createMatrix3d(): Matrix3d {\n return new this.m_module.Matrix3d();\n }\n\n protected createPlane(): OdTvPlane {\n return new this.m_module.OdTvPlane();\n }\n\n protected toVector(geVector): Vector3d {\n return this.m_module.Vector3d.createFromArray(geVector);\n }\n\n protected toGeVector(v: Vector3d): number[] {\n return [v.x, v.y, v.z];\n }\n\n protected toGePoint(point: Point3d): number[] {\n return [point.x, point.y, point.z];\n }\n\n protected toPoint(gePoint: number[]): Point3d {\n return this.m_module.Point3d.createFromArray(gePoint);\n }\n\n protected screenToWorld(x: number, y: number): Point3d {\n return this.toPoint(this.m_module.getViewer().screenToWorld(x, y));\n }\n\n protected toDoubleArray(points: Point3d[]): number[] {\n const p: number[] = [];\n for (let i = 0; i < points.length; i++) {\n p.push(points[i].x);\n p.push(points[i].y);\n p.push(points[i].z);\n }\n return p;\n }\n\n protected correctCameraTarget(): void {\n const params = this.getViewParams();\n const ext = this.m_module.getViewer().getActiveExtents();\n const { min, max } = ext;\n const target = this.toPoint(params.target);\n\n const contains =\n target.x >= min.x &&\n target.y >= min.y &&\n target.z >= min.z &&\n target.x <= max.x &&\n target.y <= max.y &&\n target.z <= max.z;\n if (!contains) {\n params.target = ext.center();\n this.setViewParams(params);\n }\n }\n\n protected setViewParams = (params: ViewParams) => {\n const extView = this.m_module.getViewer().getActiveTvExtendedView();\n extView.setView(\n params.position,\n params.target,\n params.upVector,\n params.viewFieldWidth,\n params.viewFieldHeight,\n params.perspective\n );\n extView.delete?.();\n };\n\n protected getViewParams = () => {\n const view = this.m_module.getViewer().activeView;\n const obj = {\n position: view.viewPosition,\n target: view.viewTarget,\n upVector: view.upVector,\n viewFieldWidth: view.viewFieldWidth,\n viewFieldHeight: view.viewFieldHeight,\n perspective: view.perspective,\n } as ViewParams;\n view.delete?.();\n return obj;\n };\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n/* eslint-disable no-unused-vars */\n\nimport { CANVAS_EVENTS } from \"@inweb/viewer-core\";\nimport { Viewer } from \"../../Viewer\";\nimport { Point2d } from \"./Geometry\";\nimport { OdaGeAction } from \"./OdaGeAction\";\n\nconst CLICK_DELTA = 5;\n\nconst INTERACTIVITY_FPS = 24;\n\n/**\n * A [Viewer]{@link Viewer} event that fires when the viewer needs to be updated.\n *\n * @property {string} type - `update`\n * @event update\n */\n\n/**\n * A [Viewer]{@link Viewer} event that fires when the user selects an entity with the mouse.\n *\n * @property {string} type - `select`\n * @property {OdTvSelectionSet} data - The set of selected entities. For more information, see\n * [OdTvSelectionSet](https://cloud.opendesign.com/docs/index.html#/vis/OdTvSelectionSet?id=odtvselectionset).\n * @event select\n */\n\nexport class OdBaseDragger extends OdaGeAction {\n protected subject: Viewer;\n protected needInputText: boolean;\n protected mouseDownPosition: Point2d;\n protected autoSelect: boolean;\n protected onmessage: (event: any) => boolean;\n protected canvasEvents: string[];\n protected isDragging: boolean;\n protected press: boolean;\n\n public name: string;\n\n constructor(subject: Viewer) {\n super(subject.visualizeJs);\n this.subject = subject;\n this.needInputText = false;\n this.mouseDownPosition = { x: 0, y: 0 };\n this.autoSelect = false;\n\n this.onmessage = (event) => this.subject.emitEvent(event);\n this.canvasEvents = CANVAS_EVENTS;\n }\n\n public initialize(): void {\n this.canvasEvents = this.canvasEvents.filter((x) => typeof this[x] === \"function\");\n this.canvasEvents.forEach((x) => (this[x] = this[x].bind(this)));\n this.canvasEvents.forEach((x) => this.subject.on(x, this[x]));\n\n this.getViewer().setEnableAutoSelect(!!this.autoSelect);\n }\n\n public dispose(): void {\n this.canvasEvents.forEach((x) => this.subject.off(x, this[x]));\n }\n\n protected relativeCoords(event: MouseEvent): Point2d {\n return { x: event.offsetX * window.devicePixelRatio, y: event.offsetY * window.devicePixelRatio };\n }\n\n protected pointerdown(ev: PointerEvent): void {\n if (!ev.isPrimary || OdBaseDragger.isGestureActive) {\n return;\n }\n\n (ev.target as HTMLElement).setPointerCapture(ev.pointerId);\n\n const relCoord = this.relativeCoords(ev);\n this.isDragging = true;\n this.mouseDownPosition = { x: relCoord.x, y: relCoord.y };\n this.start(relCoord.x, relCoord.y, ev.clientX, ev.clientY);\n this.subject.update();\n }\n\n protected pointerup(ev: PointerEvent): void {\n if (OdBaseDragger.needSkipPointerUp) {\n return;\n }\n\n if (!ev.isPrimary) {\n return;\n }\n\n (ev.target as HTMLElement).releasePointerCapture(ev.pointerId);\n\n const relCoord = this.relativeCoords(ev);\n this.end(relCoord.x, relCoord.y);\n this.isDragging = false;\n this.subject.update();\n }\n\n protected pointercancel(ev: PointerEvent): void {\n if (!ev.isPrimary) {\n return;\n }\n\n this.m_module.canvas.dispatchEvent(new PointerEvent(\"pointerup\", ev));\n }\n\n protected pointermove(ev: PointerEvent): void {\n if (!ev.isPrimary || OdBaseDragger.isGestureActive) {\n return;\n }\n\n const relCoord = this.relativeCoords(ev);\n this.drag(relCoord.x, relCoord.y, ev.movementX, ev.movementY);\n if (this.isDragging) {\n this.subject.update();\n }\n }\n\n protected click(ev: MouseEvent): void {\n const viewer = this.getViewer();\n const relCoord = this.relativeCoords(ev);\n const x = relCoord.x;\n const y = relCoord.y;\n\n const isNotDragging =\n Math.abs(x - this.mouseDownPosition.x) < CLICK_DELTA && Math.abs(y - this.mouseDownPosition.y) < CLICK_DELTA;\n\n if (viewer && viewer.getEnableAutoSelect() && isNotDragging) {\n viewer.unselect();\n viewer.select(x, y, x, y);\n this.subject.update();\n\n const selectionSet = viewer.getSelected();\n const handles = this.subject.getSelected();\n this.onmessage({ type: \"select\", data: selectionSet, handles });\n }\n }\n\n protected dblclick(ev: MouseEvent): void {\n const viewer = this.getViewer();\n const relCoord = this.relativeCoords(ev);\n const x = relCoord.x;\n const y = relCoord.y;\n\n const device = viewer.getActiveDevice();\n const clickView = device.viewAt([x, y]);\n if (clickView && !clickView.active) {\n viewer.activeView = clickView;\n clickView.delete();\n this.subject.update();\n } else {\n if (viewer && viewer.getEnableAutoSelect()) {\n const pSelected = viewer.getSelected();\n\n if (!pSelected.isNull() && pSelected.numItems() !== 0) {\n const itr = pSelected.getIterator();\n const entity = itr.getEntity();\n viewer.zoomToEntity(entity);\n\n this.onmessage({ type: \"zoomtoentity\", data: entity });\n this.subject.update();\n\n this.deleteAll([itr, entity]);\n }\n }\n }\n\n device.delete();\n }\n\n protected start(x: number, y: number, absoluteX = 0, absoluteY = 0): void {}\n\n protected drag(x: number, y: number, absoluteX = 0, absoluteY = 0): void {}\n\n protected end(x: number, y: number): void {}\n\n protected beginInteractivity = () => {\n const viewer = this.getViewer();\n const view = viewer.activeView;\n if (view[\"beginInteractivity\"]) {\n view.beginInteractivity(INTERACTIVITY_FPS);\n this.subject.update();\n }\n view.delete();\n };\n\n protected endInteractivity = () => {\n const viewer = this.getViewer();\n const view = viewer.activeView;\n if (view[\"endInteractivity\"]) {\n view.endInteractivity();\n\n const device = this.getViewer().getActiveDevice();\n const canvas = this.m_module.canvas;\n device.invalidate([0, 0, canvas.width, canvas.height]);\n device.delete();\n this.subject.update();\n }\n view.delete();\n };\n\n protected getActiveMarkupEntity(entityName: string): any {\n return this.subject.addMarkupEntity(entityName);\n }\n\n private syncOverlayView(): any {\n return this.subject.syncOverlay();\n }\n\n protected deleteAll(objects): void {\n for (const obj of objects) {\n obj?.delete?.();\n }\n }\n\n public updatePreview(): void {}\n\n private static _isGestureActive = false;\n\n protected static set isGestureActive(value: boolean) {\n if (OdBaseDragger._isGestureActive === value) {\n return;\n }\n\n OdBaseDragger._isGestureActive = value;\n if (OdBaseDragger._isGestureActive) {\n OdBaseDragger.needSkipPointerUp = true;\n }\n }\n\n protected static get isGestureActive() {\n return OdBaseDragger._isGestureActive;\n }\n\n private static _needSkipPointerUp = false;\n\n private static get needSkipPointerUp() {\n if (OdBaseDragger._needSkipPointerUp) {\n OdBaseDragger.needSkipPointerUp = false;\n return true;\n }\n\n return false;\n }\n\n private static set needSkipPointerUp(value: boolean) {\n OdBaseDragger._needSkipPointerUp = value;\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Point2d } from \"../Common/Geometry\";\n\nexport function createHtmlElementIfNeed(\n element: HTMLElement,\n targetElement: HTMLElement,\n dataTestId: string\n): HTMLElement {\n if (!element) {\n element = document.createElement(\"div\");\n element.setAttribute(\"data-testid\", dataTestId);\n\n targetElement.appendChild(element);\n }\n return element;\n}\n\nexport function destroyHtmlElement(element: HTMLElement, targetElement: HTMLElement) {\n if (element) {\n targetElement.removeChild(element);\n }\n return null;\n}\n\nexport function worldToScreen(gePoint: number[], moduleInstance, viewer): Point2d {\n const worldPoint = moduleInstance.Point3d.createFromArray(gePoint);\n const avp = viewer.activeView;\n const mtx = avp.worldToDeviceMatrix;\n\n const devicePoint = worldPoint.transformBy(mtx);\n\n const res = { x: devicePoint.x / window.devicePixelRatio, y: devicePoint.y / window.devicePixelRatio };\n\n mtx.delete();\n worldPoint.delete();\n devicePoint.delete();\n avp.delete();\n return res;\n}\n\nexport function getDistance(gePoint1: number[], gePoint2: number[], moduleInstance: any) {\n const tvPoint1 = moduleInstance.Point3d.createFromArray(gePoint1);\n const tvPoint2 = moduleInstance.Point3d.createFromArray(gePoint2);\n\n const distance = tvPoint1.distanceTo(tvPoint2).toFixed(2);\n\n tvPoint1.delete();\n tvPoint2.delete();\n\n return distance;\n}\n\nexport function getAngle(geStart: number[], geOrigin: number[], geEnd: number[], moduleInstance: any): number {\n const tvStart = moduleInstance.Point3d.createFromArray(geStart);\n const tvOrigin = moduleInstance.Point3d.createFromArray(geOrigin);\n const tvEnd = moduleInstance.Point3d.createFromArray(geEnd);\n\n const s1 = tvStart.sub(tvOrigin);\n const s2 = tvEnd.sub(tvOrigin);\n\n const v1 = s1.asVector();\n const v2 = s2.asVector();\n\n const angle = (180 * v1.angleTo(v2)) / Math.PI;\n\n return angle;\n}\n\nexport function getDataForDrawLine(p1: Point2d, p2: Point2d) {\n const dx = p2.x - p1.x;\n const dy = p2.y - p1.y;\n let angle = (180 * Math.atan(dy / dx)) / Math.PI;\n if (dx < 0) {\n angle -= 180;\n }\n const width = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n return { angle, width };\n}\n\nfunction normalizeFloat(value: number): number {\n return value < 0 ? Math.ceil(value) : Math.floor(value);\n}\n\nconst lineSegmentsIntersect = (p1: Point2d, p2: Point2d, p3: Point2d, p4: Point2d): false | Point2d => {\n const a_dx = p2.x - p1.x;\n const a_dy = p2.y - p1.y;\n const b_dx = p4.x - p3.x;\n const b_dy = p4.y - p3.y;\n const s = (-a_dy * (p1.x - p3.x) + a_dx * (p1.y - p3.y)) / (-b_dx * a_dy + a_dx * b_dy);\n const t = (+b_dx * (p1.y - p3.y) - b_dy * (p1.x - p3.x)) / (-b_dx * a_dy + a_dx * b_dy);\n return s >= 0 && s <= 1 && t >= 0 && t <= 1\n ? {\n x: normalizeFloat(p1.x + t * a_dx),\n y: normalizeFloat(p1.y + t * a_dy),\n }\n : false;\n};\n\nfunction checkSegmentsIntersect(p1: Point2d, p2: Point2d, p3: Point2d, p4: Point2d, res: Point2d[]): void {\n const r = lineSegmentsIntersect(p1, p2, p3, p4);\n if (r) {\n res.push(r);\n }\n}\n\nexport function isInsideRect(p: Point2d, width: number, height: number): boolean {\n return p.x <= width && p.x >= 0 && p.y <= height && p.y >= 0;\n}\n\nexport function getDataForDrawLineWithFixed(p1: Point2d, p2: Point2d, width: number, height: number) {\n const pLU = { x: 0, y: 0 };\n const pRU = { x: width, y: 0 };\n\n const pLB = { x: 0, y: height };\n const pRB = { x: width, y: height };\n\n const intersects: Point2d[] = [];\n\n checkSegmentsIntersect(p1, p2, pLU, pRU, intersects);\n checkSegmentsIntersect(p1, p2, pLU, pLB, intersects);\n checkSegmentsIntersect(p1, p2, pLB, pRB, intersects);\n checkSegmentsIntersect(p1, p2, pRB, pRU, intersects);\n\n let fixedP1: Point2d = null;\n let fixedP2: Point2d = null;\n\n if (intersects.length === 0) {\n fixedP1 = p1;\n fixedP2 = p2;\n } else if (intersects.length === 1) {\n if (isInsideRect(p1, width, height)) {\n fixedP1 = p1;\n fixedP2 = intersects[0];\n } else {\n fixedP1 = intersects[0];\n fixedP2 = p2;\n }\n } else {\n fixedP1 = intersects[0];\n fixedP2 = intersects[1];\n }\n\n const dx = fixedP2.x - fixedP1.x;\n const dy = fixedP2.y - fixedP1.y;\n let angle = (180 * Math.atan(dy / dx)) / Math.PI;\n if (dx < 0) {\n angle -= 180;\n }\n const size = Math.sqrt(Math.pow(dx, 2) + Math.pow(dy, 2));\n return { angle, width: size, p1: fixedP1, p2: fixedP2 };\n}\n\nexport function onSetCallback(element: HTMLElement, cb: () => void): void {\n if (element) {\n element.onclick = cb ? () => cb() : () => {};\n }\n}\n\nexport function onSetSelectivity(element: HTMLElement, enable: boolean): void {\n element.style.pointerEvents = enable ? \"auto\" : \"none\";\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport * as utils from \"./MeasureUtils\";\n\nexport class MeasureLineItem {\n protected htmlElemStartPoint: HTMLElement;\n protected htmlElemEndPoint: HTMLElement;\n protected htmlElemLine: HTMLElement;\n protected htmlElemTitle: HTMLElement;\n protected startPoint: number[];\n protected endPoint: number[];\n protected unit: string;\n protected scale: number;\n protected size: number;\n protected style: CSSStyleDeclaration;\n protected viewer: any;\n protected moduleInstance: any;\n protected targetElement: HTMLElement;\n protected isFinishDraw: boolean;\n\n public lineThickness: number;\n\n constructor(targetElement: HTMLElement, viewer: any, moduleInstance: any) {\n this.htmlElemStartPoint = null;\n this.htmlElemEndPoint = null;\n this.htmlElemLine = null;\n this.htmlElemTitle = null;\n\n this.startPoint = null;\n this.endPoint = null;\n\n this.unit = \"\";\n this.scale = 1.0;\n this.size = 10.0;\n this.lineThickness = 2;\n\n this.style = {\n border: \"2px solid #FFFFFF\",\n background: \"#009bff\",\n color: \"white\",\n boxShadow: \"0 0 10px rgba(0,0,0,0.5)\",\n } as CSSStyleDeclaration;\n\n this.htmlElemStartPoint = utils.createHtmlElementIfNeed(this.htmlElemStartPoint, targetElement, \"ruler-start\");\n this.htmlElemEndPoint = utils.createHtmlElementIfNeed(this.htmlElemEndPoint, targetElement, \"ruler-end\");\n this.htmlElemLine = utils.createHtmlElementIfNeed(this.htmlElemLine, targetElement, \"ruler-line\");\n this.htmlElemTitle = utils.createHtmlElementIfNeed(this.htmlElemTitle, targetElement, \"ruler-value\");\n\n this.viewer = viewer;\n this.moduleInstance = moduleInstance;\n this.targetElement = targetElement;\n this.isFinishDraw = false;\n }\n\n drawMeasureLine(): void {\n const pointSize = this.size;\n const rect = this.moduleInstance.canvas.getBoundingClientRect();\n\n // draw start point\n if (this.startPoint) {\n this.htmlElemStartPoint = utils.createHtmlElementIfNeed(\n this.htmlElemStartPoint,\n this.targetElement,\n \"ruler-start\"\n );\n\n const pScreenStart = utils.worldToScreen(this.startPoint, this.moduleInstance, this.viewer);\n if (utils.isInsideRect(pScreenStart, rect.width, rect.height)) {\n this.htmlElemStartPoint.style.display = \"block\";\n this.htmlElemStartPoint.style.cursor = \"pointer\";\n this.htmlElemStartPoint.style.position = \"absolute\";\n this.htmlElemStartPoint.style.top = `${pScreenStart.y - pointSize / 2}px`;\n this.htmlElemStartPoint.style.left = `${pScreenStart.x - pointSize / 2}px`;\n this.htmlElemStartPoint.style.borderRadius = `${pointSize}px`;\n this.htmlElemStartPoint.style.border = this.style.border;\n this.htmlElemStartPoint.style.background = this.style.background;\n this.htmlElemStartPoint.style.zIndex = \"2\";\n this.htmlElemStartPoint.style.width = `${pointSize}px`;\n this.htmlElemStartPoint.style.height = `${pointSize}px`;\n this.htmlElemStartPoint.style.boxShadow = this.style.boxShadow;\n } else {\n this.htmlElemStartPoint.style.display = \"none\";\n }\n }\n\n // draw end point\n if (this.endPoint && this.isFinishDraw) {\n this.htmlElemEndPoint = utils.createHtmlElementIfNeed(this.htmlElemEndPoint, this.targetElement, \"ruler-end\");\n\n const pScreenEnd = utils.worldToScreen(this.endPoint, this.moduleInstance, this.viewer);\n\n if (utils.isInsideRect(pScreenEnd, rect.width, rect.height)) {\n this.htmlElemEndPoint.style.display = \"block\";\n this.htmlElemEndPoint.style.cursor = \"pointer\";\n this.htmlElemEndPoint.style.position = \"absolute\";\n this.htmlElemEndPoint.style.top = `${pScreenEnd.y - pointSize / 2}px`;\n this.htmlElemEndPoint.style.left = `${pScreenEnd.x - pointSize / 2}px`;\n this.htmlElemEndPoint.style.borderRadius = `${pointSize}px`;\n this.htmlElemEndPoint.style.border = this.style.border;\n this.htmlElemEndPoint.style.background = this.style.background;\n this.htmlElemEndPoint.style.zIndex = \"2\";\n this.htmlElemEndPoint.style.width = `${pointSize}px`;\n this.htmlElemEndPoint.style.height = `${pointSize}px`;\n this.htmlElemEndPoint.style.boxShadow = this.style.boxShadow;\n } else {\n this.htmlElemEndPoint.style.display = \"none\";\n }\n }\n\n if (this.endPoint && this.startPoint) {\n const point1 = utils.worldToScreen(this.startPoint, this.moduleInstance, this.viewer);\n const point2 = utils.worldToScreen(this.endPoint, this.moduleInstance, this.viewer);\n\n const { p1, p2, angle, width } = utils.getDataForDrawLineWithFixed(point1, point2, rect.width, rect.height);\n\n const dx = p2.x - p1.x;\n const dy = p2.y - p1.y;\n\n const height = this.lineThickness;\n if (utils.isInsideRect(p1, rect.width, rect.height) && utils.isInsideRect(p2, rect.width, rect.height)) {\n this.htmlElemLine = utils.createHtmlElementIfNeed(this.htmlElemLine, this.targetElement, \"ruler-line\");\n this.htmlElemLine.style.display = \"block\";\n this.htmlElemLine.style.cursor = \"pointer\";\n this.htmlElemLine.style.position = \"absolute\";\n this.htmlElemLine.style.top = `${p1.y}px`;\n this.htmlElemLine.style.left = `${p1.x}px`;\n this.htmlElemLine.style.width = `${width}px`;\n this.htmlElemLine.style.transform = `rotate(${angle}deg)`;\n this.htmlElemLine.style.transformOrigin = `0px ${height / 2}px`;\n this.htmlElemLine.style.boxShadow = this.style.boxShadow;\n this.htmlElemLine.style.border = \"none\";\n this.htmlElemLine.style.background = this.style.background;\n this.htmlElemLine.style.zIndex = \"1\";\n this.htmlElemLine.style.height = `${height}px`;\n\n const distance = `${this.getDistance()} ${this.unit}`;\n\n const pX = p1.x + dx / 2;\n const pY = p1.y + dy / 2;\n\n const widthTitle = distance.length * 10;\n\n this.htmlElemTitle = utils.createHtmlElementIfNeed(this.htmlElemTitle, this.targetElement, \"ruler-value\");\n this.htmlElemTitle.style.display = \"block\";\n this.htmlElemTitle.style.cursor = \"pointer\";\n this.htmlElemTitle.style.font = \"10px\";\n this.htmlElemTitle.style.color = \"white\";\n this.htmlElemTitle.style.position = \"Absolute\";\n this.htmlElemTitle.style.top = `${pY}px`;\n this.htmlElemTitle.style.left = `${pX - widthTitle / 2}px`;\n this.htmlElemTitle.style.width = `${widthTitle}px`;\n this.htmlElemTitle.style.transformOrigin = \"0px 0px\";\n this.htmlElemTitle.style.borderRadius = \"5px\";\n this.htmlElemTitle.style.boxShadow = this.style.boxShadow;\n this.htmlElemTitle.style.border = \"none\";\n this.htmlElemTitle.style.background = this.style.background;\n this.htmlElemTitle.style.zIndex = \"3\";\n this.htmlElemTitle.style.padding = \"2px\";\n this.htmlElemTitle.style.textAlign = \"center\";\n this.htmlElemTitle.innerHTML = `${distance}`;\n } else {\n this.htmlElemLine.style.display = \"none\";\n this.htmlElemTitle.style.display = \"none\";\n }\n }\n }\n\n getDistance(): number {\n return utils.getDistance(this.startPoint, this.endPoint, this.moduleInstance) / this.scale;\n }\n\n setStartPoint(gePoint: number[]): void {\n this.startPoint = gePoint;\n this.drawMeasureLine();\n }\n\n setEndPoint(gePoint: number[], isFinish: boolean): void {\n this.isFinishDraw = isFinish === undefined ? true : isFinish;\n this.endPoint = gePoint;\n this.drawMeasureLine();\n }\n\n update(): void {\n this.drawMeasureLine();\n }\n\n setSize(size: number): void {\n this.size = size;\n this.drawMeasureLine();\n }\n\n clear(): void {\n this.endPoint = null;\n this.startPoint = null;\n this.htmlElemStartPoint = utils.destroyHtmlElement(this.htmlElemStartPoint, this.targetElement);\n this.htmlElemEndPoint = utils.destroyHtmlElement(this.htmlElemEndPoint, this.targetElement);\n this.htmlElemLine = utils.destroyHtmlElement(this.htmlElemLine, this.targetElement);\n this.htmlElemTitle = utils.destroyHtmlElement(this.htmlElemTitle, this.targetElement);\n }\n\n setUnit(unit: string): void {\n this.unit = unit;\n this.drawMeasureLine();\n }\n\n setConversionFactor(scale: number): void {\n this.scale = scale;\n this.drawMeasureLine();\n }\n\n setStyle(style: CSSStyleDeclaration): void {\n this.style = style;\n this.drawMeasureLine();\n }\n\n setSelectionReactor(reactor: any): void {\n utils.onSetCallback(this.htmlElemStartPoint, reactor ? reactor.onStartPoint : null);\n utils.onSetCallback(this.htmlElemEndPoint, reactor ? reactor.onEndPoint : null);\n utils.onSetCallback(this.htmlElemTitle, reactor ? reactor.onTitle : null);\n }\n\n setSelectability(enable: boolean): void {\n utils.onSetSelectivity(this.htmlElemStartPoint, enable);\n utils.onSetSelectivity(this.htmlElemEndPoint, enable);\n utils.onSetSelectivity(this.htmlElemLine, enable);\n utils.onSetSelectivity(this.htmlElemTitle, enable);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Viewer } from \"../../Viewer\";\nimport { OdBaseDragger } from \"../Common/OdBaseDragger\";\nimport { MeasureLineItem } from \"./MeasureLineItem\";\n\nfunction renameUnit(table, unit) {\n return table[unit] || unit;\n}\n\nexport class MeasureLineDragger extends OdBaseDragger {\n protected lineThickness: number;\n protected gripingRadius: number;\n protected firstPoint: number[];\n protected secondPoint: number[];\n protected renameUnitTable: any;\n protected items: MeasureLineItem[];\n protected m_overlayElement: HTMLElement;\n protected previewMeasureLine: MeasureLineItem;\n\n constructor(subject: Viewer) {\n super(subject);\n this.lineThickness = 2;\n this.press = false;\n this.gripingRadius = 5.0;\n this.firstPoint = null;\n this.secondPoint = null;\n\n this.renameUnitTable = {\n Millimeters: \"mm\",\n Centimeters: \"cm\",\n Meters: \"m\",\n Feet: \"ft\",\n Inches: \"in\",\n Yards: \"yd\",\n Kilometers: \"km\",\n Miles: \"mi\",\n Micrometers: \"µm\",\n MicroInches: \"µin\",\n Undefined: \" \",\n };\n\n this.items = [];\n\n this.canvasEvents.push(\"resize\");\n }\n\n override initialize(): void {\n super.initialize();\n\n this.m_overlayElement = document.createElement(\"div\");\n this.m_overlayElement.style.background = \"rgba(0,0,0,0)\";\n this.m_overlayElement.style.position = \"fixed\";\n this.m_overlayElement.style.zIndex = \"1\";\n this.m_overlayElement.style.pointerEvents = \"none\";\n document.body.appendChild(this.m_overlayElement);\n\n this.resize();\n }\n\n override dispose(): void {\n super.dispose();\n this.m_overlayElement.remove();\n }\n\n override updatePreview(): void {\n this.items.forEach((item) => item.update());\n }\n\n resize(): void {\n const rect = this.m_module.canvas.getBoundingClientRect();\n\n this.m_overlayElement.style.top = `${rect.top}px`;\n this.m_overlayElement.style.left = `${rect.left}px`;\n this.m_overlayElement.style.width = `${rect.width}px`;\n this.m_overlayElement.style.height = `${rect.height}px`;\n }\n\n getSnapPointRadius(): number {\n const view = this.getViewer().activeView;\n const corners = view.viewDcCorners();\n\n const pt1 = corners.lowerLeft;\n const pt2 = corners.upperRight;\n\n pt2[0] -= pt1[0];\n pt2[1] -= pt1[1];\n\n return Math.min(pt2[0], pt2[1]) / 120;\n }\n\n override drag(x: number, y: number): void {\n this.createNewMeasureIfNeed();\n const point = this.getViewer().getSnapPoint(x, y, this.gripingRadius);\n\n if (this.isDragging) {\n if (point) {\n if (this.firstPoint) {\n this.secondPoint = point;\n this.previewMeasureLine.setStartPoint(this.firstPoint);\n this.previewMeasureLine.setEndPoint(this.secondPoint, true);\n } else {\n this.firstPoint = point;\n this.previewMeasureLine.setStartPoint(this.firstPoint);\n }\n } else {\n this.secondPoint = null;\n this.previewMeasureLine.clear();\n this.previewMeasureLine.setStartPoint(this.firstPoint);\n this.previewMeasureLine.setEndPoint(this.getViewer().screenToWorld(x, y), false);\n }\n } else {\n if (point) {\n this.previewMeasureLine.setStartPoint(point);\n } else {\n this.previewMeasureLine.clear();\n }\n }\n }\n\n override end(): void {\n if (this.firstPoint && this.secondPoint) {\n const newLineMeasure = this.createMeasureLine();\n newLineMeasure.setStartPoint(this.firstPoint);\n newLineMeasure.setEndPoint(this.secondPoint, true);\n }\n this.firstPoint = null;\n this.secondPoint = null;\n this.previewMeasureLine.clear();\n }\n\n createNewMeasureIfNeed(): void {\n if (!this.previewMeasureLine) {\n this.previewMeasureLine = this.createMeasureLine();\n }\n }\n\n createMeasureLine(): MeasureLineItem {\n const viewer = this.m_module.getViewer();\n const item = new MeasureLineItem(this.m_overlayElement, viewer, this.m_module);\n item.lineThickness = this.lineThickness || item.lineThickness;\n item.setUnit(renameUnit(this.renameUnitTable, viewer.getUnit()));\n this.items.push(item);\n return item;\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Viewer } from \"../Viewer\";\nimport { Point2d, Vector3 } from \"./Common/Geometry\";\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\n\nconst FocalLengthConst = 42.0;\n\nconst calcFocalLength = (lensLength: number, fieldWidth: number, fieldHeight: number): number => {\n return (lensLength / FocalLengthConst) * Math.sqrt(fieldWidth * fieldWidth + fieldHeight * fieldHeight);\n};\n\nexport class OdaWalkDragger extends OdBaseDragger {\n protected lastCoord: Point2d;\n protected speed: number;\n protected delta: number;\n protected keyPressMap: Set<string>;\n protected oldWCSEnableValue: boolean;\n protected viewParams: any;\n protected cameraId: any;\n protected cameraWalker: any;\n protected viewer: any;\n protected multiplier: number;\n protected lastFrameTS: number;\n protected animationId: any;\n protected deltaAngle: number;\n protected enableZoomWheelPreviousValue: boolean;\n\n constructor(subject: Viewer) {\n super(subject);\n this.viewer = undefined;\n\n this.multiplier = 5;\n this.speed = 1;\n\n this.keyPressMap = new Set();\n this.keydown = this.keydown.bind(this);\n this.keyup = this.keyup.bind(this);\n\n this.lastFrameTS = 0;\n this.animationId = undefined;\n this.processMovement = this.processMovement.bind(this);\n\n this.deltaAngle = Math.PI / 3600;\n this.autoSelect = true;\n }\n\n override initialize() {\n super.initialize();\n this.viewer = this.getViewer();\n\n window.addEventListener(\"keydown\", this.keydown, false);\n window.addEventListener(\"keyup\", this.keyup, false);\n\n this.oldWCSEnableValue = this.viewer.getEnableWCS();\n this.viewer.setEnableWCS(false);\n\n const view = this.viewer.activeView;\n const maxDimension = this.getMaxDimension(view);\n this.speed = maxDimension / 30000;\n\n this.subject.emitEvent({ type: \"walkstart\" });\n\n this.viewParams = this.getViewParams();\n //this.viewParams.lensLength = view.lensLength;\n\n this.setViewParams(this.viewParams);\n //view.lensLength = (view.lensLength * 42) / 120;\n\n const model = this.viewer.getActiveModel();\n this.cameraId = model.appendCamera(\"Camera0\");\n this.setupCamera(view);\n model.delete();\n\n //pCamera.setAdjustLensLength(true);\n this.cameraWalker = new this.m_module.OdTvCameraWalker();\n this.cameraWalker.setCamera(this.cameraId);\n\n this.subject.update();\n this.enableZoomWheelPreviousValue = this.subject.options.enableZoomWheel;\n this.subject.options.enableZoomWheel = false;\n }\n\n override dispose() {\n this.oldWCSEnableValue =\n this.oldWCSEnableValue !== undefined ? this.oldWCSEnableValue : this.subject.options.showWCS;\n this.viewer.setEnableWCS(this.oldWCSEnableValue);\n\n super.dispose();\n\n this.keyPressMap.clear();\n\n window.removeEventListener(\"keydown\", this.keydown);\n window.removeEventListener(\"keyup\", this.keyup);\n\n if (this.animationId) {\n window.cancelAnimationFrame(this.animationId);\n this.animationId = undefined;\n }\n\n if (this.cameraId) {\n const model = this.viewer.getActiveModel();\n model.removeEntity(this.cameraId);\n model.delete();\n this.cameraWalker?.delete();\n }\n\n if (this.viewParams) {\n this.setViewParams(this.viewParams);\n\n const avp = this.viewer.activeView;\n //avp.lensLength = this.viewParams.lensLength;\n avp.delete();\n }\n\n this.subject.update();\n this.subject.options.enableZoomWheel = this.enableZoomWheelPreviousValue;\n }\n\n keydown(ev) {\n switch (ev.code) {\n case \"NumpadSubtract\":\n case \"Minus\":\n if (this.multiplier > 1) {\n this.multiplier = this.multiplier - 1;\n this.subject.emitEvent({ type: \"walkspeedchange\", data: this.multiplier });\n }\n break;\n case \"NumpadAdd\":\n case \"Equal\":\n if (this.multiplier < 10) {\n this.multiplier = this.multiplier + 1;\n this.subject.emitEvent({ type: \"walkspeedchange\", data: this.multiplier });\n }\n break;\n case \"KeyW\":\n case \"KeyA\":\n case \"KeyS\":\n case \"KeyD\":\n case \"KeyQ\":\n case \"KeyE\":\n this.keyPressMap.add(ev.code);\n if (!this.animationId) this.processMovement(0);\n break;\n }\n }\n\n keyup(ev) {\n this.keyPressMap.delete(ev.code);\n if (this.keyPressMap.size < 1 && this.animationId) {\n window.cancelAnimationFrame(this.animationId);\n this.animationId = undefined;\n this.lastFrameTS = 0;\n }\n }\n\n processMovement(timestamp) {\n this.animationId = requestAnimationFrame(this.processMovement);\n\n if (this.lastFrameTS !== 0) {\n const deltaTS = timestamp - this.lastFrameTS;\n const currentDelta = this.multiplier * deltaTS * this.speed;\n\n for (const keyCode of this.keyPressMap) {\n switch (keyCode) {\n case \"KeyW\":\n this.cameraWalker.moveForward(currentDelta);\n break;\n case \"KeyS\":\n this.cameraWalker.moveBackward(currentDelta);\n break;\n case \"KeyA\":\n this.cameraWalker.moveLeft(currentDelta);\n break;\n case \"KeyD\":\n this.cameraWalker.moveRight(currentDelta);\n break;\n case \"KeyQ\":\n this.cameraWalker.moveUp(currentDelta);\n break;\n case \"KeyE\":\n this.cameraWalker.moveDown(currentDelta);\n break;\n }\n }\n this.subject.update();\n }\n\n this.lastFrameTS = timestamp;\n }\n\n override drag(x, y, dltX, dltY) {\n if (this.cameraId && this.isDragging) {\n if (dltX !== 0.0) this.turnLeft(-dltX * this.deltaAngle);\n if (dltY !== 0.0) this.cameraWalker.turnDown(dltY * this.deltaAngle);\n this.subject.update();\n }\n }\n\n turnLeft(angle) {\n //TODO: migrate to VisualizeJS\n const pCamera = this.cameraWalker.camera().openObjectAsCamera();\n const dir = this.toVector(pCamera.direction());\n const up = this.toVector(pCamera.upVector());\n\n const pos = pCamera.position();\n\n const rotMatrix = this.createMatrix3d();\n const zAxisVector: Vector3 = [0, 0, 1];\n rotMatrix.setToRotation(angle, zAxisVector, pos);\n dir.transformBy(rotMatrix);\n up.transformBy(rotMatrix);\n pCamera.setupCameraByDirection(pos, dir.toArray(), up.toArray());\n pCamera.delete();\n }\n\n setupCamera(view) {\n const pCamera = this.cameraId.openObjectAsCamera();\n const target = view.viewTarget;\n\n pCamera.setDisplayGlyph(false);\n pCamera.setDisplayTarget(false);\n pCamera.setAutoAdjust(true);\n pCamera.setupCamera(view.viewPosition, target, view.upVector);\n pCamera.setNearClip(false, 1.0);\n pCamera.setFarClip(false, 0);\n pCamera.setViewParameters(view.viewFieldWidth, view.viewFieldHeight, true);\n\n const focalL = calcFocalLength(view.lensLength, view.viewFieldWidth, view.viewFieldHeight);\n\n const pTarget = this.toPoint(view.viewTarget);\n const viewDir = this.toPoint(view.viewPosition);\n const viewDirSub = viewDir.sub(pTarget);\n const viewDirVec = viewDirSub.asVector();\n const viewDirVecNormal = viewDirVec.normalize();\n\n const geViewDir = this.toGeVector(viewDirVecNormal);\n const newGeViewDir = [geViewDir[0] * focalL, geViewDir[1] * focalL, geViewDir[2] * focalL];\n\n const pTarget2 = this.toPoint(view.viewTarget);\n const newGeViewDirPt = this.toPoint(newGeViewDir);\n\n const newPos = pTarget2.add(newGeViewDirPt);\n pCamera.setupCamera(this.toGePoint(newPos), view.viewTarget, view.upVector);\n\n this.deleteAll([pTarget, viewDir, viewDirSub, viewDirVec, viewDirVecNormal, pTarget2, newGeViewDirPt, newPos]);\n\n pCamera.assignView(view);\n pCamera.delete();\n }\n\n getMaxDimension(view) {\n const [xmax, ymax, zmax] = view.sceneExtents.max();\n const [xmin, ymin, zmin] = view.sceneExtents.min();\n const volume = [xmax - xmin, ymax - ymin, zmax - zmin];\n return Math.max(...volume);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Viewer } from \"../Viewer\";\nimport { Point2d, Point3d } from \"./Common/Geometry\";\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\n\nexport class OdBaseCuttingPlaneDragger extends OdBaseDragger {\n protected m_size_x: number;\n protected m_size_y: number;\n protected m_size_z: number;\n protected m_center: Point3d;\n protected m_normal: number[];\n protected index: number;\n protected m_model: any;\n protected m_entity: any;\n protected planePreview: any;\n protected m_last: Point3d;\n protected m_click: Point2d;\n\n constructor(subject: Viewer) {\n super(subject);\n this.press = false;\n\n //this.getViewer().getMarkupController().clear();\n\n const ext = this.getViewer().getActiveExtents();\n const min = ext.min();\n const max = ext.max();\n\n this.m_size_x = Math.abs(max[0] - min[0]) / 2;\n this.m_size_y = Math.abs(max[1] - min[1]) / 2;\n this.m_size_z = Math.abs(max[2] - min[2]) / 2;\n\n this.m_center = this.toPoint(ext.center());\n this.m_normal = this.createNormal();\n\n const avp = this.getViewer().activeView;\n const plane = this.createPlane();\n plane.set(this.toGePoint(this.m_center), this.m_normal);\n\n avp.addCuttingPlane(plane);\n this.index = avp.numCuttingPlanes() - 1;\n\n const { red, green, blue } = this.subject.options.cuttingPlaneFillColor;\n avp.setEnableCuttingPlaneFill(true, red, green, blue);\n avp.setCuttingPlaneFillPatternEnabled(true, this.m_module.CuttingPlaneFillStyle.kHorizontalBars, 0x0, 0x0, 0x0);\n\n this.m_model = this.getModel();\n this.createPreview();\n\n this.deleteAll([ext, avp, plane]);\n }\n\n override dispose(): void {\n super.dispose();\n\n if (this.m_entity) {\n this.m_model.removeEntity(this.m_entity);\n this.deleteAll([this.m_model, this.m_entity, this.planePreview, this.m_center]);\n this.m_entity = null;\n this.planePreview = null;\n this.subject.update();\n }\n }\n\n createNormal(): number[] {\n return [0, 0, 0];\n }\n\n handleDelta(delta: Point3d): Point3d {\n return delta;\n }\n\n getPlanePreviewCoordinate(): any[] {\n return [];\n }\n\n override start(x: number, y: number): void {\n this.press = true;\n this.m_last = this.screenToWorld(x, y);\n this.m_click = { x, y };\n }\n\n override drag(x: number, y: number): void {\n if (this.press) {\n const point = this.screenToWorld(x, y);\n const delta = this.handleDelta(point.sub(this.m_last));\n\n const oldCenter = this.m_center;\n this.m_center = oldCenter.add(delta);\n\n const oldLast = this.m_last;\n this.m_last = point;\n\n const avp = this.getViewer().activeView;\n const plane = this.createPlane();\n const newPlane = plane.set(this.toGePoint(this.m_center), this.m_normal);\n const newCutting = avp.updateCuttingPlane(this.index, plane);\n\n this.drawPreview();\n\n this.deleteAll([avp, plane, oldCenter, delta, oldLast, newPlane, newCutting]);\n\n const device = this.getViewer().getActiveDevice();\n device.invalidate(device.getSize());\n }\n }\n\n override end(x: number, y: number): void {\n this.press = false;\n if (x === this.m_click.x && y === this.m_click.y) {\n this.m_normal = [this.m_normal[0] * -1, this.m_normal[1] * -1, this.m_normal[2] * -1];\n\n const avp = this.getViewer().activeView;\n const plane = this.createPlane();\n plane.set(this.toGePoint(this.m_center), this.m_normal);\n avp.updateCuttingPlane(this.index, plane);\n\n this.deleteAll([avp, plane, this.m_last]);\n\n const device = this.getViewer().getActiveDevice();\n device.invalidate(device.getSize());\n }\n }\n\n createPreview(): void {\n this.m_entity = this.m_model.appendEntity(\"&CuttingPlanePreview\");\n\n const GeometryTypes = this.m_module.GeometryTypes;\n\n const transparencyDef = new this.m_module.OdTvTransparencyDef();\n const colorDef = new this.m_module.OdTvColorDef(112, 112, 112); //0x53, 0x72, 0xAE\n\n transparencyDef.setValue(0.9);\n\n const entityPtr = this.m_entity.openObject();\n entityPtr.setColor(colorDef, GeometryTypes.kFaces.value);\n\n colorDef.setColor(112, 112, 112); //0xcd, 0xe2, 0xff\n entityPtr.setColor(colorDef, GeometryTypes.kEdges.value);\n\n entityPtr.setLineWeight(5);\n\n entityPtr.setTransparency(transparencyDef, GeometryTypes.kFaces);\n transparencyDef.setValue(1.0);\n entityPtr.setTransparency(transparencyDef, GeometryTypes.kEdges);\n\n this.planePreview = entityPtr.appendPolygon(this.getPlanePreviewCoordinate());\n const polygonPtr = this.planePreview.openAsPolygon();\n polygonPtr.setFilled(true);\n\n this.deleteAll([transparencyDef, colorDef, entityPtr, polygonPtr, GeometryTypes]);\n this.subject.syncOverlay();\n }\n\n drawPreview(): void {\n const polygonPtr = this.planePreview.openAsPolygon();\n polygonPtr.setPoints(this.getPlanePreviewCoordinate());\n this.deleteAll([polygonPtr]);\n this.subject.syncOverlay();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Point3d } from \"./Common/Geometry\";\nimport { OdBaseCuttingPlaneDragger } from \"./OdBaseCuttingPlaneDragger\";\n\nexport class OdCuttingPlaneXAxisDragger extends OdBaseCuttingPlaneDragger {\n override createNormal(): number[] {\n return [1, 0, 0];\n }\n\n override handleDelta(delta: Point3d): Point3d {\n delta.y = 0.0;\n delta.z = 0.0;\n return delta;\n }\n\n override getPlanePreviewCoordinate(): number[] {\n return [\n this.m_center.x,\n this.m_center.y - this.m_size_y,\n this.m_center.z - this.m_size_z,\n this.m_center.x,\n this.m_center.y + this.m_size_y,\n this.m_center.z - this.m_size_z,\n this.m_center.x,\n this.m_center.y + this.m_size_y,\n this.m_center.z + this.m_size_z,\n this.m_center.x,\n this.m_center.y - this.m_size_y,\n this.m_center.z + this.m_size_z,\n ];\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Point3d } from \"./Common/Geometry\";\nimport { OdBaseCuttingPlaneDragger } from \"./OdBaseCuttingPlaneDragger\";\n\nexport class OdCuttingPlaneYAxisDragger extends OdBaseCuttingPlaneDragger {\n override createNormal(): number[] {\n return [0, 1, 0];\n }\n\n override handleDelta(delta: Point3d): Point3d {\n delta.x = 0.0;\n delta.z = 0.0;\n return delta;\n }\n\n override getPlanePreviewCoordinate(): number[] {\n return [\n this.m_center.x - this.m_size_x,\n this.m_center.y,\n this.m_center.z - this.m_size_z,\n this.m_center.x + this.m_size_x,\n this.m_center.y,\n this.m_center.z - this.m_size_z,\n this.m_center.x + this.m_size_x,\n this.m_center.y,\n this.m_center.z + this.m_size_z,\n this.m_center.x - this.m_size_x,\n this.m_center.y,\n this.m_center.z + this.m_size_z,\n ];\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Point3d } from \"./Common/Geometry\";\nimport { OdBaseCuttingPlaneDragger } from \"./OdBaseCuttingPlaneDragger\";\n\nexport class OdCuttingPlaneZAxisDragger extends OdBaseCuttingPlaneDragger {\n override createNormal(): number[] {\n return [0, 0, 1];\n }\n\n override handleDelta(delta: Point3d): Point3d {\n delta.x = 0.0;\n delta.y = 0.0;\n return delta;\n }\n\n override getPlanePreviewCoordinate(): number[] {\n return [\n this.m_center.x - this.m_size_x,\n this.m_center.y - this.m_size_y,\n this.m_center.z,\n this.m_center.x + this.m_size_x,\n this.m_center.y - this.m_size_y,\n this.m_center.z,\n this.m_center.x + this.m_size_x,\n this.m_center.y + this.m_size_y,\n this.m_center.z,\n this.m_center.x - this.m_size_x,\n this.m_center.y + this.m_size_y,\n this.m_center.z,\n ];\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { Point2d, Point3d, Vector3d } from \"../Common/Geometry\";\nimport { Viewer } from \"../../Viewer\";\n\nexport class OrbitAction {\n private _m_module: any;\n private _subject: Viewer;\n private _beginInteractivity: () => void;\n private _endInteractivity: () => void;\n private m_viewCenter: any;\n private m_startPoint: Point2d;\n\n constructor(m_module: any, subject: Viewer, beginInteractivity: () => void, endInteractivity: () => void) {\n this._m_module = m_module;\n this._subject = subject;\n this._beginInteractivity = beginInteractivity;\n this._endInteractivity = endInteractivity;\n }\n\n public beginAction(x: number, y: number) {\n this.m_viewCenter = this.getCenter();\n this.m_startPoint = { x, y };\n\n const view = this.getViewer().activeView;\n\n view.delete();\n this._beginInteractivity();\n }\n\n public action(x: number, y: number) {\n const view = this.getViewer().activeView;\n\n const corners = view.vportRect;\n\n const size = Math.max(Math.abs(corners[2] - corners[0]), Math.abs(corners[3] - corners[1]));\n\n const distX = ((this.m_startPoint.x - x) * Math.PI) / size;\n const distY = ((this.m_startPoint.y - y) * Math.PI) / size;\n\n this.m_startPoint.x = x;\n this.m_startPoint.y = y;\n\n const xOrbit = distY;\n const yOrbit = distX;\n\n const viewParams = {\n position: view.viewPosition,\n target: view.viewTarget,\n upVector: view.upVector,\n viewFieldWidth: view.viewFieldWidth,\n viewFieldHeight: view.viewFieldHeight,\n perspective: view.perspective,\n };\n\n view.delete();\n\n const sideVector = this.getSideVector(viewParams);\n\n if (xOrbit !== 0.0) {\n this.calculateXOrbit(viewParams, -xOrbit, sideVector);\n }\n\n if (yOrbit !== 0.0) {\n this.calculateYOrbit(viewParams, yOrbit, sideVector);\n }\n\n sideVector.delete();\n\n const extView = this.getViewer().getActiveTvExtendedView();\n\n extView.setView(\n viewParams.position,\n viewParams.target,\n viewParams.upVector,\n viewParams.viewFieldWidth,\n viewParams.viewFieldHeight,\n viewParams.perspective\n );\n extView.delete();\n\n this._subject.activeDragger()?.updatePreview();\n }\n\n public endAction() {\n this._endInteractivity();\n }\n\n private getSideVector(viewParams: any): any {\n const pUpV = this.toVector(viewParams.upVector);\n const pTarget = this.toPoint(viewParams.target);\n const pPosition = this.toPoint(viewParams.position);\n\n const direct = pTarget.sub(pPosition);\n const vDirect = direct.asVector();\n\n const vCross = pUpV.crossProduct(vDirect);\n const sideVector = vCross.normalize();\n\n this.deleteAll([direct, pUpV, pTarget, pPosition, vDirect, vCross]);\n\n return sideVector;\n }\n\n private calculateXOrbit(viewParams: any, delta: number, sideVector: Vector3d): void {\n {\n const pPoint = this.toPoint(viewParams.position);\n const pCenter = this.toPoint(this.m_viewCenter);\n\n const rotatePoint = pPoint.rotateByBasePoint(delta, sideVector, pCenter);\n viewParams.position = rotatePoint.toArray();\n\n this.deleteAll([pPoint, pCenter, rotatePoint]);\n }\n\n {\n const pTarget = this.toPoint(viewParams.target);\n const pCenter = this.toPoint(this.m_viewCenter);\n\n const rotatePoint = pTarget.rotateByBasePoint(delta, sideVector, pCenter);\n viewParams.target = rotatePoint.toArray();\n\n this.deleteAll([pTarget, pCenter, rotatePoint]);\n }\n\n {\n const pPoint = this.toPoint(viewParams.position);\n const pTarget = this.toPoint(viewParams.target);\n const pCenter = this.toPoint(this.m_viewCenter);\n\n const pUp = pTarget.sub(pPoint);\n const vUp = pUp.asVector();\n\n const crossProduct = vUp.crossProduct(sideVector);\n const crossProductNormal = crossProduct.normalize();\n\n viewParams.upVector = crossProductNormal.toArray();\n\n this.deleteAll([pPoint, pTarget, pCenter, pUp, vUp, crossProduct, crossProductNormal]);\n }\n }\n\n private calculateYOrbit(viewParams: any, delta: number, sideVector: any): void {\n {\n const pPoint = this.toPoint(viewParams.position);\n const pCenter = this.toPoint(this.m_viewCenter);\n\n const zAxis = this.toVector(this._m_module.Vector3d.kZAxis);\n\n const rotatePoint = pPoint.rotateByBasePoint(delta, zAxis, pCenter);\n viewParams.position = rotatePoint.toArray();\n\n this.deleteAll([zAxis, pPoint, pCenter, rotatePoint]);\n }\n\n {\n const pTarget = this.toPoint(viewParams.target);\n const pCenter = this.toPoint(this.m_viewCenter);\n\n const zAxis = this.toVector(this._m_module.Vector3d.kZAxis);\n\n const rotatePoint = pTarget.rotateByBasePoint(delta, zAxis, pCenter);\n viewParams.target = rotatePoint.toArray();\n\n this.deleteAll([zAxis, pTarget, pCenter, rotatePoint]);\n }\n\n {\n const zAxis = this.toVector(this._m_module.Vector3d.kZAxis);\n const pTarget = this.toPoint(viewParams.target);\n const pPoint = this.toPoint(viewParams.position);\n\n const side = sideVector.rotateBy(delta, zAxis);\n\n const pUp = pTarget.sub(pPoint);\n const vUp = pUp.asVector();\n\n const cross = vUp.crossProduct(side);\n const crossNormal = cross.normalize();\n\n viewParams.upVector = crossNormal.toArray();\n\n this.deleteAll([zAxis, pTarget, pPoint, side, pUp, vUp, cross, crossNormal]);\n }\n }\n\n private getCenter(): any {\n const viewer = this.getViewer();\n let center;\n\n const pSet = viewer.getSelected();\n if (!pSet.isNull() && pSet.numItems() !== 0) {\n const itr = pSet.getIterator();\n let ext, entId, extSelected;\n for (; !itr.done(); itr.step()) {\n entId = itr.getEntity();\n ext = entId.getWCSExtents();\n if (extSelected) extSelected.addExt(ext);\n else extSelected = ext;\n }\n center = extSelected.center();\n\n extSelected.delete();\n itr.delete();\n } else {\n center = viewer.getActiveExtents().center();\n }\n\n return center;\n }\n\n private getViewer(): any {\n return this._m_module.getViewer();\n }\n\n private toVector(geVector): Vector3d {\n return this._m_module.Vector3d.createFromArray(geVector);\n }\n\n private toPoint(gePoint: number[]): Point3d {\n return this._m_module.Point3d.createFromArray(gePoint);\n }\n\n private deleteAll(objects): void {\n for (const obj of objects) {\n obj?.delete?.();\n }\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n/* eslint-disable no-unused-vars */\nimport { Viewer } from \"../Viewer\";\nimport { OrbitAction } from \"./Actions/OrbitAction\";\nimport { Point2d } from \"./Common/Geometry\";\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\n\nexport class OdOrbitDragger extends OdBaseDragger {\n private _orbitAction: OrbitAction;\n protected m_viewCenter: any;\n protected m_startPoint: Point2d;\n protected startCameraParams: any;\n\n constructor(subject: Viewer) {\n super(subject);\n this.autoSelect = true;\n this.press = false;\n this._orbitAction = new OrbitAction(this.m_module, this.subject, this.beginInteractivity, this.endInteractivity);\n }\n\n override start(x: number, y: number): void {\n this.press = true;\n this._orbitAction.beginAction(x, y);\n }\n\n setDefaultViewParams(): void {\n const extView = this.getViewer().getActiveTvExtendedView();\n extView.setView(\n this.startCameraParams.position,\n this.startCameraParams.target,\n this.startCameraParams.upVector,\n this.startCameraParams.viewFieldWidth,\n this.startCameraParams.viewFieldHeight,\n this.startCameraParams.perspective\n );\n extView.delete();\n }\n\n override drag(x: number, y: number, dltX: number, dltY: number): void {\n if (this.press) {\n this._orbitAction.action(x, y);\n }\n }\n\n override end(): void {\n this.press = false;\n this._orbitAction.endAction();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { Point2d, Point3d } from \"../Common/Geometry\";\nimport { ViewParams } from \"../Common/OdaGeAction\";\nimport { Viewer } from \"../../Viewer\";\n\nexport class PanAction {\n private _m_module: any;\n private _subject: Viewer;\n private _m_start: Point3d;\n private _deltaScreenPosition: Point2d;\n private _beginInteractivity: () => void;\n private _endInteractivity: () => void;\n private _getViewParams: () => ViewParams;\n private _setViewParams: (params: ViewParams) => void;\n\n constructor(\n m_module: any,\n subject: Viewer,\n beginInteractivity: () => void,\n endInteractivity: () => void,\n getViewParams: () => ViewParams,\n setViewParams: (params: ViewParams) => void\n ) {\n this._m_module = m_module;\n this._subject = subject;\n this._beginInteractivity = beginInteractivity;\n this._endInteractivity = endInteractivity;\n this._getViewParams = getViewParams;\n this._setViewParams = setViewParams;\n }\n\n public beginAction(x: number, y: number) {\n this._m_start = this.screenToWorld(x, y);\n this._deltaScreenPosition = { x, y };\n this._beginInteractivity();\n }\n\n public action(x: number, y: number) {\n const { Vector3d } = this._m_module;\n const params = this._getViewParams();\n const pt = this.screenToWorld(x, y);\n\n const ptSub = this._m_start.sub(pt);\n const delta = ptSub.asVector();\n\n const target = Vector3d.createFromArray(params.target);\n const targetWithDelta = target.add(delta);\n params.target = targetWithDelta.toArray();\n\n const position = Vector3d.createFromArray(params.position);\n const positionWithDelta = position.add(delta);\n params.position = positionWithDelta.toArray();\n\n this._setViewParams(params);\n target.delete();\n\n targetWithDelta.delete();\n position.delete();\n positionWithDelta.delete();\n\n this._subject.activeDragger()?.updatePreview();\n this._subject.emitEvent({\n type: \"pan\",\n x,\n y,\n dX: x - this._deltaScreenPosition.x,\n dY: y - this._deltaScreenPosition.y,\n });\n\n this._deltaScreenPosition = { x, y };\n }\n\n public endAction() {\n this._endInteractivity();\n }\n\n private screenToWorld(x: number, y: number): Point3d {\n return this._m_module.Point3d.createFromArray(this._m_module.getViewer().screenToWorld(x, y));\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n/* eslint-disable no-unused-vars */\nimport { Viewer } from \"../Viewer\";\nimport { PanAction } from \"./Actions/PanAction\";\nimport { Point3d } from \"./Common/Geometry\";\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\n\nexport class OdPanDragger extends OdBaseDragger {\n private _panAction: PanAction;\n protected m_start: Point3d;\n\n constructor(subject: Viewer) {\n super(subject);\n this.autoSelect = true;\n this.press = false;\n this._panAction = new PanAction(\n this.m_module,\n this.subject,\n this.beginInteractivity,\n this.endInteractivity,\n this.getViewParams,\n this.setViewParams\n );\n }\n\n override start(x: number, y: number): void {\n this.press = true;\n this._panAction.beginAction(x, y);\n }\n\n override drag(x: number, y: number, dltX: number, dltY: number): void {\n if (this.press) {\n this._panAction.action(x, y);\n }\n }\n\n override end(x: number, y: number): void {\n this.press = false;\n this._panAction.endAction();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { Viewer } from \"../../Viewer\";\n\nexport class ZoomAction {\n private _m_module: any;\n private _subject: Viewer;\n\n constructor(m_module: any, subject: Viewer) {\n this._m_module = m_module;\n this._subject = subject;\n }\n\n public action(x: number, y: number, zoomFactor: number) {\n const viewer = this._m_module.getViewer();\n viewer.zoomAt(zoomFactor, x, y);\n\n this._subject.activeDragger()?.updatePreview();\n this._subject.emitEvent({\n type: \"zoomat\",\n data: zoomFactor,\n });\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n/* eslint-disable no-unused-vars */\nimport { Viewer } from \"../Viewer\";\nimport { ZoomAction } from \"./Actions/ZoomAction\";\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\n\nexport class OdZoomDragger extends OdBaseDragger {\n private _zoomAction: ZoomAction;\n protected pressX: number;\n protected pressY: number;\n\n constructor(subject: Viewer) {\n super(subject);\n this.autoSelect = true;\n this.press = false;\n this._zoomAction = new ZoomAction(this.m_module, this.subject);\n }\n\n override start(x: number, y: number): void {\n this.press = true;\n this.pressX = x;\n this.pressY = y;\n this.beginInteractivity();\n }\n\n override drag(x: number, y: number, dltX: number, dltY: number): void {\n if (this.press) {\n const ZOOM_SPEED = 0.025;\n const zoomFactor = dltY > 0 ? 1 + ZOOM_SPEED : 1 - ZOOM_SPEED;\n this._zoomAction.action(this.pressX, this.pressY, zoomFactor);\n }\n }\n\n override end(): void {\n this.press = false;\n this.endInteractivity();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { Viewer } from \"../Viewer\";\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\nimport { ZoomAction } from \"./Actions/ZoomAction\";\n\nconst INTERACTIVITY_TIME_OUT = 100;\n\nexport class OdZoomWheelDragger extends OdBaseDragger {\n private _zoomAction: ZoomAction;\n\n private _endInteractivityTimeOutId;\n\n private _isEnableInteractivityMode: boolean;\n\n constructor(subject: Viewer) {\n super(subject);\n\n // ignore all events except \"wheel\" so as not to interfere with other handlers\n this.canvasEvents = [\"wheel\"];\n this._zoomAction = new ZoomAction(this.m_module, this.subject);\n this._endInteractivityTimeOutId = undefined;\n this._isEnableInteractivityMode = false;\n }\n\n wheel(event) {\n if (!this.subject.options.enableZoomWheel) {\n return;\n }\n\n event = event || window.event;\n event.preventDefault();\n\n const zoomReverse = this.subject.options.reverseZoomWheel ? -1 : 1;\n const zoomSpeed = 0.075 * zoomReverse;\n\n const viewer = this.getViewer();\n if (viewer) {\n const zoomFactor = event.deltaY > 0 ? 1 + zoomSpeed : 1 - zoomSpeed;\n\n this._zoomAction.action(\n event.offsetX * window.devicePixelRatio,\n event.offsetY * window.devicePixelRatio,\n zoomFactor\n );\n\n if (!this._isEnableInteractivityMode) {\n this._isEnableInteractivityMode = true;\n this.beginInteractivity();\n }\n\n if (this._endInteractivityTimeOutId) {\n clearTimeout(this._endInteractivityTimeOutId);\n }\n\n if (!this._isEnableInteractivityMode) {\n this._isEnableInteractivityMode = true;\n this.beginInteractivity();\n }\n\n if (this._endInteractivityTimeOutId) {\n clearTimeout(this._endInteractivityTimeOutId);\n }\n\n this.subject.update(true);\n\n this._endInteractivityTimeOutId = setTimeout(() => {\n this._endInteractivityTimeOutId = undefined;\n this.endInteractivity();\n this._isEnableInteractivityMode = false;\n }, INTERACTIVITY_TIME_OUT);\n }\n }\n\n override dispose(): void {\n if (this._endInteractivityTimeOutId) {\n clearTimeout(this._endInteractivityTimeOutId);\n this.endInteractivity();\n this._isEnableInteractivityMode = false;\n }\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Point3d } from \"../Common/Geometry\";\n\nexport class OdSelectionFrame {\n protected m_start: number[];\n protected m_end: number[];\n protected m_model: any;\n protected m_module: any;\n protected m_entity: any;\n protected m_frame: any;\n\n constructor() {\n this.m_start = [0, 0, 0]; // 0\n this.m_end = [0, 0, 0]; // 2\n\n this.m_model = null;\n }\n\n createPoint3d(): Point3d {\n return new this.m_module.Point3d();\n }\n\n init(instance: any, model: any): void {\n this.m_module = instance;\n this.m_model = model;\n }\n\n getViewer() {\n return this.m_module.getViewer();\n }\n\n setValue(value: number[]): void {\n this.m_end = value;\n this.draw();\n }\n\n setStartPoint(point: number[]): void {\n this.m_start = point;\n this.m_end = point;\n this.draw();\n }\n\n toDoubleArray(points: Point3d[]): number[] {\n const p: number[] = [];\n for (let i = 0; i < points.length; i++) {\n p.push(points[i].x);\n p.push(points[i].y);\n p.push(points[i].z);\n }\n return p;\n }\n\n draw(): void {\n const view = this.getViewer().activeView;\n const viewM = view.viewingMatrix;\n\n const points = [];\n points.push(this.m_start);\n points.push(this.createPoint3d());\n points.push(this.m_end);\n points.push(this.createPoint3d());\n\n const p0 = this.createPoint3d();\n p0.set(this.m_start[0], this.m_start[1], this.m_start[2]);\n\n const p2 = this.createPoint3d();\n p2.set(this.m_end[0], this.m_end[1], this.m_end[2]);\n\n p0.transformBy(viewM);\n p2.transformBy(viewM);\n\n points[1].x = p0.x;\n points[3].x = p2.x;\n points[1].y = p2.y;\n points[3].y = p0.y;\n points[1].z = points[3].z = p2.z;\n\n const eyeM = view.eyeToWorldMatrix;\n points[1].transformBy(eyeM);\n points[3].transformBy(eyeM);\n\n if (!this.m_entity) {\n this.m_entity = this.m_model.appendEntity(\"\");\n const entityPtr = this.m_entity.openObject();\n\n entityPtr.setColor(112, 112, 112);\n entityPtr.setLineWeight(2);\n\n this.m_frame = entityPtr.appendPolygon(this.toDoubleArray(points));\n entityPtr.delete();\n } else {\n this.m_frame.openAsPolygon().setPoints(this.toDoubleArray(points));\n }\n }\n\n clear(): void {\n if (this.m_entity) {\n this.m_model.removeEntity(this.m_entity);\n this.m_entity = null;\n }\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n/* eslint-disable no-unused-vars */\n\nimport { Viewer } from \"../../Viewer\";\nimport { OdBaseDragger } from \"../Common/OdBaseDragger\";\nimport { OdSelectionFrame } from \"./OdSelectionFrame\";\n\nexport class OdZoomWindowDragger extends OdBaseDragger {\n protected m_frame: any;\n protected m_minX: number;\n protected m_minY: number;\n protected m_maxX: number;\n protected m_maxY: number;\n\n constructor(subject: Viewer) {\n super(subject);\n this.autoSelect = true;\n this.press = false;\n this.needInputText = false;\n\n this.m_frame = new OdSelectionFrame();\n this.m_frame.init(this.m_module, this.getModel());\n }\n\n override start(x: number, y: number): void {\n this.press = true;\n this.m_minX = x;\n this.m_minY = y;\n\n const startPoint = this.screenToWorld(x, y);\n this.m_frame.setStartPoint(startPoint);\n }\n\n override drag(x: number, y: number, dltX: number, dltY: number): void {\n if (this.press) {\n this.m_maxX = x;\n this.m_maxY = y;\n\n const point = this.screenToWorld(x, y);\n this.m_frame.setValue(point);\n }\n }\n\n override end(x: number, y: number): void {\n this.press = false;\n this.m_maxX = x;\n this.m_maxY = y;\n\n if (this.m_minX !== this.m_maxX && this.m_minY !== this.m_maxY) {\n this.m_frame.clear();\n this.getViewer().zoomWindow(this.m_minX, this.m_minY, this.m_maxX, this.m_maxY);\n }\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n/* eslint-disable no-unused-vars */\nimport { Viewer } from \"../Viewer\";\nimport { Point2d } from \"./Common/Geometry\";\nimport { ViewParams } from \"./Common/OdaGeAction\";\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\n\nexport class OrbitAroundBuildingDragger extends OdBaseDragger {\n protected maxPolarAngle: number;\n protected minPolarAngle: number;\n protected m_viewCenter: any;\n protected m_startPoint: Point2d;\n protected startCameraParams: ViewParams;\n protected m_delta: number;\n\n constructor(viewer: Viewer) {\n super(viewer);\n this.autoSelect = true;\n this.press = false;\n this.maxPolarAngle = Math.PI / 2;\n this.minPolarAngle = 0; // radians\n }\n\n override start(x: number, y: number): void {\n this.press = true;\n\n this.m_viewCenter = this.getCenter();\n this.m_startPoint = { x, y };\n\n const view = this.getViewer().activeView;\n\n this.startCameraParams = this.getViewParams();\n\n const corners = view.vportRect;\n\n this.m_delta = Math.max(corners[1] - corners[0], corners[2] - corners[3]);\n\n this.beginInteractivity();\n }\n\n setDefaultViewParams(): void {\n this.setViewParams(this.startCameraParams);\n }\n\n override drag(x: number, y: number, dltX: number, dltY: number): void {\n if (this.press) {\n let dX = x - this.m_startPoint.x;\n let dY = y - this.m_startPoint.y;\n\n dX *= Math.PI / this.m_delta;\n dY *= Math.PI / this.m_delta;\n\n this.setDefaultViewParams();\n\n const { Vector3d, Matrix3d } = this.m_module;\n\n const target = Vector3d.createFromArray(this.startCameraParams.target);\n const offset = Vector3d.createFromArray(this.startCameraParams.position).sub(target);\n const dir = offset.normalize();\n\n const zMatrix = new Matrix3d();\n zMatrix.setToIdentity();\n const xMatrix = new Matrix3d();\n xMatrix.setToIdentity();\n\n // ---- restore start rotation ----\n\n const yAxis = Vector3d.createFromArray([dir.x, dir.y, dir.z]);\n const zAxis = Vector3d.createFromArray(this.startCameraParams.upVector);\n const xAxis = yAxis.crossProduct(zAxis);\n\n // ----------- zAxis rotation restore -----------\n let xyDir = Vector3d.createFromArray([yAxis.x, yAxis.y, 0]);\n\n if (xyDir.length() <= 0.00001) {\n xyDir.set(-xAxis.y, xAxis.x, 0);\n } else {\n xyDir = xyDir.normalize();\n }\n const xyAngle =\n Math.sign(xyDir.dotProduct(Vector3d.createFromArray([-1, 0, 0]))) *\n xyDir.angleTo(Vector3d.createFromArray([0, 1, 0]));\n dX -= xyAngle;\n // ----------- zAxis rotation restore -----------\n\n // ----------- xAxis rotation restore -----------\n let yzDir = Vector3d.createFromArray([dir.x, dir.y, 0]);\n let yzAngle = 0;\n if (yzDir.length() <= 0.00001) {\n yzAngle = (-dir.z * Math.PI) / 2;\n } else {\n yzDir = yzDir.normalize();\n yzAngle = -yzDir.angleTo(dir);\n }\n dY -= yzAngle;\n // ----------- xAxis rotation restore -----------\n\n // ---- restore start rotation ----\n\n zMatrix.setToRotation(-dX, [0, 0, 1], [0, 0, 0]);\n\n const xAngle = Math.max(this.minPolarAngle, Math.min(this.maxPolarAngle, dY));\n xMatrix.setToRotation(xAngle, [1, 0, 0], [0, 0, 0]);\n\n const endMatrix = zMatrix.postMultBy(xMatrix);\n\n let pos = Vector3d.createFromArray([0, 1, 0]).transformBy(endMatrix);\n const up = Vector3d.createFromArray([0, 0, 1]).transformBy(endMatrix);\n\n pos.setLength(offset.length());\n pos = target.add(pos);\n\n const current = this.getViewParams();\n\n current.position = pos.toArray();\n current.upVector = up.toArray();\n\n this.setViewParams(current);\n }\n }\n\n override end(): void {\n this.press = false;\n this.endInteractivity();\n }\n\n getCenter(): any {\n const viewer = this.getViewer();\n\n let ext = viewer.getActiveExtents();\n\n const pSet = viewer.getSelected();\n if (!pSet.isNull() && pSet.numItems() !== 0) {\n const itr = pSet.getIterator();\n const entId = itr.getEntity();\n\n if (entId.getType() === 1) {\n const obj = entId.openObject();\n\n ext.delete();\n ext = obj.getExtents();\n\n obj.delete();\n } else if (entId.getType() === 2) {\n const obj = entId.openObjectAsInsert();\n const extTuple = obj.getExtents();\n\n ext.delete();\n ext = extTuple.ext;\n\n extTuple.delete();\n obj.delete();\n }\n\n itr.delete();\n }\n\n const center = ext.center();\n\n ext.delete();\n return center;\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { Viewer } from \"../../Viewer\";\nimport { OrbitAction } from \"../Actions/OrbitAction\";\nimport { PanAction } from \"../Actions/PanAction\";\nimport { ZoomAction } from \"../Actions/ZoomAction\";\nimport { Point2d } from \"./Geometry\";\nimport { OdBaseDragger } from \"./OdBaseDragger\";\n\nexport enum GestureAction {\n None,\n Orbit,\n Pan,\n Zoom,\n}\n\nexport class GestureManager extends OdBaseDragger {\n private _previousEvents = new Map<number, PointerEvent>();\n private _currentEvents = new Map<number, PointerEvent>();\n private _lastGestureAction = GestureAction.None;\n private _orbitAction: OrbitAction;\n private _panAction: PanAction;\n private _zoomAction: ZoomAction;\n\n private _initialDistance: number;\n private readonly _maxInitialDistanceDifference = 30 * window.devicePixelRatio;\n\n private _isSingleTouchEnabled = false;\n\n public get isSingleTouchEnabled(): boolean {\n return this._isSingleTouchEnabled;\n }\n\n public set isSingleTouchEnabled(value: boolean) {\n this._isSingleTouchEnabled = value;\n }\n\n public constructor(subject: Viewer) {\n super(subject);\n\n this._orbitAction = new OrbitAction(this.m_module, this.subject, this.beginInteractivity, this.endInteractivity);\n this._panAction = new PanAction(\n this.m_module,\n this.subject,\n this.beginInteractivity,\n this.endInteractivity,\n this.getViewParams,\n this.setViewParams\n );\n this._zoomAction = new ZoomAction(this.m_module, this.subject);\n }\n\n private getMiddlePoint(events: Map<number, PointerEvent>): Point2d {\n if (events.size !== 2) {\n return undefined;\n }\n\n const keys = this.getKeys(events);\n const point0 = this.relativeCoords(events.get(keys[0]));\n const point1 = this.relativeCoords(events.get(keys[1]));\n\n return {\n x: Math.floor((point0.x + point1.x) / 2),\n y: Math.floor((point0.y + point1.y) / 2),\n };\n }\n\n private getFirstPoint(events: Map<number, PointerEvent>): Point2d {\n if (events.size < 1) {\n return undefined;\n }\n\n const keys = this.getKeys(events);\n return this.relativeCoords(events.get(keys[0]));\n }\n\n private getDistance(events: Map<number, PointerEvent>): number {\n if (events.size !== 2) {\n return -1;\n }\n\n const keys = this.getKeys(events);\n const point0 = this.relativeCoords(events.get(keys[0]));\n const point1 = this.relativeCoords(events.get(keys[1]));\n\n return Math.hypot(point0.x - point1.x, point0.y - point1.y);\n }\n\n private updateEvent(event: PointerEvent) {\n const eventNotInCurrentEvents = !this._currentEvents.get(event.pointerId);\n if (eventNotInCurrentEvents && this._currentEvents.size === 2) {\n return;\n }\n\n const previousEvent = this._currentEvents.get(event.pointerId);\n if (previousEvent) {\n this._previousEvents.set(previousEvent.pointerId, previousEvent);\n }\n\n this._currentEvents.set(event.pointerId, event);\n\n if (eventNotInCurrentEvents) {\n this._initialDistance = this.getDistance(this._currentEvents);\n }\n }\n\n private removeEvent(event: PointerEvent) {\n this._currentEvents.delete(event.pointerId);\n this._previousEvents.delete(event.pointerId);\n\n if (this._currentEvents.size < 2) {\n this._initialDistance = -1;\n }\n }\n\n private getKeys(map: Map<number, PointerEvent>): number[] {\n return Array.from(map.keys());\n }\n\n private analyzeGesture() {\n if (this._currentEvents.size === 2) {\n const currentDistance = this.getDistance(this._currentEvents);\n const previousDistance = this.getDistance(this._previousEvents);\n\n const currentDistanceEqualsInitialDistance =\n Math.abs(this._initialDistance - currentDistance) <= this._maxInitialDistanceDifference;\n if (currentDistanceEqualsInitialDistance) {\n this.executePanAction(this.getMiddlePoint(this._currentEvents));\n } else {\n if (previousDistance !== -1 && currentDistance !== previousDistance) {\n this.executeZoomAction(currentDistance, previousDistance);\n }\n }\n } else if (this._currentEvents.size === 1 && this.isSingleTouchEnabled) {\n this.executeOrbitAction(this.getFirstPoint(this._currentEvents));\n }\n }\n\n private executeZoomAction(currentDistance: number, previousDistance: number) {\n if (this._lastGestureAction !== GestureAction.Zoom) {\n this.executeEndAction(this._lastGestureAction);\n this._lastGestureAction = GestureAction.Zoom;\n OdBaseDragger.isGestureActive = true;\n }\n\n const zoomSpeed = (currentDistance - previousDistance) / 700;\n const zoomFactor = 1 + zoomSpeed;\n const middlePoint = this.getMiddlePoint(this._currentEvents);\n this._zoomAction.action(middlePoint.x, middlePoint.y, zoomFactor);\n this.subject.update();\n }\n\n private executePanAction(currentPoint: Point2d) {\n if (this._lastGestureAction !== GestureAction.Pan) {\n this.executeEndAction(this._lastGestureAction);\n this._lastGestureAction = GestureAction.Pan;\n OdBaseDragger.isGestureActive = true;\n\n this._panAction.beginAction(currentPoint.x, currentPoint.y);\n }\n\n this._panAction.action(currentPoint.x, currentPoint.y);\n this.subject.update();\n }\n\n private executeOrbitAction(currentPoint: Point2d) {\n if (this._lastGestureAction !== GestureAction.Orbit) {\n this.executeEndAction(this._lastGestureAction);\n this._lastGestureAction = GestureAction.Orbit;\n OdBaseDragger.isGestureActive = true;\n\n this._orbitAction.beginAction(currentPoint.x, currentPoint.y);\n }\n\n this._orbitAction.action(currentPoint.x, currentPoint.y);\n this.subject.update();\n }\n\n private executeEndAction(gestureAction: GestureAction) {\n if (gestureAction === GestureAction.Orbit) this._orbitAction.endAction();\n if (gestureAction === GestureAction.Pan) this._panAction.endAction();\n OdBaseDragger.isGestureActive = false;\n }\n\n private needIgnoreEvent(event: PointerEvent): boolean {\n return (\n !this.subject.options.enableZoomWheel || !this.subject.options.enableGestures || !this.eventIsTouchEvent(event)\n );\n }\n\n private eventIsTouchEvent(event: PointerEvent): boolean {\n return event.pointerType === \"touch\" || event.pointerType === \"\";\n }\n\n override pointerdown(event: PointerEvent) {\n if (this.needIgnoreEvent(event)) {\n return;\n }\n\n this.updateEvent(event);\n }\n\n override pointermove(event: PointerEvent) {\n if (this.needIgnoreEvent(event)) {\n return;\n }\n\n this.updateEvent(event);\n this.analyzeGesture();\n }\n\n override pointerup(event: PointerEvent) {\n if (this.needIgnoreEvent(event)) {\n return;\n }\n\n this.removeEvent(event);\n\n if (this._currentEvents.size < 2) {\n this.executeEndAction(this._lastGestureAction);\n OdBaseDragger.isGestureActive = false;\n }\n\n this._lastGestureAction = GestureAction.None;\n }\n\n override pointercancel(event: PointerEvent) {\n if (this.needIgnoreEvent(event)) {\n return;\n }\n\n this.pointerup(event);\n }\n\n pointerleave(event: PointerEvent) {\n if (this.needIgnoreEvent(event)) {\n return;\n }\n\n this.pointerup(event);\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nexport function loadScript(url: string) {\n return new Promise((resolve, reject) => {\n const script = document.createElement(\"script\");\n script.src = url;\n script.async = true;\n script.onload = () => resolve(script);\n script.onerror = () => {\n script.remove();\n reject(new Error(`GET ${url} failed to load script`));\n };\n document.body.appendChild(script);\n });\n}\n\nexport const memoize = (f) => {\n const cache = {};\n return (...args) => {\n const argStr = JSON.stringify(args);\n cache[argStr] = cache[argStr] || f(...args);\n return cache[argStr];\n };\n};\n\nfunction loadVisuazlizeJsScript(url) {\n if (window[\"getVisualizeLibInst\"]) {\n const script = window[\"getVisualizeLibInst\"].script;\n if (script) {\n if (script.src === url) return Promise.resolve(script);\n script.remove();\n }\n delete window[\"getVisualizeLibInst\"];\n }\n return loadScript(url);\n}\n\nexport const loadVisualizeJs = (url: string, onprogress) => {\n return loadVisuazlizeJsScript(url).then((script) => {\n return new Promise((resolve, reject) => {\n const instance = window[\"getVisualizeLibInst\"]({\n urlMemFile: url + \".wasm\",\n TOTAL_MEMORY: 134217728,\n onprogress,\n });\n instance[\"loadWasmError\"] = reject;\n instance.postRun.push(() => {\n window[\"getVisualizeLibInst\"].script = script;\n resolve(instance);\n });\n });\n });\n};\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { Model } from \"@inweb/client\";\nimport { OptionsData } from \"@inweb/viewer-core\";\nimport { Viewer } from \"../Viewer\";\n\nexport class BaseLoader {\n protected viewer: Viewer;\n protected model: Model;\n protected options: OptionsData;\n\n constructor(viewer: Viewer, model: Model, options: OptionsData) {\n this.viewer = viewer;\n this.model = model;\n this.options = options;\n }\n\n async load(): Promise<void> {}\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { BaseLoader } from \"./BaseLoader\";\n\nexport class TCSLoader extends BaseLoader {\n override async load(): Promise<void> {\n if (!this.viewer.visualizeJs) return;\n\n const visLib = this.viewer.visLib();\n const visViewer = visLib.getViewer();\n const abortController = new AbortController();\n\n const listFileForDownload = [this.model.database, ...this.model.geometry];\n const chunksProgress = listFileForDownload.map(() => 0);\n\n const calcProgress = (index, progress) => {\n chunksProgress[index] = progress;\n const fileProgress = chunksProgress.reduce((acc, progress) => (acc += progress)) / (chunksProgress.length || 1);\n this.viewer.emitEvent({ type: \"geometryprogress\", data: fileProgress, model: this.model });\n };\n\n this.viewer._abortController = abortController;\n\n try {\n this.viewer.emitEvent({ type: \"geometrystart\", model: this.model });\n\n for (let i = 0; i < listFileForDownload.length; i++) {\n const chunk = listFileForDownload[i];\n\n const progressCb = (progress) => calcProgress(i, progress);\n const arrayBuffer = await this.model.downloadResource(chunk, progressCb, abortController.signal);\n\n if (abortController.signal.aborted) {\n await Promise.reject(new Error(`Open model aborted ${this.model.name}`));\n }\n\n visViewer.parseStream(new Uint8Array(arrayBuffer));\n this.viewer.update();\n\n const data = new Uint8Array(arrayBuffer);\n\n if (i === 0) {\n this.viewer.update(true);\n\n this.viewer.syncOpenCloudVisualStyle(false);\n this.viewer.syncOptions();\n this.viewer.resize();\n\n this.viewer.emitEvent({ type: \"databasechunk\", data, model: this.model });\n } else {\n this.viewer.emitEvent({ type: \"geometrychunk\", data, model: this.model });\n }\n }\n\n this.viewer.emitEvent({ type: \"geometryend\", model: this.model });\n } catch (error) {\n this.viewer.emitEvent({ type: \"geometryerror\", data: error, model: this.model });\n throw error;\n }\n }\n}\n","import { Viewer } from \"../Viewer\";\n\nconst DELAY_TIME_MULTIPLEXER = 2.0;\nconst START_UPDATE_TIME = 1000;\n\nexport enum UpdateType {\n kDelay,\n kNormal,\n kForce,\n}\n\nexport class UpdaterController {\n private lastUpdate: number;\n private viewer: Viewer;\n public delayUpdateTime: number;\n\n constructor() {\n this.delayUpdateTime = START_UPDATE_TIME;\n }\n\n initialize(viewer: Viewer) {\n this.viewer = viewer;\n this.lastUpdate = performance.now();\n }\n\n update(type: UpdateType) {\n const isNeedUpdate = type !== UpdateType.kDelay || performance.now() - this.lastUpdate >= this.delayUpdateTime;\n const isForce = type === UpdateType.kForce;\n\n if (isNeedUpdate) {\n this.viewer.update(isForce);\n this.lastUpdate = performance.now();\n this.delayUpdateTime *= DELAY_TIME_MULTIPLEXER;\n }\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { BaseLoader } from \"./BaseLoader\";\nimport { UpdaterController, UpdateType } from \"./UpdaterController\";\n\nexport class VsfXStreamingLoader extends BaseLoader {\n override async load(): Promise<void> {\n if (!this.viewer.visualizeJs) return;\n\n const visLib = this.viewer.visLib();\n const visViewer = visLib.getViewer();\n const abortController = new AbortController();\n\n const updaterController = new UpdaterController();\n updaterController.initialize(this.viewer);\n\n this.viewer._abortController = abortController;\n\n let isFireDatabaseChunk = false;\n\n const chunkLoadHandler = (progress, data) => {\n if (!this.viewer.visualizeJs) return;\n\n const status = visViewer.parseVsfx(data);\n updaterController.update(UpdateType.kDelay);\n\n this.viewer.emitEvent({ type: \"geometryprogress\", data: progress, model: this.model });\n\n let state = false;\n if (\n status === visLib.DatabaseStreamStatus.ReadyServiceData ||\n (status === visLib.DatabaseStreamStatus.Complete && !isFireDatabaseChunk)\n ) {\n isFireDatabaseChunk = true;\n state = true;\n }\n\n if (state) {\n updaterController.update(UpdateType.kForce);\n\n this.viewer.syncOpenCloudVisualStyle(false);\n this.viewer.syncOptions();\n this.viewer.resize();\n\n this.viewer.emitEvent({ type: \"databasechunk\", data, model: this.model });\n } else {\n this.viewer.emitEvent({ type: \"geometrychunk\", data, model: this.model });\n }\n };\n\n console.time(\"File load time\");\n try {\n this.viewer.emitEvent({ type: \"geometrystart\", model: this.model });\n\n await this.model.partialDownloadResource(this.model.database, chunkLoadHandler, abortController.signal);\n console.timeEnd(\"File load time\");\n\n updaterController.update(UpdateType.kNormal);\n\n this.viewer.emitEvent({ type: \"geometryend\", model: this.model });\n } catch (error) {\n this.viewer.emitEvent({ type: \"geometryerror\", data: error, model: this.model });\n throw error;\n }\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { BaseLoader } from \"./BaseLoader\";\nimport { UpdaterController, UpdateType } from \"./UpdaterController\";\n\nexport class VsfXPartialLoader extends BaseLoader {\n override async load(): Promise<void> {\n if (!this.viewer.visualizeJs) return;\n\n const visLib = this.viewer.visLib();\n const visViewer = visLib.getViewer();\n const abortController = new AbortController();\n const abortControllerForRequestMap = new Map();\n let servicePartAborted = false;\n\n const pendingRequestsMap = new Map();\n const PENDING_REQUESTS_SIZE = 50;\n const PENDING_REQUESTS_TIMEOUT = 250;\n let pendingRequestsTimerId = 0;\n const pendingRequestsAbortHandler = () => clearTimeout(pendingRequestsTimerId);\n\n const pendingRequestsAbortController = new AbortController();\n abortControllerForRequestMap.set(0, pendingRequestsAbortController);\n\n const updaterController = new UpdaterController();\n updaterController.initialize(this.viewer);\n\n this.viewer._abortController = abortController;\n this.viewer._abortControllerForRequestMap = abortControllerForRequestMap;\n\n visViewer.memoryLimit = this.options.memoryLimit;\n\n const requestLoadHandler = (progress, data, requestId) => {\n if (!this.viewer.visualizeJs) return;\n\n const state = visViewer.parseVsfxInPartialMode(requestId, data);\n updaterController.update(UpdateType.kDelay);\n\n this.viewer.emitEvent({ type: \"geometryprogress\", data: progress, model: this.model });\n\n if (state) {\n updaterController.update(UpdateType.kForce);\n\n this.viewer.syncOpenCloudVisualStyle(false);\n this.viewer.syncOptions();\n this.viewer.resize();\n\n this.viewer.emitEvent({ type: \"databasechunk\", data, model: this.model });\n } else {\n this.viewer.emitEvent({ type: \"geometrychunk\", data, model: this.model });\n }\n };\n\n const downloadPartOfFile = async (requestId, records, dataId, isMultipleParts = false) => {\n const abortCtrl = new AbortController();\n abortControllerForRequestMap.set(requestId, abortCtrl);\n try {\n await this.model.downloadFileRange(requestId, records, dataId, requestLoadHandler, abortCtrl.signal);\n } catch (error) {\n this.viewer.emitEvent({ type: \"geometryerror\", data: error, model: this.model });\n } finally {\n const requests = isMultipleParts ? [...new Set(records.map((item) => item.reqId))] : [requestId];\n requests.forEach((requestId) => visViewer.onRequestResponseComplete(requestId));\n abortControllerForRequestMap.delete(requestId);\n updaterController.update(UpdateType.kNormal);\n }\n };\n\n const recordsToArray = (requestId, records) => {\n const res = [];\n for (let i = 0; i < records.size(); i++) {\n const record = records.get(i);\n res.push({\n reqId: requestId,\n begin: record.begin,\n end: record.end,\n size: parseInt(record.end, 10) - parseInt(record.begin, 10),\n });\n record.delete();\n }\n return res;\n };\n\n const objectHandler = {\n onServicePartReceived: (bHasIndex) => {\n if (bHasIndex) {\n servicePartAborted = true;\n abortController.abort();\n }\n },\n\n onRequest: (requestId, records) => {\n downloadPartOfFile(requestId, records, this.model.database);\n },\n\n onFullLoaded: () => {\n updaterController.update(UpdateType.kNormal);\n console.timeEnd(\"File load time\");\n },\n\n onRequestResponseParsed: (requestId) => {\n abortControllerForRequestMap.delete(requestId);\n updaterController.update(UpdateType.kNormal);\n },\n\n onRequestAborted: (requestId) => {\n const abortCtrl = abortControllerForRequestMap.get(requestId);\n if (abortCtrl) abortCtrl.abort();\n },\n\n onRequestResourceFile: async (requestId, _, records) => {\n const dataId = `${this.model.fileId}${this.model.file.type}`;\n\n let pendingRequests = [];\n let recNumber = 0;\n const pendingRequestsRecord = pendingRequestsMap.get(dataId);\n if (pendingRequestsRecord) {\n pendingRequests = pendingRequestsRecord.array;\n recNumber = pendingRequestsRecord.number;\n }\n\n // first several records of each file are processed without grouping (they usually require to be processed sequentially)\n if (recNumber < 6) {\n pendingRequestsMap.set(dataId, { array: pendingRequests, number: recNumber + 1 });\n await downloadPartOfFile(requestId, records, dataId);\n return;\n }\n\n // group requests to each file to launch a combined server request\n if (pendingRequests.length >= PENDING_REQUESTS_SIZE) {\n if (pendingRequestsTimerId) {\n window.clearTimeout(pendingRequestsTimerId);\n pendingRequestsTimerId = 0;\n }\n\n downloadPartOfFile(requestId, pendingRequests, dataId, true);\n pendingRequests = [...recordsToArray(requestId, records)];\n } else {\n pendingRequests = [...pendingRequests, ...recordsToArray(requestId, records)];\n }\n\n pendingRequestsMap.set(dataId, { array: pendingRequests, number: recNumber + 1 });\n\n // set timeout to wait for the new requests, after that process the remaining requests\n if (pendingRequestsTimerId === 0) {\n pendingRequestsTimerId = window.setTimeout(() => {\n pendingRequestsAbortController.signal.removeEventListener(\"abort\", pendingRequestsAbortHandler);\n pendingRequestsTimerId = 0;\n\n pendingRequestsMap.forEach((requestsRecord, keyFileName) => {\n const array = requestsRecord.array;\n if (array.length > 0) {\n downloadPartOfFile(requestId, array, keyFileName, true);\n pendingRequestsMap.set(keyFileName, { array: [], number: requestsRecord.number + 1 });\n }\n });\n }, PENDING_REQUESTS_TIMEOUT);\n\n pendingRequestsAbortController.signal.addEventListener(\"abort\", pendingRequestsAbortHandler, { once: true });\n }\n },\n };\n\n visViewer.attachPartialResolver(objectHandler);\n\n console.time(\"File load time\");\n try {\n this.viewer.emitEvent({ type: \"geometrystart\", model: this.model });\n\n await this.model\n .downloadFileRange(0, null, this.model.database, requestLoadHandler, abortController.signal)\n .catch((error) => {\n if (!servicePartAborted) throw error;\n });\n\n this.viewer.emitEvent({ type: \"geometryend\", model: this.model });\n } catch (error) {\n if (pendingRequestsTimerId) {\n window.clearTimeout(pendingRequestsTimerId);\n pendingRequestsTimerId = 0;\n }\n\n this.viewer.emitEvent({ type: \"geometryerror\", data: error, model: this.model });\n throw error;\n }\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { BaseLoader } from \"./BaseLoader\";\n\nexport class VsfXLoader extends BaseLoader {\n override async load(): Promise<void> {\n if (!this.viewer.visualizeJs) return;\n\n const visLib = this.viewer.visLib();\n const visViewer = visLib.getViewer();\n const abortController = new AbortController();\n\n this.viewer._abortController = abortController;\n\n console.time(\"File load time\");\n try {\n this.viewer.emitEvent({ type: \"geometrystart\", model: this.model });\n\n const progressCb = (progress) =>\n this.viewer.emitEvent({ type: \"geometryprogress\", data: progress, model: this.model });\n const arrayBuffer = await this.model.downloadResource(this.model.database, progressCb, abortController.signal);\n\n if (abortController.signal.aborted) {\n await Promise.reject(new Error(`Open model aborted ${this.model.name}`));\n }\n\n if (this.viewer.visualizeJs) {\n visViewer.parseVsfx(new Uint8Array(arrayBuffer));\n this.viewer.update(true);\n\n this.viewer.syncOpenCloudVisualStyle(false);\n this.viewer.syncOptions();\n this.viewer.resize();\n }\n\n console.timeEnd(\"File load time\");\n\n this.viewer.emitEvent({ type: \"geometryend\", model: this.model });\n } catch (error) {\n this.viewer.emitEvent({ type: \"geometryerror\", data: error, model: this.model });\n throw error;\n }\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { Model } from \"@inweb/client\";\nimport { OptionsData } from \"@inweb/viewer-core\";\n\nimport { TCSLoader } from \"./TCSLoader\";\nimport { VsfXStreamingLoader } from \"./VsfXStreamingLoader\";\nimport { VsfXPartialLoader } from \"./VsfXPartialLoader\";\nimport { Viewer } from \"../Viewer\";\nimport { VsfXLoader } from \"./VsfXLoader\";\n\nexport class LoaderFactory {\n create(viewer: Viewer, model: Model, options: OptionsData) {\n const geometryType = model.database.split(\".\").pop();\n\n if (model.geometry.length === 0 && geometryType === \"vsfx\") {\n if (!options.enableStreamingMode) return new VsfXLoader(viewer, model, options);\n else if (options.enablePartialMode) return new VsfXPartialLoader(viewer, model, options);\n else return new VsfXStreamingLoader(viewer, model, options);\n }\n\n if (geometryType === \"data\") {\n return new TCSLoader(viewer, model, options);\n }\n throw new Error(`Unknown geometry type: ${geometryType}`);\n }\n}\n","import { IViewpoint } from \"@inweb/viewer-core\";\n\nimport { OdBaseDragger } from \"../Draggers/Common/OdBaseDragger\";\nimport { Viewer } from \"../Viewer\";\nimport { IMarkupObject } from \"./Api/IMarkupObject\";\n\nexport enum MarkupType {\n Unknown,\n Konva = \"Konva\",\n Visualize = \"Visualize\",\n}\n\nexport enum MarkupMode {\n Line = \"Line\",\n Text = \"Text\",\n Rectangle = \"Rectangle\",\n Ellipse = \"Ellipse\",\n Arrow = \"Arrow\",\n Image = \"Image\",\n Cloud = \"Cloud\",\n}\n\nexport interface IMarkup {\n lineWidth: number;\n\n initialize(viewer: Viewer, canvas: HTMLCanvasElement, canvasEvents: string[]): void;\n dispose(): void;\n\n getDraggers(): Map<string, typeof OdBaseDragger>;\n clearOverlay(): void;\n setMarkupColor(r: number, g: number, b: number): void;\n getMarkupColor(): { r: number; g: number; b: number };\n colorizeAllMarkup(r: number, g: number, b: number): void;\n setViewpoint(viewpoint: IViewpoint): void;\n getViewpoint(): IViewpoint;\n\n createObject(type: string, params: any): IMarkupObject;\n getObjects(): IMarkupObject[];\n getSelectedObjects(): IMarkupObject[];\n selectObjects(objects: IMarkupObject[]): void;\n clearSelected(): void;\n}\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.6',\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 isTransforming() {\n var _a;\n return (_a = exports.Konva['Transformer']) === null || _a === void 0 ? void 0 : _a.isTransforming();\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 &&\n !Global_1.Konva.hitOnDragEnabled &&\n (layerUnderDrag || Global_1.Konva.isTransforming());\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 / canvas.pixelRatio + Math.abs(x),\n height: canvas.height / canvas.pixelRatio + Math.abs(y),\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 = (typeof clipWidth === 'number' && typeof clipHeight === 'number') ||\n 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 || 0, clipY || 0, 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 = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || 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 (Global_1.Konva.isDragging() && DragAndDrop_1.DD.node.preventDefault() && evt.cancelable) {\n evt.preventDefault();\n }\n this.setPointersPositions(evt);\n var eventsEnabled = !(Global_1.Konva.isDragging() || Global_1.Konva.isTransforming()) || 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}\nlet activeTransformersCount = 0;\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 activeTransformersCount++;\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 var _a;\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 activeTransformersCount--;\n this._fire('transformend', { evt: e, target: node });\n (_a = this.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n if (node) {\n this._nodes.forEach((target) => {\n var _a;\n target._fire('transformend', { evt: e, target });\n (_a = target.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\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 (_a = node.getLayer()) === null || _a === void 0 ? void 0 : _a.batchDraw();\n });\n this.rotation(Util_1.Util._getRotation(newAttrs.rotation));\n this._nodes.forEach((node) => {\n this._fire('transform', { evt: evt, target: node });\n node._fire('transform', { evt: evt, target: node });\n });\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;\nTransformer.isTransforming = () => {\n return activeTransformersCount > 0;\n};\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 {\n public R: number;\n public G: number;\n public B: number;\n\n private _hex: string;\n\n /**\n * Color in #000000 format\n */\n get HexColor(): string {\n return \"#\" + this._hex;\n }\n\n get RGB(): { r: number; g: number; b: number } {\n return { r: this.R, g: this.G, b: this.B };\n }\n\n constructor(r: number, g: number, b: number) {\n this.setColor(r, g, b);\n }\n\n public setColor(r: number, g: number, b: number): void {\n this.R = r;\n this.G = g;\n this.B = b;\n\n this._hex = this.rgbToHex(r, g, b);\n }\n\n private rgbToHex(r: number, g: number, b: number): string {\n const valueToHex = (c) => {\n const hex = c.toString(16);\n return hex === \"0\" ? \"00\" : hex;\n };\n\n return valueToHex(r) + valueToHex(g) + valueToHex(b);\n }\n}\n","import Konva from \"konva\";\nimport { LineType } from \"@inweb/viewer-core\";\nimport { IMarkupLine } from \"../../IMarkupLine\";\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\n\nconst LineTypeSpecs = new Map<string, number[]>([\n [\"solid\", []],\n [\"dot\", [30, 30, 0.001, 30]],\n [\"dash\", [30, 30]],\n]);\n\nexport class KonvaLine implements IMarkupLine, IMarkupColorable {\n private _ref: Konva.Line;\n\n constructor(\n params: { points: { x: number; y: number }[]; type?: LineType; width?: number; color?: string; id?: string },\n ref = null\n ) {\n if (ref) {\n this._ref = ref;\n return;\n }\n\n if (!params.points) return;\n\n const konvaPoints = [];\n params.points.forEach((point) => konvaPoints.push(point.x, point.y));\n\n this._ref = new Konva.Line({\n stroke: params.color ?? \"#ff0000\",\n strokeWidth: params.width ?? 4,\n globalCompositeOperation: \"source-over\",\n lineCap: \"round\",\n lineJoin: \"round\",\n points: konvaPoints,\n draggable: true,\n strokeScaleEnabled: false,\n dash: LineTypeSpecs.get(params.type) || [],\n });\n\n this._ref.id(this._ref._id.toString());\n }\n\n ref() {\n return this._ref;\n }\n\n id(): string {\n return this._ref.id();\n }\n\n enableMouseEditing(value: boolean) {\n this._ref.draggable(value);\n }\n\n type(): string {\n return \"line\";\n }\n\n getColor(): string {\n return this._ref.stroke();\n }\n\n setColor(hex: string) {\n this._ref.stroke(hex);\n }\n\n getRotation(): number {\n return this._ref.rotation();\n }\n\n setRotation(degrees: number): void {\n this._ref.rotation(degrees);\n }\n\n getZIndex(): number {\n return this._ref.zIndex();\n }\n\n setZIndex(zIndex: number): void {\n this._ref.zIndex(zIndex);\n }\n\n delete() {\n this._ref.destroy();\n this._ref = null;\n }\n\n getPoints(): number[] {\n return this._ref.points();\n }\n\n setLineWidth(size: number) {\n this._ref.strokeWidth(size);\n }\n\n getLineWidth(): number {\n return this._ref.strokeWidth();\n }\n\n getLineType(): string {\n const typeSpecs = this._ref.dash() || [];\n let type: LineType;\n switch (typeSpecs) {\n case LineTypeSpecs.get(\"dot\"):\n type = \"dot\";\n break;\n case LineTypeSpecs.get(\"dash\"):\n type = \"dash\";\n break;\n default:\n type = \"solid\";\n break;\n }\n return type;\n }\n\n setLineType(type: string) {\n const specs = LineTypeSpecs.get(type);\n if (specs) this._ref.dash(specs);\n }\n\n addPoints(points: [{ x: number; y: number }]) {\n let newPoints = this._ref.points();\n points.forEach((point) => {\n newPoints = newPoints.concat([point.x, point.y]);\n });\n\n this._ref.points(newPoints);\n }\n}\n","import Konva from \"konva\";\nimport { IMarkupText } from \"../../IMarkupText\";\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\n\nexport class KonvaText implements IMarkupText, IMarkupColorable {\n private _ref: Konva.Text;\n private readonly TEXT_FONT_FAMILY = \"Calibri\";\n\n constructor(\n params: {\n position: { x: number; y: number };\n text: string;\n rotation?: number;\n fontSize?: number;\n color?: string;\n id?: string;\n },\n ref = null\n ) {\n if (ref) {\n this._ref = ref;\n return;\n }\n\n if (!params || !params.text) return;\n\n this._ref = new Konva.Text({\n x: params.position.x,\n y: params.position.y,\n text: params.text,\n fontSize: params.fontSize ?? 34,\n fontFamily: this.TEXT_FONT_FAMILY,\n fill: params.color ?? \"#ff0000\",\n align: \"left\",\n draggable: true,\n rotation: params.rotation ?? 0,\n });\n\n this._ref.id(this._ref._id.toString());\n }\n\n ref() {\n return this._ref;\n }\n\n id(): string {\n return this._ref.id();\n }\n\n enableMouseEditing(value: boolean) {\n this._ref.draggable(value);\n }\n\n type(): string {\n return \"text\";\n }\n\n getColor(): string {\n return this._ref.fill();\n }\n\n setColor(hex: string) {\n this._ref.fill(hex);\n }\n\n getRotation(): number {\n return this._ref.rotation();\n }\n\n setRotation(degrees: number): void {\n this._ref.rotation(degrees);\n }\n\n getZIndex(): number {\n return this._ref.zIndex();\n }\n\n setZIndex(zIndex: number): void {\n this._ref.zIndex(zIndex);\n }\n\n delete() {\n this._ref.destroy();\n this._ref = null;\n }\n\n getText(): string {\n return this._ref.text();\n }\n\n setText(text: string): void {\n this._ref.text(text);\n }\n\n getPosition(): { x: number; y: number } {\n return this._ref.getPosition();\n }\n\n setPosition(x: number, y: number) {\n this._ref.setPosition({ x, y });\n }\n\n getFontSize() {\n return this._ref.fontSize();\n }\n\n setFontSize(size: number) {\n this._ref.fontSize(size);\n }\n}\n","import Konva from \"konva\";\nimport { IMarkupRectangle } from \"../../IMarkupRectangle\";\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\n\nexport class KonvaRectangle implements IMarkupRectangle, IMarkupColorable {\n private _ref: Konva.Rect;\n\n constructor(\n params: {\n position: { x: number; y: number };\n width?: number;\n height?: number;\n lineWidth?: number;\n color?: string;\n id?: string;\n },\n ref = null\n ) {\n if (ref) {\n this._ref = ref;\n return;\n }\n\n if (!params.position) return;\n\n this._ref = new Konva.Rect({\n stroke: params.color ?? \"#ff0000\",\n strokeWidth: params.lineWidth ?? 4,\n globalCompositeOperation: \"source-over\",\n lineCap: \"round\",\n lineJoin: \"round\",\n x: params.position.x,\n y: params.position.y,\n width: params.width ?? 200,\n height: params.height ?? 200,\n draggable: true,\n strokeScaleEnabled: false,\n });\n\n this._ref.id(this._ref._id.toString());\n }\n\n getPosition(): { x: number; y: number } {\n return this._ref.position();\n }\n\n getWidth(): number {\n return this._ref.width();\n }\n\n getHeigth(): number {\n return this._ref.height();\n }\n\n setWidth(w: number) {\n this._ref.width(w);\n }\n\n setHeight(h: number) {\n this._ref.height(h);\n }\n\n setPosition(x: number, y: number) {\n this._ref.setPosition({ x, y });\n }\n\n ref() {\n return this._ref;\n }\n\n id(): string {\n return this._ref.id();\n }\n\n enableMouseEditing(value: boolean): void {\n this._ref.draggable(value);\n }\n\n type(): string {\n return \"rectangle\";\n }\n\n getColor(): string {\n return this._ref.stroke();\n }\n\n setColor(hex: string): void {\n this._ref.stroke(hex);\n }\n\n getRotation(): number {\n return this._ref.rotation();\n }\n\n setRotation(degrees: number): void {\n this._ref.rotation(degrees);\n }\n\n getZIndex(): number {\n return this._ref.zIndex();\n }\n\n setZIndex(zIndex: number): void {\n this._ref.zIndex(zIndex);\n }\n\n delete(): void {\n this._ref.destroy();\n this._ref = null;\n }\n\n setLineWidth(size: number): void {\n this._ref.strokeWidth(size);\n }\n\n getLineWidth(): number {\n return this._ref.strokeWidth();\n }\n}\n","import Konva from \"konva\";\nimport { IMarkupEllipse } from \"../../IMarkupEllipse\";\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\n\nexport class KonvaEllipse implements IMarkupEllipse, IMarkupColorable {\n private _ref: Konva.Ellipse;\n\n constructor(\n params: {\n position: { x: number; y: number };\n radius: { x: number; y: number };\n lineWidth?: number;\n color?: string;\n id?: string;\n },\n ref = null\n ) {\n if (ref) {\n this._ref = ref;\n return;\n }\n\n if (!params.position) return;\n\n this._ref = new Konva.Ellipse({\n stroke: params.color ?? \"#ff0000\",\n strokeWidth: params.lineWidth ?? 4,\n globalCompositeOperation: \"source-over\",\n lineCap: \"round\",\n lineJoin: \"round\",\n x: params.position.x,\n y: params.position.y,\n radiusX: params.radius.x,\n radiusY: params.radius.y,\n draggable: true,\n strokeScaleEnabled: false,\n });\n\n this._ref.id(this._ref._id.toString());\n }\n\n getPosition(): { x: number; y: number } {\n return this._ref.position();\n }\n\n setPosition(x: number, y: number) {\n this._ref.setPosition({ x, y });\n }\n\n getRadiusX(): number {\n return this._ref.radiusX();\n }\n\n setRadiusX(r: number) {\n this._ref.radius({ x: r, y: this._ref.radiusY() });\n }\n\n getRadiusY(): number {\n return this._ref.radiusY();\n }\n\n setRadiusY(r: number) {\n this._ref.radius({ x: this._ref.radiusX(), y: r });\n }\n\n getLineWidth(): number {\n return this._ref.strokeWidth();\n }\n\n setLineWidth(size: number) {\n this._ref.strokeWidth(size);\n }\n\n ref() {\n return this._ref;\n }\n\n id(): string {\n return this._ref.id();\n }\n\n enableMouseEditing(value: boolean) {\n this._ref.draggable(value);\n }\n\n type(): string {\n return \"ellipse\";\n }\n\n getColor(): string {\n return this._ref.stroke();\n }\n\n setColor(hex: string) {\n this._ref.stroke(hex);\n }\n\n getRotation(): number {\n return this._ref.rotation();\n }\n\n setRotation(degrees: number): void {\n this._ref.rotation(degrees);\n }\n\n getZIndex(): number {\n return this._ref.zIndex();\n }\n\n setZIndex(zIndex: number): void {\n this._ref.zIndex(zIndex);\n }\n\n delete() {\n this._ref.destroy();\n this._ref = null;\n }\n}\n","import Konva from \"konva\";\nimport { IMarkupArrow } from \"../../IMarkupArrow\";\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\n\nexport class KonvaArrow implements IMarkupArrow, IMarkupColorable {\n private _ref: Konva.Arrow;\n\n constructor(\n params: {\n start: { x: number; y: number };\n end: { x: number; y: number };\n color?: string;\n id?: string;\n },\n ref = null\n ) {\n if (ref) {\n this._ref = ref;\n return;\n }\n\n if (!params.start || !params.end) return;\n\n this._ref = new Konva.Arrow({\n stroke: params.color ?? \"#ff0000\",\n fill: params.color ?? \"#ff0000\",\n strokeWidth: 4,\n globalCompositeOperation: \"source-over\",\n lineCap: \"round\",\n lineJoin: \"round\",\n points: [params.start.x, params.start.y, params.end.x, params.end.y],\n draggable: true,\n strokeScaleEnabled: false,\n });\n\n this._ref.id(this._ref._id.toString());\n }\n\n ref() {\n return this._ref;\n }\n\n id(): string {\n return this._ref.id();\n }\n\n enableMouseEditing(value: boolean) {\n this._ref.draggable(value);\n }\n\n type(): string {\n return \"arrow\";\n }\n\n getColor(): string {\n return this._ref.stroke();\n }\n\n setColor(hex: string) {\n this._ref.stroke(hex);\n }\n\n getRotation(): number {\n return this._ref.rotation();\n }\n\n setRotation(degrees: number): void {\n this._ref.rotation(degrees);\n }\n\n getZIndex(): number {\n return this._ref.zIndex();\n }\n\n setZIndex(zIndex: number): void {\n this._ref.zIndex(zIndex);\n }\n\n delete() {\n this._ref.destroy();\n this._ref = null;\n }\n\n getPoints(): { x: number; y: number }[] {\n const points = this._ref.points();\n return [\n { x: points[0], y: points[1] },\n { x: points[2], y: points[3] },\n ];\n }\n\n setPoints(points: { x: number; y: number }[]) {\n if (points.length === 2) {\n this._ref.points([points[0].x, points[0].y, points[1].x, points[1].y]);\n }\n }\n\n getStartPoint(): { x: number; y: number } {\n const points = this._ref.points();\n return { x: points[0], y: points[1] };\n }\n\n setStartPoint(x: number, y: number) {\n const points = this._ref.points();\n this._ref.points([x, y, points[2], points[3]]);\n }\n\n getEndPoint(): { x: number; y: number } {\n const points = this._ref.points();\n return { x: points[2], y: points[3] };\n }\n\n setEndPoint(x: number, y: number) {\n const points = this._ref.points();\n this._ref.points([points[0], points[1], x, y]);\n }\n}\n","import Konva from \"konva\";\nimport { IMarkupImage } from \"../../IMarkupImage\";\n\nexport class KonvaImage implements IMarkupImage {\n private _ref: Konva.Image;\n private _canvasImage: HTMLImageElement;\n private _ratio = 1;\n\n constructor(\n params: { position: { x: number; y: number }; src: string; width: number; height: number; id?: string },\n ref = null\n ) {\n if (ref) {\n if (ref.height() === 0 || ref.width() === 0) return;\n\n this._ref = ref;\n this._canvasImage = ref.image();\n this._ratio = this._ref.height() / this._ref.width();\n return;\n }\n\n if (!params.position || !params.src) return;\n this._canvasImage = new Image();\n\n this._ref = new Konva.Image({\n x: params.position.x,\n y: params.position.y,\n image: this._canvasImage,\n width: params.width,\n height: params.height,\n draggable: true,\n });\n\n this._canvasImage.onload = () => {\n this._ref.image(this._canvasImage);\n this._ratio = this._ref.height() === 0 || this._ref.width() === 0 ? 1 : this._ref.height() / this._ref.width();\n };\n\n this._canvasImage.src = params.src;\n\n this._ref.id(this._ref._id.toString());\n }\n\n getSrc(): string {\n return this._canvasImage.src;\n }\n\n setSrc(src: any) {\n this._canvasImage.src = src;\n }\n\n getWidth(): number {\n return this._ref.width();\n }\n\n setWidth(w: number) {\n this._ref.width(w);\n this._ref.height(w * this._ratio);\n }\n\n getHeight(): number {\n return this._ref.height();\n }\n\n setHeight(h: number) {\n this._ref.height(h);\n this._ref.width(h / this._ratio);\n }\n\n ref() {\n return this._ref;\n }\n\n id(): string {\n return this._ref.id();\n }\n\n enableMouseEditing(value: boolean) {\n this._ref.draggable(value);\n }\n\n type(): string {\n return \"image\";\n }\n\n // we can break Liskov Substitution Principle, need to use separate IColorable\n // getColor(): string {\n // return this._ref.fill();\n // }\n\n // setColor(hex: string) {\n // this._ref.fill(hex);\n // }\n\n getRotation(): number {\n return this._ref.rotation();\n }\n\n setRotation(degrees: number): void {\n this._ref.rotation(degrees);\n }\n\n getZIndex(): number {\n return this._ref.zIndex();\n }\n\n setZIndex(zIndex: number): void {\n this._ref.zIndex(zIndex);\n }\n\n delete() {\n this._ref.destroy();\n this._ref = null;\n }\n\n getPosition(): { x: number; y: number } {\n return this._ref.getPosition();\n }\n\n setPosition(x: number, y: number) {\n this._ref.setPosition({ x, y });\n }\n}\n","import Konva from \"konva\";\nimport { IMarkupColorable } from \"../../IMarkupColorable\";\nimport { IMarkupCloud } from \"../../IMarkupCloud\";\n\nexport class KonvaCloud implements IMarkupCloud, IMarkupColorable {\n private _ref: Konva.Shape;\n\n constructor(\n params: {\n position: { x: number; y: number };\n width?: number;\n height?: number;\n lineWidth?: number;\n color?: string;\n id?: string;\n },\n ref = null\n ) {\n if (ref) {\n this._ref = ref;\n return;\n }\n\n if (!params.position || !params.width || !params.height) return;\n\n const arcRadius = 16;\n\n this._ref = new Konva.Shape({\n x: params.position.x,\n y: params.position.y,\n width: params.width ?? 200,\n height: params.height ?? 200,\n stroke: params.color ?? \"#ff0000\",\n strokeWidth: params.lineWidth ?? 5,\n draggable: true,\n strokeScaleEnabled: false,\n globalCompositeOperation: \"source-over\",\n sceneFunc: (context, shape) => {\n function calculateMidpoint(position, width, height) {\n const midX = position.x + width / 2;\n const midY = position.y + height / 2;\n return { x: midX, y: midY };\n }\n\n const points = [\n { x: 0, y: 0 },\n { x: 0 + this._ref.width(), y: 0 },\n { x: 0 + this._ref.width(), y: 0 + this._ref.height() },\n { x: 0, y: 0 + this._ref.height() },\n { x: 0, y: 0 },\n ];\n\n const midPoint = calculateMidpoint({ x: 0, y: 0 }, this._ref.width(), this._ref.height());\n\n const baseArcLength = 30;\n context.beginPath();\n for (let iPoint = 0; iPoint < points.length - 1; iPoint++) {\n let approxArcLength = baseArcLength;\n const dx = points[iPoint + 1].x - points[iPoint].x;\n const dy = points[iPoint + 1].y - points[iPoint].y;\n const length = Math.sqrt(dx * dx + dy * dy);\n\n const arcCount = Math.floor(length / approxArcLength);\n const lengthMod = length % approxArcLength;\n approxArcLength = baseArcLength + arcCount / lengthMod;\n\n let pX = points[iPoint].x + dx / arcCount / 2;\n let pY = points[iPoint].y + dy / arcCount / 2;\n const pEndX = points[iPoint + 1].x;\n const pEndY = points[iPoint + 1].y;\n const endAngle = Math.atan((pEndY - pY) / (pEndX - pX));\n const startAngle = endAngle + Math.PI;\n const counterClockwise = pX > midPoint.x && pY > midPoint.y;\n for (let iArc = 0; iArc < arcCount; iArc++) {\n if (counterClockwise) {\n context.arc(pX, pY, arcRadius, endAngle, startAngle);\n } else {\n context.arc(pX, pY, arcRadius, startAngle, endAngle);\n }\n\n pX += dx / arcCount;\n pY += dy / arcCount;\n }\n }\n\n context.closePath();\n // (!) Konva specific method, it is very important\n // it will apply are required styles\n context.fillStrokeShape(shape);\n },\n });\n\n this._ref.className = \"Cloud\";\n\n this._ref.on(\"transform\", (e) => {\n const attrs = e.target.attrs;\n\n const minWidth = 100;\n const minHeight = 100;\n\n const newWidth = this._ref.width() * attrs.scaleX;\n const newHeight = this._ref.height() * attrs.scaleY;\n\n if (newWidth < minWidth || newHeight < minHeight) {\n this._ref.scale({ x: 1, y: 1 });\n return;\n }\n\n if (Math.abs(attrs.scaleX - 1) > 10e-6) {\n this._ref.width(newWidth);\n }\n\n if (Math.abs(attrs.scaleY - 1) > 10e-6) {\n this._ref.height(newHeight);\n }\n\n this._ref.scale({ x: 1, y: 1 });\n });\n\n this._ref.getSelfRect = () => {\n return {\n x: 0 - arcRadius,\n y: 0 - arcRadius,\n width: this._ref.width() + 2 * arcRadius,\n height: this._ref.height() + 2 * arcRadius,\n };\n };\n\n this._ref.id(this._ref._id.toString());\n }\n\n ref() {\n return this._ref;\n }\n\n id(): string {\n return this._ref.id();\n }\n\n enableMouseEditing(value: boolean) {\n this._ref.draggable(value);\n }\n\n type(): string {\n return \"cloud\";\n }\n\n getColor(): string {\n return this._ref.stroke();\n }\n\n setColor(hex: string) {\n this._ref.stroke(hex);\n }\n\n getRotation(): number {\n return this._ref.rotation();\n }\n\n setRotation(degrees: number): void {\n this._ref.rotation(degrees);\n }\n\n getZIndex(): number {\n return this._ref.zIndex();\n }\n\n setZIndex(zIndex: number): void {\n this._ref.zIndex(zIndex);\n }\n\n delete() {\n this._ref.destroy();\n this._ref = null;\n }\n\n getPosition() {\n return this._ref.position();\n }\n\n setPosition(x: number, y: number) {\n this._ref.position({ x, y });\n }\n\n getWidth(): number {\n return this._ref.width();\n }\n\n setWidth(w: number) {\n this._ref.width(w);\n }\n\n getHeigth(): number {\n return this._ref.height();\n }\n\n setHeight(h: number) {\n this._ref.height(h);\n }\n\n getLineWidth(): number {\n return this._ref.strokeWidth();\n }\n\n setLineWidth(size: number) {\n this._ref.strokeWidth(size);\n }\n}\n","import Konva from \"konva\";\nimport { ChangeActiveDraggerEvent, IViewpoint, LineType, PanEvent } from \"@inweb/viewer-core\";\n\nimport { IMarkup, MarkupMode } from \"../../IMarkup\";\nimport { Viewer } from \"../../../Viewer\";\nimport { MarkupColor } from \"./MarkupColor\";\nimport * as utils from \"../../../Draggers/MeasureLineDragger/MeasureUtils\";\nimport { OdBaseDragger } from \"../../../Draggers/Common/OdBaseDragger\";\nimport { IMarkupObject } from \"../../Api/IMarkupObject\";\nimport { KonvaLine } from \"../../Api/Impl/Konva/KonvaLine\";\nimport { KonvaText } from \"../../Api/Impl/Konva/KonvaText\";\nimport { KonvaRectangle } from \"../../Api/Impl/Konva/KonvaRectangle\";\nimport { KonvaEllipse } from \"../../Api/Impl/Konva/KonvaEllipse\";\nimport { KonvaArrow } from \"../../Api/Impl/Konva/KonvaArrow\";\nimport { KonvaImage } from \"../../Api/Impl/Konva/KonvaImage\";\nimport { KonvaCloud } from \"../../Api/Impl/Konva/KonvaCloud\";\n\nclass KonvaShape {\n name: string;\n initializer: (ref: any) => any;\n}\n\n// move to separate class and create factory with enum?\nconst MarkupMode2Konva = new Map<MarkupMode, KonvaShape>([\n [\n MarkupMode.Line,\n {\n name: \"Line\",\n initializer: (ref) => {\n return new KonvaLine(null, ref);\n },\n },\n ],\n [\n MarkupMode.Text,\n {\n name: \"Text\",\n initializer: (ref) => {\n return new KonvaText(null, ref);\n },\n },\n ],\n [\n MarkupMode.Rectangle,\n {\n name: \"Rect\",\n initializer: (ref) => {\n return new KonvaRectangle(null, ref);\n },\n },\n ],\n [\n MarkupMode.Ellipse,\n {\n name: \"Ellipse\",\n initializer: (ref) => {\n return new KonvaEllipse(null, ref);\n },\n },\n ],\n [\n MarkupMode.Arrow,\n {\n name: \"Arrow\",\n initializer: (ref) => {\n return new KonvaArrow(null, ref);\n },\n },\n ],\n [\n MarkupMode.Image,\n {\n name: \"Image\",\n initializer: (ref) => {\n return new KonvaImage(null, ref);\n },\n },\n ],\n [\n MarkupMode.Cloud,\n {\n name: \"Cloud\",\n initializer: (ref) => {\n return new KonvaCloud(null, ref);\n },\n },\n ],\n]);\n\nexport class KonvaMarkup implements IMarkup {\n private _isInitialized = false;\n private _viewer: Viewer;\n private _canvasOriginal: HTMLCanvasElement;\n private _canvasEvents: string[];\n private _markupIsActive: boolean;\n private _markupMode: MarkupMode;\n private _markupColor: MarkupColor;\n private _konvaStage: Konva.Stage;\n private _konvaLayer: Konva.Layer;\n private _konvaTransformer: Konva.Transformer;\n\n private _textInputRef: HTMLTextAreaElement;\n private _textInputPos: Konva.Vector2d;\n private _textInputAngle: number;\n private _markupContainer: HTMLDivElement;\n private _zIndex = 1;\n\n private readonly _markupContainerName = \"markupContainer\";\n\n public lineWidth = 4;\n\n initialize(viewer: Viewer, canvas: HTMLCanvasElement, canvasEvents: string[] = []): void {\n if (!Konva)\n throw new Error(\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>'\n );\n\n this._viewer = viewer;\n\n this._canvasOriginal = canvas;\n this._canvasEvents = canvasEvents;\n\n this._markupContainer = document.createElement(\"div\");\n this._markupContainer.id = this._markupContainerName;\n this._markupContainer.style.position = \"absolute\";\n this._markupContainer.style.top = \"0px\";\n this._markupContainer.style.left = \"0px\";\n // to eliminate grey box during delete elements\n this._markupContainer.style.outline = \"0px\";\n\n const parentDiv = this._canvasOriginal.parentElement;\n parentDiv.appendChild(this._markupContainer);\n\n this._markupColor = new MarkupColor(255, 0, 0);\n this._markupIsActive = false;\n\n this.initializeKonva();\n this.resize();\n\n this._canvasEvents.forEach((x) => this._markupContainer.addEventListener(x, this.redirectToViewer));\n\n this._viewer.addEventListener(\"resize\", this.resize);\n this._viewer.addEventListener(\"changeactivedragger\", this.changeActiveDragger);\n this._viewer.addEventListener(\"pan\", this.pan);\n\n this._isInitialized = true;\n }\n\n dispose(): void {\n if (!this._isInitialized) return;\n\n this._canvasEvents.forEach((x) => this._markupContainer.removeEventListener(x, this.redirectToViewer));\n\n this._viewer.removeEventListener(\"pan\", this.pan);\n this._viewer.removeEventListener(\"changeactivedragger\", this.changeActiveDragger);\n this._viewer.removeEventListener(\"resize\", this.resize);\n\n this.destroyKonva();\n\n this._markupContainer.remove();\n\n this._markupContainer = undefined;\n this._canvasOriginal = undefined;\n this._viewer = undefined;\n\n this._isInitialized = false;\n }\n\n changeActiveDragger = (event: ChangeActiveDraggerEvent) => {\n const draggerName = event.data;\n\n this._markupContainer.className = this._canvasOriginal.className\n .split(\" \")\n .filter((x) => !x.startsWith(\"oda-cursor-\"))\n .filter((x) => x)\n .concat(`oda-cursor-${draggerName.toLowerCase()}`)\n .join(\" \");\n\n this.removeTextInput();\n\n const markupMode = MarkupMode[draggerName];\n const konvaMode = MarkupMode2Konva.get(markupMode);\n if (konvaMode) {\n this._markupMode = markupMode;\n this._markupIsActive = true;\n } else {\n this._markupIsActive = false;\n this._konvaTransformer.nodes([]);\n }\n };\n\n resize = () => {\n this._konvaStage?.width(this._canvasOriginal.clientWidth);\n this._konvaStage?.height(this._canvasOriginal.clientHeight);\n };\n\n pan = (event: PanEvent) => {\n const dX = event.dX / window.devicePixelRatio;\n const dY = event.dY / window.devicePixelRatio;\n\n Object.values(MarkupMode).forEach((mode) => this.konvaLayerFind(mode).forEach((x) => x.move({ x: dX, y: dY })));\n };\n\n redirectToViewer = (event) => {\n this._viewer.emit(event);\n };\n\n getDraggers(): Map<string, typeof OdBaseDragger> {\n return null;\n }\n\n clearOverlay(): void {\n this.removeTextInput();\n this._konvaTransformer.nodes([]);\n Object.values(MarkupMode).forEach((mode) => this.konvaLayerFind(mode).forEach((x) => x.destroy()));\n }\n\n getMarkupColor(): { r: number; g: number; b: number } {\n return this._markupColor.RGB;\n }\n\n setMarkupColor(r: number, g: number, b: number): void {\n this._markupColor.setColor(r, g, b);\n }\n\n colorizeAllMarkup(r = 255, g = 0, b = 0): void {\n const hex = new MarkupColor(r, g, b).HexColor;\n Object.values(MarkupMode).forEach((mode) => {\n this.konvaLayerFind(mode).forEach((x) => {\n const konvaObj = MarkupMode2Konva.get(mode).initializer(x);\n if (konvaObj.setColor) konvaObj.setColor(hex);\n });\n });\n\n this._konvaLayer.draw();\n }\n\n setViewpoint(viewpoint: IViewpoint): void {\n const markupColor = viewpoint.custom_fields.markup_color || { r: 255, g: 0, b: 0 };\n this.setMarkupColor(markupColor.r, markupColor.g, markupColor.b);\n\n this.loadMarkup(viewpoint);\n }\n\n getViewpoint(): IViewpoint {\n // TODO: at the current 25.2 state we need VisualizeJS here and below. In the future we need to use it as an external interface.\n if (!this._viewer.visualizeJs) return {};\n\n const viewpoint: IViewpoint = {\n lines: [],\n texts: [],\n arrows: [],\n clouds: [],\n ellipses: [],\n images: [],\n rectangles: [],\n };\n\n viewpoint.snapshot = {\n data: this.combineMarkupWithDrawing(),\n };\n\n viewpoint.custom_fields = {\n markup_color: this.getMarkupColor(),\n };\n\n this.fillViewpointShapes(viewpoint);\n\n viewpoint.description = new Date().toDateString();\n return viewpoint;\n }\n\n createObject(type: string, params: any): IMarkupObject {\n let object;\n let zIndex = this._zIndex;\n\n // TODO: factory?\n switch (type) {\n case \"line\":\n object = new KonvaLine(params);\n zIndex = 1;\n break;\n case \"text\":\n object = new KonvaText(params);\n break;\n case \"rectangle\":\n object = new KonvaRectangle(params);\n zIndex = 1;\n break;\n case \"ellipse\":\n object = new KonvaEllipse(params);\n zIndex = 1;\n break;\n case \"arrow\":\n object = new KonvaArrow(params);\n break;\n case \"image\":\n object = new KonvaImage(params);\n zIndex = 0;\n break;\n case \"cloud\":\n object = new KonvaCloud(params);\n zIndex = 1;\n break;\n default:\n throw new Error(\"Markup CreateObject - unsupported type has been detected.\");\n }\n\n this.addObject(object);\n\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.\"\n object.setZIndex(zIndex);\n this._zIndex++;\n return object;\n }\n\n getObjects(): IMarkupObject[] {\n const objects = [];\n this.konvaLayerFind(MarkupMode.Line).forEach((line) => {\n objects.push(new KonvaLine(null, line));\n });\n\n this.konvaLayerFind(MarkupMode.Text).forEach((text) => {\n objects.push(new KonvaText(null, text));\n });\n\n this.konvaLayerFind(MarkupMode.Rectangle).forEach((rectangle) => {\n objects.push(new KonvaRectangle(null, rectangle));\n });\n\n this.konvaLayerFind(MarkupMode.Ellipse).forEach((ellipse) => {\n objects.push(new KonvaEllipse(null, ellipse));\n });\n\n this.konvaLayerFind(MarkupMode.Arrow).forEach((arrow) => {\n objects.push(new KonvaArrow(null, arrow));\n });\n\n this.konvaLayerFind(MarkupMode.Image).forEach((image) => {\n objects.push(new KonvaImage(null, image));\n });\n\n this.konvaLayerFind(MarkupMode.Cloud).forEach((cloud) => {\n objects.push(new KonvaCloud(null, cloud));\n });\n\n return objects;\n }\n\n getSelectedObjects(): IMarkupObject[] {\n const objects = [];\n\n this._konvaTransformer.nodes().forEach((obj) => {\n const konvaShapeName = obj.className;\n switch (konvaShapeName) {\n case \"Line\":\n objects.push(new KonvaLine(null, obj));\n break;\n case \"Text\":\n objects.push(new KonvaText(null, obj));\n break;\n case \"Rect\":\n objects.push(new KonvaRectangle(null, obj));\n break;\n case \"Ellipse\":\n objects.push(new KonvaEllipse(null, obj));\n break;\n case \"Arrow\":\n objects.push(new KonvaArrow(null, obj));\n break;\n case \"Image\":\n objects.push(new KonvaImage(null, obj));\n break;\n case \"Cloud\":\n objects.push(new KonvaCloud(null, obj));\n break;\n default:\n break;\n }\n });\n\n return objects;\n }\n\n selectObjects(objects: IMarkupObject[]) {\n const selectedObjs = this._konvaTransformer.nodes().concat(objects.map((x) => x.ref()));\n this._konvaTransformer.nodes(selectedObjs);\n }\n\n clearSelected(): void {\n this._konvaTransformer.nodes([]);\n }\n\n private getPoint3dFromArray(array) {\n return { x: array[0], y: array[1], z: array[2] };\n }\n\n private fillViewpointShapes(viewpoint) {\n const markupLines = this.getMarkupLines();\n if (markupLines && markupLines.length > 0) {\n markupLines?.forEach((line) => {\n viewpoint.lines.push(line);\n });\n }\n\n const markupTexts = this.getMarkupTexts();\n if (markupTexts && markupTexts.length > 0) {\n markupTexts?.forEach((text) => {\n viewpoint.texts.push(text);\n });\n }\n\n const markupRectangles = this.getMarkupRectangles();\n if (markupRectangles && markupRectangles.length > 0) {\n markupRectangles?.forEach((rectangle) => {\n viewpoint.rectangles.push(rectangle);\n });\n }\n\n const markupEllipses = this.getMarkupEllipses();\n if (markupEllipses && markupEllipses.length > 0) {\n markupEllipses?.forEach((ellipse) => {\n viewpoint.ellipses.push(ellipse);\n });\n }\n\n const markupArrows = this.getMarkupArrows();\n if (markupArrows && markupArrows.length > 0) {\n markupArrows?.forEach((arrow) => {\n viewpoint.arrows.push(arrow);\n });\n }\n\n const markupImages = this.getMarkupImages();\n if (markupImages && markupImages.length > 0) {\n markupImages?.forEach((image) => {\n viewpoint.images.push(image);\n });\n }\n\n const markupClouds = this.getMarkupClouds();\n if (markupClouds && markupClouds.length > 0) {\n markupClouds?.forEach((cloud) => {\n viewpoint.clouds.push(cloud);\n });\n }\n }\n\n private addObject(object: IMarkupObject): void {\n this._konvaLayer.add(object.ref());\n }\n\n private konvaLayerFind(markupShape: MarkupMode): any {\n const konvaShape = MarkupMode2Konva.get(markupShape);\n if (konvaShape) {\n // for \"draggable\" Konva uses Rectangles in Transformer. We need only Shapes from Layer.\n const konvaShapes = this._konvaLayer.find(konvaShape.name).filter((x) => x.parent instanceof Konva.Layer);\n return konvaShapes;\n }\n }\n\n private initializeKonva(): any {\n // first we need Konva core things: stage and layer\n this._konvaStage = new Konva.Stage({\n container: this._markupContainerName,\n width: this._canvasOriginal.clientWidth,\n height: this._canvasOriginal.clientHeight,\n });\n const stage = this._konvaStage;\n const layer = new Konva.Layer({ pixelRation: window.devicePixelRatio });\n stage.add(layer);\n this._konvaLayer = layer;\n\n const transformer = new Konva.Transformer({\n shouldOverdrawWholeArea: false,\n });\n\n this._konvaTransformer = transformer;\n layer.add(transformer);\n\n let isPaint = false;\n let lastLine;\n\n stage.on(\"mousedown touchstart\", (e) => {\n // do nothing if we mousedown on any shape\n if (!this._markupIsActive || e.target !== stage || this._markupMode === MarkupMode.Text) return;\n\n if (e.target === stage && transformer.nodes().length > 0) {\n transformer.nodes([]);\n return;\n }\n\n const pos = stage.getPointerPosition();\n\n if (this._markupMode === MarkupMode.Line) {\n // add point twice, so we have some drawings even on a simple click\n lastLine = this.addLine([pos.x, pos.y, pos.x, pos.y]);\n\n isPaint = true;\n }\n // 25.2 - currently only for debug purposes:\n else if (this._markupMode === MarkupMode.Rectangle) {\n this.addRectangle({ x: pos.x, y: pos.y }, 50, 50);\n } else if (this._markupMode === MarkupMode.Ellipse) {\n this.addEllipse({ x: pos.x, y: pos.y }, { x: 50, y: 50 });\n } else if (this._markupMode === MarkupMode.Arrow) {\n this.addArrow({ x: pos.x, y: pos.y }, { x: pos.x + 50, y: pos.y + 50 });\n } else if (this._markupMode === MarkupMode.Cloud) {\n this.addCloud({ x: pos.x, y: pos.y }, 200, 400);\n }\n });\n\n stage.on(\"mouseup touchend\", (e) => {\n if (!this._markupIsActive) return;\n isPaint = false;\n });\n\n stage.on(\"mousemove touchmove\", (e) => {\n if (!this._markupIsActive) return;\n if (!isPaint) {\n return;\n }\n\n // prevent scrolling on touch devices\n //e.evt.preventDefault();\n\n const pos = stage.getPointerPosition();\n const newPoints = lastLine.points().concat([pos.x, pos.y]);\n lastLine.points(newPoints);\n });\n\n // clicks should select/deselect shapes\n stage.on(\"click tap\", (e) => {\n if (!this._markupIsActive) return;\n\n // if click on empty area - remove all selections\n if (e.target === stage) {\n if (this._markupMode === MarkupMode.Text) {\n if (this._textInputRef) this.addText(this._textInputRef.value, this._textInputPos, this._textInputAngle);\n else if (transformer.nodes().length === 0) {\n const pos = stage.getPointerPosition();\n this.createTextInput(pos, e.evt.pageX, e.evt.pageY, 0, null);\n }\n }\n transformer.nodes([]);\n return;\n }\n\n if (e.target.className === \"Text\" && transformer.nodes().length === 1 && transformer.nodes()[0] === e.target) {\n if (this._textInputRef) this.addText(this._textInputRef.value, this._textInputPos, this._textInputAngle);\n else\n this.createTextInput(\n { x: e.target.attrs.x, y: e.target.attrs.y },\n e.evt.pageX,\n e.evt.pageY,\n e.target.attrs.rotation,\n e.target.attrs.text\n );\n return;\n } else {\n this.removeTextInput();\n }\n\n if (transformer.nodes().filter((x) => x.className === \"Cloud\").length > 0 || e.target.className === \"Cloud\") {\n transformer.rotateEnabled(false);\n } else {\n transformer.rotateEnabled(true);\n }\n\n // do we pressed shift or ctrl?\n const metaPressed = e.evt.shiftKey || e.evt.ctrlKey || e.evt.metaKey;\n const isSelected = transformer.nodes().indexOf(e.target) >= 0;\n\n if (!metaPressed && !isSelected) {\n // if no key pressed and the node is not selected\n // select just one\n transformer.nodes([e.target]);\n } else if (metaPressed && isSelected) {\n // if we pressed keys and node was selected\n // we need to remove it from selection:\n const nodes = transformer.nodes().slice(); // use slice to have new copy of array\n // remove node from array\n nodes.splice(nodes.indexOf(e.target), 1);\n transformer.nodes(nodes);\n } else if (metaPressed && !isSelected) {\n // add the node into selection\n const nodes = transformer.nodes().concat([e.target]);\n transformer.nodes(nodes);\n }\n });\n\n const container = stage.container();\n container.tabIndex = 1;\n // focus it\n // also stage will be in focus on its click\n container.focus();\n\n container.addEventListener(\"keydown\", (e) => {\n if (!this._markupIsActive) return;\n if (e.code === \"Delete\") {\n const trNodes = this._konvaTransformer.nodes();\n if (trNodes.length > 0) {\n this._konvaTransformer.nodes().forEach((x) => x.destroy());\n this._konvaTransformer.nodes([]);\n }\n layer.draw();\n return;\n }\n e.preventDefault();\n });\n }\n\n private destroyKonva() {\n this.clearOverlay();\n\n this._konvaStage.destroy();\n\n this._konvaLayer = undefined;\n this._konvaTransformer = undefined;\n this._konvaStage = undefined;\n }\n\n private getMarkupLines() {\n const lines = [];\n this.konvaLayerFind(MarkupMode.Line).forEach((line) => {\n const linePoints = line.points();\n if (!linePoints) return;\n const worldPoints = [];\n const absoluteTransform = line.getAbsoluteTransform();\n for (let i = 0; i < linePoints.length; i += 2) {\n // we need getAbsoluteTransform because inside Konva position starts from {0, 0}\n // https://stackoverflow.com/a/57641487 - check answer's comments\n const atPoint = absoluteTransform.point({ x: linePoints[i], y: linePoints[i + 1] });\n const worldPoint = this._viewer\n .visViewer()\n .screenToWorld(atPoint.x * window.devicePixelRatio, atPoint.y * window.devicePixelRatio);\n worldPoints.push(worldPoint);\n }\n\n const konvaLine = new KonvaLine(null, line);\n lines.push({\n id: konvaLine.id(),\n points: worldPoints.map((p) => this.getPoint3dFromArray(p)),\n color: konvaLine.getColor() || \"ff0000\",\n type: konvaLine.getLineType() || \"solid\",\n width: konvaLine.getLineWidth() || 3,\n });\n });\n\n return lines;\n }\n\n private getMarkupTexts() {\n const texts = [];\n\n const textSize = 0.02;\n let textScale = 1.0;\n\n const projMtrx = this._viewer.visViewer().activeView.projectionMatrix;\n const mtrxNumber = projMtrx.get(1, 1);\n const tol = 1.0e-6;\n if (mtrxNumber > tol || mtrxNumber < -tol) {\n textScale = 1 / mtrxNumber;\n }\n\n this.konvaLayerFind(MarkupMode.Text).forEach((text) => {\n if (!text) return;\n\n const position = this._viewer\n .visViewer()\n .screenToWorld(text.x() * window.devicePixelRatio, text.y() * window.devicePixelRatio);\n\n const shape = new KonvaText(null, text);\n texts.push({\n id: shape.id(),\n position: this.getPoint3dFromArray(position),\n text: shape.getText(),\n text_size: textSize * textScale,\n angle: shape.getRotation(),\n color: shape.getColor(),\n font_size: shape.getFontSize(),\n });\n });\n\n return texts;\n }\n\n private getMarkupRectangles() {\n const rectangles = [];\n this.konvaLayerFind(MarkupMode.Rectangle).forEach((rect) => {\n const position = rect.position();\n const worldPoint = this._viewer\n .visViewer()\n .screenToWorld(position.x * window.devicePixelRatio, position.y * window.devicePixelRatio);\n\n const shape = new KonvaRectangle(null, rect);\n rectangles.push({\n id: shape.id(),\n position: this.getPoint3dFromArray(worldPoint),\n width: shape.getWidth(),\n height: shape.getHeigth(),\n line_width: shape.getLineWidth(),\n color: shape.getColor(),\n });\n });\n\n return rectangles;\n }\n\n private getMarkupEllipses() {\n const ellipses = [];\n this.konvaLayerFind(MarkupMode.Ellipse).forEach((ellipse) => {\n const position = ellipse.position();\n const worldPoint = this._viewer\n .visViewer()\n .screenToWorld(position.x * window.devicePixelRatio, position.y * window.devicePixelRatio);\n\n const shape = new KonvaEllipse(null, ellipse);\n ellipses.push({\n id: shape.id(),\n position: this.getPoint3dFromArray(worldPoint),\n radius: { x: ellipse.getRadiusX(), y: ellipse.getRadiusY() },\n line_width: shape.getLineWidth(),\n color: shape.getColor(),\n });\n });\n\n return ellipses;\n }\n\n private getMarkupArrows() {\n const arrows = [];\n this.konvaLayerFind(MarkupMode.Arrow).forEach((arrow) => {\n // we need getAbsoluteTransform because inside Konva position starts from {0, 0}\n const absoluteTransform = arrow.getAbsoluteTransform();\n\n const atStartPoint = absoluteTransform.point({ x: arrow.points()[0], y: arrow.points()[1] });\n const worldStartPoint = this._viewer\n .visViewer()\n .screenToWorld(atStartPoint.x * window.devicePixelRatio, atStartPoint.y * window.devicePixelRatio);\n\n const atEndPoint = absoluteTransform.point({ x: arrow.points()[2], y: arrow.points()[3] });\n const worldEndPoint = this._viewer\n .visViewer()\n .screenToWorld(atEndPoint.x * window.devicePixelRatio, atEndPoint.y * window.devicePixelRatio);\n\n const shape = new KonvaArrow(null, arrow);\n arrows.push({\n id: shape.id(),\n start: this.getPoint3dFromArray(worldStartPoint),\n end: this.getPoint3dFromArray(worldEndPoint),\n color: shape.getColor(),\n });\n });\n\n return arrows;\n }\n\n private getMarkupImages() {\n const images = [];\n this.konvaLayerFind(MarkupMode.Image).forEach((image) => {\n const position = image.position();\n const worldPoint = this._viewer\n .visViewer()\n .screenToWorld(position.x * window.devicePixelRatio, position.y * window.devicePixelRatio);\n\n const shape = new KonvaImage(null, image);\n images.push({\n id: shape.id(),\n position: this.getPoint3dFromArray(worldPoint),\n src: shape.getSrc(),\n width: shape.getWidth(),\n height: shape.getHeight(),\n });\n });\n\n return images;\n }\n\n private getMarkupClouds() {\n const clouds = [];\n this.konvaLayerFind(MarkupMode.Cloud).forEach((cloud) => {\n const position = cloud.position();\n const worldPoint = this._viewer\n .visViewer()\n .screenToWorld(position.x * window.devicePixelRatio, position.y * window.devicePixelRatio);\n\n const shape = new KonvaCloud(null, cloud);\n clouds.push({\n id: shape.id(),\n position: this.getPoint3dFromArray(worldPoint),\n width: shape.getWidth(),\n height: shape.getHeigth(),\n line_width: shape.getLineWidth(),\n color: shape.getColor(),\n });\n });\n\n return clouds;\n }\n\n private loadMarkup(viewpoint: IViewpoint) {\n viewpoint.lines?.forEach((vpLine) => {\n const linePoints = [];\n vpLine.points.forEach((point) => {\n const screenPoint = utils.worldToScreen(\n [point.x, point.y, point.z],\n this._viewer.visualizeJs,\n this._viewer.visViewer()\n );\n linePoints.push(screenPoint.x);\n linePoints.push(screenPoint.y);\n });\n\n this.addLine(linePoints, vpLine.color, vpLine.type, vpLine.width, vpLine.id);\n });\n\n viewpoint.texts?.forEach((vpText) => {\n const screenPoint = utils.worldToScreen(\n [vpText.position.x, vpText.position.y, vpText.position.z],\n this._viewer.visualizeJs,\n this._viewer.visViewer()\n );\n this.addText(vpText.text, screenPoint, vpText.angle, vpText.color, vpText.text_size, vpText.font_size, vpText.id);\n });\n\n viewpoint.rectangles?.forEach((vpRect) => {\n const screenPoint = utils.worldToScreen(\n [vpRect.position.x, vpRect.position.y, vpRect.position.z],\n this._viewer.visualizeJs,\n this._viewer.visViewer()\n );\n\n this.addRectangle(\n { x: screenPoint.x, y: screenPoint.y },\n vpRect.width,\n vpRect.height,\n vpRect.line_width,\n vpRect.color,\n vpRect.id\n );\n });\n\n viewpoint.ellipses?.forEach((vpEllipse) => {\n const screenPoint = utils.worldToScreen(\n [vpEllipse.position.x, vpEllipse.position.y, vpEllipse.position.z],\n this._viewer.visualizeJs,\n this._viewer.visViewer()\n );\n\n this.addEllipse(\n { x: screenPoint.x, y: screenPoint.y },\n { x: vpEllipse.radius.x, y: vpEllipse.radius.y },\n vpEllipse.line_width,\n vpEllipse.color,\n vpEllipse.id\n );\n });\n\n viewpoint.arrows?.forEach((vpArrow) => {\n const startPoint = utils.worldToScreen(\n [vpArrow.start.x, vpArrow.start.y, vpArrow.start.z],\n this._viewer.visualizeJs,\n this._viewer.visViewer()\n );\n\n const endPoint = utils.worldToScreen(\n [vpArrow.end.x, vpArrow.end.y, vpArrow.end.z],\n this._viewer.visualizeJs,\n this._viewer.visViewer()\n );\n\n this.addArrow({ x: startPoint.x, y: startPoint.y }, { x: endPoint.x, y: endPoint.y }, vpArrow.color, vpArrow.id);\n });\n\n viewpoint.clouds?.forEach((vpCloud) => {\n const screenPoint = utils.worldToScreen(\n [vpCloud.position.x, vpCloud.position.y, vpCloud.position.z],\n this._viewer.visualizeJs,\n this._viewer.visViewer()\n );\n\n this.addCloud(\n { x: screenPoint.x, y: screenPoint.y },\n vpCloud.width,\n vpCloud.height,\n vpCloud.line_width,\n vpCloud.color,\n vpCloud.id\n );\n });\n\n viewpoint.images?.forEach((vpImage) => {\n const screenPoint = utils.worldToScreen(\n [vpImage.position.x, vpImage.position.y, vpImage.position.z],\n this._viewer.visualizeJs,\n this._viewer.visViewer()\n );\n\n this.addImage({ x: screenPoint.x, y: screenPoint.y }, vpImage.src, vpImage.width, vpImage.height, vpImage.id);\n });\n }\n\n private combineMarkupWithDrawing() {\n const trNodes = this._konvaTransformer.nodes();\n if (trNodes.length > 0) {\n this._konvaTransformer.nodes([]);\n }\n\n const tempCanvas = document.createElement(\"canvas\");\n tempCanvas.height = this._canvasOriginal.height;\n tempCanvas.width = this._canvasOriginal.width;\n const ctx = tempCanvas.getContext(\"2d\");\n ctx.drawImage(this._canvasOriginal, 0, 0);\n ctx.drawImage(this._konvaStage.toCanvas({ pixelRatio: window.devicePixelRatio }), 0, 0);\n return tempCanvas.toDataURL(\"image/jpeg\", 0.25);\n }\n\n private addLine(\n linePoints: number[],\n color?: string,\n type?: LineType,\n width?: number,\n id?: string\n ): Konva.Line | void {\n if (!linePoints || linePoints.length === 0) return;\n const points: { x: number; y: number }[] = [];\n for (let i = 0; i < linePoints.length; i += 2) {\n points.push({ x: linePoints[i], y: linePoints[i + 1] });\n }\n\n const konvaLine = new KonvaLine({\n points,\n type: type || \"solid\",\n width: width || this.lineWidth,\n color: color || this._markupColor.HexColor,\n id,\n });\n\n const obj = konvaLine.ref();\n this._konvaLayer.add(obj);\n return obj;\n }\n\n private createTextInput(pos: Konva.Vector2d, inputX: number, inputY: number, angle: number, text: string): void {\n if (!this._textInputRef) {\n this._textInputPos = pos;\n this._textInputAngle = angle;\n this._textInputRef = document.createElement(\"textarea\");\n this._textInputRef.style.zIndex = \"9999\";\n this._textInputRef.style.position = \"absolute\";\n this._textInputRef.style.display = \"block\";\n this._textInputRef.style.top = inputY + \"px\";\n this._textInputRef.style.left = inputX + \"px\";\n this._textInputRef.onkeydown = (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n this.addText(this._textInputRef.value, this._textInputPos, this._textInputAngle);\n }\n if (event.key === \"Escape\") {\n event.preventDefault();\n this.removeTextInput();\n }\n };\n if (text) this._textInputRef.value = text;\n document.body.appendChild(this._textInputRef);\n\n setTimeout(() => {\n this._textInputRef.focus();\n }, 50);\n } else {\n this.removeTextInput();\n }\n }\n\n private removeTextInput(): void {\n this._textInputRef?.remove();\n this._textInputRef = null;\n this._textInputPos = null;\n this._textInputAngle = 0;\n }\n\n private addText(\n specifiedText: string,\n position: Konva.Vector2d,\n angle?: number,\n color?: string,\n textSize?: number,\n fontSize?: number,\n id?: string\n ): void {\n if (specifiedText) {\n const tol = 1.0e-6;\n\n // in case we have old viewpoint without font_size\n if (textSize && textSize > tol && (!fontSize || fontSize < tol)) {\n const size = 0.02;\n let scale = 1.0;\n\n const projMtrx = this._viewer.visViewer().activeView.projectionMatrix;\n const mtrxNumber = projMtrx.get(1, 1);\n\n if (mtrxNumber > tol || mtrxNumber < -tol) {\n scale = 1 / mtrxNumber;\n }\n fontSize = textSize / (scale / size) / 34;\n }\n\n const konvaText = new KonvaText({\n position: { x: position.x, y: position.y },\n text: specifiedText,\n rotation: angle,\n fontSize,\n color: color || this._markupColor.HexColor,\n id,\n });\n\n this._konvaLayer.add(konvaText.ref());\n }\n\n const trNodes = this._konvaTransformer.nodes();\n if (trNodes.length > 0) {\n // in case of edit - remove old Konva.Text object\n trNodes[0].destroy();\n this._konvaTransformer.nodes([]);\n }\n\n this.removeTextInput();\n\n return;\n }\n\n private addRectangle(\n position: Konva.Vector2d,\n width: number,\n height: number,\n lineWidth?: number,\n color?: string,\n id?: string\n ): Konva.Rect | void {\n if (!position) return;\n\n const konvaRectangle = new KonvaRectangle({\n position,\n width,\n height,\n lineWidth: lineWidth || this.lineWidth,\n color: color || this._markupColor.HexColor,\n id,\n });\n\n const obj = konvaRectangle.ref();\n this._konvaLayer.add(obj);\n return obj;\n }\n\n private addEllipse(\n position: { x: number; y: number },\n radius: { x: number; y: number },\n lineWidth?: number,\n color?: string,\n id?: string\n ): Konva.Ellipse | void {\n if (!position) return;\n\n const konvaEllipse = new KonvaEllipse({\n position,\n radius,\n lineWidth,\n color: color || this._markupColor.HexColor,\n id,\n });\n\n const obj = konvaEllipse.ref();\n this._konvaLayer.add(obj);\n return obj;\n }\n\n private addArrow(\n start: { x: number; y: number },\n end: { x: number; y: number },\n color?: string,\n id?: string\n ): Konva.Arrow | void {\n if (!start || !end) return;\n\n const konvaArrow = new KonvaArrow({\n start,\n end,\n color: color || this._markupColor.HexColor,\n id,\n });\n\n const obj = konvaArrow.ref();\n this._konvaLayer.add(obj);\n return obj;\n }\n\n private addCloud(\n position: { x: number; y: number },\n width: number,\n height: number,\n lineWidth?: number,\n color?: string,\n id?: string\n ): Konva.Shape | void {\n if (!position || !width || !height) return;\n\n const konvaCloud = new KonvaCloud({\n position,\n width,\n height,\n color: color || this._markupColor.HexColor,\n lineWidth: lineWidth || this.lineWidth,\n id,\n });\n\n const obj = konvaCloud.ref();\n this._konvaLayer.add(obj);\n return obj;\n }\n\n private addImage(\n position: { x: number; y: number },\n src: string,\n width: number,\n height: number,\n id?: string\n ): Konva.Image | void {\n if (!position || !width || !height) return;\n\n const konvaImage = new KonvaImage({\n position,\n src,\n width,\n height,\n id,\n });\n\n const obj = konvaImage.ref();\n this._konvaLayer.add(obj);\n return obj;\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Viewer } from \"../Viewer\";\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\n\nexport const MARKUP_ENTITY_LINE = \"$MarkupTempEntity_Line\";\n\nexport class OdaLineDragger extends OdBaseDragger {\n protected entity: any;\n protected points: any[];\n protected drawPoints: any[];\n\n constructor(subject: Viewer) {\n super(subject);\n this.press = false;\n }\n\n override dispose(): void {\n super.dispose();\n this.end();\n this.points = null;\n this.drawPoints = null;\n }\n\n override start(x: number, y: number): void {\n const point = this.getViewer().screenToWorld(x, y);\n this.drawPoints = [point[0], point[1], point[2]];\n }\n\n override drag(x: number, y: number): void {\n if (this.isDragging) {\n const point = this.getViewer().screenToWorld(x, y);\n this.drawPoints.push(point[0], point[1], point[2]);\n this._updateFrame();\n }\n }\n\n override end(): void {\n if (this.entity) {\n this.entity.delete();\n this.drawPoints = null;\n this.entity = null;\n }\n }\n\n private _updateFrame(): void {\n if (this.entity) {\n const model = this.getViewer().getMarkupModel();\n model.removeEntity(this.entity);\n model.delete();\n this.entity.delete();\n }\n\n this.entity = this.getActiveMarkupEntity(MARKUP_ENTITY_LINE);\n\n const entityPtr = this.entity.openObject();\n entityPtr.appendPolyline(this.drawPoints).delete();\n entityPtr.delete();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2021, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\nimport { Viewer } from \"../Viewer\";\nimport { Point3d } from \"./Common/Geometry\";\nimport { OdBaseDragger } from \"./Common/OdBaseDragger\";\n\nexport const MARKUP_ENTITY_TEXT = \"$MarkupTempEntity_Text\";\n\nexport class OdaTextDragger extends OdBaseDragger {\n protected textRef: HTMLTextAreaElement;\n protected m_center: Point3d;\n protected entity: any;\n protected readonly TEXT_HEIGHT_ALIGN = 24;\n\n constructor(subject: Viewer) {\n super(subject);\n this.press = false;\n }\n\n override dispose(): void {\n super.dispose();\n this.textRef?.remove();\n this.textRef = null;\n }\n\n private _finishInput(): void {\n if (this.textRef && this.textRef.value.trimLeft()) {\n this._updateFrame();\n }\n this.textRef?.remove();\n this.textRef = null;\n }\n\n override start(x: number, y: number, absoluteX: number, absoluteY: number) {\n if (!this.textRef) {\n this.textRef = document.createElement(\"textarea\");\n this.textRef.style.zIndex = \"9999\";\n this.textRef.style.position = \"absolute\";\n this.textRef.style.display = \"block\";\n this.textRef.style.top = absoluteY + \"px\";\n this.textRef.style.left = absoluteX + \"px\";\n this.textRef.onkeypress = (event) => {\n if (event.key === \"Enter\") {\n event.preventDefault();\n this._finishInput();\n }\n };\n document.body.appendChild(this.textRef);\n\n this.press = true;\n this.m_center = this.screenToWorld(x, y + this.TEXT_HEIGHT_ALIGN);\n this.needInputText = true;\n } else {\n this._finishInput();\n }\n }\n\n private _updateFrame(): void {\n this.entity = this.getActiveMarkupEntity(MARKUP_ENTITY_TEXT);\n const entityPtr = this.entity.openObject();\n\n const view = this.getViewer().activeView;\n const pos = this.toPoint(view.viewPosition);\n const target = this.toPoint(view.viewTarget);\n\n const eyeToWorld = view.eyeToWorldMatrix;\n const eyeDir = pos.sub(target).asVector();\n\n const xDir = this.toVector([1.0, 0.0, 0.0]);\n const direction = xDir.transformBy(eyeToWorld);\n\n const mtrx = this.createMatrix3d();\n mtrx.setToWorldToPlane(this.toGeVector(eyeDir));\n direction.transformBy(mtrx);\n\n const angel = -Math.atan2(-direction.y, direction.x);\n\n const textSize = 0.02;\n let textScale = 1.0;\n\n const projMtrx = view.projectionMatrix;\n const mtrxNumber = projMtrx.get(1, 1);\n const tol = 1.0e-6;\n if (!(mtrxNumber < tol && mtrxNumber > -tol)) {\n textScale = 1 / mtrxNumber;\n }\n\n const geomData = entityPtr.appendText(this.toGePoint(this.m_center), this.textRef.value.trimLeft());\n const textPtr = geomData.openAsText();\n\n textPtr.setNormal(this.toGeVector(eyeDir));\n textPtr.setRotation(angel);\n textPtr.setTextSize(textSize * textScale);\n textPtr.delete();\n geomData.delete();\n entityPtr.delete();\n }\n}\n","import { ILine, IText, IViewpoint } from \"@inweb/viewer-core\";\n\nimport { IMarkup, MarkupMode } from \"../../IMarkup\";\nimport { Viewer } from \"../../../Viewer\";\nimport { OdBaseDragger } from \"../../../Draggers/Common/OdBaseDragger\";\nimport { MARKUP_ENTITY_LINE, OdaLineDragger } from \"../../../Draggers/OdaLineDragger\";\nimport { MARKUP_ENTITY_TEXT, OdaTextDragger } from \"../../../Draggers/OdaTextDragger\";\nimport { IMarkupObject } from \"../../Api/IMarkupObject\";\n\nexport class VisualizeMarkup implements IMarkup {\n private _viewer: Viewer;\n protected _markupColor = { r: 255, g: 0, b: 0 };\n\n public lineWidth = 0;\n\n initialize(viewer: Viewer, canvas: HTMLCanvasElement, canvasEvents: string[]): void {\n this._viewer = viewer;\n }\n\n dispose(): void {}\n\n getDraggers(): Map<string, typeof OdBaseDragger> {\n return new Map<string, typeof OdBaseDragger>([\n [MarkupMode.Line, OdaLineDragger],\n [MarkupMode.Text, OdaTextDragger],\n ]);\n }\n\n clearOverlay(): void {\n if (!this._viewer.visualizeJs) return;\n\n const visViewer = this._viewer.visViewer();\n const model = visViewer.getMarkupModel();\n model.clearEntities();\n model.delete();\n\n this._viewer.update();\n }\n\n getMarkupColor(): { r: number; g: number; b: number } {\n return this._markupColor;\n }\n\n setMarkupColor(r: number, g: number, b: number): void {\n const color = { r, g, b };\n this._markupColor = color;\n }\n\n colorizeAllMarkup(r = 255, g = 0, b = 0): void {\n if (!this._viewer.visualizeJs) return;\n\n const visViewer = this._viewer.visViewer();\n const model = visViewer.getMarkupModel();\n const itr = model.getEntitiesIterator();\n for (; !itr.done(); itr.step()) {\n const entityId = itr.getEntity();\n const entityPtr = entityId.openObject();\n const entityName = entityPtr.getName();\n\n if (entityName === MARKUP_ENTITY_LINE || entityName === MARKUP_ENTITY_TEXT) {\n entityPtr.setColor(r, g, b);\n }\n\n entityPtr.delete();\n }\n itr.delete();\n\n this._viewer.update();\n }\n\n setViewpoint(viewpoint: IViewpoint): void {\n function getLogicalPoint3dAsArray(point3d) {\n return [point3d.x, point3d.y, point3d.z];\n }\n\n function getPoint3d(module, gePoint) {\n return module.Point3d.createFromArray(gePoint);\n }\n\n if (!this._viewer.visualizeJs) return;\n\n const visLib = this._viewer.visLib();\n const visViewer = visLib.getViewer();\n const activeView = visViewer.activeView;\n\n this._viewer.syncOverlay();\n\n const markupColor = viewpoint.custom_fields.markup_color || { r: 255, g: 0, b: 0 };\n this.setMarkupColor(markupColor.r, markupColor.g, markupColor.b);\n\n if (viewpoint.lines) {\n for (const line of viewpoint.lines) {\n const entityId = this._viewer.addMarkupEntity(MARKUP_ENTITY_LINE);\n const entityPtr = entityId.openObject();\n\n const entityData = [];\n for (const point of line.points) {\n entityData.push(point.x, point.y, point.z);\n }\n const geomData = entityPtr.appendPolyline(entityData);\n\n geomData.delete();\n entityPtr.delete();\n }\n }\n\n if (viewpoint.texts) {\n const pos = getPoint3d(visLib, activeView.viewPosition);\n const target = getPoint3d(visLib, activeView.viewTarget);\n const normal = pos.sub(target).asVector();\n\n for (const text of viewpoint.texts) {\n const entityId = this._viewer.addMarkupEntity(MARKUP_ENTITY_TEXT);\n const entityPtr = entityId.openObject();\n\n const geomData = entityPtr.appendText(getLogicalPoint3dAsArray(text.position), text.text);\n\n const textPtr = geomData.openAsText();\n textPtr.setNormal(getLogicalPoint3dAsArray(normal));\n textPtr.setRotation(text.angle);\n textPtr.setTextSize(text.text_size);\n\n textPtr.delete();\n geomData.delete();\n entityPtr.delete();\n }\n }\n\n this._viewer.update();\n }\n\n getViewpoint(): IViewpoint {\n function getLogicalPoint3dFromArray(array) {\n return { x: array[0], y: array[1], z: array[2] };\n }\n\n if (!this._viewer.visualizeJs) return {};\n\n const visLib = this._viewer.visLib();\n const visViewer = visLib.getViewer();\n\n const viewpoint: IViewpoint = {\n lines: [],\n texts: [],\n };\n\n const model = visViewer.getMarkupModel();\n const itr = model.getEntitiesIterator();\n for (; !itr.done(); itr.step()) {\n const entityId = itr.getEntity();\n const entityPtr = entityId.openObject();\n const entityName = entityPtr.getName();\n\n const geomItr = entityPtr.getGeometryDataIterator();\n if (geomItr.done()) {\n entityPtr.delete();\n continue;\n }\n\n const geometryId = geomItr.getGeometryData();\n\n if (entityName === MARKUP_ENTITY_LINE) {\n const polylinePtr = geometryId.openAsPolyline();\n const points = polylinePtr.getPoints();\n\n const line: ILine = {\n points: [],\n };\n for (const point of points) {\n line.points.push(getLogicalPoint3dFromArray(point));\n }\n\n viewpoint.lines.push(line);\n polylinePtr.delete();\n } else if (entityName === MARKUP_ENTITY_TEXT) {\n const textPtr = geometryId.openAsText();\n const position = textPtr.getPosition();\n\n const text: IText = {\n position: getLogicalPoint3dFromArray(position),\n text: textPtr.getString(),\n angle: textPtr.getRotation(),\n text_size: textPtr.getTextSize(),\n };\n\n viewpoint.texts.push(text);\n textPtr.delete();\n }\n\n entityPtr.delete();\n }\n itr.delete();\n\n viewpoint.snapshot = {\n data: visLib.canvas.toDataURL(\"image/jpeg\", 0.25),\n };\n\n viewpoint.custom_fields = {\n markup_color: this.getMarkupColor(),\n };\n\n viewpoint.description = new Date().toDateString();\n return viewpoint;\n }\n\n getLayer(): any {\n throw new Error(\"Not implemented yet\");\n }\n\n createObject(type: string, params: any): IMarkupObject {\n throw new Error(\"Not implemented yet\");\n }\n\n getObjects(): IMarkupObject[] {\n throw new Error(\"Not implemented yet\");\n }\n\n getSelectedObjects(): IMarkupObject[] {\n throw new Error(\"Not implemented yet\");\n }\n\n selectObjects(objects: IMarkupObject[]): void {\n throw new Error(\"Not implemented yet\");\n }\n\n clearSelected(): void {\n throw new Error(\"Not implemented yet\");\n }\n}\n","import { IMarkup, MarkupType } from \"./IMarkup\";\nimport { KonvaMarkup } from \"./Impl/Konva/KonvaMarkup\";\nimport { VisualizeMarkup } from \"./Impl/Visualize/VisualizeMarkup\";\n\nexport class MarkupFactory {\n public static createMarkup(markupType: MarkupType): IMarkup {\n let markup;\n switch (markupType) {\n case MarkupType.Konva:\n markup = this.createKonva();\n break;\n\n case MarkupType.Visualize:\n markup = this.createVisualize();\n break;\n\n default:\n throw new Error(\"Error during Markup Initialization. Markup Type is unknown.\");\n break;\n }\n\n return markup;\n }\n\n private static createKonva(): IMarkup {\n return new KonvaMarkup();\n }\n\n private static createVisualize(): IMarkup {\n return new VisualizeMarkup();\n }\n}\n","///////////////////////////////////////////////////////////////////////////////\n// Copyright (C) 2002-2023, Open Design Alliance (the \"Alliance\").\n// All rights reserved.\n//\n// This software and its documentation and related materials are owned by\n// the Alliance. The software may only be incorporated into application\n// programs owned by members of the Alliance, subject to a signed\n// Membership Agreement and Supplemental Software License Agreement with the\n// Alliance. The structure and organization of this software are the valuable\n// trade secrets of the Alliance and its suppliers. The software is also\n// protected by copyright law and international treaty provisions. Application\n// programs incorporating this software must include the following statement\n// with their copyright notices:\n//\n// This application incorporates Open Design Alliance software pursuant to a\n// license agreement with Open Design Alliance.\n// Open Design Alliance Copyright (C) 2002-2021 by Open Design Alliance.\n// All rights reserved.\n//\n// By use of this software, its documentation or related materials, you\n// acknowledge and accept the above terms.\n///////////////////////////////////////////////////////////////////////////////\n\nimport { EventEmitter2 } from \"@inweb/eventemitter2\";\nimport { Assembly, Client, File, Model } from \"@inweb/client\";\nimport {\n CANVAS_EVENTS,\n commands,\n IClippingPlane,\n IOrthogonalCamera,\n IViewpoint,\n IViewer,\n Options,\n OptionsData,\n OptionsEventMap,\n ViewerEventMap,\n} from \"@inweb/viewer-core\";\n\nimport { OdBaseDragger } from \"./Draggers/Common/OdBaseDragger\";\nimport { MeasureLineDragger } from \"./Draggers/MeasureLineDragger/index\";\nimport { OdaWalkDragger } from \"./Draggers/OdaWalkDragger\";\nimport { OdCuttingPlaneXAxisDragger } from \"./Draggers/OdCuttingPlaneXAxisDragger\";\nimport { OdCuttingPlaneYAxisDragger } from \"./Draggers/OdCuttingPlaneYAxisDragger\";\nimport { OdCuttingPlaneZAxisDragger } from \"./Draggers/OdCuttingPlaneZAxisDragger\";\nimport { OdOrbitDragger } from \"./Draggers/OdOrbitDragger\";\nimport { OdPanDragger } from \"./Draggers/OdPanDragger\";\nimport { OdZoomDragger } from \"./Draggers/OdZoomDragger\";\nimport { OdZoomWheelDragger } from \"./Draggers/OdZoomWheelDragger\";\nimport { OdZoomWindowDragger } from \"./Draggers/OdZoomWindowDragger/index\";\nimport { OrbitAroundBuildingDragger } from \"./Draggers/OrbitAroundBuildingDragger\";\nimport { GestureManager } from \"./Draggers/Common/GestureManager\";\n\nimport { loadVisualizeJs } from \"./utils\";\nimport { LoaderFactory } from \"./Loaders/LoaderFactory\";\nimport { MarkupFactory } from \"./Markup/MarkupFactory\";\nimport { IMarkup, MarkupType } from \"./Markup/IMarkup\";\n\nconst OVERLAY_VIEW_NAME = \"$OVERLAY_VIEW_NAME\";\n\nconst isExist = (value) => value !== undefined && value !== null;\n\n/**\n * The `Client.js` library class that provides methods to integrate with the\n * [VisualizeJS](https://cloud.opendesign.com/docs/index.html#/visualizejs) library.\n */\n\nexport class Viewer extends EventEmitter2<ViewerEventMap & OptionsEventMap> implements IViewer {\n private _activeDragger: OdBaseDragger | null;\n private _zoomWheelDragger: OdZoomWheelDragger | null;\n private _gestureManager: GestureManager | null;\n private _enableAutoUpdate: boolean;\n private _isNeedRender: boolean;\n private _isRunAsyncUpdate: boolean;\n private _renderTime: DOMHighResTimeStamp;\n\n protected _options: Options;\n protected _visualizeJsUrl: string;\n protected _abortControllerForReferences: AbortController | undefined;\n\n private canvaseventlistener: (event: Event) => void;\n\n public draggerFactory: Map<string, typeof OdBaseDragger>;\n public canvasEvents: string[];\n private frameId: number;\n private _resizeObserver: ResizeObserver | undefined;\n public canvas: HTMLCanvasElement | undefined;\n public markup: IMarkup;\n\n public visualizeJs: any;\n public _abortController: AbortController | undefined;\n public _abortControllerForRequestMap: Map<string, AbortController> | undefined;\n public client: Client;\n\n /**\n * @param client - The `Client` instance that provides access to a server. Do not specify\n * `Client` if you need a standalone viewer instance without access to server models.\n * @param params - An object containing viewer configuration parameters.\n * @param params.visualizeJsUrl - `VisualizeJS` library URL. Set this URL to use your own\n * library instance, or leave it undefined or blank to use the default URL defined by\n * `Client.js` you are using.\n *\n * _Note: Your own `VisualizeJS` library version must match the version of the `Client.js`\n * you are using._\n * @param params.enableAutoUpdate - Enable auto-update of the viewer after any changes. If\n * the auto-update is disabled, you need to update the `VisualizeJS` viewer and the active\n * dragger manually using the `update` event. Default is `true`.\n */\n constructor(\n client?: Client,\n params: { visualizeJsUrl?: string; enableAutoUpdate?: boolean; markupType?: MarkupType } = {\n markupType: MarkupType.Konva,\n }\n ) {\n super();\n this.configure(params);\n\n this._options = new Options(this);\n\n this.client = client;\n\n this._activeDragger = null;\n this._renderTime = 0;\n\n this.markup = MarkupFactory.createMarkup(params.markupType ?? MarkupType.Konva);\n\n this.draggerFactory = new Map<string, typeof OdBaseDragger>();\n this.registerDragger(\"Pan\", OdPanDragger);\n this.registerDragger(\"Orbit\", OdOrbitDragger);\n this.registerDragger(\"Zoom\", OdZoomDragger);\n this.registerDragger(\"ZoomWindow\", OdZoomWindowDragger);\n this.registerDragger(\"OrbitAroundBuilding\", OrbitAroundBuildingDragger);\n this.registerDragger(\"MeasureLine\", MeasureLineDragger);\n this.registerDragger(\"CuttingPlaneXAxis\", OdCuttingPlaneXAxisDragger);\n this.registerDragger(\"CuttingPlaneYAxis\", OdCuttingPlaneYAxisDragger);\n this.registerDragger(\"CuttingPlaneZAxis\", OdCuttingPlaneZAxisDragger);\n this.registerDragger(\"Walk\", OdaWalkDragger);\n\n const markupDraggers = this.markup.getDraggers();\n markupDraggers?.forEach((value, key) => {\n this.registerDragger(key, value);\n });\n\n this.canvasEvents = CANVAS_EVENTS;\n this.canvaseventlistener = (event: Event) => this.emit(event);\n\n this._enableAutoUpdate = params.enableAutoUpdate ?? true;\n this._isNeedRender = false;\n this._isRunAsyncUpdate = false;\n\n this.render = this.render.bind(this);\n this.resize = this.resize.bind(this);\n }\n\n /**\n * `VisualizeJS` parameters.\n */\n get options(): Options {\n return this._options;\n }\n\n /**\n * `VisualizeJS` library URL. Use {@link Viewer#configure | configure()} to change library URL.\n *\n * @readonly\n */\n get visualizeJsUrl(): string {\n return this._visualizeJsUrl;\n }\n\n /**\n * Change the viewer configuration parameters.\n *\n * @param params - An object containing new configuration parameters.\n * @param params.visualizeJsUrl - `VisualizeJS` library URL. Set this URL to use your own\n * library instance or leave it blank to use the default URL defined by `Client.js`.\n */\n configure(params: { visualizeJsUrl?: string }): this {\n this._visualizeJsUrl = params.visualizeJsUrl || \"VISUALIZE_JS_URL\";\n return this;\n }\n\n /**\n * A [Viewer]{@link Viewer} event measuring progress of loading a `VisualizeJS` library.\n *\n * @property {string} type - `visualizeprogress`\n * @property {number} loaded - A 64-bit unsigned integer value indicating the amount of work\n * already performed by the underlying process. The ratio of work done can be calculated by\n * dividing total by the value of this property.\n * @property {number} total - A 64-bit unsigned integer representing the total amount of work\n * that the underlying process is in the progress of performing.\n * @event visualizeprogress\n */\n\n /**\n * Load `VisualizeJS` module and initialize it with the specified canvas. Call\n * {@link Viewer#dispose | dispose()} to release allocated resources.\n *\n * @async\n * @param canvas - HTML `<canvas>` element for `VisualizeJS`.\n * @param onProgress - A callback function that handles events measuring progress of loading\n * of the `VisualizeJS` library. Retrieves {@link event:visualizeprogress | visualizeprogress} event.\n */\n async initialize(canvas: HTMLCanvasElement, onProgress?: (event: ProgressEvent) => void): Promise<this> {\n this.addEventListener(\"optionschange\", (event) => this.syncOptions(event.data));\n\n if (canvas.style.width === \"\" && canvas.style.height === \"\") {\n canvas.style.width = \"100%\";\n canvas.style.height = \"100%\";\n }\n canvas.parentElement.style.touchAction = \"none\";\n canvas.style.touchAction = \"none\";\n\n canvas.width = canvas.clientWidth * window.devicePixelRatio;\n canvas.height = canvas.clientHeight * window.devicePixelRatio;\n\n const visualizeJs: any = await loadVisualizeJs(this.visualizeJsUrl, (ev) => {\n const { loaded, timeStamp, total, lengthComputable } = ev;\n const event = { loaded, timeStamp, total, lengthComputable, type: \"visualizeprogress\" } as ProgressEvent;\n onProgress?.(event);\n });\n\n this.visualizeJs = visualizeJs;\n this.visualizeJs.canvas = canvas;\n this.visualizeJs.Viewer.create();\n\n this.canvas = canvas;\n this.canvasEvents.forEach((x) => canvas.addEventListener(x, this.canvaseventlistener));\n\n this.markup.initialize(this, canvas, this.canvasEvents);\n\n this._resizeObserver = new ResizeObserver(this.resize);\n this._resizeObserver.observe(canvas.parentElement);\n this.resize();\n\n this._zoomWheelDragger = new OdZoomWheelDragger(this);\n this._zoomWheelDragger.name = \"ZoomWheel\";\n this._zoomWheelDragger.initialize();\n\n this._gestureManager = new GestureManager(this);\n this._gestureManager.initialize();\n\n this.syncOpenCloudVisualStyle(true);\n this.syncOptions();\n\n this._renderTime = performance.now();\n this.render(this._renderTime);\n\n return this;\n }\n\n /**\n * Releases all resources allocated by this `Viewer` instance. Call this method before\n * release the `Viewer` instance.\n */\n dispose(): this {\n this.cancel();\n this.emitEvent({ type: \"dispose\" });\n\n if (this.frameId) cancelAnimationFrame(this.frameId);\n this.frameId = 0;\n\n this.setActiveDragger(\"\");\n\n this._zoomWheelDragger?.dispose();\n this._gestureManager?.dispose();\n\n this.removeAllListeners();\n\n this._resizeObserver?.disconnect();\n this._resizeObserver = undefined;\n\n this.markup.dispose();\n\n this.canvasEvents.forEach((x) => this.canvas?.removeEventListener(x, this.canvaseventlistener));\n this.canvas = undefined;\n\n this.visualizeJs?.getViewer().clear();\n this.visualizeJs = undefined;\n\n return this;\n }\n\n /**\n * Returns `true` if `VisualizeJS` module has been loaded andinitialized.\n */\n isInitialized(): boolean {\n return !!this.visualizeJs;\n }\n\n // internal render/resize routines\n\n private render(time: DOMHighResTimeStamp) {\n this.frameId = requestAnimationFrame(this.render);\n\n if (!this.visualizeJs) return;\n\n if (this._isRunAsyncUpdate) return;\n\n const visViewer = this.visualizeJs.getViewer();\n if (visViewer.isRunningAnimation() || this._isNeedRender) {\n visViewer.update();\n this._activeDragger?.updatePreview();\n this._isNeedRender = !visViewer.getActiveDevice().isValid();\n\n const deltaTime = (time - this._renderTime) / 1000;\n this._renderTime = time;\n this.emitEvent({ type: \"render\", time, deltaTime });\n }\n }\n\n public resize(): this {\n if (!this.visualizeJs) return this;\n\n const { clientWidth, clientHeight } = this.canvas;\n this.canvas.width = clientWidth * window.devicePixelRatio;\n this.canvas.height = clientHeight * window.devicePixelRatio;\n\n const visViewer = this.visualizeJs.getViewer();\n visViewer.resize(0, this.canvas.width, this.canvas.height, 0);\n\n this.update(true);\n this.emitEvent({ type: \"resize\", width: clientWidth, height: clientHeight });\n\n return this;\n }\n\n /**\n * Updates the viewer. Do nothing if the auto-update mode is disabled in the constructor (use\n * the `update` event to update viewer manually).\n *\n * Fires:\n *\n * - {@link UpdateEvent | update}\n *\n * @param force - If `true` updates the viewer immidietly. Otherwise updates on next\n * animation frame. Default is `false`.\n */\n update(force?: boolean) {\n if (this._enableAutoUpdate) {\n if (force) {\n this.visViewer()?.update();\n this.activeDragger()?.updatePreview();\n } else {\n this._isNeedRender = true;\n }\n }\n this.emitEvent({ type: \"update\", data: force });\n }\n\n /**\n * Update with internal schedule, need after change operation when have long update for\n * update without lock UI\n *\n * @param maxScheduleUpdateTimeInMs - Maximum time for one update, by default 30 ms\n * @param maxScheduleUpdateCount - Maximum count of schedule update\n * @returns return void Promise\n */\n\n private scheduleUpdateAsync(maxScheduleUpdateTimeInMs = 50): Promise<void> {\n return new Promise<void>((resolve, reject) => {\n setTimeout(() => {\n try {\n this.visViewer()?.update(maxScheduleUpdateTimeInMs);\n this.activeDragger()?.updatePreview();\n resolve();\n } catch (e) {\n console.error(e);\n reject();\n }\n }, 0);\n });\n }\n\n async updateAsync(maxScheduleUpdateTimeInMs = 50, maxScheduleUpdateCount = 50): Promise<void> {\n this._isRunAsyncUpdate = true;\n const device = this.visViewer().getActiveDevice();\n try {\n for (let iterationCount = 0; !device.isValid() && iterationCount < maxScheduleUpdateCount; iterationCount++) {\n await this.scheduleUpdateAsync(maxScheduleUpdateTimeInMs);\n }\n await this.scheduleUpdateAsync(maxScheduleUpdateTimeInMs);\n } catch (e) {\n console.error(e);\n } finally {\n this._isRunAsyncUpdate = false;\n }\n }\n\n /**\n * Returns `VisualizeJS`\n * {@link https://cloud.opendesign.com/docs/index.html#/visualizejs_api | module} instance.\n */\n visLib(): any {\n return this.visualizeJs;\n }\n\n /**\n * Returns `VisualizeJS`\n * {@link https://cloud.opendesign.com/docs/index.html#/vis/Viewer | Viewer} instance.\n */\n visViewer(): any {\n return this.visualizeJs?.getViewer();\n }\n\n // update the VisualizeJS options\n\n syncOpenCloudVisualStyle(isInitializing: boolean): this {\n if (!this.visualizeJs) return this;\n\n const visLib = this.visLib();\n const visViewer = visLib.getViewer();\n\n const device = visViewer.getActiveDevice();\n if (device.isNull()) return this;\n\n const view = device.getActiveView();\n\n // setup light\n view.enableDefaultLighting(true, visLib.DefaultLightingType.kTwoLights);\n view.setDefaultLightingIntensity(1.25);\n\n let visualStyleId;\n try {\n visualStyleId = visViewer.findVisualStyle(\"OpenCloud\");\n } catch (e) {\n if (!isInitializing) {\n console.log(\"OpenCloud visual style not found, creating it on client side\");\n }\n visualStyleId = visViewer.createVisualStyle(\"OpenCloud\");\n\n const colorDef = new visLib.OdTvColorDef(66, 66, 66);\n const shadedVsId = visViewer.findVisualStyle(\"Realistic\");\n\n const visualStylePtr = visualStyleId.openObject();\n visualStylePtr.copyFrom(shadedVsId);\n visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kFaceModifiers, 0, visLib.VisualStyleOperations.kSet);\n //visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kEdgeModel, 1, visLib.VisualStyleOperations.kSet);\n visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kEdgeModel, 2, visLib.VisualStyleOperations.kSet);\n visualStylePtr.setOptionDouble(visLib.VisualStyleOptions.kEdgeCreaseAngle, 60, visLib.VisualStyleOperations.kSet);\n visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kEdgeStyles, 0, visLib.VisualStyleOperations.kSet);\n visualStylePtr.setOptionInt32(visLib.VisualStyleOptions.kEdgeModifiers, 8, visLib.VisualStyleOperations.kSet);\n visualStylePtr.setOptionColor(\n visLib.VisualStyleOptions.kEdgeColorValue,\n colorDef,\n visLib.VisualStyleOperations.kSet\n );\n visualStylePtr.delete();\n }\n\n view.visualStyle = visualStyleId;\n\n view.delete();\n device.delete();\n\n return this;\n }\n\n syncOptions(options: OptionsData = this.options.data): this {\n if (!this.visualizeJs) return this;\n\n const visLib = this.visLib();\n const visViewer = visLib.getViewer();\n\n const device = visViewer.getActiveDevice();\n if (device.isNull()) return this;\n\n if (options.showWCS !== visViewer.getEnableWCS()) {\n visViewer.setEnableWCS(options.showWCS);\n }\n if (options.cameraAnimation !== visViewer.getEnableAnimation()) {\n visViewer.setEnableAnimation(options.cameraAnimation);\n }\n if (options.antialiasing !== visViewer.fxaaAntiAliasing3d) {\n visViewer.fxaaAntiAliasing3d = options.antialiasing;\n visViewer.fxaaQuality = 5;\n }\n\n if (options.shadows !== visViewer.shadows) {\n visViewer.shadows = options.shadows;\n\n const canvas = visLib.canvas;\n device.invalidate([0, canvas.clientWidth, canvas.clientHeight, 0]);\n }\n\n if (options.groundShadow !== visViewer.groundShadow) {\n visViewer.groundShadow = options.groundShadow;\n }\n\n if (options.ambientOcclusion !== device.getOptionBool(visLib.DeviceOptions.kSSAOEnable)) {\n device.setOptionBool(visLib.DeviceOptions.kSSAOEnable, options.ambientOcclusion);\n device.setOptionBool(visLib.DeviceOptions.kSSAODynamicRadius, true);\n device.setOptionDouble(visLib.DeviceOptions.kSSAORadius, 1);\n device.setOptionInt32(visLib.DeviceOptions.kSSAOLoops, 32);\n device.setOptionDouble(visLib.DeviceOptions.kSSAOPower, 2);\n device.setOptionInt32(visLib.DeviceOptions.kSSAOBlurRadius, 2);\n\n const activeView = visViewer.activeView;\n activeView.setSSAOEnabled(options.ambientOcclusion);\n activeView.delete();\n }\n\n if (isExist(options.edgeModel)) {\n const activeView = device.getActiveView();\n\n const visualStyleId = visViewer.findVisualStyle(\"OpenCloud\");\n const visualStylePtr = visualStyleId.openObject();\n\n visualStylePtr.setOptionInt32(\n visLib.VisualStyleOptions.kEdgeModel,\n options.edgeModel ? 2 : 0,\n visLib.VisualStyleOperations.kSet\n );\n\n activeView.visualStyle = visualStyleId;\n\n visualStylePtr.delete();\n visualStyleId.delete();\n activeView.delete();\n }\n\n device.delete();\n\n this.syncHighlightingOptions(options);\n this.update();\n\n return this;\n }\n\n syncHighlightingOptions(options: OptionsData = this.options.data): this {\n if (!this.visualizeJs) return this;\n\n const params = options.enableCustomHighlight ? options : Options.defaults();\n\n const visLib = this.visLib();\n const visViewer = visLib.getViewer();\n const { Entry, OdTvRGBColorDef } = visLib;\n\n const highlightStyleId = visViewer.findHighlightStyle(\"Web_Default\");\n const highlightStylePtr = highlightStyleId.openObject();\n\n if (isExist(params.facesColor)) {\n const color = new OdTvRGBColorDef(params.facesColor.r, params.facesColor.g, params.facesColor.b);\n highlightStylePtr.setFacesColor(Entry.k3D.value | Entry.k3DTop.value, color);\n color.delete();\n }\n\n if (isExist(params.facesOverlap)) {\n highlightStylePtr.setFacesVisibility(Entry.k3DTop.value, params.facesOverlap);\n }\n if (isExist(params.facesTransparancy)) {\n highlightStylePtr.setFacesTransparency(Entry.k3D.value | Entry.k3DTop.value, params.facesTransparancy);\n }\n\n if (isExist(params.edgesColor)) {\n const color = new OdTvRGBColorDef(params.edgesColor.r, params.edgesColor.g, params.edgesColor.b);\n highlightStylePtr.setEdgesColor(\n Entry.k3DTop.value | Entry.k3D.value | Entry.k2D.value | Entry.k2DTop.value,\n color\n );\n color.delete();\n }\n\n if (isExist(params.edgesVisibility)) {\n highlightStylePtr.setEdgesVisibility(\n Entry.k2D.value | Entry.k2DTop.value | Entry.k3DTop.value | Entry.k3D.value,\n params.edgesVisibility\n );\n }\n if (isExist(params.edgesOverlap)) {\n const visibility = !isExist(params.edgesVisibility) ? true : params.edgesVisibility;\n highlightStylePtr.setEdgesVisibility(Entry.k2DTop.value | Entry.k3DTop.value, params.edgesOverlap && visibility);\n }\n\n const device = visViewer.getActiveDevice();\n if (!device.isNull()) {\n const canvas = visLib.canvas;\n\n device.invalidate([0, canvas.clientWidth, canvas.clientHeight, 0]);\n device.delete();\n }\n\n return this;\n }\n\n /**\n * List of names of available draggers:\n *\n * - `Line`\n * - `Text`\n * - `Pan`\n * - `Orbit`\n * - `Zoom`\n * - `ZoomWindow`\n * - `OrbitAroundBuilding`\n * - `MeasureLine`\n * - `CuttingPlaneXAxis`\n * - `CuttingPlaneYAxis`\n * - `CuttingPlaneZAxis`\n * - `Walk`\n *\n * @readonly\n */\n get draggers(): string[] {\n return [...this.draggerFactory.keys()];\n }\n\n /**\n * Register dragger on draggerFactory.\n *\n * @param name - Dragger name.\n * @param dragger - Dragger class.\n */\n public registerDragger(name: string, dragger: typeof OdBaseDragger): void {\n this.draggerFactory.set(name, dragger);\n }\n\n /**\n * Returns active dragger instance or `null` if there is no active dragger.\n */\n activeDragger(): any | null {\n return this._activeDragger;\n }\n\n /**\n * Set active dragger. `Viewer` must be {@link Viewer#initialize | initialized} before enable\n * dragger or exception is thrown.\n *\n * Fires:\n *\n * - {@link ChangeActiveDragger | changeactivedragger}\n *\n * @param name - Dragger name. Can be one of the {@link Viewer#draggers | draggers} list.\n * @returns Returns active dragger instance or `null` if there is no dragger with the given name.\n */\n setActiveDragger(name: string): OdBaseDragger | null {\n if (this._activeDragger?.name !== name) {\n if (this._activeDragger) {\n this._activeDragger.dispose();\n this._activeDragger = null;\n }\n const Constructor = this.draggerFactory.get(name);\n if (Constructor) {\n this._activeDragger = new Constructor(this);\n this._activeDragger.name = name;\n this._activeDragger.initialize();\n }\n const canvas = this.canvas;\n if (canvas) {\n canvas.className = canvas.className\n .split(\" \")\n .filter((x) => !x.startsWith(\"oda-cursor-\"))\n .filter((x) => x)\n .concat(`oda-cursor-${name.toLowerCase()}`)\n .join(\" \");\n }\n this.emitEvent({ type: \"changeactivedragger\", data: name });\n }\n return this._activeDragger;\n }\n\n /**\n * Reset the state of the active dragger.\n */\n resetActiveDragger(): void {\n const dragger = this._activeDragger;\n if (dragger) {\n this.setActiveDragger(\"\");\n this.setActiveDragger(dragger.name);\n }\n }\n\n /**\n * Remove all cutting planes.\n */\n clearSlices(): void {\n if (!this.visualizeJs) return;\n\n const visViewer = this.visViewer();\n const activeView = visViewer.activeView;\n activeView.removeCuttingPlanes();\n activeView.delete();\n\n this.update();\n }\n\n /**\n * Remove markup overlay.\n */\n clearOverlay(): void {\n this.markup.clearOverlay();\n }\n\n /**\n * Synchronize markup overlay.\n */\n syncOverlay(): any {\n if (!this.visualizeJs) return;\n\n const visViewer = this.visViewer();\n const activeView = visViewer.activeView;\n\n let overlayView = visViewer.getViewByName(OVERLAY_VIEW_NAME);\n if (!overlayView) {\n const overlayModel = visViewer.getMarkupModel();\n const pDevice = visViewer.getActiveDevice();\n\n overlayView = pDevice.createView(OVERLAY_VIEW_NAME, false);\n overlayView.addModel(overlayModel);\n\n activeView.addSibling(overlayView);\n pDevice.addView(overlayView);\n }\n\n overlayView.viewPosition = activeView.viewPosition;\n overlayView.viewTarget = activeView.viewTarget;\n overlayView.upVector = activeView.upVector;\n overlayView.viewFieldWidth = activeView.viewFieldWidth;\n overlayView.viewFieldHeight = activeView.viewFieldHeight;\n\n const viewPort = overlayView.getViewport();\n overlayView.setViewport(viewPort.lowerLeft, viewPort.upperRight);\n overlayView.vportRect = activeView.vportRect;\n\n this.update();\n\n return overlayView;\n }\n\n /**\n * Returns `true` if current drawing is 3D drawing.\n */\n is3D(): boolean {\n if (!this.visualizeJs) return false;\n\n const visViewer = this.visViewer();\n const ext = visViewer.getActiveExtents();\n const min = ext.min();\n const max = ext.max();\n const extHeight = max[2] - min[2];\n return extHeight !== 0;\n\n //return visViewer.activeView.upVector[1] >= 0.95;\n }\n\n /**\n * Returns a list of original handles for the selected entities.\n */\n getSelected(): string[] {\n return this.executeCommand(\"getSelected\");\n }\n\n /**\n * Select model entities by original handles that are obtained using\n * {@link File.getProperties | File.getProperties()} or\n * {@link File.searchProperties | File.searchProperties()} methods.\n *\n * Fires:\n *\n * - {@link SelectEvent | select}\n *\n * @param handles - The list of original handles.\n */\n setSelected(handles?: string[]): void {\n this.executeCommand(\"setSelected\", handles);\n }\n\n /**\n * Load model references into the viewer. References are images, fonts, or any other files to\n * correct rendering of the model.\n *\n * @async\n * @param model - Instance of model with references. If a `File` instance is specified\n * instead of a model, the file references will be loaded.\n */\n async loadReferences(model: Model | File | Assembly): Promise<this> {\n if (!this.visualizeJs) return this;\n\n const abortController = new AbortController();\n this._abortControllerForReferences?.abort();\n this._abortControllerForReferences = abortController;\n\n let references = [];\n await model\n .getReferences(abortController.signal)\n .then((data) => (references = data.references))\n .catch((e) => console.error(\"Cannot load model references.\", e));\n\n for (const file of references) {\n await this.client\n .downloadFile(file.id, undefined, abortController.signal)\n .then((arrayBuffer) => this.visualizeJs?.getViewer().addEmbeddedFile(file.name, new Uint8Array(arrayBuffer)))\n .catch((e) => console.error(`Cannot load reference file ${file.name}.`, e));\n }\n\n return this;\n }\n\n // Internal loading routines\n\n applyModelTransformMatrix(model: Model | Assembly) {\n this.executeCommand(\"applyModelTransform\", model);\n }\n\n applySceneGraphSettings(options = this.options) {\n if (!this.visualizeJs) return;\n\n const visLib = this.visLib();\n const visViewer = visLib.getViewer();\n\n const device = visViewer.getActiveDevice();\n if (isExist(options.sceneGraph)) {\n device.setOptionBool(visLib.DeviceOptions.kDelaySceneGraphProc, !options.sceneGraph);\n }\n // if (options.enablePartialMode && visLib.HpTrc.Usd >= visViewer.memoryLimit) {\n // device.setOptionBool(visLib.DeviceOptions.kDelaySceneGraphProc, true);\n // }\n device.delete();\n\n this.update();\n }\n\n /**\n * Loads a model of a file or assembly into the viewer.\n *\n * This method requires a [Client]{@link Client | Client} instance to work. For standalone\n * viewer instance use {@link Viewer#openVsfFile | openVsfFile()} or\n * {@link Viewer#openVsfxFile | openVsfxFile()}.\n *\n * Fires:\n *\n * - {@link OpenEvent | open}\n * - {@link GeometryStartEvent | geometrystart}\n * - {@link GeometryProgressEvent | geometryprogress}\n * - {@link DatabaseChunkEvent | databasechunk}\n * - {@link GeometryChunkEvent | geometrychunk}\n * - {@link GeometryEndEvent | geometryend}\n * - {@link GeometryErrorEvent | geometryerror}\n *\n * @async\n * @param file - File or Assembly or Model instance to load. If a `File` instance with\n * multiple models is specified, the default model will be loaded. If there is no default\n * model, first availiable model will be loaded.\n */\n async open(file: File | Assembly | Model): Promise<this> {\n if (!this.visualizeJs) return this;\n\n this.cancel();\n this.clear();\n\n this.emitEvent({ type: \"open\", file, model: file });\n\n let model: Model;\n\n if (file) {\n const models = (await file.getModels()) || [];\n model = models.find((model: Model) => model.default) || models[0];\n }\n if (!model) throw new Error(\"No default model found\");\n\n const overrideOptions = new Options();\n overrideOptions.data = this.options.data;\n if (file.type === \".rcs\") {\n console.log(\"Partial load mode is forced for RCS file\");\n overrideOptions.enablePartialMode = true;\n }\n\n const loaderFactory = new LoaderFactory();\n const loader = loaderFactory.create(this, model, overrideOptions.data);\n\n await this.loadReferences(model);\n await loader.load();\n\n if (this.visualizeJs) {\n this.applyModelTransformMatrix(model);\n this.applySceneGraphSettings();\n }\n\n return this;\n }\n\n /**\n * Loads a VSF file into the viewer.\n *\n * Fires:\n *\n * - {@link OpenEvent | open}\n * - {@link GeometryStartEvent | geometrystart}\n * - {@link GeometryProgressEvent | geometryprogress}\n * - {@link DatabaseChunkEvent | databasechunk}\n * - {@link GeometryEndEvent | geometryend}\n * - {@link GeometryErrorEvent | geometryerror}\n *\n * @param buffer - Binary data buffer to load.\n */\n openVsfFile(buffer: Uint8Array | ArrayBuffer): this {\n if (!this.visualizeJs) return this;\n\n this.cancel();\n this.clear();\n\n this.emitEvent({ type: \"open\", buffer });\n\n try {\n this.emitEvent({ type: \"geometrystart\", buffer });\n\n const visLib = this.visLib();\n const visViewer = visLib.getViewer();\n\n const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\n visViewer.parseFile(data);\n\n this.syncOpenCloudVisualStyle(false);\n this.syncOptions();\n this.resize();\n\n this.emitEvent({ type: \"geometryprogress\", data: 1, buffer });\n this.emitEvent({ type: \"databasechunk\", data, buffer });\n this.emitEvent({ type: \"geometryend\", buffer });\n } catch (error) {\n this.emitEvent({ type: \"geometryerror\", data: error, buffer });\n throw error;\n }\n\n return this;\n }\n\n /**\n * Loads a VSFX file into the viewer.\n *\n * Fires:\n *\n * - {@link OpenEvent | open}\n * - {@link GeometryStartEvent | geometrystart}\n * - {@link GeometryProgressEvent | geometryprogress}\n * - {@link DatabaseChunkEvent | databasechunk}\n * - {@link GeometryEndEvent | geometryend}\n * - {@link GeometryErrorEvent | geometryerror}\n *\n * @param buffer - Binary data buffer to load.\n */\n openVsfxFile(buffer: Uint8Array | ArrayBuffer): this {\n if (!this.visualizeJs) return this;\n\n this.cancel();\n this.clear();\n\n this.emitEvent({ type: \"open\", buffer });\n\n try {\n this.emitEvent({ type: \"geometrystart\", buffer });\n\n const visLib = this.visLib();\n const visViewer = visLib.getViewer();\n\n const data = buffer instanceof Uint8Array ? buffer : new Uint8Array(buffer);\n visViewer.parseVsfx(data);\n\n this.syncOpenCloudVisualStyle(false);\n this.syncOptions();\n this.resize();\n\n this.emitEvent({ type: \"geometryprogress\", data: 1, buffer });\n this.emitEvent({ type: \"databasechunk\", data, buffer });\n this.emitEvent({ type: \"geometryend\", buffer });\n } catch (error) {\n this.emitEvent({ type: \"geometryerror\", data: error, buffer });\n throw error;\n }\n\n return this;\n }\n\n /**\n * Cancels asynchronous model loading started by {@link Viewer#open | open()}.\n */\n cancel(): this {\n this._abortControllerForReferences?.abort();\n this._abortControllerForReferences = undefined;\n\n this._abortController?.abort();\n this._abortController = undefined;\n\n this._abortControllerForRequestMap?.forEach((controller) => controller.abort());\n this._abortControllerForRequestMap = undefined;\n\n this.emitEvent({ type: \"cancel\" });\n\n return this;\n }\n\n /**\n * Unloads the model and clears the viewer.\n */\n clear(): this {\n if (!this.visualizeJs) return this;\n\n const visLib = this.visLib();\n const visViewer = visLib.getViewer();\n\n this.clearOverlay();\n\n visViewer.clear();\n visViewer.createLocalDatabase();\n\n this.syncOpenCloudVisualStyle(true);\n this.syncOptions();\n this.resize();\n\n this.emitEvent({ type: \"clear\" });\n\n return this;\n }\n\n /**\n * Get markup color.\n *\n * @returns Color with `RGB` values.\n */\n getMarkupColor(): { r: number; g: number; b: number } {\n return this.markup.getMarkupColor();\n }\n\n /**\n * Set markup color.\n *\n * @param r - `Red` part of color.\n * @param g - `Green` part of color.\n * @param b - `Blue` part of color.\n */\n setMarkupColor(r = 255, g = 0, b = 0): void {\n this.markup.setMarkupColor(r, g, b);\n const color = { r, g, b };\n this.emitEvent({ type: \"changemarkupcolor\", data: color });\n }\n\n /**\n * Colorize all markup entities with the specified color.\n *\n * @param r - `Red` part of color.\n * @param g - `Green` part of color.\n * @param b - `Blue` part of color.\n */\n colorizeAllMarkup(r = 255, g = 0, b = 0): void {\n this.markup.colorizeAllMarkup(r, g, b);\n }\n\n /**\n * Add an empty markup entity to the overlay.\n */\n addMarkupEntity(entityName: string) {\n if (!this.visualizeJs) return null;\n\n this.syncOverlay();\n\n const visViewer = this.visViewer();\n const model = visViewer.getMarkupModel();\n const entityId = model.appendEntity(entityName);\n const entityPtr = entityId.openObject();\n\n const color = this.getMarkupColor();\n entityPtr.setColor(color.r, color.g, color.b);\n entityPtr.setLineWeight(2);\n entityPtr.delete();\n\n this.update();\n\n return entityId;\n }\n\n /**\n * Draw a viewpoint. To get a list of available model viewpoints, use the\n * {@link Model#getViewpoints | Model.getViewpoints()} or\n * {@link File#getViewpoints | File.getViewpoints()}.\n *\n * @param viewpoint - Viewpoint.\n */\n drawViewpoint(viewpoint: IViewpoint): void {\n this.setOrthogonalCameraSettings(viewpoint.orthogonal_camera);\n this.setClippingPlanes(viewpoint.clipping_planes);\n this.markup.setViewpoint(viewpoint);\n }\n\n /**\n * Create a viewpoint. To add a viewpoint to the list of model viewpoints, use the\n * {@link Model#saveViewpoint | Model.saveViewpoint()} or\n * {@link File#saveViewpoint | File.saveViewpoint()}.\n */\n createViewpoint(): IViewpoint {\n const vp = this.markup.getViewpoint();\n vp.orthogonal_camera = this.getOrthogonalCameraSettings();\n vp.clipping_planes = this.getClippingPlanes();\n\n return vp;\n }\n\n private getPoint3dFromArray(array) {\n return { x: array[0], y: array[1], z: array[2] };\n }\n\n private getLogicalPoint3dAsArray(point3d) {\n return [point3d.x, point3d.y, point3d.z];\n }\n\n private getOrthogonalCameraSettings(): IOrthogonalCamera {\n const visViewer = this.visViewer();\n const activeView = visViewer.activeView;\n\n return {\n view_point: this.getPoint3dFromArray(activeView.viewPosition),\n direction: this.getPoint3dFromArray(activeView.viewTarget),\n up_vector: this.getPoint3dFromArray(activeView.upVector),\n field_width: activeView.viewFieldWidth,\n field_height: activeView.viewFieldHeight,\n };\n }\n\n private setOrthogonalCameraSettings(settings: IOrthogonalCamera) {\n const visViewer = this.visViewer();\n const activeView = visViewer.activeView;\n\n this.resetActiveDragger();\n this.clearSlices();\n this.clearOverlay();\n\n if (settings) {\n activeView.setView(\n this.getLogicalPoint3dAsArray(settings.view_point),\n this.getLogicalPoint3dAsArray(settings.direction),\n this.getLogicalPoint3dAsArray(settings.up_vector),\n settings.field_width,\n settings.field_height,\n true\n );\n }\n\n this.syncOverlay();\n }\n\n private getClippingPlanes(): IClippingPlane[] {\n const visViewer = this.visViewer();\n const activeView = visViewer.activeView;\n\n const clipping_planes = [];\n for (let i = 0; i < activeView.numCuttingPlanes(); i++) {\n const cuttingPlane = activeView.getCuttingPlane(i);\n\n const plane = {\n location: this.getPoint3dFromArray(cuttingPlane.getOrigin()),\n direction: this.getPoint3dFromArray(cuttingPlane.normal()),\n };\n\n clipping_planes.push(plane);\n }\n\n return clipping_planes;\n }\n\n private setClippingPlanes(clippingPlanes: IClippingPlane[]) {\n if (clippingPlanes) {\n const visViewer = this.visViewer();\n const activeView = visViewer.activeView;\n\n for (const plane of clippingPlanes) {\n const cuttingPlane = new (this.visLib().OdTvPlane)();\n cuttingPlane.set(this.getLogicalPoint3dAsArray(plane.location), this.getLogicalPoint3dAsArray(plane.direction));\n\n activeView.addCuttingPlane(cuttingPlane);\n activeView.setEnableCuttingPlaneFill(true, 0x66, 0x66, 0x66);\n }\n }\n }\n\n /**\n * Executes the command denoted by the given command identifier.\n *\n * @param id - Identifier of the command to execute.\n * @param args - Parameters passed to the command function.\n * @returns A returned value of the given command. Returns `undefined` when the command doesn't exists.\n */\n executeCommand(id: string, ...args: any[]): any {\n return commands(\"VisualizeJS\").executeCommand(id, this, ...args);\n }\n}\n"],"names":["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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A0C;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;UAC7C;SACD;IACJ,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;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;UAC7C;SACD;IACJ,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;UAC7C;SACD;IACJ,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;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,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,SA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AAE,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,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,EA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"}
|