{"version":3,"sources":["webpack:///./node_modules/devexpress-diagram/dist/dx-diagram.js"],"names":["factory","modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","ShapeType","ShapeTypes","ShapeCategories","General","Flowchart","OrgChart","Containers","Custom","Text","Rectangle","Ellipse","Cross","Triangle","Diamond","Heart","Pentagon","Hexagon","Octagon","Star","ArrowLeft","ArrowUp","ArrowRight","ArrowDown","ArrowUpDown","ArrowLeftRight","Process","Decision","Terminator","PredefinedProcess","Document","MultipleDocuments","ManualInput","Preparation","Data","Database","HardDisk","InternalStorage","PaperTape","ManualOperation","Delay","StoredData","Display","Merge","Connector","Or","SummingJunction","Container","VerticalContainer","HorizontalContainer","Card","CardWithImageOnLeft","CardWithImageOnTop","CardWithImageOnRight","Point","x","y","this","zero","fromNumber","num","isZero","toString","JSON","stringify","copyFrom","obj","clone","equals","offset","offsetX","offsetY","offsetByPoint","multiply","multiplierX","multiplierY","negative","applyConverter","converter","plus","a","b","minus","xComparer","yComparer","Size","width","height","empty","initByCommonAction","action","widthAdp","heightAdp","isEmpty","nonNegativeSize","offsetWidth","offsetHeight","multiplierW","multiplierH","conv","HtmlFocusUtils","ObjectUtils","GeometryUtils","Utils","EventDispatcher","Range","LineEquation","size_1","point_1","rectangle_1","search_1","metrics_1","math_1","vector_1","segment_1","Style_1","browser_1","aParam","bParam","cParam","fromPoints","pointA","pointB","accuracy","areDuplicatedPoints","undefined","getPointIntersection","other","A1","B1","C1","A2","B2","C2","v","MathUtils","numberCloseTo","createPoint","containsPoint","point","from","to","Math","abs","configurable","extend","range","min","max","includes","fromLength","length","listeners","add","listener","Error","hasEventListener","push","remove","currentListener","splice","raise","funcName","args","_i","arguments","func","apply","raise1","flatten","arr","concat","getCommonRectangle","rects","minX","Number","MAX_VALUE","maxX","minY","maxY","forEach","rect","right","bottom","findFreeSpace","size","exact","targetRect","xs","ys","sort","reduce","acc","index","matrix","map","_loop_1","xi0","SearchUtils","binaryIndexOf","xi1","yi0","yi1","yi","xi","checkResult","checkRect","yimin","ximin","ximax","getArrowPoints","directionPoint","arrowHeight","arrowWidth","point1","point2","point3","catX","catY","hypotenuse","sqrt","pow","cos","sin","x1","y1","x2","y2","x3","y3","createSegments","points","result","Segment","createRectagle","xarr","yarr","prev","cur","createSegmentsFromRectangle","topLeft","topRight","bottomRight","bottomLeft","areSegmentsCutRectangle","segments","rectanlePolygonalChain","hasSegmentIn","hasSegmentOut","_loop_2","segment","isIntersectedByRect","startPoint_1","startPoint","endPoint_1","endPoint","currentContainsStart","currentContainsEnd","rectLinesContainsStart_1","filter","some","isIntersected","rectLinesContainsEnd_1","rectLinesContainsStart","rectLinesContainsEnd","state_1","areIntersectedSegments","otherSegments","segmentIndex","otherSegmentIndex","otherSegment","isLineIntersected","beginLinePoint","endLinePoint","excludeBeginPoint","excludeEndPoint","line","segmentStartPoint","segmentEndPoint","intersection","removeUnnecessaryPoints","removeCallback","checkCallback","removeUnnecessaryPointsCore","removeBackwardPoints","removeUnnecessaryRightAnglePoints","removeNotRightAnglePoints","removeDuplicatedPoints","removeNotCornersPoints","nextPoint","getNextPoint","prevPoint","isRightAngleCorner","actualIndex","isCorner","isBackwardPoint","current","next","createAngle","PI","vector1","Vector","vector2","vector1X","vector1Y","vector2X","vector2Y","atan","atan2","step","newIndex","addSelectedLinesTo","prevPt","pt","nextPt","offsetXNegative","offsetYNegative","nextOffsetX","nextOffsetY","nextOffsetXNegative","nextOffsetYNegative","addSelectedLine","addSelectedLineWB","a1","a2","b1","b2","det","c1","c2","c1WB","c2WB","getSelectionOffsetPoint","distance","getSelectionTextStartEndPoints","center","align","TextAlignment","Left","Right","getPathLength","Metrics","euclideanDistance","getPathPointByPosition","relativePosition","targetLength","currentLength","lineLength","delta","getLineAngle","beginPoint","getTriangleBeginAngle","lineAngle","beginPointAngle","getTriangleEndAngle","endPointAngle","getPathPointByPoint","beginAngle","endAngle","beginDistance","endDistance","orthOffset","currentDistance","round","fround","isAbove","tan","getPathPositionByPoint","maxPositionCount","angle","arePointsEqual","points1","points2","count1","getMaxRectangleEnscribedInEllipse","ellipseSize","dx","dy","getEllipseByEnscribedRectangle","rectSize","cloneObject","source","assign","compareObjects","obj1","obj2","isDeepEqual","props1","getOwnPropertyNames","props2","isNaN","focusWithPreventScroll","element","isPreventScrollNotSupported","Browser","Safari","savedDocumentScrollPosition","getHtmlScrollPosition","focus","preventScroll","newDocumentScrollPosition","setHtmlScrollPosition","e","pos","getDocumentScrollPosition","window","document","iframePos","top","win","doc","left","pageXOffset","documentElement","scrollLeft","body","pageYOffset","scrollTop","position","setDocumentScrollPosition","ModelUtils","unit_converter_1","Enums_1","AddConnectionHistoryItem_1","AddConnectorHistoryItem_1","AddConnectorPointHistoryItem_1","AddShapeHistoryItem_1","ChangeConnectorPointsHistoryItem_1","ChangeShapeParametersHistoryItem_1","DeleteConnectionHistoryItem_1","DeleteConnectorHistoryItem_1","DeleteShapeHistoryItem_1","InsertToContainerHistoryItem_1","MoveConnectorPointHistoryItem_1","MoveShapeHistoryItem_1","RemoveFromContainerHistoryItem_1","ResizeShapeHistoryItem_1","SetSelectionHistoryItem_1","ModelResizeHistoryItem_1","UpdatePositionsOnPageResizeHistoryItem_1","ChangeConnectorPropertyHistoryItem_1","ChangeConnectorTextHistoryItem_1","ChangeLockedHistoryItem_1","ChangeStyleHistoryItem_1","ChangeStyleTextHistoryItem_1","Graph_1","GraphInfo_1","Structures_1","Utils_1","Connector_1","ConnectorProperties_1","ConnectorRenderPoint_1","ConnectorRenderPointsContext_1","Shape_1","setShapePosition","history","model","shape","newPosition","addAndRedo","MoveShapeHistoryItem","setShapeSize","newSize","ResizeShapeHistoryItem","addConnectorPoint","connectorKey","pointIndex","AddConnectorPointHistoryItem","deleteConnectorCustomPoints","connector","oldContext","createRenderPointsContext","properties","lineOption","ConnectorLineOption","Straight","lastPoint","ChangeConnectorPointsHistoryItem","ConnectorRenderPointsContext","ConnectorRenderPoint","actualRoutingMode","ReplaceConnectorPointsHistoryItem","deleteConnectorUnnecessaryPoints","oldRenderPoints","getRenderPoints","unnecessaryPoints","createUnnecessaryRenderPoints","skipped","skippedRenderPoints","removedPoint","findFirstPointIndex","keys","replaceConnectorPoints","newRenderPoints","createUnnecessaryRightAngleRenderPoints","newPoints","createNecessaryPoints","newRenderContext","validateRenderPointIndexes","lockCreateRenderPoints","skipUnnecessaryRenderPoints","clonedPoints","removeUnnecessaryRenderPoints","cp","skipUnnecessaryRightAngleRenderPoints","removeUnnecessaryRightAngleRenderPoints","removeUnnecessaryPoint","renderPointsWithoutSkipped","getPosition","predicate","_","removedIndex","collectNotSkippedRenderPoints","collectSkippedRenderPoints","_this","lastPointIndex","isNecessaryPoint","unnecessaryPoint","targetRenderPoints","skippedPoint","positionIndex","sourceRenderPoints","renderPoints","startIndex","rp","moveConnectorRightAnglePoints","firstPoint","firstPointIndex","MoveConnectorRightAnglePointsHistoryItem","moveConnectorPoint","MoveConnectorPointHistoryItem","updateConnectorAttachedPoints","beginTransaction","beginContainer","beginItem","findItemCollapsedContainer","beginAttachedToContainer","endItem","isContainerItem","endContainer","endAttachedToContainer","updateConnectorBeginPoint","getConnectionPointIndexForItem","updateConnectorEndPoint","endTransaction","getConnectionPointIndex","connectionPointIndex","beginConnectionPointIndex","targetPoint","endConnectionPointIndex","getConnectionPointPosition","rectangle","newPoint","updateContainerConnectorsAttachedPoints","rootContainer","container","getChildren","child","Shape","attachedConnectors","beginItemInContainer","endItemInContainer","collapsedContainer","findItemTopCollapsedContainer","endCollapsedContainer","getConnectorsWithoutBeginItemInfo","findConnectorsWithoutBeginItem","getConnectorsWithoutEndItemInfo","findConnectorsWithoutEndItem","updateShapeAttachedConnectors","removeConnectorIntermediatePoints","updateMovingShapeConnections","beginPointsInfo","endPointsInfo","resetTargetCallback","updateTargetCallback","beforeAttachConnectorCallback","pi","getMovingShapeConnectionPointIndex","DeleteConnectionHistoryItem","ConnectorPosition","Begin","AddConnectionHistoryItem","End","getConnectionPoints","connectionPointActionSize","shouldRemoveConnectorIntermediatePoints","shapes","Orthogonal","isShapeIntersectConnectorCustomPoints","customRenderPoints","getCustomRenderPoints","minOffset","UnitConverter","pixelsToTwips","inflate","getSnappedPos","gridSize","isHorizontal","snapOffset","snapStartPoint","tryUpdateModelRectangle","processPoints","modelManipulator","getModelSizeUpdateOffset","ModelResizeHistoryItem","UpdatePositionsOnPageResizeHistoryItem","raiseModelRectangleChanged","getRectangle","deleteItems","selection","items","deleteLocked","itemsHash","item","selectionKeys","getKeys","SetSelectionHistoryItem","deleteItemsCore","removeFromContainer","children","RemoveFromContainerHistoryItem","updateAttachedConnectorsContainer","locked","findItem","deleteShape","deleteConnector","detachConnectors","allowed","permissionsProvider","canDeleteItems","DeleteShapeHistoryItem","DeleteConnectorHistoryItem","deleteAllItems","slice","deleteSelection","getSelectedItems","changeSelectionLocked","ChangeLockedHistoryItem","updateSelection","copyStylesToItem","fromItem","newItemKey","toItem","styleText","propertyName","ChangeStyleTextHistoryItem","style","ChangeStyleHistoryItem","cloneShapeToOffset","addHistoryItem","AddShapeHistoryItem","description","text","newKey","shapeKey","ChangeShapeParametersHistoryItem","parameters","applyOffsetToConnectorRenderPointsContext","context","cloneConnectorToOffset","beginItemKey","endItemKey","AddConnectorHistoryItem","newConnector","findConnector","ChangeConnectorPropertyHistoryItem","findShape","texts","connectorText","ChangeConnectorTextHistoryItem","cloneSelectionToOffset","onItemAdded","newShapes","ids","getSelectedShapes","getSelectedConnectors","findContainerByEventKey","findContainer","isLocked","hasKey","canInsertToContainer","findChild","canInsertSelectionToContainer","insertToContainer","enableChildren","oldContainer","InsertToContainerHistoryItem","insertSelectionToContainer","selectedItems","indexOf","removeSelectionFromContainer","getConnectorContainer","beginItemContainers","containerForBeginItem","containerForEndItem","updateConnectorContainer","updateNewShapeProperties","itemKey","inputPosition","getDefaultStyle","getDefaultStylePropertyValue","getDefaultTextStyle","getDefaultTextStylePropertyValue","updateNewConnectorProperties","getDefaultConnectorProperties","getDefaultConnectorPropertyValue","applyLayout","graph","layout","nonGraphItems","settings","snapToGrid","skipPointIndices","occupiedRectangles","getOccupiedRectangles","offsetLayoutToFreeSpace","clientRectangle","containerPadding","adjustLayoutToSnapGrid","resizeContainerOnLayout","applyLayoutToNodes","edges","applyLayoutToConnectors","getNonGraphItems","nodeKeyMap","connectors","containerRect","spacing","graphItemRect","freePoint","createSize","offsetNodes","layoutRect","nonLayoutRectangles","nodeKeys","connectorsSet","forEachNode","nl","nk","applyLayoutToNode","beginPointIndex","endPointIndex","childPosition","edgeLayout","edgeToPosition","beginIndex","getConnectionPointIndexForSide","SetConnectionPointIndexHistoryItem","endIndex","nodeToLayout","getGraphInfoByItems","isDatabinding","itemsByContainerKey","containerKey","expanded","getGraphByItems","allowCreateInfo","nodes","GraphInfo","level","skipLocked","Graph","knownIds","extendByConnectedComponents","getItemIndex","getNode","addNode","addEdge","Edge","getlUnitValue","units","twipsValue","DiagramUnit","Cm","twipsToCentimeters","In","twipsToInches","Px","twipsToPixels","getUnitText","unitItems","formatUnit","fractionDigits","unitItemText","unitValue","toFixed","getTwipsValue","centimetersToTwips","inchesToTwips","getGuidItemKey","generateGuid","createSelectedItems","canMoveConnector","createRectangle","_extendStatics","__extends","setPrototypeOf","__proto__","Array","__","constructor","PathPrimitiveClosePathCommand","PathPrimitiveArcToCommand","PathPrimitiveQuadraticCurveToCommand","PathPrimitiveCubicCurveToCommand","PathPrimitiveLineToCommand","PathPrimitiveMoveToCommand","PathPrimitiveCommand","PathPrimitive","RenderHelper_1","Primitive_1","PrimitiveObject_1","_super","commands","className","clipPathId","onApplyProperties","command","createMainElement","createElementNS","svgNS","applyElementProperties","measurer","setAttribute","join","setPositionCorrectionAttribute","SvgPrimitive","PrimitiveObject","getUnitVaue","fromPoint","rx","ry","xAxisRotation","largeArcFlag","sweepFag","_extendStatics2","CONNECTOR_DEFAULT_TEXT_POSITION","CanvasManagerBase_1","NativeItem_1","Event_1","ITextMeasurer_1","PathPrimitive_1","TextPrimitive_1","Settings_1","Utils_2","DiagramItem_1","ModelUtils_1","ConnectorPointsCalculator_1","ConnectorPointsOrthogonalCalculator_1","ConnectorLineEndingStrategies_1","ConnectorTexts_1","ConnectorProperties","ConnectorTexts","routingStrategy","shouldInvalidateRenderPoints","getTextCount","count","getText","textObj","setText","set","ConnectorText","getTextPoint","getTextPositionByPoint","minTextHeight","pointsToTwips","parseInt","getTextRectangle","fromGeometry","changeRoutingStrategy","strategy","invalidateRenderPoints","clearRoutingStrategy","keepSkipped","changeRenderPoints","ConnectorPointsOrthogonalCalculator","getPoints","ConnectorRoutingMode","None","createRenderPoints","AllShapesOnly","getCalculator","shouldChangeRenderPoints","updatePointsOnPageResize","addPoint","deletePoint","movePoint","onAddPoint","replaceRenderPointsCore","onDeletePoint","onMovePoint","onMovePoints","replaceRenderPoints","clearRenderPoints","ConnectorPointsCalculator","createPrimitives","path","createLineEndingPrimitives","createTextPrimitives","connectorPath","createLineEndingStrategy","startLineEnding","endLineEnding","info","hasCommands","lineEndingPath","needCreateSeparatePrimitive","createPrimitive","createCommands","lineEnding","ConnectorLineEnding","ConnectorLineEndingNoneStrategy","Arrow","ConnectorLineEndingArrowStrategy","OutlinedTriangle","ConnectorLineEndingOutlinedTriangleStrategy","FilledTriangle","ConnectorLineEndingFilledTriangleStrategy","ConnectorLineEndingStrategy","createSelectorPrimitives","enableText","TextPrimitive","TextOwner","PAGE_BG_TEXTFLOOR_FILTER_ID","el","RenderUtils","setElementEventData","MouseEventElementType","getExtremeItem","getExtremeConnectionPointIndex","getMinX","getMinY","getConnectionPointSide","ConnectionPointSide","Undefined","getSegments","intersectedByRect","toNative","NativeConnector","dataKey","fromKey","toKey","fromId","fromPointIndex","toId","toPointIndex","applyUnits","DiagramItem","ShapeDescription","ShapeTextPadding","ShapeDefaultSize","ShapeMinDimension","ShapeDefaultDimension","LocalizationService_1","RectaglePrimitive_1","ConnectionPoint_1","defaultSize","hasDefaultText","onChanged","connectionPoints","createConnectionPoints","getTitle","DiagramLocalizationService","shapeTexts","getDefaultText","getDefaultImageUrl","ConnectionPoint","North","East","South","West","processConnectionPoint","side","createParameters","normalizeParameters","modifyParameters","deltaX","deltaY","changeParameterValue","change","getParameterPoints","getExpandedSize","getCollapsedSize","getToolboxHeightToWidthRatio","allowResizeHorizontally","_shape","allowResizeVertically","forToolbox","primitives","createShapePrimitives","enableImage","createImagePrimitives","_forToolbox","textSpacing","getTextClipPathId","getTextAngle","TextAngle","Angle0deg","getClientRectangle","getTextEditRectangle","RectanglePrimitive","raiseShapeDescriptionChanged","notifyShapeDescriptionChanged","_extendStatics3","CompositionHistoryItem","HistoryItem","uniqueId","changeModified","getName","historyItems","dataSyncItems","redo","manipulator","undo","historyItem","DEFAULT_ZINDEX","customData","zIndex","Style","TextStyle","getConnectionPoint","toPoint","getNearestConnectionPoint","ptDistance","prevIndex","getConnectionPointSideByIndex","strokeWidth","areIntersected","_extendStatics4","SimpleCommandBase","CommandBase_1","CommandStates_1","getState","SimpleCommandState","isEnabled","getValue","getDefaultValue","getItems","isVisible","control","readOnly","isEnabledInReadOnlyMode","getModelUnit","getModelUnitText","getModelUnitTwipsValue","getViewUnit","viewUnits","getViewUnitText","getViewUnitTwipsValue","CommandBase","hundredthsOfMillimeterToTwipsRound","documentsToTwips","pixelsToTwipsF","pixelsToTwipsCustomDpi","dpi","pixelsToTwipsFCustomDpi","inchesToTwipsF","pointsToTwipsF","picasToTwips","PICAS_PER_INCH","centimetersToTwipsF","DPI","CENTIMETERS_PER_INCH","twipsToDegrees","twipsToRadians","degreesToTwips","radiansToTwips","radiansToDegrees","twipsToFD","fdToTwips","emuToTwips","val","twipsToPixelsF","inchesToPixels","centimeterToPixel","centimeterToPixelF","millimetersToPixel","pointsToPixels","pointsToPixelsF","pixelsToPoints","pixelsToPointsF","twipsToPoints","twipsToPointsF","pixelsToInches","pixelToCentimeters","twipsToHundredthsOfMillimeter","pixelsToHundredthsOfMillimeter","hundredthsOfMillimeterToTwips","twipsToEmu","twipsToDegree","HitTestDeviation","flag_1","algorithms_1","fixed_1","createPosition","createVerticalInterval","FixedInterval","createHorizontalInterval","fromPositions","fromCenter","minRadius","isCollapsed","setPosition","setSize","setGeomerty","moveRectangle","moveRectangleByPoint","resize","containsRectangle","applyOffsetsInside","offsets","applyNormalizedOffsetsInside","horSum","vertSum","applyOffsetsOutside","getHorizIntersection","objA","objB","IntervalAlgorithms","getIntersection","getVertIntersection","horInters","vertInters","start","getHorNonCollapsedIntersection","inters","getVertNonCollapsedIntersection","getNonCollapsedIntersection","rectA","rectB","union","RectangleDeviation","initRectangle","initPoint","deviation","Flag","calcDeviation","Top","Bottom","calcAdditionalParams","insidePoint","offsetToInside","_extendStatics5","ShapeDescription_1","ShapeParameters_1","ImageInfo_1","expandedSize","toolboxSize","image","ImageInfo","ShapeParameters","allowEditText","hasTemplate","allowEditImage","getMinWidth","settingsMinWidth","minWidth","getMinHeight","settingsMinHeight","minHeight","getMaxWidth","settingsMaxWidth","maxWidth","getMaxHeight","settingsMaxHeight","maxHeight","normalizeX","normalizeY","getConnectionPointSideByGeometry","toggleExpandedSize","NativeShape","type","attachedConnectorIds","containerId","containerChildItemIds","containerExpanded","_extendStatics6","DiagramClipboardEvent","DiagramKeyboardEvent","DiagramContextMenuEvent","DiagramWheelEvent","DiagramMouseEvent","DiagramMouseEventBase","DiagramMouseEventTouch","DiagramFocusEvent","DiagramEvent","ResizeEventSource","MouseEventSource","MouseButton","key_1","common_1","modifiers","inputText","ModifierKey","offsetPoint","modelPoint","button","touches","pointerType","scrollX","scrollY","isDefined","cloneTouches","eventPoint","keyCode","getShortcutCode","clipboardData","RenderHelper","Diagnostics_1","createSvgElement","parent","forExport","svgElement","baseVal","appendChild","forMeasurer","createElement","Diagnostics","optimizeLayers","transform","addEventListener","eventName","handler","removeEventListener","DiagramModelOperation","ModelOperationSettings","_addShape","_addShapeFromToolbox","_deleteShape","_deleteConnector","_changeConnection","_changeConnectorPoints","_changeShapeText","_changeConnectorText","_resizeShape","_moveShape","applySettings","addShape","addShapeFromToolbox","changeConnection","changeConnectorPoints","changeShapeText","changeConnectorText","resizeShape","moveShape","raiseEvent","isLeftButtonPressed","evt_1","updateSvgElementSize","removeElement","parentNode","removeChild","removeContent","firstChild","getElementEventData","getAttribute","getHtmlElementStylePropertyName","getTextAnchorValue","propertyValue","reverseTextAnchor","getStrokeDasharrayValue","dashArray","split","applyStyleToElement","defaultStyle","getDefaultInstance","elPropertyName","HTMLElement","setProperty","generateSvgElementId","prefix","getUrlPathById","id","evt","MSTouchUI","EvtUtils","_evt","raiseFunc","preventDefault","_extendStatics7","RectangleShapeDescription","ShapeTypes_1","_a","getSizeByText","textSize","IdentUserAgent","userAgent","ignoreDocumentMode","browserTypesOrderedList","defaultVersions","Chrome","Mozilla","Netscape","Firefox","Opera","IE","toLowerCase","indentPlatformMajorVersion","platformIdentStrings","optVersion","patterns","Opera10","browserType","version","browserTypeCandidate","matches","RegExp","exec","GetBrowserVersion","getIECompatibleVersionString","browserVersionDetected","platform","minOccurenceIndex","identStr","importantIdent","substr","occurenceIndex","toUpperCase","match","isSamsungAndroidDevice","floor","getVersionFromTrident","documentMode","fillUserAgentInfo","tridentPattern","ieCompatibleVersionString","getVersionFromMatches","versionFromTrident","compatible","isTouchEnabled","hasTouchStart","hasMaxTouchPoints","hasMsMaxTouchPoints","navigator","hasNavigator","Version","MajorVersion","WindowsPlatform","MacOSMobilePlatform","MacOSPlatform","AndroidMobilePlatform","WindowsPhonePlatform","WebKitFamily","NetscapeFamily","HardwareAcceleration","WebKitTouchUI","isIETouchUI","UserAgent","maxTouchPoints","TouchUI","MobileUI","AndroidDefaultBrowser","AndroidChromeBrowser","SamsungAndroidDevice","isARMArchitecture","VirtualKeyboardSupported","fillDocumentElementBrowserTypeClassNames","PlaformMajorVersion","versionStr","parseFloat","documentElementClassName","browserTypeslist","Info","getUserAgent","_foo","_extendStatics8","Alignment","DataLayoutOrientation","LogicalDirectionKind","TreeLayoutSettings","LayoutSettings","orientation","Vertical","direction","Forward","baseSpacing","columnSpacing","layerSpacing","componentSpacing","alignment","Center","subTreeColumnSpacing","_extendStatics9","setUnitAttribute","string_1","ColorUtils","getAlpha","color","getRed","getGreen","getBlue","redPartToString","redStr","greenPartToString","greenStr","bluePartToString","blueStr","fromArgbNumber","alpha","red","green","blue","fromRgbaString","matchesRGBA","replace","matchItem","fromHashString","hash","isHashColorString","charAt","StringUtils","repeat","fromColorName","colorNameAsHash","colorNames","fromString","rgbaColor","hashColor","colorToHash","stringToHash","test","isKnownColorName","isGray","DARK_COLOR","LIGHT_COLOR","aliceblue","antiquewhite","aqua","aquamarine","azure","beige","bisque","black","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dodgerblue","feldspar","firebrick","floralwhite","forestgreen","fuchsia","gainsboro","ghostwhite","gold","goldenrod","gray","greenyellow","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslateblue","lightslategray","lightsteelblue","lightyellow","lime","limegreen","linen","magenta","maroon","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","navy","oldlace","olive","olivedrab","orange","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","purple","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","silver","skyblue","slateblue","slategray","snow","springgreen","steelblue","teal","thistle","tomato","turquoise","violet","violetred","wheat","white","whitesmoke","yellow","yellowgreen","windowtext","DomUtils","clearInnerHtml","setStylePosition","setStyleSize","setStyleSizeAndPosition","hideNode","node","isHTMLElementNode","nodeType","Node","ELEMENT_NODE","isTextNode","TEXT_NODE","isElementNode","isHTMLTableRowElement","tagName","isItParent","parentElement","getParentByTagName","getDocumentScrollTop","isScrollBodyIE","getCurrentStyle","overflow","getDocumentScrollLeft","currentStyle","defaultView","getComputedStyle","frameElement","changes","curElement","display","ownerDocument","srcObject","newObject","ch","setFocus","focusCore","activeElement","setTimeout","hasClassName","classNames","classList","contains","elementClassName","elementClasses","addClassName","removeClassName","updClassName","newClassName","trim","toggleClassName","toggle","pxToInt","px","pxToNumber","pxToFloat","getAbsolutePositionY","getAbsolutePositionY_FF3","getBoundingClientRect","getAbsolutePositionY_IE","curEl","isFirstCycle","cells","getAbsoluteScrollOffset_OperaFF","offsetTop","offsetParent","getAbsolutePositionY_Opera","borderTopWidth","getAbsolutePositionY_NS","getAbsolutePositionY_Other","getAbsolutePositionX","getAbsolutePositionX_FF3","getAbsolutePositionX_IE","offsetLeft","getAbsolutePositionX_Opera","borderLeftWidth","getAbsolutePositionX_NS","getAbsolutePositionX_Other","isInteractiveControl","getClearClientHeight","getTopBottomPaddings","getVerticalBordersWidth","paddingTop","paddingBottom","res","borderTopStyle","borderBottomStyle","borderBottomWidth","getNodes","collection","all","getElementsByTagName","getChildNodes","childNodes","getNodesByClassName","querySelectorAll","result_1","elem","getChildNodesByClassName","nodeList","nodeListToArray","isNonNullString","getVerticalScrollBarWidth","verticalScrollBarWidth","cssText","widthWithoutScrollBar","widthWithScrollBar","clientWidth","getHorizontalBordersWidth","borderLeftStyle","borderRightStyle","borderRightWidth","getFontFamiliesFromCssString","cssString","fam","getInnerText","html2PlainTextFilter","innerHTML","innerText","textContent","parseFunction","indexOfPx","isX","PermissionRequestEventArgs","RequestedEntity","apiController","eventArgs","updateUI","_eventArgs","createEventArgs","_extendStatics10","insertInDOM","createChildElements","createCustomContent","applyElementStyleProperties","removeAttribute","applyChildrenProperties","applyElementStylePropertiesCore","destroyCustomContent","dispose","primitive","KeyCode","encode_1","KeyUtils","getKeyModifiers","altKey","Alt","ctrlKey","Ctrl","shiftKey","Shift","metaKey","Meta","isCtrlKey","isShiftKey","isAltKey","isMetaKey","getShortcutCodeByEvent","getEventKeyCode","which","parseShortcutString","shortcutString","shcKeys","F1","F2","F3","F4","F5","F6","F7","F8","F9","F10","F11","F12","Enter","Home","Up","Down","PageUp","PageDown","Space","Tab","Backspace","ContextMenu","Esc","Delete","Insert","charCodeAt","alert","EncodeUtils","decodeViaTextArea","_extendStatics11","EmptyStyle","StrokeStyle","DEFAULT_STROKE_DASHARRAY","DEFAULT_STROKE_WIDTH","StyleBase","color_1","Svg_1","createDefaultProperties","createInstance","callback","strokeWidthPx","toHash","toObject","k","modified","fromObject","isColorProperty","defaultInstance","isDefaultStrokeDashArray","resetStrokeDashArray","getAlignment","strokeOffset","_strokeWidthPx","_strokeOffset","default1pxInstance","default1pxNegativeOffsetInstance","default2pxInstance","styles","AutoZoomMode","DiagramSettings","onZoomChanged","onViewChanged","onReadOnlyChanged","onConnectorRoutingModeChanged","_zoomLevel","_zoomLevelWasChanged","_zoomLevelItems","_simpleView","_fullscreen","_readOnly","_autoZoom","Disabled","_snapToGrid","_showGrid","_contextMenuEnabled","_gridSize","_gridSizeItems","_pageSizeItems","_viewUnits","_connectorRoutingMode","_reloadInsertedItemRequired","correctZoomLevel","notifyZoomChanged","notifyViewChanged","notifyReadOnlyChanged","notifyGridChanged","showGrid","notifyConnectorRoutingModeChanged","_shapeMinWidth","_shapeMinHeight","_shapeMaxWidth","_shapeMaxHeight","applyShapeSizeSettings","shapeMaxHeight","shapeMinHeight","shapeMaxWidth","shapeMinWidth","_extendStatics12","DEFAULT_CONNECTOR_ENDLINEENDING","DEFAULT_CONNECTOR_STARTLINEENDING","DEFAULT_CONNECTOR_LINEOPTION","ShapeParameterPoint","list_1","digits","factor","powFactor","restrictValue","minVal","maxVal","getRandomInt","random","ListUtils","initByCallback","ind","somePrimes","intersectCore","tg","dy1","dy2","boolToInt","boolToString","isNumber","isString","str","isEven","isOdd","numberToStringBin","minLength","padLeft","numberToStringHex","_extendStatics13","MouseHandlerDraggingState","MouseHandlerStateBase_1","canApplyChangesOnMouseMove","initPosition","dragStartLimit","onAfterApplyChanges","onDocumentDragStart","getDraggingElementKeys","mouseDownPoint","onMouseDown","onMouseMove","mouseMoveEvent","cancelChanges","switchToDefaultState","onApplyChanges","onKeyDown","performMouseMoveEvent","onKeyUp","onMouseUp","beginStorePermissions","finish","checkStoredPermissionsOnFinish","onFinishWithChanges","onDocumentDragEnd","endStorePermissions","clearInteractingItems","isStoredPermissionsGranted","lockPermissions","undoTransaction","unlockPermissions","getSnappedPoint","getSnappedPointOnDragPoint","MouseHandlerCancellableState","xDist","yDist","manhattanDistance","ShapeParameter","parameter","addRange","paramObj","ConnectionMode","PositionInfo","weight","getHashKey","reverse","_extendStatics14","GroupPrimitive","onBeforeDispose","_extendStatics15","MouseHandlerStateBase","onMouseClick","onMouseDblClick","onMouseWheel","onDragStart","onDragEnd","onShortcut","_shortcutCode","onConnectionPointsShow","onConnectionTargetShow","code","array","comparer","minIndex","maxIndex","findFromZeroPosition","currentIndex","compare","normedBinaryIndexOf","binaryIndexNormalizator","normedInterpolationIndexOf","toFind","lowIndex","highIndex","firstObject","lowValue","highValue","midIndex","midValue","CanvasManagerBase","TextFilterPrimitive_1","actualZoom","dom","elements","createAndChangePrimitivesElements","createAndChangePrimitiveElement","createPrimitiveElement","sibling","changeByPrimitive","changePrimitiveElement","getOrCreateElement","createTextFloodFilter","pageColor","TextFloodFilterPrimitive","getAbsoluteSize","modelSize","SetAbsoluteY","SetAbsoluteX","dom_1","IsNumber","isFinite","prepareClientPosForElement","div","visibility","createElementMock","realPos","getPositionElementOffset","ArrayInsert","ArrayRemove","ArrayIndexOf","ArrayRemoveAt","pop","ArrayClear","ArrayContains","ArrayEqual","array1","array2","ArraySame","every","ArrayGetIntegerEdgeValues","arrayToSort","CollectionToArray","ArrayIntegerAscendingSort","end","ArrayIntegerSort","desc","i1","i2","CollectionsUnionToArray","firstCollection","secondCollection","firstCollectionLength","secondCollectionLength","CreateHashTableFromArray","CreateIndexHashTableFromArray","ArrayToHash","getKeyFunc","getValueFunc","Sum","prevValue","Min","CalculateArrayMinMax","Max","NearestLeftBinarySearchComparer","arrayElement","leftPoint","ArrayBinarySearch","binarySearchComparer","defaultBinarySearchComparer","middle","compareResult","ArrayFlatten","arrayOfArrays","GetDistinctArray","resultArray","currentEntry","ForEach","len","MergeHashTables","target","_val","isMax","startValue","NEGATIVE_INFINITY","POSITIVE_INFINITY","byRange","cssTextToObject","name_1","objectToCssText","_extendStatics16","ImageCache","CacheImageInfo","base64_1","base64","actualId","imageUrl","referenceInfo","isLoaded","_base64","Base64Utils","normalizeToDataUrl","_referenceInfo","_isLoaded","_isLoading","startLoading","finalizeLoading","emptyImageId","lastActualId","onReadyStateChanged","cache","nonLoadedImages","createUnloadedInfoByBase64","transparentOnePixelImage","reset","getImageData","createUnloadedInfoByUrl","findInfoByUrl","registerImageData","getNextActualId","findInfoByBase64","createUnloadedInfoByShapeImageInfo","imageInfo","data","exportUrl","checkPrependDataUrl","existingData","raiseReadyStateChanged","loadAllImages","loader","cacheInfo","isLoading","load","existingInfo","loadedInfo","imageInfoIndex","base64_2","cacheElem","isReference","hasNonLoadedImages","findInfoCore","cacheImageInfo","ready","notifyImageCacheReadyStateChanged","instance","PageOrientation","_extendStatics17","HistoryItem_1","addConnection","deleteConnection","oldConnectionPointIndex","setConnectionPointIndex","isAlpha","isDigit","stringHashCode","strLen","endsAt","template","strInd","tmplInd","strStartInd","startsAt","stringInLowerCase","stringInUpperCase","atLeastOneSymbolInUpperCase","char","getSymbolFromEnd","posFromEnd","trimChars","trimInternal","joinedChars","trimStart","trimEnd","getDecimalSeparator","toLocaleString","isNullOrEmpty","totalWidth","paddingChar","substring","imageUrlOrBase64","url","loadFailed","transparentWhiteImage1_1","loadBase64Content","base64Content","setUnableToLoadFlag","ConnectorPointsOrthogonalSideCalculatorBase","beginRect","endRect","getBeginOffsetPoints","targetSide","originPoint","originRect","getCorrectOriginPoint","isBeginEndSame","getSameShapeOffsetPoints","isBeginEndOverlappedPoints","getOverlappedPointsOffsetPoints","isBeginEndOverlapped","getBeginOverlappedShapeOffsetPoints","isOriginRectContainsTargetPoint","isOnSidePoint","getBeginOnSideOffsetPoints","getBeginOffSideOffsetPoints","getEndOffsetPoints","getEndOverlappedShapeOffsetPoints","getEndOnSideOffsetPoints","getEndOffSideOffsetPoints","getSide","getSideCalculator","getMinOffset","isBeginEndOverlappedX","isBeginEndOverlappedY","_extendStatics18","shapeDescription","_extendStatics19","EllipsePrimitive","cx","cy","_extendStatics20","ClipPathPrimitive","_extendStatics21","ExportImportCommandBase","__webpack_exports__","_assign","__rest","__decorate","__param","__metadata","__awaiter","__generator","__createBinding","__exportStar","__values","__read","__spread","__spreadArrays","__await","__asyncGenerator","__asyncDelegator","__asyncValues","__makeTemplateObject","__importStar","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","_extendStatics22","getOwnPropertySymbols","propertyIsEnumerable","decorators","getOwnPropertyDescriptor","Reflect","decorate","paramIndex","decorator","metadataKey","metadataValue","metadata","thisArg","_arguments","P","generator","Promise","resolve","reject","fulfilled","rejected","done","then","f","g","label","sent","trys","ops","verb","iterator","op","TypeError","k2","ar","error","il","j","jl","asyncIterator","q","resume","fulfill","settle","shift","cooked","raw","__setModuleDefault","mod","default","receiver","privateMap","has","begin","fromSegment","normalize","angleBetween","cosFi","scalarProduct","acos","LoggerDisplayMode","beginAverage","groupName","enableLogsAndTimers","lastAverageGroupName","endAverage","tryLogAverage","sameGroupTimers","timers","endTime","average","startTime","log","timer","message","lastCreatedTimer","performance","now","endTimer","timeoutID","showMessage","logPerfInfo","nodesCount","querySelector","memory","Console","console","existText","getElement","lastMessage","lastLineLength","lastLine","before","after","background","fontSize","fontFamily","clr","opacity","optimizeUsingRAF","touch_1","preventEvent","cancelable","returnValue","getEventSource","getEventSourceCore","getEventSourceByPosition","elementFromPoint","eventX","getEventX","eventY","getEventY","srcElement","getMouseWheelEventName","TouchUtils","isTouchEvent","event","buttons","isMoveEventName","touchMouseMoveEventName","getMoveEventName","PointerEvent","preventEventAndBubble","stopPropagation","cancelBubble","clientEventRequiresDocScrollCorrection","isSafariVerLess3","isMacOSMobileVerLess51","clientX","clientY","getWheelDelta","ret","detail","wheelDelta","DiagramModel","ImageCache_1","pageSize","itemIndexByKey","keyCounter","pageLandscape","defaultPageColor","initializeKeyCounter","forceUpdate","pushItem","cacheShapeImage","removeItem","updateIndicesHash","findShapesCore","findShapeCore","findShapeAtPosition","findShapeByDataKey","findShapesByImageUrl","findShapesByDescription","imageLoader","findNearestContainer","recursive","findItemContainerCore","findItemContainer","findConnectorCore","findConnectorAtPoints","findConnectorByDataKey","findConnectorByBeginEndDataKeys","beginDataKey","endDataKey","findConnectorsCore","findItemByDataKey","findItemCore","isIntersectedItems","item1","item2","s1","s2","getIntersectItems","getIntersectItemsMinZIndex","getIntersectItemsMaxZIndex","iterateItems","getNextKey","_extendStatics23","TextPrimitive270degRenderHelper","TextPrimitive180degRenderHelper","TextPrimitive90degRenderHelper","TextPrimitiveRenderHelper","TextUtils_1","owner","textWidth","textHeight","reverseTextAhchor","filterId","textSegmens","textToParagraphs","renderHelper","createRenderHelper","getTextX","getTextY","fitToSize","createTSpanElements","prepareTSpanElements","prepareMainElement","txt","createTSpanElement","words_1","textToWords","lines","wordsByLines","measureWords","firstTSpan","prepareFirstTSpanElement","tSpan","prepareTSpanElement","lineCount","Angle90deg","Angle180deg","Angle270deg","baselineCorrection","needRotation","LINE_HEIGHT","textAnchor","getLineHeight","getTextHeight","getTextLineSize","getOptimalTextRectangle","TEXTRECT_RATIO_EPS","Data_1","WHITESPACES","absLineWidth","words","measuredWords","spaceWidth","lastLineWidth","lastLineIndex","word","wordWidth","compareRatio","eps","an","bn","calcHeight","paragraphs","measureResult","yRange","calcByFit","wordSize","textOrParagraphs","emptyTextAsSingleLine","isArray","initialSize","keepRatio","MAX_SAFE_INTEGER","maxWordWidth","xRange","ratio","initRatio","incHeightToRatio","newFitToHeight","maxParagraphWidth","deltaWidth","attempt","newRatio","newError","getOptimalTextRectangleCore","_extendStatics24","renderPointsContext","addConnector","_extendStatics25","_extendStatics26","selectedKeys","forceChange","oldSelection","_extendStatics27","oldText","_extendStatics28","styleProperty","styleValue","oldStyleValue","changeStyleText","ChangeStyleHistoryItemBase","_extendStatics29","GraphIterator","FastGraph","ListUtils_1","GraphBase","nodeMap","edgeMap","onInit","edge","getEdge","getAdjacentEdges","nodeKey","connectionMode","OutgoingAndIncoming","Incoming","Outgoing","cast","castNode","castEdge","getConnectedComponents","createIterator","visitEachEdgeOnce","components","onNode","onEdge","iterate","this_1","getSpanningGraph","rootKey","edgeWeightFunc","sortedAdjacentEdges","spanningTreeNodesSet","HashSet","spanningTreeEdgesSet","addNodeToSpanningGraph","minWeighedEdge","tryPush","list","adjacentEdges","parentToChildren","childToParents","getParents","visitEachNodeOnce","visitedNodes","visitedEdges","skipNode","iterateCore","isNodeVisited","skipEdge","outgoing","onAfterEdge","onAllEdges","incoming","isEdgeVisited","edgeKey","Margin","EdgeLayout","NodeLayout","NodeInfo","margin","_extendStatics30","EllipseShapeDescription","EllipsePrimitive_1","Exporter","export","page","exportItemsCore","exportItems","exportShape","connectorObj","exportConnector","exportItem","paramsObj","styleObj","styleTextObj","propsObj","exportSvg","exportManager","exportSvgImage","exportPng","exportPngImage","exportJpg","exportJpgImage","_extendStatics31","ToggleStyleTextPropertyCommand","StylePropertyCommandBase_1","getCurrentTextStylePropertyValue","getStyleProperty","getStylePropertyValue","executeCore","state","setTextStylePropertyValue","getStyleObj","getDefaultStyleObj","StylePropertyCommandBase","_extendStatics32","ChangeStylePropertyCommand","ChangeStylePropertyCommandBase_1","getCurrentStylePropertyValue","createHistoryItem","updateInputPosition","setStylePropertyValue","ChangeStylePropertyCommandBase","_extendStatics33","AutoLayoutCommandBase","SimpleCommandBase_1","ScrollIntoViewHistoryItem_1","getAffectedShapes","getAffectedConnectors","createLayoutSettings","graphInfo","rectangle_2","model_1","commonRect","ScrollIntoViewOnUndoHistoryItem","view","createLayout","ScrollIntoViewOnRedoHistoryItem","_extendStatics34","ChangePagePropertyCommand","createHistoryItems","_extendStatics35","CanvasItemsManager","CONNECTOR_CAN_MOVE","NOT_VALID_CSSCLASS","ModelChange_1","GroupPrimitive_1","CanvasManager_1","viewElement","zoomLevel","itemSelectorGroupContainers","itemSelectorElements","itemGroupContainers","itemElements","itemChildElements","selectorPrimitives","initializeContainerElements","itemSelectorsContainer","itemsContainer","clear","applyChange","getItemParent","applyShapeChange","isValid","applyConnectorChange","setPointerEventsNone","pointerEvents","notifyDragStart","itemKeys","notifyDragEnd","notifyDragScrollStart","notifyDragScrollEnd","notifyTextInputStart","notifyTextInputEnd","notifyTextInputPermissionsCheck","notifyActualZoomChanged","scale","changeByFunc","notifyViewAdjusted","canvasOffset","invalidatePrimitives","getPrimitives","getSelectorPrimitives","getShapeSelectorClassName","getShapeClassName","selectorClassName","itemSelectorParent","getItemSelectorGroupContainer","itemParent","getItemGroupContainer","itemClassName","ItemChangeType","Create","createItemElements","changeItemChildrenVisibility","Remove","removeItemCustomContent","removeItemElements","UpdateStructure","UpdateProperties","Update","changeItemElements","changeItemClassName","moveItemElements","UpdateClassName","getConnectorSelectorClassName","getConnectorClassName","selectorMoveClassName","gEl","updateStructure","changeChildrenByPrimitives","insertBefore","getItemGroupContainerKey","parentContainerKey","getItemSelectorParent","notifySelectionChanged","newSelectedItems","itemsToUpdate","populateItems","applyOrPostponeChanges","ItemChange","sourceSet","checkSet","CanvasManager","TextMeasurer","fontSizeCache","containers","createNodes","splitToWords","styleHashKey","getStyleHash","measureElements","tryLoadWordsToMeasurer","putElementsInDOM","beforeMeasureInDOM","measureElementsInDOM","afterMeasureInDOM","measureTextLine","textLine","results","onNewModel","onNewModelCore","shapeElements","tryLoadShapeTexts","connectorElements","tryLoadConnectorTexts","replaceParent","mainElement","clean","newSet","hashes","styleHashes","textOwner","elementsToMeasure","hashesToMeasure","styleHashesToMeasure","newWords","tryLoadWordToMeasurer","getDomElementSize","getDomFontSize","getHash","cachedSize","setAttributeNS","includeWhitespace","textEl","bBox","getBBox","createContainer","ExtensionLine","Resize","_extendStatics36","EdgeOnLayer","NodeOnLayer","SugiyamaNodesOrderer","SugiyamaLayerDistributor","SugiyamaLayoutBuilder","BaseBuilder_1","NodeLayout_1","LayoutSettings_1","GraphLayout_1","CycleRemover_1","build","GraphLayout","nodeOrderer","component","acyclicGraphInfo","CycleRemover","removeCycles","layers","getLayers","orderedGraph","orderNodes","removedEdges","ek","coordinatedGraph","assignAbsCoordinates","componentLayout","createInfoGraphLayout","reversedEdges","setComponentOffset","getComponentOffset","currentPosition","sortedLayers","layer","absOffsetInfo","getAbsOffsetInfo","positions","totalDepth","leftEdge","rightEdge","MIN_SAFE_INTEGER","maxDepthLayer","depthNodeSize","getDepthNodeSize","directionOffset","chooseDirectionValue","absPosition","getAbsPosition","getBreadthNodeSize","setBreadth","nodePosition","setDepthOffset","isDummy","breadth","Horizontal","getDirectionValue","createNodesLayout","createEdgesLayout","infoGraph","DIRECT","getDirectEdgeLayout","TOP_TO_BOTTOM","getDiffLevelEdgeLayout","BOTTOM_TO_TOP","TOP_TO_TOP","getSameLevelEdgeLayout","BOTTOM_TO_BOTTOM","occupied","originFrom","isReversed","candidates_1","oneliner","candidate","topToBottom","nodesInfos","absOffsetMatrix","addCell","intAbsCoord","trunc","leftOffset","coord","breadthPosition","absCoordinate","itemSize","absoluteOffsetInfo","absLeftOffset","cellWidth","getBreadthNodeSizeCore","getDepthNodeSizeCore","LayoutBuilder","acyclicGraph","feasibleTree","getFeasibleTree","calcNodesLayers","initLayerAssignment","currentLayer","actualAssignedNodes","assigningNodes","assigningNodesSet","minLayer","currentLevel","out","idCounter","currentIteration","initGraphInfo","nodeInfos","orderInfo","initOrder","bestNodesPositions","getNodeToPositionMap","bestCrossCount","getCrossCount","isParentToChildren","getNodesOrder","crossCount","order","_loop_3","nodePositions","ni","adjacentNodesPositions","getNodePosition","this_2","sortNodes","medianIndex","leftMedianPosition","rightMedianPosition","_loop_4","viewedAdjacentNodesPositions","vp","countNodesOnLayer","nodesInfoMap","edgeInfos","span","prevNodeInfo","dNodeInfo","createDummyID","absCoordinates","getAbsCoodinate","medianPositions","MedianAlignmentMode","TopLeft","TopRight","BottomLeft","BottomRight","getPositionByMedian","nodeToPosition","posList","medians","getMedians","resolveMedianConflicts","getSortedBlocks","block","maxPos","ln","blocks","isBottom","allNodesInfo","firstNode","getBlock","xMinNodeInfo","yOnMinXLayer","yMinNodeInfo","xOnMinYLayer","root","median","filteredMedians","_loop_5","minPos","medianItemKey","medianPosition","checkMedianConfict","actualAdjacentEdges","getActualAdjacentEdges","getMedianPosition","getHashCode","_originFrom","BatchUpdatableObject","suspendUpdateCount","occurredEvents","beginUpdate","onUpdateLocked","endUpdate","isUpdateLocked","onUpdateUnlocked","suspendUpdate","continueUpdate","registerOccurredEvent","eventMask","resetOccurredEvents","EmptyBatchUpdatableObject","CommandManager","DiagramCommand","DeleteCommand_1","UndoCommand_1","RedoCommand_1","ImportCommand_1","ExportCommand_1","ToggleFontBoldCommand_1","ToggleFontItalicCommand_1","ToggleFontUnderlineCommand_1","ChangeFontNameCommand_1","ChangeFontSizeCommand_1","ChangeFontColorCommand_1","ChangeFillColorCommand_1","ChangeStrokeColorCommand_1","ChangeTextAlignCommand_1","ChangeConnectorLineEndingCommand_1","ChangeConnectorLineOptionCommand_1","SelectAllCommand_1","AutoLayoutTreeVerticalCommand_1","ChangeSnapToGridCommand_1","ChangeGridSizeCommand_1","ChangePageLandscapeCommand_1","ChangePageSizeCommand_1","ExportPngCommand_1","ExportSvgCommand_1","ExportJpgCommand_1","CopySelectionCommand_1","CutSelectionCommand_1","PasteSelectionCommand_1","ImportBPMNCommand_1","SendToBackCommand_1","BringToFrontCommand_1","AutoLayoutLayeredHorizontalCommand_1","MoveCommands_1","ChangeZoomLevelCommand_1","BindDocumentCommand_1","UnbindDocumentCommand_1","AutoLayoutTreeHorizontalCommand_1","AutoLayoutLayeredVerticalCommand_1","LockCommand_1","UnlockCommand_1","CloneCommand_1","ChangeUnitsCommand_1","ChangePageColorCommand_1","ChangeShowGridCommand_1","ToggleFullscreenCommand_1","ToggleSimpleViewCommand_1","ToggleReadOnlyCommand_1","EditShapeImageCommand_1","PasteSelectionInPosition_1","ImportXMLCommand_1","InsertShapeImageCommand_1","DeleteShapeImageCommand_1","ChangeStrokeStyleCommand_1","ChangeStrokeWidthCommand_1","AutoLayoutTreeVerticalBottomToTopCommand_1","AutoLayoutTreeHorizontalRightToLeftCommand_1","AutoLayoutLayeredVerticalBottomToTopCommand_1","AutoLayoutLayeredHorizontalRightToLeftCommand_1","ChangeConnectorRoutingModeCommand_1","shortcutsToCommand","lastCommandsChain","executingCommandsChain","executingCommandCounter","isPublicApiCall","createCommand","Undo","UndoCommand","Key_z","Redo","RedoCommand","Key_y","Cut","CutSelectionCommand","Key_x","Copy","CopySelectionCommand","Key_c","Paste","PasteSelectionCommand","PasteInPosition","PasteSelectionInPositionCommand","SelectAll","SelectAllCommand","Key_a","DeleteCommand","Import","ImportCommand","ImportBPMN","ImportBPMNCommand","ImportXML","ImportXMLCommand","Export","ExportCommand","ExportSvg","ExportSvgCommand","ExportPng","ExportPngCommand","ExportJpg","ExportJpgCommand","BindDocument","BindDocumentCommand","UnbindDocument","UnbindDocumentCommand","Bold","ToggleFontBoldCommand","Key_b","Italic","ToggleFontItalicCommand","Key_i","Underline","ToggleFontUnderlineCommand","Key_u","FontName","ChangeFontNameCommand","FontSize","ChangeFontSizeCommand","FontColor","ChangeFontColorCommand","FillColor","ChangeFillColorCommand","StrokeColor","ChangeStrokeColorCommand","ChangeStrokeStyleCommand","StrokeWidth","ChangeStrokeWidthCommand","TextLeftAlign","TextLeftAlignCommand","TextCenterAlign","TextCenterAlignCommand","TextRightAlign","TextRightAlignCommand","ChangeConnectorLineOptionCommand","ConnectorStartLineEnding","ChangeConnectorStartLineEndingCommand","ConnectorEndLineEnding","ChangeConnectorEndLineEndingCommand","BringToFront","BringToFrontCommand","SendToBack","SendToBackCommand","MoveLeft","MoveLeftCommand","MoveRight","MoveRightCommand","MoveUp","MoveUpCommand","MoveDown","MoveDownCommand","MoveStepLeft","MoveStepLeftCommand","MoveStepRight","MoveStepRightCommand","MoveStepUp","MoveStepUpCommand","MoveStepDown","MoveStepDownCommand","CloneLeft","CloneLeftCommand","CloneRight","CloneRightCommand","CloneUp","CloneUpCommand","CloneDown","CloneDownCommand","Lock","LockCommand","Unlock","UnLockCommand","AutoLayoutTree","AutoLayoutTreeVerticalCommand","AutoLayoutFlow","AutoLayoutLayeredHorizontalCommand","Units","ChangeUnitsCommand","ViewUnits","ChangeViewUnitsCommand","PageSize","ChangePageSizeCommand","PageLandscape","ChangePageLandscapeCommand","PageColor","ChangePageColorCommand","GridSize","ChangeGridSizeCommand","ShowGrid","ChangeShowGridCommand","SnapToGrid","ChangeSnapToGridCommand","ZoomLevel","ChangeZoomLevelCommand","ZoomLevelInPercentage","ChangeZoomLevelInPercentageCommand","AutoLayoutTreeVertical","AutoLayoutTreeVerticalBottomToTop","AutoLayoutTreeVerticalBottomToTopCommand","AutoLayoutTreeHorizontal","AutoLayoutTreeHorizontalCommand","AutoLayoutTreeHorizontalRightToLeft","AutoLayoutTreeHorizontalRightToLeftCommand","AutoLayoutLayeredVertical","AutoLayoutLayeredVerticalCommand","AutoLayoutLayeredVerticalBottomToTop","AutoLayoutLayeredVerticalBottomToTopCommand","AutoLayoutLayeredHorizontal","AutoLayoutLayeredHorizontalRightToLeft","AutoLayoutLayeredHorizontalRightToLeftCommand","Fullscreen","ToggleFullscreenCommand","ToggleSimpleView","ToggleSimpleViewCommand","ToggleReadOnly","ToggleReadOnlyCommand","InsertShapeImage","InsertShapeImageCommand","EditShapeImage","EditShapeImageCommand","DeleteShapeImage","DeleteShapeImageCommand","FitToScreen","FitToScreenCommand","FitToWidth","FitToWidthCommand","SwitchAutoZoom","SwitchAutoZoomCommand","ToggleAutoZoom","ToggleAutoZoomCommand","ZoomLevelItems","ChangeZoomLevelItemsCommand","GridSizeItems","ChangeGridSizeItemsCommand","PageSizeItems","ChangePageSizeItemsCommand","Zoom25","ChangeZoomLevelTo25Command","Zoom50","ChangeZoomLevelTo50Command","Zoom75","ChangeZoomLevelTo75Command","Zoom100","ChangeZoomLevelTo100Command","Zoom125","ChangeZoomLevelTo125Command","Zoom150","ChangeZoomLevelTo150Command","Zoom200","ChangeZoomLevelTo200Command","AutoZoomToContent","ToggleAutoZoomToContentCommand","AutoZoomToWidth","ToggleAutoZoomToWidthCommand","ChangeConnectorRoutingModeCommand","getCommand","beforeExecuting","afterExecuting","processShortcut","execute","processPaste","_selection","notifyScrollPositionChanged","commandId","commandType","shortcuts","shortcut","min_max_1","comparers_1","removeBy","shallowCopy","deepCopy","initByValue","numElements","initValue","initCallback","forEachOnInterval","interval","reverseForEachOnInterval","reducedMap","newItem","indexBy","reverseIndexBy","elementBy","reverseElementBy","last","setLast","newVal","incLast","decLast","allOf2","equalsByReference","aLen","unique","cmp","equal","finalizeObj","unshift","uniqueNumber","Comparers","number","NaN","forEach2","listA","listB","reverseForEach","reverseIndexOf","accumulate","initAccValue","accumulateNumber","anyOf","unsafeAnyOf","currResult","reverseAnyOf","unsafeReverseAnyOf","anyOf2","allOf","allOfOnInterval","addListOnTail","resultList","addedList","joinLists","lists","accList","countIf","merge","shouldMerge","prevObj","minExtended","minElement","maxExtended","maxElement","minMax","minMaxExtended","MinMax","minValue","elemValue","ExtendedMin","maxValue","ExtendedMax","ExtendedMinMax","minByCmp","found","maxByCmp","minMaxByCmp","file_1","mime_type_1","mimeType","prependByDataUrl","dataUrl","deleteDataUrlPrefix","base64DataUrl","getUint8Array","atob","Uint8Array","fromArrayBuffer","buffer","binary","bytes","byteLength","String","fromCharCode","btoa","getFileFromBase64","fileName","options","FileUtils","createFile","getMimeTypeAsString","getKnownMimeType","MimeTypeUtils","stringTypeToType","DxMimeType","Unknown","fromBlobAsArrayBuffer","blob","reader","FileReader","onloadend","readAsArrayBuffer","fromBlobAsDataUrl","readAsDataURL","_extendStatics37","NativeItem","unitsApplied","applyUnitsCore","_extendStatics38","UpdateConnectorPointsHistoryItem","oldRenderContext","oldPoints","updateRenderPoints","Offsets","fromOffsets","fromSide","horizontal","vertical","multLeft","multRight","multTop","multBottom","_extendStatics39","oldValue","changeConnectorProperty","_extendStatics40","changeStyle","first","ShapeDescriptionManager","ProcessShapeDescription_1","DecisionShapeDescription_1","ManualInputShapeDescription_1","DataShapeDescription_1","TerminatorShapeDescription_1","PredefinedProcessShapeDescription_1","ArrowUpDownShapeDescription_1","ArrowRightShapeDescription_1","ArrowUpShapeDescription_1","CrossShapeDescription_1","DiamondShapeDescription_1","EllipseShapeDescription_1","HeartShapeDescription_1","RectangleShapeDescription_1","TextShapeDescription_1","PentagonShapeDescription_1","HexagonShapeDescription_1","OctagonShapeDescription_1","StarShapeDescription_1","ArrowDownShapeDescription_1","ArrowLeftRightShapeDescription_1","ArrowLeftShapeDescription_1","TriangleShapeDescription_1","DocumentShapeDescription_1","MultipleDocumentsShapeDescription_1","PreparationShapeDescription_1","HardDiskShapeDescription_1","DatabaseShapeDescription_1","InternalStorageShapeDescription_1","PaperTapeShapeDescription_1","ManualOperationShapeDescription_1","DelayShapeDescription_1","StoredDataShapeDescription_1","MergeShapeDescription_1","DisplayShapeDescription_1","OrShapeDescription_1","SummingJunctionShapeDescription_1","CustomShapeDescription_1","VerticalContainerDescription_1","HorizontalContainerDescription_1","CardWithImageOnTopDescription_1","ConnectorShapeDescription_1","CardWithHorizontalImageDescription_1","descriptions","descriptionTypes","descriptionCategories","onShapeDecriptionChanged","register","TextShapeDescription","CrossShapeDescription","TriangleShapeDescription","DiamondShapeDescription","HeartShapeDescription","PentagonShapeDescription","HexagonShapeDescription","OctagonShapeDescription","StarShapeDescription","ArrowUpShapeDescription","ArrowDownShapeDescription","ArrowLeftShapeDescription","ArrowRightShapeDescription","ArrowUpDownShapeDescription","ArrowLeftRightShapeDescription","ProcessShapeDescription","DecisionShapeDescription","TerminatorShapeDescription","PredefinedProcessShapeDescription","DocumentShapeDescription","MultipleDocumentsShapeDescription","ManualInputShapeDescription","PreparationShapeDescription","DataShapeDescription","DatabaseShapeDescription","HardDiskShapeDescription","InternalStorageShapeDescription","PaperTapeShapeDescription","ManualOperationShapeDescription","DelayShapeDescription","StoredDataShapeDescription","DisplayShapeDescription","MergeShapeDescription","ConnectorShapeDescription","OrShapeDescription","SummingJunctionShapeDescription","CardWithImageOnLeftDescription","CardWithImageOnRightDescription","CardWithImageOnTopDescription","VerticalContainerDescription","HorizontalContainerDescription","defaultContainerInstance","getTypesByCategory","category","getCategoryByType","getCategoryByDescription","registerCustomShape","baseDescription","baseType","CustomShapeDescription","unregisterCustomShape","shapeType","unregisterAllCustomShapes","_extendStatics41","ArrowVerticalShapeDescription","ArrowVerticalLineWidthParameterName","ArrowVerticalTriangleHeightParameterName","_extendStatics42","ArrowHorizontalShapeDescription","ArrowVerticalLineHeightParameterName","ArrowVerticalTriangleWidthParameterName","_extendStatics43","PolygonShapeDescription","calculateHeight","angleCount","ImportUtils","parseJSON","json","parse","createDocument","xml","DOMParser","parseFromString","_extendStatics44","ChangeStyleTextPropertyCommand","_extendStatics45","TreeLayoutBuilder","Tree_1","nodeToLevel","levelDepthSize","tree","Tree","createSpanningTree","processTree","preProcessTree","parents","maxDepthSize","getMaxDepthSize","loadNodes","hasNode","processLevel","Backward","levelDepths","mostDepthPos_1","setDepthPos","getDepthPos","depthPos","breadthParentRange","prevRange","addNodes","parentEdges","updateEdgeConnections","lastChild","childRange","getBreadthPos","alignParent","breadthPos","maxDepthSide","getBeginEdgeIndex","getEndEdgeIndex","isVertical","availableRange","alignedPosition","_extendStatics46","ExportImageCommand","CanvasItemsManager_1","CanvasExportManager_1","ExportImportCommandBase_1","Exporter_1","TextMeasurer_1","DOMManipulator_1","exporter","getExportManager","getExportFunc","exportFunc","getExtension","tryDispose","getOrCreateMeasurer","itemsManager","render","createItemsManager","CanvasExportManager","canvasManager","ExportDOMManipulator","onModelChanged","commitItemsCreateChanges","tempMeasurer","_extendStatics47","DOMManipulator","queue","doChange","cancelAnimation","rafId","cancelAnimationFrame","requestAnimation","doChangeSync","rafRequested","requestAnimationFrame","func_1","_extendStatics48","ClipboardCommand","setClipboardData","input","getClipboardData","isPasteSupportedByBrowser","_extendStatics49","ChangeZindexHistoryItem","oldZIndex","changeZIndex","DataLayoutParameters","DataLayoutType","WideTree_1","Sugiyama_1","sizeSettings","layoutType","layoutSettings","Sugiyama","autoSizeEnabled","getLayoutBuilder","_extendStatics50","EditShapeImageCommandBase","ChangeShapeImageHistoryItem_1","selectedShape","getSelectedShape","selectedShapes","selectedUnlockedShapes","ChangeShapeImageHistoryItem","ToolboxDragEventsHandlerBase","isTouchUIEnabled","attach","dragEventsHandler","manager","onElementDownHandler","onElementDown","onElementUpHandler","onElementUp","onDownHandler","onDown","onMoveHandler","onMove","onUpHandler","onUp","downEventName","upEventName","moveEventName","detach","mouseDownShapeType","getDragShapeType","raiseNotifyToolboxClick","shouldPrepareDrag","finishDragging","prepareDragging","onDownCore","onMoveCore","shouldContinueDragging","continueDragging","RenderManagerDragEventsHandlerBase","isMoveLocked","lockMoveTimer","onEnterHandler","onEnter","onLeaveHandler","onLeave","enterEventName","passive","leaveEventName","unLockMove","lockMove","onUpCore","onMouseEnter","onMouseLeave","clearTimeout","DiagramControl","CommandManager_1","Diagram_1","DataLayoutParameters_1","ModelOperationSettings_1","tslib_1","newEnd","makeByStartEnd","makeByStartLength","makeByLengthEnd","makeByConstInterval","expand","MutableInterval","SparseIntervalsIterator","sparseIntervals","intervalIndex","curr","moveNext","posInInterval","initObject","numIntervals","getInterval","movePrev","isStarted","_extendStatics51","FilterPrimitive","transformAttr","COLOR_PROPERTIES","propName","ConnectorPointsCalculatorBase","_extendStatics52","oldParameters","changeShapeParameters","_extendStatics53","_extendStatics54","_extendStatics55","oldPosition","oldSize","_extendStatics56","oldLocked","changeLocked","_extendStatics57","_extendStatics58","Importer","ShapeDescriptionManager_1","ImporterBase_1","ImportUtils_1","shapeDescriptionManager","getObject","getPageObject","getShapeObjects","getConnectorObjects","importPageSettings","pageObj","assert","importShape","shapeObj","importShapeChildren","importConnector","ImporterBase","_extendStatics59","_extendStatics60","ClipPathPrimitive_1","textClipPathId","top_1","getSizeByTextRectangle","_extendStatics61","PolygonShapeDescription_1","defaultRatio","py","_extendStatics62","sideX","_extendStatics63","_extendStatics64","createDocumentPrimitives","curveOffsetRatio","_extendStatics65","ImagePrimitive_1","ShapeWithImageDescription_1","ImageLoader_1","SvgElementPrimitive_1","defaultWidth","defaultHeight","ImageLoader","updateSvgImage","defaultText","defaultImageUrl","title","svgUrl","svgImage","cachedImage","svgToolboxUrl","svgToolboxImage","createTemplate","keepRatioOnAutoSize","toolboxWidthToHeightRatio","allowResize","ptObj","svgLeft","svgTop","svgWidth","svgHeight","ImagePrimitive","createToolboxTemplate","templateLeft","templateTop","templateWidth","templateHeight","nativeShape","createNativeShape","SvgElementPrimitive","destroyTemplate","textLeft","textTop","getImageSize","shapeSize","includeMargins","ShapeWithImageDescription","imageWidth","imageHeight","getImagePlacementRectangle","imageLeft","imageTop","isToolboxImage","_extendStatics66","preserveAspectRatio","_extendStatics67","SHAPE_IMAGE_CLASSNAMES","ShapeImageIndicator_1","IMAGE","IMAGE_PLACEHOLDER","LOADING_INDICATOR","USER_PIC","WARNING_MARK","defaultIconSize","getImageMargin","createImagePlaceholder","imagePrimitives","unableToLoad","createEmptyImagePrimitives","renderUrl","createLoadingImagePrimitives","createLoadedImagePrimitives","imageScalingRule","loadingRect","getIconPlacementRectangle","ShapeImageIndicator","createLoadingIndicatorPrimitives","showWarning","createEmptyImagePrimitive","createWarningPrimitive","iconRect","borderThickness","animationStarted","createLoadingIndicatorPrimitive","createUserIconPrimitives","createUserIconPrimitive","createWarningIconPrimitives","createWarningIconPrimitive","rotate","centerX","centerY","timestamp","transformAttributeValue","animationRequestId","onApplyLoadingIndicatorElementProperties","radius","sizeInPixels","exclamationLineWidth","loadedCallback","loadInner","loadPictureByUrl","loadPictureByBase64","loadedData","imageLoaded","img","Image","onload","src","xhr","XMLHttpRequest","response","onerror","status","open","responseType","send","_extendStatics68","ContainerDescription","CONTAINER_EXPAND_BUTTON_SIGN_RATIO","CONTAINER_EXPAND_BUTTON_RECT_RATIO","CONTAINER_HEADER_TOOLBOX_SIZE_RATIO","CONTAINER_HEADER_SIZE","createHeaderPrimitives","createExpandButtonPrimitives","buttonRect","ShapeExpandButton","_extendStatics69","CardBaseDescription","RoundedRectanglePrimitive_1","RoundedRectanglePrimitive","textRectangle","imgBlockSize","isTextAfterImage","getImageSizeByTextBlockSize","createGraphicalTextRepresentation","textRect","horizontalShift","verticalShift","createTextRepresentationPrimitives","imageSize","imageRectangle","lineHeight","Model_1","import","importShapes","importConnectors","updateConnections","updateChildren","importItems","itemHash","oldKey","importItemsData","shapeDataKeys","srcShape","destShape","srcConnector","destConnector","shapeObjs","connectorObjs","childKey","_extendStatics70","lockInputPositionUpdating","_extendStatics71","processParameter","_extendStatics72","ChangeConnectorPropertyCommand","getCurrentConnectorPropertyValue","getPropertyName","getPropertyDefaultValue","setConnectorPropertyValue","_extendStatics73","AutoLayoutCommandBase_1","nodeLayout","copyEdges","excludeMargins","near","far","graphLayout","_extendStatics74","pendingChanges","pendingRemoveChanges","updatesLock","applyPendingChanges","getPendingChanges","getPendingRemoveChanges","removeChanges","applyChangesCore","changesToReapply","postponeChanges","notifyModelChanged","notifyPageColorChanged","notifyPageSizeChanged","_extendStatics75","PasteSelectionCommandBase","ClipboardCommand_1","Importer_1","ImportShapeHistoryItem_1","ImportConnectorHistoryItem_1","parseClipboardData","contextMenuPosition","calculateSelectionOffset","getShapeNewPosition","performPaste","addItemForSortingRecursive","itemsHashtable","getSortedPasteItems","sortedItems","beginUpdateCanvas","ImportShapeHistoryItem","ImportConnectorHistoryItem","endUpdateCanvas","barManager","updateItemsState","positionOffset","_extendStatics76","_extendStatics77","_extendStatics78","_extendStatics79","ChangeLockedCommand","enabled","getLockState","_extendStatics80","oldImage","changeShapeImage","_extendStatics81","MouseHandlerDefaultState","MouseHandlerMoveConnectorPointState_1","MouseHandlerResizeShapeState_1","MouseHandlerMoveConnectorSideState_1","MouseHandlerDragParameterPointState_1","MouseHandlerCreateConnectorState_1","MouseHandlerMoveConnectorOrthogonalSideState_1","MouseHandlerToolboxDraggingState_1","MouseHandlerMoveConnectorTextState_1","MouseHandlerDefaultStateBase_1","MouseHandlerMoveShapeState_1","MouseHandlerMoveConnectorState_1","visualizerManager","resetConnectionPoints","onMouseDownCore","canScrollPage","startScrolling","changeSingleSelection","switchState","MouseHandlerMoveConnectorTextState","ShapeResizeBox","MouseHandlerResizeShapeState","ShapeParameterBox","MouseHandlerDragParameterPointState","ConnectorPoint","MouseHandlerMoveConnectorPointState","ConnectorSide","MouseHandlerMoveConnectorSideState","ConnectorOrthogonalSide","MouseHandlerMoveConnectorOrthogonalSideState","ShapeConnectionPoint","MouseHandlerCreateConnectorState","onDragDiagramItemOnMouseDown","canAddDiagramItemToSelection","MouseHandlerMoveShapeState","MouseHandlerMoveConnectorState","MouseHandlerBeforeToolboxDraggingState","onMouseMoveCore","updateConnectionsOnMouseMove","canRemoveDiagramItemToSelection","removeDiagramItemFromSelection","canDragObjectOnMouseDown","canExpandContainerOnMouseDown","canClearSelectionOnMouseDown","processOnMouseMoveAfterLimit","startSelection","canSelectOnMouseUp","canClearSelectionOnMouseUp","canPerformChangeConnectionOnUpdateUI","MouseHandlerDefaultStateBase","_extendStatics82","MouseHandlerMoveConnectorPointStateBase","MouseHandlerDraggingState_1","resetConnectionTarget","addInteractingItem","allowAttachToObjects","pointPosition","setConnectionTarget","oppositeConnectionPointIndex","setConnectionPoints","oppositePointPosition","getOppositePointPosition","oppositeItem","targetItem","updateOppositeItemConnectionPointIndex","tryUpdateModelSize","checkContainers","checkOppositeItem","canMultipleSelection","targetItem_1","position_1","_extendStatics83","MouseHandlerToggleShapeExpandedState_1","MouseHandlerSelectionState_1","MouseHandlerZoomOnWheelState_1","MouseHandlerScrollingState_1","onStartScrollPageByKeyboard","onFinishScrollPageByKeyboard","canFinishTextEditing","hasDiagramItem","onShapeExpandBtnMouseDown","clearSelection","replaceSelection","mouseDownEvent","startLimit","onMouseUpCore","canStartZoomOnWheel","MouseHandlerZoomOnWheelState","onLongTouch","replaceMultipleSelection","MouseHandlerSelectionState","onDocumentDragScrollStart","MouseHandlerScrollingState","inSelection","addDiagramItemToSelection","MouseHandlerToggleShapeExpandedState","_extendStatics84","lastOffset","getPointByEvent","currentPoint","actualOffset","scrollBy","onFinishScrollPageByMouse","_extendStatics85","MouseHandlerDragDiagramItemStateBase","DraggingConnector","startPoints","startRenderContext","DraggingShape","startPosition","startScrollLeft","startScrollTop","resetExtensionLines","resetContainerTarget","hasTouchDown","shouldClone","canCopySelectedItems","initDrag","lockInitDrag","draggingShapes","draggingShape","MoveShape","copySelection","updateContainers","setExtensionLines","allowInsertToContainer","setContainerTarget","calculateFixedPosition","ds","firstDraggingShape","offset_1","draggingConnectors","dc","moveConnectorCore","moveConnector","modelConnectorsWithoutBeginItemInfo","modelConnectorsWithoutEndItemInfo","getSnappedPointOnDragDiagramItem","fixedX","fixedY","initDraggingShapes","areValidDraggingShapes","initDraggingConnectors","areValidDraggingConnectors","createModelConnectorsWithoutBeginItemInfo","createModelConnectorsWithoutEndItemInfo","draggingConnectorsIndexByKey","registerConnector","containsDraggingConnectorByKey","AddShape","canCalculateFixedPosition","offsetConnector","changeConnector","offsetRenderContext","pointOffset","_extendStatics86","MouseHandlerDefaultReadOnlyState","_extendStatics87","ChangeShapeTextHistoryItem","TargetVisualizerBase","dispatcher","getKey","setTargetRect","targetStrokeWidth","raiseShow","raiseHide","ExtensionLinesVisualizer","ExtensionLineType","lineIndexByType","addSegment","curIndex","update","notifyExtensionLinesShow","notifyExtensionLinesHide","_extendStatics88","CanvasSelectionManager","ACTIVE_SELECTION_CSSCLASS","SELECTION_ELEMENT_CLASSNAMES","ExtensionLinesVisualizer_1","SELECTION_RECTANGLE","CONNECTION_POINT","ACTIVE","CONTAINER_TARGET","CONNECTION_TARGET","EXTENSION_LINE","CONNECTION_MARK","SELECTION_MARK","LOCKED_SELECTION_MARK","ITEMS_SELECTION_RECT","CONNECTOR_MULTI_SELECTION","CONNECTOR_SELECTION","CONNECTOR_POINT_MARK","CONNECTOR_SELECTION_MASK","CONNECTOR_SIDE_MARK","ITEM_SELECTION_RECT","ITEM_MULTI_SELECTION","connectionPointElements","extensionLineElements","selectionMap","parentContainer","itemSelectionContainer","visualizersContainer","selectionMarksContainer","selectionRectElement","resizeInfoElement","connectionTargetElement","containerTargetElement","showSelectionRect","rectEl","getSelectionRectElement","hideSelectionRect","showResizeInfo","rectPrimitive","groupEl","getResizeInfoElement","resizeInfoTextOffset","hideResizeInfo","getConnectionPointClassName","active","showConnectionPoint","showConnectionPointCore","connectionPointLargeSize","connectionPointSmallSize","ellEl","getConnectionPointElement","hideConnectionPoints","showContainerTarget","getContainerTargetElement","hideContainerTarget","showConnectionTarget","getConnectionTargetElement","hideConnectionTarget","showExtensionLine","VerticalCenterAfter","VerticalCenterBefore","HorizontalCenterAbove","HorizontalCenterBelow","VerticalCenterToPageCenter","HorizontalCenterToPageCenter","LeftToPageCenter","RightToPageCenter","TopToPageCenter","BottomToPageCenter","x1_1","y1_1","x1_2","y1_2","x2_1","y2_1","x2_2","y2_2","extensionLineWidth","extensionLineEndingSize","sizeLineXCorr","sizeLineYCorr","RightToRightAbove","RightToRightBelow","BottomToBottomAfter","BottomToBottomBefore","getExtensionLineElement","hideExtensionLines","getOrCreateShapeSelection","usedItems","ShapeSelectionElement","getOrCreateConnectorSelection","ConnectorSelectionElement","textInfo","getOrCreateMultipleSelection","MultipleSelectionElement","getMultipleSelection","updateShapeSelection","multipleSelection","onModelItemChanged","updateConnectorSelection","renderPoints_1","textPos","hideOutdatedSelection","updated","destroy","selectionCanBeDrawn","changedItems","isMultipleSelection","onSelectionChanged","rectangles_1","notifySelectionRectShow","notifySelectionRectHide","notifyResizeInfoShow","notifyResizeInfoHide","notifyConnectionPointsShow","activePointIndex","outsideRectangle","connectionPointShift","notifyConnectionPointsHide","notifyConnectionTargetShow","correctSelectionRect","connectionTargetBorderWidth","notifyConnectionTargetHide","notifyContainerTargetShow","notifyContainerTargetHide","targetLineWidth","selectionLineWidth","outsideOffset","selectionOffset","evenOddWidth","corr","ceil","lwCorr","correction","evenOddSelectionCorrection","selectionMarkSize","lockedSelectionMarkSize","selectionRectLineWidth","multiSelectionRectLineWidth","geomertyMarkSize","connectorPointMarkSize","connectorSideMarkSize","extensionLineOffset","resizeInfoOffset","resizeInfoLineWidth","CanvasElement","rectsContainer","marksContainer","updatedElements","zoom","redraw","redrawCore","drawSelectionMarks","hasEWMarks","hasNSMarks","hasCornerMarks","drawSelectionMark","ResizeBox_NW","ResizeBox_N","ResizeBox_NE","ResizeBox_E","ResizeBox_SE","ResizeBox_S","ResizeBox_SW","ResizeBox_W","drawSelectionRect","cacheKey","ItemSelectionElement","isLockedRender","drawLockedSelectionMark","rectangles","needDrawSelectionMarks","rectKeys","selRect","SelectionRect","shapeParameterPoints","drawLockedSelection","drawUnlockedSelection","drawShapeParameterPoints","pp","drawShapeParameterPoint","pointKey","lineType","drawConnectorSelection","drawConnectorSelectionMarks","commandsWB","populateSelectionPrimitiveCommands","nextOffset","nextDistance","txtAlign","createNotSkippedRenderPoints","getSelectionOffset","strokeWidthPxIsEvenOdd","textIndex","getConnectorSelectionTextSize","textPts","clonedRenderPoints","pointsCount","isEdgePoint","markSize","drawConnectorSideMarks","prevPtIndex","canDrawConnectorSideMark","classNameSuffix","minSize","hasBeginPoint","hasEndPoint","DiagramDraggingEvent","ToolboxDraggingObject","DragState","Toolbox","TOUCH_DRAGTIMEOUT_MS","allowDragging","shapeTypes","getAllowedShapeTypes","dragPrepareTimeout","onDragOperation","onClickOperation","dragState","draggable","tabIndex","createElements","createDraggingObject","onFinishDragging","onCaptured","capture","shouldChangeDragState","Prepare","startShapeType","dragStartPoint","dragStartShapeType","shouldStartDragging","Start","startTouchDragging","startDragTimeout","startDragging","draggingObject","raiseDragStart","createDraggingElement","captured","updatePositionsOnDragging","Dragging","xPos","yPos","raiseDragEnd","newState","forced","RightAngleConnectorRoutingMathOperations","AStarMetrics_1","createUnionSegments","shouldCreateSegment","startRenderPoint","endRenderPoint","currentSegment","unionPoints","getTurnDirection","RightAngleTurnDirection","Backwards","isSegmentNormal","isConnectionRectanleLineIntersected","createBeginConnectionSegment","beginConnectionSide","createEndConnectionSegment","endConnectionSide","IntersectedShapeZone","AStarMetrics","IntersectedShapesMetrics","TurnDirectionMetrics","IntersectedShapeMetrics","shapeMargin","penalty","relativePenalty","createRelativeMarginPenalty","isTopPosition","isLeftPosition","isBottomPosition","isRightPosition","extendedTopLeft","extendedRectangle","rectangleTopLeft","topLeftDistance","extendedTopRight","rectangleTopRight","topRightDistance","extendedBottomLeft","rectangleBottomLeft","bottomLeftDistance","extendedBottomRight","rectangleBottomRight","bottomRightDistance","turnDirection","turnBack","turnLeft","turnRight","shapeMetrics","intersectedItems","turnDirectionMetrics","shapesMetrics","TOUCH_ACTION_NONE","_extendStatics89","beginDeleteItems","endDeleteItems","enumVal","newValue","flags","flags_1","flag","collector_1","oneConstainsOtherArraysOfInterval","mergedIntervalsA","intervalsB","shouldBeContais","currenInterval","mergedInterval","containsInterval","intervalA","intervalB","getIntersectionTemplate","getIntersectionNonNullLength","getIntersectionNonNullLengthTemplate","getIntersectionsTwoArraysOfInterval","intervalsA","getIntersectionsTwoArraysOfIntervalTemplate","lengthIntervalsA","lengthIntervalsB","intervalsAIndex","intervalsBIndex","currAInterval","currBInterval","currResultInterval","getAffectedObjects","objects","intervals","getFirstIndex","conflictResolver","objectInterval","touchingIntervalLength","touchPoint","getAffectedObjectsTemplate","collector","SparseIntervalsCollector","intervals_1","objInterval","getIntervals","handleAffectedObjects","intervals_2","getMergedIntervals","needSort","getMergedIntervalsTemplate","sortedIntervals","minBound","maxBound","reflectIntervals","bounds","reflectIntervalsTemplate","lastIntervalEnd","reflectionOfPointOnInterval","valInterval","targetInterval","MinMaxNumber","string","stringIgnoreCase","Equals","simpleType","normalizeLength","ConstInterval","isNormalized","containsIntervalWithoutEnd","containsWithIntervalEnd","containsWithoutIntervalEndAndStart","SparseIntervals","iterator_1","objects_iterator_1","_count","_numIntervals","getNativeIterator","getObjectsIterator","SparseObjectsIterator","_extendStatics90","TextFilterPrimitive","FilterPrimitive_1","feFlood","feComposite","floodColor","nodeName","prepareFEFloodNode","colorHash","encodeHtml","decodeHtml","prepareTextForRequest","prepareTextForCallBackRequest","html","textArea","onEventAttachingToDocument","isTouchEventName","documentTouchHandlers","documentEventAttachingAllowed","changedTouches","pageX","pageY","touchMouseDownEventName","touchMouseUpEventName","msTouchDraggableClassName","polyfill","firstSource","nextSource","keysArray","nextIndex","nextKey","writable","loadJavascriptFile","srcUri","headElem","bodyElem","scriptElem","htmlScriptElement","startDownloadFileLocal","content","ArrayBuffer","msSaveOrOpenBlob","a_1","url_1","URL","createObjectURL","href","download","click","revokeObjectURL","fileBits","Blob","lastModified","Date","File","isFile","file","_b","_c","OpenXmlMimeType","RtfMimeType","PlainTextMimeType","DocmMimeType","ImagePngMimeType","ImageGifMimeType","ImageJpegMimeType","ImagePjpegMimeType","ImageSvgMimeType","ImageTiffMimeType","ImageIcoMimeType","ImageWbmpMimeType","ImageWebpMimeType","stringTypeToExtension","mimeTypeAsStr","stringTypeToTypeMap","typeToExtensionMap","typeToExtension","ext","extensionToType","extension","extensionToTypeMap","typeToStringType","typeToStringTypeMap","OpenXml","Rtf","PlainText","Docm","Png","Gif","Jpeg","Pjpeg","Svg","Tiff","Ico","Wbmp","Webp","_extendStatics91","ConnectorPointsCalculatorBase_1","_extendStatics92","ConnectorPointsOrthogonalUndefinedSideCalculator_1","ConnectorPointsOrthogonalSouthSideCalculator_1","ConnectorPointsOrthogonalNorthSideCalculator_1","ConnectorPointsOrthogonalEastSideCalculator_1","ConnectorPointsOrthogonalWestSideCalculator_1","sideCalculators","ConnectorPointsOrthogonalUndefinedSideCalculator","ConnectorPointsOrthogonalSouthSideCalculator","ConnectorPointsOrthogonalNorthSideCalculator","ConnectorPointsOrthogonalEastSideCalculator","ConnectorPointsOrthogonalWestSideCalculator","beginSide","getPointSide","beginNextSide","endSide","endPrevSide","beginSideCalculator","endSideCalculator","isDirectConnectionAllowed","getDirectConnectionPoints","bOffsetPoints","addMiddlePoints","middlePoint","getMiddlePoint","getMiddlePoints","directionPoint1","nextToBegin","directionPoint2","nextToEnd","rect1","createPointsRect","rect2","itemRect1","itemRect2","isReturnPoint","isIntermediatePoints","isPriorMiddlePoint","_extendStatics93","ConnectorPointsOrthogonalSideCalculatorBase_1","calculator","diffX","diffY","_extendStatics94","getAsideOffsetPoints","getScaleableOffsetY","getScaleableAsideOffsetPoints","asideOffset","isEnd","getScaleableOffsetX","_extendStatics95","_extendStatics96","_extendStatics97","_extendStatics98","getStyle","getCssClass","arrowPoints","_extendStatics99","renderContext","addDeleteConnectorPoint","_extendStatics100","_extendStatics101","oldPoint","newBeginPoint","newLastPoint","oldBeginPoint","oldLastPoint","_extendStatics102","_extendStatics103","_extendStatics104","offsets_1","backOffset","newWidth","pageWidth","newHeight","pageHeight","changeModelSize","_extendStatics105","applyOffset","LayoutUtils_1","sourceGraph","_graph","getNodeInfoGraph","_level","getLevel","LayoutUtils","shapeToLayout","getContainerLevel","shapeRect","connRect","isPermissionsRequired","executed","executeWithPermissions","updateControlState","lockUIUpdating","defaultValue","visible","denyUpdateValue","_extendStatics106","canUndo","_extendStatics107","canRedo","_extendStatics108","importer","importModel","_extendStatics109","_extendStatics110","_extendStatics111","slopeHeightRatio","yOffset","_extendStatics112","slopeAngle","_extendStatics113","curveWidthRatio","_extendStatics114","PredefinedProcessEdgeParameterName","ShapeParameterPoint_1","minEdge","_extendStatics115","ArrowVerticalShapeDescription_1","p1dx","p0dy","p1x1","p0y1","p1x2","p0y2","_extendStatics116","ArrowHorizontalShapeDescription_1","p0dx","p1dy","p0x1","p1y1","p1y2","triangleWidth","_extendStatics117","triangleHeight","_extendStatics118","CrossVerticalWidthParameterName","CrossHorizontalWidthParameterName","p0x2","_extendStatics119","_textSize","_extendStatics120","sideY","_extendStatics121","StarConvexParameterName","getActualBottom","pDistance","getInnerPointDistance","getInnerPointPos","innerPointX","innerPointY","getInnerPointDistanceByAxis","edge1","edge2","edgeX1","edgeX2","edgeY1","edgeY2","disX","disY","_extendStatics122","_extendStatics123","_extendStatics124","_extendStatics125","documentsOffsetRatioForToolbox","documentsOffsetRatio","documentOffsetX","documentOffsetY","clipRect","_extendStatics126","_extendStatics127","arcWidthRatio","_extendStatics128","_extendStatics129","InternalStorageVerticalEdgeParameterName","InternalStorageHorizontalEdgeParameterName","_extendStatics130","_extendStatics131","_extendStatics132","maxRectInEllipse","rectByEllipse","_extendStatics133","_extendStatics134","_extendStatics135","_extendStatics136","_extendStatics137","ex","ey","_extendStatics138","createContent","destroyContent","_extendStatics139","ContainerDescription_1","headerSize","getHeaderSize","_extendStatics140","_extendStatics141","CardBaseDescription_1","w","textBlockSize","_extendStatics142","_extendStatics143","_extendStatics144","CardWithHorizontalImageDescription","_width","_height","_extendStatics145","_extendStatics146","_extendStatics147","_extendStatics148","_extendStatics149","_extendStatics150","_extendStatics151","ChangeStyleTextPropertyCommand_1","_extendStatics152","ChangeStylePropertyCommand_1","_extendStatics153","_extendStatics154","ChangeTextAlignCommand","_extendStatics155","ChangeConnectorPropertyCommand_1","_extendStatics156","_extendStatics157","_extendStatics158","scrollIntoView","childToParent","hasChildren","findRoot","aggregator","inc","_extendStatics159","_extendStatics160","gridSizeItems","_extendStatics161","ChangePagePropertyCommand_1","ChangePageLandscapeHistoryItem_1","ChangePageLandscapeHistoryItem","_extendStatics162","changePageLandscape","_extendStatics163","ChangePageSizeHistoryItem_1","getModelUnitSize","ChangePageSizeHistoryItem","pageSizeItems","_extendStatics164","changePageSize","_extendStatics165","_extendStatics166","getSvgImage","exportAsInline","exportForBinaryImage","svgEl","modelAbsSize","backgroundColor","exportCssRules","getExportCssRules","bk","cloneNode","inlineStyle","getSvgImageUrl","getSvgBase64String","getSvgString","XMLSerializer","serializeToString","base64Start","getBase64EncodeUnicode","encodeURIComponent","p1","styleSheets","rules","getRules","rule","selectorText","isCSSStyleRule","checkSelector","exportStyleRules","styleSheet","isCSSStyleSheet","cssRules","stylesheet","destNode","srcNode","exportStyleAttributes","getPropertyValue","exportBinaryImage","canvasEl","ctx","getContext","fillStyle","fillRect","canvg","exportBinaryImageCanvgAsync","exportBinaryImageCanvgOld","imgEl_1","drawImage","toDataURL","svgStr","renderCallback","canvas","Canvg","_extendStatics167","_extendStatics168","_extendStatics169","_extendStatics170","_extendStatics171","PasteSelectoinCommandBase_1","_extendStatics172","insertShape","removeShape","_extendStatics173","insertConnector","removeConnector","_extendStatics174","BPMNImporter_1","BPMNImporter","updateModel","externalKeyToModelKey","insert","getShapeDescription","_extendStatics175","BPMNNode","onDefinitionsElement","validate","nodesMap","dataSourceKey","onProcessElement","onStartEventElement","onSequenceFlowElement","onScriptTaskElement","onUserTaskElement","onServiceTaskElement","onSendTaskElement","onExclusiveGateway","onEndEventGateway","createNode","createEdge","hasAttribute","BPMNEdge","sourceKey","feedbackSet","getFeedbackSet","reverseEdges","nonTrivialStronglyConnectedComponents","getNonTrivialStronglyConnectedComponents","maxCyclicEdges","getMaxCyclicEdges","edgeCycleCount","cycles","cycle","edgeSet","getStronglyConnectedComponents","nodesStack","lowLink","onStack","isVisited","getStronglyConnectedComponent","topStackNode","itemsMap","aEdges","_extendStatics176","ChangeZindexHistoryItem_1","needSendToBack","newZIndex","_extendStatics177","needBringToFront","_extendStatics178","MoveCommand","startPtIndex","endPtIndex","_extendStatics179","getZoom","autoZoom","updateLayout","zoomLevelItems","ChangeZoomLevelExactlyCommand","exactValue","FitZoomCommandBase","getZoomLevel","getActualAutoZoomLevel","FitContent","_extendStatics180","nodeDataSource","performImportData","dataSource","createDocumentDataSource","edgeDataSource","dataParameters","nodeDataImporter","edgeDataImporter","layoutParameters","createModelItems","_extendStatics181","deleteDocumentDataSource","_extendStatics182","_extendStatics183","_extendStatics184","CloneCommand","canAddItems","selectionRect","getOffsetX","getOffsetY","_extendStatics185","ChangeUnitsHistoryItem_1","ChangeUnitsHistoryItem","_extendStatics186","oldUnits","_extendStatics187","ChangePageColorHistoryItem_1","ChangePageColorHistoryItem","_extendStatics188","changePageColor","_extendStatics189","_extendStatics190","fullscreen","notifyToggleFullscreen","_extendStatics191","simpleView","_extendStatics192","_extendStatics193","_extendStatics194","selectionPos","newSelectionPos","getModelPointByEventPoint","_extendStatics195","XMLImporter_1","XmlImporter","_extendStatics196","pageElements","pageSizeAttr","getSize","positionAttr","getPoint","shapeAttr","getShapeType","getItemKey","sizeAttr","contentAttr","headerAttr","importStyle","childShapeObjs","childShapeObj","childShape","beginPointAttr","pointAttr","endPointAttr","endItemPointIndexAttr","endItemPointIndex","beginItemPointIndexAttr","beginItemPointIndex","endItemAttr","beginItemAttr","backgroundAttr","getColor","strokeAttr","foregroundAttr","fontFamilyAttr","fontSizeAttr","textAlignmentAttr","getNumbers","parts","part","attrValue","numbers","_extendStatics197","_extendStatics198","_extendStatics199","_extendStatics200","_extendStatics201","_extendStatics202","_extendStatics203","_extendStatics204","_extendStatics205","connectorRoutingMode","ModelManipulator_1","EventManager_1","Selection_1","History_1","BarManager_1","RenderManager_1","DocumentDataSource_1","ViewController_1","ToolboxManager_1","ApiController_1","PermissionsProvider_1","ConnectorRoutingModel_1","ReloadContentParameters_1","ToolboxTouchDragEventsHandler_1","ToolboxPointerDragEventsHandler_1","ToolboxMouseDragEventsHandler_1","RenderManagerTouchDragEventsHandler_1","RenderManagerPointerDragEventsHandler_1","RenderManagerMouseDragEventsHandler_1","updateLockCount","shouldUpdateItemsByModel","reloadContentNeeded","reloadContentParameters","ReloadContentParameters","reloadContentByExternalChangesParameters","Selection","onNativeAction","ApiController","PermissionsProvider","onRequestOperation","routingModel","ConnectorRoutingModel","ModelManipulator","History","BarManager","ViewController","commandManager","eventManager","EventManager","hasTouchDragEvents","initialize","toolboxManager","ToolboxManager","operationSettings","cleanMarkup","onTextInputOperation","onMouseOperation","onVisualizersUpdate","onModelSizeChanged","scrollView","focusElementsParent","initMeasurer","RenderManager","contextMenuEnabled","gridVisible","createRenderManagerDragEventsHandler","zoomLevelWasChanged","raiseCanvasViewActualZoomChanged","raiseSelectionChanged","createToolbox","renderAsText","toolbox","createToolboxCore","registerToolbox","createContextToolbox","onClick","contextToolbox","cleanContextToolbox","contextToolboxOnClick","getToolboxAllowedShapeTypes","createToolboxDragEventsHandler","allowedShapeTypes","beginUpdateUI","canAddShapeFromToolbox","endUpdateUI","refreshToolbox","toolboxes","clearCache","AddShapeFromToolbox","refresh","applyToolboxFilter","shapeSubstring","applyFilter","notifyToolboxClick","onDimensionChanged","resetScroll","captureFocus","isFocused","registerBar","bar","updateBarItemsState","queryCommands","getNativeItemByKey","createNativeItem","getNativeItemByDataKey","setInitialStyleProperties","setInitialTextStyleProperties","setInitialConnectorProperties","addCustomShapes","removeCustomShapes","removeAllCustomShapes","onImportData","commitPageChanges","notifyHistoryChanged","documentDataSource","DocumentDataSource","setDataSource","applyOperationSettings","notifyEdgeInserted","errorCallback","onEdgeInserted","notifyEdgeUpdated","onEdgeUpdated","notifyEdgeRemoved","onEdgeRemoved","notifyNodeInserted","onNodeInserted","notifyNodeUpdated","onNodeUpdated","notifyNodeRemoved","onNodeRemoved","reloadInsertedItem","reloadInsertedItemRequired","reloadContent","getData","isExternalChanges","isChangesLocked","addNewHistoryItem","reloadContentCore","refetchData","updateModelItems","dataKeys","commitItemUpdateChanges","notifyDataChanges","raiseOnChanged","notifyToolboxDragStart","onToolboxDragStart","notifyToolboxDragEnd","onToolboxDragEnd","onTextInputStart","onTextInputEnd","onToggleFullscreen","notifyShowContextMenu","isTouchMode","onShowContextMenu","getEventPointByModelPoint","notifyHideContextMenu","onHideContextMenu","notifyShowContextToolbox","getPositionToInsertShapeTo","onShowContextToolbox","notifyHideContextToolbox","onHideContextToolbox","updateShapeDescription","raiseActualZoomChanged","notifyRequestOperation","operation","requestOperationByDataSource","IsNodeParentIdMode","IsNodeItemsMode","ChangeConnection","attachedConnector","isShapeParent","parentShape","beginChangesNotification","changesLockChanged","endChangesNotification","preventNotifyReloadContent","notifyReloadContent","lockedReadOnly","updateItemsByModel","RenderManagerPointerDragEventsHandler","RenderManagerTouchDragEventsHandler","RenderManagerMouseDragEventsHandler","ToolboxPointerDragEventsHandler","ToolboxTouchDragEventsHandler","ToolboxMouseDragEventsHandler","initializeCore","updateShapeImage","updateModelSize","raisePageSizeChanged","raiseModelSizeChanged","raisePageColorChanged","commitItemsChangesCore","changeType","raiseModelChanged","changeStyleCore","changeCustomData","resizeInteractingItem","getInteractingItem","ResizeShape","size_2","canResizeShapes","moveInteractingItem","canMoveShapes","position_2","changeShapeExpanded","createStrategy","callBack","oldConnectorPoints","getConnectorInteractingPoints","addDeleteConnectorPointCore","moveConnectorPointCore","interactingItem","changeConnectionPoints","newConnectorPoints","canChangeConnectorPoints","existingItem","existingConnectionPointIndex","canChangeConnection","changeConnectorTextPosition","raiseSnapPointChange","oldRectangle","newRectangle","createModelRectangleOffset","notifyModelSizeChanged","notifyModelRectangleChanged","notifySnapPointPositionChanged","MouseHandler_1","TextInputHandler_1","ContextMenuHandler_1","VisualizersManager_1","ContextToolboxHandler_1","visualizersManager","VisualizerManager","contextMenuHandler","ContextMenuHandler","onVisibilityChanged","contextToolboxHandler","ContextToolboxHandler","mouseHandler","MouseHandler","textInputHandler","TextInputHandler","lockUpdateCanvas","processDragging","onDblClick","notifyDblClick","notifyClick","onContextMenu","onBlur","onFocus","scCode","updateConnectionPoints","isShortcutForFocusInput","onTextInputBlur","onTextInputFocus","onTextInputKeyDown","onPaste","isTextInputActive","onWheel","draggingEvt","draggingEvent","onDocumentDragScrollEnd","onDocumentClick","raiseTextInputStart","raiseTextInputEnd","raiseTextInputPermissionsCheck","MouseHandlerDefaultState_1","MouseHandlerDefaultReadOnlyTouchState_1","MouseHandlerDefaultReadOnlyState_1","MouseHandlerDefaultTouchState_1","finishStateLock","allowMultipleSelection","allowCopyDiagramItems","allowSnapToCellOnDragDiagramItem","allowSnapToCellOnDragPoint","allowSnapToCellOnResizeShape","allowFixedDrag","allowZoomOnWheel","allowScrollPage","shouldScrollPage","copyDiagramItemsByCtrlAndShift","startScrollingPageByCtrl","initializeDefaultState","defaultState","MouseHandlerDefaultReadOnlyTouchState","MouseHandlerDefaultTouchState","showContextToolbox","applyCallback","cancelCallback","hideContextToolbox","applyed","hasCtrlModifier","hasCtrlOrShiftModifier","hasCtrlAndShiftModifier","hasAltModifier","hasShiftModifier","canFinishZoomOnWheel","canStartScrollingPageByKeyboard","canEndScrollingPageByKeyboard","finishScrollingPage","canEndScrollingPage","basePoint","snapToCell","getSnapToCellOnDragDiagramItem","getFixedXPosition","getFixedYPosition","additionalSnappedPoint","getSnapToCellOnDragPoint","getSquareEuclideanDistance","getSnappedOffsetOnDragPoint","lockAspectRatioOnShapeResize","getSnappedPositionOnResizeShape","getSnapToCellOnResizeShape","pressedDiagramItemKey","pressedDiagramItemInSelection","canPerformChangeConnection","operationParams","oldItem","restartState","_extendStatics206","MouseHandlerMoveConnectorPointStateBase_1","_extendStatics207","rotation","resetResizeInfo","resizeEventSource","lockH","lockV","sideH","sideV","startRectangle","startShapeSizes","startShapePositions","startConnectorPoints","ratioX","ratioY","shapeWidth","getNormalizedSize","shapeHeight","shapeLeft","shapeTop","connectorPtPos","setResizeInfo","startSize","lockAspectRatio","absDeltaX","absDeltaY","getSnappedPosition","snappedY","snappedX","_extendStatics208","pointCreated","_extendStatics209","parameterPointKey","startParameters","_extendStatics210","connectedItem","createNewShapeAtConnectorEnd","beginShape","getNewShapeSide","clonedShape","getNewShapePosition","checkNewConnectorPermissions","getNewShapeSideByConnectorPoints","getSourceItem","_extendStatics211","renderPointIndexes","renderPointIndex1","renderPointIndex2","renderPoint1","renderPoint2","isVerticalOrientation","pointIndex1","correctEdgePoint","findPointIndex","pointIndex2","createdPoint1","createdPoint2","excludePoints","createUnnecessaryPoints","unnecessaryRenderPoints","ep","lastPointIndex_1","_extendStatics212","MouseHandlerToolboxDraggingState","isModelEmpty","tryRemoveTimer","dragging","Background","switchToDraggingState","nonPageAreaTimer","savedEvt","skipLockUpdatePageSize","updatePageSizeTimer","processAndRemoveUpdatePageSizeTimer","tryRemoveUpdatePageSizeTimer","deleteHistoryItem","insertToolboxItem","shape_1","undoTransactionTo","startShapePosition","connectorsWithoutBeginItemInfo","connectorsWithoutEndItemInfo","_extendStatics213","ChangeConnectorTextPositionHistoryItem_1","savedText","ChangeConnectorTextPositionHistoryItem","_extendStatics214","_extendStatics215","ToggleShapeExpandedHistoryItem_1","ToggleShapeExpandedHistoryItem","_extendStatics216","_extendStatics217","resetSelectionRectangle","setSelectionRectangle","selectRect","_extendStatics218","trySwitchToDefault","getNextStepZoom","scrollTo","_extendStatics219","_extendStatics220","_extendStatics221","_extendStatics222","MouseHandlerZoomOnPinchState_1","startZooming","MouseHandlerZoomOnPinchState","_extendStatics223","startDistance","getTouchDistance","startZoomLevel","prevDistance","getMiddleLayoutPoint","getMiddleAbsPoint","pt0","pt1","getMiddlePointByEvent","touch","ChangeShapeTextHistoryItem_1","startTextInput","textInputItem","textEditRectangle","canChangeShapeText","textInputPosition","canChangeConnectorText","endTextInput","applyTextInput","newText","getTextInputElementValue","canApplyShapeTextChange","canApplyConnectorTextChange","cancelTextInput","processDblClick","_extendStatics224","batch_updatable_1","contextMenuVisible","textInputStarted","canHideContextMenu","contextToolboxVisible","hideContextMenu","showContextMenuAtSelection","showContextMenuAtEmptySelection","showContextMenu","_extendStatics225","ConnectionTargetVisualizer_1","ContainerTargetVisualizer_1","ConnectionPointsVisualizer_1","CanvasSelectionManager_1","ResizeInfoVisualizer_1","SelectionRectVisualizer_1","connectionPointsVisualizer","ConnectionPointsVisualizer","connectionTargetVisualizer","ConnectionTargetVisualizer","containerTargetVisualizer","ContainerTargetVisualizer","extensionLinesVisualizer","resizeInfoVisualizer","ResizeInfoVisualizer","selectionRectangleVisualizer","SelectionRectVisualizer","hideConnections","showConnections","preventShowOutside","isSelected","setPoints","ConnectionPointInfo","setPointIndex","addPageExtensionLines","addShapeExtensionLines","horPages","verPages","x1nc","y1nc","x2nc","y2nc","sRect","lwCor","showDistance","distanceText","TopToTopAfter","TopToTopBefore","TopToBottomAfter","TopToBottomBefore","BottomToTopAfter","BottomToTopBefore","LeftToLeftBelow","LeftToLeftAbove","LeftToRightBelow","LeftToRightAbove","RightToLeftBelow","RightToLeftAbove","setRectangle","needShowConnections","_extendStatics226","ConnectionTargetInfo","TargetVisualizerBase_1","_extendStatics227","ContainerTargetInfo","contextToolboxCancelCallback","InputPosition_1","InputPosition","getSelectedItemsInsideContainers","getSelectedItemsCore","includeLocked","conn","includeInsideContainers","InputPositionProperties_1","initialProperties","InputPositionProperties","defaultProperties","currentProperties","getConnectorProperties","getConnectorPropertyValue","getTextStyle","getTextStylePropertyValue","baseProperties","connectorProperties","textStyle","updateConnectorProperties","updateStyle","updatePropertyValue","stylePropertyName","destObj","getSrcObj","valueAssigned","incrementalId","transactionLevel","unmodifiedIndex","currTransactionId","isModified","raiseChanged","startDataSyncItem","transaction","isDataSyncTransaction","transactionLength","addDataSyncItem","addInternal","deleteOldItems","toHistoryItem","compositionHistoryItem","exceedItemsCount","MAX_HISTORY_ITEM_COUNT","getNextId","resetModified","getCurrentItemId","currentItem","ti","_extendStatics228","bars","commandKeys","knownCommandKeys_1","getCommandKeys","cmd","length_1","updateBarItem","commandKey","commandState","setItemVisible","setItemEnabled","itemValue","getItemValue","setItemSubItems","setItemValue","getDefaultItemValue","setEnabled","notifyBarCommandExecuted","commandID","notifyBarUpdateRequested","DBL_CLICK_TIMEOUT","LONG_TOUCH_TIMEOUT","ScrollView_1","InputManager_1","CanvasPageManager_1","CanvasViewManager_1","AutoScrollController_1","events","touchPositionLimit","scroll","NativeScrollView","CanvasViewManager","InputManager","canvasElement","CanvasPageManager","pageElement","autoScroll","AutoScrollController","attachEvents","lastDownMouseEvent","detachEvents","saveScrollPosition","adjust","onMouseDblClickHandler","onMouseClickHandler","onMouseWheelHandler","onContextMenuHandler","onWindowResizeHandler","onWindowResize","onOrientationChangeHandler","onOrientationChange","mouseWheelHandler","diagramEvent","createDiagramMouseEvent","preventImageEventAndBubble","onTouchDown","startTouchPoint","resetLongTouch","longTouchTimer","raiseLongTouch","resetDblClick","lockFocus","unlockCaptureFocus","onTouchMove","createDiagramMouseEventByPosition","onTouchUp","raiseMouseClick","dblTouchTimer","startTouchElement","raiseMouseDblClick","lockCaptureFocus","tagNameLowerCase","createDiagramContextMenuEvent","createDiagramWheelEvent","resetTo","oldFitInfo","checkFitToCanvas","newFitInfo","onDragScrollStart","onDragScrollEnd","getModelPoint","getOffsetPointByEventPoint","getAbsolutePoint","scrollContainer","getScrollContainer","createDiagramMouseEventCore","getOffsetPointByEvent","createDiagramMouseEventTouches","currentElement","isDiagramControl","isDocumentContainer","isTextInputElement","sourceItem","onScroll","scrollBarWidth","onScrollHandler","notifyScrollChanged","getScroll","setScroll","offsetScroll","boundingRect","getScrollBarWidth","layoutPointResolver","textMeasurer","lockedCaptureFocus","focused","focusLocked","createInputElements","detachInputElementEvents","detachTextInputElementEvents","inputElement","clipboardInputElement","select","execCommand","readText","clipText","catch","createFocusInputElement","createTextInputElement","createClipboardInputElement","attachInputElementEvents","setInputElementFocusHandlerMode","textInputElementContainer","setInputElementTextInputMode","textAngle","textInputElement","setTextInputElementBounds","setTextInputElementStyle","updateTextInputPadding","savedTextInputPosition","savedTextInputSize","savedTextInputAngle","transforms","savedTextInputStyle","onInputBlurHandler","onInputBlur","onInputFocusHandler","onInputFocus","onInputKeyDownHandler","onInputKeyDown","onInputKeyPressHandler","onInputKeyPress","onInputKeyUpHandler","onInputKeyUp","onPasteHandler","attachTextInputElementEvents","onTextInputBlurHandler","onTextInputFocusHandler","onTextInputKeyDownHandler","onTextInputMouseWheelHandler","onTextInputMouseWheel","onTextInputMouseUpHandler","onTextInputMouseUp","onTextInputKeyUpHandler","onTextInputKeyUp","onTextInputChangeHandler","onTextInputChange","blurControl","focusControl","measureResults","getDiagramFocusEvent","getDiagramKeyboardEvent","getDiagramClipboardEvent","evtClipboardData","_extendStatics229","PatternPrimitive_1","snapPoint","gridPatternId","pagesGridPatternId","pagesGridClipId","canvasViewOffset","initContainers","backgroundContainer","redrawPage","redrawGrid","updateGridElements","updatePagesGridElements","getGridRectElement","gridRectElement","getGridPatternElement","gridPatternElement","gridRectPrimitive","absGridSize_1","sizes","outerPathCommands","innerPathCommands","commonSize","gridPatternPrimitive","PatternPrimitive","createGridPathPrimitive","createGridPatternPrimitivePosition","getPagesGridRectElement","getPagesGridClipPathElement","pagesGridClipPathElement","getPagesGridPatternElement","pagesGridPatternElement","pageAbsSize","pageGridPathCommands","GRID_PAGES_LINEWIDTH","pagesGridPatternPrimitive","pagesGridClipPathPrimitive","_extendStatics230","_extendStatics231","CROP_OFFSET","CANVAS_SCROLL_PADDING","CANVAS_MIN_PADDING","ShadowFilterPrimitive_1","fixedZoomLevel","paddings","crop","lockAutoZoom","autoScrollLocker","pageClipPathId","pageShadowId","rectangleToCrop","updateElements","ShadowFilterPrimitive","containerSize","resetPaddings","saveVerticalScroll","adjustCore","tryNormalizePaddings","adjustAfterDragEnd","autoZoomLocked","scrollSize","getActualModelSizeWithoutZoom","scrollbars","checkScrollBars","absRectangle","correctCrop","setActualZoom","scrollbarWidth","actualModelSizeWithoutZoom","getActualAutoZoom","getActualZoom","fixedZoom","actualModelSize","translate","currentTail","tail","getTailSpace","applyChanges","changeScrollByOffset","changeTranslateByOffset","cropHiddenHead","curTranslate","curScroll","curTail","curOffset","getScrollDeltaByOffset","getTranslateDeltaByOffset","commonWidth","containerWidth","hasScrollbar","maxScroll","headPadding","tailPadding","originModelSize","setScrollTo","getVisibileAreaAbsShift","absPoint","newScroll","updatePageElement","updateCanvasElement","updatePageElementCore","modelAbsWidth","modelAbsHeight","createPageShadow","groupClipPathId","translateX","translateY","createPageClipPathPrimitive","newModelSize","resizeView","resetView","cropWithoutZoom","toReset","paddingsH","paddingsV","oldZoom","oldCrop","newCrop","tailSpace","maxTailSpaceWidth","maxTailSpaceHeight","newPaddings","setSvgSize","lockAutoScroll","unlockAutoScroll","isAutoScrollLocked","modelOffset","getActualOffset","newModelAbsSize","docOffset","hasHorizontalScroll","hasVerticalScroll","lastWidth","lastHeight","excludeScroll","cropLeft","cropTop","absolutePoint","checkScrollArea","_extendStatics232","feGaussianBlur","feOffset","feMerge","feMergeNode1","feMergeNode2","leftButtonPressed","scrollDragging","scrollTimer","raiseMouseMoveFunc","clearScrollTimer","changeScrollPosition","raiseMouseMove","changed","x_1","y_1","width_1","height_1","getScrollingOffset","edgeOffset","_extendStatics233","UpdateNodeKeyRelatedObjectsStackAction","UpdateNodeKeyRelatedObjectsStackItem","DataSource_1","nodeObj","kind","changesListener","nodeInsertingLockCount","updateNodeKeyRelatedObjectsCount","updateNodeKeyRelatedObjectsStack","updateNodeKeyRelatedObjectsStackActions","deleteNodes","deleteEdges","updateNode","updateEdge","isItemObjectModified","itemObj","setLocked","setZIndex","setCustomData","setStyle","defaultStyle_1","setStyleText","defaultTextStyle_1","setDataObjectKeyRelatedProperty","method","dataObj","allowAutoGeneratedProperty","autoGeneratedDataKeys","updateItemObjectProperties","dataSourceItems","getParentArray","parentArray","findNode","isNodeObjectModified","updateNodeObjectProperties","updateNodeObjectConnectedProperties","setKey","addNodeInternal","addInternalKeyOnInsert","updateNodeObjectKey","beginNodeInserting","endNodeInserting","areImageUrlsEqual","url1","url2","compareStrings","setImage","actualUrl","setLeft","setTop","setWidth","setHeight","setType","useNodeParentId","setParentKey","parentKey","getParentItemKey","parentItem","updateNodeObjectParentKey","useNodeContainerId","setContainerKey","getContainerShapeKey","containerItem","updateNodeObjectContainerKey","useNodeItems","setItems","updateNodeObjectItems","useNodeChildren","setChildren","updateNodeObjectChildren","parentNodeObj","getParentKey","newParentKey","isRootParentKey","isInUpdateNodeKeyRelatedObjects","addToUpdateNodeKeyRelatedObjectsStackAction","updateNodeObjectContainerOrParentKeyInternal","updateNodeObjectParentKeyInternal","containerNodeObj","getContainerKey","newContainerKey","parentDataObj","checkNodeCyrcleItems","oldItemsArray","itemsArray","containerDataObj","oldChildrenArray","childrenArray","nodeDataObj","parentDataObjCandidate","childDataObj","dataKeyChanged","getNodeArray","updateNodeKeyRelatedObjects","isInNodeInserting","addToUpdateNodeKeyRelatedObjectsStack","getChildItems","childNodeObj","useEdgesArray","edgeObj","findEdge","updateEdgeObjectFromProperty","updateEdgeObjectToProperty","dataModified","getParentItem","isEdgeObjectModified","updateEdgeObjectProperties","canUpdateEdgeDataSource","addEdgeInternal","updateEdgeObjectKey","setFromPointIndex","setToPointIndex","compareTexts","setLineOption","setStartLineEnding","setEndLineEnding","fromObj","setFrom","updateEdgeObjectFromOrToPropertyInternal","toObj","setTo","texts_1","textVal","raiseNodeInsertingStack","beginUpdateNodeKeyRelatedObjects","endUpdateNodeKeyRelatedObjects","raiseUpdateNodeKeyRelatedObjectsStack","preventNotifyChanges","DataSource","ChangeCustomDataHistoryItem_1","DataImporter_1","DataSourceItems_1","canUseAutoSize","loadParameters","createNodeDataImporter","createEdgeDataImporter","fetchData","isAutoGeneratedKey","DataSourceNodeDataImporter","assignNodeDataImporterProperties","DataSourceEdgeDataImporter","assignEdgeDataImporterProperties","assignItemDataImporterProperties","getCustomData","getLocked","getStyleText","getZIndex","getType","getImage","getLeft","getTop","getWidth","getHeight","getFrom","getFromPointIndex","getTo","getToPointIndex","getLineOption","getStartLineEnding","getEndLineEnding","edgeDataObj","addNodeEdgesByParentId","isContainer","oldNodes","oldEdges","getItemChanges","oldItems","newItems","areEqual","remainedItems","containsItem","remainedNewItems","removedItems","addedItems","remained","remainedNew","removed","added","parentNodeDataObj","containerNodeDataObj","childNodeDataObjs","assignNodeProperties","childNodeDataObj","itemDataObjs","itemDataObj","itemNode","getNodeKey","externalKey","DataSourceNodeItem","assignEdgeProperties","DataSourceEdgeItem","assignItemProperties","rowIndex","colIndex","externalToInnerMap","createShapeByNode","containerShapeKey","containerShape","toShape","fromShape","createConnectorByEdge","needAutoLayout","updateDataKeys","updateTemplateItem","layoutShapes","layoutConnectors","shapesToRemove","connectorsToRemove","purgeLayoutShapes","changeShapeByDataItem","changeItemByDataItem","updateShapeContainer","edgeKeysToUpdate","changeConnectorPointsByDataItem","getConnectorPointsByEdge","changeConnectorByDataItem","shapesToRemoveKeySet","keySet","uniqueShapes","applyShapeAutoSize","shapeSizeSettings","shapeTextSize","textHorOffset","textVerOffset","sizeToPx","newShapeTextSize","shapeNewSize","dataItem","ChangeCustomDataHistoryItem","getPreparedStyleValue","colorValue","modelPoints","createModelPointFromDataSourceEdgeItemPoints","lastIndex","dep","isValidDataSourceEdgeItemPoint","createModelPoint","str1","str2","isEmptyString","_extendStatics234","oldCustomData","_extendStatics235","DataSourceItemDataImporter","_extendStatics236","DataSourceItem","LOG_MIN_ZOOM","LOG_MAX_ZOOM","ZERO_STEP","getStepByZoom","ZOOMLEVEL_COMMANDS","AUTOZOOM_COMMANDS","increase","currentZoomStep","getNearestCurrentZoomStep","ZOOM_STEPS","logZoom","exp","TextToolbox_1","IconToolbox_1","measurers","TextToolbox","IconToolbox","aggr","searchFilter","toolboxIndex","filteringToolboxes","_extendStatics237","itemEl","_extendStatics238","Toolbox_1","readonly","drawShapeIcons","toolboxWidth","lineWidth","targetWidth","shapeIconSize","shapeIconSpacing","shapeIconCountInRow","iconCountInRow","createShape","updateShapeIconBounds","shapeEl","drawShape","drawSelector","shapeIconAttributes","pr","selectorRect","shrinkText","xPosT","yPosT","needResetShapeText","shapeSizeT","_extendStatics239","ApiControllerAction","__1","SelectionChanged","tryRaiseUserAction","cleanupNativeItem","createNativeConnector","convertUnit","convertPoint","convertSize","callEvent","isUserAction","item_1","AddShape_1","DeleteShape_1","DeleteConnector_1","AddShapeFromToolbox_1","ChangeConnection_1","ChangeConnectorPoints_1","BeforeChangeShapeText_1","BeforeChangeConnectorText_1","ChangeShapeText_1","ChangeConnectorText_1","PermissionsProviderStorage_1","ResizeShape_1","MoveShape_1","permissionsLockCount","requestDeleteItems","updateUICount","storage","PermissionsProviderStorage","entry","entity","DeleteShapeRequestedEntity","DeleteConnectorRequestedEntity","requestOperation","AddShapeRequestedEntity","itemType","AddShapeFromToolboxRequestedEntity","ChangeConnectionRequestedEntity","ChangeConnectorPointsRequestedEntity","BeforeChangeShapeTextRequestedEntity","BeforeChangeConnectorTextRequestedEntity","textToApply","ChangeShapeTextRequestedEntity","ChangeConnectorTextRequestedEntity","shapeInfo","ResizeShapeRequestedEntity","MoveShapeRequestedEntity","cachedEntity_1","requestOperationCore","needStorePermissions","storePermission","storageKey","settingsKey","getInteractingItemCount","_extendStatics240","AddShapeEventArgs","RequestedEntity_1","_extendStatics241","DeleteShapeEventArgs","DeleteShape","_extendStatics242","DeleteConnectorEventArgs","DeleteConnector","_extendStatics243","AddShapeFromToolboxEventArgs","_extendStatics244","ChangeConnectionEventArgs","oldShape","connectorsAreEqual","shapesAreEqual","oldShapesAreEqual","_extendStatics245","ChangeConnectorPointsEventArgs","ChangeConnectorPoints","_extendStatics246","BeforeChangeShapeTextEventArgs","BeforeChangeShapeText","_extendStatics247","BeforeChangeConnectorTextEventArgs","BeforeChangeConnectorText","_extendStatics248","ChangeShapeTextEventArgs","ChangeShapeText","_extendStatics249","ChangeConnectorTextEventArgs","ChangeConnectorText","interactingItems","storedPermissions","getInteractingItemKey","storePermissions","granted","_extendStatics250","ResizeShapeEventArgs","_extendStatics251","MoveShapeEventArgs","ConnectorRoutingPenaltyDescription","RightAngleConnectorRoutingStrategy_1","shapeMargins","shouldReverseConnections","shouldResizeConnections","penaltyDescription","option","RightAngleConnectorRoutingStrategy","beginConnectorShape","endConnectorShape","getShapes","getConnectorShapes","RightAngleConnectorRoutingContext_1","supportRenderPoints","beginConnectionShape","endConnectionShape","RightAngleConnectorRoutingContext","shouldCreateRenderPoints","createRenderPointsCore","renderPointIndex","lastRenderPointIndex","oldRenderPoint","firstSegment","newRenderPoint","getRenderPointIndexByPointIndex","previuosRenderPoint","currentRenderPoint_1","currentRenderPoint_2","currentRenderPoint_3","nextRenderPoint","currentRenderPoint_4","currentRenderPoint","onMovePointCore","currentRenderSegment","currentStartCustomPointIndex","setup","renderSegments","registerCustomPoints","startPointIndex","registerRenderPoints","createRoutedPoints","startInfo","endInfo","createProhibitedSegments","validateRenderPoints","resultPath","routedPoints","registerPoint","IntersectingItemsByPointsContext","CuttingItemsContext","RightAngleConnectorRoutingMathOperations_1","ConnectorRenderSegment_1","RoutingGrid_1","AStarContext_1","AStarCalculator_1","cuttingItemKeys","registerShape","getOrAddItems","getConnectionSide","ignorableItemKeys","cuttingShapesContext","intersectedItemsByPointsContext","isInvalidRenderSegments","isSmallPath","hasIntersecting","isReversedStartConnection","isReversedEndConnection","beginConnectionSegment","endConnectionSegment","isReversedConnectionSegment","supportSegments","supportSegment","connectionSegment","doubleMargins","beginPathPoint","endPathPoint","processContainers","processSupportSegments","processIntersection","processConnections","processRenderSegments","processRoutingGrid","processRoutingMetrics","targetInfo","prohibitedSegments","startPathPoint","targetPathPoint","createAStarContext","AStarCalculator","calculate","addConnectionRoutedPoints","getIntersectedItems","isIgnorableItem","registerIgnorableShape","beginShapeContainer","endShapeContainer","createSupportSegments","isConnectedByStart","isConnectedByEnd","beginShapeContainsEndConnection","endShapeContainsBeginConnection","shapeContainsOtherConnection","createRenderSegments","renderSegment","nextRenderSegment","createGridPoints","routingGrid","createGrid","metrics","createAStarMetrics","AStarContext","isCustomSegment","startSegmentsPoint","endSegmentsPoint","unionRoutingSegments","sp","ConnectorRenderSegment","createPreviousCustomSegment","startRoutingPoint","previuosPointIndex","prevEndPoint","startNextPoint","isPathNormal","connectionSide","targetShape","otherShape","otherPoint","targetRectangle","createBeginConnectionSegmentCore","currentOffset","hasIntersectedItemsByPoint","reversedSegment","isEndConnectionRectanleLineIntersected","secondPoint","connectionItem","createEndConnectionSegmentCore","isBeginConnectionRectanleLineIntersected","createExtendedShapesBounds","RoutingGrid","ConnectorProhibitedSegments_1","previousCustomSegment","createProhibitedSegmentsCore","addExludedPoint","ConnectorProhibitedSegments","exludedPoints","allowPoint","verticalGridLines","horizontalGridLines","boundsSet","verticalLines","horizontalLines","varticalHashMap","horizontalHashMap","addLine","hashMap","getNeighborPoints","verticalIndex","isValidArrayIndex","horizontalIndex","_extendStatics252","AStarContextBase","SortedQueues_1","UniqueAStarNodePositions_1","AStarNode_1","targetPosition","maxStepsCount","prohibitedPoints","updatableSet","stepsCount","currentNode","generalSet","SortedQueues","UniqueAStarNodePositions","AStarNode","getDistance","enqueue","openNode","startContinue","dequeueMin","endContinue","addProhibitedPoint","nextPosition","getPenalty","finishWithPath","getPath","finishWithoutPath","routingContext","grid","middlePosition","hasIntersectedItem","isIntersectedWithExtendedRectangle","hasOneShapeConnection","itemContainsConnectionPoints","isConnectionPoint","_itemsArrays","_sortedKeys","getQueue","addSortedKey","removeCore","removeSortedKey","sortedPointIndex","sortedKeys","shouldStartContinue","shouldFinish","_dataKeys","_getData","_layoutParameters","_extendStatics253","onElementTouchMoveHandler","onElementTouchMove","onSelectionChangeHandler","onSelectionChange","_extendStatics254","ToolboxDragEventsHandlerBase_1","IDragEventsHandler_1","onDragStartHandler","_extendStatics255","_extendStatics256","_extendStatics257","ondragstart","_extendStatics258"],"mappings":"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","file":"a2a93956-9f85eacf3956f5ad93f2.js","sourcesContent":["require(\"core-js/modules/es.array.reduce.js\");\n\nrequire(\"core-js/modules/es.array.sort.js\");\n\nrequire(\"core-js/modules/es.string.trim-start.js\");\n\nrequire(\"core-js/modules/es.string.trim-end.js\");\n\nrequire(\"core-js/modules/es.typed-array.sort.js\");\n\n/*!\n * DevExpress Diagram (dx-diagram)\n * Version: 2.0.45\n * Build date: Fri Nov 12 2021\n * \n * Copyright (c) 2012 - 2021 Developer Express Inc. ALL RIGHTS RESERVED\n * Read about DevExpress licensing here: https://www.devexpress.com/Support/EULAs\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if (typeof exports === 'object') exports[\"diagram\"] = factory();else root[\"DevExpress\"] = root[\"DevExpress\"] || {}, root[\"DevExpress\"][\"diagram\"] = factory();\n})(this, function () {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n enumerable: true,\n get: getter\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // define __esModule on exports\n\n /******/\n\n\n __webpack_require__.r = function (exports) {\n /******/\n if (typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n /******/\n Object.defineProperty(exports, Symbol.toStringTag, {\n value: 'Module'\n });\n /******/\n }\n /******/\n\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n /******/\n };\n /******/\n\n /******/\n // create a fake namespace object\n\n /******/\n // mode & 1: value is a module id, require it\n\n /******/\n // mode & 2: merge all properties of value into the ns\n\n /******/\n // mode & 4: return value when already ns object\n\n /******/\n // mode & 8|1: behave like require\n\n /******/\n\n\n __webpack_require__.t = function (value, mode) {\n /******/\n if (mode & 1) value = __webpack_require__(value);\n /******/\n\n if (mode & 8) return value;\n /******/\n\n if (mode & 4 && typeof value === 'object' && value && value.__esModule) return value;\n /******/\n\n var ns = Object.create(null);\n /******/\n\n __webpack_require__.r(ns);\n /******/\n\n\n Object.defineProperty(ns, 'default', {\n enumerable: true,\n value: value\n });\n /******/\n\n if (mode & 2 && typeof value != 'string') for (var key in value) {\n __webpack_require__.d(ns, key, function (key) {\n return value[key];\n }.bind(null, key));\n }\n /******/\n\n return ns;\n /******/\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = 107);\n /******/\n }\n /************************************************************************/\n\n /******/\n ([\n /* 0 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ShapeType = exports.ShapeTypes = exports.ShapeCategories = void 0;\n\n var ShapeCategories =\n /** @class */\n function () {\n function ShapeCategories() {}\n\n ShapeCategories.General = \"general\";\n ShapeCategories.Flowchart = \"flowchart\";\n ShapeCategories.OrgChart = \"orgChart\";\n ShapeCategories.Containers = \"containers\";\n ShapeCategories.Custom = \"custom\";\n return ShapeCategories;\n }();\n\n exports.ShapeCategories = ShapeCategories;\n\n var ShapeTypes =\n /** @class */\n function () {\n function ShapeTypes() {} // Standard\n\n\n ShapeTypes.Text = \"text\";\n ShapeTypes.Rectangle = \"rectangle\";\n ShapeTypes.Ellipse = \"ellipse\";\n ShapeTypes.Cross = \"cross\";\n ShapeTypes.Triangle = \"triangle\";\n ShapeTypes.Diamond = \"diamond\";\n ShapeTypes.Heart = \"heart\";\n ShapeTypes.Pentagon = \"pentagon\";\n ShapeTypes.Hexagon = \"hexagon\";\n ShapeTypes.Octagon = \"octagon\";\n ShapeTypes.Star = \"star\";\n ShapeTypes.ArrowLeft = \"arrowLeft\";\n ShapeTypes.ArrowUp = \"arrowTop\";\n ShapeTypes.ArrowRight = \"arrowRight\";\n ShapeTypes.ArrowDown = \"arrowBottom\";\n ShapeTypes.ArrowUpDown = \"arrowNorthSouth\";\n ShapeTypes.ArrowLeftRight = \"arrowEastWest\"; // Flowchart\n\n ShapeTypes.Process = \"process\";\n ShapeTypes.Decision = \"decision\";\n ShapeTypes.Terminator = \"terminator\";\n ShapeTypes.PredefinedProcess = \"predefinedProcess\";\n ShapeTypes.Document = \"document\";\n ShapeTypes.MultipleDocuments = \"multipleDocuments\";\n ShapeTypes.ManualInput = \"manualInput\";\n ShapeTypes.Preparation = \"preparation\";\n ShapeTypes.Data = \"data\";\n ShapeTypes.Database = \"database\";\n ShapeTypes.HardDisk = \"hardDisk\";\n ShapeTypes.InternalStorage = \"internalStorage\";\n ShapeTypes.PaperTape = \"paperTape\";\n ShapeTypes.ManualOperation = \"manualOperation\";\n ShapeTypes.Delay = \"delay\";\n ShapeTypes.StoredData = \"storedData\";\n ShapeTypes.Display = \"display\";\n ShapeTypes.Merge = \"merge\";\n ShapeTypes.Connector = \"connector\";\n ShapeTypes.Or = \"or\";\n ShapeTypes.SummingJunction = \"summingJunction\"; // Containers\n\n ShapeTypes.Container = \"container\"; // abstract\n\n ShapeTypes.VerticalContainer = \"verticalContainer\";\n ShapeTypes.HorizontalContainer = \"horizontalContainer\"; // Shapes with images\n\n ShapeTypes.Card = \"card\"; // abstract\n\n ShapeTypes.CardWithImageOnLeft = \"cardWithImageOnLeft\";\n ShapeTypes.CardWithImageOnTop = \"cardWithImageOnTop\";\n ShapeTypes.CardWithImageOnRight = \"cardWithImageOnRight\";\n return ShapeTypes;\n }();\n\n exports.ShapeTypes = ShapeTypes;\n var ShapeType;\n\n (function (ShapeType) {\n ShapeType[ShapeType[\"text\"] = 0] = \"text\";\n ShapeType[ShapeType[\"rectangle\"] = 1] = \"rectangle\";\n ShapeType[ShapeType[\"ellipse\"] = 2] = \"ellipse\";\n ShapeType[ShapeType[\"cross\"] = 3] = \"cross\";\n ShapeType[ShapeType[\"triangle\"] = 4] = \"triangle\";\n ShapeType[ShapeType[\"diamond\"] = 5] = \"diamond\";\n ShapeType[ShapeType[\"heart\"] = 6] = \"heart\";\n ShapeType[ShapeType[\"pentagon\"] = 7] = \"pentagon\";\n ShapeType[ShapeType[\"hexagon\"] = 8] = \"hexagon\";\n ShapeType[ShapeType[\"octagon\"] = 9] = \"octagon\";\n ShapeType[ShapeType[\"star\"] = 10] = \"star\";\n ShapeType[ShapeType[\"arrowLeft\"] = 11] = \"arrowLeft\";\n ShapeType[ShapeType[\"arrowTop\"] = 12] = \"arrowTop\";\n ShapeType[ShapeType[\"arrowRight\"] = 13] = \"arrowRight\";\n ShapeType[ShapeType[\"arrowBottom\"] = 14] = \"arrowBottom\";\n ShapeType[ShapeType[\"arrowNorthSouth\"] = 15] = \"arrowNorthSouth\";\n ShapeType[ShapeType[\"arrowEastWest\"] = 16] = \"arrowEastWest\"; // Flowchart\n\n ShapeType[ShapeType[\"process\"] = 17] = \"process\";\n ShapeType[ShapeType[\"decision\"] = 18] = \"decision\";\n ShapeType[ShapeType[\"terminator\"] = 19] = \"terminator\";\n ShapeType[ShapeType[\"predefinedProcess\"] = 20] = \"predefinedProcess\";\n ShapeType[ShapeType[\"document\"] = 21] = \"document\";\n ShapeType[ShapeType[\"multipleDocuments\"] = 22] = \"multipleDocuments\";\n ShapeType[ShapeType[\"manualInput\"] = 23] = \"manualInput\";\n ShapeType[ShapeType[\"preparation\"] = 24] = \"preparation\";\n ShapeType[ShapeType[\"data\"] = 25] = \"data\";\n ShapeType[ShapeType[\"database\"] = 26] = \"database\";\n ShapeType[ShapeType[\"hardDisk\"] = 27] = \"hardDisk\";\n ShapeType[ShapeType[\"internalStorage\"] = 28] = \"internalStorage\";\n ShapeType[ShapeType[\"paperTape\"] = 29] = \"paperTape\";\n ShapeType[ShapeType[\"manualOperation\"] = 30] = \"manualOperation\";\n ShapeType[ShapeType[\"delay\"] = 31] = \"delay\";\n ShapeType[ShapeType[\"storedData\"] = 32] = \"storedData\";\n ShapeType[ShapeType[\"display\"] = 33] = \"display\";\n ShapeType[ShapeType[\"merge\"] = 34] = \"merge\";\n ShapeType[ShapeType[\"connector\"] = 35] = \"connector\";\n ShapeType[ShapeType[\"or\"] = 36] = \"or\";\n ShapeType[ShapeType[\"summingJunction\"] = 37] = \"summingJunction\"; // Containers\n\n ShapeType[ShapeType[\"verticalContainer\"] = 38] = \"verticalContainer\";\n ShapeType[ShapeType[\"horizontalContainer\"] = 39] = \"horizontalContainer\"; // Shapes with images\n\n ShapeType[ShapeType[\"cardWithImageOnLeft\"] = 40] = \"cardWithImageOnLeft\";\n ShapeType[ShapeType[\"cardWithImageOnTop\"] = 41] = \"cardWithImageOnTop\";\n ShapeType[ShapeType[\"cardWithImageOnRight\"] = 42] = \"cardWithImageOnRight\";\n })(ShapeType = exports.ShapeType || (exports.ShapeType = {}));\n /***/\n\n },\n /* 1 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Point = function () {\n function Point(x, y) {\n this.x = x;\n this.y = y;\n }\n\n Point.zero = function () {\n return new Point(0, 0);\n };\n\n Point.fromNumber = function (num) {\n return new Point(num, num);\n };\n\n Point.prototype.isZero = function () {\n return this.x === 0 && this.y === 0;\n };\n\n Point.prototype.toString = function () {\n return JSON.stringify(this);\n };\n\n Point.prototype.copyFrom = function (obj) {\n this.x = obj.x;\n this.y = obj.y;\n };\n\n Point.prototype.clone = function () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.equals = function (obj) {\n return this.x === obj.x && this.y === obj.y;\n };\n\n Point.prototype.offset = function (offsetX, offsetY) {\n this.x += offsetX;\n this.y += offsetY;\n return this;\n };\n\n Point.prototype.offsetByPoint = function (offset) {\n this.x += offset.x;\n this.y += offset.y;\n return this;\n };\n\n Point.prototype.multiply = function (multiplierX, multiplierY) {\n this.x *= multiplierX;\n this.y *= multiplierY;\n return this;\n };\n\n Point.prototype.negative = function () {\n this.x *= -1;\n this.y *= -1;\n return this;\n };\n\n Point.prototype.applyConverter = function (converter) {\n this.x = converter(this.x);\n this.y = converter(this.y);\n return this;\n };\n\n Point.plus = function (a, b) {\n return new Point(a.x + b.x, a.y + b.y);\n };\n\n Point.minus = function (a, b) {\n return new Point(a.x - b.x, a.y - b.y);\n };\n\n Point.xComparer = function (a, b) {\n return a.x - b.x;\n };\n\n Point.yComparer = function (a, b) {\n return a.y - b.y;\n };\n\n Point.equals = function (a, b) {\n return a.x === b.x && a.y === b.y;\n };\n\n return Point;\n }();\n\n exports.Point = Point;\n /***/\n },\n /* 2 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Size = function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n\n Size.empty = function () {\n return new Size(0, 0);\n };\n\n Size.fromNumber = function (num) {\n return new Size(num, num);\n };\n\n Size.initByCommonAction = function (action) {\n var widthAdp = function widthAdp(s) {\n return s.width;\n };\n\n var heightAdp = function heightAdp(s) {\n return s.height;\n };\n\n return new Size(action(widthAdp, heightAdp), action(heightAdp, widthAdp));\n };\n\n Size.prototype.isEmpty = function () {\n return this.width === 0 && this.height === 0;\n };\n\n Size.prototype.toString = function () {\n return JSON.stringify(this);\n };\n\n Size.prototype.nonNegativeSize = function () {\n if (this.width < 0) this.width = 0;\n if (this.height < 0) this.height = 0;\n return this;\n };\n\n Size.prototype.offset = function (offsetWidth, offsetHeight) {\n this.width = this.width + offsetWidth;\n this.height = this.height + offsetHeight;\n return this;\n };\n\n Size.prototype.multiply = function (multiplierW, multiplierH) {\n this.width *= multiplierW;\n this.height *= multiplierH;\n return this;\n };\n\n Size.prototype.equals = function (obj) {\n return this.width === obj.width && this.height === obj.height;\n };\n\n Size.prototype.clone = function () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.copyFrom = function (obj) {\n this.width = obj.width;\n this.height = obj.height;\n };\n\n Size.prototype.applyConverter = function (conv) {\n this.width = conv(this.width);\n this.height = conv(this.height);\n return this;\n };\n\n Size.equals = function (a, b) {\n return a.width === b.width && a.height === b.height;\n };\n\n return Size;\n }();\n\n exports.Size = Size;\n /***/\n },\n /* 3 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HtmlFocusUtils = exports.ObjectUtils = exports.GeometryUtils = exports.Utils = exports.EventDispatcher = exports.Range = exports.LineEquation = void 0;\n\n __webpack_require__(175);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var rectangle_1 = __webpack_require__(12);\n\n var search_1 = __webpack_require__(42);\n\n var metrics_1 = __webpack_require__(36);\n\n var math_1 = __webpack_require__(32);\n\n var vector_1 = __webpack_require__(58);\n\n var segment_1 = __webpack_require__(33);\n\n var Style_1 = __webpack_require__(27);\n\n var browser_1 = __webpack_require__(19);\n\n var LineEquation =\n /** @class */\n function () {\n function LineEquation(aParam, bParam, cParam) {\n this.aParam = aParam;\n this.bParam = bParam;\n this.cParam = cParam;\n }\n\n LineEquation.fromPoints = function (pointA, pointB, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n return !GeometryUtils.areDuplicatedPoints(pointA, pointB, accuracy) ? new LineEquation(pointB.y - pointA.y, pointA.x - pointB.x, pointB.x * pointA.y - pointA.x * pointB.y) : undefined;\n };\n\n LineEquation.prototype.getPointIntersection = function (other, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n var A1 = this.aParam;\n var B1 = this.bParam;\n var C1 = this.cParam;\n var A2 = other.aParam;\n var B2 = other.bParam;\n var C2 = other.cParam;\n var v = A2 * B1 - A1 * B2;\n if (math_1.MathUtils.numberCloseTo(v, 0, accuracy)) return null;\n\n if (A1 === 0) {\n var x = (B2 * C1 - C2 * B1) / (B1 * A2);\n return this.createPoint(x, -C1 / B1);\n }\n\n var y = (C2 * A1 - C1 * A2) / v;\n return this.createPoint((-B1 * y - C1) / A1, y);\n };\n\n LineEquation.prototype.containsPoint = function (point, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n return math_1.MathUtils.numberCloseTo(this.aParam * point.x + this.bParam * point.y + this.cParam, 0, accuracy);\n };\n\n LineEquation.prototype.createPoint = function (x, y, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n return new point_1.Point(math_1.MathUtils.numberCloseTo(x, 0, accuracy) ? 0 : x, math_1.MathUtils.numberCloseTo(y, 0, accuracy) ? 0 : y);\n };\n\n return LineEquation;\n }();\n\n exports.LineEquation = LineEquation;\n\n var Range =\n /** @class */\n function () {\n function Range(from, to) {\n this.from = from;\n this.to = to !== undefined ? to : from;\n }\n\n Object.defineProperty(Range.prototype, \"length\", {\n get: function get() {\n return Math.abs(this.to - this.from);\n },\n enumerable: false,\n configurable: true\n });\n\n Range.prototype.extend = function (range) {\n this.from = Math.min(range.from, this.from);\n this.to = Math.max(range.to, this.to);\n };\n\n Range.prototype.includes = function (value) {\n return value >= this.from && value <= this.to;\n };\n\n Range.fromLength = function (from, length) {\n return new Range(from, from + length);\n };\n\n return Range;\n }();\n\n exports.Range = Range;\n\n var EventDispatcher =\n /** @class */\n function () {\n function EventDispatcher() {\n this.listeners = [];\n }\n\n EventDispatcher.prototype.add = function (listener) {\n if (!listener) throw new Error(\"Not Implemented\");\n if (!this.hasEventListener(listener)) this.listeners.push(listener);\n };\n\n EventDispatcher.prototype.remove = function (listener) {\n for (var i = 0, currentListener = void 0; currentListener = this.listeners[i]; i++) {\n if (currentListener === listener) {\n this.listeners.splice(i, 1);\n break;\n }\n }\n };\n\n EventDispatcher.prototype.raise = function (funcName) {\n var args = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n\n for (var i = 0, listener = void 0; listener = this.listeners[i]; i++) {\n var func = listener[funcName];\n func && func.apply(listener, args);\n }\n };\n\n EventDispatcher.prototype.raise1 = function (action) {\n for (var i = 0, listener = void 0; listener = this.listeners[i]; i++) {\n action(listener);\n }\n };\n\n EventDispatcher.prototype.hasEventListener = function (listener) {\n for (var i = 0, l = this.listeners.length; i < l; i++) {\n if (this.listeners[i] === listener) return true;\n }\n\n return false;\n };\n\n return EventDispatcher;\n }();\n\n exports.EventDispatcher = EventDispatcher;\n\n var Utils =\n /** @class */\n function () {\n function Utils() {}\n\n Utils.flatten = function (arr) {\n return [].concat.apply([], arr);\n };\n\n return Utils;\n }();\n\n exports.Utils = Utils;\n\n var GeometryUtils =\n /** @class */\n function () {\n function GeometryUtils() {}\n\n GeometryUtils.getCommonRectangle = function (rects) {\n if (!rects.length) return new rectangle_1.Rectangle(0, 0, 0, 0);\n var minX = Number.MAX_VALUE;\n var maxX = -Number.MAX_VALUE;\n var minY = Number.MAX_VALUE;\n var maxY = -Number.MAX_VALUE;\n rects.forEach(function (rect) {\n minX = Math.min(minX, rect.x);\n maxX = Math.max(maxX, rect.right);\n minY = Math.min(minY, rect.y);\n maxY = Math.max(maxY, rect.bottom);\n });\n return new rectangle_1.Rectangle(minX, minY, maxX - minX, maxY - minY);\n };\n\n GeometryUtils.findFreeSpace = function (rects, size, exact, targetRect) {\n var xs = [targetRect ? targetRect.x : 0];\n var ys = [targetRect ? targetRect.y : 0];\n rects.forEach(function (r) {\n xs.push(r.x);\n xs.push(r.right);\n ys.push(r.y);\n ys.push(r.bottom);\n });\n xs = xs.sort(function (a, b) {\n return a - b;\n }).reduce(function (acc, v, index) {\n return xs[index - 1] !== v && acc.push(v) && acc || acc;\n }, []); // magic for distinct\n\n ys = ys.sort(function (a, b) {\n return a - b;\n }).reduce(function (acc, v, index) {\n return ys[index - 1] !== v && acc.push(v) && acc || acc;\n }, []);\n var matrix = ys.map(function (y) {\n return xs.map(function (x, i) {\n return xs[i + 1] - x;\n });\n });\n\n var _loop_1 = function _loop_1(i, rect) {\n var xi0 = search_1.SearchUtils.binaryIndexOf(xs, function (a) {\n return a - rect.x;\n });\n var xi1 = search_1.SearchUtils.binaryIndexOf(xs, function (a) {\n return a - rect.right;\n });\n var yi0 = search_1.SearchUtils.binaryIndexOf(ys, function (a) {\n return a - rect.y;\n });\n var yi1 = search_1.SearchUtils.binaryIndexOf(ys, function (a) {\n return a - rect.bottom;\n });\n\n for (var y = yi0; y < yi1; y++) {\n for (var x = xi0; x < xi1; x++) {\n matrix[y][x] *= -1;\n }\n }\n };\n\n for (var i = 0, rect = void 0; rect = rects[i]; i++) {\n _loop_1(i, rect);\n }\n\n for (var yi = 0; yi < ys.length; yi++) {\n for (var xi = 0; xi < xs.length - 1; xi++) {\n var checkResult = this.checkRect(matrix, ys, xs, yi, xi, size, exact);\n if (checkResult > 0) xi = checkResult;else if (checkResult === 0) return new point_1.Point(xs[xi], ys[yi]);\n }\n }\n\n return null;\n }; // wtf\n\n\n GeometryUtils.checkRect = function (matrix, ys, xs, yimin, ximin, size, exact) {\n var height = 0;\n var width = 0;\n var ximax = xs.length - 2;\n\n for (var yi = yimin; yi < ys.length; yi++) {\n height = ys[yi + 1] - ys[yimin];\n\n for (var xi = ximin; xi <= ximax; xi++) {\n if (matrix[yi][xi] < 0) return xi === 0 ? -1 : xi; // move left?\n\n width = xs[xi + 1] - xs[ximin];\n\n if (size.width <= width || !exact && xi === xs.length - 2 && size.width / 2 <= width) {\n if (size.height <= height || !exact && yi === ys.length - 2 && size.height / 2 <= height) return 0;\n ximax = xi;\n }\n }\n }\n };\n\n GeometryUtils.getArrowPoints = function (point, directionPoint, arrowHeight, arrowWidth) {\n if (point.x === directionPoint.x && point.y === directionPoint.y) return {\n point1: point.clone(),\n point2: point.clone(),\n point3: point.clone()\n };\n var catX = directionPoint.x - point.x;\n var catY = directionPoint.y - point.y;\n var hypotenuse = Math.sqrt(Math.pow(catX, 2) + Math.pow(catY, 2));\n var cos = catX / hypotenuse;\n var sin = catY / hypotenuse;\n var x1 = point.x + arrowHeight * cos + arrowWidth * sin;\n var y1 = point.y + arrowHeight * sin - arrowWidth * cos;\n var x2 = point.x + arrowHeight * cos - arrowWidth * sin;\n var y2 = point.y + arrowHeight * sin + arrowWidth * cos;\n var x3 = point.x + arrowHeight * cos;\n var y3 = point.y + arrowHeight * sin;\n return {\n point1: new point_1.Point(x1, y1),\n point2: new point_1.Point(x2, y2),\n point3: new point_1.Point(x3, y3)\n };\n };\n\n GeometryUtils.createSegments = function (points) {\n var result = [];\n\n for (var i = 1; i < points.length; i++) {\n result.push(new segment_1.Segment(points[i - 1], points[i]));\n }\n\n return result;\n };\n\n GeometryUtils.createRectagle = function (points) {\n var xarr = points.map(function (p) {\n return p.x;\n });\n var yarr = points.map(function (p) {\n return p.y;\n });\n var minX = xarr.reduce(function (prev, cur) {\n return Math.min(prev, cur);\n }, Number.MAX_VALUE);\n var maxX = xarr.reduce(function (prev, cur) {\n return Math.max(prev, cur);\n }, -Number.MAX_VALUE);\n var minY = yarr.reduce(function (prev, cur) {\n return Math.min(prev, cur);\n }, Number.MAX_VALUE);\n var maxY = yarr.reduce(function (prev, cur) {\n return Math.max(prev, cur);\n }, -Number.MAX_VALUE);\n return new rectangle_1.Rectangle(minX, minY, maxX - minX, maxY - minY);\n };\n\n GeometryUtils.createSegmentsFromRectangle = function (rect) {\n var result = [];\n var topLeft = new point_1.Point(rect.x, rect.y);\n var topRight = new point_1.Point(rect.right, rect.y);\n var bottomRight = new point_1.Point(rect.right, rect.bottom);\n var bottomLeft = new point_1.Point(rect.x, rect.bottom);\n result.push(new segment_1.Segment(topLeft, topRight));\n result.push(new segment_1.Segment(topRight, bottomRight));\n result.push(new segment_1.Segment(bottomRight, bottomLeft));\n result.push(new segment_1.Segment(bottomLeft, topLeft));\n return result;\n };\n\n GeometryUtils.areSegmentsCutRectangle = function (segments, rect) {\n if (!rect) return false;\n var rectanlePolygonalChain = GeometryUtils.createSegmentsFromRectangle(rect);\n var hasSegmentIn = false;\n var hasSegmentOut = false;\n\n var _loop_2 = function _loop_2(i) {\n if (hasSegmentIn && hasSegmentOut) return {\n value: true\n };\n var segment = segments[i];\n\n if (segment.isIntersectedByRect(rect)) {\n var startPoint_1 = segment.startPoint;\n var endPoint_1 = segment.endPoint;\n var currentContainsStart = rect.containsPoint(startPoint_1);\n var currentContainsEnd = rect.containsPoint(endPoint_1);\n if (!currentContainsStart && !currentContainsEnd) return {\n value: true\n };\n\n if (currentContainsStart && !currentContainsEnd) {\n var rectLinesContainsStart_1 = rectanlePolygonalChain.filter(function (s) {\n return s.containsPoint(startPoint_1);\n });\n\n if (rectLinesContainsStart_1.length > 0) {\n var otherRectSegments = rectanlePolygonalChain.filter(function (s) {\n if (rectLinesContainsStart_1.length === 1) return !s.containsPoint(rectLinesContainsStart_1[0].startPoint) && !s.containsPoint(rectLinesContainsStart_1[0].endPoint);\n return s !== rectLinesContainsStart_1[0] && s !== rectLinesContainsStart_1[1];\n });\n if (otherRectSegments.some(function (s) {\n return segment.isIntersected(s);\n }) && !hasSegmentIn) hasSegmentIn = true;\n }\n\n if (!hasSegmentOut) hasSegmentOut = true;\n return \"continue\";\n }\n\n if (!currentContainsStart && currentContainsEnd) {\n if (!hasSegmentIn) {\n hasSegmentIn = true;\n if (hasSegmentOut) hasSegmentOut = false;\n }\n\n var rectLinesContainsEnd_1 = rectanlePolygonalChain.filter(function (s) {\n return s.containsPoint(endPoint_1);\n });\n\n if (rectLinesContainsEnd_1.length > 0) {\n var otherRectSegments = rectanlePolygonalChain.filter(function (s) {\n if (rectLinesContainsEnd_1.length === 1) return !s.containsPoint(rectLinesContainsEnd_1[0].startPoint) && !s.containsPoint(rectLinesContainsEnd_1[0].endPoint);\n return s !== rectLinesContainsEnd_1[0] && s !== rectLinesContainsEnd_1[1];\n });\n if (otherRectSegments.some(function (s) {\n return segment.isIntersected(s);\n }) && !hasSegmentOut) hasSegmentOut = true;\n }\n\n return \"continue\";\n }\n\n var rectLinesContainsStart = rectanlePolygonalChain.filter(function (s) {\n return s.containsPoint(startPoint_1);\n });\n var rectLinesContainsEnd = rectanlePolygonalChain.filter(function (s) {\n return s.containsPoint(endPoint_1);\n });\n if (rectLinesContainsStart.length === 2 && rectLinesContainsEnd.length === 2) return {\n value: true\n };\n if (rectLinesContainsStart.length === 1 && rectLinesContainsEnd.length === 1 && rectLinesContainsStart[0] !== rectLinesContainsEnd[0]) return {\n value: true\n };\n if (!hasSegmentOut && rectLinesContainsEnd.length === 1 && !rectLinesContainsStart.length) hasSegmentOut = true;\n\n if (!hasSegmentIn && rectLinesContainsStart.length === 1 && !rectLinesContainsEnd.length) {\n hasSegmentIn = true;\n if (hasSegmentOut) hasSegmentOut = false;\n }\n }\n };\n\n for (var i = 0; i < segments.length; i++) {\n var state_1 = _loop_2(i);\n\n if (typeof state_1 === \"object\") return state_1.value;\n }\n\n return hasSegmentIn && hasSegmentOut;\n };\n\n GeometryUtils.areIntersectedSegments = function (segments, otherSegments) {\n if (!otherSegments) return false;\n var segmentIndex = 0;\n var segment;\n\n while (segment = segments[segmentIndex]) {\n var otherSegmentIndex = 0;\n var otherSegment = void 0;\n\n while (otherSegment = otherSegments[otherSegmentIndex]) {\n if (otherSegment.isIntersected(segment)) return true;\n otherSegmentIndex++;\n }\n\n segmentIndex++;\n }\n\n return false;\n };\n\n GeometryUtils.isLineIntersected = function (beginLinePoint, endLinePoint, segment, excludeBeginPoint, excludeEndPoint) {\n var line = LineEquation.fromPoints(beginLinePoint, endLinePoint);\n var segmentStartPoint = segment.startPoint;\n var segmentEndPoint = segment.endPoint;\n if (line.containsPoint(segmentStartPoint) && line.containsPoint(segmentEndPoint)) return !excludeBeginPoint && !excludeEndPoint;\n var segmentLine = LineEquation.fromPoints(segmentStartPoint, segmentEndPoint);\n var intersection = segmentLine.getPointIntersection(line);\n if (!intersection || !segment.containsPoint(intersection)) return false;\n if (excludeBeginPoint) return !GeometryUtils.areDuplicatedPoints(segmentStartPoint, intersection);\n if (excludeEndPoint) return !GeometryUtils.areDuplicatedPoints(segmentEndPoint, intersection);\n return true;\n };\n\n GeometryUtils.removeUnnecessaryPoints = function (points, removeCallback, checkCallback, accuracy) {\n if (checkCallback === void 0) {\n checkCallback = function checkCallback(p) {\n return p !== undefined;\n };\n }\n\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n this.removeUnnecessaryPointsCore(points, removeCallback, checkCallback, accuracy);\n this.removeBackwardPoints(points, removeCallback, checkCallback, accuracy);\n this.removeUnnecessaryPointsCore(points, removeCallback, checkCallback, accuracy);\n };\n\n GeometryUtils.removeUnnecessaryRightAnglePoints = function (points, removeCallback, checkCallback, accuracy) {\n if (checkCallback === void 0) {\n checkCallback = function checkCallback(p) {\n return p !== undefined;\n };\n }\n\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n this.removeUnnecessaryPointsCore(points, removeCallback, checkCallback, accuracy);\n this.removeBackwardPoints(points, removeCallback, checkCallback, accuracy);\n this.removeNotRightAnglePoints(points, removeCallback, checkCallback, accuracy);\n this.removeUnnecessaryPointsCore(points, removeCallback, checkCallback, accuracy);\n };\n\n GeometryUtils.removeUnnecessaryPointsCore = function (points, removeCallback, checkCallback, accuracy) {\n if (checkCallback === void 0) {\n checkCallback = function checkCallback(p) {\n return p !== undefined;\n };\n }\n\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n this.removeDuplicatedPoints(points, removeCallback, checkCallback, accuracy);\n this.removeNotCornersPoints(points, removeCallback, checkCallback, accuracy);\n };\n\n GeometryUtils.removeNotRightAnglePoints = function (points, removeCallback, checkCallback, accuracy) {\n if (checkCallback === void 0) {\n checkCallback = function checkCallback(p) {\n return p !== undefined;\n };\n }\n\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n var index = 0;\n var point;\n\n while ((point = points[index]) && points.length > 2) {\n var nextPoint = this.getNextPoint(points, index, 1, checkCallback);\n var prevPoint = this.getNextPoint(points, index, -1, checkCallback);\n if (!prevPoint || !nextPoint || GeometryUtils.isRightAngleCorner(prevPoint, point, nextPoint, accuracy) || !removeCallback(point, index)) index++;\n }\n };\n\n GeometryUtils.removeDuplicatedPoints = function (points, removeCallback, checkCallback, accuracy) {\n if (checkCallback === void 0) {\n checkCallback = function checkCallback(p) {\n return p !== undefined;\n };\n }\n\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n var index = 0;\n var point;\n\n while ((point = points[index]) && points.length > 2) {\n var nextPoint = this.getNextPoint(points, index, 1, checkCallback);\n\n if (nextPoint && GeometryUtils.areDuplicatedPoints(point, nextPoint, accuracy)) {\n var actualIndex = index === points.length - 2 ? index : index + 1;\n if (removeCallback(points[actualIndex], actualIndex)) continue;\n }\n\n index++;\n }\n };\n\n GeometryUtils.removeNotCornersPoints = function (points, removeCallback, checkCallback, accuracy) {\n if (checkCallback === void 0) {\n checkCallback = function checkCallback(p) {\n return p !== undefined;\n };\n }\n\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n var index = 0;\n var point;\n\n while ((point = points[index]) && points.length > 2) {\n var nextPoint = this.getNextPoint(points, index, 1, checkCallback);\n var prevPoint = this.getNextPoint(points, index, -1, checkCallback);\n if (!prevPoint || !nextPoint || GeometryUtils.isCorner(prevPoint, point, nextPoint, accuracy) || !removeCallback(point, index)) index++;\n }\n };\n\n GeometryUtils.removeBackwardPoints = function (points, removeCallback, checkCallback, accuracy) {\n if (checkCallback === void 0) {\n checkCallback = function checkCallback(p) {\n return p !== undefined;\n };\n }\n\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n var index = 0;\n var point;\n\n while ((point = points[index]) && points.length > 2) {\n var nextPoint = this.getNextPoint(points, index, 1, checkCallback);\n var prevPoint = this.getNextPoint(points, index, -1, checkCallback);\n if (!prevPoint || !nextPoint || !GeometryUtils.isBackwardPoint(prevPoint, point, nextPoint, accuracy) || !removeCallback(point, index)) index++;\n }\n };\n\n GeometryUtils.isRightAngleCorner = function (prev, current, next, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n return math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), Math.PI / 2.0, accuracy) || math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), Math.PI, accuracy) || math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), 3.0 * Math.PI / 2.0, accuracy);\n };\n\n GeometryUtils.isCorner = function (prev, current, next, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n return !math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), 0, accuracy);\n };\n\n GeometryUtils.areDuplicatedPoints = function (current, next, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n return math_1.MathUtils.numberCloseTo(current.x, next.x, accuracy) && math_1.MathUtils.numberCloseTo(current.y, next.y, accuracy);\n };\n\n GeometryUtils.isBackwardPoint = function (prev, current, next, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n return math_1.MathUtils.numberCloseTo(GeometryUtils.createAngle(prev, current, next), Math.PI, accuracy);\n };\n\n GeometryUtils.createAngle = function (prev, current, next) {\n var vector1 = vector_1.Vector.fromPoints(current, next);\n var vector2 = vector_1.Vector.fromPoints(prev, current);\n var vector1X = vector1.x;\n var vector1Y = vector1.y;\n var vector2X = vector2.x;\n var vector2Y = vector2.y;\n var atan = Math.atan2(vector1X * vector2Y - vector2X * vector1Y, vector1X * vector2X + vector1Y * vector2Y);\n return atan < 0 ? 2 * Math.PI + atan : atan;\n };\n\n GeometryUtils.getNextPoint = function (points, index, step, checkCallback) {\n var result;\n var newIndex = index + step;\n\n while (result = points[newIndex]) {\n if (checkCallback(result)) return result;\n newIndex = newIndex + step;\n }\n };\n\n GeometryUtils.addSelectedLinesTo = function (prevPt, pt, nextPt, offsetX, offsetY, offsetXNegative, offsetYNegative, nextOffsetX, nextOffsetY, nextOffsetXNegative, nextOffsetYNegative, addSelectedLine, addSelectedLineWB, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n var a1 = pt.y - prevPt.y;\n var a2 = nextPt.y - pt.y;\n var b1 = prevPt.x - pt.x;\n var b2 = pt.x - nextPt.x;\n var det = a1 * b2 - a2 * b1;\n\n if (!math_1.MathUtils.numberCloseTo(det, 0, accuracy)) {\n var c1 = a1 * (prevPt.x + offsetX) + b1 * (prevPt.y + offsetY);\n var c2 = a2 * (pt.x + nextOffsetX) + b2 * (pt.y + nextOffsetY);\n addSelectedLine((b2 * c1 - b1 * c2) / det, (a1 * c2 - a2 * c1) / det);\n var c1WB = a1 * (prevPt.x + offsetXNegative) + b1 * (prevPt.y + offsetYNegative);\n var c2WB = a2 * (pt.x + nextOffsetXNegative) + b2 * (pt.y + nextOffsetYNegative);\n addSelectedLineWB((b2 * c1WB - b1 * c2WB) / det, (a1 * c2WB - a2 * c1WB) / det);\n }\n };\n\n GeometryUtils.getSelectionOffsetPoint = function (prev, current, distance) {\n return new point_1.Point((prev.y - current.y) / distance, (current.x - prev.x) / distance);\n };\n\n GeometryUtils.getSelectionTextStartEndPoints = function (prev, current, distance, center, size, align) {\n var cos = (current.x - prev.x) / distance;\n var sin = (current.y - prev.y) / distance;\n var width = size.width * cos + size.height * sin;\n\n switch (align) {\n case Style_1.TextAlignment.Left:\n return [center, new point_1.Point(center.x + cos * width, center.y + sin * width)];\n\n case Style_1.TextAlignment.Right:\n return [new point_1.Point(center.x - cos * width, center.y - sin * width), center];\n\n default:\n return [new point_1.Point(center.x - 0.5 * cos * width, center.y - 0.5 * sin * width), new point_1.Point(center.x + 0.5 * cos * width, center.y + 0.5 * sin * width)];\n }\n };\n\n GeometryUtils.getPathLength = function (points) {\n var length = 0;\n var prevPt;\n points.forEach(function (pt) {\n if (prevPt !== undefined) length += metrics_1.Metrics.euclideanDistance(pt, prevPt);\n prevPt = pt;\n });\n return length;\n };\n\n GeometryUtils.getPathPointByPosition = function (points, relativePosition) {\n if (!points.length) throw new Error(\"Invalid points\");\n if (0 > relativePosition || relativePosition > 1) throw new Error(\"Invalid relative position\");\n var length = this.getPathLength(points);\n if (points.length <= 2 && length === 0 || relativePosition === 0) return [points[0], 0];\n var targetLength = length * relativePosition;\n var currentLength = 0;\n\n for (var i = 1; i < points.length; i++) {\n var lineLength = metrics_1.Metrics.euclideanDistance(points[i], points[i - 1]);\n\n if (currentLength + lineLength >= targetLength) {\n var delta = targetLength - currentLength;\n var cos = (points[i].x - points[i - 1].x) / lineLength;\n var sin = (points[i].y - points[i - 1].y) / lineLength;\n return [new point_1.Point(points[i - 1].x + cos * delta, points[i - 1].y + sin * delta), i];\n }\n\n currentLength += lineLength;\n }\n\n return [points[points.length - 1], points.length - 1];\n };\n\n GeometryUtils.getLineAngle = function (beginPoint, endPoint) {\n return Math.atan2(endPoint.y - beginPoint.y, endPoint.x - beginPoint.x);\n };\n\n GeometryUtils.getTriangleBeginAngle = function (beginPoint, endPoint, point) {\n var lineAngle = this.getLineAngle(beginPoint, endPoint);\n var beginPointAngle = this.getLineAngle(beginPoint, point);\n return Math.abs(beginPointAngle - lineAngle);\n };\n\n GeometryUtils.getTriangleEndAngle = function (beginPoint, endPoint, point) {\n var lineAngle = this.getLineAngle(beginPoint, endPoint);\n var endPointAngle = this.getLineAngle(point, endPoint);\n return Math.abs(lineAngle - endPointAngle);\n };\n\n GeometryUtils.getPathPointByPoint = function (points, point) {\n if (!points.length) throw new Error(\"Invalid points\");\n if (points.length === 1) return points[0];\n var distance = Number.MAX_VALUE;\n var result;\n\n for (var i = 1; i < points.length; i++) {\n var beginPoint = points[i - 1];\n var endPoint = points[i];\n\n if (point.equals(beginPoint)) {\n result = beginPoint.clone();\n break;\n }\n\n if (point.equals(endPoint)) {\n result = endPoint.clone();\n break;\n }\n\n var beginAngle = this.getTriangleBeginAngle(beginPoint, endPoint, point);\n var endAngle = this.getTriangleEndAngle(beginPoint, endPoint, point);\n var beginDistance = metrics_1.Metrics.euclideanDistance(point, beginPoint);\n var endDistance = metrics_1.Metrics.euclideanDistance(point, endPoint);\n var orthOffset = beginDistance * Math.sin(beginAngle);\n var currentDistance = void 0;\n if (Math.PI / 2 <= beginAngle && beginAngle <= Math.PI * 3 / 2) currentDistance = beginDistance;else if (Math.PI / 2 <= endAngle && endAngle <= Math.PI * 3 / 2) currentDistance = endDistance;else currentDistance = Math.abs(orthOffset);\n\n if (currentDistance < distance) {\n distance = currentDistance;\n if (Math.PI / 2 <= beginAngle && beginAngle <= Math.PI * 3 / 2) result = beginPoint.clone();else if (Math.PI / 2 <= endAngle && endAngle <= Math.PI * 3 / 2) result = endPoint.clone();else {\n var round = Math.fround || Math.round;\n var lineAngle = this.getLineAngle(beginPoint, endPoint);\n var offsetX = round(Math.abs(orthOffset * Math.sin(lineAngle)));\n var offsetY = round(Math.abs(orthOffset * Math.cos(lineAngle)));\n var isAbove = point.y - beginPoint.y < round((point.x - beginPoint.x) * Math.tan(lineAngle));\n\n if (0 <= lineAngle && lineAngle <= Math.PI / 2) {\n offsetX *= isAbove ? -1 : 1;\n offsetY *= isAbove ? 1 : -1;\n } else if (Math.PI / 2 <= lineAngle && lineAngle <= Math.PI) {\n offsetX *= isAbove ? 1 : -1;\n offsetY *= isAbove ? 1 : -1;\n } else if (0 >= lineAngle && lineAngle >= -Math.PI / 2) {\n offsetX *= isAbove ? 1 : -1;\n offsetY *= isAbove ? 1 : -1;\n } else if (-Math.PI / 2 >= lineAngle && lineAngle >= -Math.PI) {\n offsetX *= isAbove ? -1 : 1;\n offsetY *= isAbove ? 1 : -1;\n }\n\n result = point.clone().offset(offsetX, offsetY);\n }\n }\n }\n\n return result;\n };\n\n GeometryUtils.getPathPositionByPoint = function (points, point, maxPositionCount) {\n if (maxPositionCount === void 0) {\n maxPositionCount = 100;\n }\n\n point = this.getPathPointByPoint(points, point);\n var length = this.getPathLength(points);\n var currentLength = 0;\n\n for (var i = 1; i < points.length; i++) {\n var beginPoint = points[i - 1];\n var endPoint = points[i];\n var lineLength = metrics_1.Metrics.euclideanDistance(endPoint, beginPoint);\n var angle = Math.atan((endPoint.y - beginPoint.y) / (endPoint.x - beginPoint.x));\n var round = Math.fround || Math.round;\n\n if (point.x === endPoint.x && point.x === beginPoint.x || point.y === endPoint.y && point.y === beginPoint.y || round(point.y - beginPoint.y) === round((point.x - beginPoint.x) * Math.tan(angle))) {\n if (Math.sin(angle) !== 0) currentLength += Math.abs((point.y - beginPoint.y) / Math.sin(angle));else currentLength += Math.abs(point.x - beginPoint.x);\n return Math.round(currentLength * maxPositionCount / length) / maxPositionCount;\n }\n\n currentLength += lineLength;\n }\n\n return 1;\n };\n\n GeometryUtils.arePointsEqual = function (points1, points2) {\n var count1 = points1.length;\n var count2 = points2.length;\n if (count1 !== count2) return false;\n\n for (var i = 0; i < count1; i++) {\n if (!points1[i].equals(points2[i])) return false;\n }\n\n return true;\n };\n\n GeometryUtils.getMaxRectangleEnscribedInEllipse = function (ellipseSize) {\n var dx = ellipseSize.width * Math.sqrt(2) / 2;\n var dy = ellipseSize.height * Math.sqrt(2) / 2;\n return new size_1.Size(dx, dy);\n };\n\n GeometryUtils.getEllipseByEnscribedRectangle = function (rectSize) {\n return new size_1.Size(2 * rectSize.width / Math.sqrt(2), 2 * rectSize.height / Math.sqrt(2));\n };\n\n return GeometryUtils;\n }();\n\n exports.GeometryUtils = GeometryUtils;\n\n var ObjectUtils =\n /** @class */\n function () {\n function ObjectUtils() {}\n\n ObjectUtils.cloneObject = function (source) {\n return source && Object.assign({}, source);\n };\n\n ObjectUtils.compareObjects = function (obj1, obj2) {\n if (obj1 === obj2) return true;\n if (typeof obj1 === \"object\" && typeof obj2 === \"object\") return this.isDeepEqual(obj1, obj2);\n return false;\n };\n\n ObjectUtils.isDeepEqual = function (obj1, obj2) {\n var props1 = obj1 ? Object.getOwnPropertyNames(obj1) : [];\n var props2 = obj2 ? Object.getOwnPropertyNames(obj2) : [];\n if (props1.length !== props2.length) return false;\n\n for (var i = 0; i < props1.length; i++) {\n var property = props1[i];\n\n switch (typeof obj1[property]) {\n case \"object\":\n {\n if (!this.isDeepEqual(obj1[property], obj2[property])) return false;\n break;\n }\n\n case \"number\":\n {\n if (!isNaN(obj1[property]) || !isNaN(obj2[property])) if (obj1[property] !== obj2[property]) return false;\n break;\n }\n\n default:\n {\n if (obj1[property] !== obj2[property]) return false;\n }\n }\n }\n\n return true;\n };\n\n return ObjectUtils;\n }();\n\n exports.ObjectUtils = ObjectUtils;\n\n var HtmlFocusUtils =\n /** @class */\n function () {\n function HtmlFocusUtils() {}\n\n HtmlFocusUtils.focusWithPreventScroll = function (element) {\n try {\n var isPreventScrollNotSupported = browser_1.Browser.Safari;\n var savedDocumentScrollPosition = isPreventScrollNotSupported && this.getHtmlScrollPosition();\n element.focus({\n preventScroll: true\n });\n\n if (isPreventScrollNotSupported) {\n var newDocumentScrollPosition = this.getHtmlScrollPosition();\n if (!ObjectUtils.compareObjects(savedDocumentScrollPosition, newDocumentScrollPosition)) this.setHtmlScrollPosition(savedDocumentScrollPosition);\n }\n } catch (e) {}\n };\n\n HtmlFocusUtils.getHtmlScrollPosition = function () {\n return {\n pos: this.getDocumentScrollPosition(window, document),\n iframePos: window.top !== window && this.getDocumentScrollPosition(window.top, window.top.document)\n };\n };\n\n HtmlFocusUtils.getDocumentScrollPosition = function (win, doc) {\n return {\n left: win.pageXOffset || doc.documentElement.scrollLeft || doc.body.scrollLeft,\n top: win.pageYOffset || doc.documentElement.scrollTop || doc.body.scrollTop\n };\n };\n\n HtmlFocusUtils.setHtmlScrollPosition = function (position) {\n this.setDocumentScrollPosition(document, position.pos);\n if (window.top !== window && position.iframePos) this.setDocumentScrollPosition(window.top.document, position.iframePos);\n };\n\n HtmlFocusUtils.setDocumentScrollPosition = function (doc, pos) {\n doc.documentElement.scrollTop = pos.top;\n doc.documentElement.scrollLeft = pos.left; // old Safari on iOS\n\n doc.body.scrollTop = pos.top;\n doc.body.scrollLeft = pos.left;\n };\n\n return HtmlFocusUtils;\n }();\n\n exports.HtmlFocusUtils = HtmlFocusUtils;\n /***/\n },\n /* 4 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ModelUtils = void 0;\n\n var unit_converter_1 = __webpack_require__(11);\n\n var metrics_1 = __webpack_require__(36);\n\n var point_1 = __webpack_require__(1);\n\n var rectangle_1 = __webpack_require__(12);\n\n var size_1 = __webpack_require__(2);\n\n var vector_1 = __webpack_require__(58);\n\n var math_1 = __webpack_require__(32);\n\n var Enums_1 = __webpack_require__(48);\n\n var AddConnectionHistoryItem_1 = __webpack_require__(49);\n\n var AddConnectorHistoryItem_1 = __webpack_require__(64);\n\n var AddConnectorPointHistoryItem_1 = __webpack_require__(188);\n\n var AddShapeHistoryItem_1 = __webpack_require__(53);\n\n var ChangeConnectorPointsHistoryItem_1 = __webpack_require__(86);\n\n var ChangeShapeParametersHistoryItem_1 = __webpack_require__(114);\n\n var DeleteConnectionHistoryItem_1 = __webpack_require__(65);\n\n var DeleteConnectorHistoryItem_1 = __webpack_require__(115);\n\n var DeleteShapeHistoryItem_1 = __webpack_require__(116);\n\n var InsertToContainerHistoryItem_1 = __webpack_require__(189);\n\n var MoveConnectorPointHistoryItem_1 = __webpack_require__(190);\n\n var MoveShapeHistoryItem_1 = __webpack_require__(191);\n\n var RemoveFromContainerHistoryItem_1 = __webpack_require__(192);\n\n var ResizeShapeHistoryItem_1 = __webpack_require__(117);\n\n var SetSelectionHistoryItem_1 = __webpack_require__(66);\n\n var ModelResizeHistoryItem_1 = __webpack_require__(193);\n\n var UpdatePositionsOnPageResizeHistoryItem_1 = __webpack_require__(194);\n\n var ChangeConnectorPropertyHistoryItem_1 = __webpack_require__(88);\n\n var ChangeConnectorTextHistoryItem_1 = __webpack_require__(67);\n\n var ChangeLockedHistoryItem_1 = __webpack_require__(118);\n\n var ChangeStyleHistoryItem_1 = __webpack_require__(89);\n\n var ChangeStyleTextHistoryItem_1 = __webpack_require__(68);\n\n var Graph_1 = __webpack_require__(69);\n\n var GraphInfo_1 = __webpack_require__(195);\n\n var Structures_1 = __webpack_require__(39);\n\n var Utils_1 = __webpack_require__(3);\n\n var Connector_1 = __webpack_require__(6);\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var ConnectorRenderPointsContext_1 = __webpack_require__(85);\n\n var Shape_1 = __webpack_require__(13);\n\n var ModelUtils =\n /** @class */\n function () {\n function ModelUtils() {}\n\n ModelUtils.setShapePosition = function (history, model, shape, newPosition) {\n if (!shape.position.equals(newPosition)) history.addAndRedo(new MoveShapeHistoryItem_1.MoveShapeHistoryItem(shape.key, newPosition));\n };\n\n ModelUtils.setShapeSize = function (history, model, shape, newPosition, newSize) {\n if (!shape.size.equals(newSize) || !shape.position.equals(newPosition)) history.addAndRedo(new ResizeShapeHistoryItem_1.ResizeShapeHistoryItem(shape.key, newPosition, newSize));\n };\n\n ModelUtils.addConnectorPoint = function (history, connectorKey, pointIndex, position) {\n history.addAndRedo(new AddConnectorPointHistoryItem_1.AddConnectorPointHistoryItem(connectorKey, pointIndex, position));\n };\n\n ModelUtils.deleteConnectorCustomPoints = function (history, connector) {\n if (connector.points.length > 2) {\n var oldContext = connector.createRenderPointsContext();\n if (connector.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Straight || !oldContext) history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ReplaceConnectorPointsHistoryItem(connector.key, [connector.points[0].clone(), connector.points[connector.points.length - 1].clone()]));else {\n var beginPoint = connector.points[0].clone();\n var lastPoint = connector.points[connector.points.length - 1].clone();\n history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ChangeConnectorPointsHistoryItem(connector.key, [beginPoint, lastPoint], new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext([new ConnectorRenderPoint_1.ConnectorRenderPoint(beginPoint.x, beginPoint.y, 0), new ConnectorRenderPoint_1.ConnectorRenderPoint(lastPoint.x, lastPoint.y, 1)], false, oldContext.actualRoutingMode)));\n }\n }\n };\n\n ModelUtils.deleteConnectorUnnecessaryPoints = function (history, connector) {\n var oldRenderPoints = connector.getRenderPoints(true).map(function (p) {\n return p.clone();\n });\n\n if (connector.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Straight) {\n var unnecessaryPoints = ModelUtils.createUnnecessaryRenderPoints(oldRenderPoints.filter(function (p) {\n return !p.skipped;\n }).map(function (p) {\n return p.clone();\n }), connector.skippedRenderPoints, function (removedPoint) {\n return ModelUtils.findFirstPointIndex(oldRenderPoints, function (p) {\n return p.equals(removedPoint);\n });\n });\n if (Object.keys(unnecessaryPoints).length) ModelUtils.replaceConnectorPoints(history, connector, unnecessaryPoints);\n } else {\n var newRenderPoints = oldRenderPoints.filter(function (p) {\n return !p.skipped;\n }).map(function (p) {\n return p.clone();\n });\n var unnecessaryPoints = ModelUtils.createUnnecessaryRightAngleRenderPoints(newRenderPoints, connector.skippedRenderPoints, function (removedPoint) {\n return ModelUtils.findFirstPointIndex(oldRenderPoints, function (p) {\n return p.equals(removedPoint);\n });\n });\n\n if (Object.keys(unnecessaryPoints).length) {\n var oldContext = connector.createRenderPointsContext();\n\n if (oldContext) {\n var newPoints = ModelUtils.createNecessaryPoints(connector.points.map(function (p) {\n return p.clone();\n }), unnecessaryPoints);\n var newRenderContext = new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext(ModelUtils.validateRenderPointIndexes(newPoints, newRenderPoints, 0), oldContext.lockCreateRenderPoints, oldContext.actualRoutingMode);\n history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ChangeConnectorPointsHistoryItem(connector.key, newPoints, newRenderContext));\n } else ModelUtils.replaceConnectorPoints(history, connector, unnecessaryPoints);\n }\n }\n };\n\n ModelUtils.replaceConnectorPoints = function (history, connector, unnecessaryPoints) {\n history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ReplaceConnectorPointsHistoryItem(connector.key, ModelUtils.createNecessaryPoints(connector.points.map(function (p) {\n return p.clone();\n }), unnecessaryPoints)));\n };\n\n ModelUtils.skipUnnecessaryRenderPoints = function (points) {\n var clonedPoints = points.map(function (p) {\n return p.clone();\n });\n ModelUtils.removeUnnecessaryRenderPoints(clonedPoints);\n points.forEach(function (p) {\n return p.skipped = clonedPoints.some(function (cp) {\n return cp.skipped && cp.equals(p);\n });\n });\n points[0].skipped = false;\n points[points.length - 1].skipped = false;\n };\n\n ModelUtils.skipUnnecessaryRightAngleRenderPoints = function (points) {\n var clonedPoints = points.map(function (p) {\n return p.clone();\n });\n ModelUtils.removeUnnecessaryRightAngleRenderPoints(clonedPoints);\n points.forEach(function (p) {\n return p.skipped = clonedPoints.some(function (cp) {\n return cp.skipped && cp.equals(p);\n });\n });\n points[0].skipped = false;\n points[points.length - 1].skipped = false;\n };\n\n ModelUtils.removeUnnecessaryRenderPoints = function (points) {\n Utils_1.GeometryUtils.removeUnnecessaryPoints(points, function (pt, index) {\n return ModelUtils.removeUnnecessaryPoint(points, pt, index);\n }, function (pt) {\n return pt !== undefined && !pt.skipped;\n });\n points[0].skipped = false;\n points[points.length - 1].skipped = false;\n };\n\n ModelUtils.removeUnnecessaryRightAngleRenderPoints = function (points) {\n Utils_1.GeometryUtils.removeUnnecessaryRightAnglePoints(points, function (p, index) {\n return ModelUtils.removeUnnecessaryPoint(points, p, index);\n }, function (p) {\n return p !== undefined && !p.skipped;\n });\n points[0].skipped = false;\n points[points.length - 1].skipped = false;\n };\n\n ModelUtils.createUnnecessaryRenderPoints = function (renderPointsWithoutSkipped, skippedRenderPoints, getPosition, predicate) {\n if (predicate === void 0) {\n predicate = function predicate(_) {\n return true;\n };\n }\n\n var result = {};\n Utils_1.GeometryUtils.removeUnnecessaryPoints(renderPointsWithoutSkipped, function (removedPoint, removedIndex) {\n return ModelUtils.collectNotSkippedRenderPoints(result, renderPointsWithoutSkipped, removedPoint, removedIndex, getPosition, predicate);\n });\n ModelUtils.collectSkippedRenderPoints(result, skippedRenderPoints, getPosition, predicate);\n return result;\n };\n\n ModelUtils.createUnnecessaryRightAngleRenderPoints = function (renderPointsWithoutSkipped, skippedRenderPoints, getPosition, predicate) {\n if (predicate === void 0) {\n predicate = function predicate(_) {\n return true;\n };\n }\n\n var result = {};\n Utils_1.GeometryUtils.removeUnnecessaryRightAnglePoints(renderPointsWithoutSkipped, function (removedPoint, removedIndex) {\n return ModelUtils.collectNotSkippedRenderPoints(result, renderPointsWithoutSkipped, removedPoint, removedIndex, getPosition, predicate);\n });\n ModelUtils.collectSkippedRenderPoints(result, skippedRenderPoints, getPosition, predicate);\n return result;\n };\n\n ModelUtils.createNecessaryPoints = function (points, unnecessaryPoints) {\n var _this = this;\n\n var result = [];\n var lastPointIndex = points.length - 1;\n points.forEach(function (p, index) {\n if (index === 0 || index === lastPointIndex || _this.isNecessaryPoint(p, index, unnecessaryPoints)) result.push(p.clone());\n });\n return result;\n };\n\n ModelUtils.isNecessaryPoint = function (point, pointIndex, unnecessaryPoints) {\n return !Object.keys(unnecessaryPoints).some(function (key) {\n var unnecessaryPoint = unnecessaryPoints[key];\n return unnecessaryPoint.pointIndex === pointIndex && Utils_1.GeometryUtils.areDuplicatedPoints(point, unnecessaryPoint);\n });\n };\n\n ModelUtils.collectSkippedRenderPoints = function (targetRenderPoints, skippedRenderPoints, getPosition, predicate) {\n if (predicate === void 0) {\n predicate = function predicate(_) {\n return true;\n };\n }\n\n skippedRenderPoints && skippedRenderPoints.forEach(function (skippedPoint) {\n if (predicate(skippedPoint)) {\n var positionIndex = getPosition(skippedPoint);\n if (targetRenderPoints[positionIndex] === undefined) targetRenderPoints[positionIndex] = skippedPoint;\n }\n });\n };\n\n ModelUtils.collectNotSkippedRenderPoints = function (targetRenderPoints, sourceRenderPoints, removedPoint, removedIndex, getPosition, predicate) {\n if (predicate === void 0) {\n predicate = function predicate(_) {\n return true;\n };\n }\n\n if (!predicate(removedPoint)) return false;\n var positionIndex = getPosition(removedPoint);\n\n if (targetRenderPoints[positionIndex] === undefined) {\n targetRenderPoints[positionIndex] = removedPoint;\n removedPoint.skipped = true;\n sourceRenderPoints.splice(removedIndex, 1);\n }\n\n return true;\n };\n\n ModelUtils.removeUnnecessaryPoint = function (points, point, removedIndex) {\n if (point.pointIndex === -1) {\n points.splice(removedIndex, 1);\n return true;\n }\n\n point.skipped = true;\n return false;\n };\n\n ModelUtils.validateRenderPointIndexes = function (points, renderPoints, startIndex) {\n var _this = this;\n\n var result = renderPoints.map(function (rp, i) {\n return new ConnectorRenderPoint_1.ConnectorRenderPoint(rp.x, rp.y, i >= startIndex && rp.pointIndex >= 0 ? _this.findFirstPointIndex(points, function (p) {\n return p.equals(rp);\n }) : rp.pointIndex, rp.skipped);\n });\n result[0].skipped = false;\n result[result.length - 1].skipped = false;\n return result;\n };\n\n ModelUtils.findFirstPointIndex = function (points, predicate) {\n if (!points || !predicate) return -1;\n\n for (var i = 0; i < points.length; i++) {\n if (predicate(points[i])) return i;\n }\n\n return -1;\n };\n\n ModelUtils.moveConnectorRightAnglePoints = function (history, connector, firstPoint, firstPointIndex, lastPoint, lastPointIndex) {\n if (!Utils_1.GeometryUtils.areDuplicatedPoints(connector.points[firstPointIndex], firstPoint) || !Utils_1.GeometryUtils.areDuplicatedPoints(connector.points[lastPointIndex], lastPoint)) history.addAndRedo(new MoveConnectorPointHistoryItem_1.MoveConnectorRightAnglePointsHistoryItem(connector.key, firstPointIndex, firstPoint, lastPointIndex, lastPoint));\n };\n\n ModelUtils.moveConnectorPoint = function (history, connector, pointIndex, newPosition) {\n if (!connector.points[pointIndex].equals(newPosition)) history.addAndRedo(new MoveConnectorPointHistoryItem_1.MoveConnectorPointHistoryItem(connector.key, pointIndex, newPosition));\n };\n\n ModelUtils.updateConnectorAttachedPoints = function (history, model, connector) {\n history.beginTransaction();\n var beginContainer = connector.beginItem && model.findItemCollapsedContainer(connector.beginItem);\n var beginAttachedToContainer = beginContainer && (!connector.endItem || !model.isContainerItem(beginContainer, connector.endItem));\n var endContainer = connector.endItem && model.findItemCollapsedContainer(connector.endItem);\n var endAttachedToContainer = endContainer && (!connector.beginItem || !model.isContainerItem(endContainer, connector.beginItem));\n if (beginAttachedToContainer) this.updateConnectorBeginPoint(history, connector, beginContainer, endAttachedToContainer && endContainer || connector.endItem, function (index) {\n return beginContainer.getConnectionPointIndexForItem(connector.beginItem, index);\n });else this.updateConnectorBeginPoint(history, connector, connector.beginItem, endAttachedToContainer && endContainer || connector.endItem);\n if (endAttachedToContainer) this.updateConnectorEndPoint(history, connector, endContainer, function (index) {\n return endContainer.getConnectionPointIndexForItem(connector.beginItem, index);\n });else this.updateConnectorEndPoint(history, connector, connector.endItem);\n history.endTransaction();\n };\n\n ModelUtils.updateConnectorBeginPoint = function (history, connector, beginItem, endItem, getConnectionPointIndex) {\n if (beginItem) {\n var connectionPointIndex = getConnectionPointIndex !== undefined ? getConnectionPointIndex(connector.beginConnectionPointIndex) : connector.beginConnectionPointIndex;\n var targetPoint = connector.points[1];\n if (endItem && connector.points.length === 2) if (connector.endConnectionPointIndex !== -1) targetPoint = endItem.getConnectionPointPosition(connector.endConnectionPointIndex, point_1.Point.zero());else targetPoint = endItem.rectangle.center;\n var newPoint = beginItem.getConnectionPointPosition(connectionPointIndex, targetPoint);\n this.moveConnectorPoint(history, connector, 0, newPoint.clone());\n }\n };\n\n ModelUtils.updateConnectorEndPoint = function (history, connector, endItem, getConnectionPointIndex) {\n if (endItem) {\n var connectionPointIndex = getConnectionPointIndex !== undefined ? getConnectionPointIndex(connector.endConnectionPointIndex) : connector.endConnectionPointIndex;\n var newPoint = endItem.getConnectionPointPosition(connectionPointIndex, connector.points[connector.points.length - 2]);\n this.moveConnectorPoint(history, connector, connector.points.length - 1, newPoint);\n }\n };\n\n ModelUtils.updateContainerConnectorsAttachedPoints = function (history, model, rootContainer, container) {\n var _this = this;\n\n if (container === void 0) {\n container = rootContainer;\n }\n\n history.beginTransaction();\n var children = model.getChildren(container);\n children.forEach(function (child) {\n if (child instanceof Shape_1.Shape) {\n child.attachedConnectors.forEach(function (connector) {\n var beginItemInContainer = connector.beginItem && model.isContainerItem(container, connector.beginItem);\n var endItemInContainer = connector.endItem && model.isContainerItem(container, connector.endItem);\n\n if (beginItemInContainer && !endItemInContainer) {\n var collapsedContainer = model.findItemTopCollapsedContainer(connector.beginItem);\n var endCollapsedContainer = connector.endItem && model.findItemTopCollapsedContainer(connector.endItem);\n if (!collapsedContainer) _this.updateConnectorBeginPoint(history, connector, connector.beginItem, endCollapsedContainer || connector.endItem);else _this.updateConnectorBeginPoint(history, connector, collapsedContainer, endCollapsedContainer || connector.endItem, function (index) {\n return rootContainer.getConnectionPointIndexForItem(connector.beginItem, index);\n });\n }\n\n if (endItemInContainer && !beginItemInContainer) {\n var collapsedContainer = model.findItemTopCollapsedContainer(connector.endItem);\n if (!collapsedContainer) _this.updateConnectorEndPoint(history, connector, connector.endItem);else _this.updateConnectorEndPoint(history, connector, collapsedContainer, function (index) {\n return rootContainer.getConnectionPointIndexForItem(connector.endItem, index);\n });\n }\n });\n\n _this.updateContainerConnectorsAttachedPoints(history, model, rootContainer, child);\n }\n });\n history.endTransaction();\n };\n\n ModelUtils.getConnectorsWithoutBeginItemInfo = function (model) {\n var connectors = model.findConnectorsWithoutBeginItem();\n return connectors.map(function (c) {\n return {\n connector: c,\n point: c.points[0].clone()\n };\n });\n };\n\n ModelUtils.getConnectorsWithoutEndItemInfo = function (model) {\n var connectors = model.findConnectorsWithoutEndItem();\n return connectors.map(function (c) {\n return {\n connector: c,\n point: c.points[c.points.length - 1].clone()\n };\n });\n };\n\n ModelUtils.updateShapeAttachedConnectors = function (history, model, shape) {\n var _this = this;\n\n shape.attachedConnectors.forEach(function (connector) {\n _this.removeConnectorIntermediatePoints(history, connector);\n\n _this.updateConnectorAttachedPoints(history, model, connector);\n });\n };\n\n ModelUtils.updateMovingShapeConnections = function (history, shape, beginPointsInfo, endPointsInfo, resetTargetCallback, updateTargetCallback, beforeAttachConnectorCallback) {\n var _this = this;\n\n resetTargetCallback();\n beginPointsInfo.forEach(function (pi) {\n var connectionPointIndex = _this.getMovingShapeConnectionPointIndex(shape, pi.point);\n\n if (shape.rectangle.containsPoint(pi.point) || connectionPointIndex > -1) {\n updateTargetCallback(shape, connectionPointIndex);\n if (connectionPointIndex !== pi.connector.beginConnectionPointIndex && pi.connector.beginItem) history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(pi.connector, Connector_1.ConnectorPosition.Begin));\n beforeAttachConnectorCallback(pi.connector);\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(pi.connector, shape, connectionPointIndex, Connector_1.ConnectorPosition.Begin));\n } else if (pi.connector.beginItem) {\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(pi.connector, Connector_1.ConnectorPosition.Begin));\n history.addAndRedo(new MoveConnectorPointHistoryItem_1.MoveConnectorPointHistoryItem(pi.connector.key, 0, pi.point));\n }\n });\n endPointsInfo.forEach(function (pi) {\n var connectionPointIndex = _this.getMovingShapeConnectionPointIndex(shape, pi.point);\n\n if (shape.rectangle.containsPoint(pi.point) || connectionPointIndex > -1) {\n updateTargetCallback(shape, connectionPointIndex);\n if (connectionPointIndex !== pi.connector.endConnectionPointIndex && pi.connector.endItem) history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(pi.connector, Connector_1.ConnectorPosition.End));\n beforeAttachConnectorCallback(pi.connector);\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(pi.connector, shape, connectionPointIndex, Connector_1.ConnectorPosition.End));\n } else if (pi.connector.endItem) {\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(pi.connector, Connector_1.ConnectorPosition.End));\n history.addAndRedo(new MoveConnectorPointHistoryItem_1.MoveConnectorPointHistoryItem(pi.connector.key, pi.connector.points.length - 1, pi.point));\n }\n });\n };\n\n ModelUtils.getMovingShapeConnectionPointIndex = function (shape, point) {\n var _this = this;\n\n var connectionPointIndex = -1;\n shape.getConnectionPoints().forEach(function (pt, index) {\n if (metrics_1.Metrics.euclideanDistance(point, pt) < _this.connectionPointActionSize) connectionPointIndex = index;\n });\n return connectionPointIndex;\n };\n\n ModelUtils.shouldRemoveConnectorIntermediatePoints = function (connector, shapes) {\n if (connector.properties.lineOption !== ConnectorProperties_1.ConnectorLineOption.Orthogonal || connector.points.length === 2 || !shapes || !shapes.length) return false;\n var index = 0;\n var shape;\n\n while (shape = shapes[index]) {\n if (this.isShapeIntersectConnectorCustomPoints(shape, connector)) return true;\n index++;\n }\n\n return false;\n };\n\n ModelUtils.removeConnectorIntermediatePoints = function (history, connector) {\n if (this.shouldRemoveConnectorIntermediatePoints(connector, [connector.beginItem, connector.endItem])) this.deleteConnectorCustomPoints(history, connector);\n };\n\n ModelUtils.isShapeIntersectConnectorCustomPoints = function (shape, connector) {\n if (!shape) return false;\n var customRenderPoints = connector.getCustomRenderPoints(true);\n if (!customRenderPoints.length) return false;\n var offset = Connector_1.Connector.minOffset - unit_converter_1.UnitConverter.pixelsToTwips(1);\n return Utils_1.GeometryUtils.areIntersectedSegments(Utils_1.GeometryUtils.createSegments(customRenderPoints), Utils_1.GeometryUtils.createSegmentsFromRectangle(shape.rectangle.clone().inflate(offset, offset)));\n };\n\n ModelUtils.getSnappedPos = function (model, gridSize, pos, isHorizontal) {\n var snapOffset = isHorizontal ? model.snapStartPoint.x : model.snapStartPoint.y;\n return Math.round((pos - snapOffset) / gridSize) * gridSize + snapOffset;\n };\n\n ModelUtils.tryUpdateModelRectangle = function (history, processPoints) {\n var offset = history.modelManipulator.getModelSizeUpdateOffset();\n\n if (!offset.isEmpty()) {\n history.addAndRedo(new ModelResizeHistoryItem_1.ModelResizeHistoryItem(offset));\n\n if (offset.left || offset.top) {\n history.addAndRedo(new UpdatePositionsOnPageResizeHistoryItem_1.UpdatePositionsOnPageResizeHistoryItem(new vector_1.Vector(offset.left, offset.top)));\n if (processPoints !== undefined) processPoints(offset.left, offset.top);\n }\n\n history.modelManipulator.raiseModelRectangleChanged(history.modelManipulator.model.getRectangle(true));\n }\n };\n\n ModelUtils.deleteItems = function (history, model, selection, items, deleteLocked) {\n history.beginTransaction();\n var itemsHash = {};\n items.forEach(function (item) {\n return itemsHash[item.key] = item;\n });\n var selectionKeys = selection.getKeys().filter(function (key) {\n return !itemsHash[key];\n });\n history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(selection, selectionKeys));\n this.deleteItemsCore(history, model, items, deleteLocked);\n this.tryUpdateModelRectangle(history);\n history.endTransaction();\n };\n\n ModelUtils.deleteItemsCore = function (history, model, items, deleteLocked) {\n var _this = this;\n\n items.sort(function (a, b) {\n var v1 = a instanceof Connector_1.Connector ? 0 : 1;\n var v2 = b instanceof Connector_1.Connector ? 0 : 1;\n return v1 - v2;\n });\n items.forEach(function (item) {\n if (item.container) _this.removeFromContainer(history, model, item);\n\n if (item instanceof Shape_1.Shape) {\n var children = model.getChildren(item);\n\n if (children.length) {\n children.forEach(function (child) {\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(child));\n\n _this.updateAttachedConnectorsContainer(history, model, child);\n });\n\n _this.deleteItemsCore(history, model, children.filter(function (child) {\n return !child.locked || deleteLocked;\n }), deleteLocked);\n }\n\n if (model.findItem(item.key)) _this.deleteShape(history, item);\n }\n\n if (item instanceof Connector_1.Connector) if (model.findItem(item.key)) _this.deleteConnector(history, item);\n });\n };\n\n ModelUtils.detachConnectors = function (history, shape) {\n history.beginTransaction();\n\n while (shape.attachedConnectors.length > 0) {\n var connector = shape.attachedConnectors[0];\n history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, connector.beginItem === shape ? Connector_1.ConnectorPosition.Begin : Connector_1.ConnectorPosition.End));\n }\n\n history.endTransaction();\n };\n\n ModelUtils.deleteShape = function (history, shape) {\n var allowed = history.modelManipulator.permissionsProvider.canDeleteItems([shape]);\n history.beginTransaction();\n this.detachConnectors(history, shape);\n history.addAndRedo(new DeleteShapeHistoryItem_1.DeleteShapeHistoryItem(shape.key, allowed));\n history.endTransaction();\n };\n\n ModelUtils.deleteConnector = function (history, connector) {\n history.beginTransaction();\n if (connector.beginItem) history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, Connector_1.ConnectorPosition.Begin));\n if (connector.endItem) history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, Connector_1.ConnectorPosition.End));\n history.addAndRedo(new DeleteConnectorHistoryItem_1.DeleteConnectorHistoryItem(connector.key));\n history.endTransaction();\n };\n\n ModelUtils.deleteAllItems = function (history, model, selection) {\n this.deleteItems(history, model, selection, model.items.slice(), true);\n };\n\n ModelUtils.deleteSelection = function (history, model, selection) {\n this.deleteItems(history, model, selection, selection.getSelectedItems());\n };\n\n ModelUtils.changeSelectionLocked = function (history, model, selection, locked) {\n history.beginTransaction();\n var items = selection.getSelectedItems(true);\n items.forEach(function (item) {\n history.addAndRedo(new ChangeLockedHistoryItem_1.ChangeLockedHistoryItem(item, locked));\n });\n ModelUtils.updateSelection(history, selection);\n history.endTransaction();\n };\n\n ModelUtils.copyStylesToItem = function (history, model, fromItem, newItemKey) {\n var toItem = model.findItem(newItemKey);\n fromItem.styleText.forEach(function (propertyName) {\n if (fromItem.styleText[propertyName] !== toItem.styleText[propertyName]) history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(newItemKey, propertyName, fromItem.styleText[propertyName]));\n });\n fromItem.style.forEach(function (propertyName) {\n if (fromItem.style[propertyName] !== toItem.style[propertyName]) history.addAndRedo(new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(newItemKey, propertyName, fromItem.style[propertyName]));\n });\n }; // Selection\n\n\n ModelUtils.updateSelection = function (history, selection) {\n history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(selection, selection.getKeys(), true));\n }; // Cloning\n\n\n ModelUtils.cloneShapeToOffset = function (history, model, shape, dx, dy) {\n history.beginTransaction();\n var newPosition = shape.position.clone().offset(dx, dy);\n var addHistoryItem = new AddShapeHistoryItem_1.AddShapeHistoryItem(shape.description, newPosition, shape.text);\n history.addAndRedo(addHistoryItem);\n var newKey = addHistoryItem.shapeKey;\n history.addAndRedo(new ResizeShapeHistoryItem_1.ResizeShapeHistoryItem(newKey, newPosition, shape.size.clone()));\n history.addAndRedo(new ChangeShapeParametersHistoryItem_1.ChangeShapeParametersHistoryItem(newKey, shape.parameters.clone()));\n this.copyStylesToItem(history, model, shape, newKey);\n history.endTransaction();\n return newKey;\n };\n\n ModelUtils.applyOffsetToConnectorRenderPointsContext = function (context, dx, dy) {\n return context && context.renderPoints ? new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext(context.renderPoints.map(function (p) {\n return p.clone().offset(dx, dy);\n }), true, context.actualRoutingMode) : undefined;\n };\n\n ModelUtils.cloneConnectorToOffset = function (history, model, connector, beginItemKey, endItemKey, dx, dy) {\n history.beginTransaction();\n var newPoints = connector.points.map(function (p) {\n return p.clone().offset(dx, dy);\n });\n var addHistoryItem = new AddConnectorHistoryItem_1.AddConnectorHistoryItem(newPoints, undefined, this.applyOffsetToConnectorRenderPointsContext(connector.createRenderPointsContext(), dx, dy));\n history.addAndRedo(addHistoryItem);\n var newKey = addHistoryItem.connectorKey;\n var newConnector = model.findConnector(newKey);\n connector.properties.forEach(function (propertyName) {\n if (connector.properties[propertyName] !== newConnector.properties[propertyName]) history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(newKey, propertyName, connector.properties[propertyName]));\n });\n\n if (beginItemKey) {\n var from = model.findShape(beginItemKey);\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(newConnector, from, connector.beginConnectionPointIndex, Connector_1.ConnectorPosition.Begin));\n }\n\n if (endItemKey) {\n var to = model.findShape(endItemKey);\n history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(newConnector, to, connector.endConnectionPointIndex, Connector_1.ConnectorPosition.End));\n }\n\n var newTexts = connector.texts.clone();\n newTexts.forEach(function (connectorText) {\n history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(newConnector, connectorText.position, connectorText.value));\n });\n this.copyStylesToItem(history, model, connector, newKey);\n history.endTransaction();\n return newKey;\n };\n\n ModelUtils.cloneSelectionToOffset = function (history, model, onItemAdded, selection, dx, dy) {\n var _this = this;\n\n history.beginTransaction();\n var newShapes = {};\n var ids = [];\n selection.getSelectedShapes().forEach(function (shape) {\n var newKey = _this.cloneShapeToOffset(history, model, shape, dx, dy);\n\n newShapes[shape.key] = newKey;\n ids.push(newKey);\n if (onItemAdded) onItemAdded(newKey);\n });\n selection.getSelectedConnectors().forEach(function (connector) {\n var beginItemKey = connector.beginItem ? newShapes[connector.beginItem.key] : null;\n var endItemKey = connector.endItem ? newShapes[connector.endItem.key] : null;\n\n var newKey = _this.cloneConnectorToOffset(history, model, connector, beginItemKey, endItemKey, dx, dy);\n\n ids.push(newKey);\n if (onItemAdded) onItemAdded(newKey);\n });\n history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(selection, ids));\n ModelUtils.tryUpdateModelRectangle(history);\n history.endTransaction();\n }; // Containers\n\n\n ModelUtils.findContainerByEventKey = function (model, selection, key) {\n var container = model.findContainer(key);\n if (container && !container.isLocked) return container;else {\n var shape = model.findShape(key);\n if (shape && shape.container && !selection.hasKey(shape.key)) return ModelUtils.findContainerByEventKey(model, selection, shape.container.key);\n }\n };\n\n ModelUtils.canInsertToContainer = function (model, item, container) {\n if (item === container) return false;\n if (item instanceof Shape_1.Shape) if (model.findChild(item, container.key)) return false;\n return true;\n };\n\n ModelUtils.canInsertSelectionToContainer = function (model, selection, container) {\n var result = true;\n selection.getSelectedItems().forEach(function (item) {\n if (item === container) {\n result = false;\n return;\n }\n\n if (item instanceof Shape_1.Shape) if (model.findChild(item, container.key)) {\n result = false;\n return;\n }\n });\n return result;\n };\n\n ModelUtils.insertToContainer = function (history, model, item, container) {\n if (!container.enableChildren) throw Error(\"Inpossible to add children to non-container shape.\");\n if (!this.canInsertToContainer(model, item, container)) return;\n var oldContainer = item.container;\n\n if (oldContainer !== container) {\n history.beginTransaction();\n\n if (oldContainer) {\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(item));\n item.attachedConnectors.forEach(function (connector) {\n if (connector.container) history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(connector));\n });\n }\n\n history.addAndRedo(new InsertToContainerHistoryItem_1.InsertToContainerHistoryItem(item, container));\n this.updateAttachedConnectorsContainer(history, model, item);\n history.endTransaction();\n }\n };\n\n ModelUtils.removeFromContainer = function (history, model, item) {\n if (item.container) {\n history.beginTransaction();\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(item));\n this.updateAttachedConnectorsContainer(history, model, item);\n history.endTransaction();\n }\n };\n\n ModelUtils.insertSelectionToContainer = function (history, model, selection, container) {\n var _this = this;\n\n history.beginTransaction();\n var selectedItems = selection.getSelectedItems();\n var items = selectedItems.filter(function (item) {\n return !item.container || selectedItems.indexOf(item.container) === -1;\n });\n items.forEach(function (item) {\n _this.insertToContainer(history, model, item, container);\n });\n history.endTransaction();\n };\n\n ModelUtils.removeSelectionFromContainer = function (history, model, selection) {\n var _this = this;\n\n history.beginTransaction();\n selection.getSelectedItems().forEach(function (item) {\n if (item.container && !selection.hasKey(item.container.key)) {\n history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(item));\n\n _this.updateAttachedConnectorsContainer(history, model, item);\n }\n });\n history.endTransaction();\n };\n\n ModelUtils.getConnectorContainer = function (connector) {\n if (connector.beginItem && connector.endItem) {\n var beginItemContainers = {};\n var containerForBeginItem = connector.beginItem.container;\n\n while (containerForBeginItem) {\n beginItemContainers[containerForBeginItem.key] = true;\n containerForBeginItem = containerForBeginItem.container;\n }\n\n var containerForEndItem = connector.endItem.container;\n\n while (containerForEndItem) {\n if (beginItemContainers[containerForEndItem.key] !== undefined) return containerForEndItem;\n containerForEndItem = containerForEndItem.container;\n }\n }\n };\n\n ModelUtils.updateAttachedConnectorsContainer = function (history, model, item) {\n var _this = this;\n\n history.beginTransaction();\n item.attachedConnectors.forEach(function (connector) {\n _this.updateConnectorContainer(history, model, connector);\n });\n history.endTransaction();\n };\n\n ModelUtils.updateConnectorContainer = function (history, model, connector) {\n var container = this.getConnectorContainer(connector);\n if (container) history.addAndRedo(new InsertToContainerHistoryItem_1.InsertToContainerHistoryItem(connector, container));else if (connector.container) history.addAndRedo(new RemoveFromContainerHistoryItem_1.RemoveFromContainerHistoryItem(connector));\n };\n\n ModelUtils.updateNewShapeProperties = function (history, selection, itemKey) {\n var style = selection.inputPosition.getDefaultStyle();\n style.forEach(function (propertyName) {\n history.addAndRedo(new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultStylePropertyValue(propertyName)));\n });\n var textStyle = selection.inputPosition.getDefaultTextStyle();\n textStyle.forEach(function (propertyName) {\n history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultTextStylePropertyValue(propertyName)));\n });\n };\n\n ModelUtils.updateNewConnectorProperties = function (history, selection, itemKey) {\n var connectorProperties = selection.inputPosition.getDefaultConnectorProperties();\n connectorProperties.forEach(function (propertyName) {\n history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultConnectorPropertyValue(propertyName)));\n });\n var style = selection.inputPosition.getDefaultStyle();\n style.forEach(function (propertyName) {\n history.addAndRedo(new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultStylePropertyValue(propertyName)));\n });\n var textStyle = selection.inputPosition.getDefaultTextStyle();\n textStyle.forEach(function (propertyName) {\n history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(itemKey, propertyName, selection.inputPosition.getDefaultTextStylePropertyValue(propertyName)));\n });\n }; // Layout\n\n\n ModelUtils.applyLayout = function (history, model, container, graph, layout, nonGraphItems, settings, snapToGrid, gridSize, skipPointIndices) {\n history.beginTransaction();\n var occupiedRectangles = this.getOccupiedRectangles(nonGraphItems, container);\n layout = this.offsetLayoutToFreeSpace(layout, container && container.clientRectangle, occupiedRectangles, settings.containerPadding);\n if (snapToGrid) this.adjustLayoutToSnapGrid(model, layout, gridSize);\n if (container) this.resizeContainerOnLayout(history, model, layout, container, settings.containerPadding);\n this.applyLayoutToNodes(history, model, layout, graph.edges.map(function (e) {\n return model.findConnector(e.key);\n }));\n this.applyLayoutToConnectors(history, model, layout, graph.edges.map(function (e) {\n return model.findConnector(e.key);\n }), skipPointIndices);\n history.endTransaction();\n return layout.getRectangle(true);\n };\n\n ModelUtils.getNonGraphItems = function (model, container, nodeKeyMap, shapes, connectors) {\n var allItems = container ? model.getChildren(container) : model.items.filter(function (item) {\n return !item.container;\n });\n return allItems.filter(function (item) {\n if (item instanceof Connector_1.Connector) return (!item.beginItem || !nodeKeyMap[item.beginItem.key]) && (!item.endItem || !nodeKeyMap[item.endItem.key]) && connectors.indexOf(item) === -1;\n if (item instanceof Shape_1.Shape) return !nodeKeyMap[item.key] && shapes.indexOf(item) === -1;\n });\n };\n\n ModelUtils.getOccupiedRectangles = function (nonGraphItems, container) {\n var occupiedRectangles = nonGraphItems.map(function (i) {\n return i.rectangle;\n });\n\n if (container && occupiedRectangles.length) {\n var rect = container.clientRectangle;\n occupiedRectangles.push(new rectangle_1.Rectangle(rect.right, rect.y, 1, 1));\n occupiedRectangles.push(new rectangle_1.Rectangle(rect.right, rect.bottom, 1, 1));\n }\n\n return occupiedRectangles;\n };\n\n ModelUtils.offsetLayoutToFreeSpace = function (layout, containerRect, occupiedRectangles, spacing) {\n var graphItemRect = layout.getRectangle(true);\n var freePoint = Utils_1.GeometryUtils.findFreeSpace(occupiedRectangles, graphItemRect.createSize().offset(spacing, spacing).nonNegativeSize(), false, containerRect);\n\n if (freePoint) {\n var x = freePoint.x + spacing;\n var y = freePoint.y + spacing;\n return layout.offsetNodes(x, y);\n }\n\n var maxX = occupiedRectangles && occupiedRectangles.length ? occupiedRectangles.reduce(function (max, rect) {\n return rect.right > max ? rect.right : max;\n }, 0) : containerRect ? containerRect.x : 0;\n var minY = containerRect ? containerRect.y : Math.max(0, graphItemRect.y);\n return layout.offsetNodes(maxX + spacing, minY + spacing);\n };\n\n ModelUtils.resizeContainerOnLayout = function (history, model, layout, container, spacing) {\n var layoutRect = layout.getRectangle(true);\n var nonLayoutRectangles = container.children.filter(function (item) {\n if (item instanceof Shape_1.Shape) return layout.nodeKeys.indexOf(item.key) === -1;\n if (item instanceof Connector_1.Connector && item.beginItem && item.endItem) return layout.nodeKeys.indexOf(item.beginItem.key) === -1 && layout.nodeKeys.indexOf(item.endItem.key) === -1;\n return false;\n }).map(function (item) {\n return item.rectangle;\n });\n var right = nonLayoutRectangles.map(function (rect) {\n return rect.right;\n }).reduce(function (prev, cur) {\n return Math.max(prev, cur);\n }, layoutRect.right);\n var bottom = nonLayoutRectangles.map(function (rect) {\n return rect.bottom;\n }).reduce(function (prev, cur) {\n return Math.max(prev, cur);\n }, layoutRect.bottom);\n var width = container.rectangle.width + right + spacing - container.rectangle.right;\n var height = container.rectangle.height + bottom + spacing - container.rectangle.bottom;\n ModelUtils.setShapeSize(history, model, container, container.position, new size_1.Size(width, height));\n ModelUtils.updateShapeAttachedConnectors(history, model, container);\n };\n\n ModelUtils.applyLayoutToNodes = function (history, model, layout, connectors) {\n var _this = this;\n\n var connectorsSet = connectors.reduce(function (acc, c) {\n return acc[c.key] = true && acc;\n }, {});\n layout.forEachNode(function (nl, nk) {\n var shape = model.findShape(nk);\n\n _this.applyLayoutToNode(history, model, shape, nl.position, connectorsSet);\n });\n };\n\n ModelUtils.applyLayoutToNode = function (history, model, shape, position, connectorsSet) {\n var _this = this;\n\n var delta = position.clone().offset(-shape.position.x, -shape.position.y);\n ModelUtils.setShapePosition(history, model, shape, position);\n\n if (delta.x !== 0 || delta.y !== 0) {\n shape.attachedConnectors.filter(function (c) {\n return !connectorsSet[c.key];\n }).forEach(function (connector) {\n _this.updateConnectorAttachedPoints(history, model, connector);\n\n var beginPointIndex = connector.beginItem ? 1 : 0;\n var endPointIndex = connector.endItem ? connector.points.length - 2 : connector.points.length - 1;\n\n for (var i = beginPointIndex; i <= endPointIndex; i++) {\n _this.moveConnectorPoint(history, connector, i, connector.points[i].offset(delta.x, delta.y));\n }\n });\n model.getChildren(shape).forEach(function (child) {\n if (child instanceof Shape_1.Shape) {\n var childPosition = child.position.clone().offset(delta.x, delta.y);\n\n _this.applyLayoutToNode(history, model, child, childPosition, connectorsSet);\n }\n });\n }\n };\n\n ModelUtils.applyLayoutToConnectors = function (history, model, layout, connectors, skipPointIndices) {\n var _this = this;\n\n connectors.filter(function (c) {\n return c.beginItem || c.endItem;\n }).forEach(function (connector) {\n var edgeLayout = layout.edgeToPosition[connector.key];\n\n if (connector.beginItem && connector.endItem && !skipPointIndices && edgeLayout) {\n var beginIndex = connector.beginItem.getConnectionPointIndexForSide(edgeLayout.beginIndex);\n if (beginIndex !== connector.beginConnectionPointIndex) history.addAndRedo(new AddConnectionHistoryItem_1.SetConnectionPointIndexHistoryItem(connector, beginIndex, Connector_1.ConnectorPosition.Begin));\n var endIndex = connector.endItem.getConnectionPointIndexForSide(edgeLayout.endIndex);\n if (endIndex !== connector.endConnectionPointIndex) history.addAndRedo(new AddConnectionHistoryItem_1.SetConnectionPointIndexHistoryItem(connector, endIndex, Connector_1.ConnectorPosition.End));\n }\n\n _this.updateConnectorAttachedPoints(history, model, connector);\n\n if (edgeLayout) _this.deleteConnectorCustomPoints(history, connector);\n });\n };\n\n ModelUtils.adjustLayoutToSnapGrid = function (model, layout, gridSize) {\n var _this = this;\n\n layout.nodeKeys.forEach(function (key) {\n layout.nodeToLayout[key].position.x = _this.getSnappedPos(model, gridSize, layout.nodeToLayout[key].position.x, true);\n layout.nodeToLayout[key].position.y = _this.getSnappedPos(model, gridSize, layout.nodeToLayout[key].position.y, false);\n });\n };\n\n ModelUtils.getGraphInfoByItems = function (model, shapes, connectors, isDatabinding) {\n if (isDatabinding === void 0) {\n isDatabinding = true;\n }\n\n var itemsByContainerKey = {};\n var items = [].concat(shapes).concat(connectors);\n items.forEach(function (item) {\n var containerKey = item.container && item.container.key;\n if (!itemsByContainerKey[containerKey]) itemsByContainerKey[containerKey] = [];\n itemsByContainerKey[containerKey].push(item);\n });\n var result = [];\n\n for (var key in itemsByContainerKey) {\n if (!Object.prototype.hasOwnProperty.call(itemsByContainerKey, key)) continue;\n var container = key && model.findContainer(key);\n\n if (!container || container.expanded && !model.findItemCollapsedContainer(container)) {\n var containerKey = container && container.key;\n var graph = this.getGraphByItems(model, itemsByContainerKey[key], containerKey, !isDatabinding);\n var allowCreateInfo = false;\n if (graph.nodes.length > 1) allowCreateInfo = true;else if (graph.nodes.length) if (isDatabinding) allowCreateInfo = true;else if (container && itemsByContainerKey[container.container && container.container.key]) allowCreateInfo = true;\n if (allowCreateInfo) result.push(new GraphInfo_1.GraphInfo(container, graph));\n }\n }\n\n return result.sort(function (a, b) {\n return b.level - a.level;\n });\n };\n\n ModelUtils.getGraphByItems = function (model, items, containerKey, skipLocked) {\n var _this = this;\n\n var graph = new Graph_1.Graph([], []);\n var knownIds = {};\n items.forEach(function (item) {\n _this.extendByConnectedComponents(item, graph, containerKey, knownIds, skipLocked);\n });\n graph.nodes.sort(function (a, b) {\n return model.getItemIndex(model.findItem(a)) - model.getItemIndex(model.findItem(b));\n });\n graph.edges.sort(function (a, b) {\n return model.getItemIndex(model.findItem(a.key)) - model.getItemIndex(model.findItem(b.key));\n });\n graph.edges = graph.edges.filter(function (e) {\n return graph.getNode(e.from) && graph.getNode(e.to);\n });\n return graph;\n };\n\n ModelUtils.extendByConnectedComponents = function (item, graph, containerKey, knownIds, skipLocked) {\n var _this = this;\n\n if (!item || skipLocked && item.locked || knownIds[item.key]) return;\n knownIds[item.key] = true;\n\n if (item instanceof Connector_1.Connector && (item.container && item.container.key) === containerKey && item.beginItem && (!item.beginItem.locked || !skipLocked) && item.endItem && (!item.endItem.locked || !skipLocked) && item.beginItem !== item.endItem) {\n graph.addEdge(new Structures_1.Edge(item.key, item.beginItem && item.beginItem.key, item.endItem && item.endItem.key));\n this.extendByConnectedComponents(item.beginItem, graph, containerKey, knownIds, skipLocked);\n this.extendByConnectedComponents(item.endItem, graph, containerKey, knownIds, skipLocked);\n } else if (item instanceof Shape_1.Shape && (item.container && item.container.key) === containerKey) {\n graph.addNode(item);\n item.attachedConnectors.forEach(function (c) {\n return _this.extendByConnectedComponents(c, graph, containerKey, knownIds, skipLocked);\n });\n }\n }; // Units\n\n\n ModelUtils.getlUnitValue = function (units, twipsValue) {\n switch (units) {\n case Enums_1.DiagramUnit.Cm:\n return unit_converter_1.UnitConverter.twipsToCentimeters(twipsValue);\n\n case Enums_1.DiagramUnit.In:\n return unit_converter_1.UnitConverter.twipsToInches(twipsValue);\n\n case Enums_1.DiagramUnit.Px:\n return unit_converter_1.UnitConverter.twipsToPixels(twipsValue);\n }\n };\n\n ModelUtils.getUnitText = function (units, unitItems, formatUnit, twipsValue, fractionDigits) {\n if (fractionDigits === void 0) {\n fractionDigits = 2;\n }\n\n var unitItemText = unitItems[units] ? \" \" + unitItems[units] : \"\";\n var unitValue = this.getlUnitValue(units, twipsValue);\n\n switch (units) {\n case Enums_1.DiagramUnit.Cm:\n return formatUnit(+unitValue.toFixed(fractionDigits)) + unitItemText;\n\n case Enums_1.DiagramUnit.In:\n return formatUnit(+unitValue.toFixed(fractionDigits)) + unitItemText;\n\n case Enums_1.DiagramUnit.Px:\n return formatUnit(+unitValue.toFixed(0)) + unitItemText;\n }\n };\n\n ModelUtils.getTwipsValue = function (units, value) {\n switch (units) {\n case Enums_1.DiagramUnit.Cm:\n return unit_converter_1.UnitConverter.centimetersToTwips(value);\n\n case Enums_1.DiagramUnit.In:\n return unit_converter_1.UnitConverter.inchesToTwips(value);\n\n case Enums_1.DiagramUnit.Px:\n return unit_converter_1.UnitConverter.pixelsToTwips(value);\n }\n };\n\n ModelUtils.getGuidItemKey = function () {\n return math_1.MathUtils.generateGuid();\n };\n\n ModelUtils.createSelectedItems = function (selection) {\n var result = {};\n selection.getSelectedItems(true).forEach(function (i) {\n return result[i.key] = i;\n });\n return result;\n };\n\n ModelUtils.canMoveConnector = function (selectedItems, connector) {\n var beginItem = connector.beginItem;\n var endItem = connector.endItem;\n if (!beginItem && !endItem) return !connector.isLocked;\n if (!selectedItems[connector.key]) return false;\n if (beginItem === endItem) return !!selectedItems[beginItem.key];\n if (!beginItem) return !!selectedItems[endItem.key];\n if (!endItem) return !!selectedItems[beginItem.key];\n return !!selectedItems[beginItem.key] && !!selectedItems[endItem.key];\n };\n\n ModelUtils.createRectangle = function (items) {\n return Utils_1.GeometryUtils.getCommonRectangle(items.map(function (i) {\n return i.rectangle;\n }));\n };\n\n ModelUtils.connectionPointActionSize = unit_converter_1.UnitConverter.pixelsToTwips(8);\n return ModelUtils;\n }();\n\n exports.ModelUtils = ModelUtils;\n /***/\n },\n /* 5 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PathPrimitiveClosePathCommand = exports.PathPrimitiveArcToCommand = exports.PathPrimitiveQuadraticCurveToCommand = exports.PathPrimitiveCubicCurveToCommand = exports.PathPrimitiveLineToCommand = exports.PathPrimitiveMoveToCommand = exports.PathPrimitiveCommand = exports.PathPrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var PrimitiveObject_1 = __webpack_require__(111);\n\n var PathPrimitive =\n /** @class */\n function (_super) {\n __extends(PathPrimitive, _super);\n\n function PathPrimitive(commands, style, className, clipPathId, onApplyProperties) {\n var _this = _super.call(this, style, className, clipPathId, onApplyProperties) || this;\n\n _this.commands = commands.map(function (command) {\n command.style = style;\n return command;\n });\n return _this;\n }\n\n PathPrimitive.prototype.createMainElement = function () {\n return document.createElementNS(RenderHelper_1.svgNS, \"path\");\n };\n\n PathPrimitive.prototype.applyElementProperties = function (element, measurer) {\n element.setAttribute(\"d\", this.commands.map(function (c) {\n return c.toString();\n }).join(\" \"));\n this.setPositionCorrectionAttribute(element);\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n return PathPrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.PathPrimitive = PathPrimitive;\n\n var PathPrimitiveCommand =\n /** @class */\n function (_super) {\n __extends(PathPrimitiveCommand, _super);\n\n function PathPrimitiveCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n return PathPrimitiveCommand;\n }(PrimitiveObject_1.PrimitiveObject);\n\n exports.PathPrimitiveCommand = PathPrimitiveCommand;\n\n var PathPrimitiveMoveToCommand =\n /** @class */\n function (_super) {\n __extends(PathPrimitiveMoveToCommand, _super);\n\n function PathPrimitiveMoveToCommand(x, y) {\n var _this = _super.call(this) || this;\n\n _this.x = x;\n _this.y = y;\n return _this;\n }\n\n PathPrimitiveMoveToCommand.prototype.toString = function () {\n return \"M \" + this.getUnitVaue(this.x) + \" \" + this.getUnitVaue(this.y);\n };\n\n PathPrimitiveMoveToCommand.fromPoint = function (point) {\n return new PathPrimitiveMoveToCommand(point.x, point.y);\n };\n\n return PathPrimitiveMoveToCommand;\n }(PathPrimitiveCommand);\n\n exports.PathPrimitiveMoveToCommand = PathPrimitiveMoveToCommand;\n\n var PathPrimitiveLineToCommand =\n /** @class */\n function (_super) {\n __extends(PathPrimitiveLineToCommand, _super);\n\n function PathPrimitiveLineToCommand(x, y) {\n var _this = _super.call(this) || this;\n\n _this.x = x;\n _this.y = y;\n return _this;\n }\n\n PathPrimitiveLineToCommand.prototype.toString = function () {\n return \"L \" + this.getUnitVaue(this.x) + \" \" + this.getUnitVaue(this.y);\n };\n\n PathPrimitiveLineToCommand.fromPoint = function (point) {\n return new PathPrimitiveLineToCommand(point.x, point.y);\n };\n\n return PathPrimitiveLineToCommand;\n }(PathPrimitiveCommand);\n\n exports.PathPrimitiveLineToCommand = PathPrimitiveLineToCommand;\n\n var PathPrimitiveCubicCurveToCommand =\n /** @class */\n function (_super) {\n __extends(PathPrimitiveCubicCurveToCommand, _super);\n\n function PathPrimitiveCubicCurveToCommand(x1, y1, x2, y2, x3, y3) {\n var _this = _super.call(this) || this;\n\n _this.x1 = x1;\n _this.y1 = y1;\n _this.x2 = x2;\n _this.y2 = y2;\n _this.x3 = x3;\n _this.y3 = y3;\n return _this;\n }\n\n PathPrimitiveCubicCurveToCommand.prototype.toString = function () {\n return \"C \" + this.getUnitVaue(this.x1) + \" \" + this.getUnitVaue(this.y1) + \",\" + this.getUnitVaue(this.x2) + \" \" + this.getUnitVaue(this.y2) + \",\" + this.getUnitVaue(this.x3) + \" \" + this.getUnitVaue(this.y3);\n };\n\n return PathPrimitiveCubicCurveToCommand;\n }(PathPrimitiveCommand);\n\n exports.PathPrimitiveCubicCurveToCommand = PathPrimitiveCubicCurveToCommand;\n\n var PathPrimitiveQuadraticCurveToCommand =\n /** @class */\n function (_super) {\n __extends(PathPrimitiveQuadraticCurveToCommand, _super);\n\n function PathPrimitiveQuadraticCurveToCommand(x1, y1, x2, y2) {\n var _this = _super.call(this) || this;\n\n _this.x1 = x1;\n _this.y1 = y1;\n _this.x2 = x2;\n _this.y2 = y2;\n return _this;\n }\n\n PathPrimitiveQuadraticCurveToCommand.prototype.toString = function () {\n return \"Q \" + this.getUnitVaue(this.x1) + \" \" + this.getUnitVaue(this.y1) + \",\" + this.getUnitVaue(this.x2) + \" \" + this.getUnitVaue(this.y2);\n };\n\n return PathPrimitiveQuadraticCurveToCommand;\n }(PathPrimitiveCommand);\n\n exports.PathPrimitiveQuadraticCurveToCommand = PathPrimitiveQuadraticCurveToCommand;\n\n var PathPrimitiveArcToCommand =\n /** @class */\n function (_super) {\n __extends(PathPrimitiveArcToCommand, _super);\n\n function PathPrimitiveArcToCommand(rx, ry, xAxisRotation, largeArcFlag, sweepFag, x, y) {\n var _this = _super.call(this) || this;\n\n _this.rx = rx;\n _this.ry = ry;\n _this.xAxisRotation = xAxisRotation;\n _this.largeArcFlag = largeArcFlag;\n _this.sweepFag = sweepFag;\n _this.x = x;\n _this.y = y;\n return _this;\n }\n\n PathPrimitiveArcToCommand.prototype.toString = function () {\n return \"A \" + this.getUnitVaue(this.rx) + \" \" + this.getUnitVaue(this.ry) + \" \" + this.getUnitVaue(this.xAxisRotation) + \" \" + (this.largeArcFlag ? \"1\" : \"0\") + \" \" + (this.sweepFag ? \"1\" : \"0\") + this.getUnitVaue(this.x) + \",\" + this.getUnitVaue(this.y);\n };\n\n return PathPrimitiveArcToCommand;\n }(PathPrimitiveCommand);\n\n exports.PathPrimitiveArcToCommand = PathPrimitiveArcToCommand;\n\n var PathPrimitiveClosePathCommand =\n /** @class */\n function (_super) {\n __extends(PathPrimitiveClosePathCommand, _super);\n\n function PathPrimitiveClosePathCommand() {\n return _super.call(this) || this;\n }\n\n PathPrimitiveClosePathCommand.prototype.toString = function () {\n return \"z\";\n };\n\n return PathPrimitiveClosePathCommand;\n }(PathPrimitiveCommand);\n\n exports.PathPrimitiveClosePathCommand = PathPrimitiveClosePathCommand;\n /***/\n },\n /* 6 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics2 = function extendStatics(d, b) {\n _extendStatics2 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics2(d, b);\n };\n\n return function (d, b) {\n _extendStatics2(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Connector = exports.CONNECTOR_DEFAULT_TEXT_POSITION = exports.ConnectorPosition = void 0;\n\n var unit_converter_1 = __webpack_require__(11);\n\n var rectangle_1 = __webpack_require__(12);\n\n var segment_1 = __webpack_require__(33);\n\n var size_1 = __webpack_require__(2);\n\n var CanvasManagerBase_1 = __webpack_require__(43);\n\n var NativeItem_1 = __webpack_require__(84);\n\n var Event_1 = __webpack_require__(14);\n\n var ITextMeasurer_1 = __webpack_require__(44);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var TextPrimitive_1 = __webpack_require__(62);\n\n var Utils_1 = __webpack_require__(17);\n\n var Settings_1 = __webpack_require__(28);\n\n var Utils_2 = __webpack_require__(3);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ConnectorPointsCalculator_1 = __webpack_require__(179);\n\n var ConnectorPointsOrthogonalCalculator_1 = __webpack_require__(180);\n\n var ConnectorLineEndingStrategies_1 = __webpack_require__(186);\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n var ConnectorTexts_1 = __webpack_require__(187);\n\n var ConnectorRenderPointsContext_1 = __webpack_require__(85);\n\n var ConnectorPosition;\n\n (function (ConnectorPosition) {\n ConnectorPosition[ConnectorPosition[\"Begin\"] = 0] = \"Begin\";\n ConnectorPosition[ConnectorPosition[\"End\"] = 1] = \"End\";\n })(ConnectorPosition = exports.ConnectorPosition || (exports.ConnectorPosition = {}));\n\n exports.CONNECTOR_DEFAULT_TEXT_POSITION = 0.5;\n\n var Connector =\n /** @class */\n function (_super) {\n __extends(Connector, _super);\n\n function Connector(points) {\n var _this = _super.call(this) || this;\n\n _this.beginConnectionPointIndex = -1;\n _this.endConnectionPointIndex = -1;\n _this.properties = new ConnectorProperties_1.ConnectorProperties();\n _this.points = points.map(function (pt) {\n return pt.clone();\n });\n if (points.length < 2) throw Error(\"Points count should be greater than 1\");\n _this.texts = new ConnectorTexts_1.ConnectorTexts();\n return _this;\n }\n\n Object.defineProperty(Connector.prototype, \"rectangle\", {\n get: function get() {\n return Utils_2.GeometryUtils.createRectagle(this.getRenderPoints(true));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connector.prototype, \"skippedRenderPoints\", {\n get: function get() {\n return this.renderPoints ? this.renderPoints.filter(function (p) {\n return p.skipped;\n }) : undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Connector.prototype, \"shouldChangeRenderPoints\", {\n get: function get() {\n return this.renderPoints !== undefined && this.routingStrategy !== undefined;\n },\n enumerable: false,\n configurable: true\n });\n\n Connector.prototype.assign = function (item) {\n _super.prototype.assign.call(this, item);\n\n item.beginItem = this.beginItem;\n item.beginConnectionPointIndex = this.beginConnectionPointIndex;\n item.endItem = this.endItem;\n item.endConnectionPointIndex = this.endConnectionPointIndex;\n item.properties = this.properties.clone();\n item.texts = this.texts.clone();\n if (this.routingStrategy !== undefined) item.routingStrategy = this.routingStrategy.clone();\n if (this.renderPoints !== undefined) item.renderPoints = this.renderPoints.map(function (p) {\n return p.clone();\n });\n if (this.renderPointsWithoutSkipped !== undefined) item.renderPointsWithoutSkipped = this.renderPointsWithoutSkipped.map(function (p) {\n return p.clone();\n });\n if (this.actualRoutingMode !== undefined) item.actualRoutingMode = this.actualRoutingMode;\n if (this.lockCreateRenderPoints !== undefined) item.lockCreateRenderPoints = this.lockCreateRenderPoints;\n if (this.shouldInvalidateRenderPoints !== undefined) item.shouldInvalidateRenderPoints = this.shouldInvalidateRenderPoints;\n };\n\n Connector.prototype.clone = function () {\n var clone = new Connector(this.points);\n this.assign(clone);\n return clone;\n };\n\n Connector.prototype.getTextCount = function () {\n return this.texts.count();\n };\n\n Connector.prototype.getText = function (position) {\n if (position === void 0) {\n position = exports.CONNECTOR_DEFAULT_TEXT_POSITION;\n }\n\n var textObj = this.texts.get(position);\n return textObj ? textObj.value : \"\";\n };\n\n Connector.prototype.setText = function (text, position) {\n if (position === void 0) {\n position = exports.CONNECTOR_DEFAULT_TEXT_POSITION;\n }\n\n if (!text || text === \"\") this.texts.remove(position);else this.texts.set(position, new ConnectorTexts_1.ConnectorText(position, text));\n };\n\n Connector.prototype.getTextPoint = function (position) {\n var points = this.getRenderPoints();\n return Utils_2.GeometryUtils.getPathPointByPosition(points, position)[0];\n };\n\n Connector.prototype.getTextPositionByPoint = function (point) {\n var points = this.getRenderPoints();\n var length = Utils_2.GeometryUtils.getPathLength(points);\n var pos = Utils_2.GeometryUtils.getPathPositionByPoint(points, point);\n var minTextHeight = unit_converter_1.UnitConverter.pointsToTwips(parseInt(this.styleText[\"font-size\"]));\n if (minTextHeight > pos * length) return minTextHeight / length;\n if (minTextHeight > length - pos * length) return (length - minTextHeight) / length;\n return pos;\n };\n\n Connector.prototype.getTextRectangle = function (position) {\n return rectangle_1.Rectangle.fromGeometry(this.getTextPoint(position), new size_1.Size(0, 0));\n };\n\n Connector.prototype.changeRoutingStrategy = function (strategy) {\n this.routingStrategy = strategy;\n this.invalidateRenderPoints();\n };\n\n Connector.prototype.clearRoutingStrategy = function () {\n delete this.routingStrategy;\n delete this.renderPoints;\n delete this.renderPointsWithoutSkipped;\n delete this.lockCreateRenderPoints;\n delete this.actualRoutingMode;\n delete this.shouldInvalidateRenderPoints;\n this.invalidateRenderPoints();\n };\n\n Connector.prototype.getCustomRenderPoints = function (keepSkipped) {\n if (keepSkipped === void 0) {\n keepSkipped = false;\n }\n\n var renderPoints = this.getRenderPoints(keepSkipped);\n var result = [];\n renderPoints.forEach(function (p, index) {\n if (index > 0 && index < renderPoints.length - 1) result.push(p);\n });\n return result;\n };\n\n Connector.prototype.getRenderPoints = function (keepSkipped) {\n if (keepSkipped === void 0) {\n keepSkipped = false;\n }\n\n if (this.shouldInvalidateRenderPoints === undefined || this.shouldInvalidateRenderPoints) {\n this.shouldInvalidateRenderPoints = false;\n if (!this.routingStrategy) this.changeRenderPoints(this.getCalculator().getPoints());else if (!this.lockCreateRenderPoints) {\n this.changeRenderPoints(new ConnectorPointsOrthogonalCalculator_1.ConnectorPointsOrthogonalCalculator(this).getPoints());\n\n if (this.actualRoutingMode !== Settings_1.ConnectorRoutingMode.None && this.points && this.renderPoints) {\n var beginPoint = this.points[0];\n var endPoint = this.points[this.points.length - 1];\n\n if (!beginPoint.equals(endPoint)) {\n var newRenderPoints = this.routingStrategy.createRenderPoints(this.points, this.renderPoints, this.beginItem, this.endItem, this.beginConnectionPointIndex, this.endConnectionPointIndex, ModelUtils_1.ModelUtils.getConnectorContainer(this));\n\n if (newRenderPoints) {\n this.changeRenderPoints(newRenderPoints);\n this.actualRoutingMode = Settings_1.ConnectorRoutingMode.AllShapesOnly;\n } else this.actualRoutingMode = Settings_1.ConnectorRoutingMode.None;\n }\n }\n }\n }\n\n return keepSkipped ? this.renderPoints : this.renderPointsWithoutSkipped;\n };\n\n Connector.prototype.createRenderPointsContext = function () {\n return this.shouldChangeRenderPoints ? new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext(this.renderPoints.map(function (p) {\n return p.clone();\n }), this.lockCreateRenderPoints, this.actualRoutingMode) : undefined;\n };\n\n Connector.prototype.updatePointsOnPageResize = function (offsetX, offsetY) {\n this.points = this.points.map(function (p) {\n return p.clone().offset(offsetX, offsetY);\n });\n if (this.renderPoints) this.changeRenderPoints(this.renderPoints.map(function (p) {\n var result = p.clone().offset(offsetX, offsetY);\n result.pointIndex = p.pointIndex;\n result.skipped = p.skipped;\n return result;\n }));\n };\n\n Connector.prototype.addPoint = function (pointIndex, point) {\n this.points.splice(pointIndex, 0, point);\n };\n\n Connector.prototype.deletePoint = function (pointIndex) {\n this.points.splice(pointIndex, 1);\n };\n\n Connector.prototype.movePoint = function (pointIndex, point) {\n this.points[pointIndex] = point;\n };\n\n Connector.prototype.onAddPoint = function (pointIndex, point) {\n if (this.shouldChangeRenderPoints) this.replaceRenderPointsCore(this.routingStrategy.onAddPoint(this.points, pointIndex, point, this.renderPoints), true, Settings_1.ConnectorRoutingMode.AllShapesOnly);else this.invalidateRenderPoints();\n };\n\n Connector.prototype.onDeletePoint = function (pointIndex) {\n if (this.shouldChangeRenderPoints) this.replaceRenderPointsCore(this.routingStrategy.onDeletePoint(this.points, pointIndex, this.renderPoints), this.points.length > 2, Settings_1.ConnectorRoutingMode.AllShapesOnly);else this.invalidateRenderPoints();\n };\n\n Connector.prototype.onMovePoint = function (pointIndex, point) {\n if (this.shouldChangeRenderPoints) {\n if (pointIndex === 0 || pointIndex === this.points.length - 1) this.lockCreateRenderPoints = false;\n this.replaceRenderPointsCore(this.routingStrategy.onMovePoint(this.points, pointIndex, point, this.renderPoints), this.lockCreateRenderPoints, Settings_1.ConnectorRoutingMode.AllShapesOnly);\n } else this.invalidateRenderPoints();\n };\n\n Connector.prototype.onMovePoints = function (beginPointIndex, beginPoint, lastPointIndex, lastPoint) {\n if (this.shouldChangeRenderPoints) {\n if (beginPointIndex === 0 || lastPointIndex === this.points.length - 1) this.lockCreateRenderPoints = false;\n this.replaceRenderPointsCore(this.routingStrategy.onMovePoints(this.points, beginPointIndex, beginPoint, lastPointIndex, lastPoint, this.renderPoints), this.lockCreateRenderPoints, Settings_1.ConnectorRoutingMode.AllShapesOnly);\n } else this.invalidateRenderPoints();\n };\n\n Connector.prototype.replaceRenderPoints = function (context) {\n if (context !== undefined) this.replaceRenderPointsCore(context.renderPoints, context.lockCreateRenderPoints, context.actualRoutingMode);else this.invalidateRenderPoints();\n };\n\n Connector.prototype.clearRenderPoints = function () {\n this.changeRenderPoints(undefined);\n this.lockCreateRenderPoints = false;\n this.actualRoutingMode = undefined;\n this.invalidateRenderPoints();\n };\n\n Connector.prototype.replaceRenderPointsCore = function (renderPoints, lockCreateRenderPoints, mode) {\n this.changeRenderPoints(renderPoints);\n this.lockCreateRenderPoints = lockCreateRenderPoints;\n this.actualRoutingMode = mode;\n this.invalidateRenderPoints();\n };\n\n Connector.prototype.changeRenderPoints = function (renderPoints) {\n this.renderPoints = renderPoints;\n this.renderPointsWithoutSkipped = renderPoints ? this.renderPoints.filter(function (pt) {\n return !pt.skipped;\n }) : undefined;\n };\n\n Connector.prototype.getCalculator = function () {\n return this.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Straight ? new ConnectorPointsCalculator_1.ConnectorPointsCalculator(this) : new ConnectorPointsOrthogonalCalculator_1.ConnectorPointsOrthogonalCalculator(this);\n };\n\n Connector.prototype.invalidateRenderPoints = function () {\n this.shouldInvalidateRenderPoints = true;\n };\n\n Connector.prototype.createPrimitives = function () {\n var result = [];\n var points = this.getRenderPoints();\n var path = new PathPrimitive_1.PathPrimitive(points.map(function (pt, index) {\n return index === 0 ? new PathPrimitive_1.PathPrimitiveMoveToCommand(pt.x, pt.y) : new PathPrimitive_1.PathPrimitiveLineToCommand(pt.x, pt.y);\n }), this.style);\n result.push(path);\n result = result.concat(this.createLineEndingPrimitives(points, path));\n result = result.concat(this.createTextPrimitives());\n return result;\n };\n\n Connector.prototype.createLineEndingPrimitives = function (points, connectorPath) {\n var result = [];\n\n if (points.length > 1) {\n var lineEndingInfo = [{\n strategy: this.createLineEndingStrategy(this.properties.startLineEnding),\n point1: points[0],\n point2: points[1]\n }, {\n strategy: this.createLineEndingStrategy(this.properties.endLineEnding),\n point1: points[points.length - 1],\n point2: points[points.length - 2]\n }];\n lineEndingInfo.forEach(function (info) {\n var strategy = info.strategy;\n\n if (strategy.hasCommands()) {\n var lineEndingPath = connectorPath;\n if (strategy.needCreateSeparatePrimitive()) result.push(lineEndingPath = strategy.createPrimitive());\n lineEndingPath.commands = lineEndingPath.commands.concat(strategy.createCommands(info.point1, info.point2));\n }\n });\n }\n\n return result;\n };\n\n Connector.prototype.createLineEndingStrategy = function (lineEnding) {\n switch (lineEnding) {\n case ConnectorProperties_1.ConnectorLineEnding.None:\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingNoneStrategy(this.style);\n\n case ConnectorProperties_1.ConnectorLineEnding.Arrow:\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingArrowStrategy(this.style);\n\n case ConnectorProperties_1.ConnectorLineEnding.OutlinedTriangle:\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingOutlinedTriangleStrategy(this.style);\n\n case ConnectorProperties_1.ConnectorLineEnding.FilledTriangle:\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingFilledTriangleStrategy(this.style);\n\n default:\n return new ConnectorLineEndingStrategies_1.ConnectorLineEndingStrategy(this.style);\n }\n };\n\n Connector.prototype.createSelectorPrimitives = function () {\n var result = [];\n var points = this.getRenderPoints();\n result.push(new PathPrimitive_1.PathPrimitive(points.map(function (pt, index) {\n if (index === 0) return new PathPrimitive_1.PathPrimitiveMoveToCommand(pt.x, pt.y);else return new PathPrimitive_1.PathPrimitiveLineToCommand(pt.x, pt.y);\n }), null, \"selector\"));\n return result;\n };\n\n Connector.prototype.createTextPrimitives = function () {\n var _this = this;\n\n if (!this.enableText) return [];\n var result = [];\n this.texts.forEach(function (textObj) {\n var text = _this.getText(textObj.position);\n\n if (text && text !== \"\") {\n var pt = _this.getTextPoint(textObj.position);\n\n result = result.concat([new TextPrimitive_1.TextPrimitive(pt.x, pt.y, text, ITextMeasurer_1.TextOwner.Connector, undefined, undefined, undefined, _this.styleText, true, null, CanvasManagerBase_1.PAGE_BG_TEXTFLOOR_FILTER_ID, undefined, function (el) {\n Utils_1.RenderUtils.setElementEventData(el, Event_1.MouseEventElementType.ConnectorText, _this.key, textObj.position);\n })]);\n }\n });\n return result;\n };\n\n Connector.prototype.getExtremeItem = function (position) {\n if (position === ConnectorPosition.Begin) return this.beginItem;\n if (position === ConnectorPosition.End) return this.endItem;\n return null;\n };\n\n Connector.prototype.getExtremeConnectionPointIndex = function (position) {\n if (position === ConnectorPosition.Begin) return this.beginConnectionPointIndex;\n if (position === ConnectorPosition.End) return this.endConnectionPointIndex;\n return -1;\n };\n\n Connector.prototype.getMinX = function () {\n var points = this.getRenderPoints();\n var xarr = points.map(function (p) {\n return p.x;\n });\n return xarr.reduce(function (prev, cur) {\n return Math.min(prev, cur);\n }, Number.MAX_VALUE);\n };\n\n Connector.prototype.getMinY = function () {\n var points = this.getRenderPoints();\n var yarr = points.map(function (p) {\n return p.y;\n });\n return yarr.reduce(function (prev, cur) {\n return Math.min(prev, cur);\n }, Number.MAX_VALUE);\n };\n\n Connector.prototype.getConnectionPoints = function () {\n return [];\n }; // eslint-disable-next-line @typescript-eslint/no-unused-vars\n\n\n Connector.prototype.getConnectionPointSide = function (point, targetPoint) {\n return DiagramItem_1.ConnectionPointSide.Undefined;\n };\n\n Connector.prototype.getSegments = function () {\n var result = [];\n var renderPoints = this.getRenderPoints();\n renderPoints.forEach(function (pt, index) {\n if (index > 0) result.push(new segment_1.Segment(renderPoints[index - 1], pt));\n });\n return result;\n };\n\n Connector.prototype.intersectedByRect = function (rect) {\n return this.getSegments().some(function (s) {\n return s.isIntersectedByRect(rect);\n });\n };\n\n Connector.prototype.toNative = function (units) {\n var item = new NativeItem_1.NativeConnector(this.key, this.dataKey);\n item.fromKey = this.beginItem && this.beginItem.dataKey;\n item.toKey = this.endItem && this.endItem.dataKey;\n item.texts = this.texts.map(function (t) {\n return t;\n }).sort(function (a, b) {\n return a.position - b.position;\n }).map(function (a) {\n return a.value;\n });\n item.fromId = this.beginItem && this.beginItem.key;\n item.fromPointIndex = this.beginConnectionPointIndex;\n item.toId = this.endItem && this.endItem.key;\n item.toPointIndex = this.endConnectionPointIndex;\n item.points = this.points.map(function (pt) {\n return pt.clone();\n });\n item.applyUnits(units);\n return item;\n };\n\n Connector.minOffset = unit_converter_1.UnitConverter.pixelsToTwips(24);\n Connector.minTextHeight = unit_converter_1.UnitConverter.pixelsToTwips(12);\n return Connector;\n }(DiagramItem_1.DiagramItem);\n\n exports.Connector = Connector;\n /***/\n },\n /* 7 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ShapeDescription = exports.ShapeTextPadding = exports.ShapeDefaultSize = exports.ShapeMinDimension = exports.ShapeDefaultDimension = void 0;\n\n var unit_converter_1 = __webpack_require__(11);\n\n var size_1 = __webpack_require__(2);\n\n var LocalizationService_1 = __webpack_require__(37);\n\n var ITextMeasurer_1 = __webpack_require__(44);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var TextPrimitive_1 = __webpack_require__(62);\n\n var Utils_1 = __webpack_require__(3);\n\n var ConnectionPoint_1 = __webpack_require__(46);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n exports.ShapeDefaultDimension = 1440;\n exports.ShapeMinDimension = 360;\n exports.ShapeDefaultSize = new size_1.Size(exports.ShapeDefaultDimension, exports.ShapeDefaultDimension);\n exports.ShapeTextPadding = unit_converter_1.UnitConverter.pixelsToTwips(10);\n\n var ShapeDescription =\n /** @class */\n function () {\n function ShapeDescription(defaultSize, hasDefaultText) {\n if (defaultSize === void 0) {\n defaultSize = exports.ShapeDefaultSize.clone();\n }\n\n this.defaultSize = defaultSize;\n this.hasDefaultText = hasDefaultText;\n this.onChanged = new Utils_1.EventDispatcher();\n this.connectionPoints = this.createConnectionPoints();\n }\n\n Object.defineProperty(ShapeDescription.prototype, \"enableText\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"allowEditText\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"enableImage\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"allowEditImage\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"hasTemplate\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"enableChildren\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"minWidth\", {\n get: function get() {\n return undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"minHeight\", {\n get: function get() {\n return undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"maxWidth\", {\n get: function get() {\n return undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"maxHeight\", {\n get: function get() {\n return undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescription.prototype, \"toolboxSize\", {\n get: function get() {\n return this.defaultSize;\n },\n enumerable: false,\n configurable: true\n });\n\n ShapeDescription.prototype.getTitle = function () {\n return LocalizationService_1.DiagramLocalizationService.shapeTexts[this.key];\n };\n\n ShapeDescription.prototype.getDefaultText = function () {\n return this.hasDefaultText ? LocalizationService_1.DiagramLocalizationService.shapeTexts[this.key] : \"\";\n };\n\n ShapeDescription.prototype.getDefaultImageUrl = function () {\n return \"\";\n };\n\n ShapeDescription.prototype.getConnectionPoints = function () {\n return this.connectionPoints;\n };\n\n ShapeDescription.prototype.createConnectionPoints = function () {\n return [new ConnectionPoint_1.ConnectionPoint(0.5, 0, DiagramItem_1.ConnectionPointSide.North), new ConnectionPoint_1.ConnectionPoint(1, 0.5, DiagramItem_1.ConnectionPointSide.East), new ConnectionPoint_1.ConnectionPoint(0.5, 1, DiagramItem_1.ConnectionPointSide.South), new ConnectionPoint_1.ConnectionPoint(0, 0.5, DiagramItem_1.ConnectionPointSide.West)];\n };\n\n ShapeDescription.prototype.processConnectionPoint = function (shape, point) {};\n\n ShapeDescription.prototype.getConnectionPointIndexForItem = function (item, connectionPointIndex) {\n return connectionPointIndex;\n };\n\n ShapeDescription.prototype.getConnectionPointIndexForSide = function (side) {\n return side;\n };\n\n ShapeDescription.prototype.createParameters = function (parameters) {};\n\n ShapeDescription.prototype.normalizeParameters = function (shape, parameters) {};\n\n ShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n throw Error(\"Not implemented\");\n };\n\n ShapeDescription.prototype.changeParameterValue = function (parameters, key, change) {\n var p = parameters.get(key);\n p.value = change(p);\n };\n\n ShapeDescription.prototype.getParameterPoints = function (shape) {\n return [];\n };\n\n ShapeDescription.prototype.getExpandedSize = function (shape) {\n return shape.size;\n };\n\n ShapeDescription.prototype.getCollapsedSize = function (shape) {\n return shape.size;\n };\n\n ShapeDescription.prototype.getToolboxHeightToWidthRatio = function (width, height) {\n return height / width;\n };\n\n ShapeDescription.prototype.allowResizeHorizontally = function (_shape) {\n return true;\n };\n\n ShapeDescription.prototype.allowResizeVertically = function (_shape) {\n return true;\n };\n\n ShapeDescription.prototype.createPrimitives = function (shape, forToolbox) {\n var primitives = [];\n primitives = primitives.concat(this.createShapePrimitives(shape, forToolbox));\n if (this.enableImage) primitives = primitives.concat(this.createImagePrimitives(shape, forToolbox));\n if (this.enableText) primitives = primitives.concat(this.createTextPrimitives(shape, forToolbox));\n return primitives;\n };\n\n ShapeDescription.prototype.createImagePrimitives = function (_shape, _forToolbox) {\n return [];\n };\n\n ShapeDescription.prototype.createTextPrimitives = function (shape, forToolbox) {\n if (shape.text === undefined || shape.text === \"\") return [];\n var rect = this.getTextRectangle(shape);\n return [new TextPrimitive_1.TextPrimitive(rect.x, rect.y, shape.text, ITextMeasurer_1.TextOwner.Shape, rect.width, rect.height, ShapeDescription.textSpacing, shape.styleText, false, this.getTextClipPathId(forToolbox), undefined, this.getTextAngle())];\n };\n\n ShapeDescription.prototype.getTextClipPathId = function (_forToolbox) {\n return undefined;\n };\n\n ShapeDescription.prototype.getTextAngle = function () {\n return TextPrimitive_1.TextAngle.Angle0deg;\n };\n\n ShapeDescription.prototype.getClientRectangle = function (shape) {\n return shape.rectangle;\n };\n\n ShapeDescription.prototype.getTextEditRectangle = function (shape) {\n return this.getTextRectangle(shape);\n };\n\n ShapeDescription.prototype.createSelectorPrimitives = function (shape) {\n return [new RectaglePrimitive_1.RectanglePrimitive(shape.position.x, shape.position.y, shape.size.width, shape.size.height, null, \"selector\")];\n };\n\n ShapeDescription.prototype.raiseShapeDescriptionChanged = function (description) {\n this.onChanged.raise1(function (l) {\n return l.notifyShapeDescriptionChanged(description);\n });\n };\n\n ShapeDescription.textSpacing = unit_converter_1.UnitConverter.pixelsToTwips(2);\n return ShapeDescription;\n }();\n\n exports.ShapeDescription = ShapeDescription;\n /***/\n },\n /* 8 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics3 = function extendStatics(d, b) {\n _extendStatics3 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics3(d, b);\n };\n\n return function (d, b) {\n _extendStatics3(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CompositionHistoryItem = exports.HistoryItem = void 0;\n\n var HistoryItem =\n /** @class */\n function () {\n function HistoryItem() {\n this.uniqueId = -1;\n }\n\n HistoryItem.prototype.changeModified = function () {\n return true;\n };\n\n HistoryItem.prototype.getName = function () {\n return this.constructor.name;\n };\n\n return HistoryItem;\n }();\n\n exports.HistoryItem = HistoryItem;\n\n var CompositionHistoryItem =\n /** @class */\n function (_super) {\n __extends(CompositionHistoryItem, _super);\n\n function CompositionHistoryItem() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.historyItems = [];\n _this.dataSyncItems = [];\n return _this;\n }\n\n CompositionHistoryItem.prototype.changeModified = function () {\n var item;\n\n for (var i = 0; item = this.historyItems[i]; i++) {\n if (item.changeModified()) return true;\n }\n\n return false;\n };\n\n CompositionHistoryItem.prototype.redo = function (manipulator) {\n var item;\n\n for (var i = 0; item = this.historyItems[i]; i++) {\n item.redo(manipulator);\n }\n };\n\n CompositionHistoryItem.prototype.undo = function (manipulator) {\n var item;\n\n for (var i = this.dataSyncItems.length - 1; item = this.dataSyncItems[i]; i--) {\n item.undo(manipulator);\n }\n\n this.dataSyncItems = [];\n\n for (var i = this.historyItems.length - 1; item = this.historyItems[i]; i--) {\n item.undo(manipulator);\n }\n };\n\n CompositionHistoryItem.prototype.add = function (historyItem) {\n if (historyItem == null) throw new Error(\"cannot be null\");\n this.historyItems.push(historyItem);\n };\n\n return CompositionHistoryItem;\n }(HistoryItem);\n\n exports.CompositionHistoryItem = CompositionHistoryItem;\n /***/\n },\n /* 9 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DiagramItem = exports.DEFAULT_ZINDEX = exports.ConnectionPointSide = void 0;\n\n var rectangle_1 = __webpack_require__(12);\n\n var metrics_1 = __webpack_require__(36);\n\n var Utils_1 = __webpack_require__(3);\n\n var Style_1 = __webpack_require__(27);\n\n var ConnectionPointSide;\n\n (function (ConnectionPointSide) {\n ConnectionPointSide[ConnectionPointSide[\"Undefined\"] = -1] = \"Undefined\";\n ConnectionPointSide[ConnectionPointSide[\"North\"] = 0] = \"North\";\n ConnectionPointSide[ConnectionPointSide[\"East\"] = 1] = \"East\";\n ConnectionPointSide[ConnectionPointSide[\"South\"] = 2] = \"South\";\n ConnectionPointSide[ConnectionPointSide[\"West\"] = 3] = \"West\";\n })(ConnectionPointSide = exports.ConnectionPointSide || (exports.ConnectionPointSide = {}));\n\n exports.DEFAULT_ZINDEX = 0;\n\n var DiagramItem =\n /** @class */\n function () {\n function DiagramItem() {\n this.key = undefined;\n this.dataKey = undefined;\n this.customData = undefined;\n this.attachedConnectors = [];\n this.zIndex = exports.DEFAULT_ZINDEX;\n this.locked = false;\n this.container = undefined;\n this.style = new Style_1.Style();\n this.styleText = new Style_1.TextStyle();\n }\n\n DiagramItem.prototype.assign = function (item) {\n item.key = this.key;\n item.dataKey = this.dataKey;\n item.customData = Utils_1.ObjectUtils.cloneObject(this.customData);\n item.locked = this.locked;\n item.attachedConnectors = this.attachedConnectors.slice();\n item.style = this.style.clone();\n item.styleText = this.styleText.clone();\n item.zIndex = this.zIndex;\n item.container = this.container;\n };\n\n DiagramItem.prototype.getConnectionPointPosition = function (index, targetPoint) {\n return this.getConnectionPoint(index, targetPoint).toPoint();\n };\n\n DiagramItem.prototype.getConnectionPoint = function (index, targetPoint) {\n if (index < 0 && targetPoint) index = this.getNearestConnectionPoint(targetPoint);\n var connectionPoints = this.getConnectionPoints();\n return connectionPoints[index] || connectionPoints[0];\n };\n\n DiagramItem.prototype.getNearestConnectionPoint = function (targetPoint) {\n var distance = Number.MAX_VALUE;\n var result;\n this.getConnectionPoints().forEach(function (pt, index) {\n var ptDistance = metrics_1.Metrics.euclideanDistance(pt, targetPoint);\n\n if (ptDistance < distance) {\n distance = ptDistance;\n result = index;\n }\n });\n return result;\n };\n\n DiagramItem.prototype.getConnectionPointIndex = function (side) {\n var points = this.getConnectionPoints();\n return points.reduce(function (prevIndex, pt, index) {\n if (side === ConnectionPointSide.North && pt.y < points[prevIndex].y) return index;\n if (side === ConnectionPointSide.South && pt.y > points[prevIndex].y) return index;\n if (side === ConnectionPointSide.West && pt.x < points[prevIndex].x) return index;\n if (side === ConnectionPointSide.East && pt.x > points[prevIndex].x) return index;\n return prevIndex;\n }, 0);\n };\n\n DiagramItem.prototype.getConnectionPointSideByIndex = function (index, targetPoint) {\n var point = this.getConnectionPoint(index, targetPoint);\n return this.getConnectionPointSide(point, targetPoint);\n };\n\n DiagramItem.prototype.getConnectionPointIndexForSide = function (side) {\n return side;\n };\n\n Object.defineProperty(DiagramItem.prototype, \"enableText\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramItem.prototype, \"allowEditText\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramItem.prototype, \"hasTemplate\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramItem.prototype, \"enableChildren\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramItem.prototype, \"isLocked\", {\n get: function get() {\n return this.locked || this.container && this.container.isLocked;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramItem.prototype, \"allowResizeHorizontally\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramItem.prototype, \"allowResizeVertically\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramItem.prototype, \"strokeWidth\", {\n get: function get() {\n return this.style.strokeWidth;\n },\n enumerable: false,\n configurable: true\n });\n\n DiagramItem.prototype.intersectedByRect = function (rect) {\n return rectangle_1.Rectangle.areIntersected(this.rectangle, rect);\n };\n\n return DiagramItem;\n }();\n\n exports.DiagramItem = DiagramItem;\n /***/\n },\n /* 10 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics4 = function extendStatics(d, b) {\n _extendStatics4 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics4(d, b);\n };\n\n return function (d, b) {\n _extendStatics4(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SimpleCommandBase = void 0;\n\n var CommandBase_1 = __webpack_require__(197);\n\n var CommandStates_1 = __webpack_require__(198);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var LocalizationService_1 = __webpack_require__(37);\n\n var SimpleCommandBase =\n /** @class */\n function (_super) {\n __extends(SimpleCommandBase, _super);\n\n function SimpleCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SimpleCommandBase.prototype.getState = function () {\n return new CommandStates_1.SimpleCommandState(this.isEnabled(), this.getValue(), this.getDefaultValue(), this.getItems(), this.isVisible());\n };\n\n SimpleCommandBase.prototype.isVisible = function () {\n return true;\n };\n\n SimpleCommandBase.prototype.isEnabled = function () {\n return !this.control.settings.readOnly || this.isEnabledInReadOnlyMode();\n };\n\n SimpleCommandBase.prototype.isEnabledInReadOnlyMode = function () {\n return false;\n };\n\n SimpleCommandBase.prototype.getValue = function () {\n return undefined;\n };\n\n SimpleCommandBase.prototype.getDefaultValue = function () {\n return undefined;\n };\n\n SimpleCommandBase.prototype.getItems = function () {\n return undefined;\n };\n\n SimpleCommandBase.prototype.getModelUnit = function (value) {\n return ModelUtils_1.ModelUtils.getlUnitValue(this.control.model.units, value);\n };\n\n SimpleCommandBase.prototype.getModelUnitText = function (value) {\n return ModelUtils_1.ModelUtils.getUnitText(this.control.model.units, LocalizationService_1.DiagramLocalizationService.unitItems, LocalizationService_1.DiagramLocalizationService.formatUnit, value);\n };\n\n SimpleCommandBase.prototype.getModelUnitTwipsValue = function (value) {\n return ModelUtils_1.ModelUtils.getTwipsValue(this.control.model.units, value);\n };\n\n SimpleCommandBase.prototype.getViewUnit = function (value) {\n return ModelUtils_1.ModelUtils.getlUnitValue(this.control.settings.viewUnits, value);\n };\n\n SimpleCommandBase.prototype.getViewUnitText = function (value) {\n return ModelUtils_1.ModelUtils.getUnitText(this.control.settings.viewUnits, LocalizationService_1.DiagramLocalizationService.unitItems, LocalizationService_1.DiagramLocalizationService.formatUnit, value);\n };\n\n SimpleCommandBase.prototype.getViewUnitTwipsValue = function (value) {\n return ModelUtils_1.ModelUtils.getTwipsValue(this.control.settings.viewUnits, value);\n };\n\n return SimpleCommandBase;\n }(CommandBase_1.CommandBase);\n\n exports.SimpleCommandBase = SimpleCommandBase;\n /***/\n },\n /* 11 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var UnitConverter = function () {\n function UnitConverter() {}\n\n UnitConverter.hundredthsOfMillimeterToTwipsRound = function (value) {\n return Math.round(1440 * value / 2540.0);\n };\n\n UnitConverter.documentsToTwips = function (value) {\n return 24 * value / 5;\n };\n\n UnitConverter.pixelsToTwips = function (value) {\n return Math.round(UnitConverter.pixelsToTwipsF(value));\n };\n\n UnitConverter.pixelsToTwipsCustomDpi = function (value, dpi) {\n return Math.round(UnitConverter.pixelsToTwipsFCustomDpi(value, dpi));\n };\n\n UnitConverter.inchesToTwips = function (value) {\n return Math.round(UnitConverter.inchesToTwipsF(value));\n };\n\n UnitConverter.pointsToTwips = function (value) {\n return Math.round(UnitConverter.pointsToTwipsF(value));\n };\n\n UnitConverter.picasToTwips = function (value) {\n return Math.round(value * 1440 / UnitConverter.PICAS_PER_INCH);\n };\n\n UnitConverter.centimetersToTwips = function (value) {\n return Math.round(UnitConverter.centimetersToTwipsF(value));\n };\n\n UnitConverter.pixelsToTwipsF = function (value) {\n return value * 1440 / UnitConverter.DPI;\n };\n\n UnitConverter.pixelsToTwipsFCustomDpi = function (value, dpi) {\n return value * 1440 / dpi;\n };\n\n UnitConverter.inchesToTwipsF = function (value) {\n return value * 1440;\n };\n\n UnitConverter.pointsToTwipsF = function (value) {\n return value * 20;\n };\n\n UnitConverter.centimetersToTwipsF = function (value) {\n return value * 1440 / UnitConverter.CENTIMETERS_PER_INCH;\n };\n\n UnitConverter.twipsToDegrees = function (value) {\n return value / 60000;\n };\n\n UnitConverter.twipsToRadians = function (value) {\n return value / 60000 * Math.PI / 180;\n };\n\n UnitConverter.degreesToTwips = function (value) {\n return value * 60000;\n };\n\n UnitConverter.radiansToTwips = function (value) {\n return value * 60000 / Math.PI * 180;\n };\n\n UnitConverter.radiansToDegrees = function (value) {\n return value / Math.PI * 180;\n };\n\n UnitConverter.twipsToFD = function (value) {\n return Math.round(value * 2048 / 1875);\n };\n\n UnitConverter.fdToTwips = function (value) {\n return Math.round(value * 1875 / 2048);\n };\n\n UnitConverter.emuToTwips = function (val) {\n return val / 635;\n };\n\n UnitConverter.twipsToPixels = function (value) {\n return Math.round(UnitConverter.twipsToPixelsF(value));\n };\n\n UnitConverter.inchesToPixels = function (value) {\n return Math.round(UnitConverter.DPI * value);\n };\n\n UnitConverter.centimeterToPixel = function (value) {\n return Math.round(this.centimeterToPixelF(value));\n };\n\n UnitConverter.centimeterToPixelF = function (value) {\n return value * UnitConverter.DPI / UnitConverter.CENTIMETERS_PER_INCH;\n };\n\n UnitConverter.millimetersToPixel = function (value) {\n return Math.round(value / (UnitConverter.CENTIMETERS_PER_INCH / UnitConverter.DPI) / 10);\n };\n\n UnitConverter.pointsToPixels = function (value) {\n return Math.round(value * UnitConverter.DPI / 72);\n };\n\n UnitConverter.pointsToPixelsF = function (value) {\n return value * UnitConverter.DPI / 72;\n };\n\n UnitConverter.twipsToPixelsF = function (value) {\n return value * UnitConverter.DPI / 1440;\n };\n\n UnitConverter.pixelsToPoints = function (value) {\n return Math.round(value * 72 / UnitConverter.DPI);\n };\n\n UnitConverter.pixelsToPointsF = function (value) {\n return value * 72 / UnitConverter.DPI;\n };\n\n UnitConverter.twipsToPoints = function (value) {\n return Math.round(this.twipsToPointsF(value));\n };\n\n UnitConverter.twipsToPointsF = function (value) {\n return value / 20;\n };\n\n UnitConverter.twipsToInches = function (value) {\n return value / 1440;\n };\n\n UnitConverter.pixelsToInches = function (value) {\n return value / UnitConverter.DPI;\n };\n\n UnitConverter.twipsToCentimeters = function (value) {\n return value * UnitConverter.CENTIMETERS_PER_INCH / 1440;\n };\n\n UnitConverter.pixelToCentimeters = function (value) {\n return value * UnitConverter.CENTIMETERS_PER_INCH / UnitConverter.DPI;\n };\n\n UnitConverter.twipsToHundredthsOfMillimeter = function (value) {\n return Math.round(127 * value / 72);\n };\n\n UnitConverter.pixelsToHundredthsOfMillimeter = function (value) {\n return Math.round(2540 * value / UnitConverter.DPI);\n };\n\n UnitConverter.hundredthsOfMillimeterToTwips = function (value) {\n return 15 * value / 127;\n };\n\n UnitConverter.twipsToEmu = function (val) {\n return val * 635;\n };\n\n UnitConverter.twipsToDegree = function (value) {\n return value / 60000;\n };\n\n UnitConverter.DPI = 96;\n UnitConverter.CENTIMETERS_PER_INCH = 2.54;\n UnitConverter.PICAS_PER_INCH = 6;\n return UnitConverter;\n }();\n\n exports.UnitConverter = UnitConverter;\n /***/\n },\n /* 12 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var flag_1 = __webpack_require__(163);\n\n var algorithms_1 = __webpack_require__(164);\n\n var fixed_1 = __webpack_require__(108);\n\n var point_1 = __webpack_require__(1);\n\n var size_1 = __webpack_require__(2);\n\n var Rectangle = function () {\n function Rectangle(x, y, width, height) {\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n\n Object.defineProperty(Rectangle.prototype, \"right\", {\n get: function get() {\n return this.x + this.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"bottom\", {\n get: function get() {\n return this.y + this.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"center\", {\n get: function get() {\n return Rectangle.center(this);\n },\n enumerable: true,\n configurable: true\n });\n\n Rectangle.prototype.createRectangle = function () {\n return new Rectangle(this.x, this.y, this.width, this.height);\n };\n\n Rectangle.prototype.createSize = function () {\n return new size_1.Size(this.width, this.height);\n };\n\n Rectangle.prototype.createPosition = function () {\n return new point_1.Point(this.x, this.y);\n };\n\n Rectangle.prototype.createVerticalInterval = function () {\n return new fixed_1.FixedInterval(this.y, this.height);\n };\n\n Rectangle.prototype.createHorizontalInterval = function () {\n return new fixed_1.FixedInterval(this.x, this.width);\n };\n\n Rectangle.fromGeometry = function (point, size) {\n return new Rectangle(point.x, point.y, size.width, size.height);\n };\n\n Rectangle.fromPoints = function (pointA, pointB) {\n var x = Math.min(pointA.x, pointB.x);\n var y = Math.min(pointA.y, pointB.y);\n var width = Math.abs(pointA.x - pointB.x);\n var height = Math.abs(pointA.y - pointB.y);\n return new Rectangle(x, y, width, height);\n };\n\n Rectangle.fromPositions = function (x1, y1, x2, y2) {\n var x = Math.min(x1, x2);\n var y = Math.min(y1, y2);\n var width = Math.abs(x2 - x1);\n var height = Math.abs(y2 - y1);\n return new Rectangle(x, y, width, height);\n };\n\n Rectangle.fromCenter = function (center, minRadius) {\n return new Rectangle(center.x - minRadius, center.y - minRadius, minRadius * 2, minRadius * 2);\n };\n\n Rectangle.prototype.isCollapsed = function () {\n return this.width === 0 || this.height === 0;\n };\n\n Rectangle.prototype.isEmpty = function () {\n return this.x === 0 && this.y === 0 && this.width === 0 && this.height === 0;\n };\n\n Rectangle.prototype.toString = function () {\n return JSON.stringify(this);\n };\n\n Rectangle.prototype.setPosition = function (pos) {\n this.x = pos.x;\n this.y = pos.y;\n return this;\n };\n\n Rectangle.prototype.setSize = function (size) {\n this.width = size.width;\n this.height = size.height;\n return this;\n };\n\n Rectangle.prototype.setGeomerty = function (rect) {\n this.x = rect.x;\n this.y = rect.y;\n this.width = rect.width;\n this.height = rect.height;\n return this;\n };\n\n Rectangle.prototype.moveRectangle = function (offsetX, offsetY) {\n this.x += offsetX;\n this.y += offsetY;\n return this;\n };\n\n Rectangle.prototype.moveRectangleByPoint = function (offset) {\n this.x += offset.x;\n this.y += offset.y;\n return this;\n };\n\n Rectangle.prototype.resize = function (deltaX, deltaY) {\n this.width += deltaX;\n this.height += deltaY;\n return this;\n };\n\n Rectangle.prototype.nonNegativeSize = function () {\n if (this.width < 0) this.width = 0;\n if (this.height < 0) this.height = 0;\n return this;\n };\n\n Rectangle.prototype.multiply = function (multiplierX, multiplierY) {\n this.x *= multiplierX;\n this.y *= multiplierY;\n this.width *= multiplierX;\n this.height *= multiplierY;\n return this;\n };\n\n Rectangle.prototype.equals = function (obj) {\n return Rectangle.equals(this, obj);\n };\n\n Rectangle.prototype.clone = function () {\n var rect = new Rectangle(0, 0, 0, 0);\n rect.copyFrom(this);\n return rect;\n };\n\n Rectangle.prototype.copyFrom = function (obj) {\n this.x = obj.x;\n this.y = obj.y;\n this.width = obj.width;\n this.height = obj.height;\n };\n\n Rectangle.prototype.containsPoint = function (point) {\n return Rectangle.containsPoint(this, point);\n };\n\n Rectangle.prototype.containsRectangle = function (rectangle) {\n return this.x <= rectangle.x && this.right >= rectangle.right && this.y <= rectangle.y && this.bottom >= rectangle.bottom;\n };\n\n Rectangle.prototype.inflate = function (deltaX, deltaY) {\n if (deltaY === void 0) {\n deltaY = deltaX;\n }\n\n this.x -= deltaX;\n this.y -= deltaY;\n this.width += deltaX * 2;\n this.height += deltaY * 2;\n return this;\n };\n\n Rectangle.prototype.applyOffsetsInside = function (offsets) {\n this.x += offsets.left;\n this.y += offsets.top;\n this.width -= offsets.left + offsets.right;\n this.height -= offsets.top + offsets.bottom;\n return this;\n };\n\n Rectangle.prototype.applyNormalizedOffsetsInside = function (offsets) {\n var left = Math.max(0, offsets.left);\n var right = Math.max(0, offsets.right);\n var horSum = left + right;\n\n if (horSum !== 0) {\n if (horSum <= this.width) {\n this.x += left;\n this.width -= horSum;\n } else {\n this.x += this.width * (left / horSum);\n this.width = 0;\n }\n }\n\n var top = Math.max(0, offsets.top);\n var bottom = Math.max(0, offsets.bottom);\n var vertSum = top + bottom;\n\n if (vertSum !== 0) {\n if (vertSum <= this.height) {\n this.y += top;\n this.height -= vertSum;\n } else {\n this.y += this.height * (top / vertSum);\n this.height = 0;\n }\n }\n\n return this;\n };\n\n Rectangle.prototype.applyOffsetsOutside = function (offsets) {\n this.x -= offsets.left;\n this.y -= offsets.top;\n this.width += offsets.left + offsets.right;\n this.height += offsets.top + offsets.bottom;\n return this;\n };\n\n Rectangle.prototype.applyConverter = function (converter) {\n this.x = converter(this.x);\n this.y = converter(this.y);\n this.width = converter(this.width);\n this.height = converter(this.height);\n return this;\n };\n\n Rectangle.getHorizIntersection = function (objA, objB) {\n return algorithms_1.IntervalAlgorithms.getIntersection(new fixed_1.FixedInterval(objA.x, objA.width), new fixed_1.FixedInterval(objB.x, objB.width));\n };\n\n Rectangle.getVertIntersection = function (objA, objB) {\n return algorithms_1.IntervalAlgorithms.getIntersection(new fixed_1.FixedInterval(objA.y, objA.height), new fixed_1.FixedInterval(objB.y, objB.height));\n };\n\n Rectangle.getIntersection = function (objA, objB) {\n var horInters = algorithms_1.IntervalAlgorithms.getIntersection(new fixed_1.FixedInterval(objA.x, objA.width), new fixed_1.FixedInterval(objB.x, objB.width));\n if (!horInters) return null;\n var vertInters = algorithms_1.IntervalAlgorithms.getIntersection(new fixed_1.FixedInterval(objA.y, objA.height), new fixed_1.FixedInterval(objB.y, objB.height));\n if (!vertInters) return null;\n return new Rectangle(horInters.start, vertInters.start, horInters.length, vertInters.length);\n };\n\n Rectangle.getHorNonCollapsedIntersection = function (objA, objB) {\n var inters = Rectangle.getHorizIntersection(objA, objB);\n return inters && !inters.isCollapsed() ? inters : null;\n };\n\n Rectangle.getVertNonCollapsedIntersection = function (objA, objB) {\n var inters = Rectangle.getVertIntersection(objA, objB);\n return inters && !inters.isCollapsed() ? inters : null;\n };\n\n Rectangle.getNonCollapsedIntersection = function (objA, objB) {\n var inters = Rectangle.getIntersection(objA, objB);\n return inters && !inters.isCollapsed() ? inters : null;\n };\n\n Rectangle.areIntersected = function (rectA, rectB) {\n return !(rectA.x > rectB.x + rectB.width || rectB.x > rectA.x + rectA.width) && !(rectA.y > rectB.y + rectB.height || rectB.y > rectA.y + rectA.height);\n };\n\n Rectangle.union = function (rectA, rectB) {\n var right = Math.max(rectA.x + rectA.width, rectB.x + rectB.width);\n var bottom = Math.max(rectA.y + rectA.height, rectB.y + rectB.height);\n var x = Math.min(rectA.x, rectB.x);\n var y = Math.min(rectA.y, rectB.y);\n return new Rectangle(x, y, right - x, bottom - y);\n };\n\n Rectangle.equals = function (a, b) {\n return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;\n };\n\n Rectangle.center = function (rect) {\n return new point_1.Point(rect.x + rect.width / 2, rect.y + rect.height / 2);\n };\n\n Rectangle.containsPoint = function (rect, point) {\n var right = rect.x + rect.width;\n var bottom = rect.y + rect.height;\n return point.y >= rect.y && bottom >= point.y && point.x >= rect.x && right >= point.x;\n };\n\n return Rectangle;\n }();\n\n exports.Rectangle = Rectangle;\n var HitTestDeviation;\n\n (function (HitTestDeviation) {\n HitTestDeviation[HitTestDeviation[\"None\"] = 0] = \"None\";\n HitTestDeviation[HitTestDeviation[\"Top\"] = 1] = \"Top\";\n HitTestDeviation[HitTestDeviation[\"Bottom\"] = 2] = \"Bottom\";\n HitTestDeviation[HitTestDeviation[\"Left\"] = 4] = \"Left\";\n HitTestDeviation[HitTestDeviation[\"Right\"] = 8] = \"Right\";\n })(HitTestDeviation = exports.HitTestDeviation || (exports.HitTestDeviation = {}));\n\n var RectangleDeviation = function () {\n function RectangleDeviation(initRectangle, initPoint) {\n this.initRectangle = initRectangle;\n this.initPoint = initPoint;\n this.deviation = new flag_1.Flag(HitTestDeviation.None);\n }\n\n RectangleDeviation.prototype.calcDeviation = function () {\n if (this.initPoint.x < this.initRectangle.x) this.deviation.set(HitTestDeviation.Left, true);else if (this.initPoint.x > this.initRectangle.right) this.deviation.set(HitTestDeviation.Right, true);\n if (this.initPoint.y < this.initRectangle.y) this.deviation.set(HitTestDeviation.Top, true);else if (this.initPoint.y > this.initRectangle.bottom) this.deviation.set(HitTestDeviation.Bottom, true);\n return this;\n };\n\n RectangleDeviation.prototype.calcAdditionalParams = function () {\n this.insidePoint = this.initPoint.clone();\n this.offsetToInside = new point_1.Point(0, 0);\n\n if (this.deviation.get(HitTestDeviation.Left)) {\n this.insidePoint.x = this.initRectangle.x;\n this.offsetToInside.x = this.insidePoint.x - this.initPoint.x;\n } else if (this.deviation.get(HitTestDeviation.Right)) {\n this.insidePoint.x = this.initRectangle.right;\n this.offsetToInside.x = this.initPoint.x - this.insidePoint.x;\n }\n\n if (this.deviation.get(HitTestDeviation.Top)) {\n this.insidePoint.y = this.initRectangle.y;\n this.offsetToInside.y = this.insidePoint.y - this.initPoint.y;\n } else if (this.deviation.get(HitTestDeviation.Bottom)) {\n this.insidePoint.y = this.initRectangle.bottom;\n this.offsetToInside.y = this.initPoint.y - this.insidePoint.y;\n }\n\n return this;\n };\n\n return RectangleDeviation;\n }();\n\n exports.RectangleDeviation = RectangleDeviation;\n /***/\n },\n /* 13 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics5 = function extendStatics(d, b) {\n _extendStatics5 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics5(d, b);\n };\n\n return function (d, b) {\n _extendStatics5(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Shape = void 0;\n\n var rectangle_1 = __webpack_require__(12);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var ShapeParameters_1 = __webpack_require__(38);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ConnectionPoint_1 = __webpack_require__(46);\n\n var ImageInfo_1 = __webpack_require__(51);\n\n var NativeItem_1 = __webpack_require__(84);\n\n var Shape =\n /** @class */\n function (_super) {\n __extends(Shape, _super);\n\n function Shape(description, position, forToolbox) {\n var _this = _super.call(this) || this;\n\n _this.description = description; // Containers\n\n _this.children = [];\n _this.expanded = true;\n _this.expandedSize = undefined;\n if (!description) throw Error(\"Shape type is incorrect\");\n _this.position = position.clone();\n var defaultSize = forToolbox ? description.toolboxSize : description.defaultSize;\n _this.size = defaultSize.clone();\n _this.text = description.getDefaultText();\n _this.image = new ImageInfo_1.ImageInfo(description.getDefaultImageUrl());\n _this.parameters = new ShapeParameters_1.ShapeParameters();\n description.createParameters(_this.parameters);\n return _this;\n }\n\n Shape.prototype.assign = function (item) {\n _super.prototype.assign.call(this, item);\n\n item.size = this.size.clone();\n item.text = this.text;\n item.image = this.image.clone();\n item.parameters = this.parameters.clone();\n item.children = this.children.slice();\n item.expanded = this.expanded;\n if (this.expandedSize) item.expandedSize = this.expandedSize.clone();\n };\n\n Shape.prototype.clone = function () {\n var clone = new Shape(this.description, this.position.clone());\n this.assign(clone);\n return clone;\n };\n\n Object.defineProperty(Shape.prototype, \"enableText\", {\n get: function get() {\n return this.description.enableText;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"allowEditText\", {\n get: function get() {\n return this.description.allowEditText;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"hasTemplate\", {\n get: function get() {\n return this.description.hasTemplate;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"enableChildren\", {\n get: function get() {\n return this.description.enableChildren;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"enableImage\", {\n get: function get() {\n return this.description.enableImage;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"allowEditImage\", {\n get: function get() {\n return this.description.allowEditImage;\n },\n enumerable: false,\n configurable: true\n });\n\n Shape.prototype.getMinWidth = function (settingsMinWidth) {\n return typeof this.description.minWidth === \"number\" ? this.description.minWidth : typeof settingsMinWidth === \"number\" ? settingsMinWidth : ShapeDescription_1.ShapeMinDimension;\n };\n\n Shape.prototype.getMinHeight = function (settingsMinHeight) {\n return typeof this.description.minHeight === \"number\" ? this.description.minHeight : typeof settingsMinHeight === \"number\" ? settingsMinHeight : ShapeDescription_1.ShapeMinDimension;\n };\n\n Shape.prototype.getMaxWidth = function (settingsMaxWidth) {\n return typeof this.description.maxWidth === \"number\" ? this.description.maxWidth : typeof settingsMaxWidth === \"number\" ? settingsMaxWidth : undefined;\n };\n\n Shape.prototype.getMaxHeight = function (settingsMaxHeight) {\n return typeof this.description.maxHeight === \"number\" ? this.description.maxHeight : typeof settingsMaxHeight === \"number\" ? settingsMaxHeight : undefined;\n };\n\n Shape.prototype.createPrimitives = function () {\n return this.description.createPrimitives(this);\n };\n\n Shape.prototype.createSelectorPrimitives = function () {\n return this.description.createSelectorPrimitives(this);\n };\n\n Shape.prototype.normalizeX = function (x) {\n return Math.max(this.position.x, Math.min(x, this.position.x + this.size.width));\n };\n\n Shape.prototype.normalizeY = function (y) {\n return Math.max(this.position.y, Math.min(y, this.position.y + this.size.height));\n };\n\n Shape.prototype.getConnectionPoints = function () {\n var _this = this;\n\n var result = this.description.getConnectionPoints().map(function (pt) {\n var point = new ConnectionPoint_1.ConnectionPoint(_this.position.x + pt.x * _this.size.width, _this.position.y + pt.y * _this.size.height, pt.side);\n\n _this.description.processConnectionPoint(_this, point);\n\n return point;\n });\n return result;\n };\n\n Shape.prototype.getConnectionPointSide = function (point, targetPoint) {\n if (point.side !== DiagramItem_1.ConnectionPointSide.Undefined) return point.side;\n return this.getConnectionPointSideByGeometry(point);\n };\n\n Shape.prototype.getConnectionPointSideByGeometry = function (point) {\n var pt = point.clone().offset(-this.position.x, -this.position.y).multiply(1 / this.size.width, 1 / this.size.height);\n\n if (pt.x >= pt.y && (pt.x > 0 || pt.y > 0)) {\n if (pt.x < 0.5 || 1 - pt.x >= pt.y) return DiagramItem_1.ConnectionPointSide.North;\n return DiagramItem_1.ConnectionPointSide.East;\n } else {\n if (pt.x > 0.5 || 1 - pt.x <= pt.y) return DiagramItem_1.ConnectionPointSide.South;\n return DiagramItem_1.ConnectionPointSide.West;\n }\n };\n\n Shape.prototype.getConnectionPointIndexForItem = function (item, connectionPointIndex) {\n return this.description.getConnectionPointIndexForItem(item, connectionPointIndex);\n };\n\n Shape.prototype.getConnectionPointIndexForSide = function (side) {\n return this.description.getConnectionPointIndexForSide(side);\n };\n\n Shape.prototype.toggleExpandedSize = function () {\n if (!this.expanded) {\n this.expandedSize = this.size.clone();\n this.size = this.getCollapsedSize();\n } else {\n this.size = this.getExpandedSize();\n this.expandedSize = undefined;\n }\n };\n\n Shape.prototype.getExpandedSize = function () {\n return this.description.getExpandedSize(this);\n };\n\n Shape.prototype.getCollapsedSize = function () {\n return this.description.getCollapsedSize(this);\n };\n\n Shape.prototype.getToolboxHeightToWidthRatio = function () {\n return this.description.getToolboxHeightToWidthRatio(this.size.width, this.size.height);\n };\n\n Object.defineProperty(Shape.prototype, \"allowResizeHorizontally\", {\n get: function get() {\n return this.description.allowResizeHorizontally(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"allowResizeVertically\", {\n get: function get() {\n return this.description.allowResizeVertically(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"rectangle\", {\n get: function get() {\n return rectangle_1.Rectangle.fromGeometry(this.position, this.size);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"clientRectangle\", {\n get: function get() {\n return this.description.getClientRectangle(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"textRectangle\", {\n get: function get() {\n return this.description.getTextRectangle(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"textEditRectangle\", {\n get: function get() {\n return this.description.getTextEditRectangle(this);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Shape.prototype, \"textAngle\", {\n get: function get() {\n return this.description.getTextAngle();\n },\n enumerable: false,\n configurable: true\n });\n\n Shape.prototype.toNative = function (units) {\n var item = new NativeItem_1.NativeShape(this.key, this.dataKey);\n item.type = this.description.key;\n item.text = this.text;\n item.position = this.position.clone();\n item.size = this.size.clone();\n item.attachedConnectorIds = this.attachedConnectors.map(function (c) {\n return c.key;\n });\n item.applyUnits(units);\n item.containerId = this.container ? this.container.key : null;\n item.containerChildItemIds = this.children.map(function (item) {\n return item.key;\n });\n item.containerExpanded = this.expanded;\n return item;\n };\n\n return Shape;\n }(DiagramItem_1.DiagramItem);\n\n exports.Shape = Shape;\n /***/\n },\n /* 14 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics6 = function extendStatics(d, b) {\n _extendStatics6 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics6(d, b);\n };\n\n return function (d, b) {\n _extendStatics6(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DiagramClipboardEvent = exports.DiagramKeyboardEvent = exports.DiagramContextMenuEvent = exports.DiagramWheelEvent = exports.DiagramMouseEvent = exports.DiagramMouseEventBase = exports.DiagramMouseEventTouch = exports.DiagramFocusEvent = exports.DiagramEvent = exports.ResizeEventSource = exports.MouseEventSource = exports.MouseEventElementType = exports.MouseButton = void 0;\n\n var key_1 = __webpack_require__(26);\n\n var common_1 = __webpack_require__(34);\n\n var MouseButton;\n\n (function (MouseButton) {\n MouseButton[MouseButton[\"None\"] = 0] = \"None\";\n MouseButton[MouseButton[\"Left\"] = 1] = \"Left\";\n MouseButton[MouseButton[\"Right\"] = 2] = \"Right\";\n MouseButton[MouseButton[\"Middle\"] = 4] = \"Middle\";\n })(MouseButton = exports.MouseButton || (exports.MouseButton = {}));\n\n var MouseEventElementType;\n\n (function (MouseEventElementType) {\n MouseEventElementType[MouseEventElementType[\"Undefined\"] = 0] = \"Undefined\";\n MouseEventElementType[MouseEventElementType[\"Background\"] = 1] = \"Background\";\n MouseEventElementType[MouseEventElementType[\"Document\"] = 2] = \"Document\";\n MouseEventElementType[MouseEventElementType[\"Connector\"] = 3] = \"Connector\";\n MouseEventElementType[MouseEventElementType[\"ConnectorPoint\"] = 4] = \"ConnectorPoint\";\n MouseEventElementType[MouseEventElementType[\"ConnectorSide\"] = 5] = \"ConnectorSide\";\n MouseEventElementType[MouseEventElementType[\"ConnectorOrthogonalSide\"] = 6] = \"ConnectorOrthogonalSide\";\n MouseEventElementType[MouseEventElementType[\"ConnectorText\"] = 7] = \"ConnectorText\";\n MouseEventElementType[MouseEventElementType[\"Shape\"] = 8] = \"Shape\";\n MouseEventElementType[MouseEventElementType[\"ShapeResizeBox\"] = 9] = \"ShapeResizeBox\";\n MouseEventElementType[MouseEventElementType[\"ShapeParameterBox\"] = 10] = \"ShapeParameterBox\";\n MouseEventElementType[MouseEventElementType[\"SelectionRect\"] = 11] = \"SelectionRect\";\n MouseEventElementType[MouseEventElementType[\"ShapeConnectionPoint\"] = 12] = \"ShapeConnectionPoint\";\n MouseEventElementType[MouseEventElementType[\"ShapeExpandButton\"] = 13] = \"ShapeExpandButton\";\n })(MouseEventElementType = exports.MouseEventElementType || (exports.MouseEventElementType = {}));\n\n var MouseEventSource =\n /** @class */\n function () {\n function MouseEventSource(type, key, value) {\n this.type = type;\n this.key = key;\n this.value = value;\n }\n\n return MouseEventSource;\n }();\n\n exports.MouseEventSource = MouseEventSource;\n var ResizeEventSource;\n\n (function (ResizeEventSource) {\n ResizeEventSource[ResizeEventSource[\"Undefined\"] = 0] = \"Undefined\";\n ResizeEventSource[ResizeEventSource[\"ResizeBox_NW\"] = 1] = \"ResizeBox_NW\";\n ResizeEventSource[ResizeEventSource[\"ResizeBox_NE\"] = 2] = \"ResizeBox_NE\";\n ResizeEventSource[ResizeEventSource[\"ResizeBox_SE\"] = 3] = \"ResizeBox_SE\";\n ResizeEventSource[ResizeEventSource[\"ResizeBox_SW\"] = 4] = \"ResizeBox_SW\";\n ResizeEventSource[ResizeEventSource[\"ResizeBox_N\"] = 5] = \"ResizeBox_N\";\n ResizeEventSource[ResizeEventSource[\"ResizeBox_E\"] = 6] = \"ResizeBox_E\";\n ResizeEventSource[ResizeEventSource[\"ResizeBox_S\"] = 7] = \"ResizeBox_S\";\n ResizeEventSource[ResizeEventSource[\"ResizeBox_W\"] = 8] = \"ResizeBox_W\";\n })(ResizeEventSource = exports.ResizeEventSource || (exports.ResizeEventSource = {}));\n\n var DiagramEvent =\n /** @class */\n function () {\n function DiagramEvent(modifiers) {\n this.modifiers = modifiers;\n }\n\n return DiagramEvent;\n }();\n\n exports.DiagramEvent = DiagramEvent;\n\n var DiagramFocusEvent =\n /** @class */\n function (_super) {\n __extends(DiagramFocusEvent, _super);\n\n function DiagramFocusEvent(inputText) {\n var _this = _super.call(this, key_1.ModifierKey.None) || this;\n\n _this.inputText = inputText;\n return _this;\n }\n\n return DiagramFocusEvent;\n }(DiagramEvent);\n\n exports.DiagramFocusEvent = DiagramFocusEvent;\n\n var DiagramMouseEventTouch =\n /** @class */\n function () {\n function DiagramMouseEventTouch(offsetPoint, modelPoint) {\n this.offsetPoint = offsetPoint;\n this.modelPoint = modelPoint;\n }\n\n return DiagramMouseEventTouch;\n }();\n\n exports.DiagramMouseEventTouch = DiagramMouseEventTouch;\n\n var DiagramMouseEventBase =\n /** @class */\n function (_super) {\n __extends(DiagramMouseEventBase, _super);\n\n function DiagramMouseEventBase(modifiers, offsetPoint, modelPoint, source) {\n var _this = _super.call(this, modifiers) || this;\n\n _this.offsetPoint = offsetPoint;\n _this.modelPoint = modelPoint;\n _this.source = source;\n return _this;\n }\n\n return DiagramMouseEventBase;\n }(DiagramEvent);\n\n exports.DiagramMouseEventBase = DiagramMouseEventBase;\n\n var DiagramMouseEvent =\n /** @class */\n function (_super) {\n __extends(DiagramMouseEvent, _super);\n\n function DiagramMouseEvent(modifiers, button, offsetPoint, modelPoint, source, touches, pointerType) {\n if (touches === void 0) {\n touches = [];\n }\n\n var _this = _super.call(this, modifiers, offsetPoint, modelPoint, source) || this;\n\n _this.button = button;\n _this.touches = touches;\n _this.pointerType = pointerType;\n _this.scrollX = 0;\n _this.scrollY = 0;\n return _this;\n }\n\n Object.defineProperty(DiagramMouseEvent.prototype, \"isTouchEvent\", {\n get: function get() {\n if (!common_1.isDefined(this.touches) || this.touches.length === 0) return false;\n if (common_1.isDefined(this.pointerType) && this.pointerType === \"mouse\") return false;\n return true;\n },\n enumerable: false,\n configurable: true\n });\n\n DiagramMouseEvent.prototype.clone = function () {\n return new DiagramMouseEvent(this.modifiers, this.button, this.offsetPoint.clone(), this.modelPoint.clone(), this.source, this.cloneTouches(), this.pointerType);\n };\n\n DiagramMouseEvent.prototype.cloneTouches = function () {\n if (common_1.isDefined(this.touches)) return this.touches.map(function (t) {\n return new DiagramMouseEventTouch(t.offsetPoint.clone(), t.modelPoint.clone());\n });\n };\n\n return DiagramMouseEvent;\n }(DiagramMouseEventBase);\n\n exports.DiagramMouseEvent = DiagramMouseEvent;\n\n var DiagramWheelEvent =\n /** @class */\n function (_super) {\n __extends(DiagramWheelEvent, _super);\n\n function DiagramWheelEvent(modifiers, deltaX, deltaY, offsetPoint, modelPoint, source) {\n var _this = _super.call(this, modifiers, offsetPoint, modelPoint, source) || this;\n\n _this.deltaX = deltaX;\n _this.deltaY = deltaY;\n return _this;\n }\n\n return DiagramWheelEvent;\n }(DiagramMouseEventBase);\n\n exports.DiagramWheelEvent = DiagramWheelEvent;\n\n var DiagramContextMenuEvent =\n /** @class */\n function (_super) {\n __extends(DiagramContextMenuEvent, _super);\n\n function DiagramContextMenuEvent(modifiers, eventPoint, modelPoint) {\n var _this = _super.call(this, modifiers) || this;\n\n _this.eventPoint = eventPoint;\n _this.modelPoint = modelPoint;\n return _this;\n }\n\n return DiagramContextMenuEvent;\n }(DiagramEvent);\n\n exports.DiagramContextMenuEvent = DiagramContextMenuEvent;\n\n var DiagramKeyboardEvent =\n /** @class */\n function (_super) {\n __extends(DiagramKeyboardEvent, _super);\n\n function DiagramKeyboardEvent(modifiers, keyCode, inputText) {\n var _this = _super.call(this, modifiers) || this;\n\n _this.keyCode = keyCode;\n _this.inputText = inputText;\n return _this;\n }\n\n DiagramKeyboardEvent.prototype.getShortcutCode = function () {\n return this.modifiers | this.keyCode;\n };\n\n return DiagramKeyboardEvent;\n }(DiagramEvent);\n\n exports.DiagramKeyboardEvent = DiagramKeyboardEvent;\n\n var DiagramClipboardEvent =\n /** @class */\n function (_super) {\n __extends(DiagramClipboardEvent, _super);\n\n function DiagramClipboardEvent(clipboardData) {\n var _this = _super.call(this, key_1.ModifierKey.None) || this;\n\n _this.clipboardData = clipboardData;\n return _this;\n }\n\n return DiagramClipboardEvent;\n }(DiagramEvent);\n\n exports.DiagramClipboardEvent = DiagramClipboardEvent;\n /***/\n },\n /* 15 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RenderHelper = exports.svgNS = void 0;\n\n var Diagnostics_1 = __webpack_require__(59);\n\n exports.svgNS = \"http://www.w3.org/2000/svg\";\n\n var RenderHelper =\n /** @class */\n function () {\n function RenderHelper() {}\n\n RenderHelper.createSvgElement = function (parent, forExport) {\n if (forExport === void 0) {\n forExport = false;\n }\n\n var svgElement = document.createElementNS(exports.svgNS, \"svg\");\n svgElement.className.baseVal = \"dxdi-canvas\" + (forExport ? \" export\" : \"\");\n parent && parent.appendChild(svgElement);\n return svgElement;\n };\n\n RenderHelper.createMainElement = function (parent, forMeasurer) {\n if (forMeasurer === void 0) {\n forMeasurer = false;\n }\n\n var element = document.createElement(\"div\");\n element.setAttribute(\"class\", \"dxdi-control\" + (forMeasurer ? \" measurer\" : \"\"));\n if (Diagnostics_1.Diagnostics.optimizeLayers) element.style.transform = \"translateZ(0)\";\n parent && parent.appendChild(element);\n return element;\n };\n\n RenderHelper.addEventListener = function (element, eventName, handler) {\n element.addEventListener(eventName, handler);\n };\n\n RenderHelper.removeEventListener = function (element, eventName, handler) {\n element.removeEventListener(eventName, handler);\n };\n\n return RenderHelper;\n }();\n\n exports.RenderHelper = RenderHelper;\n /***/\n },\n /* 16 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DiagramModelOperation = exports.ModelOperationSettings = void 0;\n\n var ModelOperationSettings =\n /** @class */\n function () {\n function ModelOperationSettings() {\n this._addShape = true;\n this._addShapeFromToolbox = true;\n this._deleteShape = true;\n this._deleteConnector = true;\n this._changeConnection = true;\n this._changeConnectorPoints = true;\n this._changeShapeText = true;\n this._changeConnectorText = true;\n this._resizeShape = true;\n this._moveShape = true;\n }\n\n Object.defineProperty(ModelOperationSettings.prototype, \"addShape\", {\n get: function get() {\n return this._addShape;\n },\n set: function set(value) {\n if (value !== this._addShape) this._addShape = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ModelOperationSettings.prototype, \"addShapeFromToolbox\", {\n get: function get() {\n return this._addShapeFromToolbox;\n },\n set: function set(value) {\n if (value !== this._addShapeFromToolbox) this._addShapeFromToolbox = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ModelOperationSettings.prototype, \"deleteShape\", {\n get: function get() {\n return this._deleteShape;\n },\n set: function set(value) {\n if (value !== this._deleteShape) this._deleteShape = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ModelOperationSettings.prototype, \"deleteConnector\", {\n get: function get() {\n return this._deleteConnector;\n },\n set: function set(value) {\n if (value !== this._deleteConnector) this._deleteConnector = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ModelOperationSettings.prototype, \"changeConnection\", {\n get: function get() {\n return this._changeConnection;\n },\n set: function set(value) {\n if (value !== this._changeConnection) this._changeConnection = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ModelOperationSettings.prototype, \"changeConnectorPoints\", {\n get: function get() {\n return this._changeConnectorPoints;\n },\n set: function set(value) {\n if (value !== this._changeConnectorPoints) this._changeConnectorPoints = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ModelOperationSettings.prototype, \"changeShapeText\", {\n get: function get() {\n return this._changeShapeText;\n },\n set: function set(value) {\n if (value !== this._changeShapeText) this._changeShapeText = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ModelOperationSettings.prototype, \"changeConnectorText\", {\n get: function get() {\n return this._changeConnectorText;\n },\n set: function set(value) {\n if (value !== this._changeConnectorText) this._changeConnectorText = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ModelOperationSettings.prototype, \"resizeShape\", {\n get: function get() {\n return this._resizeShape;\n },\n set: function set(value) {\n if (value !== this._resizeShape) this._resizeShape = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ModelOperationSettings.prototype, \"moveShape\", {\n get: function get() {\n return this._moveShape;\n },\n set: function set(value) {\n if (value !== this._moveShape) this._moveShape = value;\n },\n enumerable: false,\n configurable: true\n });\n\n ModelOperationSettings.prototype.applySettings = function (settings) {\n if (!settings) return;\n if (typeof settings.addShape === \"boolean\") this.addShape = settings.addShape;\n if (typeof settings.addShapeFromToolbox === \"boolean\") this.addShapeFromToolbox = settings.addShapeFromToolbox;\n if (typeof settings.deleteShape === \"boolean\") this.deleteShape = settings.deleteShape;\n if (typeof settings.deleteConnector === \"boolean\") this.deleteConnector = settings.deleteConnector;\n if (typeof settings.changeConnection === \"boolean\") this.changeConnection = settings.changeConnection;\n if (typeof settings.changeConnectorPoints === \"boolean\") this.changeConnectorPoints = settings.changeConnectorPoints;\n if (typeof settings.changeShapeText === \"boolean\") this.changeShapeText = settings.changeShapeText;\n if (typeof settings.changeConnectorText === \"boolean\") this.changeConnectorText = settings.changeConnectorText;\n if (typeof settings.resizeShape === \"boolean\") this.resizeShape = settings.resizeShape;\n if (typeof settings.moveShape === \"boolean\") this.moveShape = settings.moveShape;\n };\n\n return ModelOperationSettings;\n }();\n\n exports.ModelOperationSettings = ModelOperationSettings;\n var DiagramModelOperation;\n\n (function (DiagramModelOperation) {\n DiagramModelOperation[DiagramModelOperation[\"AddShape\"] = 0] = \"AddShape\";\n DiagramModelOperation[DiagramModelOperation[\"AddShapeFromToolbox\"] = 1] = \"AddShapeFromToolbox\";\n DiagramModelOperation[DiagramModelOperation[\"DeleteShape\"] = 2] = \"DeleteShape\";\n DiagramModelOperation[DiagramModelOperation[\"DeleteConnector\"] = 3] = \"DeleteConnector\";\n DiagramModelOperation[DiagramModelOperation[\"ChangeConnection\"] = 4] = \"ChangeConnection\";\n DiagramModelOperation[DiagramModelOperation[\"ChangeConnectorPoints\"] = 5] = \"ChangeConnectorPoints\";\n DiagramModelOperation[DiagramModelOperation[\"BeforeChangeShapeText\"] = 6] = \"BeforeChangeShapeText\";\n DiagramModelOperation[DiagramModelOperation[\"ChangeShapeText\"] = 7] = \"ChangeShapeText\";\n DiagramModelOperation[DiagramModelOperation[\"BeforeChangeConnectorText\"] = 8] = \"BeforeChangeConnectorText\";\n DiagramModelOperation[DiagramModelOperation[\"ChangeConnectorText\"] = 9] = \"ChangeConnectorText\";\n DiagramModelOperation[DiagramModelOperation[\"ResizeShape\"] = 10] = \"ResizeShape\";\n DiagramModelOperation[DiagramModelOperation[\"MoveShape\"] = 11] = \"MoveShape\";\n })(DiagramModelOperation = exports.DiagramModelOperation || (exports.DiagramModelOperation = {}));\n /***/\n\n },\n /* 17 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.raiseEvent = exports.isLeftButtonPressed = exports.RenderUtils = void 0;\n\n var Event_1 = __webpack_require__(14);\n\n var math_1 = __webpack_require__(32);\n\n var browser_1 = __webpack_require__(19);\n\n var evt_1 = __webpack_require__(60);\n\n var RenderUtils =\n /** @class */\n function () {\n function RenderUtils() {}\n\n RenderUtils.updateSvgElementSize = function (svgElement, width, height, forExport) {\n svgElement.style.width = width + \"px\";\n svgElement.style.height = height + \"px\";\n svgElement.setAttribute(\"viewBox\", \"0 0 \" + width + \" \" + height);\n\n if (forExport) {\n svgElement.setAttribute(\"width\", width.toString());\n svgElement.setAttribute(\"height\", height.toString());\n }\n };\n\n RenderUtils.removeElement = function (element) {\n element && element.parentNode && element.parentNode.removeChild(element);\n };\n\n RenderUtils.removeContent = function (element) {\n while (element && element.firstChild) {\n element.removeChild(element.firstChild);\n }\n };\n\n RenderUtils.setElementEventData = function (element, type, key, value) {\n if (type === Event_1.MouseEventElementType.Undefined) return;\n element.setAttribute(\"data-type\", type.toString());\n if (key !== undefined) element.setAttribute(\"data-key\", key.toString());\n if (value !== undefined) element.setAttribute(\"data-value\", value.toString());\n };\n\n RenderUtils.getElementEventData = function (element) {\n if (element.getAttribute && element.getAttribute(\"data-type\")) return new Event_1.MouseEventSource(parseInt(element.getAttribute(\"data-type\")), element.getAttribute(\"data-key\"), element.getAttribute(\"data-value\"));\n var className = element.getAttribute && element.getAttribute(\"class\");\n if (className === \"dxdi-page\" || className === \"dxdi-main\") return new Event_1.MouseEventSource(Event_1.MouseEventElementType.Document);\n };\n\n RenderUtils.getHtmlElementStylePropertyName = function (propertyName) {\n switch (propertyName) {\n case \"fill\":\n return \"color\";\n\n case \"text-anchor\":\n return \"text-align\";\n }\n\n return propertyName;\n };\n\n RenderUtils.getTextAnchorValue = function (propertyValue, reverseTextAnchor) {\n if (reverseTextAnchor === void 0) {\n reverseTextAnchor = false;\n }\n\n if (reverseTextAnchor) {\n if (propertyValue === \"start\") return \"end\";\n if (propertyValue === \"end\") return \"start\";\n }\n\n return propertyValue;\n };\n\n RenderUtils.getStrokeDasharrayValue = function (propertyValue, strokeWidth) {\n if (strokeWidth) {\n var dashArray = propertyValue && propertyValue.toString();\n var dashArrayParts = dashArray ? dashArray.split(/[\\s,]+/) : [];\n return dashArrayParts.map(function (v) {\n return parseInt(v) / 2 * strokeWidth;\n }).join(\",\");\n }\n\n return propertyValue;\n };\n\n RenderUtils.applyStyleToElement = function (style, element, reverseTextAnchor) {\n var _this = this;\n\n if (reverseTextAnchor === void 0) {\n reverseTextAnchor = false;\n }\n\n var defaultStyle = style.getDefaultInstance();\n style.forEach(function (propertyName) {\n var propertyValue = style[propertyName];\n var elPropertyName = element instanceof HTMLElement ? _this.getHtmlElementStylePropertyName(propertyName) : propertyName;\n\n if (propertyValue !== undefined && propertyValue !== \"\" && propertyValue !== defaultStyle[propertyName]) {\n switch (propertyName) {\n case \"text-anchor\":\n propertyValue = _this.getTextAnchorValue(propertyValue, reverseTextAnchor);\n break;\n\n case \"stroke-dasharray\":\n propertyValue = _this.getStrokeDasharrayValue(propertyValue, parseInt(style[\"stroke-width\"]));\n break;\n }\n\n element.style.setProperty(elPropertyName, propertyValue);\n } else element.style.setProperty(elPropertyName, \"\");\n });\n };\n\n RenderUtils.generateSvgElementId = function (prefix) {\n return prefix + \"_\" + math_1.MathUtils.generateGuid();\n };\n\n RenderUtils.getUrlPathById = function (id) {\n return \"url(#\" + id + \")\";\n };\n\n return RenderUtils;\n }();\n\n exports.RenderUtils = RenderUtils;\n\n function isLeftButtonPressed(evt) {\n return browser_1.Browser.MSTouchUI ? evt.button !== 2 : evt_1.EvtUtils.isLeftButtonPressed(evt);\n }\n\n exports.isLeftButtonPressed = isLeftButtonPressed;\n\n function raiseEvent(evt, _evt, raiseFunc) {\n raiseFunc(_evt);\n if (_evt.preventDefault) evt.preventDefault();\n }\n\n exports.raiseEvent = raiseEvent;\n /***/\n },\n /* 18 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics7 = function extendStatics(d, b) {\n _extendStatics7 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics7(d, b);\n };\n\n return function (d, b) {\n _extendStatics7(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RectangleShapeDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var RectangleShapeDescription =\n /** @class */\n function (_super) {\n __extends(RectangleShapeDescription, _super);\n\n function RectangleShapeDescription(defaultSize, hasDefaultText) {\n if (defaultSize === void 0) {\n defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.75);\n }\n\n return _super.call(this, defaultSize, hasDefaultText) || this;\n }\n\n Object.defineProperty(RectangleShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Rectangle;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RectangleShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n RectangleShapeDescription.prototype.createShapePrimitives = function (shape) {\n var _a = shape.rectangle,\n left = _a.x,\n top = _a.y,\n width = _a.width,\n height = _a.height;\n return [new RectaglePrimitive_1.RectanglePrimitive(left, top, width, height, shape.style)];\n };\n\n RectangleShapeDescription.prototype.getTextRectangle = function (shape) {\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\n };\n\n RectangleShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\n };\n\n return RectangleShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.RectangleShapeDescription = RectangleShapeDescription;\n /***/\n },\n /* 19 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Browser = function () {\n function Browser() {}\n\n Browser.IdentUserAgent = function (userAgent, ignoreDocumentMode) {\n if (ignoreDocumentMode === void 0) {\n ignoreDocumentMode = false;\n }\n\n var browserTypesOrderedList = ['Mozilla', 'IE', 'Firefox', 'Netscape', 'Safari', 'Chrome', 'Opera', 'Opera10', 'Edge'];\n var defaultBrowserType = 'IE';\n var defaultPlatform = 'Win';\n var defaultVersions = {\n Safari: 2,\n Chrome: 0.1,\n Mozilla: 1.9,\n Netscape: 8,\n Firefox: 2,\n Opera: 9,\n IE: 6,\n Edge: 12\n };\n\n if (!userAgent || userAgent.length === 0) {\n Browser.fillUserAgentInfo(browserTypesOrderedList, defaultBrowserType, defaultVersions[defaultBrowserType], defaultPlatform);\n return;\n }\n\n userAgent = userAgent.toLowerCase();\n Browser.indentPlatformMajorVersion(userAgent);\n\n try {\n var platformIdentStrings = {\n 'Windows': 'Win',\n 'Macintosh': 'Mac',\n 'Mac OS': 'Mac',\n 'Mac_PowerPC': 'Mac',\n 'cpu os': 'MacMobile',\n 'cpu iphone os': 'MacMobile',\n 'Android': 'Android',\n '!Windows Phone': 'WinPhone',\n '!WPDesktop': 'WinPhone',\n '!ZuneWP': 'WinPhone'\n };\n var optSlashOrSpace = '(?:/|\\\\s*)?';\n var versionString = '(\\\\d+)(?:\\\\.((?:\\\\d+?[1-9])|\\\\d)0*?)?';\n var optVersion = '(?:' + versionString + ')?';\n var patterns = {\n Safari: 'applewebkit(?:.*?(?:version/' + versionString + '[\\\\.\\\\w\\\\d]*?(?:\\\\s+mobile/\\\\S*)?\\\\s+safari))?',\n Chrome: '(?:chrome|crios)(?!frame)' + optSlashOrSpace + optVersion,\n Mozilla: 'mozilla(?:.*rv:' + optVersion + '.*Gecko)?',\n Netscape: '(?:netscape|navigator)\\\\d*/?\\\\s*' + optVersion,\n Firefox: 'firefox' + optSlashOrSpace + optVersion,\n Opera: '(?:opera|\\\\sopr)' + optSlashOrSpace + optVersion,\n Opera10: 'opera.*\\\\s*version' + optSlashOrSpace + optVersion,\n IE: 'msie\\\\s*' + optVersion,\n Edge: 'edge' + optSlashOrSpace + optVersion\n };\n var browserType = null;\n var version = -1;\n\n for (var i = 0; i < browserTypesOrderedList.length; i++) {\n var browserTypeCandidate = browserTypesOrderedList[i];\n var regExp = new RegExp(patterns[browserTypeCandidate], 'i');\n var matches = regExp.exec(userAgent);\n\n if (matches && matches.index >= 0) {\n if (browserType === 'IE' && version >= 11 && browserTypeCandidate === 'Safari') continue;\n browserType = browserTypeCandidate;\n if (browserType === 'Opera10') browserType = 'Opera';\n var tridentPattern = 'trident' + optSlashOrSpace + optVersion;\n version = Browser.GetBrowserVersion(userAgent, matches, tridentPattern, Browser.getIECompatibleVersionString());\n if (browserType === 'Mozilla' && version >= 11) browserType = 'IE';\n }\n }\n\n if (!browserType) browserType = defaultBrowserType;\n var browserVersionDetected = version !== -1;\n if (!browserVersionDetected) version = defaultVersions[browserType];\n var platform = null;\n var minOccurenceIndex = Number.MAX_VALUE;\n\n for (var identStr in platformIdentStrings) {\n if (!Object.prototype.hasOwnProperty.call(platformIdentStrings, identStr)) continue;\n var importantIdent = identStr.substr(0, 1) === '!';\n var occurenceIndex = userAgent.indexOf((importantIdent ? identStr.substr(1) : identStr).toLowerCase());\n\n if (occurenceIndex >= 0 && (occurenceIndex < minOccurenceIndex || importantIdent)) {\n minOccurenceIndex = importantIdent ? 0 : occurenceIndex;\n platform = platformIdentStrings[identStr];\n }\n }\n\n var samsungPattern = 'SM-[A-Z]';\n var m = userAgent.toUpperCase().match(samsungPattern);\n var isSamsungAndroidDevice = m && m.length > 0;\n if (platform === 'WinPhone' && version < 9) version = Math.floor(Browser.getVersionFromTrident(userAgent, 'trident' + optSlashOrSpace + optVersion));\n if (!ignoreDocumentMode && browserType === 'IE' && version > 7 && document.documentMode < version) version = document.documentMode;\n if (platform === 'WinPhone') version = Math.max(9, version);\n if (!platform) platform = defaultPlatform;\n if (platform === platformIdentStrings['cpu os'] && !browserVersionDetected) version = 4;\n Browser.fillUserAgentInfo(browserTypesOrderedList, browserType, version, platform, isSamsungAndroidDevice);\n } catch (e) {\n Browser.fillUserAgentInfo(browserTypesOrderedList, defaultBrowserType, defaultVersions[defaultBrowserType], defaultPlatform);\n }\n };\n\n Browser.GetBrowserVersion = function (userAgent, matches, tridentPattern, ieCompatibleVersionString) {\n var version = Browser.getVersionFromMatches(matches);\n\n if (ieCompatibleVersionString) {\n var versionFromTrident = Browser.getVersionFromTrident(userAgent, tridentPattern);\n if (ieCompatibleVersionString === 'edge' || parseInt(ieCompatibleVersionString) === versionFromTrident) return versionFromTrident;\n }\n\n return version;\n };\n\n Browser.getIECompatibleVersionString = function () {\n if (document.compatible) {\n for (var i = 0; i < document.compatible.length; i++) {\n if (document.compatible[i].userAgent === 'IE' && document.compatible[i].version) return document.compatible[i].version.toLowerCase();\n }\n }\n\n return '';\n };\n\n Browser.isTouchEnabled = function () {\n return Browser.hasTouchStart() || Browser.hasMaxTouchPoints() || Browser.hasMsMaxTouchPoints();\n };\n\n Browser.hasTouchStart = function () {\n return 'ontouchstart' in window;\n };\n\n Browser.hasMaxTouchPoints = function () {\n return navigator['maxTouchPoints'] > 0;\n };\n\n Browser.hasMsMaxTouchPoints = function () {\n return navigator['msMaxTouchPoints'] > 0;\n };\n\n Browser.hasNavigator = function () {\n return typeof navigator !== 'undefined';\n };\n\n Browser.fillUserAgentInfo = function (browserTypesOrderedList, browserType, version, platform, isSamsungAndroidDevice) {\n if (isSamsungAndroidDevice === void 0) {\n isSamsungAndroidDevice = false;\n }\n\n for (var i = 0; i < browserTypesOrderedList.length; i++) {\n var type = browserTypesOrderedList[i];\n Browser[type] = type === browserType;\n }\n\n Browser.Version = Math.floor(10.0 * version) / 10.0;\n Browser.MajorVersion = Math.floor(Browser.Version);\n Browser.WindowsPlatform = platform === 'Win' || platform === 'WinPhone';\n Browser.MacOSMobilePlatform = platform === 'MacMobile' || platform === 'Mac' && Browser.isTouchEnabled();\n Browser.MacOSPlatform = platform === 'Mac' && !Browser.MacOSMobilePlatform;\n Browser.AndroidMobilePlatform = platform === 'Android';\n Browser.WindowsPhonePlatform = platform === 'WinPhone';\n Browser.WebKitFamily = Browser.Safari || Browser.Chrome || Browser.Opera && Browser.MajorVersion >= 15;\n Browser.NetscapeFamily = Browser.Netscape || Browser.Mozilla || Browser.Firefox;\n Browser.HardwareAcceleration = Browser.IE && Browser.MajorVersion >= 9 || Browser.Firefox && Browser.MajorVersion >= 4 || Browser.AndroidMobilePlatform && Browser.Chrome || Browser.Chrome && Browser.MajorVersion >= 37 || Browser.Safari && !Browser.WindowsPlatform || Browser.Edge || Browser.Opera && Browser.MajorVersion >= 46;\n Browser.WebKitTouchUI = Browser.MacOSMobilePlatform || Browser.AndroidMobilePlatform;\n var isIETouchUI = Browser.IE && Browser.MajorVersion > 9 && Browser.WindowsPlatform && Browser.UserAgent.toLowerCase().indexOf('touch') >= 0;\n Browser.MSTouchUI = isIETouchUI || Browser.Edge && !!window.navigator.maxTouchPoints;\n Browser.TouchUI = Browser.WebKitTouchUI || Browser.MSTouchUI;\n Browser.MobileUI = Browser.WebKitTouchUI || Browser.WindowsPhonePlatform;\n Browser.AndroidDefaultBrowser = Browser.AndroidMobilePlatform && !Browser.Chrome;\n Browser.AndroidChromeBrowser = Browser.AndroidMobilePlatform && Browser.Chrome;\n if (isSamsungAndroidDevice) Browser.SamsungAndroidDevice = isSamsungAndroidDevice;\n\n if (Browser.MSTouchUI) {\n var isARMArchitecture = Browser.UserAgent.toLowerCase().indexOf('arm;') > -1;\n Browser.VirtualKeyboardSupported = isARMArchitecture || Browser.WindowsPhonePlatform;\n } else Browser.VirtualKeyboardSupported = Browser.WebKitTouchUI;\n\n Browser.fillDocumentElementBrowserTypeClassNames(browserTypesOrderedList);\n };\n\n Browser.indentPlatformMajorVersion = function (userAgent) {\n var regex = /(?:(?:windows nt|macintosh|mac os|cpu os|cpu iphone os|android|windows phone|linux) )(\\d+)(?:[-0-9_.])*/;\n var matches = regex.exec(userAgent);\n if (matches) Browser.PlaformMajorVersion = matches[1];\n };\n\n Browser.getVersionFromMatches = function (matches) {\n var result = -1;\n var versionStr = '';\n\n if (matches) {\n if (matches[1]) {\n versionStr += matches[1];\n if (matches[2]) versionStr += '.' + matches[2];\n }\n\n if (versionStr !== '') {\n result = parseFloat(versionStr);\n if (isNaN(result)) result = -1;\n }\n }\n\n return result;\n };\n\n Browser.getVersionFromTrident = function (userAgent, tridentPattern) {\n var tridentDiffFromVersion = 4;\n var matches = new RegExp(tridentPattern, 'i').exec(userAgent);\n return Browser.getVersionFromMatches(matches) + tridentDiffFromVersion;\n };\n\n Browser.fillDocumentElementBrowserTypeClassNames = function (browserTypesOrderedList) {\n var documentElementClassName = '';\n var browserTypeslist = browserTypesOrderedList.concat(['WindowsPlatform', 'MacOSPlatform', 'MacOSMobilePlatform', 'AndroidMobilePlatform', 'WindowsPhonePlatform', 'WebKitFamily', 'WebKitTouchUI', 'MSTouchUI', 'TouchUI', 'AndroidDefaultBrowser']);\n\n for (var i = 0; i < browserTypeslist.length; i++) {\n var type = browserTypeslist[i];\n if (Browser[type]) documentElementClassName += 'dx' + type + ' ';\n }\n\n documentElementClassName += 'dxBrowserVersion-' + Browser.MajorVersion;\n\n if (typeof document !== 'undefined' && document && document.documentElement) {\n if (document.documentElement.className !== '') documentElementClassName = ' ' + documentElementClassName;\n document.documentElement.className += documentElementClassName;\n Browser.Info = documentElementClassName;\n }\n };\n\n Browser.getUserAgent = function () {\n return Browser.hasNavigator() && navigator.userAgent ? navigator.userAgent.toLowerCase() : '';\n };\n\n Browser.UserAgent = Browser.getUserAgent();\n Browser._foo = Browser.IdentUserAgent(Browser.UserAgent);\n return Browser;\n }();\n\n exports.Browser = Browser;\n /***/\n },\n /* 20 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics8 = function extendStatics(d, b) {\n _extendStatics8 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics8(d, b);\n };\n\n return function (d, b) {\n _extendStatics8(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Alignment = exports.DataLayoutOrientation = exports.LogicalDirectionKind = exports.TreeLayoutSettings = exports.LayoutSettings = void 0;\n\n var Connector_1 = __webpack_require__(6);\n\n var LayoutSettings =\n /** @class */\n function () {\n function LayoutSettings(gridSize) {\n this.orientation = DataLayoutOrientation.Vertical;\n this.direction = LogicalDirectionKind.Forward;\n var baseSpacing = gridSize && gridSize * 2 > Connector_1.Connector.minOffset ? gridSize * 2 : Connector_1.Connector.minOffset;\n this.columnSpacing = baseSpacing;\n this.layerSpacing = baseSpacing * 2;\n this.containerPadding = baseSpacing * 2;\n this.componentSpacing = baseSpacing * 2;\n }\n\n return LayoutSettings;\n }();\n\n exports.LayoutSettings = LayoutSettings;\n\n var TreeLayoutSettings =\n /** @class */\n function (_super) {\n __extends(TreeLayoutSettings, _super);\n\n function TreeLayoutSettings(gridSize) {\n var _this = _super.call(this, gridSize) || this;\n\n _this.alignment = Alignment.Center;\n _this.subTreeColumnSpacing = _this.componentSpacing / 2;\n return _this;\n }\n\n return TreeLayoutSettings;\n }(LayoutSettings);\n\n exports.TreeLayoutSettings = TreeLayoutSettings;\n var LogicalDirectionKind;\n\n (function (LogicalDirectionKind) {\n LogicalDirectionKind[LogicalDirectionKind[\"Backward\"] = 0] = \"Backward\";\n LogicalDirectionKind[LogicalDirectionKind[\"Forward\"] = 1] = \"Forward\";\n })(LogicalDirectionKind = exports.LogicalDirectionKind || (exports.LogicalDirectionKind = {}));\n\n var DataLayoutOrientation;\n\n (function (DataLayoutOrientation) {\n DataLayoutOrientation[DataLayoutOrientation[\"Horizontal\"] = 0] = \"Horizontal\";\n DataLayoutOrientation[DataLayoutOrientation[\"Vertical\"] = 1] = \"Vertical\";\n })(DataLayoutOrientation = exports.DataLayoutOrientation || (exports.DataLayoutOrientation = {}));\n\n var Alignment;\n\n (function (Alignment) {\n Alignment[Alignment[\"Left\"] = 0] = \"Left\";\n Alignment[Alignment[\"Center\"] = 1] = \"Center\";\n })(Alignment = exports.Alignment || (exports.Alignment = {}));\n /***/\n\n },\n /* 21 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics9 = function extendStatics(d, b) {\n _extendStatics9 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics9(d, b);\n };\n\n return function (d, b) {\n _extendStatics9(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RectanglePrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var RectanglePrimitive =\n /** @class */\n function (_super) {\n __extends(RectanglePrimitive, _super);\n\n function RectanglePrimitive(x, y, width, height, style, className, clipPathId, onApplyProperties) {\n var _this = _super.call(this, style, className, clipPathId, onApplyProperties) || this;\n\n _this.x = x;\n _this.y = y;\n _this.width = width;\n _this.height = height;\n return _this;\n }\n\n RectanglePrimitive.prototype.createMainElement = function () {\n return document.createElementNS(RenderHelper_1.svgNS, \"rect\");\n };\n\n RectanglePrimitive.prototype.applyElementProperties = function (element, measurer) {\n this.setUnitAttribute(element, \"x\", this.x);\n this.setUnitAttribute(element, \"y\", this.y);\n this.setUnitAttribute(element, \"width\", this.width);\n this.setUnitAttribute(element, \"height\", this.height);\n this.setPositionCorrectionAttribute(element);\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n return RectanglePrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.RectanglePrimitive = RectanglePrimitive;\n /***/\n },\n /* 22 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var string_1 = __webpack_require__(50);\n\n var ColorUtils = function () {\n function ColorUtils() {}\n\n ColorUtils.getAlpha = function (color) {\n return color >> 24 & 255;\n };\n\n ColorUtils.getRed = function (color) {\n return color >> 16 & 255;\n };\n\n ColorUtils.getGreen = function (color) {\n return color >> 8 & 255;\n };\n\n ColorUtils.getBlue = function (color) {\n return color & 255;\n };\n\n ColorUtils.redPartToString = function (color) {\n var redStr = ColorUtils.getRed(color).toString(16);\n return redStr.length > 1 ? redStr : '0' + redStr;\n };\n\n ColorUtils.greenPartToString = function (color) {\n var greenStr = ColorUtils.getGreen(color).toString(16);\n return greenStr.length > 1 ? greenStr : '0' + greenStr;\n };\n\n ColorUtils.bluePartToString = function (color) {\n var blueStr = ColorUtils.getBlue(color).toString(16);\n return blueStr.length > 1 ? blueStr : '0' + blueStr;\n };\n\n ColorUtils.fromArgbNumber = function (alpha, red, green, blue) {\n return alpha << 24 | red << 16 | green << 8 | blue;\n };\n\n ColorUtils.fromRgbaString = function (color, alpha) {\n if (alpha === void 0) {\n alpha = 255;\n }\n\n var matchesRGBA = color.replace(/ +/g, '').match(/(rgba?)|(\\d+(\\.\\d+)?%?)|(\\.\\d+)/g);\n\n if (matchesRGBA && matchesRGBA.length > 3) {\n var result = [];\n\n for (var i = 1, matchItem = void 0; matchItem = matchesRGBA[i]; i++) {\n var item = matchItem.indexOf('%') !== -1 ? Math.round(parseFloat(matchItem) * 2.55) : parseInt(matchItem);\n if (item < 0 || item > 255) return null;\n result.push(item);\n }\n\n if (color.indexOf('rgba') === 0) {\n if (isNaN(result[3]) || result[3] < 0 || result[3] > 1) return null;else if (result[3] <= 1) result[3] = Math.round(result[3] * 255);\n } else if (result[3]) return null;\n\n return (result[0] & 255) << 16 | (result[1] & 255) << 8 | result[2] & 255 | ((result.length > 3 ? result[3] : alpha) & 255) << 24;\n }\n\n return null;\n };\n\n ColorUtils.fromHashString = function (hash, alpha) {\n if (alpha === void 0) {\n alpha = 255;\n }\n\n if (!ColorUtils.isHashColorString(hash)) return null;\n if (hash.charAt(0) === '#') hash = hash.substr(1);\n if (hash.length === 3) hash = string_1.StringUtils.repeat(hash.charAt(0), 2) + string_1.StringUtils.repeat(hash.charAt(1), 2) + string_1.StringUtils.repeat(hash.charAt(2), 2);\n return parseInt(hash, 16) | alpha << 24;\n };\n\n ColorUtils.fromColorName = function (color, alpha) {\n if (alpha === void 0) {\n alpha = 255;\n }\n\n var colorNameAsHash = ColorUtils.colorNames[color.toLowerCase()];\n return colorNameAsHash ? ColorUtils.fromHashString(colorNameAsHash, alpha) : null;\n };\n\n ColorUtils.fromString = function (color, alpha) {\n if (alpha === void 0) {\n alpha = 255;\n }\n\n var rgbaColor = ColorUtils.fromRgbaString(color, alpha);\n if (rgbaColor !== null) return rgbaColor;\n var hashColor = ColorUtils.fromHashString(color, alpha);\n if (hashColor !== null) return hashColor;\n return ColorUtils.fromColorName(color, alpha);\n };\n\n ColorUtils.colorToHash = function (color) {\n return '#' + ColorUtils.redPartToString(color) + ColorUtils.greenPartToString(color) + ColorUtils.bluePartToString(color);\n };\n\n ColorUtils.stringToHash = function (color) {\n var result = this.fromString(color);\n return result !== null ? this.colorToHash(result) : null;\n };\n\n ColorUtils.isHashColorString = function (color) {\n return /^#?([0-9a-f]{6})$/i.test(color) || /^#?([0-9a-f]{3})$/i.test(color);\n };\n\n ColorUtils.isKnownColorName = function (color) {\n return !!ColorUtils.colorNames[color.toLowerCase()];\n };\n\n ColorUtils.isGray = function (color) {\n var red = ColorUtils.getRed(color);\n return red === ColorUtils.getGreen(color) && red === ColorUtils.getBlue(color);\n };\n\n ColorUtils.DARK_COLOR = -16777216;\n ColorUtils.LIGHT_COLOR = -1;\n ColorUtils.colorNames = {\n aliceblue: '#f0f8ff',\n antiquewhite: '#faebd7',\n aqua: '#00ffff',\n aquamarine: '#7fffd4',\n azure: '#f0ffff',\n beige: '#f5f5dc',\n bisque: '#ffe4c4',\n black: '#000000',\n blanchedalmond: '#ffebcd',\n blue: '#0000ff',\n blueviolet: '#8a2be2',\n brown: '#a52a2a',\n burlywood: '#deb887',\n cadetblue: '#5f9ea0',\n chartreuse: '#7fff00',\n chocolate: '#d2691e',\n coral: '#ff7f50',\n cornflowerblue: '#6495ed',\n cornsilk: '#fff8dc',\n crimson: '#dc143c',\n cyan: '#00ffff',\n darkblue: '#00008b',\n darkcyan: '#008b8b',\n darkgoldenrod: '#b8860b',\n darkgray: '#a9a9a9',\n darkgreen: '#006400',\n darkkhaki: '#bdb76b',\n darkmagenta: '#8b008b',\n darkolivegreen: '#556b2f',\n darkorange: '#ff8c00',\n darkorchid: '#9932cc',\n darkred: '#8b0000',\n darksalmon: '#e9967a',\n darkseagreen: '#8fbc8f',\n darkslateblue: '#483d8b',\n darkslategray: '#2f4f4f',\n darkturquoise: '#00ced1',\n darkviolet: '#9400d3',\n deeppink: '#ff1493',\n deepskyblue: '#00bfff',\n dimgray: '#696969',\n dodgerblue: '#1e90ff',\n feldspar: '#d19275',\n firebrick: '#b22222',\n floralwhite: '#fffaf0',\n forestgreen: '#228b22',\n fuchsia: '#ff00ff',\n gainsboro: '#dcdcdc',\n ghostwhite: '#f8f8ff',\n gold: '#ffd700',\n goldenrod: '#daa520',\n gray: '#808080',\n green: '#00ff00',\n greenyellow: '#adff2f',\n honeydew: '#f0fff0',\n hotpink: '#ff69b4',\n indianred: '#cd5c5c',\n indigo: '#4b0082',\n ivory: '#fffff0',\n khaki: '#f0e68c',\n lavender: '#e6e6fa',\n lavenderblush: '#fff0f5',\n lawngreen: '#7cfc00',\n lemonchiffon: '#fffacd',\n lightblue: '#add8e6',\n lightcoral: '#f08080',\n lightcyan: '#e0ffff',\n lightgoldenrodyellow: '#fafad2',\n lightgray: '#d3d3d3',\n lightgreen: '#90ee90',\n lightpink: '#ffb6c1',\n lightsalmon: '#ffa07a',\n lightseagreen: '#20b2aa',\n lightskyblue: '#87cefa',\n lightslateblue: '#8470ff',\n lightslategray: '#778899',\n lightsteelblue: '#b0c4de',\n lightyellow: '#ffffe0',\n lime: '#00ff00',\n limegreen: '#32cd32',\n linen: '#faf0e6',\n magenta: '#ff00ff',\n maroon: '#800000',\n mediumaquamarine: '#66cdaa',\n mediumblue: '#0000cd',\n mediumorchid: '#ba55d3',\n mediumpurple: '#9370d8',\n mediumseagreen: '#3cb371',\n mediumslateblue: '#7b68ee',\n mediumspringgreen: '#00fa9a',\n mediumturquoise: '#48d1cc',\n mediumvioletred: '#c71585',\n midnightblue: '#191970',\n mintcream: '#f5fffa',\n mistyrose: '#ffe4e1',\n moccasin: '#ffe4b5',\n navajowhite: '#ffdead',\n navy: '#000080',\n oldlace: '#fdf5e6',\n olive: '#808000',\n olivedrab: '#6b8e23',\n orange: '#ffa500',\n orangered: '#ff4500',\n orchid: '#da70d6',\n palegoldenrod: '#eee8aa',\n palegreen: '#98fb98',\n paleturquoise: '#afeeee',\n palevioletred: '#d87093',\n papayawhip: '#ffefd5',\n peachpuff: '#ffdab9',\n peru: '#cd853f',\n pink: '#ffc0cb',\n plum: '#dda0dd',\n powderblue: '#b0e0e6',\n purple: '#800080',\n red: '#ff0000',\n rosybrown: '#bc8f8f',\n royalblue: '#4169e1',\n saddlebrown: '#8b4513',\n salmon: '#fa8072',\n sandybrown: '#f4a460',\n seagreen: '#2e8b57',\n seashell: '#fff5ee',\n sienna: '#a0522d',\n silver: '#c0c0c0',\n skyblue: '#87ceeb',\n slateblue: '#6a5acd',\n slategray: '#708090',\n snow: '#fffafa',\n springgreen: '#00ff7f',\n steelblue: '#4682b4',\n tan: '#d2b48c',\n teal: '#008080',\n thistle: '#d8bfd8',\n tomato: '#ff6347',\n turquoise: '#40e0d0',\n violet: '#ee82ee',\n violetred: '#d02090',\n wheat: '#f5deb3',\n white: '#ffffff',\n whitesmoke: '#f5f5f5',\n yellow: '#ffff00',\n yellowgreen: '#9acd32',\n windowtext: '#000000'\n };\n return ColorUtils;\n }();\n\n exports.ColorUtils = ColorUtils;\n /***/\n },\n /* 23 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(19);\n\n var common_1 = __webpack_require__(34);\n\n var math_1 = __webpack_require__(32);\n\n var string_1 = __webpack_require__(50);\n\n var DomUtils = function () {\n function DomUtils() {}\n\n DomUtils.clearInnerHtml = function (element) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n };\n\n DomUtils.setStylePosition = function (style, point) {\n style.left = math_1.MathUtils.round(point.x, 3) + 'px';\n style.top = math_1.MathUtils.round(point.y, 3) + 'px';\n };\n\n DomUtils.setStyleSize = function (style, size) {\n style.width = math_1.MathUtils.round(size.width, 3) + 'px';\n style.height = math_1.MathUtils.round(size.height, 3) + 'px';\n };\n\n DomUtils.setStyleSizeAndPosition = function (style, rectangle) {\n DomUtils.setStylePosition(style, rectangle);\n DomUtils.setStyleSize(style, rectangle);\n };\n\n DomUtils.hideNode = function (node) {\n if (node) {\n var parentNode = node.parentNode;\n if (parentNode) parentNode.removeChild(node);\n }\n };\n\n DomUtils.isHTMLElementNode = function (node) {\n return node.nodeType === Node.ELEMENT_NODE;\n };\n\n DomUtils.isTextNode = function (node) {\n return node.nodeType === Node.TEXT_NODE;\n };\n\n DomUtils.isElementNode = function (node) {\n return node.nodeType === Node.ELEMENT_NODE;\n };\n\n DomUtils.isHTMLTableRowElement = function (element) {\n return element.tagName === 'TR';\n };\n\n DomUtils.isItParent = function (parentElement, element) {\n if (!parentElement || !element) return false;\n\n while (element) {\n if (element === parentElement) return true;\n if (element.tagName === 'BODY') return false;\n element = element.parentNode;\n }\n\n return false;\n };\n\n DomUtils.getParentByTagName = function (element, tagName) {\n tagName = tagName.toUpperCase();\n\n while (element) {\n if (element.tagName === 'BODY') return null;\n if (element.tagName === tagName) return element;\n element = element.parentNode;\n }\n\n return null;\n };\n\n DomUtils.getDocumentScrollTop = function () {\n var isScrollBodyIE = browser_1.Browser.IE && DomUtils.getCurrentStyle(document.body).overflow === 'hidden' && document.body.scrollTop > 0;\n\n if (browser_1.Browser.WebKitFamily || browser_1.Browser.Edge || isScrollBodyIE) {\n if (browser_1.Browser.MacOSMobilePlatform) return window.pageYOffset;\n if (browser_1.Browser.WebKitFamily) return document.documentElement.scrollTop || document.body.scrollTop;\n return document.body.scrollTop;\n } else return document.documentElement.scrollTop;\n };\n\n DomUtils.getDocumentScrollLeft = function () {\n var isScrollBodyIE = browser_1.Browser.IE && DomUtils.getCurrentStyle(document.body).overflow === 'hidden' && document.body.scrollLeft > 0;\n if (browser_1.Browser.Edge || isScrollBodyIE) return document.body ? document.body.scrollLeft : document.documentElement.scrollLeft;\n if (browser_1.Browser.WebKitFamily) return document.documentElement.scrollLeft || document.body.scrollLeft;\n return document.documentElement.scrollLeft;\n };\n\n DomUtils.getCurrentStyle = function (element) {\n if (element.currentStyle) return element.currentStyle;else if (document.defaultView && document.defaultView.getComputedStyle) {\n var result = document.defaultView.getComputedStyle(element, null);\n\n if (!result && browser_1.Browser.Firefox && window.frameElement) {\n var changes = [];\n var curElement = window.frameElement;\n\n while (!(result = document.defaultView.getComputedStyle(element, null))) {\n changes.push([curElement, curElement.style.display]);\n curElement.style.setProperty('display', 'block', 'important');\n curElement = curElement.tagName === 'BODY' ? curElement.ownerDocument.defaultView.frameElement : curElement.parentNode;\n }\n\n result = cloneObject(result);\n\n for (var ch = void 0, i = 0; ch = changes[i]; i++) {\n ch[0].style.display = ch[1];\n }\n\n document.body.offsetWidth;\n }\n\n return result;\n }\n return window.getComputedStyle(element, null);\n };\n\n DomUtils.setFocus = function (element) {\n function focusCore() {\n try {\n element.focus();\n if (browser_1.Browser.IE && document.activeElement !== element) element.focus();\n } catch (e) {}\n }\n\n if (browser_1.Browser.MacOSMobilePlatform) focusCore();else {\n setTimeout(function () {\n focusCore();\n }, 100);\n }\n };\n\n DomUtils.hasClassName = function (element, className) {\n try {\n var classNames = className.split(' ');\n var classList = element.classList;\n\n if (classList) {\n for (var i = classNames.length - 1; i >= 0; i--) {\n if (!classList.contains(classNames[i])) return false;\n }\n } else {\n var elementClassName = element.getAttribute && element.getAttribute('class');\n if (!elementClassName) return false;\n var elementClasses = elementClassName.split(' ');\n\n for (var i = classNames.length - 1; i >= 0; i--) {\n if (elementClasses.indexOf(classNames[i]) < 0) return false;\n }\n }\n\n return true;\n } catch (e) {\n return false;\n }\n };\n\n DomUtils.addClassName = function (element, className) {\n if (!DomUtils.hasClassName(element, className)) {\n var elementClassName = element.getAttribute && element.getAttribute('class');\n element.setAttribute('class', elementClassName === '' ? className : elementClassName + \" \" + className);\n }\n };\n\n DomUtils.removeClassName = function (element, className) {\n var elementClassName = element.getAttribute && element.getAttribute('class');\n var updClassName = \" \" + elementClassName + \" \";\n var newClassName = updClassName.replace(\" \" + className + \" \", ' ');\n if (updClassName.length !== newClassName.length) element.setAttribute('class', string_1.StringUtils.trim(newClassName));\n };\n\n DomUtils.toggleClassName = function (element, className, toggle) {\n if (toggle === undefined) {\n if (DomUtils.hasClassName(element, className)) DomUtils.removeClassName(element, className);else DomUtils.addClassName(element, className);\n } else {\n if (toggle) DomUtils.addClassName(element, className);else DomUtils.removeClassName(element, className);\n }\n };\n\n DomUtils.pxToInt = function (px) {\n return pxToNumber(px, parseInt);\n };\n\n DomUtils.pxToFloat = function (px) {\n return pxToNumber(px, parseFloat);\n };\n\n DomUtils.getAbsolutePositionY = function (element) {\n function getAbsolutePositionY_IE(element) {\n return browser_1.Browser.IE && element.parentNode === null ? 0 : element.getBoundingClientRect().top + DomUtils.getDocumentScrollTop();\n }\n\n function getAbsolutePositionY_FF3(element) {\n return Math.round(element.getBoundingClientRect().top + DomUtils.getDocumentScrollTop());\n }\n\n function getAbsolutePositionY_Opera(curEl) {\n var isFirstCycle = true;\n if (curEl && DomUtils.isHTMLTableRowElement(curEl) && curEl.cells.length > 0) curEl = curEl.cells[0];\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, false);\n\n while (curEl != null) {\n pos += curEl.offsetTop;\n if (!isFirstCycle) pos -= curEl.scrollTop;\n curEl = curEl.offsetParent;\n isFirstCycle = false;\n }\n\n pos += document.body.scrollTop;\n return pos;\n }\n\n function getAbsolutePositionY_NS(curEl) {\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, false);\n var isFirstCycle = true;\n\n while (curEl != null) {\n pos += curEl.offsetTop;\n if (!isFirstCycle && curEl.offsetParent != null) pos -= curEl.scrollTop;\n\n if (!isFirstCycle && browser_1.Browser.Firefox) {\n var style = DomUtils.getCurrentStyle(curEl);\n if (curEl.tagName === 'DIV' && style.overflow !== 'visible') pos += DomUtils.pxToInt(style.borderTopWidth);\n }\n\n isFirstCycle = false;\n curEl = curEl.offsetParent;\n }\n\n return pos;\n }\n\n function getAbsolutePositionY_Other(curEl) {\n var pos = 0;\n var isFirstCycle = true;\n\n while (curEl != null) {\n pos += curEl.offsetTop;\n if (!isFirstCycle && curEl.offsetParent != null) pos -= curEl.scrollTop;\n isFirstCycle = false;\n curEl = curEl.offsetParent;\n }\n\n return pos;\n }\n\n if (!element) return 0;\n if (browser_1.Browser.IE) return getAbsolutePositionY_IE(element);else if (browser_1.Browser.Firefox && browser_1.Browser.Version >= 3) return getAbsolutePositionY_FF3(element);else if (browser_1.Browser.Opera) return getAbsolutePositionY_Opera(element);else if (browser_1.Browser.NetscapeFamily && (!browser_1.Browser.Firefox || browser_1.Browser.Version < 3)) return getAbsolutePositionY_NS(element);else if (browser_1.Browser.WebKitFamily || browser_1.Browser.Edge) return getAbsolutePositionY_FF3(element);\n return getAbsolutePositionY_Other(element);\n };\n\n DomUtils.getAbsolutePositionX = function (element) {\n function getAbsolutePositionX_IE(element) {\n return browser_1.Browser.IE && element.parentNode === null ? 0 : element.getBoundingClientRect().left + DomUtils.getDocumentScrollLeft();\n }\n\n function getAbsolutePositionX_FF3(element) {\n return Math.round(element.getBoundingClientRect().left + DomUtils.getDocumentScrollLeft());\n }\n\n function getAbsolutePositionX_Opera(curEl) {\n var isFirstCycle = true;\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, true);\n\n while (curEl != null) {\n pos += curEl.offsetLeft;\n if (!isFirstCycle) pos -= curEl.scrollLeft;\n curEl = curEl.offsetParent;\n isFirstCycle = false;\n }\n\n pos += document.body.scrollLeft;\n return pos;\n }\n\n function getAbsolutePositionX_NS(curEl) {\n var pos = getAbsoluteScrollOffset_OperaFF(curEl, true);\n var isFirstCycle = true;\n\n while (curEl != null) {\n pos += curEl.offsetLeft;\n if (!isFirstCycle && curEl.offsetParent != null) pos -= curEl.scrollLeft;\n\n if (!isFirstCycle && browser_1.Browser.Firefox) {\n var style = DomUtils.getCurrentStyle(curEl);\n if (curEl.tagName === 'DIV' && style.overflow !== 'visible') pos += DomUtils.pxToInt(style.borderLeftWidth);\n }\n\n isFirstCycle = false;\n curEl = curEl.offsetParent;\n }\n\n return pos;\n }\n\n function getAbsolutePositionX_Other(curEl) {\n var pos = 0;\n var isFirstCycle = true;\n\n while (curEl != null) {\n pos += curEl.offsetLeft;\n if (!isFirstCycle && curEl.offsetParent != null) pos -= curEl.scrollLeft;\n isFirstCycle = false;\n curEl = curEl.offsetParent;\n }\n\n return pos;\n }\n\n if (!element) return 0;\n if (browser_1.Browser.IE) return getAbsolutePositionX_IE(element);else if (browser_1.Browser.Firefox && browser_1.Browser.Version >= 3) return getAbsolutePositionX_FF3(element);else if (browser_1.Browser.Opera && browser_1.Browser.Version <= 12) return getAbsolutePositionX_Opera(element);else if (browser_1.Browser.NetscapeFamily && (!browser_1.Browser.Firefox || browser_1.Browser.Version < 3)) return getAbsolutePositionX_NS(element);else if (browser_1.Browser.WebKitFamily || browser_1.Browser.Edge) return getAbsolutePositionX_FF3(element);else return getAbsolutePositionX_Other(element);\n };\n\n DomUtils.isInteractiveControl = function (element) {\n return ['A', 'INPUT', 'SELECT', 'OPTION', 'TEXTAREA', 'BUTTON', 'IFRAME'].indexOf(element.tagName) > -1;\n };\n\n DomUtils.getClearClientHeight = function (element) {\n return element.offsetHeight - (DomUtils.getTopBottomPaddings(element) + DomUtils.getVerticalBordersWidth(element));\n };\n\n DomUtils.getTopBottomPaddings = function (element, style) {\n var currentStyle = style ? style : DomUtils.getCurrentStyle(element);\n return DomUtils.pxToInt(currentStyle.paddingTop) + DomUtils.pxToInt(currentStyle.paddingBottom);\n };\n\n DomUtils.getVerticalBordersWidth = function (element, style) {\n if (!common_1.isDefined(style)) style = browser_1.Browser.IE && browser_1.Browser.MajorVersion !== 9 && window.getComputedStyle ? window.getComputedStyle(element) : DomUtils.getCurrentStyle(element);\n var res = 0;\n if (style.borderTopStyle !== 'none') res += DomUtils.pxToFloat(style.borderTopWidth);\n if (style.borderBottomStyle !== 'none') res += DomUtils.pxToFloat(style.borderBottomWidth);\n return res;\n };\n\n DomUtils.getNodes = function (parent, predicate) {\n var collection = parent.all || parent.getElementsByTagName('*');\n var result = [];\n\n for (var i = 0; i < collection.length; i++) {\n var element = collection[i];\n if (predicate(element)) result.push(element);\n }\n\n return result;\n };\n\n DomUtils.getChildNodes = function (parent, predicate) {\n var collection = parent.childNodes;\n var result = [];\n\n for (var i = 0; i < collection.length; i++) {\n var element = collection[i];\n if (predicate(element)) result.push(element);\n }\n\n return result;\n };\n\n DomUtils.getNodesByClassName = function (parent, className) {\n if (parent.querySelectorAll) {\n var children = parent.querySelectorAll(\".\" + className);\n var result_1 = [];\n children.forEach(function (element) {\n return result_1.push(element);\n });\n return result_1;\n } else return DomUtils.getNodes(parent, function (elem) {\n return DomUtils.hasClassName(elem, className);\n });\n };\n\n DomUtils.getChildNodesByClassName = function (parent, className) {\n function nodeListToArray(nodeList, filter) {\n var result = [];\n\n for (var i = 0; i < nodeList.length; i++) {\n var element = nodeList[i];\n if (filter(element)) result.push(element);\n }\n\n return result;\n }\n\n if (parent.querySelectorAll) {\n var children = parent.querySelectorAll(\".\" + className);\n return nodeListToArray(children, function (element) {\n return element.parentNode === parent;\n });\n } else {\n return DomUtils.getChildNodes(parent, function (elem) {\n if (DomUtils.isElementNode(elem)) return common_1.isNonNullString(elem.className) && DomUtils.hasClassName(elem, elem.className);else return false;\n });\n }\n };\n\n DomUtils.getVerticalScrollBarWidth = function () {\n if (DomUtils.verticalScrollBarWidth === undefined) {\n var container = document.createElement('DIV');\n container.style.cssText = 'position: absolute; top: 0px; left: 0px; visibility: hidden; width: 200px; height: 150px; overflow: hidden; box-sizing: content-box';\n document.body.appendChild(container);\n var child = document.createElement('P');\n container.appendChild(child);\n child.style.cssText = 'width: 100%; height: 200px;';\n var widthWithoutScrollBar = child.offsetWidth;\n container.style.overflow = 'scroll';\n var widthWithScrollBar = child.offsetWidth;\n if (widthWithoutScrollBar === widthWithScrollBar) widthWithScrollBar = container.clientWidth;\n DomUtils.verticalScrollBarWidth = widthWithoutScrollBar - widthWithScrollBar;\n document.body.removeChild(container);\n }\n\n return DomUtils.verticalScrollBarWidth;\n };\n\n DomUtils.getHorizontalBordersWidth = function (element, style) {\n if (!common_1.isDefined(style)) style = browser_1.Browser.IE && window.getComputedStyle ? window.getComputedStyle(element) : DomUtils.getCurrentStyle(element);\n var res = 0;\n if (style.borderLeftStyle !== 'none') res += DomUtils.pxToFloat(style.borderLeftWidth);\n if (style.borderRightStyle !== 'none') res += DomUtils.pxToFloat(style.borderRightWidth);\n return res;\n };\n\n DomUtils.getFontFamiliesFromCssString = function (cssString) {\n return cssString.split(',').map(function (fam) {\n return string_1.StringUtils.trim(fam.replace(/'|\"/gi, ''));\n });\n };\n\n DomUtils.getInnerText = function (container) {\n if (browser_1.Browser.Safari && browser_1.Browser.MajorVersion <= 5) {\n if (DomUtils.html2PlainTextFilter === null) {\n DomUtils.html2PlainTextFilter = document.createElement('DIV');\n DomUtils.html2PlainTextFilter.style.width = '0';\n DomUtils.html2PlainTextFilter.style.height = '0';\n DomUtils.html2PlainTextFilter.style.overflow = 'visible';\n DomUtils.html2PlainTextFilter.style.display = 'none';\n document.body.appendChild(DomUtils.html2PlainTextFilter);\n }\n\n var filter = DomUtils.html2PlainTextFilter;\n filter.innerHTML = container.innerHTML;\n filter.style.display = '';\n var innerText = filter.innerText;\n filter.style.display = 'none';\n return innerText;\n } else if (browser_1.Browser.NetscapeFamily || browser_1.Browser.WebKitFamily || browser_1.Browser.IE && browser_1.Browser.Version >= 9 || browser_1.Browser.Edge) return container.textContent;else return container.innerText;\n };\n\n DomUtils.html2PlainTextFilter = null;\n DomUtils.verticalScrollBarWidth = undefined;\n return DomUtils;\n }();\n\n exports.DomUtils = DomUtils;\n\n function cloneObject(srcObject) {\n if (typeof srcObject !== 'object' || !common_1.isDefined(srcObject)) return srcObject;\n var newObject = {};\n\n for (var i in srcObject) {\n newObject[i] = srcObject[i];\n }\n\n return newObject;\n }\n\n function pxToNumber(px, parseFunction) {\n var result = 0;\n\n if (common_1.isDefined(px) && px !== '') {\n try {\n var indexOfPx = px.indexOf('px');\n if (indexOfPx > -1) result = parseFunction(px.substr(0, indexOfPx));\n } catch (e) {}\n }\n\n return result;\n }\n\n function getAbsoluteScrollOffset_OperaFF(curEl, isX) {\n var pos = 0;\n var isFirstCycle = true;\n\n while (curEl != null) {\n if (curEl.tagName === 'BODY') break;\n var style = DomUtils.getCurrentStyle(curEl);\n if (style.position === 'absolute') break;\n if (!isFirstCycle && curEl.tagName === 'DIV' && (style.position === '' || style.position === 'static')) pos -= isX ? curEl.scrollLeft : curEl.scrollTop;\n curEl = curEl.parentNode;\n isFirstCycle = false;\n }\n\n return pos;\n }\n /***/\n\n },\n /* 24 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PermissionRequestEventArgs = exports.RequestedEntity = void 0;\n\n var RequestedEntity =\n /** @class */\n function () {\n function RequestedEntity(apiController) {\n this.apiController = apiController;\n }\n\n Object.defineProperty(RequestedEntity.prototype, \"allowed\", {\n get: function get() {\n return this.eventArgs.allowed;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RequestedEntity.prototype, \"updateUI\", {\n get: function get() {\n return this.eventArgs.updateUI;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RequestedEntity.prototype, \"eventArgs\", {\n get: function get() {\n if (!this._eventArgs) this._eventArgs = this.createEventArgs();\n return this._eventArgs;\n },\n enumerable: false,\n configurable: true\n });\n return RequestedEntity;\n }();\n\n exports.RequestedEntity = RequestedEntity;\n\n var PermissionRequestEventArgs =\n /** @class */\n function () {\n function PermissionRequestEventArgs() {\n this.allowed = true;\n this.updateUI = false;\n }\n\n return PermissionRequestEventArgs;\n }();\n\n exports.PermissionRequestEventArgs = PermissionRequestEventArgs;\n /***/\n },\n /* 25 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics10 = function extendStatics(d, b) {\n _extendStatics10 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics10(d, b);\n };\n\n return function (d, b) {\n _extendStatics10(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SvgPrimitive = void 0;\n\n var Utils_1 = __webpack_require__(17);\n\n var PrimitiveObject_1 = __webpack_require__(111);\n\n var SvgPrimitive =\n /** @class */\n function (_super) {\n __extends(SvgPrimitive, _super);\n\n function SvgPrimitive(style, className, clipPathId, onApplyProperties) {\n var _this = _super.call(this, style) || this;\n\n _this.className = className;\n _this.clipPathId = clipPathId;\n _this.onApplyProperties = onApplyProperties;\n _this.children = [];\n return _this;\n }\n\n SvgPrimitive.prototype.createElement = function (insertInDOM) {\n var el = this.createMainElement();\n this.createChildElements(el);\n insertInDOM(el);\n this.createCustomContent(el);\n return el;\n };\n\n SvgPrimitive.prototype.createChildElements = function (parent) {\n for (var i = 0; i < this.children.length; i++) {\n this.children[i].createElement(function (el) {\n return parent.appendChild(el);\n });\n }\n };\n\n SvgPrimitive.prototype.applyElementProperties = function (element, measurer) {\n this.applyElementStyleProperties(element);\n if (this.className) element.setAttribute(\"class\", this.className);\n if (typeof this.clipPathId === \"string\") if (this.clipPathId) element.setAttribute(\"clip-path\", Utils_1.RenderUtils.getUrlPathById(this.clipPathId));else element.removeAttribute(\"clip-path\");\n if (this.onApplyProperties) this.onApplyProperties(element);\n this.applyChildrenProperties(element, measurer);\n };\n\n SvgPrimitive.prototype.applyChildrenProperties = function (element, measurer) {\n for (var i = 0; i < this.children.length; i++) {\n this.children[i].applyElementProperties(element.childNodes[i], measurer);\n }\n };\n\n SvgPrimitive.prototype.applyElementStyleProperties = function (element) {\n this.applyElementStylePropertiesCore(element);\n };\n\n SvgPrimitive.prototype.applyElementStylePropertiesCore = function (element, reverseTextAnchor) {\n if (reverseTextAnchor === void 0) {\n reverseTextAnchor = false;\n }\n\n if (this.style) Utils_1.RenderUtils.applyStyleToElement(this.style, element, reverseTextAnchor);\n };\n\n SvgPrimitive.prototype.createCustomContent = function (parent) {};\n\n SvgPrimitive.prototype.destroyCustomContent = function (parent) {};\n\n SvgPrimitive.prototype.dispose = function () {\n if (this.children) this.children.forEach(function (primitive) {\n return primitive.dispose();\n });\n };\n\n return SvgPrimitive;\n }(PrimitiveObject_1.PrimitiveObject);\n\n exports.SvgPrimitive = SvgPrimitive;\n /***/\n },\n /* 26 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(19);\n\n var encode_1 = __webpack_require__(173);\n\n var string_1 = __webpack_require__(50);\n\n var KeyUtils = function () {\n function KeyUtils() {}\n\n KeyUtils.getKeyModifiers = function (evt) {\n var result = 0;\n if (evt.altKey) result |= ModifierKey.Alt;\n if (evt.ctrlKey) result |= ModifierKey.Ctrl;\n if (evt.shiftKey) result |= ModifierKey.Shift;\n if (evt.metaKey) result |= ModifierKey.Meta;\n return result;\n };\n\n KeyUtils.getShortcutCode = function (keyCode, isCtrlKey, isShiftKey, isAltKey, isMetaKey) {\n var value = keyCode;\n value |= isCtrlKey ? ModifierKey.Ctrl : 0;\n value |= isShiftKey ? ModifierKey.Shift : 0;\n value |= isAltKey ? ModifierKey.Alt : 0;\n value |= isMetaKey ? ModifierKey.Meta : 0;\n return value;\n };\n\n KeyUtils.getShortcutCodeByEvent = function (evt) {\n return KeyUtils.getShortcutCode(KeyUtils.getEventKeyCode(evt), evt.ctrlKey, evt.shiftKey, evt.altKey, browser_1.Browser.MacOSPlatform ? evt.metaKey : false);\n };\n\n KeyUtils.getEventKeyCode = function (evt) {\n return browser_1.Browser.NetscapeFamily || browser_1.Browser.Opera ? evt.which : evt.keyCode;\n };\n\n KeyUtils.parseShortcutString = function (shortcutString) {\n if (!shortcutString) return 0;\n var isCtrlKey = false;\n var isShiftKey = false;\n var isAltKey = false;\n var isMetaKey = false;\n var keyCode = null;\n var shcKeys = shortcutString.toString().split('+');\n\n if (shcKeys.length > 0) {\n for (var i = 0; i < shcKeys.length; i++) {\n var key = string_1.StringUtils.trim(shcKeys[i].toUpperCase());\n\n switch (key) {\n case 'CONTROL':\n case 'CONTROLKEY':\n case 'CTRL':\n isCtrlKey = true;\n break;\n\n case 'SHIFT':\n case 'SHIFTKEY':\n isShiftKey = true;\n break;\n\n case 'ALT':\n isAltKey = true;\n break;\n\n case 'CMD':\n isMetaKey = true;\n break;\n\n case 'F1':\n keyCode = KeyCode.F1;\n break;\n\n case 'F2':\n keyCode = KeyCode.F2;\n break;\n\n case 'F3':\n keyCode = KeyCode.F3;\n break;\n\n case 'F4':\n keyCode = KeyCode.F4;\n break;\n\n case 'F5':\n keyCode = KeyCode.F5;\n break;\n\n case 'F6':\n keyCode = KeyCode.F6;\n break;\n\n case 'F7':\n keyCode = KeyCode.F7;\n break;\n\n case 'F8':\n keyCode = KeyCode.F8;\n break;\n\n case 'F9':\n keyCode = KeyCode.F9;\n break;\n\n case 'F10':\n keyCode = KeyCode.F10;\n break;\n\n case 'F11':\n keyCode = KeyCode.F11;\n break;\n\n case 'F12':\n keyCode = KeyCode.F12;\n break;\n\n case 'RETURN':\n case 'ENTER':\n keyCode = KeyCode.Enter;\n break;\n\n case 'HOME':\n keyCode = KeyCode.Home;\n break;\n\n case 'END':\n keyCode = KeyCode.End;\n break;\n\n case 'LEFT':\n keyCode = KeyCode.Left;\n break;\n\n case 'RIGHT':\n keyCode = KeyCode.Right;\n break;\n\n case 'UP':\n keyCode = KeyCode.Up;\n break;\n\n case 'DOWN':\n keyCode = KeyCode.Down;\n break;\n\n case 'PAGEUP':\n keyCode = KeyCode.PageUp;\n break;\n\n case 'PAGEDOWN':\n keyCode = KeyCode.PageDown;\n break;\n\n case 'SPACE':\n keyCode = KeyCode.Space;\n break;\n\n case 'TAB':\n keyCode = KeyCode.Tab;\n break;\n\n case 'BACKSPACE':\n case 'BACK':\n keyCode = KeyCode.Backspace;\n break;\n\n case 'CONTEXT':\n keyCode = KeyCode.ContextMenu;\n break;\n\n case 'ESCAPE':\n case 'ESC':\n keyCode = KeyCode.Esc;\n break;\n\n case 'DELETE':\n case 'DEL':\n keyCode = KeyCode.Delete;\n break;\n\n case 'INSERT':\n case 'INS':\n keyCode = KeyCode.Insert;\n break;\n\n case 'PLUS':\n keyCode = '+'.charCodeAt(0);\n break;\n\n default:\n keyCode = key.charCodeAt(0);\n break;\n }\n }\n } else alert(encode_1.EncodeUtils.decodeViaTextArea('Invalid shortcut'));\n\n return KeyUtils.getShortcutCode(keyCode, isCtrlKey, isShiftKey, isAltKey, isMetaKey);\n };\n\n return KeyUtils;\n }();\n\n exports.KeyUtils = KeyUtils;\n var ModifierKey;\n\n (function (ModifierKey) {\n ModifierKey[ModifierKey[\"None\"] = 0] = \"None\";\n ModifierKey[ModifierKey[\"Ctrl\"] = 65536] = \"Ctrl\";\n ModifierKey[ModifierKey[\"Shift\"] = 262144] = \"Shift\";\n ModifierKey[ModifierKey[\"Alt\"] = 1048576] = \"Alt\";\n ModifierKey[ModifierKey[\"Meta\"] = 16777216] = \"Meta\";\n })(ModifierKey = exports.ModifierKey || (exports.ModifierKey = {}));\n\n var KeyCode;\n\n (function (KeyCode) {\n KeyCode[KeyCode[\"Backspace\"] = 8] = \"Backspace\";\n KeyCode[KeyCode[\"Tab\"] = 9] = \"Tab\";\n KeyCode[KeyCode[\"Enter\"] = 13] = \"Enter\";\n KeyCode[KeyCode[\"Pause\"] = 19] = \"Pause\";\n KeyCode[KeyCode[\"CapsLock\"] = 20] = \"CapsLock\";\n KeyCode[KeyCode[\"Esc\"] = 27] = \"Esc\";\n KeyCode[KeyCode[\"Space\"] = 32] = \"Space\";\n KeyCode[KeyCode[\"PageUp\"] = 33] = \"PageUp\";\n KeyCode[KeyCode[\"PageDown\"] = 34] = \"PageDown\";\n KeyCode[KeyCode[\"End\"] = 35] = \"End\";\n KeyCode[KeyCode[\"Home\"] = 36] = \"Home\";\n KeyCode[KeyCode[\"Left\"] = 37] = \"Left\";\n KeyCode[KeyCode[\"Up\"] = 38] = \"Up\";\n KeyCode[KeyCode[\"Right\"] = 39] = \"Right\";\n KeyCode[KeyCode[\"Down\"] = 40] = \"Down\";\n KeyCode[KeyCode[\"Insert\"] = 45] = \"Insert\";\n KeyCode[KeyCode[\"Delete\"] = 46] = \"Delete\";\n KeyCode[KeyCode[\"Key_0\"] = 48] = \"Key_0\";\n KeyCode[KeyCode[\"Key_1\"] = 49] = \"Key_1\";\n KeyCode[KeyCode[\"Key_2\"] = 50] = \"Key_2\";\n KeyCode[KeyCode[\"Key_3\"] = 51] = \"Key_3\";\n KeyCode[KeyCode[\"Key_4\"] = 52] = \"Key_4\";\n KeyCode[KeyCode[\"Key_5\"] = 53] = \"Key_5\";\n KeyCode[KeyCode[\"Key_6\"] = 54] = \"Key_6\";\n KeyCode[KeyCode[\"Key_7\"] = 55] = \"Key_7\";\n KeyCode[KeyCode[\"Key_8\"] = 56] = \"Key_8\";\n KeyCode[KeyCode[\"Key_9\"] = 57] = \"Key_9\";\n KeyCode[KeyCode[\"Key_a\"] = 65] = \"Key_a\";\n KeyCode[KeyCode[\"Key_b\"] = 66] = \"Key_b\";\n KeyCode[KeyCode[\"Key_c\"] = 67] = \"Key_c\";\n KeyCode[KeyCode[\"Key_d\"] = 68] = \"Key_d\";\n KeyCode[KeyCode[\"Key_e\"] = 69] = \"Key_e\";\n KeyCode[KeyCode[\"Key_f\"] = 70] = \"Key_f\";\n KeyCode[KeyCode[\"Key_g\"] = 71] = \"Key_g\";\n KeyCode[KeyCode[\"Key_h\"] = 72] = \"Key_h\";\n KeyCode[KeyCode[\"Key_i\"] = 73] = \"Key_i\";\n KeyCode[KeyCode[\"Key_j\"] = 74] = \"Key_j\";\n KeyCode[KeyCode[\"Key_k\"] = 75] = \"Key_k\";\n KeyCode[KeyCode[\"Key_l\"] = 76] = \"Key_l\";\n KeyCode[KeyCode[\"Key_m\"] = 77] = \"Key_m\";\n KeyCode[KeyCode[\"Key_n\"] = 78] = \"Key_n\";\n KeyCode[KeyCode[\"Key_o\"] = 79] = \"Key_o\";\n KeyCode[KeyCode[\"Key_p\"] = 80] = \"Key_p\";\n KeyCode[KeyCode[\"Key_q\"] = 81] = \"Key_q\";\n KeyCode[KeyCode[\"Key_r\"] = 82] = \"Key_r\";\n KeyCode[KeyCode[\"Key_s\"] = 83] = \"Key_s\";\n KeyCode[KeyCode[\"Key_t\"] = 84] = \"Key_t\";\n KeyCode[KeyCode[\"Key_u\"] = 85] = \"Key_u\";\n KeyCode[KeyCode[\"Key_v\"] = 86] = \"Key_v\";\n KeyCode[KeyCode[\"Key_w\"] = 87] = \"Key_w\";\n KeyCode[KeyCode[\"Key_x\"] = 88] = \"Key_x\";\n KeyCode[KeyCode[\"Key_y\"] = 89] = \"Key_y\";\n KeyCode[KeyCode[\"Key_z\"] = 90] = \"Key_z\";\n KeyCode[KeyCode[\"Windows\"] = 91] = \"Windows\";\n KeyCode[KeyCode[\"ContextMenu\"] = 93] = \"ContextMenu\";\n KeyCode[KeyCode[\"Numpad_0\"] = 96] = \"Numpad_0\";\n KeyCode[KeyCode[\"Numpad_1\"] = 97] = \"Numpad_1\";\n KeyCode[KeyCode[\"Numpad_2\"] = 98] = \"Numpad_2\";\n KeyCode[KeyCode[\"Numpad_3\"] = 99] = \"Numpad_3\";\n KeyCode[KeyCode[\"Numpad_4\"] = 100] = \"Numpad_4\";\n KeyCode[KeyCode[\"Numpad_5\"] = 101] = \"Numpad_5\";\n KeyCode[KeyCode[\"Numpad_6\"] = 102] = \"Numpad_6\";\n KeyCode[KeyCode[\"Numpad_7\"] = 103] = \"Numpad_7\";\n KeyCode[KeyCode[\"Numpad_8\"] = 104] = \"Numpad_8\";\n KeyCode[KeyCode[\"Numpad_9\"] = 105] = \"Numpad_9\";\n KeyCode[KeyCode[\"Multiply\"] = 106] = \"Multiply\";\n KeyCode[KeyCode[\"Add\"] = 107] = \"Add\";\n KeyCode[KeyCode[\"Subtract\"] = 109] = \"Subtract\";\n KeyCode[KeyCode[\"Decimal\"] = 110] = \"Decimal\";\n KeyCode[KeyCode[\"Divide\"] = 111] = \"Divide\";\n KeyCode[KeyCode[\"F1\"] = 112] = \"F1\";\n KeyCode[KeyCode[\"F2\"] = 113] = \"F2\";\n KeyCode[KeyCode[\"F3\"] = 114] = \"F3\";\n KeyCode[KeyCode[\"F4\"] = 115] = \"F4\";\n KeyCode[KeyCode[\"F5\"] = 116] = \"F5\";\n KeyCode[KeyCode[\"F6\"] = 117] = \"F6\";\n KeyCode[KeyCode[\"F7\"] = 118] = \"F7\";\n KeyCode[KeyCode[\"F8\"] = 119] = \"F8\";\n KeyCode[KeyCode[\"F9\"] = 120] = \"F9\";\n KeyCode[KeyCode[\"F10\"] = 121] = \"F10\";\n KeyCode[KeyCode[\"F11\"] = 122] = \"F11\";\n KeyCode[KeyCode[\"F12\"] = 123] = \"F12\";\n KeyCode[KeyCode[\"NumLock\"] = 144] = \"NumLock\";\n KeyCode[KeyCode[\"ScrollLock\"] = 145] = \"ScrollLock\";\n KeyCode[KeyCode[\"Semicolon\"] = 186] = \"Semicolon\";\n KeyCode[KeyCode[\"Equals\"] = 187] = \"Equals\";\n KeyCode[KeyCode[\"Comma\"] = 188] = \"Comma\";\n KeyCode[KeyCode[\"Dash\"] = 189] = \"Dash\";\n KeyCode[KeyCode[\"Period\"] = 190] = \"Period\";\n KeyCode[KeyCode[\"ForwardSlash\"] = 191] = \"ForwardSlash\";\n KeyCode[KeyCode[\"GraveAccent\"] = 192] = \"GraveAccent\";\n KeyCode[KeyCode[\"OpenBracket\"] = 219] = \"OpenBracket\";\n KeyCode[KeyCode[\"BackSlash\"] = 220] = \"BackSlash\";\n KeyCode[KeyCode[\"CloseBracket\"] = 221] = \"CloseBracket\";\n KeyCode[KeyCode[\"SingleQuote\"] = 222] = \"SingleQuote\";\n })(KeyCode = exports.KeyCode || (exports.KeyCode = {}));\n /***/\n\n },\n /* 27 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics11 = function extendStatics(d, b) {\n _extendStatics11 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics11(d, b);\n };\n\n return function (d, b) {\n _extendStatics11(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EmptyStyle = exports.StrokeStyle = exports.TextAlignment = exports.TextStyle = exports.Style = exports.DEFAULT_STROKE_DASHARRAY = exports.DEFAULT_STROKE_WIDTH = exports.StyleBase = void 0;\n\n var color_1 = __webpack_require__(22);\n\n var Svg_1 = __webpack_require__(112);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var StyleBase =\n /** @class */\n function () {\n function StyleBase() {\n this.createDefaultProperties();\n }\n\n StyleBase.prototype.clone = function () {\n var _this = this;\n\n var style = this.createInstance();\n this.forEach(function (propertyName) {\n style[propertyName] = _this[propertyName];\n });\n return style;\n };\n\n StyleBase.prototype.forEach = function (callback) {\n for (var propertyName in this) {\n if (Object.prototype.hasOwnProperty.call(this, propertyName)) callback(propertyName);\n }\n };\n\n Object.defineProperty(StyleBase.prototype, \"strokeWidthPx\", {\n get: function get() {\n return 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StyleBase.prototype, \"strokeWidth\", {\n get: function get() {\n return unit_converter_1.UnitConverter.pixelsToTwips(this.strokeWidthPx);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StyleBase.prototype, \"strokeOffset\", {\n get: function get() {\n return 0.5;\n },\n enumerable: false,\n configurable: true\n });\n\n StyleBase.prototype.toHash = function () {\n var obj = this.toObject();\n return !obj ? \"\" : Object.keys(obj).map(function (k) {\n return k + \"|\" + obj[k];\n }).join(\"\");\n };\n\n StyleBase.prototype.toObject = function () {\n var _this = this;\n\n var result = {};\n var modified = false;\n var defaultStyle = this.getDefaultInstance();\n this.forEach(function (key) {\n if (_this[key] !== defaultStyle[key]) {\n result[key] = _this[key];\n modified = true;\n }\n });\n return modified ? result : null;\n };\n\n StyleBase.prototype.fromObject = function (obj) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var value = Svg_1.isColorProperty(key) ? color_1.ColorUtils.stringToHash(obj[key]) : obj[key];\n this[key] = value;\n }\n }\n };\n\n return StyleBase;\n }();\n\n exports.StyleBase = StyleBase;\n exports.DEFAULT_STROKE_WIDTH = 2;\n exports.DEFAULT_STROKE_DASHARRAY = \"\";\n\n var Style =\n /** @class */\n function (_super) {\n __extends(Style, _super);\n\n function Style() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Style.prototype.createInstance = function () {\n return new Style();\n };\n\n Style.prototype.createDefaultProperties = function () {\n // Default values must be the same with css\n this[\"fill\"] = \"#ffffff\";\n this[\"stroke\"] = \"#000000\";\n this[\"stroke-width\"] = exports.DEFAULT_STROKE_WIDTH.toString();\n this[\"stroke-dasharray\"] = exports.DEFAULT_STROKE_DASHARRAY;\n };\n\n Style.prototype.getDefaultInstance = function () {\n return Style.defaultInstance;\n };\n\n Style.prototype.isDefaultStrokeDashArray = function () {\n return this[\"stroke-dasharray\"] === exports.DEFAULT_STROKE_DASHARRAY;\n };\n\n Style.prototype.resetStrokeDashArray = function () {\n this[\"stroke-dasharray\"] = exports.DEFAULT_STROKE_DASHARRAY;\n };\n\n Object.defineProperty(Style.prototype, \"strokeWidthPx\", {\n get: function get() {\n return parseInt(this[\"stroke-width\"]);\n },\n enumerable: false,\n configurable: true\n });\n Style.defaultInstance = new Style();\n return Style;\n }(StyleBase);\n\n exports.Style = Style;\n\n var TextStyle =\n /** @class */\n function (_super) {\n __extends(TextStyle, _super);\n\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TextStyle.prototype.createInstance = function () {\n return new TextStyle();\n };\n\n TextStyle.prototype.createDefaultProperties = function () {\n // Default values must be the same with css\n this[\"fill\"] = \"#000000\";\n this[\"font-family\"] = \"Arial\";\n this[\"font-size\"] = \"10pt\";\n this[\"font-weight\"] = \"\";\n this[\"font-style\"] = \"\";\n this[\"text-decoration\"] = \"\";\n this[\"text-anchor\"] = \"middle\";\n };\n\n TextStyle.prototype.getDefaultInstance = function () {\n return TextStyle.defaultInstance;\n };\n\n TextStyle.prototype.getAlignment = function () {\n switch (this[\"text-anchor\"]) {\n case \"left\":\n return TextAlignment.Left;\n\n case \"right\":\n return TextAlignment.Right;\n\n default:\n return TextAlignment.Center;\n }\n };\n\n TextStyle.defaultInstance = new TextStyle();\n return TextStyle;\n }(StyleBase);\n\n exports.TextStyle = TextStyle;\n var TextAlignment;\n\n (function (TextAlignment) {\n TextAlignment[TextAlignment[\"Left\"] = 0] = \"Left\";\n TextAlignment[TextAlignment[\"Right\"] = 1] = \"Right\";\n TextAlignment[TextAlignment[\"Center\"] = 2] = \"Center\";\n })(TextAlignment = exports.TextAlignment || (exports.TextAlignment = {}));\n\n var StrokeStyle =\n /** @class */\n function (_super) {\n __extends(StrokeStyle, _super);\n\n function StrokeStyle(strokeWidthPx, strokeOffset) {\n var _this = _super.call(this) || this;\n\n _this._strokeWidthPx = strokeWidthPx;\n _this._strokeOffset = strokeOffset;\n return _this;\n }\n\n StrokeStyle.prototype.createInstance = function () {\n return new StrokeStyle();\n };\n\n StrokeStyle.prototype.createDefaultProperties = function () {};\n\n StrokeStyle.prototype.getDefaultInstance = function () {\n return TextStyle.defaultInstance;\n };\n\n Object.defineProperty(StrokeStyle.prototype, \"strokeWidthPx\", {\n get: function get() {\n return this._strokeWidthPx || 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StrokeStyle.prototype, \"strokeOffset\", {\n get: function get() {\n return this._strokeOffset || 0;\n },\n enumerable: false,\n configurable: true\n });\n StrokeStyle.default1pxInstance = new StrokeStyle(1, 0.5);\n StrokeStyle.default1pxNegativeOffsetInstance = new StrokeStyle(1, -0.5);\n StrokeStyle.default2pxInstance = new StrokeStyle(2);\n return StrokeStyle;\n }(Style);\n\n exports.StrokeStyle = StrokeStyle;\n\n var EmptyStyle =\n /** @class */\n function (_super) {\n __extends(EmptyStyle, _super);\n\n function EmptyStyle(styles) {\n var _this = _super.call(this) || this;\n\n if (styles) Object.keys(styles).forEach(function (k) {\n return _this[k] = styles[k];\n });\n return _this;\n }\n\n EmptyStyle.prototype.createInstance = function () {\n return new EmptyStyle();\n };\n\n EmptyStyle.prototype.createDefaultProperties = function () {};\n\n EmptyStyle.prototype.getDefaultInstance = function () {\n return TextStyle.defaultInstance;\n };\n\n EmptyStyle.defaultInstance = new EmptyStyle();\n return EmptyStyle;\n }(Style);\n\n exports.EmptyStyle = EmptyStyle;\n /***/\n },\n /* 28 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorRoutingMode = exports.AutoZoomMode = exports.DiagramSettings = void 0;\n\n var Utils_1 = __webpack_require__(3);\n\n var size_1 = __webpack_require__(2);\n\n var Enums_1 = __webpack_require__(48);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var DiagramSettings =\n /** @class */\n function () {\n function DiagramSettings() {\n this.onZoomChanged = new Utils_1.EventDispatcher();\n this.onViewChanged = new Utils_1.EventDispatcher();\n this.onReadOnlyChanged = new Utils_1.EventDispatcher();\n this.onConnectorRoutingModeChanged = new Utils_1.EventDispatcher();\n this._zoomLevel = 1;\n this._zoomLevelWasChanged = false;\n this._zoomLevelItems = [0.5, 0.75, 1, 1.25, 1.5, 2, 3];\n this._simpleView = false;\n this._fullscreen = false;\n this._readOnly = false;\n this._autoZoom = AutoZoomMode.Disabled;\n this._snapToGrid = true;\n this._showGrid = true;\n this._contextMenuEnabled = true;\n this._gridSize = 180;\n this._gridSizeItems = [90, 180, 360, 720];\n this._pageSizeItems = [{\n size: new size_1.Size(12240, 15840),\n text: \"US-Letter ({width} x {height})\"\n }, {\n size: new size_1.Size(12240, 20160),\n text: \"US-Legal ({width} x {height})\"\n }, {\n size: new size_1.Size(15817, 24491),\n text: \"US-Tabloid ({width} x {height})\"\n }, {\n size: new size_1.Size(47679, 67408),\n text: \"A0 ({width} x {height})\"\n }, {\n size: new size_1.Size(33676, 47679),\n text: \"A1 ({width} x {height})\"\n }, {\n size: new size_1.Size(23811, 33676),\n text: \"A2 ({width} x {height})\"\n }, {\n size: new size_1.Size(16838, 23811),\n text: \"A3 ({width} x {height})\"\n }, {\n size: new size_1.Size(11906, 16838),\n text: \"A4 ({width} x {height})\"\n }, {\n size: new size_1.Size(8391, 11906),\n text: \"A5 ({width} x {height})\"\n }, {\n size: new size_1.Size(5953, 8391),\n text: \"A6 ({width} x {height})\"\n }, {\n size: new size_1.Size(4195, 5953),\n text: \"A7 ({width} x {height})\"\n }];\n this._viewUnits = Enums_1.DiagramUnit.In;\n this._connectorRoutingMode = ConnectorRoutingMode.AllShapesOnly;\n this._reloadInsertedItemRequired = false;\n }\n\n Object.defineProperty(DiagramSettings.prototype, \"zoomLevel\", {\n get: function get() {\n return this._zoomLevel;\n },\n set: function set(value) {\n var _this = this;\n\n value = DiagramSettings.correctZoomLevel(value);\n\n if (value !== this._zoomLevel) {\n this._zoomLevel = value;\n this._zoomLevelWasChanged = true;\n this.onZoomChanged.raise1(function (listener) {\n return listener.notifyZoomChanged(value, _this._autoZoom);\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"zoomLevelWasChanged\", {\n get: function get() {\n return this._zoomLevelWasChanged;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"zoomLevelItems\", {\n get: function get() {\n return this._zoomLevelItems;\n },\n set: function set(value) {\n value = value.map(function (l) {\n return DiagramSettings.correctZoomLevel(l);\n });\n if (value !== this._zoomLevelItems) this._zoomLevelItems = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"autoZoom\", {\n get: function get() {\n return this._autoZoom;\n },\n set: function set(value) {\n var _this = this;\n\n if (value !== this._autoZoom) {\n this._autoZoom = value;\n this.onZoomChanged.raise1(function (l) {\n return l.notifyZoomChanged(_this._zoomLevel, value);\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"simpleView\", {\n get: function get() {\n return this._simpleView;\n },\n set: function set(value) {\n if (value !== this._simpleView) {\n this._simpleView = value;\n this.notifyViewChanged();\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"readOnly\", {\n get: function get() {\n return this._readOnly;\n },\n set: function set(value) {\n if (value !== this._readOnly) {\n this._readOnly = value;\n this.onReadOnlyChanged.raise1(function (listener) {\n return listener.notifyReadOnlyChanged(value);\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"fullscreen\", {\n get: function get() {\n return this._fullscreen;\n },\n set: function set(value) {\n this._fullscreen = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"snapToGrid\", {\n get: function get() {\n return this._snapToGrid;\n },\n set: function set(value) {\n this._snapToGrid = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"showGrid\", {\n get: function get() {\n return this._showGrid;\n },\n set: function set(value) {\n var _this = this;\n\n if (value !== this._showGrid) {\n this._showGrid = value;\n this.onViewChanged.raise1(function (l) {\n return l.notifyGridChanged(_this.showGrid, _this.gridSize);\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"contextMenuEnabled\", {\n get: function get() {\n return this._contextMenuEnabled;\n },\n set: function set(value) {\n this._contextMenuEnabled = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"gridSize\", {\n get: function get() {\n return this._gridSize;\n },\n set: function set(value) {\n var _this = this;\n\n if (value !== this._gridSize) {\n this._gridSize = value;\n this.onViewChanged.raise1(function (l) {\n return l.notifyGridChanged(_this.showGrid, _this.gridSize);\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"gridSizeItems\", {\n get: function get() {\n return this._gridSizeItems;\n },\n set: function set(value) {\n if (value !== this._gridSizeItems) this._gridSizeItems = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"pageSizeItems\", {\n get: function get() {\n return this._pageSizeItems;\n },\n set: function set(value) {\n if (value !== this._pageSizeItems) this._pageSizeItems = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"viewUnits\", {\n get: function get() {\n return this._viewUnits;\n },\n set: function set(value) {\n this._viewUnits = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"connectorRoutingMode\", {\n get: function get() {\n return this._connectorRoutingMode;\n },\n set: function set(value) {\n if (value !== this._connectorRoutingMode) {\n this._connectorRoutingMode = value;\n this.onConnectorRoutingModeChanged.raise1(function (listener) {\n return listener.notifyConnectorRoutingModeChanged(value);\n });\n }\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"reloadInsertedItemRequired\", {\n get: function get() {\n return this._reloadInsertedItemRequired;\n },\n set: function set(value) {\n this._reloadInsertedItemRequired = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"shapeMinWidth\", {\n get: function get() {\n return this._shapeMinWidth;\n },\n set: function set(value) {\n this._shapeMinWidth = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"shapeMinHeight\", {\n get: function get() {\n return this._shapeMinHeight;\n },\n set: function set(value) {\n this._shapeMinHeight = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"shapeMaxWidth\", {\n get: function get() {\n return this._shapeMaxWidth;\n },\n set: function set(value) {\n this._shapeMaxWidth = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramSettings.prototype, \"shapeMaxHeight\", {\n get: function get() {\n return this._shapeMaxHeight;\n },\n set: function set(value) {\n this._shapeMaxHeight = value;\n },\n enumerable: false,\n configurable: true\n });\n\n DiagramSettings.prototype.applyShapeSizeSettings = function (settings, units) {\n if (!settings) return;\n if (typeof settings.shapeMaxHeight === \"number\") this.shapeMaxHeight = ModelUtils_1.ModelUtils.getTwipsValue(units, settings.shapeMaxHeight);\n if (typeof settings.shapeMinHeight === \"number\") this.shapeMinHeight = ModelUtils_1.ModelUtils.getTwipsValue(units, settings.shapeMinHeight);\n if (typeof settings.shapeMaxWidth === \"number\") this.shapeMaxWidth = ModelUtils_1.ModelUtils.getTwipsValue(units, settings.shapeMaxWidth);\n if (typeof settings.shapeMinWidth === \"number\") this.shapeMinWidth = ModelUtils_1.ModelUtils.getTwipsValue(units, settings.shapeMinWidth);\n };\n\n DiagramSettings.prototype.notifyViewChanged = function () {\n var _this = this;\n\n this.onViewChanged.raise1(function (listener) {\n return listener.notifyViewChanged(_this._simpleView);\n });\n };\n\n DiagramSettings.correctZoomLevel = function (level) {\n return Math.min(10, Math.max(level, 0.01));\n };\n\n return DiagramSettings;\n }();\n\n exports.DiagramSettings = DiagramSettings;\n var AutoZoomMode;\n\n (function (AutoZoomMode) {\n AutoZoomMode[AutoZoomMode[\"Disabled\"] = 0] = \"Disabled\";\n AutoZoomMode[AutoZoomMode[\"FitContent\"] = 1] = \"FitContent\";\n AutoZoomMode[AutoZoomMode[\"FitToWidth\"] = 2] = \"FitToWidth\";\n })(AutoZoomMode = exports.AutoZoomMode || (exports.AutoZoomMode = {}));\n\n var ConnectorRoutingMode;\n\n (function (ConnectorRoutingMode) {\n ConnectorRoutingMode[ConnectorRoutingMode[\"None\"] = 0] = \"None\";\n ConnectorRoutingMode[ConnectorRoutingMode[\"ConnectorShapesOnly\"] = 1] = \"ConnectorShapesOnly\";\n ConnectorRoutingMode[ConnectorRoutingMode[\"AllShapesOnly\"] = 2] = \"AllShapesOnly\"; // AllDiagramItems = 3,\n })(ConnectorRoutingMode = exports.ConnectorRoutingMode || (exports.ConnectorRoutingMode = {}));\n /***/\n\n },\n /* 29 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics12 = function extendStatics(d, b) {\n _extendStatics12 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics12(d, b);\n };\n\n return function (d, b) {\n _extendStatics12(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorRenderPoint = void 0;\n\n var point_1 = __webpack_require__(1);\n\n var ConnectorRenderPoint =\n /** @class */\n function (_super) {\n __extends(ConnectorRenderPoint, _super);\n\n function ConnectorRenderPoint(x, y, pointIndex, skipped) {\n if (pointIndex === void 0) {\n pointIndex = -1;\n }\n\n if (skipped === void 0) {\n skipped = false;\n }\n\n var _this = _super.call(this, x, y) || this;\n\n _this.pointIndex = pointIndex;\n _this.skipped = skipped;\n return _this;\n } // todo delete that\n\n\n ConnectorRenderPoint.prototype.offset = function (offsetX, offsetY) {\n _super.prototype.offset.call(this, offsetX, offsetY);\n\n this.pointIndex = -1;\n this.skipped = false;\n return this;\n }; // todo delete that\n\n\n ConnectorRenderPoint.prototype.multiply = function (multiplierX, multiplierY) {\n _super.prototype.multiply.call(this, multiplierX, multiplierY);\n\n this.pointIndex = -1;\n this.skipped = false;\n return this;\n };\n\n ConnectorRenderPoint.prototype.clone = function () {\n return new ConnectorRenderPoint(this.x, this.y, this.pointIndex, this.skipped);\n };\n\n return ConnectorRenderPoint;\n }(point_1.Point);\n\n exports.ConnectorRenderPoint = ConnectorRenderPoint;\n /***/\n },\n /* 30 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorProperties = exports.DEFAULT_CONNECTOR_ENDLINEENDING = exports.DEFAULT_CONNECTOR_STARTLINEENDING = exports.DEFAULT_CONNECTOR_LINEOPTION = exports.ConnectorLineEnding = exports.ConnectorLineOption = void 0;\n var ConnectorLineOption;\n\n (function (ConnectorLineOption) {\n ConnectorLineOption[ConnectorLineOption[\"Straight\"] = 0] = \"Straight\";\n ConnectorLineOption[ConnectorLineOption[\"Orthogonal\"] = 1] = \"Orthogonal\";\n })(ConnectorLineOption = exports.ConnectorLineOption || (exports.ConnectorLineOption = {}));\n\n var ConnectorLineEnding;\n\n (function (ConnectorLineEnding) {\n ConnectorLineEnding[ConnectorLineEnding[\"None\"] = 0] = \"None\";\n ConnectorLineEnding[ConnectorLineEnding[\"Arrow\"] = 1] = \"Arrow\";\n ConnectorLineEnding[ConnectorLineEnding[\"OutlinedTriangle\"] = 2] = \"OutlinedTriangle\";\n ConnectorLineEnding[ConnectorLineEnding[\"FilledTriangle\"] = 3] = \"FilledTriangle\";\n })(ConnectorLineEnding = exports.ConnectorLineEnding || (exports.ConnectorLineEnding = {}));\n\n exports.DEFAULT_CONNECTOR_LINEOPTION = ConnectorLineOption.Orthogonal;\n exports.DEFAULT_CONNECTOR_STARTLINEENDING = ConnectorLineEnding.None;\n exports.DEFAULT_CONNECTOR_ENDLINEENDING = ConnectorLineEnding.Arrow;\n\n var ConnectorProperties =\n /** @class */\n function () {\n function ConnectorProperties() {\n this.lineOption = exports.DEFAULT_CONNECTOR_LINEOPTION;\n this.startLineEnding = exports.DEFAULT_CONNECTOR_STARTLINEENDING;\n this.endLineEnding = exports.DEFAULT_CONNECTOR_ENDLINEENDING;\n }\n\n ConnectorProperties.prototype.clone = function () {\n var clone = new ConnectorProperties();\n clone.lineOption = this.lineOption;\n clone.startLineEnding = this.startLineEnding;\n clone.endLineEnding = this.endLineEnding;\n return clone;\n };\n\n ConnectorProperties.prototype.forEach = function (callback) {\n for (var propertyName in this) {\n if (Object.prototype.hasOwnProperty.call(this, propertyName)) callback(propertyName);\n }\n };\n\n ConnectorProperties.prototype.toObject = function () {\n var result = {};\n var modified = false;\n\n if (this.lineOption !== exports.DEFAULT_CONNECTOR_LINEOPTION) {\n result[\"lineOption\"] = this.lineOption;\n modified = true;\n }\n\n if (this.startLineEnding !== exports.DEFAULT_CONNECTOR_STARTLINEENDING) {\n result[\"startLineEnding\"] = this.startLineEnding;\n modified = true;\n }\n\n if (this.endLineEnding !== exports.DEFAULT_CONNECTOR_ENDLINEENDING) {\n result[\"endLineEnding\"] = this.endLineEnding;\n modified = true;\n }\n\n return modified ? result : null;\n };\n\n ConnectorProperties.prototype.fromObject = function (obj) {\n if (typeof obj[\"lineOption\"] === \"number\") this.lineOption = obj[\"lineOption\"];\n if (typeof obj[\"startLineEnding\"] === \"number\") this.startLineEnding = obj[\"startLineEnding\"];\n if (typeof obj[\"endLineEnding\"] === \"number\") this.endLineEnding = obj[\"endLineEnding\"];\n };\n\n return ConnectorProperties;\n }();\n\n exports.ConnectorProperties = ConnectorProperties;\n /***/\n },\n /* 31 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ShapeParameterPoint = void 0;\n\n var ShapeParameterPoint =\n /** @class */\n function () {\n function ShapeParameterPoint(key, point) {\n this.key = key;\n this.point = point;\n }\n\n return ShapeParameterPoint;\n }();\n\n exports.ShapeParameterPoint = ShapeParameterPoint;\n /***/\n },\n /* 32 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var list_1 = __webpack_require__(82);\n\n var MathUtils = function () {\n function MathUtils() {}\n\n MathUtils.round = function (value, digits) {\n if (digits === void 0) {\n digits = 0;\n }\n\n var factor = MathUtils.powFactor[digits];\n return Math.round(value * factor) / factor;\n };\n\n MathUtils.numberCloseTo = function (num, to, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.00001;\n }\n\n return Math.abs(num - to) < accuracy;\n };\n\n MathUtils.restrictValue = function (val, minVal, maxVal) {\n if (maxVal < minVal) maxVal = minVal;\n if (val > maxVal) return maxVal;else if (val < minVal) return minVal;\n return val;\n };\n\n MathUtils.getRandomInt = function (min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n };\n\n MathUtils.generateGuid = function () {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = c === 'x' ? r : r & 0x3 | 0x8;\n return v.toString(16);\n });\n };\n\n MathUtils.powFactor = list_1.ListUtils.initByCallback(20, function (ind) {\n return Math.pow(10, ind);\n });\n MathUtils.somePrimes = [1009, 1013, 1019, 1021, 1031, 1033, 1039, 1049, 1051, 1061, 1063, 1069, 1087, 1091, 1093, 1097, 1103, 1109, 1117, 1123, 1129, 1151, 1153, 1163, 1171, 1181, 1187, 1193, 1201, 1213, 1217, 1223, 1229, 1231, 1237, 1249, 1259, 1277, 1279, 1283, 1289, 1291, 1297, 1301, 1303, 1307, 1319, 1321, 1327, 1361, 1367, 1373, 1381, 1399, 1409, 1423, 1427, 1429, 1433, 1439, 1447, 1451, 1453, 1459, 1471, 1481, 1483, 1487, 1489, 1493, 1499, 1511, 1523, 1531, 1543, 1549, 1553, 1559, 1567, 1571, 1579, 1583, 1597, 1601, 1607, 1609, 1613, 1619, 1621, 1627, 1637, 1657, 1663, 1667, 1669, 1693, 1697, 1699, 1709, 1721, 1723, 1733, 1741, 1747, 1753, 1759, 1777, 1783, 1787, 1789, 1801, 1811, 1823, 1831, 1847, 1861, 1867, 1871, 1873, 1877, 1879, 1889, 1901, 1907, 1913, 1931, 1933, 1949, 1951, 1973, 1979, 1987, 1993, 1997, 1999, 2003];\n return MathUtils;\n }();\n\n exports.MathUtils = MathUtils;\n /***/\n },\n /* 33 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var math_1 = __webpack_require__(32);\n\n var metrics_1 = __webpack_require__(36);\n\n var point_1 = __webpack_require__(1);\n\n var rectangle_1 = __webpack_require__(12);\n\n var Segment = function () {\n function Segment(startPoint, endPoint) {\n this.startPoint = startPoint;\n this.endPoint = endPoint;\n }\n\n Object.defineProperty(Segment.prototype, \"length\", {\n get: function get() {\n return metrics_1.Metrics.euclideanDistance(this.startPoint, this.endPoint);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Segment.prototype, \"xLength\", {\n get: function get() {\n return Math.abs(this.endPoint.x - this.startPoint.x);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Segment.prototype, \"yLength\", {\n get: function get() {\n return Math.abs(this.endPoint.y - this.startPoint.y);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Segment.prototype, \"center\", {\n get: function get() {\n return new point_1.Point(this.startPoint.x + (this.endPoint.x - this.startPoint.x) / 2, this.startPoint.y + (this.endPoint.y - this.startPoint.y) / 2);\n },\n enumerable: true,\n configurable: true\n });\n\n Segment.prototype.isIntersected = function (segment) {\n return this.startPoint.equals(segment.startPoint) || this.endPoint.equals(segment.startPoint) || this.startPoint.equals(segment.endPoint) || this.endPoint.equals(segment.endPoint) || this.intersectCore(segment) && segment.intersectCore(this);\n };\n\n Segment.prototype.containsPoint = function (point, accuracy) {\n if (accuracy === void 0) {\n accuracy = 0.0000001;\n }\n\n return this.startPoint.equals(point) || this.endPoint.equals(point) || math_1.MathUtils.numberCloseTo(this.length, metrics_1.Metrics.euclideanDistance(this.startPoint, point) + metrics_1.Metrics.euclideanDistance(this.endPoint, point), accuracy);\n };\n\n Segment.prototype.isIntersectedByRect = function (rect) {\n if (rectangle_1.Rectangle.containsPoint(rect, this.startPoint) || rectangle_1.Rectangle.containsPoint(rect, this.endPoint)) return true;\n var left = rect.x;\n var right = rect.x + rect.width;\n var top = rect.y;\n var bottom = rect.y + rect.height;\n return this.isIntersected(new Segment(new point_1.Point(left, top), new point_1.Point(left, bottom))) || this.isIntersected(new Segment(new point_1.Point(right, top), new point_1.Point(right, bottom))) || this.isIntersected(new Segment(new point_1.Point(left, top), new point_1.Point(right, top))) || this.isIntersected(new Segment(new point_1.Point(left, bottom), new point_1.Point(right, bottom)));\n };\n\n Segment.prototype.intersectCore = function (segment) {\n if (this.startPoint.x === this.endPoint.x) {\n if (this.startPoint.x - segment.endPoint.x !== 0) return (this.startPoint.x - segment.startPoint.x) / (this.startPoint.x - segment.endPoint.x) <= 0;\n if (segment.endPoint.y - this.endPoint.y !== 0) return (segment.endPoint.y - this.startPoint.y) / (segment.endPoint.y - this.endPoint.y) <= 0;\n }\n\n if (this.startPoint.y === this.endPoint.y) {\n if (this.startPoint.y - segment.endPoint.y !== 0) return (this.startPoint.y - segment.startPoint.y) / (this.startPoint.y - segment.endPoint.y) <= 0;\n if (segment.endPoint.x - this.endPoint.x !== 0) return (segment.endPoint.x - this.startPoint.x) / (segment.endPoint.x - this.endPoint.x) <= 0;\n }\n\n var tg = (this.endPoint.y - this.startPoint.y) / (this.endPoint.x - this.startPoint.x);\n var y1 = this.startPoint.y + (segment.startPoint.x - this.startPoint.x) * tg;\n var y2 = this.startPoint.y + (segment.endPoint.x - this.startPoint.x) * tg;\n var dy1 = segment.startPoint.y - y1;\n var dy2 = segment.endPoint.y - y2;\n\n if (dy1 === 0 && dy2 === 0) {\n return (this.startPoint.y - y1) / (this.endPoint.y - y1) <= 0 || (this.startPoint.y - y2) / (this.endPoint.y - y2) <= 0;\n }\n\n return dy1 === 0 || dy2 === 0 || dy1 / dy2 < 0;\n };\n\n return Segment;\n }();\n\n exports.Segment = Segment;\n /***/\n },\n /* 34 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var string_1 = __webpack_require__(50);\n\n function isDefined(value) {\n return value !== undefined && value !== null;\n }\n\n exports.isDefined = isDefined;\n\n function boolToInt(value) {\n return value ? 1 : 0;\n }\n\n exports.boolToInt = boolToInt;\n\n function boolToString(value) {\n return value ? '1' : '0';\n }\n\n exports.boolToString = boolToString;\n\n function isNumber(obj) {\n return typeof obj === 'number';\n }\n\n exports.isNumber = isNumber;\n\n function isString(obj) {\n return typeof obj === 'string';\n }\n\n exports.isString = isString;\n\n function isNonNullString(str) {\n return !!str;\n }\n\n exports.isNonNullString = isNonNullString;\n\n function isEven(num) {\n return num % 2 !== 0;\n }\n\n exports.isEven = isEven;\n\n function isOdd(num) {\n return num % 2 === 0;\n }\n\n exports.isOdd = isOdd;\n\n function numberToStringBin(num, minLength) {\n if (minLength === void 0) {\n minLength = 0;\n }\n\n return string_1.StringUtils.padLeft(num.toString(2), minLength, '0');\n }\n\n exports.numberToStringBin = numberToStringBin;\n\n function numberToStringHex(num, minLength) {\n if (minLength === void 0) {\n minLength = 0;\n }\n\n return string_1.StringUtils.padLeft(num.toString(16), minLength, '0');\n }\n\n exports.numberToStringHex = numberToStringHex;\n /***/\n },\n /* 35 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics13 = function extendStatics(d, b) {\n _extendStatics13 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics13(d, b);\n };\n\n return function (d, b) {\n _extendStatics13(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDraggingState = void 0;\n\n var MouseHandlerStateBase_1 = __webpack_require__(41);\n\n var Event_1 = __webpack_require__(14);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var MouseHandlerDraggingState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerDraggingState, _super);\n\n function MouseHandlerDraggingState(handler, history) {\n var _this = _super.call(this, handler) || this;\n\n _this.history = history;\n return _this;\n }\n\n MouseHandlerDraggingState.prototype.canApplyChangesOnMouseMove = function (initPosition, position) {\n return !initPosition || !position || Math.abs(initPosition.x - position.x) > MouseHandlerDraggingState.dragStartLimit || Math.abs(initPosition.y - position.y) > MouseHandlerDraggingState.dragStartLimit;\n };\n\n MouseHandlerDraggingState.prototype.onAfterApplyChanges = function () {\n if (!this.modified) this.handler.onDocumentDragStart(this.getDraggingElementKeys());\n this.modified = true;\n this.mouseDownPoint = undefined;\n };\n\n MouseHandlerDraggingState.prototype.onMouseDown = function (evt) {\n this.mouseDownPoint = evt.modelPoint.clone();\n };\n\n MouseHandlerDraggingState.prototype.onMouseMove = function (evt) {\n this.mouseMoveEvent = evt;\n\n if (evt.button !== Event_1.MouseButton.Left) {\n this.cancelChanges();\n this.handler.switchToDefaultState();\n } else if (evt.button === Event_1.MouseButton.Left && this.canApplyChangesOnMouseMove(this.mouseDownPoint, evt.modelPoint)) {\n this.onApplyChanges(evt);\n this.onAfterApplyChanges();\n }\n };\n\n MouseHandlerDraggingState.prototype.onKeyDown = function (evt) {\n if (this.mouseMoveEvent && (evt.keyCode === 16 || evt.keyCode === 17 || evt.keyCode === 18)) // Shift, Ctrl, Alt\n this.performMouseMoveEvent(evt.modifiers);\n };\n\n MouseHandlerDraggingState.prototype.onKeyUp = function (evt) {\n if (this.mouseMoveEvent && (evt.keyCode === 16 || evt.keyCode === 17 || evt.keyCode === 18)) // Shift, Ctrl, Alt\n this.performMouseMoveEvent(evt.modifiers);\n };\n\n MouseHandlerDraggingState.prototype.onMouseUp = function (evt) {\n this.mouseDownPoint = undefined;\n this.mouseMoveEvent = undefined;\n this.handler.switchToDefaultState();\n };\n\n MouseHandlerDraggingState.prototype.performMouseMoveEvent = function (modifiers) {\n this.mouseMoveEvent.modifiers = modifiers;\n this.onMouseMove(this.mouseMoveEvent);\n };\n\n MouseHandlerDraggingState.prototype.start = function () {\n this.handler.beginStorePermissions();\n this.history.beginTransaction();\n };\n\n MouseHandlerDraggingState.prototype.finish = function () {\n this.checkStoredPermissionsOnFinish();\n\n if (this.modified) {\n this.onFinishWithChanges();\n this.modified = false;\n this.history.endTransaction();\n this.handler.onDocumentDragEnd(this.getDraggingElementKeys());\n } else this.history.endTransaction();\n\n this.handler.endStorePermissions();\n this.handler.clearInteractingItems();\n };\n\n MouseHandlerDraggingState.prototype.checkStoredPermissionsOnFinish = function () {\n if (!this.handler.isStoredPermissionsGranted()) {\n this.cancelChanges();\n this.modified = false;\n }\n };\n\n MouseHandlerDraggingState.prototype.onFinishWithChanges = function () {};\n\n MouseHandlerDraggingState.prototype.cancelChanges = function () {\n this.handler.lockPermissions();\n this.history.undoTransaction();\n this.handler.unlockPermissions();\n if (this.modified) this.handler.onDocumentDragEnd(this.getDraggingElementKeys());\n this.modified = false;\n };\n\n MouseHandlerDraggingState.prototype.getSnappedPoint = function (evt, point) {\n return this.handler.getSnappedPointOnDragPoint(evt, point);\n };\n\n MouseHandlerDraggingState.dragStartLimit = unit_converter_1.UnitConverter.pixelsToTwips(4);\n return MouseHandlerDraggingState;\n }(MouseHandlerStateBase_1.MouseHandlerCancellableState);\n\n exports.MouseHandlerDraggingState = MouseHandlerDraggingState;\n /***/\n },\n /* 36 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Metrics = function () {\n function Metrics() {}\n\n Metrics.euclideanDistance = function (a, b) {\n var xDist = a.x - b.x;\n var yDist = a.y - b.y;\n return Math.sqrt(xDist * xDist + yDist * yDist);\n };\n\n Metrics.manhattanDistance = function (a, b) {\n return Math.abs(a.x - b.x) + Math.abs(a.y - b.y);\n };\n\n return Metrics;\n }();\n\n exports.Metrics = Metrics;\n /***/\n },\n /* 37 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DiagramLocalizationService = void 0;\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var Enums_1 = __webpack_require__(48);\n\n var DiagramLocalizationService =\n /** @class */\n function () {\n function DiagramLocalizationService() {}\n\n DiagramLocalizationService.unitItems = {};\n\n DiagramLocalizationService.formatUnit = function (value) {\n return value.toString();\n };\n\n DiagramLocalizationService.shapeTexts = {};\n return DiagramLocalizationService;\n }();\n\n exports.DiagramLocalizationService = DiagramLocalizationService;\n DiagramLocalizationService.unitItems[Enums_1.DiagramUnit.In] = \"in\";\n DiagramLocalizationService.unitItems[Enums_1.DiagramUnit.Cm] = \"cm\";\n DiagramLocalizationService.unitItems[Enums_1.DiagramUnit.Px] = \"px\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Text] = \"Text\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Rectangle] = \"Rectangle\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Ellipse] = \"Ellipse\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Cross] = \"Cross\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Triangle] = \"Triangle\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Diamond] = \"Diamond\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Heart] = \"Heart\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Pentagon] = \"Pentagon\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Hexagon] = \"Hexagon\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Octagon] = \"Octagon\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Star] = \"Star\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowLeft] = \"Left Arrow\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowUp] = \"Up Arrow\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowRight] = \"Right Arrow\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowDown] = \"Down Arrow\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowUpDown] = \"Up Down Arrow\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ArrowLeftRight] = \"Left Right Arrow\"; // Flowchart\n\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Process] = \"Process\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Decision] = \"Decision\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Terminator] = \"Terminator\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.PredefinedProcess] = \"Predefined Process\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Document] = \"Document\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.MultipleDocuments] = \"Multiple Documents\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ManualInput] = \"Manual Input\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Preparation] = \"Preparation\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Data] = \"Data\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Database] = \"Database\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.HardDisk] = \"Hard Disk\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.InternalStorage] = \"Internal Storage\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.PaperTape] = \"Paper Tape\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.ManualOperation] = \"Manual Operation\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Delay] = \"Delay\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.StoredData] = \"Stored Data\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Display] = \"Display\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Merge] = \"Merge\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Connector] = \"Connector\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Or] = \"Or\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.SummingJunction] = \"Summing Junction\"; // Containers\n\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Container] = \"Container\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.VerticalContainer] = \"Vertical Container\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.HorizontalContainer] = \"Horizontal Container\"; // Shapes with images\n\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Card] = \"Person's Name\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.CardWithImageOnLeft] = \"Card with Image on the Left\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.CardWithImageOnTop] = \"Card with Image on the Top\";\n DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.CardWithImageOnRight] = \"Card with Image on the Right\";\n /***/\n },\n /* 38 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ShapeParameters = exports.ShapeParameter = void 0;\n\n var ShapeParameter =\n /** @class */\n function () {\n function ShapeParameter(key, value) {\n this.key = key;\n this.value = value;\n }\n\n return ShapeParameter;\n }();\n\n exports.ShapeParameter = ShapeParameter;\n\n var ShapeParameters =\n /** @class */\n function () {\n function ShapeParameters() {\n this.items = {};\n }\n\n ShapeParameters.prototype.add = function (parameter) {\n this.items[parameter.key] = parameter;\n };\n\n ShapeParameters.prototype.addRange = function (parameters) {\n for (var i = 0; i < parameters.length; i++) {\n this.add(parameters[i]);\n }\n };\n\n ShapeParameters.prototype.get = function (key) {\n return this.items[key];\n };\n\n ShapeParameters.prototype.forEach = function (callback) {\n for (var key in this.items) {\n if (Object.prototype.hasOwnProperty.call(this.items, key)) callback(this.items[key]);\n }\n };\n\n ShapeParameters.prototype.clone = function () {\n var result = new ShapeParameters();\n this.forEach(function (p) {\n result.add(new ShapeParameter(p.key, p.value));\n });\n return result;\n };\n\n ShapeParameters.prototype.toObject = function () {\n var result = {};\n var modified = false;\n this.forEach(function (p) {\n result[p.key] = {\n \"value\": p.value\n };\n modified = true;\n });\n return modified ? result : null;\n };\n\n ShapeParameters.prototype.fromObject = function (obj) {\n this.forEach(function (p) {\n var paramObj = obj[p.key];\n if (paramObj) if (typeof paramObj[\"value\"] === \"number\") p.value = paramObj[\"value\"];\n });\n };\n\n return ShapeParameters;\n }();\n\n exports.ShapeParameters = ShapeParameters;\n /***/\n },\n /* 39 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectionMode = exports.PositionInfo = exports.Edge = void 0;\n\n var Edge =\n /** @class */\n function () {\n function Edge(key, from, to, weight) {\n if (weight === void 0) {\n weight = 1;\n }\n\n this.weight = weight;\n this.key = key;\n this.from = from;\n this.to = to;\n }\n\n Edge.prototype.getHashKey = function () {\n return this.from + \"_\" + this.to;\n };\n\n Edge.prototype.reverse = function () {\n return new Edge(this.key, this.to, this.from, this.weight);\n };\n\n return Edge;\n }();\n\n exports.Edge = Edge;\n\n var PositionInfo =\n /** @class */\n function () {\n function PositionInfo(item, position) {\n this.item = item;\n this.position = position;\n }\n\n return PositionInfo;\n }();\n\n exports.PositionInfo = PositionInfo;\n var ConnectionMode;\n\n (function (ConnectionMode) {\n ConnectionMode[ConnectionMode[\"Outgoing\"] = 1] = \"Outgoing\";\n ConnectionMode[ConnectionMode[\"Incoming\"] = 2] = \"Incoming\";\n ConnectionMode[ConnectionMode[\"OutgoingAndIncoming\"] = 3] = \"OutgoingAndIncoming\";\n })(ConnectionMode = exports.ConnectionMode || (exports.ConnectionMode = {}));\n /***/\n\n },\n /* 40 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics14 = function extendStatics(d, b) {\n _extendStatics14 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics14(d, b);\n };\n\n return function (d, b) {\n _extendStatics14(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GroupPrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var GroupPrimitive =\n /** @class */\n function (_super) {\n __extends(GroupPrimitive, _super);\n\n function GroupPrimitive(children, className, zIndex, clipPathId, onApplyProperties, onBeforeDispose) {\n var _this = _super.call(this, null, className, clipPathId, onApplyProperties) || this;\n\n _this.zIndex = zIndex;\n _this.onBeforeDispose = onBeforeDispose;\n _this.children = children;\n return _this;\n }\n\n GroupPrimitive.prototype.createMainElement = function () {\n return document.createElementNS(RenderHelper_1.svgNS, \"g\");\n };\n\n GroupPrimitive.prototype.applyElementProperties = function (element, measurer) {\n if (this.zIndex || this.zIndex === 0) element.style.setProperty(\"z-index\", this.zIndex.toString());\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n GroupPrimitive.prototype.dispose = function () {\n if (this.onBeforeDispose) this.onBeforeDispose();\n\n _super.prototype.dispose.call(this);\n };\n\n return GroupPrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.GroupPrimitive = GroupPrimitive;\n /***/\n },\n /* 41 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics15 = function extendStatics(d, b) {\n _extendStatics15 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics15(d, b);\n };\n\n return function (d, b) {\n _extendStatics15(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerCancellableState = exports.MouseHandlerStateBase = void 0;\n\n var key_1 = __webpack_require__(26);\n\n var MouseHandlerStateBase =\n /** @class */\n function () {\n function MouseHandlerStateBase(handler) {\n this.handler = handler;\n }\n\n MouseHandlerStateBase.prototype.start = function () {};\n\n MouseHandlerStateBase.prototype.finish = function () {};\n\n MouseHandlerStateBase.prototype.onMouseClick = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onMouseDblClick = function (_evt) {\n this.handler.switchToDefaultState();\n };\n\n MouseHandlerStateBase.prototype.onMouseDown = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onMouseUp = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onMouseMove = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onMouseWheel = function (_evt) {\n return false;\n };\n\n MouseHandlerStateBase.prototype.onDragStart = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onDragEnd = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onShortcut = function (_shortcutCode) {\n return false;\n };\n\n MouseHandlerStateBase.prototype.onKeyDown = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onKeyUp = function (_evt) {};\n\n MouseHandlerStateBase.prototype.onConnectionPointsShow = function (key, points) {};\n\n MouseHandlerStateBase.prototype.onConnectionTargetShow = function (key, info) {};\n\n return MouseHandlerStateBase;\n }();\n\n exports.MouseHandlerStateBase = MouseHandlerStateBase;\n\n var MouseHandlerCancellableState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerCancellableState, _super);\n\n function MouseHandlerCancellableState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerCancellableState.prototype.onShortcut = function (code) {\n if (code === key_1.KeyCode.Esc) {\n this.cancelChanges();\n this.handler.switchToDefaultState();\n return true;\n }\n\n return false;\n };\n\n return MouseHandlerCancellableState;\n }(MouseHandlerStateBase);\n\n exports.MouseHandlerCancellableState = MouseHandlerCancellableState;\n /***/\n },\n /* 42 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var SearchUtils = function () {\n function SearchUtils() {}\n\n SearchUtils.binaryIndexOf = function (array, comparer, minIndex, maxIndex) {\n if (minIndex === void 0) {\n minIndex = 0;\n }\n\n if (maxIndex === void 0) {\n maxIndex = -2;\n }\n\n var findFromZeroPosition = minIndex === 0;\n if (maxIndex === -2) maxIndex = array.length - 1;\n\n while (minIndex <= maxIndex) {\n var currentIndex = minIndex + (maxIndex - minIndex >> 1);\n var compare = comparer(array[currentIndex]);\n if (compare < 0) minIndex = currentIndex + 1;else if (compare > 0) maxIndex = currentIndex - 1;else return currentIndex;\n }\n\n return findFromZeroPosition ? ~minIndex : -1;\n };\n\n SearchUtils.normedBinaryIndexOf = function (array, comparer, minIndex, maxIndex) {\n if (minIndex === void 0) {\n minIndex = 0;\n }\n\n if (maxIndex === void 0) {\n maxIndex = -2;\n }\n\n var index = SearchUtils.binaryIndexOf(array, comparer, minIndex, maxIndex);\n return SearchUtils.binaryIndexNormalizator(index);\n };\n\n SearchUtils.binaryIndexNormalizator = function (index) {\n return index < 0 ? ~index - 1 : index;\n };\n\n SearchUtils.normedInterpolationIndexOf = function (array, getValue, toFind, lowIndex, highIndex) {\n if (lowIndex === void 0) {\n lowIndex = 0;\n }\n\n if (highIndex === void 0) {\n highIndex = -2;\n }\n\n if (highIndex === -2) highIndex = array.length - 1;\n var firstObject = array[Math.min(lowIndex, highIndex)];\n if (firstObject === undefined || toFind < getValue(firstObject)) return -1;\n var lowValue = getValue(array[lowIndex]);\n var highValue = getValue(array[highIndex]);\n\n while (true) {\n if (toFind > lowValue && toFind < highValue) {\n var midIndex = lowIndex + Math.floor((toFind - lowValue) * (highIndex - lowIndex) / (highValue - lowValue));\n var midValue = getValue(array[midIndex]);\n\n if (toFind > midValue) {\n lowIndex = midIndex + 1;\n lowValue = getValue(array[lowIndex]);\n if (toFind < lowValue) return midIndex;\n } else if (toFind < midValue) {\n highIndex = midIndex - 1;\n highValue = getValue(array[highIndex]);\n } else return midIndex;\n } else return toFind === lowValue ? lowIndex : highIndex;\n }\n };\n\n return SearchUtils;\n }();\n\n exports.SearchUtils = SearchUtils;\n /***/\n },\n /* 43 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CanvasManagerBase = exports.PAGE_BG_TEXTFLOOR_FILTER_ID = void 0;\n\n var TextFilterPrimitive_1 = __webpack_require__(172);\n\n var unit_converter_1 = __webpack_require__(11);\n\n exports.PAGE_BG_TEXTFLOOR_FILTER_ID = \"page-text-flood\";\n\n var CanvasManagerBase =\n /** @class */\n function () {\n function CanvasManagerBase(actualZoom, dom) {\n this.elements = {};\n this.actualZoom = actualZoom;\n this.dom = dom;\n }\n\n CanvasManagerBase.prototype.createAndChangePrimitivesElements = function (primitives, parent) {\n var _this = this;\n\n primitives.forEach(function (primitive) {\n _this.createAndChangePrimitiveElement(primitive, parent);\n });\n };\n\n CanvasManagerBase.prototype.createPrimitiveElement = function (primitive, parent, sibling) {\n return this.dom.createElement(primitive, parent, sibling);\n };\n\n CanvasManagerBase.prototype.createAndChangePrimitiveElement = function (primitive, parent, sibling) {\n var element = this.createPrimitiveElement(primitive, parent, sibling);\n this.dom.changeByPrimitive(element, primitive);\n return element;\n };\n\n CanvasManagerBase.prototype.changePrimitiveElement = function (primitive, element) {\n this.dom.changeByPrimitive(element, primitive);\n };\n\n CanvasManagerBase.prototype.getOrCreateElement = function (key, primitive, parent, sibling) {\n var element = key && this.elements[key] || (this.elements[key] = this.createPrimitiveElement(primitive, parent, sibling));\n this.changePrimitiveElement(primitive, element);\n return element;\n };\n\n CanvasManagerBase.prototype.createTextFloodFilter = function (key, parent, pageColor) {\n this.getOrCreateElement(key, new TextFilterPrimitive_1.TextFloodFilterPrimitive(exports.PAGE_BG_TEXTFLOOR_FILTER_ID, pageColor), parent);\n };\n\n CanvasManagerBase.prototype.getAbsoluteSize = function (modelSize) {\n return modelSize.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF).clone().multiply(this.actualZoom, this.actualZoom);\n };\n\n return CanvasManagerBase;\n }();\n\n exports.CanvasManagerBase = CanvasManagerBase;\n /***/\n },\n /* 44 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TextOwner = void 0;\n var TextOwner;\n\n (function (TextOwner) {\n TextOwner[TextOwner[\"Shape\"] = 0] = \"Shape\";\n TextOwner[TextOwner[\"Connector\"] = 1] = \"Connector\";\n TextOwner[TextOwner[\"ExtensionLine\"] = 2] = \"ExtensionLine\";\n TextOwner[TextOwner[\"Resize\"] = 3] = \"Resize\";\n })(TextOwner = exports.TextOwner || (exports.TextOwner = {}));\n /***/\n\n },\n /* 45 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Data = exports.SetAbsoluteY = exports.SetAbsoluteX = void 0;\n\n var dom_1 = __webpack_require__(23);\n\n var common_1 = __webpack_require__(34);\n\n function IsNumber(str) {\n return !isNaN(parseFloat(str)) && isFinite(str);\n }\n\n function SetAbsoluteX(element, x) {\n element.style.left = prepareClientPosForElement(x, element, true) + \"px\";\n }\n\n exports.SetAbsoluteX = SetAbsoluteX;\n\n function SetAbsoluteY(element, y) {\n element.style.top = prepareClientPosForElement(y, element, false) + \"px\";\n }\n\n exports.SetAbsoluteY = SetAbsoluteY;\n\n function prepareClientPosForElement(pos, element, isX) {\n pos -= getPositionElementOffset(element, isX);\n return pos;\n }\n\n function getPositionElementOffset(element, isX) {\n var div = createElementMock(element);\n if (div.style.position === \"static\") div.style.position = \"absolute\";\n element.parentNode.appendChild(div);\n var realPos = isX ? dom_1.DomUtils.getAbsolutePositionX(div) : dom_1.DomUtils.getAbsolutePositionY(div);\n element.parentNode.removeChild(div);\n return Math.round(realPos);\n }\n\n function createElementMock(element) {\n var div = document.createElement(\"DIV\");\n div.style.top = \"0px\";\n div.style.left = \"0px\";\n div.style.visibility = \"hidden\";\n div.style.position = dom_1.DomUtils.getCurrentStyle(element).position;\n return div;\n }\n\n var Data =\n /** @class */\n function () {\n function Data() {}\n\n Data.ArrayInsert = function (array, element, position) {\n if (0 <= position && position < array.length) {\n for (var i = array.length; i > position; i--) {\n array[i] = array[i - 1];\n }\n\n array[position] = element;\n } else array.push(element);\n };\n\n Data.ArrayRemove = function (array, element) {\n var index = Data.ArrayIndexOf(array, element);\n if (index > -1) Data.ArrayRemoveAt(array, index);\n };\n\n Data.ArrayRemoveAt = function (array, index) {\n if (index >= 0 && index < array.length) {\n for (var i = index; i < array.length - 1; i++) {\n array[i] = array[i + 1];\n }\n\n array.pop();\n }\n };\n\n Data.ArrayClear = function (array) {\n while (array.length > 0) {\n array.pop();\n }\n };\n\n Data.ArrayIndexOf = function (array, element, comparer) {\n if (!comparer) for (var i = 0; i < array.length; i++) {\n if (array[i] === element) return i;\n } else for (var i = 0; i < array.length; i++) {\n if (comparer(array[i], element)) return i;\n }\n return -1;\n };\n\n Data.ArrayContains = function (array, element) {\n return Data.ArrayIndexOf(array, element) >= 0;\n };\n\n Data.ArrayEqual = function (array1, array2) {\n var count1 = array1.length;\n var count2 = array2.length;\n if (count1 !== count2) return false;\n\n for (var i = 0; i < count1; i++) {\n if (array1[i] !== array2[i]) return false;\n }\n\n return true;\n };\n\n Data.ArraySame = function (array1, array2) {\n if (array1.length !== array2.length) return false;\n return array1.every(function (elem) {\n return Data.ArrayContains(array2, elem);\n });\n };\n\n Data.ArrayGetIntegerEdgeValues = function (array) {\n var arrayToSort = Data.CollectionToArray(array);\n Data.ArrayIntegerAscendingSort(arrayToSort);\n return {\n start: arrayToSort[0],\n end: arrayToSort[arrayToSort.length - 1]\n };\n };\n\n Data.ArrayIntegerAscendingSort = function (array) {\n Data.ArrayIntegerSort(array, false);\n };\n\n Data.ArrayIntegerSort = function (array, desc) {\n array.sort(function (i1, i2) {\n var res = 0;\n if (i1 > i2) res = 1;else if (i1 < i2) res = -1;\n if (desc) res *= -1;\n return res;\n });\n };\n\n Data.CollectionsUnionToArray = function (firstCollection, secondCollection) {\n var result = [];\n var firstCollectionLength = firstCollection.length;\n var secondCollectionLength = secondCollection.length;\n\n for (var i = 0; i < firstCollectionLength + secondCollectionLength; i++) {\n if (i < firstCollectionLength) result.push(firstCollection[i]);else result.push(secondCollection[i - firstCollectionLength]);\n }\n\n return result;\n };\n\n Data.CollectionToArray = function (collection) {\n var array = [];\n\n for (var i = 0; i < collection.length; i++) {\n array.push(collection[i]);\n }\n\n return array;\n };\n\n Data.CreateHashTableFromArray = function (array) {\n var hash = [];\n\n for (var i = 0; i < array.length; i++) {\n hash[array[i]] = 1;\n }\n\n return hash;\n };\n\n Data.CreateIndexHashTableFromArray = function (array) {\n var hash = [];\n\n for (var i = 0; i < array.length; i++) {\n hash[array[i]] = i;\n }\n\n return hash;\n };\n\n Data.ArrayToHash = function (array, getKeyFunc, getValueFunc) {\n if (!(array instanceof Array)) return {};\n return array.reduce(function (map, element, index) {\n var key = getKeyFunc(element, index);\n var value = getValueFunc(element, index);\n map[key] = value;\n return map;\n }, {});\n };\n\n Data.Sum = function (array, getValueFunc) {\n if (!(array instanceof Array)) return 0;\n return array.reduce(function (prevValue, item) {\n var value = getValueFunc ? getValueFunc(item) : item;\n if (!IsNumber(value)) value = 0;\n return prevValue + value;\n }, 0);\n };\n\n Data.Min = function (array, getValueFunc) {\n return Data.CalculateArrayMinMax(array, getValueFunc, false);\n };\n\n Data.Max = function (array, getValueFunc) {\n return Data.CalculateArrayMinMax(array, getValueFunc, true);\n };\n\n Data.NearestLeftBinarySearchComparer = function (array, index, value) {\n var arrayElement = array[index];\n var leftPoint = arrayElement < value;\n var lastLeftPoint = leftPoint && index === array.length - 1;\n var nearestLeftPoint = lastLeftPoint || leftPoint && array[index + 1] >= value;\n if (nearestLeftPoint) return 0;else return arrayElement < value ? -1 : 1;\n };\n\n Data.ArrayBinarySearch = function (array, value, binarySearchComparer, startIndex, length) {\n if (!binarySearchComparer) binarySearchComparer = Data.defaultBinarySearchComparer;\n if (!common_1.isDefined(startIndex)) startIndex = 0;\n if (!common_1.isDefined(length)) length = array.length - startIndex;\n var endIndex = startIndex + length - 1;\n\n while (startIndex <= endIndex) {\n var middle = startIndex + (endIndex - startIndex >> 1);\n var compareResult = binarySearchComparer(array, middle, value);\n if (compareResult === 0) return middle;\n if (compareResult < 0) startIndex = middle + 1;else endIndex = middle - 1;\n }\n\n return -(startIndex + 1);\n };\n\n Data.ArrayFlatten = function (arrayOfArrays) {\n var result = [];\n arrayOfArrays.forEach(function (arr) {\n result = result.concat(arr);\n });\n return result;\n };\n\n Data.GetDistinctArray = function (array) {\n var resultArray = [];\n\n for (var i = 0; i < array.length; i++) {\n var currentEntry = array[i];\n if (Data.ArrayIndexOf(resultArray, currentEntry) === -1) resultArray.push(currentEntry);\n }\n\n return resultArray;\n };\n\n Data.ForEach = function (arr, callback) {\n if (Array.prototype.forEach) Array.prototype.forEach.call(arr, callback);else for (var i = 0, len = arr.length; i < len; i++) {\n callback(arr[i], i, arr);\n }\n };\n\n Data.MergeHashTables = function (target, object) {\n if (!object || typeof object === \"string\") return target;\n if (!target) target = {};\n\n for (var key in object) {\n if (key && !(key in target)) target[key] = object[key];\n }\n\n return target;\n };\n\n Data.Range = function (count, start) {\n count = parseInt(count) || 0;\n start = parseInt(start) || 0;\n if (count < 0) count = 0;\n if (start < 0) start = 0;\n var result = Array(count);\n return result.map(function (_val, i) {\n return start + i;\n });\n };\n\n Data.CalculateArrayMinMax = function (array, getValueFunc, isMax) {\n if (!(array instanceof Array)) return 0;\n var startValue = isMax ? Number.NEGATIVE_INFINITY : Number.POSITIVE_INFINITY;\n return array.reduce(function (prevValue, item) {\n var value = getValueFunc ? getValueFunc(item) : item;\n if (!IsNumber(value)) value = startValue;\n var func = isMax ? Math.max : Math.min;\n return func(value, prevValue);\n }, startValue);\n };\n\n Data.byRange = function (value, min, max) {\n return Math.min(Math.max(value, min), max);\n };\n\n Data.defaultBinarySearchComparer = function (array, index, value) {\n var arrayElement = array[index];\n if (arrayElement === value) return 0;else return arrayElement < value ? -1 : 1;\n };\n\n Data.cssTextToObject = function (cssText) {\n if (!cssText) return {};\n cssText = cssText.replace(/\\/\\*(.|\\s)*?\\*\\//g, \"\").replace(/\\s+/g, \" \");\n return cssText.split(\";\").reduce(function (acc, val) {\n if (val) {\n var matches = /\\s*([^:]+?)\\s*:\\s*([^;]*)\\s*$/.exec(val);\n\n if (matches) {\n var name_1 = matches[1],\n value = matches[2];\n name_1 && value && (acc[name_1.trim()] = value.trim());\n }\n\n return acc;\n }\n\n return acc;\n }, {});\n };\n\n Data.objectToCssText = function (obj) {\n if (!obj) return \"\";\n return Object.keys(obj).reduce(function (acc, key) {\n var name = key.trim();\n var value = obj[key];\n if (name && value) acc.push(name + \": \" + value.toString().trim());\n return acc;\n }, []).join(\"; \");\n };\n\n return Data;\n }();\n\n exports.Data = Data;\n /***/\n },\n /* 46 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics16 = function extendStatics(d, b) {\n _extendStatics16 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics16(d, b);\n };\n\n return function (d, b) {\n _extendStatics16(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectionPoint = void 0;\n\n var point_1 = __webpack_require__(1);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ConnectionPoint =\n /** @class */\n function (_super) {\n __extends(ConnectionPoint, _super);\n\n function ConnectionPoint(x, y, side) {\n if (side === void 0) {\n side = DiagramItem_1.ConnectionPointSide.Undefined;\n }\n\n var _this = _super.call(this, x, y) || this;\n\n _this.side = side;\n return _this;\n } // todo delete that\n\n\n ConnectionPoint.prototype.offset = function (offsetX, offsetY) {\n _super.prototype.offset.call(this, offsetX, offsetY);\n\n this.side = DiagramItem_1.ConnectionPointSide.Undefined;\n return this;\n }; // todo delete that\n\n\n ConnectionPoint.prototype.multiply = function (multiplierX, multiplierY) {\n _super.prototype.multiply.call(this, multiplierX, multiplierY);\n\n this.side = DiagramItem_1.ConnectionPointSide.Undefined;\n return this;\n };\n\n ConnectionPoint.prototype.clone = function () {\n return new ConnectionPoint(this.x, this.y, this.side);\n };\n\n ConnectionPoint.prototype.toPoint = function () {\n return new point_1.Point(this.x, this.y);\n };\n\n return ConnectionPoint;\n }(point_1.Point);\n\n exports.ConnectionPoint = ConnectionPoint;\n /***/\n },\n /* 47 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImageCache = exports.CacheImageInfo = void 0;\n\n var base64_1 = __webpack_require__(83);\n\n var ImageInfo_1 = __webpack_require__(51);\n\n var Utils_1 = __webpack_require__(3);\n\n var CacheImageInfo =\n /** @class */\n function () {\n function CacheImageInfo(base64, actualId, imageUrl, referenceInfo, isLoaded) {\n this._base64 = base64 !== undefined ? base64_1.Base64Utils.normalizeToDataUrl(base64, \"image/png\") : undefined;\n this.actualId = actualId;\n this._referenceInfo = referenceInfo;\n this._isLoaded = isLoaded !== undefined ? isLoaded : false;\n this.imageUrl = imageUrl;\n }\n\n Object.defineProperty(CacheImageInfo.prototype, \"isLoaded\", {\n get: function get() {\n return this._referenceInfo ? this._referenceInfo._isLoaded : this._isLoaded;\n },\n set: function set(val) {\n this._isLoaded = val;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CacheImageInfo.prototype, \"base64\", {\n get: function get() {\n return this._base64;\n },\n set: function set(val) {\n this._base64 = base64_1.Base64Utils.normalizeToDataUrl(val, \"image/png\");\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CacheImageInfo.prototype, \"referenceInfo\", {\n get: function get() {\n return this._referenceInfo;\n },\n set: function set(val) {\n this._referenceInfo = val;\n this._base64 = undefined;\n this._isLoaded = undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CacheImageInfo.prototype, \"isLoading\", {\n get: function get() {\n return this._referenceInfo ? this.referenceInfo._isLoading : this._isLoading;\n },\n enumerable: false,\n configurable: true\n });\n\n CacheImageInfo.prototype.startLoading = function () {\n if (this._referenceInfo) this._referenceInfo.startLoading();else this._isLoading = true;\n };\n\n CacheImageInfo.prototype.finalizeLoading = function () {\n if (this._referenceInfo) this._referenceInfo.finalizeLoading();else this._isLoading = false;\n };\n\n return CacheImageInfo;\n }();\n\n exports.CacheImageInfo = CacheImageInfo;\n\n var ImageCache =\n /** @class */\n function () {\n function ImageCache() {\n this.emptyImageId = 0;\n this.lastActualId = 0;\n this.onReadyStateChanged = new Utils_1.EventDispatcher();\n this.cache = [];\n this.nonLoadedImages = [];\n var emptyImage = this.createUnloadedInfoByBase64(ImageInfo_1.ImageInfo.transparentOnePixelImage);\n emptyImage.isLoaded = true;\n }\n\n ImageCache.prototype.reset = function () {\n this.cache.splice(1);\n this.nonLoadedImages = [];\n this.lastActualId = 1;\n };\n\n Object.defineProperty(ImageCache.prototype, \"emptyImage\", {\n get: function get() {\n return this.cache[this.emptyImageId];\n },\n enumerable: false,\n configurable: true\n });\n\n ImageCache.prototype.getImageData = function (id) {\n return this.cache[id];\n };\n\n ImageCache.prototype.createUnloadedInfoByUrl = function (imageUrl) {\n var info = this.findInfoByUrl(imageUrl);\n if (info) return info;\n return this.registerImageData(new CacheImageInfo(undefined, this.getNextActualId(), imageUrl));\n };\n\n ImageCache.prototype.createUnloadedInfoByBase64 = function (base64) {\n var info = this.findInfoByBase64(base64);\n if (info) return info;\n return this.registerImageData(new CacheImageInfo(base64, this.getNextActualId()));\n };\n\n ImageCache.prototype.createUnloadedInfoByShapeImageInfo = function (imageInfo) {\n var data = imageInfo.exportUrl;\n return base64_1.Base64Utils.checkPrependDataUrl(data) ? this.createUnloadedInfoByBase64(data) : this.createUnloadedInfoByUrl(data);\n };\n\n ImageCache.prototype.registerImageData = function (data) {\n var existingData = this.cache[data.actualId];\n if (!existingData) existingData = data;\n if (data.actualId !== undefined) this.cache[data.actualId] = existingData;\n\n if (data.actualId !== 0) {\n this.nonLoadedImages.push(data);\n if (this.nonLoadedImages.length === 1) this.raiseReadyStateChanged(false);\n }\n\n return existingData;\n };\n\n ImageCache.prototype.loadAllImages = function (loader) {\n var _this = this;\n\n this.cache.forEach(function (cacheInfo) {\n if (_this.emptyImageId !== cacheInfo.actualId && !cacheInfo.isLoaded && !cacheInfo.isLoading) loader.load(cacheInfo);\n });\n };\n\n ImageCache.prototype.finalizeLoading = function (existingInfo, loadedInfo) {\n existingInfo.finalizeLoading();\n existingInfo.isLoaded = true;\n var imageInfoIndex = this.nonLoadedImages.indexOf(existingInfo);\n this.nonLoadedImages.splice(imageInfoIndex, 1);\n if (this.nonLoadedImages.length === 0) this.raiseReadyStateChanged(true);\n if (existingInfo.referenceInfo) return;\n\n if (loadedInfo.base64) {\n var base64_2 = base64_1.Base64Utils.normalizeToDataUrl(loadedInfo.base64, \"image/png\");\n this.cache.forEach(function (cacheElem) {\n var isReference = cacheElem.base64 === base64_2 && cacheElem !== existingInfo && cacheElem.isLoaded;\n if (isReference) existingInfo.referenceInfo = cacheElem.referenceInfo ? cacheElem.referenceInfo : cacheElem;\n return isReference;\n });\n existingInfo.base64 = base64_2;\n }\n };\n\n ImageCache.prototype.hasNonLoadedImages = function () {\n return this.nonLoadedImages.length !== 0;\n };\n\n ImageCache.prototype.getNextActualId = function () {\n return this.lastActualId++;\n };\n\n ImageCache.prototype.findInfoByBase64 = function (base64) {\n base64 = base64_1.Base64Utils.normalizeToDataUrl(base64, \"image/png\");\n return this.findInfoCore(function (cacheImageInfo) {\n return cacheImageInfo.base64 === base64;\n });\n };\n\n ImageCache.prototype.findInfoByUrl = function (imageUrl) {\n return this.findInfoCore(function (cacheImageInfo) {\n return cacheImageInfo.imageUrl === imageUrl;\n });\n };\n\n ImageCache.prototype.findInfoCore = function (callback) {\n var cacheInfo;\n this.cache.forEach(function (item) {\n if (callback(item)) cacheInfo = item;\n });\n return cacheInfo;\n };\n\n ImageCache.prototype.raiseReadyStateChanged = function (ready) {\n this.onReadyStateChanged.raise1(function (l) {\n return l.notifyImageCacheReadyStateChanged(ready);\n });\n };\n\n ImageCache.instance = new ImageCache();\n return ImageCache;\n }();\n\n exports.ImageCache = ImageCache;\n /***/\n },\n /* 48 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PageOrientation = exports.DiagramUnit = void 0;\n var DiagramUnit;\n\n (function (DiagramUnit) {\n DiagramUnit[DiagramUnit[\"In\"] = 0] = \"In\";\n DiagramUnit[DiagramUnit[\"Cm\"] = 1] = \"Cm\";\n DiagramUnit[DiagramUnit[\"Px\"] = 2] = \"Px\";\n })(DiagramUnit = exports.DiagramUnit || (exports.DiagramUnit = {}));\n\n var PageOrientation;\n\n (function (PageOrientation) {\n PageOrientation[PageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n PageOrientation[PageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n })(PageOrientation = exports.PageOrientation || (exports.PageOrientation = {}));\n /***/\n\n },\n /* 49 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics17 = function extendStatics(d, b) {\n _extendStatics17 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics17(d, b);\n };\n\n return function (d, b) {\n _extendStatics17(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SetConnectionPointIndexHistoryItem = exports.AddConnectionHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var Connector_1 = __webpack_require__(6);\n\n var AddConnectionHistoryItem =\n /** @class */\n function (_super) {\n __extends(AddConnectionHistoryItem, _super);\n\n function AddConnectionHistoryItem(connector, item, connectionPointIndex, position) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connector.key;\n _this.itemKey = item.key;\n _this.connectionPointIndex = connectionPointIndex;\n _this.position = position;\n return _this;\n }\n\n AddConnectionHistoryItem.prototype.redo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.addConnection(connector, item, this.connectionPointIndex, this.position);\n };\n\n AddConnectionHistoryItem.prototype.undo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.deleteConnection(connector, this.position);\n };\n\n return AddConnectionHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.AddConnectionHistoryItem = AddConnectionHistoryItem;\n\n var SetConnectionPointIndexHistoryItem =\n /** @class */\n function (_super) {\n __extends(SetConnectionPointIndexHistoryItem, _super);\n\n function SetConnectionPointIndexHistoryItem(connector, connectionPointIndex, position) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connector.key;\n _this.connectionPointIndex = connectionPointIndex;\n _this.position = position;\n return _this;\n }\n\n SetConnectionPointIndexHistoryItem.prototype.redo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n this.oldConnectionPointIndex = this.position === Connector_1.ConnectorPosition.Begin ? connector.beginConnectionPointIndex : connector.endConnectionPointIndex;\n manipulator.setConnectionPointIndex(connector, this.connectionPointIndex, this.position);\n };\n\n SetConnectionPointIndexHistoryItem.prototype.undo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.setConnectionPointIndex(connector, this.oldConnectionPointIndex, this.position);\n };\n\n return SetConnectionPointIndexHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.SetConnectionPointIndexHistoryItem = SetConnectionPointIndexHistoryItem;\n /***/\n },\n /* 50 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var StringUtils = function () {\n function StringUtils() {}\n\n StringUtils.isAlpha = function (ch) {\n return ch >= 'a' && ch <= 'z' || ch >= 'A' && ch <= 'Z';\n };\n\n StringUtils.isDigit = function (ch) {\n return ch >= '0' && ch <= '9';\n };\n\n StringUtils.stringHashCode = function (str) {\n var hash = 0;\n if (str.length === 0) return hash;\n var strLen = str.length;\n\n for (var i = 0; i < strLen; i++) {\n hash = (hash << 5) - hash + str.charCodeAt(i);\n hash |= 0;\n }\n\n return hash;\n };\n\n StringUtils.endsAt = function (str, template) {\n var strInd = str.length - 1;\n var tmplInd = template.length - 1;\n var strStartInd = strInd - tmplInd;\n if (strStartInd < 0) return false;\n\n for (; strInd >= strStartInd; strInd--, tmplInd--) {\n if (str[strInd] !== template[tmplInd]) return false;\n }\n\n return true;\n };\n\n StringUtils.startsAt = function (str, template) {\n return str.substr(0, template.length) === template;\n };\n\n StringUtils.stringInLowerCase = function (str) {\n return str.toLowerCase() === str;\n };\n\n StringUtils.stringInUpperCase = function (str) {\n return str.toUpperCase() === str;\n };\n\n StringUtils.atLeastOneSymbolInUpperCase = function (str) {\n for (var i = 0, char = void 0; char = str[i]; i++) {\n if (StringUtils.stringInUpperCase(char) && !StringUtils.stringInLowerCase(char)) return true;\n }\n\n return false;\n };\n\n StringUtils.getSymbolFromEnd = function (text, posFromEnd) {\n return text[text.length - posFromEnd];\n };\n\n StringUtils.trim = function (str, trimChars) {\n if (trimChars === undefined) return StringUtils.trimInternal(str, true, true);else {\n var joinedChars = trimChars.join('');\n return str.replace(new RegExp(\"(^[\" + joinedChars + \"]*)|([\" + joinedChars + \"]*$)\", 'g'), '');\n }\n };\n\n StringUtils.trimStart = function (str, trimChars) {\n if (trimChars === undefined) return StringUtils.trimInternal(str, true, false);else {\n var joinedChars = trimChars.join('');\n return str.replace(new RegExp(\"^[\" + joinedChars + \"]*\", 'g'), '');\n }\n };\n\n StringUtils.trimEnd = function (str, trimChars) {\n if (trimChars === undefined) return StringUtils.trimInternal(str, false, true);else {\n var joinedChars = trimChars.join('');\n return str.replace(new RegExp(\"[\" + joinedChars + \"]*$\", 'g'), '');\n }\n };\n\n StringUtils.getDecimalSeparator = function () {\n return 1.1.toLocaleString().substr(1, 1);\n };\n\n StringUtils.repeat = function (str, count) {\n return new Array(count <= 0 ? 0 : count + 1).join(str);\n };\n\n StringUtils.isNullOrEmpty = function (str) {\n return !str || !str.length;\n };\n\n StringUtils.padLeft = function (str, totalWidth, paddingChar) {\n return StringUtils.repeat(paddingChar, Math.max(0, totalWidth - str.length)) + str;\n };\n\n StringUtils.trimInternal = function (source, trimStart, trimEnd) {\n var len = source.length;\n if (!len) return source;\n\n if (len < 0xBABA1) {\n var result = source;\n if (trimStart) result = result.replace(/^\\s+/, '');\n if (trimEnd) result = result.replace(/\\s+$/, '');\n return result;\n } else {\n var start = 0;\n\n if (trimEnd) {\n while (len > 0 && /\\s/.test(source[len - 1])) {\n len--;\n }\n }\n\n if (trimStart && len > 0) {\n while (start < len && /\\s/.test(source[start])) {\n start++;\n }\n }\n\n return source.substring(start, len);\n }\n };\n\n return StringUtils;\n }();\n\n exports.StringUtils = StringUtils;\n /***/\n },\n /* 51 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImageInfo = void 0;\n\n var base64_1 = __webpack_require__(83);\n\n var ImageInfo =\n /** @class */\n function () {\n function ImageInfo(imageUrlOrBase64) {\n this.url = undefined;\n this.base64 = undefined;\n if (imageUrlOrBase64) if (base64_1.Base64Utils.checkPrependDataUrl(imageUrlOrBase64)) this.base64 = imageUrlOrBase64;else this.url = imageUrlOrBase64;\n this.loadFailed = false;\n }\n\n ImageInfo.prototype.clone = function () {\n var result = new ImageInfo();\n result.url = this.url;\n result.base64 = this.base64;\n return result;\n };\n\n Object.defineProperty(ImageInfo.prototype, \"isEmpty\", {\n get: function get() {\n return this.url === undefined && this.base64 === undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ImageInfo.prototype, \"unableToLoad\", {\n get: function get() {\n return this.loadFailed;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ImageInfo.prototype, \"renderUrl\", {\n get: function get() {\n return this.base64 || \"\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ImageInfo.prototype, \"exportUrl\", {\n get: function get() {\n return this.base64 ? this.base64 : this.url;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ImageInfo.prototype, \"actualUrl\", {\n get: function get() {\n return this.url ? this.url : this.base64;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ImageInfo, \"transparentOnePixelImage\", {\n get: function get() {\n return this.transparentWhiteImage1_1;\n },\n enumerable: false,\n configurable: true\n });\n\n ImageInfo.prototype.loadBase64Content = function (base64Content) {\n this.base64 = base64_1.Base64Utils.normalizeToDataUrl(base64Content, \"image/png\");\n };\n\n ImageInfo.prototype.setUnableToLoadFlag = function () {\n this.loadFailed = true;\n };\n\n ImageInfo.transparentWhiteImage1_1 = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAANSURBVBhXY/j///9/AAn7A/0FQ0XKAAAAAElFTkSuQmCC\";\n return ImageInfo;\n }();\n\n exports.ImageInfo = ImageInfo;\n /***/\n },\n /* 52 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorPointsOrthogonalSideCalculatorBase = void 0;\n\n var rectangle_1 = __webpack_require__(12);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var Connector_1 = __webpack_require__(6);\n\n var ConnectorPointsOrthogonalSideCalculatorBase =\n /** @class */\n function () {\n function ConnectorPointsOrthogonalSideCalculatorBase(parent) {\n this.parent = parent;\n }\n\n Object.defineProperty(ConnectorPointsOrthogonalSideCalculatorBase.prototype, \"connector\", {\n get: function get() {\n return this.parent.connector;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ConnectorPointsOrthogonalSideCalculatorBase.prototype, \"beginRect\", {\n get: function get() {\n return this.parent.beginRect;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ConnectorPointsOrthogonalSideCalculatorBase.prototype, \"endRect\", {\n get: function get() {\n return this.parent.endRect;\n },\n enumerable: false,\n configurable: true\n });\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getBeginOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n originPoint = this.getCorrectOriginPoint(originPoint, originRect);\n\n if (targetSide !== DiagramItem_1.ConnectionPointSide.Undefined) {\n if (this.isBeginEndSame()) return this.getSameShapeOffsetPoints(targetSide, originPoint, targetPoint, originRect);else if (this.isBeginEndOverlappedPoints(originPoint, targetPoint)) return this.getOverlappedPointsOffsetPoints(targetSide, originPoint, targetPoint, originRect);else if (this.isBeginEndOverlapped()) return this.getBeginOverlappedShapeOffsetPoints(targetSide, originPoint, targetPoint, originRect);\n } else if (this.isOriginRectContainsTargetPoint(originRect, targetPoint)) return this.getOverlappedPointsOffsetPoints(targetSide, originPoint, targetPoint, originRect);\n\n if (this.isOnSidePoint(originPoint, targetPoint)) return this.getBeginOnSideOffsetPoints(targetSide, originPoint, targetPoint, originRect);\n return this.getBeginOffSideOffsetPoints(targetSide, originPoint, targetPoint, originRect);\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getEndOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n originPoint = this.getCorrectOriginPoint(originPoint, originRect);\n\n if (targetSide !== DiagramItem_1.ConnectionPointSide.Undefined) {\n if (this.isBeginEndSame()) return this.getSameShapeOffsetPoints(targetSide, originPoint, targetPoint, originRect);else if (this.isBeginEndOverlappedPoints(targetPoint, originPoint)) return this.getOverlappedPointsOffsetPoints(targetSide, originPoint, targetPoint, originRect);else if (this.isBeginEndOverlapped()) return this.getEndOverlappedShapeOffsetPoints(targetSide, originPoint, targetPoint, originRect);\n } else if (this.isOriginRectContainsTargetPoint(originRect, targetPoint)) return this.getOverlappedPointsOffsetPoints(targetSide, originPoint, targetPoint, originRect);\n\n if (this.isOnSidePoint(originPoint, targetPoint)) return this.getEndOnSideOffsetPoints(targetSide, originPoint, targetPoint, originRect);\n return this.getEndOffSideOffsetPoints(targetSide, originPoint, targetPoint, originRect);\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getSide = function (originPoint, targetPoint) {\n var diffX = Math.abs(targetPoint.x - originPoint.x);\n var diffY = Math.abs(targetPoint.y - originPoint.y);\n if (diffX > diffY) {\n if (targetPoint.x > originPoint.x) return DiagramItem_1.ConnectionPointSide.East;else return DiagramItem_1.ConnectionPointSide.West;\n } else if (targetPoint.y > originPoint.y) return DiagramItem_1.ConnectionPointSide.South;else return DiagramItem_1.ConnectionPointSide.North;\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getSideCalculator = function (originPoint, targetPoint) {\n return this.parent.getSideCalculator(this.getSide(originPoint, targetPoint));\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.getMinOffset = function () {\n return Connector_1.Connector.minOffset;\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndSame = function () {\n return this.connector.beginItem === this.connector.endItem;\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndOverlapped = function () {\n return this.beginRect && this.endRect && rectangle_1.Rectangle.areIntersected(this.beginRect, this.endRect);\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndOverlappedX = function () {\n return this.beginRect && this.endRect && !!rectangle_1.Rectangle.getHorizIntersection(this.beginRect, this.endRect);\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndOverlappedY = function () {\n return this.beginRect && this.endRect && !!rectangle_1.Rectangle.getVertIntersection(this.beginRect, this.endRect);\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isBeginEndOverlappedPoints = function (beginPoint, endPoint) {\n return this.beginRect && this.endRect && (this.beginRect.containsPoint(endPoint) || this.endRect.containsPoint(beginPoint));\n };\n\n ConnectorPointsOrthogonalSideCalculatorBase.prototype.isOriginRectContainsTargetPoint = function (originRect, targetPoint) {\n return originRect && targetPoint && originRect.containsPoint(targetPoint);\n };\n\n return ConnectorPointsOrthogonalSideCalculatorBase;\n }();\n\n exports.ConnectorPointsOrthogonalSideCalculatorBase = ConnectorPointsOrthogonalSideCalculatorBase;\n /***/\n },\n /* 53 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics18 = function extendStatics(d, b) {\n _extendStatics18 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics18(d, b);\n };\n\n return function (d, b) {\n _extendStatics18(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AddShapeHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var Shape_1 = __webpack_require__(13);\n\n var AddShapeHistoryItem =\n /** @class */\n function (_super) {\n __extends(AddShapeHistoryItem, _super);\n\n function AddShapeHistoryItem(shapeDescription, position, text, dataKey) {\n var _this = _super.call(this) || this;\n\n _this.shapeDescription = shapeDescription;\n _this.position = position;\n _this.text = text;\n _this.dataKey = dataKey;\n return _this;\n }\n\n AddShapeHistoryItem.prototype.redo = function (manipulator) {\n var shape = new Shape_1.Shape(this.shapeDescription, this.position);\n if (typeof this.text === \"string\") shape.text = this.text;\n if (this.dataKey !== undefined) shape.dataKey = this.dataKey;\n manipulator.addShape(shape, this.shapeKey);\n this.shapeKey = shape.key;\n };\n\n AddShapeHistoryItem.prototype.undo = function (manipulator) {\n manipulator.deleteShape(manipulator.model.findShape(this.shapeKey), true);\n };\n\n return AddShapeHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.AddShapeHistoryItem = AddShapeHistoryItem;\n /***/\n },\n /* 54 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics19 = function extendStatics(d, b) {\n _extendStatics19 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics19(d, b);\n };\n\n return function (d, b) {\n _extendStatics19(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EllipsePrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var EllipsePrimitive =\n /** @class */\n function (_super) {\n __extends(EllipsePrimitive, _super);\n\n function EllipsePrimitive(cx, cy, rx, ry, style, className, onApplyProperties) {\n var _this = _super.call(this, style, className, undefined, onApplyProperties) || this;\n\n _this.cx = cx;\n _this.cy = cy;\n _this.rx = rx;\n _this.ry = ry;\n return _this;\n }\n\n EllipsePrimitive.prototype.createMainElement = function () {\n return document.createElementNS(RenderHelper_1.svgNS, \"ellipse\");\n };\n\n EllipsePrimitive.prototype.applyElementProperties = function (element, measurer) {\n this.setUnitAttribute(element, \"cx\", this.cx);\n this.setUnitAttribute(element, \"cy\", this.cy);\n this.setUnitAttribute(element, \"rx\", this.rx);\n this.setUnitAttribute(element, \"ry\", this.ry);\n this.setPositionCorrectionAttribute(element);\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n return EllipsePrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.EllipsePrimitive = EllipsePrimitive;\n /***/\n },\n /* 55 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics20 = function extendStatics(d, b) {\n _extendStatics20 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics20(d, b);\n };\n\n return function (d, b) {\n _extendStatics20(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ClipPathPrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var ClipPathPrimitive =\n /** @class */\n function (_super) {\n __extends(ClipPathPrimitive, _super);\n\n function ClipPathPrimitive(id, children) {\n var _this = _super.call(this) || this;\n\n _this.id = id;\n _this.children = children;\n return _this;\n }\n\n ClipPathPrimitive.prototype.createMainElement = function () {\n var element = document.createElementNS(RenderHelper_1.svgNS, \"clipPath\");\n element.setAttribute(\"id\", this.id);\n return element;\n };\n\n ClipPathPrimitive.prototype.applyElementProperties = function (element, measurer) {\n if (this.id) element.setAttribute(\"id\", this.id);\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n return ClipPathPrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.ClipPathPrimitive = ClipPathPrimitive;\n /***/\n },\n /* 56 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics21 = function extendStatics(d, b) {\n _extendStatics21 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics21(d, b);\n };\n\n return function (d, b) {\n _extendStatics21(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExportImportCommandBase = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ExportImportCommandBase =\n /** @class */\n function (_super) {\n __extends(ExportImportCommandBase, _super);\n\n function ExportImportCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ExportImportCommandBase.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n return ExportImportCommandBase;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ExportImportCommandBase = ExportImportCommandBase;\n /***/\n },\n /* 57 */\n\n /***/\n function (module, __webpack_exports__, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__.r(__webpack_exports__);\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__extends\", function () {\n return __extends;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__assign\", function () {\n return _assign;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__rest\", function () {\n return __rest;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__decorate\", function () {\n return __decorate;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__param\", function () {\n return __param;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__metadata\", function () {\n return __metadata;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__awaiter\", function () {\n return __awaiter;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__generator\", function () {\n return __generator;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__createBinding\", function () {\n return __createBinding;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__exportStar\", function () {\n return __exportStar;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__values\", function () {\n return __values;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__read\", function () {\n return __read;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__spread\", function () {\n return __spread;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__spreadArrays\", function () {\n return __spreadArrays;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__await\", function () {\n return __await;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__asyncGenerator\", function () {\n return __asyncGenerator;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__asyncDelegator\", function () {\n return __asyncDelegator;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__asyncValues\", function () {\n return __asyncValues;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__makeTemplateObject\", function () {\n return __makeTemplateObject;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__importStar\", function () {\n return __importStar;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__importDefault\", function () {\n return __importDefault;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldGet\", function () {\n return __classPrivateFieldGet;\n });\n /* harmony export (binding) */\n\n\n __webpack_require__.d(__webpack_exports__, \"__classPrivateFieldSet\", function () {\n return __classPrivateFieldSet;\n });\n /*! *****************************************************************************\r\n Copyright (c) Microsoft Corporation.\r\n \r\n Permission to use, copy, modify, and/or distribute this software for any\r\n purpose with or without fee is hereby granted.\r\n \r\n THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\n REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\n AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\n INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\n LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\n OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\n PERFORMANCE OF THIS SOFTWARE.\r\n ***************************************************************************** */\n\n /* global Reflect, Promise */\n\n\n var _extendStatics22 = function extendStatics(d, b) {\n _extendStatics22 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics22(d, b);\n };\n\n function __extends(d, b) {\n _extendStatics22(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n }\n\n var _assign = function __assign() {\n _assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return _assign.apply(this, arguments);\n };\n\n function __rest(s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n }\n\n function __decorate(decorators, target, key, desc) {\n var c = arguments.length,\n r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc,\n d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);else for (var i = decorators.length - 1; i >= 0; i--) {\n if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n }\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n }\n\n function __param(paramIndex, decorator) {\n return function (target, key) {\n decorator(target, key, paramIndex);\n };\n }\n\n function __metadata(metadataKey, metadataValue) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\n }\n\n function __awaiter(thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n }\n\n function __generator(thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n }\n\n var __createBinding = Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n } : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n };\n\n function __exportStar(m, o) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\n }\n }\n\n function __values(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator,\n m = s && o[s],\n i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function next() {\n if (o && i >= o.length) o = void 0;\n return {\n value: o && o[i++],\n done: !o\n };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n }\n\n function __read(o, n) {\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\n if (!m) return o;\n var i = m.call(o),\n r,\n ar = [],\n e;\n\n try {\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) {\n ar.push(r.value);\n }\n } catch (error) {\n e = {\n error: error\n };\n } finally {\n try {\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\n } finally {\n if (e) throw e.error;\n }\n }\n\n return ar;\n }\n\n function __spread() {\n for (var ar = [], i = 0; i < arguments.length; i++) {\n ar = ar.concat(__read(arguments[i]));\n }\n\n return ar;\n }\n\n function __spreadArrays() {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) {\n s += arguments[i].length;\n }\n\n for (var r = Array(s), k = 0, i = 0; i < il; i++) {\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) {\n r[k] = a[j];\n }\n }\n\n return r;\n }\n\n ;\n\n function __await(v) {\n return this instanceof __await ? (this.v = v, this) : new __await(v);\n }\n\n function __asyncGenerator(thisArg, _arguments, generator) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var g = generator.apply(thisArg, _arguments || []),\n i,\n q = [];\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i;\n\n function verb(n) {\n if (g[n]) i[n] = function (v) {\n return new Promise(function (a, b) {\n q.push([n, v, a, b]) > 1 || resume(n, v);\n });\n };\n }\n\n function resume(n, v) {\n try {\n step(g[n](v));\n } catch (e) {\n settle(q[0][3], e);\n }\n }\n\n function step(r) {\n r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);\n }\n\n function fulfill(value) {\n resume(\"next\", value);\n }\n\n function reject(value) {\n resume(\"throw\", value);\n }\n\n function settle(f, v) {\n if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]);\n }\n }\n\n function __asyncDelegator(o) {\n var i, p;\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) {\n throw e;\n }), verb(\"return\"), i[Symbol.iterator] = function () {\n return this;\n }, i;\n\n function verb(n, f) {\n i[n] = o[n] ? function (v) {\n return (p = !p) ? {\n value: __await(o[n](v)),\n done: n === \"return\"\n } : f ? f(v) : v;\n } : f;\n }\n }\n\n function __asyncValues(o) {\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\n var m = o[Symbol.asyncIterator],\n i;\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () {\n return this;\n }, i);\n\n function verb(n) {\n i[n] = o[n] && function (v) {\n return new Promise(function (resolve, reject) {\n v = o[n](v), settle(resolve, reject, v.done, v.value);\n });\n };\n }\n\n function settle(resolve, reject, d, v) {\n Promise.resolve(v).then(function (v) {\n resolve({\n value: v,\n done: d\n });\n }, reject);\n }\n }\n\n function __makeTemplateObject(cooked, raw) {\n if (Object.defineProperty) {\n Object.defineProperty(cooked, \"raw\", {\n value: raw\n });\n } else {\n cooked.raw = raw;\n }\n\n return cooked;\n }\n\n ;\n\n var __setModuleDefault = Object.create ? function (o, v) {\n Object.defineProperty(o, \"default\", {\n enumerable: true,\n value: v\n });\n } : function (o, v) {\n o[\"default\"] = v;\n };\n\n function __importStar(mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) {\n if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n }\n\n __setModuleDefault(result, mod);\n\n return result;\n }\n\n function __importDefault(mod) {\n return mod && mod.__esModule ? mod : {\n default: mod\n };\n }\n\n function __classPrivateFieldGet(receiver, privateMap) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n }\n\n function __classPrivateFieldSet(receiver, privateMap, value) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to set private field on non-instance\");\n }\n\n privateMap.set(receiver, value);\n return value;\n }\n /***/\n\n },\n /* 58 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Vector = function () {\n function Vector(x, y) {\n if (x === void 0) {\n x = 0;\n }\n\n if (y === void 0) {\n y = 0;\n }\n\n this.x = x;\n this.y = y;\n }\n\n Object.defineProperty(Vector.prototype, \"length\", {\n get: function get() {\n return Math.sqrt(this.x * this.x + this.y * this.y);\n },\n enumerable: true,\n configurable: true\n });\n\n Vector.fromPoints = function (begin, end) {\n return new Vector(end.x - begin.x, end.y - begin.y);\n };\n\n Vector.fromSegment = function (segment) {\n return new Vector(segment.endPoint.x - segment.startPoint.x, segment.endPoint.y - segment.startPoint.y);\n };\n\n Vector.prototype.normalize = function () {\n var length = this.length;\n\n if (length !== 0) {\n this.x /= length;\n this.y /= length;\n }\n\n return this;\n };\n\n Vector.prototype.negative = function () {\n this.x *= -1;\n this.y *= -1;\n return this;\n };\n\n Object.defineProperty(Vector, \"axisX\", {\n get: function get() {\n return new Vector(1, 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Vector, \"axisY\", {\n get: function get() {\n return new Vector(0, 1);\n },\n enumerable: true,\n configurable: true\n });\n\n Vector.angleBetween = function (a, b) {\n var cosFi = Vector.scalarProduct(a, b) / (a.length * b.length);\n return Math.acos(cosFi);\n };\n\n Vector.scalarProduct = function (a, b) {\n return a.x * b.x + a.y * b.y;\n };\n\n return Vector;\n }();\n\n exports.Vector = Vector;\n /***/\n },\n /* 59 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Diagnostics = void 0;\n var LoggerDisplayMode;\n\n (function (LoggerDisplayMode) {\n LoggerDisplayMode[LoggerDisplayMode[\"Disabled\"] = 0] = \"Disabled\";\n LoggerDisplayMode[LoggerDisplayMode[\"Console\"] = 1] = \"Console\";\n LoggerDisplayMode[LoggerDisplayMode[\"Document\"] = 2] = \"Document\";\n })(LoggerDisplayMode || (LoggerDisplayMode = {}));\n\n var Diagnostics =\n /** @class */\n function () {\n function Diagnostics() {}\n\n Diagnostics.beginAverage = function (groupName) {\n if (!this.enableLogsAndTimers) return;\n this.lastAverageGroupName = groupName;\n };\n\n Diagnostics.endAverage = function () {\n if (!this.enableLogsAndTimers) return;\n this.lastAverageGroupName = null;\n };\n\n Diagnostics.tryLogAverage = function (groupName) {\n var _this = this;\n\n if (this.lastAverageGroupName === groupName) return;\n var sameGroupTimers = Object.keys(this.timers).map(function (t) {\n return _this.timers[t];\n }).filter(function (t) {\n return t.groupName === groupName;\n });\n\n if (!sameGroupTimers.filter(function (t) {\n return !t.endTime;\n }).length) {\n var average = sameGroupTimers.reduce(function (acc, t) {\n return acc + (t.endTime - t.startTime);\n }, 0) / sameGroupTimers.length;\n this.log(\"average: \" + average);\n }\n };\n\n Diagnostics.timer = function (message) {\n if (!this.enableLogsAndTimers) return;\n this.lastCreatedTimer = {\n message: message,\n startTime: performance.now(),\n groupName: this.lastAverageGroupName\n };\n };\n\n Diagnostics.endTimer = function () {\n var _this = this;\n\n if (!this.enableLogsAndTimers) return;\n var timer = this.lastCreatedTimer;\n var timeoutID = setTimeout(function () {\n timer.endTime = performance.now();\n\n _this.showMessage(\"timer \\\"\" + timer.message + \"\\\": \" + (timer.endTime - timer.startTime));\n\n timer.groupName && _this.tryLogAverage(timer.groupName);\n }, 0);\n this.timers[timeoutID] = timer;\n this.lastCreatedTimer = null;\n };\n\n Diagnostics.logPerfInfo = function () {\n var nodesCount = document.querySelector(\".dxdi-control > svg\").querySelectorAll(\"*\").length;\n var memory = performance[\"memory\"];\n this.log(\"nodes: \" + nodesCount.toLocaleString() + (memory ? \" memory: \" : \"\") + (memory ? memory[\"usedJSHeapSize\"].toLocaleString() : \"\"));\n };\n\n Diagnostics.log = function (message) {\n this.showMessage(message);\n };\n\n Diagnostics.showMessage = function (message) {\n switch (Diagnostics.mode) {\n case LoggerDisplayMode.Console:\n // eslint-disable-next-line no-console\n console.log(message);\n break;\n\n case LoggerDisplayMode.Document:\n {\n var existText = this.getElement().value;\n\n if (this.lastMessage === message) {\n var lastLineLength = existText.indexOf(\"\\r\\n\");\n if (lastLineLength < 0) lastLineLength = existText.indexOf(\"\\n\");\n var lastLine = existText.substr(0, lastLineLength);\n var regex = /( \\()([0-9]+)(\\))$/;\n if (regex.test(lastLine)) lastLine = lastLine.replace(/( \\()([0-9]+)(\\))$/, function (str, before, val, after) {\n return before + ++val + after;\n });else lastLine += \" (1)\";\n this.getElement().value = lastLine + existText.substr(lastLineLength);\n } else {\n this.getElement().value = message + \"\\r\\n\" + existText;\n this.lastMessage = message;\n }\n }\n }\n };\n\n Diagnostics.getElement = function () {\n var _this = this;\n\n if (!this.el) {\n this.el = document.createElement(\"textarea\");\n this.el.style.top = \"0px\";\n this.el.style.right = \"0px\";\n this.el.style.position = \"fixed\";\n this.el.style.background = \"transparent\";\n this.el.style.fontSize = \"11px\";\n this.el.style.fontFamily = \"monospace\";\n this.el.style.overflow = \"auto\";\n this.el.style.width = \"400px\";\n document.body.appendChild(this.el);\n var clr = document.createElement(\"button\");\n clr.innerHTML = \"x\";\n clr.addEventListener(\"click\", function () {\n _this.el.value = \"\";\n _this.lastMessage = \"\";\n });\n clr.style.top = \"0px\";\n clr.style.right = \"400px\";\n clr.style.position = \"fixed\";\n clr.style.opacity = \"0.1\";\n document.body.appendChild(clr);\n }\n\n return this.el;\n };\n\n Diagnostics.mode = LoggerDisplayMode.Document;\n Diagnostics.optimizeUsingRAF = true;\n Diagnostics.optimizeLayers = true;\n Diagnostics.timers = {};\n Diagnostics.enableLogsAndTimers = false;\n return Diagnostics;\n }();\n\n exports.Diagnostics = Diagnostics;\n /***/\n },\n /* 60 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(19);\n\n var common_1 = __webpack_require__(34);\n\n var dom_1 = __webpack_require__(23);\n\n var touch_1 = __webpack_require__(174);\n\n var EvtUtils = function () {\n function EvtUtils() {}\n\n EvtUtils.preventEvent = function (evt) {\n if (!evt.cancelable) return;\n if (evt.preventDefault) evt.preventDefault();else evt.returnValue = false;\n };\n\n EvtUtils.getEventSource = function (evt) {\n return common_1.isDefined(evt) ? EvtUtils.getEventSourceCore(evt) : null;\n };\n\n EvtUtils.getEventSourceByPosition = function (evt) {\n if (!common_1.isDefined(evt)) return null;\n if (!document.elementFromPoint) return EvtUtils.getEventSourceCore(evt);\n var eventX = EvtUtils.getEventX(evt);\n var eventY = EvtUtils.getEventY(evt);\n if (eventX === undefined || eventY === undefined) return EvtUtils.getEventSourceCore(evt);\n return document.elementFromPoint(eventX, eventY);\n };\n\n EvtUtils.getEventSourceCore = function (evt) {\n return evt.srcElement ? evt.srcElement : evt.target;\n };\n\n EvtUtils.getMouseWheelEventName = function () {\n if (browser_1.Browser.Safari) return 'mousewheel';\n if (browser_1.Browser.NetscapeFamily && browser_1.Browser.MajorVersion < 17) return 'DOMMouseScroll';\n return 'wheel';\n };\n\n EvtUtils.isLeftButtonPressed = function (evt) {\n if (touch_1.TouchUtils.isTouchEvent(evt)) return true;\n evt = browser_1.Browser.IE && common_1.isDefined(event) ? event : evt;\n if (!evt) return false;\n if (browser_1.Browser.IE && browser_1.Browser.Version < 11) return browser_1.Browser.MSTouchUI ? true : evt.button % 2 === 1;\n if (browser_1.Browser.WebKitFamily) return evt.type === 'pointermove' ? evt.buttons === 1 : evt.which === 1;\n if (browser_1.Browser.NetscapeFamily || browser_1.Browser.Edge || browser_1.Browser.IE && browser_1.Browser.Version >= 11) return EvtUtils.isMoveEventName(evt.type) ? evt.buttons === 1 : evt.which === 1;\n return browser_1.Browser.Opera ? evt.button === 0 : true;\n };\n\n EvtUtils.isMoveEventName = function (type) {\n return type === touch_1.TouchUtils.touchMouseMoveEventName || type === EvtUtils.getMoveEventName();\n };\n\n EvtUtils.getMoveEventName = function () {\n return window.PointerEvent ? 'pointermove' : browser_1.Browser.TouchUI ? 'touchmove' : 'mousemove';\n };\n\n EvtUtils.preventEventAndBubble = function (evt) {\n EvtUtils.preventEvent(evt);\n if (evt.stopPropagation) evt.stopPropagation();\n evt.cancelBubble = true;\n };\n\n EvtUtils.clientEventRequiresDocScrollCorrection = function () {\n var isSafariVerLess3 = browser_1.Browser.Safari && browser_1.Browser.Version < 3;\n var isMacOSMobileVerLess51 = browser_1.Browser.MacOSMobilePlatform && browser_1.Browser.Version < 5.1;\n return browser_1.Browser.AndroidDefaultBrowser || browser_1.Browser.AndroidChromeBrowser || !(isSafariVerLess3 || isMacOSMobileVerLess51);\n };\n\n EvtUtils.getEventX = function (evt) {\n if (touch_1.TouchUtils.isTouchEvent(evt)) return touch_1.TouchUtils.getEventX(evt);\n return evt.clientX + (EvtUtils.clientEventRequiresDocScrollCorrection() ? dom_1.DomUtils.getDocumentScrollLeft() : 0);\n };\n\n EvtUtils.getEventY = function (evt) {\n if (touch_1.TouchUtils.isTouchEvent(evt)) return touch_1.TouchUtils.getEventY(evt);\n return evt.clientY + (EvtUtils.clientEventRequiresDocScrollCorrection() ? dom_1.DomUtils.getDocumentScrollTop() : 0);\n };\n\n EvtUtils.cancelBubble = function (evt) {\n evt.cancelBubble = true;\n };\n\n EvtUtils.getWheelDelta = function (evt) {\n var ret;\n if (browser_1.Browser.NetscapeFamily && browser_1.Browser.MajorVersion < 17) ret = -evt.detail;else if (browser_1.Browser.Safari) ret = evt.wheelDelta;else ret = -evt.deltaY;\n if (browser_1.Browser.Opera && browser_1.Browser.Version < 9) ret = -ret;\n return ret;\n };\n\n return EvtUtils;\n }();\n\n exports.EvtUtils = EvtUtils;\n /***/\n },\n /* 61 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DiagramModel = void 0;\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var Utils_1 = __webpack_require__(3);\n\n var rectangle_1 = __webpack_require__(12);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var ImageCache_1 = __webpack_require__(47);\n\n var color_1 = __webpack_require__(22);\n\n var Enums_1 = __webpack_require__(48);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var DiagramModel =\n /** @class */\n function () {\n function DiagramModel(pageSize) {\n if (pageSize === void 0) {\n pageSize = new size_1.Size(8391, 11906);\n }\n\n this.items = [];\n this.itemIndexByKey = {};\n this.keyCounter = 0;\n this.pageSize = new size_1.Size(8391, 11906);\n this.pageLandscape = false;\n this.pageColor = DiagramModel.defaultPageColor;\n this.units = Enums_1.DiagramUnit.In;\n this.snapStartPoint = new point_1.Point(0, 0);\n this.pageSize = pageSize;\n this.size = this.pageSize.clone();\n this.rectangle = rectangle_1.Rectangle.fromGeometry(new point_1.Point(0, 0), new size_1.Size(0, 0));\n this.initializeKeyCounter();\n }\n\n Object.defineProperty(DiagramModel.prototype, \"pageWidth\", {\n get: function get() {\n return this.pageLandscape ? this.pageSize.height : this.pageSize.width;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramModel.prototype, \"pageHeight\", {\n get: function get() {\n return this.pageLandscape ? this.pageSize.width : this.pageSize.height;\n },\n enumerable: false,\n configurable: true\n });\n\n DiagramModel.prototype.getRectangle = function (forceUpdate) {\n if (forceUpdate) this.rectangle = ModelUtils_1.ModelUtils.createRectangle(this.items);\n return this.rectangle;\n };\n\n DiagramModel.prototype.pushItem = function (item) {\n var index = this.items.push(item);\n this.itemIndexByKey[item.key] = index - 1;\n if (item instanceof Shape_1.Shape && !item.image.isEmpty) this.cacheShapeImage(item);\n };\n\n DiagramModel.prototype.removeItem = function (item) {\n var index = this.getItemIndex(item);\n delete this.itemIndexByKey[item.key];\n this.items.splice(index, 1);\n this.updateIndicesHash(index);\n };\n\n DiagramModel.prototype.updateIndicesHash = function (startIndex) {\n for (var i = startIndex; i < this.items.length; i++) {\n this.itemIndexByKey[this.items[i].key] = i;\n }\n };\n\n DiagramModel.prototype.getItemIndex = function (item) {\n return this.itemIndexByKey[item.key];\n };\n\n DiagramModel.prototype.findShape = function (key) {\n var shape = this.findItem(key);\n return shape instanceof Shape_1.Shape ? shape : undefined;\n };\n\n DiagramModel.prototype.findShapesCore = function (callback) {\n var shapes = [];\n this.items.forEach(function (item) {\n if (item instanceof Shape_1.Shape) if (callback(item)) {\n shapes.push(item);\n return;\n }\n });\n return shapes;\n };\n\n DiagramModel.prototype.findShapeCore = function (callback) {\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n if (item instanceof Shape_1.Shape) if (callback(item)) return item;\n }\n };\n\n DiagramModel.prototype.findShapeAtPosition = function (position) {\n return this.findShapeCore(function (shape) {\n return shape.position.equals(position);\n });\n };\n\n DiagramModel.prototype.findShapeByDataKey = function (key) {\n return this.findShapeCore(function (shape) {\n return shape.dataKey === key;\n });\n };\n\n DiagramModel.prototype.findShapesByImageUrl = function (imageUrl) {\n return this.findShapesCore(function (shape) {\n return shape.image.url === imageUrl;\n });\n };\n\n DiagramModel.prototype.findShapesByDescription = function (description) {\n return this.findShapesCore(function (shape) {\n return shape.description.key === description.key;\n });\n };\n\n DiagramModel.prototype.cacheShapeImage = function (shape) {\n var cacheImageInfo = ImageCache_1.ImageCache.instance.createUnloadedInfoByShapeImageInfo(shape.image);\n if (cacheImageInfo.isLoaded) shape.image.loadBase64Content(cacheImageInfo.base64);\n };\n\n DiagramModel.prototype.loadAllImages = function (imageLoader) {\n ImageCache_1.ImageCache.instance.loadAllImages(imageLoader);\n };\n\n DiagramModel.prototype.findContainer = function (key) {\n var shape = this.findShape(key);\n return shape && shape.enableChildren ? shape : undefined;\n };\n\n DiagramModel.prototype.findNearestContainer = function (key) {\n var shape = this.findShape(key);\n if (shape) return shape.enableChildren ? shape : shape.container;else return undefined;\n };\n\n DiagramModel.prototype.getChildren = function (container) {\n var _this = this;\n\n return container.children.map(function (child) {\n return _this.findItem(child.key);\n }).filter(function (item) {\n return item;\n });\n };\n\n DiagramModel.prototype.findChild = function (container, key, recursive) {\n var _this = this;\n\n if (recursive === void 0) {\n recursive = true;\n }\n\n var result;\n container.children.forEach(function (child) {\n if (result) return;\n\n if (child.key === key) {\n result = child;\n return;\n }\n\n if (recursive && child instanceof Shape_1.Shape) {\n result = _this.findChild(child, key, recursive);\n if (result) return;\n }\n });\n return result;\n };\n\n DiagramModel.prototype.findItemContainerCore = function (item, callback) {\n var container = item.container;\n\n while (container) {\n if (!callback || callback(container)) break;\n container = container.container;\n }\n\n return container;\n };\n\n DiagramModel.prototype.findItemContainer = function (item) {\n return this.findItemContainerCore(item);\n };\n\n DiagramModel.prototype.findItemCollapsedContainer = function (item) {\n return this.findItemContainerCore(item, function (c) {\n return !c.expanded;\n });\n };\n\n DiagramModel.prototype.findItemTopCollapsedContainer = function (item) {\n var container = item.container;\n var collapsedContainer;\n\n while (container) {\n if (!container.expanded) collapsedContainer = container;\n container = container.container;\n }\n\n return collapsedContainer;\n };\n\n DiagramModel.prototype.isContainerItem = function (container, item) {\n return this.findItemContainerCore(item, function (c) {\n return c.key === container.key;\n }) !== undefined;\n };\n\n DiagramModel.prototype.findConnector = function (key) {\n var connector = this.findItem(key);\n return connector instanceof Connector_1.Connector ? connector : undefined;\n };\n\n DiagramModel.prototype.findConnectorCore = function (callback) {\n for (var i = 0; i < this.items.length; i++) {\n var item = this.items[i];\n if (item instanceof Connector_1.Connector) if (callback(item)) return item;\n }\n };\n\n DiagramModel.prototype.findConnectorAtPoints = function (points) {\n return this.findConnectorCore(function (connector) {\n return Utils_1.GeometryUtils.arePointsEqual(connector.points, points);\n });\n };\n\n DiagramModel.prototype.findConnectorByDataKey = function (key) {\n return this.findConnectorCore(function (connector) {\n return connector.dataKey === key;\n });\n };\n\n DiagramModel.prototype.findConnectorByBeginEndDataKeys = function (beginDataKey, endDataKey) {\n return this.findConnectorCore(function (connector) {\n return connector.beginItem && connector.beginItem.dataKey === beginDataKey && connector.endItem && connector.endItem.dataKey === endDataKey;\n });\n };\n\n DiagramModel.prototype.findConnectorsCore = function (callback) {\n var result = [];\n this.items.forEach(function (item) {\n if (item instanceof Connector_1.Connector) if (callback(item)) {\n result.push(item);\n return;\n }\n });\n return result;\n };\n\n DiagramModel.prototype.findConnectorsWithoutBeginItem = function () {\n return this.findConnectorsCore(function (connector) {\n return !connector.beginItem;\n });\n };\n\n DiagramModel.prototype.findConnectorsWithoutEndItem = function () {\n return this.findConnectorsCore(function (connector) {\n return !connector.endItem;\n });\n };\n\n DiagramModel.prototype.findItem = function (key) {\n return this.items[this.itemIndexByKey[key]];\n };\n\n DiagramModel.prototype.findItemByDataKey = function (key) {\n return this.findItemCore(function (item) {\n return item.dataKey === key;\n });\n };\n\n DiagramModel.prototype.findItemCore = function (callback) {\n for (var i = 0; i < this.items.length; i++) {\n if (callback(this.items[i])) return this.items[i];\n }\n };\n\n DiagramModel.isIntersectedItems = function (item1, item2) {\n var result = false;\n if (item1 instanceof Shape_1.Shape) result = item2.intersectedByRect(item1.rectangle);else if (item1 instanceof Connector_1.Connector) item1.getSegments().forEach(function (s1) {\n if (item2 instanceof Shape_1.Shape) result = result || s1.isIntersectedByRect(item2.rectangle);else if (item2 instanceof Connector_1.Connector) item2.getSegments().forEach(function (s2) {\n result = result || s1.isIntersected(s2);\n });\n });\n return result;\n };\n\n DiagramModel.prototype.getIntersectItems = function (item) {\n var result = [];\n this.items.forEach(function (i) {\n if (i.container !== item.container) return;\n if (item !== i && (!(i instanceof Connector_1.Connector) || item.attachedConnectors.indexOf(i) === -1) && DiagramModel.isIntersectedItems(i, item)) result.push(i);\n });\n return result;\n };\n\n DiagramModel.prototype.getIntersectItemsMinZIndex = function (item) {\n var items = this.getIntersectItems(item);\n return items.map(function (i) {\n return i.zIndex;\n }).reduce(function (prev, cur) {\n return Math.min(prev, cur);\n }, Number.MAX_VALUE);\n };\n\n DiagramModel.prototype.getIntersectItemsMaxZIndex = function (item) {\n var items = this.getIntersectItems(item);\n return items.map(function (i) {\n return i.zIndex;\n }).reduce(function (prev, cur) {\n return Math.max(prev, cur);\n }, -Number.MAX_VALUE);\n };\n\n DiagramModel.prototype.iterateItems = function (callback) {\n this.items.forEach(callback);\n };\n\n DiagramModel.prototype.getNextKey = function () {\n return (this.keyCounter++).toString();\n };\n\n DiagramModel.prototype.initializeKeyCounter = function () {\n this.keyCounter = this.items.reduce(function (prev, cur) {\n var num = parseInt(cur.key);\n return Math.max(prev, isNaN(num) ? 0 : num + 1);\n }, this.items.length);\n };\n\n DiagramModel.defaultPageColor = color_1.ColorUtils.LIGHT_COLOR;\n return DiagramModel;\n }();\n\n exports.DiagramModel = DiagramModel;\n /***/\n },\n /* 62 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics23 = function extendStatics(d, b) {\n _extendStatics23 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics23(d, b);\n };\n\n return function (d, b) {\n _extendStatics23(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TextPrimitive270degRenderHelper = exports.TextPrimitive180degRenderHelper = exports.TextPrimitive90degRenderHelper = exports.TextPrimitiveRenderHelper = exports.TextPrimitive = exports.TextAngle = void 0;\n\n var unit_converter_1 = __webpack_require__(11);\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var Utils_1 = __webpack_require__(17);\n\n var TextUtils_1 = __webpack_require__(63);\n\n var TextAngle;\n\n (function (TextAngle) {\n TextAngle[TextAngle[\"Angle0deg\"] = 0] = \"Angle0deg\";\n TextAngle[TextAngle[\"Angle90deg\"] = 90] = \"Angle90deg\";\n TextAngle[TextAngle[\"Angle180deg\"] = 180] = \"Angle180deg\";\n TextAngle[TextAngle[\"Angle270deg\"] = 270] = \"Angle270deg\";\n })(TextAngle = exports.TextAngle || (exports.TextAngle = {}));\n\n var TextPrimitive =\n /** @class */\n function (_super) {\n __extends(TextPrimitive, _super);\n\n function TextPrimitive(x, y, text, owner, textWidth, textHeight, textSpacing, style, reverseTextAhchor, clipPathId, filterId, angle, onApplyProperties) {\n var _this = _super.call(this, style, \"\", clipPathId, onApplyProperties) || this;\n\n _this.x = x;\n _this.y = y;\n _this.text = text;\n _this.owner = owner;\n _this.textWidth = textWidth;\n _this.textHeight = textHeight;\n _this.textSpacing = textSpacing;\n _this.reverseTextAhchor = reverseTextAhchor;\n _this.angle = angle;\n _this.filterId = filterId;\n _this.textSegmens = TextUtils_1.textToParagraphs(_this.text);\n _this.renderHelper = _this.createRenderHelper();\n\n if (_this.textWidth !== undefined && _this.textWidth !== undefined) {\n _this.x = _this.renderHelper.getTextX(_this.x);\n _this.y = _this.renderHelper.getTextY(_this.y);\n }\n\n return _this;\n }\n\n TextPrimitive.prototype.createMainElement = function () {\n return document.createElementNS(RenderHelper_1.svgNS, \"text\");\n };\n\n TextPrimitive.prototype.applyElementProperties = function (element, measurer) {\n this.setUnitAttribute(element, \"x\", this.x);\n this.setUnitAttribute(element, \"y\", this.y);\n if (this.filterId) element.setAttribute(\"filter\", Utils_1.RenderUtils.getUrlPathById(this.filterId));\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n\n if (element.getAttribute(\"appliedText\") !== this.text || element.getAttribute(\"appliedSize\") !== (this.fitToSize && this.fitToSize.toString())) {\n this.createTSpanElements(element, measurer);\n element.setAttribute(\"appliedText\", this.text);\n element.setAttribute(\"appliedSize\", this.fitToSize && this.fitToSize.toString());\n } else this.prepareTSpanElements(element);\n\n this.renderHelper.prepareMainElement(element, this.x, this.y);\n };\n\n TextPrimitive.prototype.createTSpanElements = function (element, measurer) {\n var _this = this;\n\n Utils_1.RenderUtils.removeContent(element);\n this.textSegmens.forEach(function (txt, index) {\n if (!txt && _this.textSegmens.length > 1) {\n var span = _this.createTSpanElement(element);\n\n span.textContent = \" \";\n } else if (_this.fitToSize) {\n var words_1 = TextUtils_1.textToWords(txt);\n var lines = TextUtils_1.wordsByLines(unit_converter_1.UnitConverter.twipsToPixels(_this.fitToSize), words_1, function () {\n return measurer.measureWords(words_1, _this.style, _this.owner);\n });\n lines.forEach(function (line) {\n var span = _this.createTSpanElement(element);\n\n span.textContent = line;\n });\n\n if (!lines.length) {\n var span = _this.createTSpanElement(element);\n\n span.textContent = \" \";\n }\n } else {\n var tSpan = _this.createTSpanElement(element);\n\n tSpan.textContent = txt;\n }\n });\n var firstTSpan = element.firstChild;\n if (firstTSpan) this.prepareFirstTSpanElement(firstTSpan, element.childNodes.length);\n };\n\n TextPrimitive.prototype.createTSpanElement = function (parent) {\n var tSpan = document.createElementNS(RenderHelper_1.svgNS, \"tspan\");\n parent.appendChild(tSpan);\n this.prepareTSpanElement(tSpan);\n return tSpan;\n };\n\n TextPrimitive.prototype.prepareTSpanElements = function (element) {\n for (var i = 0; i < element.childNodes.length; i++) {\n var tSpan = element.childNodes[i];\n this.prepareTSpanElement(tSpan);\n }\n\n var firstTSpan = element.firstChild;\n if (firstTSpan) this.prepareFirstTSpanElement(firstTSpan, element.childNodes.length);\n };\n\n TextPrimitive.prototype.prepareTSpanElement = function (tSpan) {\n this.renderHelper.prepareTSpanElement(tSpan, this.x, this.y);\n };\n\n TextPrimitive.prototype.prepareFirstTSpanElement = function (tSpan, lineCount) {\n this.renderHelper.prepareFirstTSpanElement(tSpan, lineCount);\n };\n\n TextPrimitive.prototype.applyElementStyleProperties = function (element) {\n this.applyElementStylePropertiesCore(element, this.reverseTextAhchor);\n };\n\n Object.defineProperty(TextPrimitive.prototype, \"fitToSize\", {\n get: function get() {\n return this.renderHelper.fitToSize;\n },\n enumerable: false,\n configurable: true\n });\n\n TextPrimitive.prototype.createRenderHelper = function () {\n switch (this.angle) {\n case TextAngle.Angle90deg:\n return new TextPrimitive90degRenderHelper(this);\n\n case TextAngle.Angle180deg:\n return new TextPrimitive180degRenderHelper(this);\n\n case TextAngle.Angle270deg:\n return new TextPrimitive270degRenderHelper(this);\n\n default:\n return new TextPrimitiveRenderHelper(this);\n }\n };\n\n TextPrimitive.baselineCorrection = 0.35;\n return TextPrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.TextPrimitive = TextPrimitive;\n\n var TextPrimitiveRenderHelper =\n /** @class */\n function () {\n function TextPrimitiveRenderHelper(primitive) {\n this.primitive = primitive;\n }\n\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"textWidth\", {\n get: function get() {\n return this.primitive.textWidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"textHeight\", {\n get: function get() {\n return this.primitive.textHeight;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"fitToSize\", {\n get: function get() {\n return this.textWidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"textAnchor\", {\n get: function get() {\n return this.primitive.style[\"text-anchor\"];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"textSpacing\", {\n get: function get() {\n return this.primitive.textSpacing;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"angle\", {\n get: function get() {\n return undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextPrimitiveRenderHelper.prototype, \"needRotation\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n TextPrimitiveRenderHelper.prototype.prepareMainElement = function (element, x, y) {\n if (this.needRotation) element.setAttribute(\"transform\", \"rotate(\" + this.angle + \", \" + unit_converter_1.UnitConverter.twipsToPixels(x) + \", \" + unit_converter_1.UnitConverter.twipsToPixels(y) + \")\");\n };\n\n TextPrimitiveRenderHelper.prototype.prepareTSpanElement = function (tSpan, x, y) {\n this.primitive.setUnitAttribute(tSpan, \"x\", x);\n tSpan.setAttribute(\"dy\", TextUtils_1.LINE_HEIGHT + \"em\");\n };\n\n TextPrimitiveRenderHelper.prototype.prepareFirstTSpanElement = function (tSpan, lineCount) {\n var dy = -((lineCount - 1) / 2) + TextPrimitive.baselineCorrection;\n tSpan.setAttribute(\"dy\", dy.toFixed(2) + \"em\");\n };\n\n TextPrimitiveRenderHelper.prototype.getTextX = function (x) {\n if (!this.textAnchor || this.textAnchor === \"middle\") return x + this.textWidth / 2;else if (this.textAnchor === \"end\") return x + this.textWidth - this.textSpacing;else if (this.textAnchor === \"start\") return x + this.textSpacing;\n return x;\n };\n\n TextPrimitiveRenderHelper.prototype.getTextY = function (y) {\n return y + this.textHeight / 2;\n };\n\n TextPrimitiveRenderHelper.prototype.setUnitAttribute = function (element, key, value) {\n this.primitive.setUnitAttribute(element, key, value);\n };\n\n return TextPrimitiveRenderHelper;\n }();\n\n exports.TextPrimitiveRenderHelper = TextPrimitiveRenderHelper;\n\n var TextPrimitive90degRenderHelper =\n /** @class */\n function (_super) {\n __extends(TextPrimitive90degRenderHelper, _super);\n\n function TextPrimitive90degRenderHelper(primitive) {\n return _super.call(this, primitive) || this;\n }\n\n Object.defineProperty(TextPrimitive90degRenderHelper.prototype, \"fitToSize\", {\n get: function get() {\n return this.textHeight;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextPrimitive90degRenderHelper.prototype, \"angle\", {\n get: function get() {\n return 90;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextPrimitive90degRenderHelper.prototype, \"needRotation\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n\n TextPrimitive90degRenderHelper.prototype.getTextX = function (x) {\n return x + this.textWidth / 2;\n };\n\n TextPrimitive90degRenderHelper.prototype.getTextY = function (y) {\n if (!this.textAnchor || this.textAnchor === \"middle\") return y + this.textHeight / 2;else if (this.textAnchor === \"end\") return y + this.textHeight - this.textSpacing;else if (this.textAnchor === \"start\") return y + this.textSpacing;\n return y;\n };\n\n return TextPrimitive90degRenderHelper;\n }(TextPrimitiveRenderHelper);\n\n exports.TextPrimitive90degRenderHelper = TextPrimitive90degRenderHelper;\n\n var TextPrimitive180degRenderHelper =\n /** @class */\n function (_super) {\n __extends(TextPrimitive180degRenderHelper, _super);\n\n function TextPrimitive180degRenderHelper(primitive) {\n return _super.call(this, primitive) || this;\n }\n\n Object.defineProperty(TextPrimitive180degRenderHelper.prototype, \"angle\", {\n get: function get() {\n return 180;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextPrimitive180degRenderHelper.prototype, \"needRotation\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n\n TextPrimitive180degRenderHelper.prototype.getTextX = function (x) {\n if (!this.textAnchor || this.textAnchor === \"middle\") return x + this.textWidth / 2;else if (this.textAnchor === \"start\") return x + this.textWidth - this.textSpacing;else if (this.textAnchor === \"end\") return x + this.textSpacing;\n return x;\n };\n\n return TextPrimitive180degRenderHelper;\n }(TextPrimitiveRenderHelper);\n\n exports.TextPrimitive180degRenderHelper = TextPrimitive180degRenderHelper;\n\n var TextPrimitive270degRenderHelper =\n /** @class */\n function (_super) {\n __extends(TextPrimitive270degRenderHelper, _super);\n\n function TextPrimitive270degRenderHelper(primitive) {\n return _super.call(this, primitive) || this;\n }\n\n Object.defineProperty(TextPrimitive270degRenderHelper.prototype, \"angle\", {\n get: function get() {\n return 270;\n },\n enumerable: false,\n configurable: true\n });\n\n TextPrimitive270degRenderHelper.prototype.getTextY = function (y) {\n if (!this.textAnchor || this.textAnchor === \"middle\") return y + this.textHeight / 2;else if (this.textAnchor === \"start\") return y + this.textHeight - this.textSpacing;else if (this.textAnchor === \"end\") return y + this.textSpacing;\n return y;\n };\n\n return TextPrimitive270degRenderHelper;\n }(TextPrimitive90degRenderHelper);\n\n exports.TextPrimitive270degRenderHelper = TextPrimitive270degRenderHelper;\n /***/\n },\n /* 63 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getLineHeight = exports.getTextHeight = exports.getTextLineSize = exports.getOptimalTextRectangle = exports.TEXTRECT_RATIO_EPS = exports.textToParagraphs = exports.textToWords = exports.wordsByLines = exports.LINE_HEIGHT = void 0;\n\n var Utils_1 = __webpack_require__(3);\n\n var size_1 = __webpack_require__(2);\n\n var Data_1 = __webpack_require__(45);\n\n var WHITESPACES = /\\s/gm;\n exports.LINE_HEIGHT = 1.05;\n\n function wordsByLines(absLineWidth, words, measureWords) {\n if (words.length === 1) return words;\n var measuredWords = measureWords();\n var spaceWidth = measuredWords.words[\" \"].width;\n var result = [];\n var lastLineWidth = 0;\n var lastLineIndex = -1;\n\n for (var i = 0; i < words.length; i++) {\n var word = words[i];\n var wordWidth = measuredWords.words[word].width;\n\n if (lastLineIndex === -1 || lastLineWidth + spaceWidth + wordWidth > absLineWidth) {\n lastLineIndex = result.push(word) - 1;\n lastLineWidth = wordWidth;\n } else {\n lastLineWidth += spaceWidth + wordWidth;\n result[lastLineIndex] += \" \" + word;\n }\n }\n\n return result;\n }\n\n exports.wordsByLines = wordsByLines;\n\n function textToWords(text) {\n return text.split(WHITESPACES).filter(function (t) {\n return t.length;\n });\n }\n\n exports.textToWords = textToWords;\n\n function textToParagraphs(text) {\n return text.split(\"\\n\");\n }\n\n exports.textToParagraphs = textToParagraphs;\n exports.TEXTRECT_RATIO_EPS = 1.2;\n var TEXTRECT_WIDTH_DIFF_EPS = 1;\n\n function getOptimalTextRectangle(text, style, owner, measurer, initialSize, keepRatio, minWidth, maxWidth, minHeight, maxHeight) {\n if (minWidth === void 0) {\n minWidth = 0;\n }\n\n if (maxWidth === void 0) {\n maxWidth = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE;\n }\n\n if (minHeight === void 0) {\n minHeight = 0;\n }\n\n if (maxHeight === void 0) {\n maxHeight = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE;\n }\n\n if (!text) return new size_1.Size(Data_1.Data.byRange(initialSize.width, minWidth, maxWidth), Data_1.Data.byRange(initialSize.height, minHeight, maxHeight));\n if (minWidth > maxWidth || minHeight > maxHeight) throw new Error(\"Min size cannot exceed max size\");\n if (minWidth === maxWidth && minHeight === maxHeight) return new size_1.Size(minWidth, minHeight);\n var measureResult = measurer.measureWords(text, style, owner);\n var paragraphs = textToParagraphs(text);\n var maxWordWidth = Object.keys(measureResult.words).reduce(function (acc, word) {\n return Math.max(acc, measureResult.words[word].width);\n }, 0);\n var xRange = new Utils_1.Range(Data_1.Data.byRange(Math.max(initialSize.width, maxWordWidth), minWidth, maxWidth), maxWidth);\n var yRange = new Utils_1.Range(Data_1.Data.byRange(initialSize.height, minHeight, maxHeight), maxHeight);\n if (maxWordWidth <= initialSize.width && getTextHeight(paragraphs, initialSize.width, measureResult, false) <= initialSize.height && xRange.includes(initialSize.width) && yRange.includes(initialSize.height)) return initialSize;\n var ratio = initialSize.width / initialSize.height;\n return getOptimalTextRectangleCore(paragraphs, measureResult, ratio, xRange, yRange, keepRatio);\n }\n\n exports.getOptimalTextRectangle = getOptimalTextRectangle;\n\n function getOptimalTextRectangleCore(paragraphs, measureResult, initRatio, xRange, yRange, incHeightToRatio) {\n var _a;\n\n var maxParagraphWidth = paragraphs.reduce(function (acc, val) {\n return Math.max(acc, getTextLineSize(val, measureResult).width);\n }, 0);\n var size = new size_1.Size(0, 0);\n var newSize = new size_1.Size(0, 0);\n var newFitToHeight;\n var deltaWidth = 0;\n var error = 0;\n\n for (var attempt = 0; attempt < 5; attempt++) {\n if (attempt === 0) newSize.width = calcByFit(maxParagraphWidth, xRange)[0];else if (Math.abs(deltaWidth) > TEXTRECT_WIDTH_DIFF_EPS) newSize.width = calcByFit(size.width + deltaWidth, xRange)[0];else break;\n _a = calcHeight(paragraphs, newSize.width, measureResult, yRange), newSize.height = _a[0], newFitToHeight = _a[1];\n\n if (attempt === 0) {\n size = newSize.clone();\n error = size.width / size.height / initRatio;\n }\n\n if (attempt === 0 && !newFitToHeight) break;\n var newRatio = newSize.width / newSize.height;\n var newError = newRatio / initRatio;\n if (attempt === 0) deltaWidth = (newSize.width / newError - newSize.width) / 2;else if (!newFitToHeight) deltaWidth /= 2;else if (!compareRatio(initRatio, newRatio, exports.TEXTRECT_RATIO_EPS)) {\n size = newSize.clone();\n error = newError;\n break;\n } else if (compareRatio(error, newError, 1) < 0) {\n size = newSize.clone();\n error = newError;\n deltaWidth = (newSize.width / newError - newSize.width) / 2;\n if (newError < 1) deltaWidth /= 2;\n } else break;\n }\n\n if (incHeightToRatio) size.height = Data_1.Data.byRange(size.width / initRatio, size.height, yRange.to);\n return size;\n }\n\n function compareRatio(a, b, eps) {\n var an = a < 1 ? 1 / a : a;\n var bn = b < 1 ? 1 / b : b;\n var e = an / bn;\n var en = e < 1 ? 1 / e : e;\n return en <= eps ? 0 : bn > an ? 1 : -1;\n }\n\n function calcHeight(paragraphs, width, measureResult, yRange) {\n var height = getTextHeight(paragraphs, width, measureResult, false);\n return calcByFit(height, yRange);\n }\n\n function calcByFit(value, range) {\n return [Data_1.Data.byRange(value, range.from, range.to), value <= range.to];\n }\n\n function getTextLineSize(text, measureResult) {\n var words = textToWords(text);\n return words.reduce(function (acc, word, index) {\n var wordSize = measureResult.words[word];\n acc.width += wordSize.width;\n acc.height = Math.max(acc.height, wordSize.height);\n if (index > 0) acc.width += measureResult.words[\" \"].width;\n return acc;\n }, new size_1.Size(0, 0));\n }\n\n exports.getTextLineSize = getTextLineSize;\n\n function getTextHeight(textOrParagraphs, width, measureResult, emptyTextAsSingleLine) {\n var paragraphs = Array.isArray(textOrParagraphs) ? textOrParagraphs : textToParagraphs(textOrParagraphs);\n if (emptyTextAsSingleLine && (!paragraphs.length || paragraphs.length === 1 && !paragraphs[0].length)) return getLineHeight(measureResult);\n return paragraphs.reduce(function (acc, line) {\n return acc + wordsByLines(width, textToWords(line), function () {\n return measureResult;\n }).length;\n }, 0) * getLineHeight(measureResult);\n }\n\n exports.getTextHeight = getTextHeight;\n\n function getLineHeight(measureResult) {\n return measureResult.fontSize * exports.LINE_HEIGHT;\n }\n\n exports.getLineHeight = getLineHeight;\n /***/\n },\n /* 64 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics24 = function extendStatics(d, b) {\n _extendStatics24 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics24(d, b);\n };\n\n return function (d, b) {\n _extendStatics24(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AddConnectorHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var Connector_1 = __webpack_require__(6);\n\n var AddConnectorHistoryItem =\n /** @class */\n function (_super) {\n __extends(AddConnectorHistoryItem, _super);\n\n function AddConnectorHistoryItem(points, dataKey, renderPointsContext) {\n var _this = _super.call(this) || this;\n\n _this.points = points;\n _this.dataKey = dataKey;\n _this.renderPointsContext = renderPointsContext;\n return _this;\n }\n\n AddConnectorHistoryItem.prototype.redo = function (manipulator) {\n var connector = new Connector_1.Connector(this.points);\n if (this.dataKey !== undefined) connector.dataKey = this.dataKey;\n if (this.renderPointsContext !== undefined) connector.replaceRenderPoints(this.renderPointsContext);\n manipulator.addConnector(connector, this.connectorKey);\n this.connectorKey = connector.key;\n };\n\n AddConnectorHistoryItem.prototype.undo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.deleteConnector(connector);\n };\n\n return AddConnectorHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.AddConnectorHistoryItem = AddConnectorHistoryItem;\n /***/\n },\n /* 65 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics25 = function extendStatics(d, b) {\n _extendStatics25 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics25(d, b);\n };\n\n return function (d, b) {\n _extendStatics25(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DeleteConnectionHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var Connector_1 = __webpack_require__(6);\n\n var DeleteConnectionHistoryItem =\n /** @class */\n function (_super) {\n __extends(DeleteConnectionHistoryItem, _super);\n\n function DeleteConnectionHistoryItem(connector, position) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connector.key;\n _this.position = position;\n _this.itemKey = connector.getExtremeItem(_this.position).key;\n return _this;\n }\n\n DeleteConnectionHistoryItem.prototype.redo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n this.oldConnectionPointIndex = this.position === Connector_1.ConnectorPosition.Begin ? connector.beginConnectionPointIndex : connector.endConnectionPointIndex;\n manipulator.deleteConnection(connector, this.position);\n };\n\n DeleteConnectionHistoryItem.prototype.undo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.addConnection(connector, item, this.oldConnectionPointIndex, this.position);\n };\n\n return DeleteConnectionHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.DeleteConnectionHistoryItem = DeleteConnectionHistoryItem;\n /***/\n },\n /* 66 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics26 = function extendStatics(d, b) {\n _extendStatics26 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics26(d, b);\n };\n\n return function (d, b) {\n _extendStatics26(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SetSelectionHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var SetSelectionHistoryItem =\n /** @class */\n function (_super) {\n __extends(SetSelectionHistoryItem, _super);\n\n function SetSelectionHistoryItem(selection, selectedKeys, forceChange) {\n var _this = _super.call(this) || this;\n\n _this.selectedKeys = selectedKeys;\n _this.selection = selection;\n _this.forceChange = forceChange;\n return _this;\n }\n\n SetSelectionHistoryItem.prototype.redo = function () {\n this.oldSelection = this.selection.getKeys().slice(0);\n this.selection.set(this.selectedKeys, this.forceChange);\n };\n\n SetSelectionHistoryItem.prototype.undo = function () {\n this.selection.set(this.oldSelection, this.forceChange);\n };\n\n return SetSelectionHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.SetSelectionHistoryItem = SetSelectionHistoryItem;\n /***/\n },\n /* 67 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics27 = function extendStatics(d, b) {\n _extendStatics27 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics27(d, b);\n };\n\n return function (d, b) {\n _extendStatics27(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectorTextHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangeConnectorTextHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorTextHistoryItem, _super);\n\n function ChangeConnectorTextHistoryItem(connector, position, text) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connector.key;\n _this.text = text;\n _this.position = position;\n return _this;\n }\n\n ChangeConnectorTextHistoryItem.prototype.redo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n this.oldText = connector.getText(this.position);\n manipulator.changeConnectorText(connector, this.text, this.position);\n };\n\n ChangeConnectorTextHistoryItem.prototype.undo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.changeConnectorText(connector, this.oldText, this.position);\n };\n\n return ChangeConnectorTextHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeConnectorTextHistoryItem = ChangeConnectorTextHistoryItem;\n /***/\n },\n /* 68 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics28 = function extendStatics(d, b) {\n _extendStatics28 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics28(d, b);\n };\n\n return function (d, b) {\n _extendStatics28(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeStyleTextHistoryItem = void 0;\n\n var ChangeStyleHistoryItemBase_1 = __webpack_require__(119);\n\n var ChangeStyleTextHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeStyleTextHistoryItem, _super);\n\n function ChangeStyleTextHistoryItem(itemKey, styleProperty, styleValue) {\n return _super.call(this, itemKey, styleProperty, styleValue) || this;\n }\n\n ChangeStyleTextHistoryItem.prototype.redo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n this.oldStyleValue = item.styleText[this.styleProperty];\n manipulator.changeStyleText(item, this.styleProperty, this.styleValue);\n };\n\n ChangeStyleTextHistoryItem.prototype.undo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.changeStyleText(item, this.styleProperty, this.oldStyleValue);\n };\n\n return ChangeStyleTextHistoryItem;\n }(ChangeStyleHistoryItemBase_1.ChangeStyleHistoryItemBase);\n\n exports.ChangeStyleTextHistoryItem = ChangeStyleTextHistoryItem;\n /***/\n },\n /* 69 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics29 = function extendStatics(d, b) {\n _extendStatics29 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics29(d, b);\n };\n\n return function (d, b) {\n _extendStatics29(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GraphIterator = exports.FastGraph = exports.Graph = void 0;\n\n var Structures_1 = __webpack_require__(39);\n\n var Shape_1 = __webpack_require__(13);\n\n var search_1 = __webpack_require__(42);\n\n var ListUtils_1 = __webpack_require__(90);\n\n var GraphBase =\n /** @class */\n function () {\n function GraphBase(nodes, edges) {\n this.nodeMap = {};\n this.edgeMap = {};\n this.nodes = [];\n this.edges = [];\n this.onInit();\n nodes.forEach(this.addNode.bind(this));\n edges.forEach(this.addEdge.bind(this));\n }\n\n Object.defineProperty(GraphBase.prototype, \"items\", {\n get: function get() {\n return this.nodes.map(this.getNode.bind(this));\n },\n enumerable: false,\n configurable: true\n });\n\n GraphBase.prototype.onInit = function () {};\n\n GraphBase.prototype.addEdge = function (edge) {\n this.edgeMap[edge.key] = edge;\n this.edges.push(edge);\n };\n\n GraphBase.prototype.addNode = function (node) {\n this.nodeMap[node.key] = node;\n this.nodes.push(node.key);\n };\n\n GraphBase.prototype.getNode = function (key) {\n return this.nodeMap[key];\n };\n\n GraphBase.prototype.getEdge = function (key) {\n return this.edgeMap[key];\n };\n\n GraphBase.prototype.isEmpty = function () {\n return !this.nodes.length && !this.edges.length;\n };\n\n GraphBase.prototype.getAdjacentEdges = function (nodeKey, connectionMode) {\n if (connectionMode === void 0) {\n connectionMode = Structures_1.ConnectionMode.OutgoingAndIncoming;\n }\n\n return this.edges.filter(function (e) {\n return connectionMode & Structures_1.ConnectionMode.Incoming && e.to === nodeKey || connectionMode & Structures_1.ConnectionMode.Outgoing && e.from === nodeKey;\n });\n };\n\n return GraphBase;\n }();\n\n var Graph =\n /** @class */\n function (_super) {\n __extends(Graph, _super);\n\n function Graph() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Graph.prototype.cast = function (castNode, castEdge) {\n var _this = this;\n\n var newNodes = this.nodes.map(function (nk) {\n return castNode(_this.getNode(nk));\n });\n var newEdges = this.edges.map(function (e) {\n return castEdge ? castEdge(e) : e;\n });\n return new Graph(newNodes, newEdges);\n };\n\n Graph.prototype.getConnectedComponents = function () {\n var iterator = this.createIterator(Structures_1.ConnectionMode.OutgoingAndIncoming);\n iterator.visitEachEdgeOnce = true;\n var components = [];\n\n var _loop_1 = function _loop_1(i) {\n var nodes = [];\n var edges = [];\n\n iterator.onNode = function (n) {\n return nodes.push(n);\n };\n\n iterator.onEdge = function (e) {\n return edges.push(e);\n };\n\n iterator.iterate(this_1.nodes[i]);\n if (nodes.length) components.push(new Graph(nodes, edges));\n };\n\n var this_1 = this;\n\n for (var i = 0; i < this.nodes.length; i++) {\n _loop_1(i);\n }\n\n return components;\n };\n\n Graph.prototype.createIterator = function (connectionMode) {\n var iterator = new GraphIterator(this, connectionMode);\n\n iterator.comparer = function (a, b) {\n return a.weight - b.weight;\n };\n\n return iterator;\n };\n\n Graph.prototype.getSpanningGraph = function (rootKey, connectionMode, edgeWeightFunc) {\n var _this = this;\n\n if (edgeWeightFunc === void 0) {\n edgeWeightFunc = undefined;\n }\n\n if (!this.nodes.length) return new Graph([], []);\n if (!edgeWeightFunc) edgeWeightFunc = function edgeWeightFunc(e) {\n return e.weight;\n };\n var sortedAdjacentEdges = [];\n var spanningTreeNodesSet = new ListUtils_1.HashSet();\n var spanningTreeEdgesSet = new ListUtils_1.HashSet([], function (e) {\n return e.getHashKey();\n });\n this.addNodeToSpanningGraph(rootKey, connectionMode, sortedAdjacentEdges, spanningTreeNodesSet, spanningTreeEdgesSet, edgeWeightFunc);\n\n while (sortedAdjacentEdges.length && spanningTreeNodesSet.length !== this.nodes.length) {\n var minWeighedEdge = sortedAdjacentEdges.shift();\n spanningTreeEdgesSet.tryPush(minWeighedEdge);\n var node = spanningTreeNodesSet.contains(minWeighedEdge.from) ? minWeighedEdge.to : minWeighedEdge.from;\n this.addNodeToSpanningGraph(node, connectionMode, sortedAdjacentEdges, spanningTreeNodesSet, spanningTreeEdgesSet, edgeWeightFunc);\n sortedAdjacentEdges = sortedAdjacentEdges.filter(function (e) {\n return !spanningTreeNodesSet.contains(e.from) || !spanningTreeNodesSet.contains(e.to);\n });\n }\n\n return new Graph(spanningTreeNodesSet.list().map(function (nk) {\n return _this.getNode(nk);\n }), spanningTreeEdgesSet.list());\n };\n\n Graph.prototype.addNodeToSpanningGraph = function (nodeKey, connectionMode, adjacentEdges, spanningTreeNodesSet, spanningTreeEdgesSet, edgeWeightFunc) {\n spanningTreeNodesSet.tryPush(nodeKey);\n this.getAdjacentEdges(nodeKey, connectionMode).filter(function (e) {\n return !spanningTreeEdgesSet.contains(e);\n }).forEach(function (e) {\n var weight = edgeWeightFunc(e);\n var pos = search_1.SearchUtils.binaryIndexOf(adjacentEdges, function (a) {\n return a.weight - weight;\n });\n pos = pos < 0 ? ~pos : pos;\n\n while (pos < adjacentEdges.length && edgeWeightFunc(adjacentEdges[pos]) === weight) {\n pos++;\n }\n\n adjacentEdges.splice(pos, 0, new Structures_1.Edge(e.key, e.from, e.to, weight));\n });\n };\n\n Graph.create = function (shapes, connectors) {\n var nodes = shapes;\n var edges = connectors.filter(function (i) {\n return i.beginItem && i.endItem instanceof Shape_1.Shape && i.endItem && i.endItem instanceof Shape_1.Shape && i.beginItem !== i.endItem;\n }) // TBD: ShapeItem?\n .map(function (i) {\n return new Structures_1.Edge(i.key, i.beginItem && i.beginItem.key, i.endItem && i.endItem.key);\n });\n return new Graph(nodes, edges);\n };\n\n return Graph;\n }(GraphBase);\n\n exports.Graph = Graph;\n\n var FastGraph =\n /** @class */\n function (_super) {\n __extends(FastGraph, _super);\n\n function FastGraph() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n FastGraph.prototype.onInit = function () {\n this.parentToChildren = {};\n this.childToParents = {};\n };\n\n FastGraph.prototype.addEdge = function (edge) {\n _super.prototype.addEdge.call(this, edge);\n\n (this.parentToChildren[edge.from] || (this.parentToChildren[edge.from] = [])).push(edge.to);\n (this.childToParents[edge.to] || (this.childToParents[edge.to] = [])).push(edge.from);\n };\n\n FastGraph.prototype.getChildren = function (parent) {\n return this.parentToChildren[parent] || [];\n };\n\n FastGraph.prototype.getParents = function (child) {\n return this.childToParents[child] || [];\n };\n\n FastGraph.prototype.createIterator = function (connectionMode) {\n return new GraphIterator(this, connectionMode);\n };\n\n return FastGraph;\n }(GraphBase);\n\n exports.FastGraph = FastGraph;\n\n var GraphIterator =\n /** @class */\n function () {\n function GraphIterator(graph, connectionMode) {\n if (connectionMode === void 0) {\n connectionMode = Structures_1.ConnectionMode.OutgoingAndIncoming;\n }\n\n this.graph = graph;\n this.connectionMode = connectionMode;\n this.visitEachEdgeOnce = true;\n this.visitEachNodeOnce = true;\n this.visitedNodes = {};\n this.visitedEdges = {};\n }\n\n GraphIterator.prototype.iterate = function (nodeKey) {\n if (!this.visitEachNodeOnce && !this.visitEachEdgeOnce && !this.skipNode) throw \"skipNode or visitEachNodeOnce or visitEachEdgeOnce must be set to avoid SOF\";\n this.iterateCore(nodeKey);\n };\n\n GraphIterator.prototype.iterateCore = function (nodeKey) {\n var _this = this;\n\n var node = this.graph.getNode(nodeKey);\n if (!node || this.skipNode && this.skipNode(node) || this.visitEachNodeOnce && this.isNodeVisited(nodeKey)) return;\n this.visitedNodes[nodeKey] = true;\n this.onNode && this.onNode(node);\n var edges = this.graph.getAdjacentEdges(nodeKey, this.connectionMode);\n if (this.skipEdge) edges = edges.filter(function (e) {\n return !_this.skipEdge(e);\n });\n\n if (this.connectionMode & Structures_1.ConnectionMode.Outgoing) {\n var outgoing = edges.filter(function (e) {\n return e.from === nodeKey;\n });\n if (this.comparer) outgoing.sort(this.comparer);\n outgoing.forEach(function (e) {\n if (_this.visitEachEdgeOnce && _this.visitedEdges[e.key]) return;\n _this.visitedEdges[e.key] = true;\n _this.onEdge && _this.onEdge(e, true);\n\n _this.iterateCore(e.to);\n\n _this.onAfterEdge && _this.onAfterEdge(e, true);\n });\n }\n\n this.onAllEdges && this.onAllEdges(node, true);\n\n if (this.connectionMode & Structures_1.ConnectionMode.Incoming) {\n var incoming = edges.filter(function (e) {\n return e.to === nodeKey;\n });\n if (this.comparer) incoming.sort(this.comparer);\n incoming.forEach(function (e) {\n if (_this.visitEachEdgeOnce && _this.visitedEdges[e.key]) return;\n _this.visitedEdges[e.key] = true;\n _this.onEdge && _this.onEdge(e, false);\n\n _this.iterateCore(e.from);\n\n _this.onAfterEdge && _this.onAfterEdge(e, false);\n });\n }\n\n this.onAllEdges && this.onAllEdges(node, false);\n };\n\n GraphIterator.prototype.isNodeVisited = function (nodeKey) {\n return !!this.visitedNodes[nodeKey];\n };\n\n GraphIterator.prototype.isEdgeVisited = function (edgeKey) {\n return !!this.visitedEdges[edgeKey];\n };\n\n return GraphIterator;\n }();\n\n exports.GraphIterator = GraphIterator;\n /***/\n },\n /* 70 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Margin = exports.EdgeLayout = exports.NodeLayout = exports.NodeInfo = void 0;\n\n var rectangle_1 = __webpack_require__(12);\n\n var NodeInfo =\n /** @class */\n function () {\n function NodeInfo(key, margin, size, connectionPoints) {\n if (connectionPoints === void 0) {\n connectionPoints = [];\n }\n\n this.key = key;\n this.margin = margin;\n this.size = size;\n this.connectionPoints = connectionPoints;\n }\n\n return NodeInfo;\n }();\n\n exports.NodeInfo = NodeInfo;\n\n var NodeLayout =\n /** @class */\n function () {\n function NodeLayout(info, position) {\n this.info = info;\n this.position = position;\n }\n\n Object.defineProperty(NodeLayout.prototype, \"key\", {\n get: function get() {\n return this.info.key;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(NodeLayout.prototype, \"rectangle\", {\n get: function get() {\n return rectangle_1.Rectangle.fromGeometry(this.position, this.info.size);\n },\n enumerable: false,\n configurable: true\n });\n return NodeLayout;\n }();\n\n exports.NodeLayout = NodeLayout;\n\n var EdgeLayout =\n /** @class */\n function () {\n function EdgeLayout(key, beginIndex, endIndex) {\n this.key = key;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n }\n\n return EdgeLayout;\n }();\n\n exports.EdgeLayout = EdgeLayout;\n\n var Margin =\n /** @class */\n function () {\n function Margin(top, right, bottom, left) {\n if (right === void 0) {\n right = top;\n }\n\n if (bottom === void 0) {\n bottom = top;\n }\n\n if (left === void 0) {\n left = top;\n }\n\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n this.left = left;\n }\n\n Margin.empty = function () {\n return new Margin(0);\n };\n\n return Margin;\n }();\n\n exports.Margin = Margin;\n /***/\n },\n /* 71 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics30 = function extendStatics(d, b) {\n _extendStatics30 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics30(d, b);\n };\n\n return function (d, b) {\n _extendStatics30(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EllipseShapeDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var EllipsePrimitive_1 = __webpack_require__(54);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var Utils_1 = __webpack_require__(3);\n\n var rectangle_1 = __webpack_require__(12);\n\n var EllipseShapeDescription =\n /** @class */\n function (_super) {\n __extends(EllipseShapeDescription, _super);\n\n function EllipseShapeDescription(hasDefaultText) {\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.75), hasDefaultText) || this;\n }\n\n Object.defineProperty(EllipseShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Ellipse;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(EllipseShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n EllipseShapeDescription.prototype.getTextRectangle = function (shape) {\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\n };\n\n EllipseShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\n };\n\n EllipseShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var width = rect.width,\n height = rect.height;\n var _a = rect.center,\n cx = _a.x,\n cy = _a.y;\n return [new EllipsePrimitive_1.EllipsePrimitive(cx, cy, width / 2, height / 2, shape.style)];\n };\n\n return EllipseShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.EllipseShapeDescription = EllipseShapeDescription;\n /***/\n },\n /* 72 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Exporter = void 0;\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var Utils_1 = __webpack_require__(3);\n\n var Exporter =\n /** @class */\n function () {\n function Exporter() {}\n\n Exporter.prototype.export = function (model) {\n var obj = {\n page: {},\n connectors: [],\n shapes: []\n };\n obj.page = {\n \"width\": model.size.width,\n \"height\": model.size.height,\n \"pageColor\": model.pageColor,\n \"pageWidth\": model.pageSize.width,\n \"pageHeight\": model.pageSize.height,\n \"pageLandscape\": model.pageLandscape\n };\n this.exportItemsCore(model.items, obj);\n return JSON.stringify(obj);\n };\n\n Exporter.prototype.exportItems = function (items) {\n var obj = {\n connectors: [],\n shapes: []\n };\n this.exportItemsCore(items, obj);\n return JSON.stringify(obj);\n };\n\n Exporter.prototype.exportItemsCore = function (items, obj) {\n var _this = this;\n\n items.forEach(function (item) {\n if (item instanceof Shape_1.Shape) obj.shapes.push(_this.exportShape(item));else if (item instanceof Connector_1.Connector) {\n var connectorObj = _this.exportConnector(item);\n\n if (item.beginItem) {\n connectorObj[\"beginItemKey\"] = item.beginItem.key;\n connectorObj[\"beginConnectionPointIndex\"] = item.beginConnectionPointIndex;\n }\n\n if (item.endItem) {\n connectorObj[\"endItemKey\"] = item.endItem.key;\n connectorObj[\"endConnectionPointIndex\"] = item.endConnectionPointIndex;\n }\n\n obj.connectors.push(connectorObj);\n }\n });\n };\n\n Exporter.prototype.exportItem = function (item) {\n return {\n \"key\": item.key,\n \"dataKey\": item.dataKey,\n \"customData\": Utils_1.ObjectUtils.cloneObject(item.customData),\n \"locked\": item.locked,\n \"zIndex\": item.zIndex\n };\n };\n\n Exporter.prototype.exportShape = function (shape) {\n var result = this.exportItem(shape);\n result[\"type\"] = shape.description.key;\n result[\"text\"] = shape.text;\n if (!shape.image.isEmpty) result[\"imageUrl\"] = shape.image.exportUrl;\n result[\"x\"] = shape.position.x;\n result[\"y\"] = shape.position.y;\n result[\"width\"] = shape.size.width;\n result[\"height\"] = shape.size.height;\n var paramsObj = shape.parameters.toObject();\n if (paramsObj) result[\"parameters\"] = paramsObj;\n var styleObj = shape.style.toObject();\n if (styleObj) result[\"style\"] = styleObj;\n var styleTextObj = shape.styleText.toObject();\n if (styleTextObj) result[\"styleText\"] = styleTextObj;\n if (shape.children.length) result[\"childKeys\"] = shape.children.map(function (child) {\n return child.key;\n });\n if (!shape.expanded) result[\"expanded\"] = false;\n\n if (shape.expandedSize) {\n result[\"expandedWidth\"] = shape.expandedSize.width;\n result[\"expandedHeight\"] = shape.expandedSize.height;\n }\n\n return result;\n };\n\n Exporter.prototype.exportConnector = function (connector) {\n var result = this.exportItem(connector);\n result[\"points\"] = connector.points.map(function (p) {\n return {\n \"x\": p.x,\n \"y\": p.y\n };\n });\n var textObj = connector.texts.toObject();\n if (textObj) result[\"texts\"] = textObj;\n var propsObj = connector.properties.toObject();\n if (propsObj) result[\"properties\"] = propsObj;\n var styleObj = connector.style.toObject();\n if (styleObj) result[\"style\"] = styleObj;\n var styleTextObj = connector.styleText.toObject();\n if (styleTextObj) result[\"styleText\"] = styleTextObj;\n return result;\n }; // Images\n\n\n Exporter.prototype.exportSvg = function (modelSize, pageColor, exportManager, callback) {\n exportManager.exportSvgImage(modelSize, pageColor, callback);\n };\n\n Exporter.prototype.exportPng = function (modelSize, pageColor, exportManager, callback) {\n exportManager.exportPngImage(modelSize, pageColor, callback);\n };\n\n Exporter.prototype.exportJpg = function (modelSize, pageColor, exportManager, callback) {\n exportManager.exportJpgImage(modelSize, pageColor, callback);\n };\n\n return Exporter;\n }();\n\n exports.Exporter = Exporter;\n /***/\n },\n /* 73 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics31 = function extendStatics(d, b) {\n _extendStatics31 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics31(d, b);\n };\n\n return function (d, b) {\n _extendStatics31(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleStyleTextPropertyCommand = void 0;\n\n var StylePropertyCommandBase_1 = __webpack_require__(135);\n\n var ChangeStyleTextHistoryItem_1 = __webpack_require__(68);\n\n var Style_1 = __webpack_require__(27);\n\n var ToggleStyleTextPropertyCommand =\n /** @class */\n function (_super) {\n __extends(ToggleStyleTextPropertyCommand, _super);\n\n function ToggleStyleTextPropertyCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleStyleTextPropertyCommand.prototype.getValue = function () {\n var value = this.control.selection.inputPosition.getCurrentTextStylePropertyValue(this.getStyleProperty());\n return value === this.getStylePropertyValue();\n };\n\n ToggleStyleTextPropertyCommand.prototype.executeCore = function (state) {\n var _this = this;\n\n this.control.history.beginTransaction();\n var styleProperty = this.getStyleProperty();\n var styleValue = state.value ? Style_1.TextStyle.defaultInstance[styleProperty] : this.getStylePropertyValue();\n var items = this.control.selection.getSelectedItems();\n items.forEach(function (item) {\n _this.control.history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(item.key, styleProperty, styleValue));\n });\n this.control.selection.inputPosition.setTextStylePropertyValue(this.getStyleProperty(), styleValue);\n this.control.history.endTransaction();\n return true;\n };\n\n ToggleStyleTextPropertyCommand.prototype.getStyleObj = function (item) {\n return item.styleText;\n };\n\n ToggleStyleTextPropertyCommand.prototype.getDefaultStyleObj = function () {\n return new Style_1.TextStyle();\n };\n\n return ToggleStyleTextPropertyCommand;\n }(StylePropertyCommandBase_1.StylePropertyCommandBase);\n\n exports.ToggleStyleTextPropertyCommand = ToggleStyleTextPropertyCommand;\n /***/\n },\n /* 74 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics32 = function extendStatics(d, b) {\n _extendStatics32 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics32(d, b);\n };\n\n return function (d, b) {\n _extendStatics32(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeStylePropertyCommand = void 0;\n\n var ChangeStylePropertyCommandBase_1 = __webpack_require__(136);\n\n var ChangeStyleHistoryItem_1 = __webpack_require__(89);\n\n var Style_1 = __webpack_require__(27);\n\n var ChangeStylePropertyCommand =\n /** @class */\n function (_super) {\n __extends(ChangeStylePropertyCommand, _super);\n\n function ChangeStylePropertyCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeStylePropertyCommand.prototype.getValue = function () {\n return this.control.selection.inputPosition.getCurrentStylePropertyValue(this.getStyleProperty());\n };\n\n ChangeStylePropertyCommand.prototype.getStyleObj = function (item) {\n return item.style;\n };\n\n ChangeStylePropertyCommand.prototype.getDefaultStyleObj = function () {\n return new Style_1.Style();\n };\n\n ChangeStylePropertyCommand.prototype.createHistoryItem = function (item, styleProperty, styleValue) {\n return new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(item.key, styleProperty, styleValue);\n };\n\n ChangeStylePropertyCommand.prototype.updateInputPosition = function (value) {\n this.control.selection.inputPosition.setStylePropertyValue(this.getStyleProperty(), value);\n };\n\n return ChangeStylePropertyCommand;\n }(ChangeStylePropertyCommandBase_1.ChangeStylePropertyCommandBase);\n\n exports.ChangeStylePropertyCommand = ChangeStylePropertyCommand;\n /***/\n },\n /* 75 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics33 = function extendStatics(d, b) {\n _extendStatics33 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics33(d, b);\n };\n\n return function (d, b) {\n _extendStatics33(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoLayoutCommandBase = void 0;\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var Utils_1 = __webpack_require__(3);\n\n var rectangle_1 = __webpack_require__(12);\n\n var ScrollIntoViewHistoryItem_1 = __webpack_require__(251);\n\n var AutoLayoutCommandBase =\n /** @class */\n function (_super) {\n __extends(AutoLayoutCommandBase, _super);\n\n function AutoLayoutCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AutoLayoutCommandBase.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n this.control.history.beginTransaction();\n var shapes = this.getAffectedShapes();\n var connectors = this.getAffectedConnectors();\n var settings = this.createLayoutSettings();\n var graphInfo = ModelUtils_1.ModelUtils.getGraphInfoByItems(this.control.model, shapes, connectors, false);\n\n if (graphInfo.length) {\n var rectangle_2;\n var model_1 = this.control.model;\n var commonRect = Utils_1.GeometryUtils.getCommonRectangle(Utils_1.Utils.flatten(graphInfo.map(function (g) {\n return g.graph.items.map(function (i) {\n return model_1.findItem(i.key);\n });\n })).concat(graphInfo.map(function (g) {\n return g.container;\n })).filter(function (i) {\n return i;\n }).map(function (i) {\n return i.rectangle;\n }));\n this.control.history.addAndRedo(new ScrollIntoViewHistoryItem_1.ScrollIntoViewOnUndoHistoryItem(this.control.view, commonRect));\n graphInfo.forEach(function (info) {\n var layout = _this.createLayout(settings, info.graph);\n\n var nonGraphItems = ModelUtils_1.ModelUtils.getNonGraphItems(_this.control.model, info.container, layout.nodeToLayout, shapes, connectors);\n var layoutRect = ModelUtils_1.ModelUtils.applyLayout(_this.control.history, _this.control.model, info.container, info.graph, layout, nonGraphItems, settings, _this.control.settings.snapToGrid, _this.control.settings.gridSize, false);\n rectangle_2 = rectangle_2 && rectangle_1.Rectangle.union(rectangle_2, layoutRect) || layoutRect;\n });\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\n this.control.history.addAndRedo(new ScrollIntoViewHistoryItem_1.ScrollIntoViewOnRedoHistoryItem(this.control.view, rectangle_2));\n }\n\n this.control.history.endTransaction();\n return true;\n };\n\n AutoLayoutCommandBase.prototype.getAffectedShapes = function () {\n return this.control.selection.isEmpty() ? this.control.model.items.filter(function (i) {\n return i instanceof Shape_1.Shape && !i.locked;\n }) : this.control.selection.getSelectedShapes(false, true);\n };\n\n AutoLayoutCommandBase.prototype.getAffectedConnectors = function () {\n return this.control.selection.isEmpty() ? this.control.model.items.filter(function (i) {\n return i instanceof Connector_1.Connector && !i.locked;\n }) : this.control.selection.getSelectedConnectors(false, true);\n };\n\n return AutoLayoutCommandBase;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.AutoLayoutCommandBase = AutoLayoutCommandBase;\n /***/\n },\n /* 76 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics34 = function extendStatics(d, b) {\n _extendStatics34 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics34(d, b);\n };\n\n return function (d, b) {\n _extendStatics34(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangePagePropertyCommand = void 0;\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ChangePagePropertyCommand =\n /** @class */\n function (_super) {\n __extends(ChangePagePropertyCommand, _super);\n\n function ChangePagePropertyCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangePagePropertyCommand.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n this.control.history.beginTransaction();\n var items = this.createHistoryItems(parameter);\n items.forEach(function (item) {\n _this.control.history.addAndRedo(item);\n });\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\n this.control.history.endTransaction();\n return true;\n };\n\n ChangePagePropertyCommand.prototype.getItems = function () {\n return null;\n };\n\n return ChangePagePropertyCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangePagePropertyCommand = ChangePagePropertyCommand;\n /***/\n },\n /* 77 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics35 = function extendStatics(d, b) {\n _extendStatics35 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics35(d, b);\n };\n\n return function (d, b) {\n _extendStatics35(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CanvasItemsManager = exports.CONNECTOR_CAN_MOVE = exports.NOT_VALID_CSSCLASS = void 0;\n\n var ModelChange_1 = __webpack_require__(99);\n\n var Event_1 = __webpack_require__(14);\n\n var GroupPrimitive_1 = __webpack_require__(40);\n\n var Utils_1 = __webpack_require__(17);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var dom_1 = __webpack_require__(23);\n\n var CanvasManager_1 = __webpack_require__(141);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n exports.NOT_VALID_CSSCLASS = \"not-valid\";\n exports.CONNECTOR_CAN_MOVE = \"can-move\";\n\n var CanvasItemsManager =\n /** @class */\n function (_super) {\n __extends(CanvasItemsManager, _super);\n\n function CanvasItemsManager(viewElement, zoomLevel, dom) {\n var _this = _super.call(this, zoomLevel, dom) || this;\n\n _this.itemSelectorGroupContainers = {};\n _this.itemSelectorElements = {};\n _this.itemGroupContainers = {};\n _this.itemElements = {};\n _this.itemChildElements = {};\n _this.primitives = {};\n _this.selectorPrimitives = {};\n _this.selectedItems = {};\n\n _this.initializeContainerElements(viewElement);\n\n return _this;\n }\n\n CanvasItemsManager.prototype.initializeContainerElements = function (view) {\n this.itemSelectorsContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), view);\n this.itemsContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), view);\n };\n\n CanvasItemsManager.prototype.clear = function () {\n this.primitives = {};\n this.selectorPrimitives = {};\n Utils_1.RenderUtils.removeContent(this.itemSelectorsContainer);\n Utils_1.RenderUtils.removeContent(this.itemsContainer);\n this.itemSelectorGroupContainers = {};\n this.itemSelectorElements = {};\n this.itemGroupContainers = {};\n this.itemElements = {};\n this.itemChildElements = {};\n this.selectedItems = {};\n };\n\n CanvasItemsManager.prototype.applyChange = function (change) {\n var item = change.item;\n var itemParent = this.getItemParent(item.zIndex, item.container && item.container.key);\n if (!itemParent) return false;\n if (item instanceof Shape_1.Shape) this.applyShapeChange(item, change.type, change.isValid);else if (item instanceof Connector_1.Connector) this.applyConnectorChange(item, change.type, change.isValid);\n return true;\n }; // Notifications\n\n\n CanvasItemsManager.prototype.setPointerEventsNone = function (element, value) {\n var style = element.style;\n if (style !== undefined && style.pointerEvents !== undefined) style.pointerEvents = value ? \"none\" : \"\";\n var childNodes = element.childNodes;\n\n for (var i = 0; i < childNodes.length; i++) {\n this.setPointerEventsNone(childNodes[i], value);\n }\n };\n\n CanvasItemsManager.prototype.notifyDragStart = function (itemKeys) {\n var _this = this;\n\n itemKeys.forEach(function (itemKey) {\n if (_this.itemElements[itemKey]) _this.setPointerEventsNone(_this.itemElements[itemKey], true);\n if (_this.itemChildElements[itemKey]) _this.setPointerEventsNone(_this.itemChildElements[itemKey], true);\n if (_this.itemSelectorElements[itemKey]) _this.setPointerEventsNone(_this.itemSelectorElements[itemKey], true);\n });\n };\n\n CanvasItemsManager.prototype.notifyDragEnd = function (itemKeys) {\n var _this = this;\n\n itemKeys.forEach(function (itemKey) {\n if (_this.itemElements[itemKey]) _this.setPointerEventsNone(_this.itemElements[itemKey], false);\n if (_this.itemChildElements[itemKey]) _this.setPointerEventsNone(_this.itemChildElements[itemKey], false);\n if (_this.itemSelectorElements[itemKey]) _this.setPointerEventsNone(_this.itemSelectorElements[itemKey], false);\n });\n };\n\n CanvasItemsManager.prototype.notifyDragScrollStart = function () {};\n\n CanvasItemsManager.prototype.notifyDragScrollEnd = function () {};\n\n CanvasItemsManager.prototype.notifyTextInputStart = function (item, text, position, size) {\n var element = this.itemElements[item.key];\n dom_1.DomUtils.addClassName(element, \"text-input\");\n };\n\n CanvasItemsManager.prototype.notifyTextInputEnd = function (item) {\n var element = this.itemElements[item.key];\n dom_1.DomUtils.removeClassName(element, \"text-input\");\n };\n\n CanvasItemsManager.prototype.notifyTextInputPermissionsCheck = function (item, allowed) {\n var element = this.itemElements[item.key];\n if (allowed) dom_1.DomUtils.removeClassName(element, exports.NOT_VALID_CSSCLASS);else dom_1.DomUtils.addClassName(element, exports.NOT_VALID_CSSCLASS);\n };\n\n CanvasItemsManager.prototype.notifyActualZoomChanged = function (actualZoom) {\n var scale = \"scale(\" + actualZoom + \")\";\n this.dom.changeByFunc(this.itemsContainer, function (e) {\n return e.setAttribute(\"transform\", scale);\n });\n this.dom.changeByFunc(this.itemSelectorsContainer, function (e) {\n return e.setAttribute(\"transform\", scale);\n });\n this.actualZoom = actualZoom;\n };\n\n CanvasItemsManager.prototype.notifyViewAdjusted = function (canvasOffset) {}; // Primitives\n\n\n CanvasItemsManager.prototype.invalidatePrimitives = function (item) {\n if (this.primitives[item.key]) {\n this.primitives[item.key].forEach(function (primitive) {\n primitive.dispose();\n });\n delete this.primitives[item.key];\n }\n\n if (this.selectorPrimitives[item.key]) {\n this.selectorPrimitives[item.key].forEach(function (primitive) {\n primitive.dispose();\n });\n delete this.selectorPrimitives[item.key];\n }\n };\n\n CanvasItemsManager.prototype.getPrimitives = function (item) {\n if (!this.primitives[item.key]) this.primitives[item.key] = item.createPrimitives();\n return this.primitives[item.key];\n };\n\n CanvasItemsManager.prototype.getSelectorPrimitives = function (item) {\n if (!this.selectorPrimitives[item.key]) this.selectorPrimitives[item.key] = item.createSelectorPrimitives();\n return this.selectorPrimitives[item.key];\n }; // Drawing\n\n\n CanvasItemsManager.prototype.getShapeSelectorClassName = function (shape) {\n var className = \"shape\";\n if (shape.enableChildren) className += \" container\";\n if (shape.isLocked) className += \" locked\";\n return className;\n };\n\n CanvasItemsManager.prototype.getShapeClassName = function (shape, isValid) {\n var selectorClassName = this.getShapeSelectorClassName(shape);\n return isValid ? selectorClassName : selectorClassName + \" \" + exports.NOT_VALID_CSSCLASS;\n };\n\n CanvasItemsManager.prototype.applyShapeChange = function (shape, type, isValid) {\n var key = shape.key;\n var containerKey = shape.container && shape.container.key;\n var itemSelectorParent = this.getItemSelectorGroupContainer(shape.zIndex, containerKey);\n var itemParent = this.getItemGroupContainer(shape.zIndex, containerKey);\n var itemClassName = this.getShapeClassName(shape, isValid);\n\n switch (type) {\n case ModelChange_1.ItemChangeType.Create:\n this.itemSelectorElements[key] = this.createItemElements(key, this.getSelectorPrimitives(shape), itemSelectorParent, this.getShapeSelectorClassName(shape), Event_1.MouseEventElementType.Shape);\n this.itemElements[key] = this.createItemElements(key, this.getPrimitives(shape), itemParent, itemClassName, Event_1.MouseEventElementType.Shape);\n\n if (shape.enableChildren) {\n this.itemChildElements[key] = this.createItemElements(key, [], itemParent, \"container-children\", Event_1.MouseEventElementType.Undefined);\n this.changeItemChildrenVisibility(this.itemChildElements[key], shape.expanded);\n }\n\n break;\n\n case ModelChange_1.ItemChangeType.Remove:\n this.removeItemCustomContent(this.itemSelectorElements[key], this.getSelectorPrimitives(shape));\n this.removeItemCustomContent(this.itemElements[key], this.getPrimitives(shape));\n this.invalidatePrimitives(shape);\n this.removeItemElements(this.itemSelectorElements[key]);\n delete this.itemSelectorElements[key];\n this.removeItemElements(this.itemElements[key]);\n delete this.itemElements[key];\n\n if (this.itemChildElements[key]) {\n this.removeItemElements(this.itemChildElements[key]);\n delete this.itemChildElements[key];\n delete this.itemGroupContainers[key];\n delete this.itemSelectorGroupContainers[key];\n }\n\n break;\n\n case ModelChange_1.ItemChangeType.UpdateStructure:\n case ModelChange_1.ItemChangeType.UpdateProperties:\n case ModelChange_1.ItemChangeType.Update:\n if (type !== ModelChange_1.ItemChangeType.Update) {\n if (type === ModelChange_1.ItemChangeType.UpdateStructure) {\n this.removeItemCustomContent(this.itemSelectorElements[key], this.getSelectorPrimitives(shape));\n this.removeItemCustomContent(this.itemElements[key], this.getPrimitives(shape));\n }\n\n this.invalidatePrimitives(shape);\n }\n\n this.changeItemElements(this.getSelectorPrimitives(shape), this.itemSelectorElements[key], type === ModelChange_1.ItemChangeType.UpdateStructure);\n this.changeItemElements(this.getPrimitives(shape), this.itemElements[key], type === ModelChange_1.ItemChangeType.UpdateStructure);\n this.changeItemClassName(this.itemElements[key], itemClassName);\n if (this.itemChildElements[key]) this.changeItemChildrenVisibility(this.itemChildElements[key], shape.expanded);\n if (itemSelectorParent !== (this.itemSelectorElements[key] && this.itemSelectorElements[key].parentNode)) this.moveItemElements(itemSelectorParent, this.itemSelectorElements[key]);\n if (itemParent !== (this.itemElements[key] && this.itemElements[key].parentNode)) this.moveItemElements(itemParent, this.itemElements[key]);\n if (this.itemChildElements[key] && itemParent !== this.itemChildElements[key].parentNode) this.moveItemElements(itemParent, this.itemChildElements[key]);\n break;\n\n case ModelChange_1.ItemChangeType.UpdateClassName:\n this.changeItemClassName(this.itemElements[key], itemClassName);\n }\n };\n\n CanvasItemsManager.prototype.getConnectorSelectorClassName = function (connector) {\n var selectorClassName = \"connector\";\n return ModelUtils_1.ModelUtils.canMoveConnector(this.selectedItems, connector) ? selectorClassName + \" \" + exports.CONNECTOR_CAN_MOVE : selectorClassName;\n };\n\n CanvasItemsManager.prototype.getConnectorClassName = function (connector, isValid) {\n var selectorMoveClassName = this.getConnectorSelectorClassName(connector);\n return isValid ? selectorMoveClassName : selectorMoveClassName + \" \" + exports.NOT_VALID_CSSCLASS;\n };\n\n CanvasItemsManager.prototype.applyConnectorChange = function (connector, type, isValid) {\n var key = connector.key;\n var containerKey = connector.container && connector.container.key;\n var itemSelectorParent = this.getItemSelectorGroupContainer(connector.zIndex, containerKey);\n var itemParent = this.getItemGroupContainer(connector.zIndex, containerKey);\n var className = this.getConnectorClassName(connector, isValid);\n\n switch (type) {\n case ModelChange_1.ItemChangeType.Create:\n this.itemSelectorElements[key] = this.createItemElements(key, this.getSelectorPrimitives(connector), itemSelectorParent, this.getConnectorSelectorClassName(connector), Event_1.MouseEventElementType.Connector);\n this.itemElements[key] = this.createItemElements(key, this.getPrimitives(connector), itemParent, className, Event_1.MouseEventElementType.Connector);\n break;\n\n case ModelChange_1.ItemChangeType.Remove:\n this.removeItemCustomContent(this.itemSelectorElements[key], this.getSelectorPrimitives(connector));\n this.removeItemCustomContent(this.itemElements[key], this.getPrimitives(connector));\n this.invalidatePrimitives(connector);\n this.removeItemElements(this.itemSelectorElements[key]);\n delete this.itemSelectorElements[key];\n this.removeItemElements(this.itemElements[key]);\n delete this.itemElements[key];\n break;\n\n case ModelChange_1.ItemChangeType.UpdateStructure:\n case ModelChange_1.ItemChangeType.UpdateProperties:\n case ModelChange_1.ItemChangeType.Update:\n if (type !== ModelChange_1.ItemChangeType.Update) {\n if (type === ModelChange_1.ItemChangeType.UpdateStructure) {\n this.removeItemCustomContent(this.itemSelectorElements[key], this.getSelectorPrimitives(connector));\n this.removeItemCustomContent(this.itemElements[key], this.getPrimitives(connector));\n }\n\n this.invalidatePrimitives(connector);\n }\n\n this.changeItemElements(this.getSelectorPrimitives(connector), this.itemSelectorElements[key], type === ModelChange_1.ItemChangeType.UpdateStructure);\n this.changeItemClassName(this.itemSelectorElements[key], this.getConnectorSelectorClassName(connector));\n this.changeItemElements(this.getPrimitives(connector), this.itemElements[key], type === ModelChange_1.ItemChangeType.UpdateStructure);\n this.changeItemClassName(this.itemElements[key], className);\n if (itemSelectorParent !== (this.itemSelectorElements[key] && this.itemSelectorElements[key].parentNode)) this.moveItemElements(itemSelectorParent, this.itemSelectorElements[key]);\n if (itemParent !== (this.itemElements[key] && this.itemElements[key].parentNode)) this.moveItemElements(itemParent, this.itemElements[key]);\n break;\n\n case ModelChange_1.ItemChangeType.UpdateClassName:\n this.changeItemClassName(this.itemSelectorElements[key], this.getConnectorSelectorClassName(connector));\n this.changeItemClassName(this.itemElements[key], className);\n }\n };\n\n CanvasItemsManager.prototype.createItemElements = function (key, primitives, parent, className, type) {\n var gEl = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], className, undefined, undefined, function (e) {\n return Utils_1.RenderUtils.setElementEventData(e, type, key);\n }), parent);\n this.createAndChangePrimitivesElements(primitives, gEl);\n return gEl;\n };\n\n CanvasItemsManager.prototype.changeItemElements = function (primitives, element, updateStructure) {\n if (updateStructure || primitives.length !== element.childNodes.length) {\n Utils_1.RenderUtils.removeContent(element);\n this.createAndChangePrimitivesElements(primitives, element);\n } else this.dom.changeChildrenByPrimitives(primitives, element);\n };\n\n CanvasItemsManager.prototype.changeItemClassName = function (element, className) {\n if (className && element) this.changePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], className), element);\n };\n\n CanvasItemsManager.prototype.removeItemElements = function (element) {\n if (element && element.parentNode) element.parentNode.removeChild(element);\n };\n\n CanvasItemsManager.prototype.removeItemCustomContent = function (element, primitives) {\n if (element && primitives && primitives.length === element.childNodes.length) primitives.forEach(function (primitive, index) {\n primitive.destroyCustomContent(element.childNodes[index]);\n });\n };\n\n CanvasItemsManager.prototype.moveItemElements = function (parent, element, sibling) {\n if (element && parent) if (sibling) parent.insertBefore(element, sibling);else parent.appendChild(element);\n };\n\n CanvasItemsManager.prototype.changeItemChildrenVisibility = function (element, expanded) {\n element.style.display = expanded ? \"\" : \"none\";\n };\n\n CanvasItemsManager.prototype.getItemGroupContainerKey = function (zIndex, parentContainerKey) {\n return parentContainerKey !== undefined ? zIndex + \"_\" + parentContainerKey : zIndex.toString();\n };\n\n CanvasItemsManager.prototype.getItemGroupContainer = function (zIndex, parentContainerKey) {\n var parent = parentContainerKey !== undefined ? this.getItemParent(zIndex, parentContainerKey) : this.itemsContainer;\n var key = parentContainerKey || \"Main\";\n\n if (this.itemGroupContainers[key] === undefined || this.itemGroupContainers[key][zIndex] === undefined) {\n if (this.itemGroupContainers[key] === undefined) this.itemGroupContainers[key] = [];\n this.itemGroupContainers[key][zIndex] = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null, zIndex), parent, this.itemGroupContainers[key][zIndex + 1]);\n }\n\n return this.itemGroupContainers[key][zIndex];\n };\n\n CanvasItemsManager.prototype.getItemSelectorGroupContainer = function (zIndex, parentContainerKey) {\n var parent = parentContainerKey !== undefined ? this.getItemSelectorParent(zIndex, parentContainerKey) : this.itemSelectorsContainer;\n var key = parentContainerKey || \"Main\";\n\n if (this.itemSelectorGroupContainers[key] === undefined || this.itemSelectorGroupContainers[key][zIndex] === undefined) {\n if (this.itemSelectorGroupContainers[key] === undefined) this.itemSelectorGroupContainers[key] = [];\n this.itemSelectorGroupContainers[key][zIndex] = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null, zIndex), parent, this.itemSelectorGroupContainers[key][zIndex + 1]);\n }\n\n return this.itemSelectorGroupContainers[key][zIndex];\n };\n\n CanvasItemsManager.prototype.getItemParent = function (zIndex, parentContainerKey) {\n return parentContainerKey !== undefined ? this.itemChildElements[parentContainerKey] : this.getItemGroupContainer(zIndex);\n };\n\n CanvasItemsManager.prototype.getItemSelectorParent = function (zIndex, parentContainerKey) {\n return parentContainerKey !== undefined ? this.itemChildElements[parentContainerKey] : this.getItemSelectorGroupContainer(zIndex);\n };\n\n CanvasItemsManager.prototype.notifySelectionChanged = function (selection) {\n var _this = this;\n\n var newSelectedItems = ModelUtils_1.ModelUtils.createSelectedItems(selection);\n var itemsToUpdate = [];\n this.populateItems(itemsToUpdate, newSelectedItems, this.selectedItems);\n this.populateItems(itemsToUpdate, this.selectedItems, newSelectedItems);\n this.selectedItems = newSelectedItems;\n itemsToUpdate.forEach(function (item) {\n if (item instanceof Connector_1.Connector) _this.applyOrPostponeChanges([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.UpdateClassName, true)]);\n });\n };\n\n CanvasItemsManager.prototype.populateItems = function (target, sourceSet, checkSet) {\n Object.keys(sourceSet).forEach(function (key) {\n if (!checkSet[key]) target.push(sourceSet[key]);\n });\n };\n\n return CanvasItemsManager;\n }(CanvasManager_1.CanvasManager);\n\n exports.CanvasItemsManager = CanvasItemsManager;\n /***/\n },\n /* 78 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TextMeasurer = void 0;\n\n var size_1 = __webpack_require__(2);\n\n var Utils_1 = __webpack_require__(17);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var ITextMeasurer_1 = __webpack_require__(44);\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var TextUtils_1 = __webpack_require__(63);\n\n var TextMeasurer =\n /** @class */\n function () {\n function TextMeasurer(parent) {\n this.cache = {};\n this.fontSizeCache = {};\n this.containers = {};\n this.parent = parent;\n this.createNodes();\n }\n\n TextMeasurer.prototype.measureWords = function (text, style, owner) {\n var _this = this;\n\n var result = {\n words: {},\n fontSize: -1\n };\n var words = typeof text === \"string\" ? this.splitToWords(text, false) : text.reduce(function (acc, t) {\n return acc.concat(_this.splitToWords(t, false));\n }, []);\n words.push(\" \");\n var styleHashKey = this.getStyleHash(style, owner);\n var measureElements = this.tryLoadWordsToMeasurer(words, style, styleHashKey, owner, undefined, undefined, undefined, undefined, result);\n\n if (measureElements) {\n var container = this.containers[owner];\n this.putElementsInDOM(container, measureElements);\n this.beforeMeasureInDOM();\n this.measureElementsInDOM(measureElements, result);\n this.afterMeasureInDOM();\n }\n\n return result;\n };\n\n TextMeasurer.prototype.measureTextLine = function (textLine, style, owner) {\n var results = this.measureWords(textLine, style, owner);\n return TextUtils_1.getTextLineSize(textLine, results);\n };\n\n TextMeasurer.prototype.onNewModel = function (items, dom) {\n var _this = this;\n\n dom.changeByFunc(null, function () {\n return _this.onNewModelCore(items);\n });\n };\n\n TextMeasurer.prototype.onNewModelCore = function (items) {\n var shapes = items.filter(function (i) {\n return i instanceof Shape_1.Shape;\n });\n var connectors = items.filter(function (i) {\n return i instanceof Connector_1.Connector;\n });\n var shapeElements = this.tryLoadShapeTexts(shapes);\n var connectorElements = this.tryLoadConnectorTexts(connectors);\n\n if (shapeElements || connectorElements) {\n shapeElements && this.putElementsInDOM(this.containers[ITextMeasurer_1.TextOwner.Shape], shapeElements);\n connectorElements && this.putElementsInDOM(this.containers[ITextMeasurer_1.TextOwner.Connector], connectorElements);\n this.beforeMeasureInDOM();\n shapeElements && this.measureElementsInDOM(shapeElements);\n connectorElements && this.measureElementsInDOM(connectorElements);\n this.afterMeasureInDOM();\n }\n };\n\n TextMeasurer.prototype.replaceParent = function (parent) {\n if (this.parent !== parent) {\n if (this.mainElement.parentNode) parent.appendChild(this.mainElement);\n this.parent = parent;\n }\n };\n\n TextMeasurer.prototype.clean = function () {\n Utils_1.RenderUtils.removeElement(this.mainElement);\n };\n\n TextMeasurer.prototype.tryLoadShapeTexts = function (shapes) {\n var _this = this;\n\n var newSet = {};\n var elements = [];\n var hashes = [];\n var styleHashes = [];\n shapes.forEach(function (s) {\n var styleHashKey = _this.getStyleHash(s.styleText, ITextMeasurer_1.TextOwner.Shape);\n\n _this.tryLoadWordsToMeasurer(_this.splitToWords(s.text, true), s.styleText, styleHashKey, ITextMeasurer_1.TextOwner.Shape, newSet, elements, hashes, styleHashes);\n });\n return elements.length ? {\n elements: elements,\n hashes: hashes,\n styleHashes: styleHashes\n } : null;\n };\n\n TextMeasurer.prototype.tryLoadConnectorTexts = function (connectors) {\n var _this = this;\n\n var newSet = {};\n var elements = [];\n var hashes = [];\n var styleHashes = [];\n connectors.forEach(function (c) {\n var words = c.texts.map(function (t) {\n return t.value;\n }).reduce(function (acc, text) {\n return acc.concat(_this.splitToWords(text, false));\n }, []);\n\n if (words.length) {\n words.push(\" \");\n\n var styleHashKey = _this.getStyleHash(c.styleText, ITextMeasurer_1.TextOwner.Connector);\n\n _this.tryLoadWordsToMeasurer(words, c.styleText, styleHashKey, ITextMeasurer_1.TextOwner.Connector, newSet, elements, hashes, styleHashes);\n }\n });\n return elements.length ? {\n elements: elements,\n hashes: hashes,\n styleHashes: styleHashes\n } : null;\n };\n\n TextMeasurer.prototype.tryLoadWordsToMeasurer = function (words, style, styleHashKey, textOwner, newSet, elementsToMeasure, hashesToMeasure, styleHashesToMeasure, result) {\n var _this = this;\n\n var newWords = [];\n elementsToMeasure = elementsToMeasure || [];\n hashesToMeasure = hashesToMeasure || [];\n styleHashesToMeasure = styleHashesToMeasure || [];\n newSet = newSet || {};\n words.forEach(function (t) {\n return _this.tryLoadWordToMeasurer(t, style, styleHashKey, textOwner, newSet, elementsToMeasure, hashesToMeasure, styleHashesToMeasure, newWords, result);\n });\n return elementsToMeasure.length ? {\n elements: elementsToMeasure,\n hashes: hashesToMeasure,\n styleHashes: styleHashesToMeasure,\n newWords: newWords\n } : null;\n };\n\n TextMeasurer.prototype.putElementsInDOM = function (container, measureElements) {\n container.parentNode && container.parentNode.removeChild(container);\n\n while (container.firstChild) {\n container.removeChild(container.firstChild);\n }\n\n measureElements.elements.forEach(function (el) {\n return container.appendChild(el);\n });\n this.svgElement.appendChild(container);\n };\n\n TextMeasurer.prototype.measureElementsInDOM = function (measureElements, result) {\n var hashes = measureElements.hashes;\n var elements = measureElements.elements;\n var words = measureElements.newWords;\n var count = hashes.length;\n\n for (var i = 0; i < count; i++) {\n var size = this.getDomElementSize(elements[i]);\n\n if (size) {\n if (!size.isEmpty()) this.cache[hashes[i]] = size;\n if (result) result.words[words[i]] = size;\n }\n\n var styleHashKey = measureElements.styleHashes[i];\n if (this.fontSizeCache[styleHashKey] === undefined) this.fontSizeCache[styleHashKey] = this.getDomFontSize(elements[i]);\n if (result && result.fontSize < 0) result.fontSize = this.fontSizeCache[styleHashKey];\n }\n };\n\n TextMeasurer.prototype.beforeMeasureInDOM = function () {\n this.parent.appendChild(this.mainElement);\n };\n\n TextMeasurer.prototype.afterMeasureInDOM = function () {\n this.mainElement.parentNode && this.mainElement.parentNode.removeChild(this.mainElement);\n };\n\n TextMeasurer.prototype.tryLoadWordToMeasurer = function (word, style, styleHashKey, owner, newSet, elementsToMeasure, hashesToMeasure, styleHashesToMeasure, newWords, result) {\n var hash = this.getHash(word, style, owner);\n var cachedSize = this.cache[hash];\n\n if (!cachedSize && !newSet[hash]) {\n newSet[hash] = true;\n hashesToMeasure.push(hash);\n elementsToMeasure.push(this.createElement(word, style));\n styleHashesToMeasure.push(styleHashKey);\n newWords.push(word);\n } else if (cachedSize && result) {\n result.words[word] = cachedSize;\n result.fontSize = this.fontSizeCache[styleHashKey];\n }\n };\n\n TextMeasurer.prototype.getHash = function (text, style, owner) {\n return owner + \"|\" + (style && style.toHash()) + \"|\" + text;\n };\n\n TextMeasurer.prototype.getStyleHash = function (style, owner) {\n return this.getHash(\" \", style, owner);\n };\n\n TextMeasurer.prototype.createElement = function (text, style) {\n var element = document.createElementNS(RenderHelper_1.svgNS, \"text\");\n if (text === \" \") element.setAttributeNS(\"http://www.w3.org/XML/1998/namespace\", \"xml:space\", \"preserve\");\n element.textContent = text;\n style && Utils_1.RenderUtils.applyStyleToElement(style, element);\n return element;\n };\n\n TextMeasurer.prototype.splitToWords = function (text, includeWhitespace) {\n var words = TextUtils_1.textToWords(text);\n includeWhitespace && words.push(\" \");\n return words;\n };\n\n TextMeasurer.prototype.getDomFontSize = function (textEl) {\n return parseFloat(window.getComputedStyle(textEl).fontSize);\n };\n\n TextMeasurer.prototype.getDomElementSize = function (textEl) {\n var bBox;\n\n try {\n bBox = textEl.getBBox();\n } catch (_a) {} // TODO make measure in another way because of FF error\n\n\n return bBox ? new size_1.Size(bBox.width, bBox.height) : new size_1.Size(0, 0);\n };\n\n TextMeasurer.prototype.createNodes = function () {\n this.mainElement = RenderHelper_1.RenderHelper.createMainElement(undefined, true);\n this.svgElement = RenderHelper_1.RenderHelper.createSvgElement(this.mainElement, false);\n this.createContainer(ITextMeasurer_1.TextOwner.Shape, \"shape\");\n this.createContainer(ITextMeasurer_1.TextOwner.Connector, \"connector\");\n this.createContainer(ITextMeasurer_1.TextOwner.ExtensionLine, \"extension-line\");\n this.createContainer(ITextMeasurer_1.TextOwner.Resize, \"resize-info\");\n };\n\n TextMeasurer.prototype.createContainer = function (owner, className) {\n var element = document.createElementNS(RenderHelper_1.svgNS, \"g\");\n element.setAttribute(\"class\", className);\n this.containers[owner] = element;\n };\n\n return TextMeasurer;\n }();\n\n exports.TextMeasurer = TextMeasurer;\n /***/\n },\n /* 79 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics36 = function extendStatics(d, b) {\n _extendStatics36 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics36(d, b);\n };\n\n return function (d, b) {\n _extendStatics36(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EdgeOnLayer = exports.NodeOnLayer = exports.SugiyamaNodesOrderer = exports.SugiyamaLayerDistributor = exports.SugiyamaLayoutBuilder = void 0;\n\n var BaseBuilder_1 = __webpack_require__(140);\n\n var Graph_1 = __webpack_require__(69);\n\n var NodeLayout_1 = __webpack_require__(70);\n\n var Structures_1 = __webpack_require__(39);\n\n var ListUtils_1 = __webpack_require__(90);\n\n var search_1 = __webpack_require__(42);\n\n var point_1 = __webpack_require__(1);\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var GraphLayout_1 = __webpack_require__(139);\n\n var Connector_1 = __webpack_require__(6);\n\n var CycleRemover_1 = __webpack_require__(270);\n\n var SugiyamaLayoutBuilder =\n /** @class */\n function (_super) {\n __extends(SugiyamaLayoutBuilder, _super);\n\n function SugiyamaLayoutBuilder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SugiyamaLayoutBuilder.prototype.build = function () {\n var _this = this;\n\n var offset = 0;\n var layout = new GraphLayout_1.GraphLayout();\n var nodeOrderer = new SugiyamaNodesOrderer();\n this.graph.getConnectedComponents().forEach(function (component) {\n var acyclicGraphInfo = CycleRemover_1.CycleRemover.removeCycles(component);\n var layers = SugiyamaLayerDistributor.getLayers(acyclicGraphInfo.graph);\n var orderedGraph = nodeOrderer.orderNodes(acyclicGraphInfo.graph, layers);\n var removedEdges = Object.keys(acyclicGraphInfo.removedEdges).map(function (ek) {\n return component.getEdge(ek);\n });\n var coordinatedGraph = nodeOrderer.assignAbsCoordinates(orderedGraph);\n\n var componentLayout = _this.createInfoGraphLayout(coordinatedGraph, acyclicGraphInfo.reversedEdges, removedEdges);\n\n layout.extend(_this.setComponentOffset(componentLayout, offset));\n offset += _this.getComponentOffset(componentLayout);\n });\n return layout;\n }; // Order Nodes\n\n\n SugiyamaLayoutBuilder.prototype.createInfoGraphLayout = function (coordinatedGraph, reversedEdges, removedEdges) {\n var _this = this;\n\n var currentPosition = new point_1.Point(0, 0);\n var items = coordinatedGraph.items;\n var sortedLayers = new ListUtils_1.HashSet(items.map(function (n) {\n return n.layer;\n }).sort(function (a, b) {\n return a - b;\n }));\n var absOffsetInfo = this.getAbsOffsetInfo(coordinatedGraph.items);\n var positions = {};\n var totalDepth = 0;\n var leftEdge = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE;\n var rightEdge = Number.MIN_SAFE_INTEGER || Number.MAX_VALUE;\n\n var _loop_1 = function _loop_1(i) {\n var layer = sortedLayers.item(i);\n var maxDepthLayer = 0;\n items.filter(function (n) {\n return n.layer === layer;\n }).sort(function (a, b) {\n return a.position - b.position;\n }).forEach(function (n) {\n var depthNodeSize = _this.getDepthNodeSize(n);\n\n var directionOffset = _this.chooseDirectionValue(0, depthNodeSize);\n\n var absPosition = _this.getAbsPosition(n.position, _this.getBreadthNodeSize(n), absOffsetInfo);\n\n currentPosition = _this.setBreadth(currentPosition, absPosition);\n\n var nodePosition = _this.setDepthOffset(currentPosition, -directionOffset);\n\n positions[n.key] = nodePosition;\n if (n.isDummy) return;\n var breadth = _this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal ? nodePosition.y : nodePosition.x;\n leftEdge = Math.min(leftEdge, breadth);\n rightEdge = Math.max(rightEdge, breadth + _this.getBreadthNodeSize(n));\n maxDepthLayer = Math.max(maxDepthLayer, _this.getDepthNodeSize(n));\n });\n totalDepth += maxDepthLayer;\n currentPosition = this_1.setBreadth(currentPosition, 0);\n currentPosition = this_1.setDepthOffset(currentPosition, this_1.getDirectionValue(maxDepthLayer + this_1.settings.layerSpacing));\n };\n\n var this_1 = this;\n\n for (var i = 0; i < sortedLayers.length; i++) {\n _loop_1(i);\n }\n\n totalDepth += (sortedLayers.length - 1) * this.settings.layerSpacing;\n var layout = new GraphLayout_1.GraphLayout();\n this.createNodesLayout(coordinatedGraph, layout, leftEdge, totalDepth, positions);\n this.createEdgesLayout(coordinatedGraph, layout, reversedEdges, removedEdges);\n return layout; // this.getDummyEdgesRoutes(infoGraph);\n };\n\n SugiyamaLayoutBuilder.prototype.createNodesLayout = function (infoGraph, layout, leftEdge, totalDepth, positions) {\n var _this = this;\n\n var offset = this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? new point_1.Point(-leftEdge, this.chooseDirectionValue(0, totalDepth)) : new point_1.Point(this.chooseDirectionValue(0, totalDepth), -leftEdge);\n infoGraph.items.forEach(function (n) {\n if (!n.isDummy) {\n var node = _this.graph.getNode(n.key);\n\n layout.addNode(new NodeLayout_1.NodeLayout(node, positions[n.key].clone().offset(offset.x, offset.y)));\n }\n });\n };\n\n SugiyamaLayoutBuilder.prototype.createEdgesLayout = function (infoGraph, layout, reversedEdges, removedEdges) {\n var DIRECT = this.getDirectEdgeLayout();\n var TOP_TO_BOTTOM = this.getDiffLevelEdgeLayout(true);\n var BOTTOM_TO_TOP = this.getDiffLevelEdgeLayout(false);\n var TOP_TO_TOP = this.getSameLevelEdgeLayout(true);\n var BOTTOM_TO_BOTTOM = this.getSameLevelEdgeLayout(false);\n var occupied = {};\n infoGraph.edges.filter(function (e) {\n return !e.isDummy;\n }).concat(removedEdges.map(function (e) {\n return new EdgeOnLayer(e.key, false, e.from, e.to);\n })).sort(function (a, b) {\n return infoGraph.getNode(a.originFrom).layer - infoGraph.getNode(b.originFrom).layer || infoGraph.getNode(a.to).layer - infoGraph.getNode(b.to).layer;\n }).forEach(function (e) {\n var isReversed = reversedEdges[e.key];\n var from = infoGraph.getNode(isReversed ? e.to : e.originFrom);\n var to = infoGraph.getNode(isReversed ? e.originFrom : e.to);\n if (to.layer - from.layer === 1) layout.addEdge(new NodeLayout_1.EdgeLayout(e.key, DIRECT.from, DIRECT.to));else {\n var candidates_1 = [];\n\n if (to.position - from.position >= 1) {\n candidates_1.push(TOP_TO_BOTTOM);\n candidates_1.push({\n from: DIRECT.from,\n to: TOP_TO_BOTTOM.to\n });\n candidates_1.push({\n from: TOP_TO_BOTTOM.from,\n to: DIRECT.to\n });\n } else if (to.position - from.position <= -1) {\n candidates_1.push(BOTTOM_TO_TOP);\n candidates_1.push({\n from: DIRECT.from,\n to: BOTTOM_TO_TOP.to\n });\n candidates_1.push({\n from: BOTTOM_TO_TOP.from,\n to: DIRECT.to\n });\n } else {\n var oneliner = from.position === to.position && to.position === 0 ? [TOP_TO_TOP, BOTTOM_TO_BOTTOM] : [BOTTOM_TO_BOTTOM, TOP_TO_TOP];\n oneliner.forEach(function (c) {\n return candidates_1.push(c);\n });\n oneliner.forEach(function (c) {\n candidates_1.push({\n from: c.from,\n to: DIRECT.to\n });\n candidates_1.push({\n from: DIRECT.from,\n to: c.to\n });\n });\n }\n\n candidates_1.push(DIRECT);\n\n for (var i = 0, candidate = void 0; candidate = candidates_1[i]; i++) {\n var fromKey = from.key + \"_\" + candidate.from;\n var toKey = to.key + \"_\" + candidate.to;\n\n if (occupied[fromKey] !== Connector_1.ConnectorPosition.End && occupied[toKey] !== Connector_1.ConnectorPosition.Begin) {\n layout.addEdge(new NodeLayout_1.EdgeLayout(e.key, candidate.from, candidate.to));\n occupied[fromKey] = Connector_1.ConnectorPosition.Begin;\n occupied[toKey] = Connector_1.ConnectorPosition.End;\n break;\n }\n }\n }\n });\n };\n\n SugiyamaLayoutBuilder.prototype.getDirectEdgeLayout = function () {\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal) return this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward ? {\n from: 1,\n to: 3\n } : {\n from: 3,\n to: 1\n };\n return this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward ? {\n from: 2,\n to: 0\n } : {\n from: 0,\n to: 2\n };\n };\n\n SugiyamaLayoutBuilder.prototype.getDiffLevelEdgeLayout = function (topToBottom) {\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal) return topToBottom ? {\n from: 2,\n to: 0\n } : {\n from: 0,\n to: 2\n };\n return topToBottom ? {\n from: 3,\n to: 1\n } : {\n from: 1,\n to: 3\n };\n };\n\n SugiyamaLayoutBuilder.prototype.getSameLevelEdgeLayout = function (topToBottom) {\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal) return topToBottom ? {\n from: 0,\n to: 0\n } : {\n from: 2,\n to: 2\n };\n return topToBottom ? {\n from: 3,\n to: 3\n } : {\n from: 1,\n to: 1\n };\n };\n\n SugiyamaLayoutBuilder.prototype.getAbsOffsetInfo = function (nodesInfos) {\n var _this = this;\n\n var absOffsetMatrix = {};\n\n var addCell = function addCell(n, intAbsCoord) {\n if (absOffsetMatrix[intAbsCoord] === undefined) absOffsetMatrix[intAbsCoord] = _this.getBreadthNodeSize(n);\n absOffsetMatrix[intAbsCoord] = Math.max(absOffsetMatrix[intAbsCoord], _this.getBreadthNodeSize(n));\n };\n\n nodesInfos.forEach(function (n) {\n var intAbsCoord = trunc(n.position);\n addCell(n, intAbsCoord);\n if (absOffsetMatrix[intAbsCoord] % 1 !== 0) addCell(n, intAbsCoord + 1);\n });\n var absOffsetInfo = {};\n var leftOffset = 0;\n Object.keys(absOffsetMatrix).sort(function (a, b) {\n return parseFloat(a) - parseFloat(b);\n }).forEach(function (coord) {\n absOffsetInfo[coord] = {\n leftOffset: leftOffset,\n width: absOffsetMatrix[coord]\n };\n leftOffset += absOffsetMatrix[coord] + _this.settings.columnSpacing;\n });\n return absOffsetInfo;\n };\n\n SugiyamaLayoutBuilder.prototype.setBreadth = function (position, breadthPosition) {\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical) return new point_1.Point(breadthPosition, position.y);\n return new point_1.Point(position.x, breadthPosition);\n };\n\n SugiyamaLayoutBuilder.prototype.setDepthOffset = function (position, offset) {\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal) return new point_1.Point(position.x + offset, position.y);\n return new point_1.Point(position.x, position.y + offset);\n };\n\n SugiyamaLayoutBuilder.prototype.getAbsPosition = function (absCoordinate, itemSize, absoluteOffsetInfo) {\n var intAbsCoord = trunc(absCoordinate);\n var absLeftOffset = absoluteOffsetInfo[intAbsCoord].leftOffset;\n var cellWidth = absoluteOffsetInfo[intAbsCoord].width;\n if (absCoordinate % 1 === 0) return absLeftOffset + (cellWidth - itemSize) / 2;\n return absLeftOffset + cellWidth - (itemSize - this.settings.columnSpacing) / 2;\n };\n\n SugiyamaLayoutBuilder.prototype.getBreadthNodeSize = function (node) {\n return node.isDummy ? 0 : this.getBreadthNodeSizeCore(this.graph.getNode(node.key));\n };\n\n SugiyamaLayoutBuilder.prototype.getDepthNodeSize = function (node) {\n return node.isDummy ? 0 : this.getDepthNodeSizeCore(this.graph.getNode(node.key));\n };\n\n return SugiyamaLayoutBuilder;\n }(BaseBuilder_1.LayoutBuilder);\n\n exports.SugiyamaLayoutBuilder = SugiyamaLayoutBuilder;\n\n var SugiyamaLayerDistributor =\n /** @class */\n function () {\n function SugiyamaLayerDistributor() {}\n\n SugiyamaLayerDistributor.getLayers = function (acyclicGraph) {\n var feasibleTree = this.getFeasibleTree(acyclicGraph);\n return this.calcNodesLayers(feasibleTree);\n };\n\n SugiyamaLayerDistributor.getFeasibleTree = function (graph) {\n var layers = this.initLayerAssignment(graph);\n return graph.getSpanningGraph(graph.nodes[0], Structures_1.ConnectionMode.OutgoingAndIncoming, function (e) {\n return layers[e.to] - layers[e.from];\n });\n };\n\n SugiyamaLayerDistributor.initLayerAssignment = function (graph) {\n var layers = {};\n var currentLayer = 0;\n var actualAssignedNodes = {};\n var assigningNodes = graph.nodes.filter(function (n) {\n return !graph.getAdjacentEdges(n, Structures_1.ConnectionMode.Incoming).length;\n });\n\n var _loop_2 = function _loop_2() {\n assigningNodes.forEach(function (n) {\n layers[n] = currentLayer;\n actualAssignedNodes[n] = true;\n });\n Object.keys(actualAssignedNodes).forEach(function (n) {\n if (graph.getAdjacentEdges(n, Structures_1.ConnectionMode.Outgoing).filter(function (e) {\n return layers[e.to] === undefined;\n }).length === 0) delete actualAssignedNodes[n];\n });\n var assigningNodesSet = {};\n Object.keys(actualAssignedNodes).forEach(function (n) {\n graph.getAdjacentEdges(n, Structures_1.ConnectionMode.Outgoing).map(function (e) {\n return e.to;\n }).filter(function (n) {\n return layers[n] === undefined && graph.getAdjacentEdges(n, Structures_1.ConnectionMode.Incoming).reduce(function (acc, e) {\n return acc && layers[e.from] !== undefined;\n }, true);\n }).forEach(function (n) {\n return assigningNodesSet[n] = true;\n });\n });\n assigningNodes = Object.keys(assigningNodesSet);\n currentLayer++;\n };\n\n while (assigningNodes.length) {\n _loop_2();\n }\n\n return layers;\n };\n\n SugiyamaLayerDistributor.calcNodesLayers = function (graph) {\n var layers = {};\n var minLayer = Number.MAX_SAFE_INTEGER || Number.MAX_VALUE;\n var currentLevel = 0;\n var iterator = graph.createIterator(Structures_1.ConnectionMode.OutgoingAndIncoming);\n iterator.visitEachEdgeOnce = false;\n\n iterator.onNode = function (n) {\n layers[n.key] = currentLevel;\n minLayer = Math.min(minLayer, currentLevel);\n };\n\n iterator.skipNode = function (n) {\n return layers[n.key] !== undefined;\n };\n\n iterator.skipEdge = function (e) {\n return layers[e.from] !== undefined && layers[e.to] !== undefined;\n };\n\n iterator.onEdge = function (e, out) {\n if (out) currentLevel = layers[e.from] + 1;else currentLevel = layers[e.to] - 1;\n };\n\n iterator.iterate(graph.nodes[0]);\n\n for (var key in layers) {\n if (!Object.prototype.hasOwnProperty.call(layers, key)) continue;\n layers[key] -= minLayer;\n }\n\n return layers;\n };\n\n return SugiyamaLayerDistributor;\n }();\n\n exports.SugiyamaLayerDistributor = SugiyamaLayerDistributor;\n\n var SugiyamaNodesOrderer =\n /** @class */\n function () {\n function SugiyamaNodesOrderer() {\n this.idCounter = -10000;\n }\n\n SugiyamaNodesOrderer.prototype.orderNodes = function (graph, layers) {\n var maxIteration = 14; // magic number - http://www.graphviz.org/Documentation/TSE93.pdf PAGE (14)\n\n var currentIteration = 1;\n var graphInfo = this.initGraphInfo(graph, layers);\n var nodeInfos = graphInfo.items;\n var orderInfo = this.initOrder(nodeInfos);\n var bestNodesPositions = this.getNodeToPositionMap(nodeInfos);\n var bestCrossCount = this.getCrossCount(orderInfo, graphInfo);\n var isParentToChildren = true;\n\n while (currentIteration < maxIteration && bestCrossCount !== 0) {\n orderInfo = this.getNodesOrder(orderInfo, graphInfo, isParentToChildren);\n var crossCount = this.getCrossCount(orderInfo, graphInfo);\n\n if (crossCount < bestCrossCount) {\n bestNodesPositions = this.getNodeToPositionMap(graphInfo.items);\n bestCrossCount = crossCount;\n }\n\n isParentToChildren = !isParentToChildren;\n currentIteration++;\n } // transpose() procedure doesn`t implement.\n // http://www.graphviz.org/Documentation/TSE93.pdf PAGE(16)\n\n\n graphInfo.items.forEach(function (n) {\n return n.position = bestNodesPositions[n.key];\n });\n return graphInfo;\n };\n\n SugiyamaNodesOrderer.prototype.getNodesOrder = function (current, graph, isParentToChildren) {\n var _this = this;\n\n var order = {};\n\n var _loop_3 = function _loop_3(layer) {\n if (!Object.prototype.hasOwnProperty.call(current, layer)) return \"continue\";\n var nodePositions = {};\n var nodeKeys = [];\n current[layer].forEach(function (ni) {\n var adjacentNodesPositions = (isParentToChildren ? graph.getChildren(ni.key) : graph.getParents(ni.key)).map(function (nk) {\n return graph.getNode(nk).position;\n });\n nodeKeys.push(ni.key);\n nodePositions[ni.key] = _this.getNodePosition(adjacentNodesPositions);\n });\n order[layer] = this_2.sortNodes(nodeKeys, nodePositions, graph);\n };\n\n var this_2 = this;\n\n for (var layer in current) {\n _loop_3(layer);\n }\n\n return order;\n };\n\n SugiyamaNodesOrderer.prototype.sortNodes = function (nodeKeys, nodePositions, graph) {\n return nodeKeys.sort(function (a, b) {\n return nodePositions[a] - nodePositions[b];\n }).map(function (nk, index) {\n var node = graph.getNode(nk);\n node.position = index;\n return node;\n });\n };\n\n SugiyamaNodesOrderer.prototype.getNodePosition = function (adjacentNodesPositions) {\n adjacentNodesPositions = adjacentNodesPositions.sort(function (a, b) {\n return a - b;\n });\n if (!adjacentNodesPositions.length) return 0;\n var medianIndex = Math.floor(adjacentNodesPositions.length / 2);\n if (adjacentNodesPositions.length === 2 || adjacentNodesPositions.length % 2 === 1) return adjacentNodesPositions[medianIndex];\n var leftMedianPosition = adjacentNodesPositions[medianIndex - 1] - adjacentNodesPositions[0];\n var rightMedianPosition = adjacentNodesPositions[adjacentNodesPositions.length - 1] - adjacentNodesPositions[medianIndex];\n return Math.floor((adjacentNodesPositions[medianIndex - 1] * rightMedianPosition + adjacentNodesPositions[medianIndex] * leftMedianPosition) / (leftMedianPosition + rightMedianPosition));\n };\n\n SugiyamaNodesOrderer.prototype.initOrder = function (nodeInfos) {\n var result = {};\n nodeInfos.forEach(function (ni) {\n return (result[ni.layer] || (result[ni.layer] = [])).push(ni);\n });\n return result;\n };\n\n SugiyamaNodesOrderer.prototype.getCrossCount = function (orderInfo, graph) {\n var count = 0;\n\n var _loop_4 = function _loop_4(layer) {\n if (!Object.prototype.hasOwnProperty.call(orderInfo, layer)) return \"continue\";\n var viewedAdjacentNodesPositions = [];\n orderInfo[layer].forEach(function (n) {\n var positions = graph.getChildren(n.key).map(function (c) {\n return graph.getNode(c).position;\n });\n positions.forEach(function (p) {\n count += viewedAdjacentNodesPositions.filter(function (vp) {\n return p < vp;\n }).length;\n });\n viewedAdjacentNodesPositions = viewedAdjacentNodesPositions.concat(positions);\n });\n };\n\n for (var layer in orderInfo) {\n _loop_4(layer);\n }\n\n return count;\n };\n\n SugiyamaNodesOrderer.prototype.initGraphInfo = function (graph, layers) {\n var _this = this;\n\n var countNodesOnLayer = {};\n var nodesInfoMap = {};\n var nodeInfos = [];\n var edgeInfos = [];\n graph.nodes.forEach(function (n) {\n var layer = layers[n];\n if (countNodesOnLayer[layer] === undefined) countNodesOnLayer[layer] = 0;\n var info = new NodeOnLayer(n, false, layer, countNodesOnLayer[layer]++);\n nodesInfoMap[n] = info;\n nodeInfos.push(info);\n });\n graph.edges.forEach(function (e) {\n var span = layers[e.to] - layers[e.from];\n\n if (span > 1) {\n var prevNodeInfo = nodesInfoMap[e.from];\n\n for (var delta = 1; delta < span; delta++) {\n var dNodeInfo = new NodeOnLayer(_this.createDummyID(), true, layers[e.from] + delta, countNodesOnLayer[layers[e.from] + delta]++);\n edgeInfos.push(new EdgeOnLayer(_this.createDummyID(), true, prevNodeInfo.key, dNodeInfo.key));\n nodeInfos.push(dNodeInfo);\n prevNodeInfo = dNodeInfo;\n }\n\n edgeInfos.push(new EdgeOnLayer(e.key, false, prevNodeInfo.key, nodesInfoMap[e.to].key, nodesInfoMap[e.from].key));\n } else edgeInfos.push(new EdgeOnLayer(e.key, false, nodesInfoMap[e.from].key, nodesInfoMap[e.to].key));\n });\n return new Graph_1.FastGraph(nodeInfos, edgeInfos);\n };\n\n SugiyamaNodesOrderer.prototype.createDummyID = function () {\n return \"dummy_\" + --this.idCounter;\n };\n\n SugiyamaNodesOrderer.prototype.getNodeToPositionMap = function (nodeInfos) {\n return nodeInfos.reduce(function (acc, ni) {\n acc[ni.key] = ni.position;\n return acc;\n }, {});\n }; // absolute positioning\n\n\n SugiyamaNodesOrderer.prototype.assignAbsCoordinates = function (graph) {\n var absCoordinates = this.getAbsCoodinate(graph);\n return new Graph_1.FastGraph(graph.items.map(function (n) {\n return new NodeOnLayer(n.key, n.isDummy, n.layer, absCoordinates[n.key]);\n }), graph.edges.slice(0));\n };\n\n SugiyamaNodesOrderer.prototype.getAbsCoodinate = function (graph) {\n var _this = this;\n\n var orderInfo = graph.items.reduce(function (acc, n) {\n acc[n.layer] = acc[n.layer] || [];\n var pos = search_1.SearchUtils.binaryIndexOf(acc[n.layer], function (ni) {\n return ni.position - n.position;\n });\n acc[n.layer].splice(pos < 0 ? ~pos : pos, 0, n);\n return acc;\n }, {});\n var medianPositions = [MedianAlignmentMode.TopLeft, MedianAlignmentMode.TopRight, MedianAlignmentMode.BottomLeft, MedianAlignmentMode.BottomRight].map(function (alignment) {\n return _this.getPositionByMedian(graph, alignment, orderInfo);\n });\n var nodeToPosition = {};\n graph.items.forEach(function (n) {\n var posList = medianPositions.map(function (positions) {\n return positions[n.key];\n }).sort(function (a, b) {\n return a - b;\n });\n nodeToPosition[n.key] = (posList[1] + posList[2]) / 2;\n });\n return nodeToPosition;\n };\n\n SugiyamaNodesOrderer.prototype.getPositionByMedian = function (graph, alignment, orderInfo) {\n var nodeInfos = graph.items;\n var positions = this.getNodeToPositionMap(nodeInfos);\n var medians = this.getMedians(graph, nodeInfos, alignment);\n medians = this.resolveMedianConflicts(graph, orderInfo, medians, alignment);\n this.getSortedBlocks(graph, nodeInfos, medians, alignment).forEach(function (block) {\n var maxPos = block.reduce(function (acc, n) {\n return positions[n.key] > acc ? positions[n.key] : acc;\n }, -2);\n block.forEach(function (n) {\n var delta = maxPos - positions[n.key];\n if (delta > 0) orderInfo[n.layer].filter(function (ln) {\n return ln.position > n.position;\n }).forEach(function (ln) {\n return positions[ln.key] += delta;\n });\n positions[n.key] = maxPos;\n });\n });\n return positions;\n };\n\n SugiyamaNodesOrderer.prototype.getSortedBlocks = function (graph, nodeInfos, medians, alignment) {\n var blocks = [];\n var isBottom = alignment === MedianAlignmentMode.BottomLeft || alignment === MedianAlignmentMode.BottomRight;\n var allNodesInfo = new ListUtils_1.HashSet(nodeInfos.slice(0).sort(function (a, b) {\n return isBottom ? a.layer - b.layer : b.layer - a.layer;\n }), function (n) {\n return n.key;\n });\n\n while (allNodesInfo.length) {\n var firstNode = allNodesInfo.item(0);\n var block = this.getBlock(graph, firstNode, medians, alignment);\n blocks.push(block);\n block.forEach(function (n) {\n return allNodesInfo.remove(n);\n });\n }\n\n blocks.sort(function (x, y) {\n var xMinNodeInfo = x.reduce(function (min, n) {\n return n.position < min.position ? n : min;\n }, x[0]);\n var yOnMinXLayer = y.filter(function (n) {\n return n.layer === xMinNodeInfo.layer;\n })[0];\n if (yOnMinXLayer) return xMinNodeInfo.position > yOnMinXLayer.position ? 1 : -1;\n var yMinNodeInfo = y.reduce(function (min, n) {\n return n.position < min.position ? n : min;\n }, y[0]);\n var xOnMinYLayer = x.filter(function (n) {\n return n.layer === yMinNodeInfo.layer;\n })[0];\n if (xOnMinYLayer) return xOnMinYLayer.position > yMinNodeInfo.position ? 1 : -1;\n return xMinNodeInfo.layer > yMinNodeInfo.layer ? 1 : -1;\n });\n return blocks;\n };\n\n SugiyamaNodesOrderer.prototype.getBlock = function (graph, root, medians, alignment) {\n var block = [];\n var median = null;\n\n do {\n if (median) root = alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.TopRight ? graph.getNode(median.from) : graph.getNode(median.to);\n block.push(root);\n median = medians[root.key];\n } while (median);\n\n return block;\n };\n\n SugiyamaNodesOrderer.prototype.resolveMedianConflicts = function (graph, layers, medians, alignment) {\n var _this = this;\n\n var filteredMedians = {};\n\n var _loop_5 = function _loop_5(layer) {\n if (!Object.prototype.hasOwnProperty.call(layers, layer)) return \"continue\";\n var minPos;\n var maxPos;\n var nodeInfos = layers[layer];\n if (alignment === MedianAlignmentMode.TopRight || alignment === MedianAlignmentMode.BottomRight) nodeInfos = nodeInfos.slice(0).sort(function (a, b) {\n return b.position - a.position;\n }); // sorted descending\n\n nodeInfos.forEach(function (n) {\n var median = medians[n.key];\n if (!median) filteredMedians[n.key] = null;else {\n var medianItemKey = alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.TopRight ? median.from : median.to;\n var medianPosition = graph.getNode(medianItemKey).position;\n if (_this.checkMedianConfict(minPos, maxPos, medianPosition, alignment)) filteredMedians[n.key] = null;else {\n minPos = minPos === undefined ? medianPosition : Math.min(minPos, medianPosition);\n maxPos = maxPos === undefined ? medianPosition : Math.max(maxPos, medianPosition);\n filteredMedians[n.key] = median;\n }\n }\n });\n };\n\n for (var layer in layers) {\n _loop_5(layer);\n }\n\n return filteredMedians;\n };\n\n SugiyamaNodesOrderer.prototype.checkMedianConfict = function (min, max, medianPosition, alignment) {\n if (min === undefined || max === undefined) return false;\n if (alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.BottomLeft) return max >= medianPosition;\n return min <= medianPosition;\n };\n\n SugiyamaNodesOrderer.prototype.getMedians = function (graph, nodeInfos, alignment) {\n var _this = this;\n\n var medians = {};\n nodeInfos.forEach(function (n) {\n var actualAdjacentEdges = _this.getActualAdjacentEdges(graph, n, alignment);\n\n var medianPosition = _this.getMedianPosition(actualAdjacentEdges.length, alignment);\n\n medians[n.key] = actualAdjacentEdges[medianPosition];\n });\n return medians;\n };\n\n SugiyamaNodesOrderer.prototype.getMedianPosition = function (length, alignment) {\n if (length === 0) return -1;\n if (length % 2 !== 0) return Math.floor(length / 2);\n if (alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.BottomLeft) return Math.floor(length / 2) - 1;\n if (alignment === MedianAlignmentMode.TopRight || alignment === MedianAlignmentMode.BottomRight) return Math.floor(length / 2);\n throw new Error(\"Invalid Operation\");\n };\n\n SugiyamaNodesOrderer.prototype.getActualAdjacentEdges = function (graph, node, alignment) {\n if (alignment === MedianAlignmentMode.TopLeft || alignment === MedianAlignmentMode.TopRight) return graph.getAdjacentEdges(node.key, Structures_1.ConnectionMode.Incoming).sort(function (a, b) {\n return graph.getNode(a.from).position - graph.getNode(b.from).position;\n });\n return graph.getAdjacentEdges(node.key, Structures_1.ConnectionMode.Outgoing).sort(function (a, b) {\n return graph.getNode(a.to).position - graph.getNode(b.to).position;\n });\n };\n\n return SugiyamaNodesOrderer;\n }();\n\n exports.SugiyamaNodesOrderer = SugiyamaNodesOrderer;\n\n var NodeOnLayer =\n /** @class */\n function () {\n function NodeOnLayer(key, isDummy, layer, position) {\n this.key = key;\n this.isDummy = isDummy;\n this.layer = layer;\n this.position = position;\n }\n\n NodeOnLayer.prototype.getHashCode = function () {\n return this.key.toString();\n };\n\n return NodeOnLayer;\n }();\n\n exports.NodeOnLayer = NodeOnLayer;\n\n var EdgeOnLayer =\n /** @class */\n function () {\n function EdgeOnLayer(key, isDummy, from, to, originFrom) {\n this.key = key;\n this.isDummy = isDummy;\n this.from = from;\n this.to = to;\n this._originFrom = originFrom;\n }\n\n EdgeOnLayer.prototype.getHashCode = function () {\n return this.from + \"-\" + this.to;\n };\n\n Object.defineProperty(EdgeOnLayer.prototype, \"originFrom\", {\n get: function get() {\n return this._originFrom !== undefined ? this._originFrom : this.from;\n },\n enumerable: false,\n configurable: true\n });\n return EdgeOnLayer;\n }();\n\n exports.EdgeOnLayer = EdgeOnLayer;\n var MedianAlignmentMode;\n\n (function (MedianAlignmentMode) {\n MedianAlignmentMode[MedianAlignmentMode[\"TopLeft\"] = 0] = \"TopLeft\";\n MedianAlignmentMode[MedianAlignmentMode[\"TopRight\"] = 1] = \"TopRight\";\n MedianAlignmentMode[MedianAlignmentMode[\"BottomLeft\"] = 2] = \"BottomLeft\";\n MedianAlignmentMode[MedianAlignmentMode[\"BottomRight\"] = 3] = \"BottomRight\";\n })(MedianAlignmentMode || (MedianAlignmentMode = {}));\n\n function trunc(val) {\n if (Math.trunc) return Math.trunc(val);\n if (!isFinite(val)) return val;\n return val - val % 1 || (val < 0 ? -0 : val === 0 ? val : 0);\n }\n /***/\n\n },\n /* 80 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var BatchUpdatableObject = function () {\n function BatchUpdatableObject() {\n this.suspendUpdateCount = 0;\n this.occurredEvents = 0;\n }\n\n BatchUpdatableObject.prototype.beginUpdate = function () {\n if (this.suspendUpdateCount === 0) this.onUpdateLocked();\n if (this.suspendUpdateCount < 0) this.suspendUpdateCount--;else this.suspendUpdateCount++;\n };\n\n BatchUpdatableObject.prototype.endUpdate = function () {\n if (this.suspendUpdateCount < 0) this.suspendUpdateCount++;else if (this.suspendUpdateCount > 0) this.suspendUpdateCount--;\n\n if (!this.isUpdateLocked()) {\n var occurredEvents = this.occurredEvents;\n this.occurredEvents = 0;\n this.onUpdateUnlocked(occurredEvents);\n }\n };\n\n BatchUpdatableObject.prototype.suspendUpdate = function () {\n if (this.suspendUpdateCount > 0) {\n this.suspendUpdateCount *= -1;\n var occurredEvents = this.occurredEvents;\n this.occurredEvents = 0;\n this.onUpdateUnlocked(occurredEvents);\n }\n };\n\n BatchUpdatableObject.prototype.continueUpdate = function () {\n if (this.suspendUpdateCount < 0) this.suspendUpdateCount *= -1;\n };\n\n BatchUpdatableObject.prototype.isUpdateLocked = function () {\n return this.suspendUpdateCount > 0;\n };\n\n BatchUpdatableObject.prototype.onUpdateLocked = function () {};\n\n BatchUpdatableObject.prototype.registerOccurredEvent = function (eventMask) {\n this.occurredEvents |= eventMask;\n };\n\n BatchUpdatableObject.prototype.resetOccurredEvents = function () {\n this.occurredEvents = 0;\n };\n\n BatchUpdatableObject.prototype.isLocked = function () {\n return this.suspendUpdateCount !== 0;\n };\n\n return BatchUpdatableObject;\n }();\n\n exports.BatchUpdatableObject = BatchUpdatableObject;\n\n var EmptyBatchUpdatableObject = function () {\n function EmptyBatchUpdatableObject() {}\n\n EmptyBatchUpdatableObject.prototype.beginUpdate = function () {};\n\n EmptyBatchUpdatableObject.prototype.endUpdate = function () {};\n\n return EmptyBatchUpdatableObject;\n }();\n\n exports.EmptyBatchUpdatableObject = EmptyBatchUpdatableObject;\n /***/\n },\n /* 81 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CommandManager = exports.DiagramCommand = void 0;\n\n var DeleteCommand_1 = __webpack_require__(162);\n\n var UndoCommand_1 = __webpack_require__(199);\n\n var RedoCommand_1 = __webpack_require__(200);\n\n var ImportCommand_1 = __webpack_require__(201);\n\n var ExportCommand_1 = __webpack_require__(238);\n\n var ToggleFontBoldCommand_1 = __webpack_require__(239);\n\n var ToggleFontItalicCommand_1 = __webpack_require__(240);\n\n var ToggleFontUnderlineCommand_1 = __webpack_require__(241);\n\n var ChangeFontNameCommand_1 = __webpack_require__(242);\n\n var ChangeFontSizeCommand_1 = __webpack_require__(243);\n\n var ChangeFontColorCommand_1 = __webpack_require__(244);\n\n var ChangeFillColorCommand_1 = __webpack_require__(245);\n\n var ChangeStrokeColorCommand_1 = __webpack_require__(246);\n\n var ChangeTextAlignCommand_1 = __webpack_require__(247);\n\n var ChangeConnectorLineEndingCommand_1 = __webpack_require__(248);\n\n var ChangeConnectorLineOptionCommand_1 = __webpack_require__(249);\n\n var SelectAllCommand_1 = __webpack_require__(250);\n\n var key_1 = __webpack_require__(26);\n\n var AutoLayoutTreeVerticalCommand_1 = __webpack_require__(138);\n\n var ChangeSnapToGridCommand_1 = __webpack_require__(253);\n\n var ChangeGridSizeCommand_1 = __webpack_require__(254);\n\n var ChangePageLandscapeCommand_1 = __webpack_require__(255);\n\n var ChangePageSizeCommand_1 = __webpack_require__(257);\n\n var ExportPngCommand_1 = __webpack_require__(259);\n\n var ExportSvgCommand_1 = __webpack_require__(261);\n\n var ExportJpgCommand_1 = __webpack_require__(262);\n\n var CopySelectionCommand_1 = __webpack_require__(263);\n\n var CutSelectionCommand_1 = __webpack_require__(264);\n\n var PasteSelectionCommand_1 = __webpack_require__(265);\n\n var ImportBPMNCommand_1 = __webpack_require__(268);\n\n var SendToBackCommand_1 = __webpack_require__(271);\n\n var BringToFrontCommand_1 = __webpack_require__(272);\n\n var AutoLayoutLayeredHorizontalCommand_1 = __webpack_require__(143);\n\n var MoveCommands_1 = __webpack_require__(273);\n\n var ChangeZoomLevelCommand_1 = __webpack_require__(274);\n\n var BindDocumentCommand_1 = __webpack_require__(275);\n\n var UnbindDocumentCommand_1 = __webpack_require__(276);\n\n var AutoLayoutTreeHorizontalCommand_1 = __webpack_require__(144);\n\n var AutoLayoutLayeredVerticalCommand_1 = __webpack_require__(145);\n\n var LockCommand_1 = __webpack_require__(277);\n\n var UnlockCommand_1 = __webpack_require__(278);\n\n var CloneCommand_1 = __webpack_require__(279);\n\n var ChangeUnitsCommand_1 = __webpack_require__(280);\n\n var ChangePageColorCommand_1 = __webpack_require__(282);\n\n var ChangeShowGridCommand_1 = __webpack_require__(284);\n\n var ToggleFullscreenCommand_1 = __webpack_require__(285);\n\n var ToggleSimpleViewCommand_1 = __webpack_require__(286);\n\n var ToggleReadOnlyCommand_1 = __webpack_require__(287);\n\n var EditShapeImageCommand_1 = __webpack_require__(288);\n\n var PasteSelectionInPosition_1 = __webpack_require__(289);\n\n var ImportXMLCommand_1 = __webpack_require__(290);\n\n var InsertShapeImageCommand_1 = __webpack_require__(292);\n\n var DeleteShapeImageCommand_1 = __webpack_require__(293);\n\n var ChangeStrokeStyleCommand_1 = __webpack_require__(294);\n\n var ChangeStrokeWidthCommand_1 = __webpack_require__(295);\n\n var AutoLayoutTreeVerticalBottomToTopCommand_1 = __webpack_require__(296);\n\n var AutoLayoutTreeHorizontalRightToLeftCommand_1 = __webpack_require__(297);\n\n var AutoLayoutLayeredVerticalBottomToTopCommand_1 = __webpack_require__(298);\n\n var AutoLayoutLayeredHorizontalRightToLeftCommand_1 = __webpack_require__(299);\n\n var ChangeConnectorRoutingModeCommand_1 = __webpack_require__(300);\n\n var DiagramCommand;\n\n (function (DiagramCommand) {\n DiagramCommand[DiagramCommand[\"Undo\"] = 0] = \"Undo\";\n DiagramCommand[DiagramCommand[\"Redo\"] = 1] = \"Redo\";\n DiagramCommand[DiagramCommand[\"Cut\"] = 2] = \"Cut\";\n DiagramCommand[DiagramCommand[\"Copy\"] = 3] = \"Copy\";\n DiagramCommand[DiagramCommand[\"Paste\"] = 4] = \"Paste\";\n DiagramCommand[DiagramCommand[\"PasteInPosition\"] = 5] = \"PasteInPosition\";\n DiagramCommand[DiagramCommand[\"SelectAll\"] = 6] = \"SelectAll\";\n DiagramCommand[DiagramCommand[\"Delete\"] = 7] = \"Delete\";\n DiagramCommand[DiagramCommand[\"Import\"] = 8] = \"Import\";\n DiagramCommand[DiagramCommand[\"ImportBPMN\"] = 9] = \"ImportBPMN\";\n DiagramCommand[DiagramCommand[\"Export\"] = 10] = \"Export\";\n DiagramCommand[DiagramCommand[\"ExportSvg\"] = 11] = \"ExportSvg\";\n DiagramCommand[DiagramCommand[\"ExportPng\"] = 12] = \"ExportPng\";\n DiagramCommand[DiagramCommand[\"ExportJpg\"] = 13] = \"ExportJpg\";\n DiagramCommand[DiagramCommand[\"BindDocument\"] = 14] = \"BindDocument\";\n DiagramCommand[DiagramCommand[\"UnbindDocument\"] = 15] = \"UnbindDocument\";\n DiagramCommand[DiagramCommand[\"Bold\"] = 16] = \"Bold\";\n DiagramCommand[DiagramCommand[\"Italic\"] = 17] = \"Italic\";\n DiagramCommand[DiagramCommand[\"Underline\"] = 18] = \"Underline\";\n DiagramCommand[DiagramCommand[\"FontName\"] = 19] = \"FontName\";\n DiagramCommand[DiagramCommand[\"FontSize\"] = 20] = \"FontSize\";\n DiagramCommand[DiagramCommand[\"FontColor\"] = 21] = \"FontColor\";\n DiagramCommand[DiagramCommand[\"FillColor\"] = 22] = \"FillColor\";\n DiagramCommand[DiagramCommand[\"StrokeColor\"] = 23] = \"StrokeColor\";\n DiagramCommand[DiagramCommand[\"TextLeftAlign\"] = 24] = \"TextLeftAlign\";\n DiagramCommand[DiagramCommand[\"TextCenterAlign\"] = 25] = \"TextCenterAlign\";\n DiagramCommand[DiagramCommand[\"TextRightAlign\"] = 26] = \"TextRightAlign\";\n DiagramCommand[DiagramCommand[\"ConnectorLineOption\"] = 27] = \"ConnectorLineOption\";\n DiagramCommand[DiagramCommand[\"ConnectorStartLineEnding\"] = 28] = \"ConnectorStartLineEnding\";\n DiagramCommand[DiagramCommand[\"ConnectorEndLineEnding\"] = 29] = \"ConnectorEndLineEnding\";\n DiagramCommand[DiagramCommand[\"BringToFront\"] = 30] = \"BringToFront\";\n DiagramCommand[DiagramCommand[\"SendToBack\"] = 31] = \"SendToBack\";\n DiagramCommand[DiagramCommand[\"MoveLeft\"] = 32] = \"MoveLeft\";\n DiagramCommand[DiagramCommand[\"MoveStepLeft\"] = 33] = \"MoveStepLeft\";\n DiagramCommand[DiagramCommand[\"MoveRight\"] = 34] = \"MoveRight\";\n DiagramCommand[DiagramCommand[\"MoveStepRight\"] = 35] = \"MoveStepRight\";\n DiagramCommand[DiagramCommand[\"MoveUp\"] = 36] = \"MoveUp\";\n DiagramCommand[DiagramCommand[\"MoveStepUp\"] = 37] = \"MoveStepUp\";\n DiagramCommand[DiagramCommand[\"MoveDown\"] = 38] = \"MoveDown\";\n DiagramCommand[DiagramCommand[\"MoveStepDown\"] = 39] = \"MoveStepDown\";\n DiagramCommand[DiagramCommand[\"CloneLeft\"] = 40] = \"CloneLeft\";\n DiagramCommand[DiagramCommand[\"CloneRight\"] = 41] = \"CloneRight\";\n DiagramCommand[DiagramCommand[\"CloneUp\"] = 42] = \"CloneUp\";\n DiagramCommand[DiagramCommand[\"CloneDown\"] = 43] = \"CloneDown\";\n DiagramCommand[DiagramCommand[\"AutoLayoutTree\"] = 44] = \"AutoLayoutTree\";\n DiagramCommand[DiagramCommand[\"AutoLayoutFlow\"] = 45] = \"AutoLayoutFlow\";\n DiagramCommand[DiagramCommand[\"AutoLayoutTreeVertical\"] = 46] = \"AutoLayoutTreeVertical\";\n DiagramCommand[DiagramCommand[\"AutoLayoutTreeHorizontal\"] = 47] = \"AutoLayoutTreeHorizontal\";\n DiagramCommand[DiagramCommand[\"AutoLayoutLayeredVertical\"] = 48] = \"AutoLayoutLayeredVertical\";\n DiagramCommand[DiagramCommand[\"AutoLayoutLayeredHorizontal\"] = 49] = \"AutoLayoutLayeredHorizontal\";\n DiagramCommand[DiagramCommand[\"Lock\"] = 50] = \"Lock\";\n DiagramCommand[DiagramCommand[\"Unlock\"] = 51] = \"Unlock\";\n DiagramCommand[DiagramCommand[\"Units\"] = 52] = \"Units\";\n DiagramCommand[DiagramCommand[\"ViewUnits\"] = 53] = \"ViewUnits\";\n DiagramCommand[DiagramCommand[\"PageSize\"] = 54] = \"PageSize\";\n DiagramCommand[DiagramCommand[\"PageLandscape\"] = 55] = \"PageLandscape\";\n DiagramCommand[DiagramCommand[\"PageColor\"] = 56] = \"PageColor\";\n DiagramCommand[DiagramCommand[\"GridSize\"] = 57] = \"GridSize\";\n DiagramCommand[DiagramCommand[\"ShowGrid\"] = 58] = \"ShowGrid\";\n DiagramCommand[DiagramCommand[\"SnapToGrid\"] = 59] = \"SnapToGrid\";\n DiagramCommand[DiagramCommand[\"ZoomLevel\"] = 60] = \"ZoomLevel\";\n DiagramCommand[DiagramCommand[\"Fullscreen\"] = 61] = \"Fullscreen\";\n DiagramCommand[DiagramCommand[\"ToggleSimpleView\"] = 62] = \"ToggleSimpleView\";\n DiagramCommand[DiagramCommand[\"ToggleReadOnly\"] = 63] = \"ToggleReadOnly\";\n DiagramCommand[DiagramCommand[\"EditShapeImage\"] = 64] = \"EditShapeImage\";\n DiagramCommand[DiagramCommand[\"FitToScreen\"] = 65] = \"FitToScreen\";\n DiagramCommand[DiagramCommand[\"SwitchAutoZoom\"] = 66] = \"SwitchAutoZoom\";\n DiagramCommand[DiagramCommand[\"ToggleAutoZoom\"] = 67] = \"ToggleAutoZoom\";\n DiagramCommand[DiagramCommand[\"FitToWidth\"] = 68] = \"FitToWidth\";\n DiagramCommand[DiagramCommand[\"ZoomLevelItems\"] = 69] = \"ZoomLevelItems\";\n DiagramCommand[DiagramCommand[\"GridSizeItems\"] = 70] = \"GridSizeItems\";\n DiagramCommand[DiagramCommand[\"PageSizeItems\"] = 71] = \"PageSizeItems\";\n DiagramCommand[DiagramCommand[\"ImportXML\"] = 72] = \"ImportXML\";\n DiagramCommand[DiagramCommand[\"InsertShapeImage\"] = 73] = \"InsertShapeImage\";\n DiagramCommand[DiagramCommand[\"DeleteShapeImage\"] = 74] = \"DeleteShapeImage\";\n DiagramCommand[DiagramCommand[\"StrokeStyle\"] = 75] = \"StrokeStyle\";\n DiagramCommand[DiagramCommand[\"StrokeWidth\"] = 76] = \"StrokeWidth\";\n DiagramCommand[DiagramCommand[\"AutoLayoutTreeVerticalBottomToTop\"] = 77] = \"AutoLayoutTreeVerticalBottomToTop\";\n DiagramCommand[DiagramCommand[\"AutoLayoutTreeHorizontalRightToLeft\"] = 78] = \"AutoLayoutTreeHorizontalRightToLeft\";\n DiagramCommand[DiagramCommand[\"AutoLayoutLayeredVerticalBottomToTop\"] = 79] = \"AutoLayoutLayeredVerticalBottomToTop\";\n DiagramCommand[DiagramCommand[\"AutoLayoutLayeredHorizontalRightToLeft\"] = 80] = \"AutoLayoutLayeredHorizontalRightToLeft\";\n DiagramCommand[DiagramCommand[\"Zoom25\"] = 81] = \"Zoom25\";\n DiagramCommand[DiagramCommand[\"Zoom50\"] = 82] = \"Zoom50\";\n DiagramCommand[DiagramCommand[\"Zoom75\"] = 83] = \"Zoom75\";\n DiagramCommand[DiagramCommand[\"Zoom100\"] = 84] = \"Zoom100\";\n DiagramCommand[DiagramCommand[\"Zoom125\"] = 85] = \"Zoom125\";\n DiagramCommand[DiagramCommand[\"Zoom150\"] = 86] = \"Zoom150\";\n DiagramCommand[DiagramCommand[\"Zoom200\"] = 87] = \"Zoom200\";\n DiagramCommand[DiagramCommand[\"AutoZoomToContent\"] = 88] = \"AutoZoomToContent\";\n DiagramCommand[DiagramCommand[\"AutoZoomToWidth\"] = 89] = \"AutoZoomToWidth\";\n DiagramCommand[DiagramCommand[\"ZoomLevelInPercentage\"] = 90] = \"ZoomLevelInPercentage\";\n DiagramCommand[DiagramCommand[\"ConnectorRoutingMode\"] = 91] = \"ConnectorRoutingMode\";\n })(DiagramCommand = exports.DiagramCommand || (exports.DiagramCommand = {}));\n\n var CommandManager =\n /** @class */\n function () {\n function CommandManager(control) {\n this.commands = {};\n this.shortcutsToCommand = {};\n this.lastCommandsChain = [];\n this.executingCommandsChain = [];\n this.executingCommandCounter = 0;\n this.isPublicApiCall = false;\n this.createCommand(control, DiagramCommand.Undo, UndoCommand_1.UndoCommand, key_1.ModifierKey.Ctrl | key_1.KeyCode.Key_z, key_1.ModifierKey.Meta | key_1.KeyCode.Key_z);\n this.createCommand(control, DiagramCommand.Redo, RedoCommand_1.RedoCommand, key_1.ModifierKey.Ctrl | key_1.KeyCode.Key_y, key_1.ModifierKey.Ctrl | key_1.ModifierKey.Shift | key_1.KeyCode.Key_z, key_1.ModifierKey.Meta | key_1.ModifierKey.Shift | key_1.KeyCode.Key_z);\n this.createCommand(control, DiagramCommand.Cut, CutSelectionCommand_1.CutSelectionCommand, key_1.KeyCode.Key_x | key_1.ModifierKey.Ctrl, key_1.KeyCode.Key_x | key_1.ModifierKey.Meta, key_1.KeyCode.Delete | key_1.ModifierKey.Shift);\n this.createCommand(control, DiagramCommand.Copy, CopySelectionCommand_1.CopySelectionCommand, key_1.KeyCode.Key_c | key_1.ModifierKey.Ctrl, key_1.KeyCode.Key_c | key_1.ModifierKey.Meta, key_1.KeyCode.Insert | key_1.ModifierKey.Ctrl);\n this.createCommand(control, DiagramCommand.Paste, PasteSelectionCommand_1.PasteSelectionCommand);\n this.createCommand(control, DiagramCommand.PasteInPosition, PasteSelectionInPosition_1.PasteSelectionInPositionCommand);\n this.createCommand(control, DiagramCommand.SelectAll, SelectAllCommand_1.SelectAllCommand, key_1.KeyCode.Key_a | key_1.ModifierKey.Ctrl, key_1.KeyCode.Key_a | key_1.ModifierKey.Meta);\n this.createCommand(control, DiagramCommand.Delete, DeleteCommand_1.DeleteCommand, key_1.KeyCode.Delete, key_1.KeyCode.Backspace);\n this.createCommand(control, DiagramCommand.Import, ImportCommand_1.ImportCommand);\n this.createCommand(control, DiagramCommand.ImportBPMN, ImportBPMNCommand_1.ImportBPMNCommand);\n this.createCommand(control, DiagramCommand.ImportXML, ImportXMLCommand_1.ImportXMLCommand);\n this.createCommand(control, DiagramCommand.Export, ExportCommand_1.ExportCommand);\n this.createCommand(control, DiagramCommand.ExportSvg, ExportSvgCommand_1.ExportSvgCommand);\n this.createCommand(control, DiagramCommand.ExportPng, ExportPngCommand_1.ExportPngCommand);\n this.createCommand(control, DiagramCommand.ExportJpg, ExportJpgCommand_1.ExportJpgCommand);\n this.createCommand(control, DiagramCommand.BindDocument, BindDocumentCommand_1.BindDocumentCommand);\n this.createCommand(control, DiagramCommand.UnbindDocument, UnbindDocumentCommand_1.UnbindDocumentCommand);\n this.createCommand(control, DiagramCommand.Bold, ToggleFontBoldCommand_1.ToggleFontBoldCommand, key_1.ModifierKey.Ctrl | key_1.KeyCode.Key_b, key_1.ModifierKey.Meta | key_1.KeyCode.Key_b);\n this.createCommand(control, DiagramCommand.Italic, ToggleFontItalicCommand_1.ToggleFontItalicCommand, key_1.ModifierKey.Ctrl | key_1.KeyCode.Key_i, key_1.ModifierKey.Meta | key_1.KeyCode.Key_i);\n this.createCommand(control, DiagramCommand.Underline, ToggleFontUnderlineCommand_1.ToggleFontUnderlineCommand, key_1.ModifierKey.Ctrl | key_1.KeyCode.Key_u, key_1.ModifierKey.Meta | key_1.KeyCode.Key_u);\n this.createCommand(control, DiagramCommand.FontName, ChangeFontNameCommand_1.ChangeFontNameCommand);\n this.createCommand(control, DiagramCommand.FontSize, ChangeFontSizeCommand_1.ChangeFontSizeCommand);\n this.createCommand(control, DiagramCommand.FontColor, ChangeFontColorCommand_1.ChangeFontColorCommand);\n this.createCommand(control, DiagramCommand.FillColor, ChangeFillColorCommand_1.ChangeFillColorCommand);\n this.createCommand(control, DiagramCommand.StrokeColor, ChangeStrokeColorCommand_1.ChangeStrokeColorCommand);\n this.createCommand(control, DiagramCommand.StrokeStyle, ChangeStrokeStyleCommand_1.ChangeStrokeStyleCommand);\n this.createCommand(control, DiagramCommand.StrokeWidth, ChangeStrokeWidthCommand_1.ChangeStrokeWidthCommand);\n this.createCommand(control, DiagramCommand.TextLeftAlign, ChangeTextAlignCommand_1.TextLeftAlignCommand);\n this.createCommand(control, DiagramCommand.TextCenterAlign, ChangeTextAlignCommand_1.TextCenterAlignCommand);\n this.createCommand(control, DiagramCommand.TextRightAlign, ChangeTextAlignCommand_1.TextRightAlignCommand);\n this.createCommand(control, DiagramCommand.ConnectorLineOption, ChangeConnectorLineOptionCommand_1.ChangeConnectorLineOptionCommand);\n this.createCommand(control, DiagramCommand.ConnectorStartLineEnding, ChangeConnectorLineEndingCommand_1.ChangeConnectorStartLineEndingCommand);\n this.createCommand(control, DiagramCommand.ConnectorEndLineEnding, ChangeConnectorLineEndingCommand_1.ChangeConnectorEndLineEndingCommand);\n this.createCommand(control, DiagramCommand.BringToFront, BringToFrontCommand_1.BringToFrontCommand);\n this.createCommand(control, DiagramCommand.SendToBack, SendToBackCommand_1.SendToBackCommand);\n this.createCommand(control, DiagramCommand.MoveLeft, MoveCommands_1.MoveLeftCommand, key_1.ModifierKey.Ctrl | key_1.KeyCode.Left, key_1.ModifierKey.Ctrl | key_1.ModifierKey.Shift | key_1.KeyCode.Left);\n this.createCommand(control, DiagramCommand.MoveRight, MoveCommands_1.MoveRightCommand, key_1.ModifierKey.Ctrl | key_1.KeyCode.Right, key_1.ModifierKey.Ctrl | key_1.ModifierKey.Shift | key_1.KeyCode.Right);\n this.createCommand(control, DiagramCommand.MoveUp, MoveCommands_1.MoveUpCommand, key_1.ModifierKey.Ctrl | key_1.KeyCode.Up, key_1.ModifierKey.Ctrl | key_1.ModifierKey.Shift | key_1.KeyCode.Up);\n this.createCommand(control, DiagramCommand.MoveDown, MoveCommands_1.MoveDownCommand, key_1.ModifierKey.Ctrl | key_1.KeyCode.Down, key_1.ModifierKey.Ctrl | key_1.ModifierKey.Shift | key_1.KeyCode.Down);\n this.createCommand(control, DiagramCommand.MoveStepLeft, MoveCommands_1.MoveStepLeftCommand, key_1.KeyCode.Left, key_1.ModifierKey.Shift | key_1.KeyCode.Left);\n this.createCommand(control, DiagramCommand.MoveStepRight, MoveCommands_1.MoveStepRightCommand, key_1.KeyCode.Right, key_1.ModifierKey.Shift | key_1.KeyCode.Right);\n this.createCommand(control, DiagramCommand.MoveStepUp, MoveCommands_1.MoveStepUpCommand, key_1.KeyCode.Up, key_1.ModifierKey.Shift | key_1.KeyCode.Up);\n this.createCommand(control, DiagramCommand.MoveStepDown, MoveCommands_1.MoveStepDownCommand, key_1.KeyCode.Down, key_1.ModifierKey.Shift | key_1.KeyCode.Down);\n this.createCommand(control, DiagramCommand.CloneLeft, CloneCommand_1.CloneLeftCommand, key_1.ModifierKey.Alt | key_1.KeyCode.Left, key_1.ModifierKey.Alt | key_1.ModifierKey.Shift | key_1.KeyCode.Left);\n this.createCommand(control, DiagramCommand.CloneRight, CloneCommand_1.CloneRightCommand, key_1.ModifierKey.Alt | key_1.KeyCode.Right, key_1.ModifierKey.Alt | key_1.ModifierKey.Shift | key_1.KeyCode.Right);\n this.createCommand(control, DiagramCommand.CloneUp, CloneCommand_1.CloneUpCommand, key_1.ModifierKey.Alt | key_1.KeyCode.Up, key_1.ModifierKey.Alt | key_1.ModifierKey.Shift | key_1.KeyCode.Up);\n this.createCommand(control, DiagramCommand.CloneDown, CloneCommand_1.CloneDownCommand, key_1.ModifierKey.Alt | key_1.KeyCode.Down, key_1.ModifierKey.Alt | key_1.ModifierKey.Shift | key_1.KeyCode.Down);\n this.createCommand(control, DiagramCommand.Lock, LockCommand_1.LockCommand);\n this.createCommand(control, DiagramCommand.Unlock, UnlockCommand_1.UnLockCommand);\n this.createCommand(control, DiagramCommand.AutoLayoutTree, AutoLayoutTreeVerticalCommand_1.AutoLayoutTreeVerticalCommand); // TODO: remove after, need for BC\n\n this.createCommand(control, DiagramCommand.AutoLayoutFlow, AutoLayoutLayeredHorizontalCommand_1.AutoLayoutLayeredHorizontalCommand); // TODO: remove after, need for BC\n\n this.createCommand(control, DiagramCommand.Units, ChangeUnitsCommand_1.ChangeUnitsCommand);\n this.createCommand(control, DiagramCommand.ViewUnits, ChangeUnitsCommand_1.ChangeViewUnitsCommand);\n this.createCommand(control, DiagramCommand.PageSize, ChangePageSizeCommand_1.ChangePageSizeCommand);\n this.createCommand(control, DiagramCommand.PageLandscape, ChangePageLandscapeCommand_1.ChangePageLandscapeCommand);\n this.createCommand(control, DiagramCommand.PageColor, ChangePageColorCommand_1.ChangePageColorCommand);\n this.createCommand(control, DiagramCommand.GridSize, ChangeGridSizeCommand_1.ChangeGridSizeCommand);\n this.createCommand(control, DiagramCommand.ShowGrid, ChangeShowGridCommand_1.ChangeShowGridCommand);\n this.createCommand(control, DiagramCommand.SnapToGrid, ChangeSnapToGridCommand_1.ChangeSnapToGridCommand);\n this.createCommand(control, DiagramCommand.ZoomLevel, ChangeZoomLevelCommand_1.ChangeZoomLevelCommand);\n this.createCommand(control, DiagramCommand.ZoomLevelInPercentage, ChangeZoomLevelCommand_1.ChangeZoomLevelInPercentageCommand);\n this.createCommand(control, DiagramCommand.AutoLayoutTreeVertical, AutoLayoutTreeVerticalCommand_1.AutoLayoutTreeVerticalCommand);\n this.createCommand(control, DiagramCommand.AutoLayoutTreeVerticalBottomToTop, AutoLayoutTreeVerticalBottomToTopCommand_1.AutoLayoutTreeVerticalBottomToTopCommand);\n this.createCommand(control, DiagramCommand.AutoLayoutTreeHorizontal, AutoLayoutTreeHorizontalCommand_1.AutoLayoutTreeHorizontalCommand);\n this.createCommand(control, DiagramCommand.AutoLayoutTreeHorizontalRightToLeft, AutoLayoutTreeHorizontalRightToLeftCommand_1.AutoLayoutTreeHorizontalRightToLeftCommand);\n this.createCommand(control, DiagramCommand.AutoLayoutLayeredVertical, AutoLayoutLayeredVerticalCommand_1.AutoLayoutLayeredVerticalCommand);\n this.createCommand(control, DiagramCommand.AutoLayoutLayeredVerticalBottomToTop, AutoLayoutLayeredVerticalBottomToTopCommand_1.AutoLayoutLayeredVerticalBottomToTopCommand);\n this.createCommand(control, DiagramCommand.AutoLayoutLayeredHorizontal, AutoLayoutLayeredHorizontalCommand_1.AutoLayoutLayeredHorizontalCommand);\n this.createCommand(control, DiagramCommand.AutoLayoutLayeredHorizontalRightToLeft, AutoLayoutLayeredHorizontalRightToLeftCommand_1.AutoLayoutLayeredHorizontalRightToLeftCommand);\n this.createCommand(control, DiagramCommand.Fullscreen, ToggleFullscreenCommand_1.ToggleFullscreenCommand, key_1.KeyCode.F11);\n this.createCommand(control, DiagramCommand.ToggleSimpleView, ToggleSimpleViewCommand_1.ToggleSimpleViewCommand);\n this.createCommand(control, DiagramCommand.ToggleReadOnly, ToggleReadOnlyCommand_1.ToggleReadOnlyCommand);\n this.createCommand(control, DiagramCommand.InsertShapeImage, InsertShapeImageCommand_1.InsertShapeImageCommand);\n this.createCommand(control, DiagramCommand.EditShapeImage, EditShapeImageCommand_1.EditShapeImageCommand);\n this.createCommand(control, DiagramCommand.DeleteShapeImage, DeleteShapeImageCommand_1.DeleteShapeImageCommand);\n this.createCommand(control, DiagramCommand.FitToScreen, ChangeZoomLevelCommand_1.FitToScreenCommand);\n this.createCommand(control, DiagramCommand.FitToWidth, ChangeZoomLevelCommand_1.FitToWidthCommand);\n this.createCommand(control, DiagramCommand.SwitchAutoZoom, ChangeZoomLevelCommand_1.SwitchAutoZoomCommand);\n this.createCommand(control, DiagramCommand.ToggleAutoZoom, ChangeZoomLevelCommand_1.ToggleAutoZoomCommand);\n this.createCommand(control, DiagramCommand.ZoomLevelItems, ChangeZoomLevelCommand_1.ChangeZoomLevelItemsCommand);\n this.createCommand(control, DiagramCommand.GridSizeItems, ChangeGridSizeCommand_1.ChangeGridSizeItemsCommand);\n this.createCommand(control, DiagramCommand.PageSizeItems, ChangePageSizeCommand_1.ChangePageSizeItemsCommand);\n this.createCommand(control, DiagramCommand.Zoom25, ChangeZoomLevelCommand_1.ChangeZoomLevelTo25Command);\n this.createCommand(control, DiagramCommand.Zoom50, ChangeZoomLevelCommand_1.ChangeZoomLevelTo50Command);\n this.createCommand(control, DiagramCommand.Zoom75, ChangeZoomLevelCommand_1.ChangeZoomLevelTo75Command);\n this.createCommand(control, DiagramCommand.Zoom100, ChangeZoomLevelCommand_1.ChangeZoomLevelTo100Command);\n this.createCommand(control, DiagramCommand.Zoom125, ChangeZoomLevelCommand_1.ChangeZoomLevelTo125Command);\n this.createCommand(control, DiagramCommand.Zoom150, ChangeZoomLevelCommand_1.ChangeZoomLevelTo150Command);\n this.createCommand(control, DiagramCommand.Zoom200, ChangeZoomLevelCommand_1.ChangeZoomLevelTo200Command);\n this.createCommand(control, DiagramCommand.AutoZoomToContent, ChangeZoomLevelCommand_1.ToggleAutoZoomToContentCommand);\n this.createCommand(control, DiagramCommand.AutoZoomToWidth, ChangeZoomLevelCommand_1.ToggleAutoZoomToWidthCommand);\n this.createCommand(control, DiagramCommand.ConnectorRoutingMode, ChangeConnectorRoutingModeCommand_1.ChangeConnectorRoutingModeCommand);\n }\n\n CommandManager.prototype.getCommand = function (key) {\n return this.commands[key];\n };\n\n CommandManager.prototype.beforeExecuting = function (command) {\n this.executingCommandsChain.push(command);\n this.executingCommandCounter++;\n };\n\n CommandManager.prototype.afterExecuting = function () {\n this.executingCommandCounter--;\n\n if (this.executingCommandCounter === 0) {\n this.lastCommandsChain = this.executingCommandsChain;\n this.executingCommandsChain = [];\n }\n };\n\n CommandManager.prototype.processShortcut = function (code) {\n var command = this.shortcutsToCommand[code];\n if (command) return command.execute();\n return false;\n };\n\n CommandManager.prototype.processPaste = function (clipboardData) {\n var command = this.getCommand(DiagramCommand.Paste);\n if (command && command.isEnabled()) command.execute(clipboardData);\n return true;\n }; // ISelectionChangesListener\n\n\n CommandManager.prototype.notifySelectionChanged = function (_selection) {\n this.lastCommandsChain = [];\n };\n\n CommandManager.prototype.notifyScrollPositionChanged = function () {};\n\n CommandManager.prototype.createCommand = function (control, commandId, commandType) {\n var shortcuts = [];\n\n for (var _i = 3; _i < arguments.length; _i++) {\n shortcuts[_i - 3] = arguments[_i];\n }\n\n this.commands[commandId] = new commandType(control);\n\n for (var i = 0; i < shortcuts.length; i++) {\n var shortcut = shortcuts[i];\n if (typeof shortcut === \"number\") this.shortcutsToCommand[shortcut] = this.commands[commandId];\n }\n };\n\n return CommandManager;\n }();\n\n exports.CommandManager = CommandManager;\n /***/\n },\n /* 82 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var min_max_1 = __webpack_require__(165);\n\n var comparers_1 = __webpack_require__(166);\n\n var ListUtils = function () {\n function ListUtils() {}\n\n ListUtils.remove = function (list, element) {\n var index = list.indexOf(element, 0);\n if (index >= 0) list.splice(index, 1);\n };\n\n ListUtils.removeBy = function (list, callback) {\n var len = list.length;\n\n for (var index = 0; index < len; index++) {\n if (callback(list[index], index)) return list.splice(index, 1)[0];\n }\n\n return null;\n };\n\n ListUtils.shallowCopy = function (list) {\n return list.slice();\n };\n\n ListUtils.deepCopy = function (list) {\n return ListUtils.map(list, function (val) {\n return val.clone();\n });\n };\n\n ListUtils.initByValue = function (numElements, initValue) {\n var result = [];\n\n for (; numElements > 0; numElements--) {\n result.push(initValue);\n }\n\n return result;\n };\n\n ListUtils.initByCallback = function (numElements, initCallback) {\n var result = [];\n\n for (var index = 0; index < numElements; index++) {\n result.push(initCallback(index));\n }\n\n return result;\n };\n\n ListUtils.forEachOnInterval = function (interval, callback) {\n var end = interval.end;\n\n for (var index = interval.start; index < end; index++) {\n callback(index);\n }\n };\n\n ListUtils.reverseForEachOnInterval = function (interval, callback) {\n var start = interval.start;\n\n for (var index = interval.end - 1; index >= start; index--) {\n callback(index);\n }\n };\n\n ListUtils.reducedMap = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var result = [];\n\n for (var index = startIndex; index < endIndex; index++) {\n var newItem = callback(list[index], index);\n if (newItem !== null) result.push(newItem);\n }\n\n return result;\n };\n\n ListUtils.filter = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var result = [];\n\n for (var index = startIndex; index < endIndex; index++) {\n var item = list[index];\n if (callback(item, index)) result.push(item);\n }\n\n return result;\n };\n\n ListUtils.map = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var result = [];\n\n for (var index = startIndex; index < endIndex; index++) {\n result.push(callback(list[index], index));\n }\n\n return result;\n };\n\n ListUtils.indexBy = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var ind = startIndex; ind < endIndex; ind++) {\n if (callback(list[ind], ind)) return ind;\n }\n\n return -1;\n };\n\n ListUtils.reverseIndexBy = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var ind = startIndex; ind >= endIndex; ind--) {\n if (callback(list[ind], ind)) return ind;\n }\n\n return -1;\n };\n\n ListUtils.elementBy = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var ind = ListUtils.indexBy(list, callback, startIndex, endIndex);\n return ind < 0 ? null : list[ind];\n };\n\n ListUtils.reverseElementBy = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n var ind = ListUtils.reverseIndexBy(list, callback, startIndex, endIndex);\n return ind < 0 ? null : list[ind];\n };\n\n ListUtils.last = function (list) {\n return list[list.length - 1];\n };\n\n ListUtils.setLast = function (list, newVal) {\n return list[list.length - 1] = newVal;\n };\n\n ListUtils.incLast = function (list) {\n return ++list[list.length - 1];\n };\n\n ListUtils.decLast = function (list) {\n return --list[list.length - 1];\n };\n\n ListUtils.equals = function (a, b) {\n return a.length === b.length && ListUtils.allOf2(a, b, function (a, b) {\n return a.equals(b);\n });\n };\n\n ListUtils.equalsByReference = function (a, b) {\n var aLen = a.length;\n var bLen = a.length;\n if (aLen !== bLen) return false;\n\n for (var i = 0; i < aLen; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n };\n\n ListUtils.unique = function (list, cmp, equal, finalizeObj) {\n if (equal === void 0) {\n equal = cmp;\n }\n\n if (finalizeObj === void 0) {\n finalizeObj = function finalizeObj() {};\n }\n\n var len = list.length;\n if (len === 0) return [];\n list = list.sort(cmp);\n var prevValue = list[0];\n var result = ListUtils.reducedMap(list, function (v) {\n if (equal(prevValue, v) !== 0) {\n prevValue = v;\n return v;\n }\n\n finalizeObj(v);\n return null;\n }, 1, len);\n result.unshift(list[0]);\n return result;\n };\n\n ListUtils.uniqueNumber = function (list) {\n list = list.sort(comparers_1.Comparers.number);\n var prevValue = Number.NaN;\n\n for (var i = list.length - 1; i >= 0; i--) {\n if (prevValue === list[i]) list.splice(i, 1);else prevValue = list[i];\n }\n\n return list;\n };\n\n ListUtils.forEach = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n callback(list[index], index);\n }\n };\n\n ListUtils.forEach2 = function (listA, listB, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = listA.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n callback(listA[index], listB[index], index);\n }\n };\n\n ListUtils.reverseForEach = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var index = startIndex; index >= endIndex; index--) {\n callback(list[index], index);\n }\n };\n\n ListUtils.reverseIndexOf = function (list, element, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var index = startIndex; index >= endIndex; index--) {\n if (list[index] === element) return index;\n }\n\n return -1;\n };\n\n ListUtils.accumulate = function (list, initAccValue, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var acc = initAccValue;\n\n for (var ind = startIndex; ind < endIndex; ind++) {\n acc = callback(acc, list[ind], ind);\n }\n\n return acc;\n };\n\n ListUtils.accumulateNumber = function (list, callback, initAccValue, startIndex, endIndex) {\n if (initAccValue === void 0) {\n initAccValue = 0;\n }\n\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var acc = initAccValue;\n\n for (var ind = startIndex; ind < endIndex; ind++) {\n acc += callback(list[ind], ind, acc);\n }\n\n return acc;\n };\n\n ListUtils.anyOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n if (callback(list[index], index)) return true;\n }\n\n return false;\n };\n\n ListUtils.unsafeAnyOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n var currResult = callback(list[index], index);\n if (currResult) return currResult;\n }\n\n return null;\n };\n\n ListUtils.reverseAnyOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var index = startIndex; index >= endIndex; index--) {\n if (callback(list[index], index)) return true;\n }\n\n return false;\n };\n\n ListUtils.unsafeReverseAnyOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = list.length - 1;\n }\n\n if (endIndex === void 0) {\n endIndex = 0;\n }\n\n for (var index = startIndex; index >= endIndex; index--) {\n var currResult = callback(list[index], index);\n if (currResult) return currResult;\n }\n\n return null;\n };\n\n ListUtils.anyOf2 = function (listA, listB, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = listA.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n if (callback(listA[index], listB[index], index)) return true;\n }\n\n return false;\n };\n\n ListUtils.allOf = function (list, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n if (!callback(list[index], index)) return false;\n }\n\n return true;\n };\n\n ListUtils.allOf2 = function (listA, listB, callback, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = listA.length;\n }\n\n for (var index = startIndex; index < endIndex; index++) {\n if (!callback(listA[index], listB[index], index)) return false;\n }\n\n return true;\n };\n\n ListUtils.allOfOnInterval = function (interval, callback) {\n var endIndex = interval.end;\n\n for (var index = interval.start; index < endIndex; index++) {\n if (!callback(index)) return false;\n }\n\n return true;\n };\n\n ListUtils.addListOnTail = function (resultList, addedList) {\n for (var i = 0, elem = void 0; elem = addedList[i]; i++) {\n resultList.push(elem);\n }\n\n return resultList;\n };\n\n ListUtils.joinLists = function (converter) {\n var lists = [];\n\n for (var _i = 1; _i < arguments.length; _i++) {\n lists[_i - 1] = arguments[_i];\n }\n\n return ListUtils.accumulate(lists, [], function (accList, list) {\n ListUtils.addListOnTail(accList, converter(list));\n return accList;\n });\n };\n\n ListUtils.push = function (list, element) {\n list.push(element);\n return list;\n };\n\n ListUtils.countIf = function (list, callback) {\n return ListUtils.accumulateNumber(list, function (elem, ind) {\n return callback(elem, ind) ? 1 : 0;\n });\n };\n\n ListUtils.clear = function (list) {\n list.splice(0);\n };\n\n ListUtils.merge = function (list, cmp, shouldMerge, merge, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n list = list.slice(startIndex, endIndex);\n if (endIndex - startIndex < 2) return list;\n list = list.sort(cmp);\n var prevObj = list[startIndex];\n var result = [prevObj];\n\n for (var ind = startIndex + 1; ind < endIndex; ind++) {\n var obj = list[ind];\n if (shouldMerge(prevObj, obj)) merge(prevObj, obj);else {\n prevObj = obj;\n result.push(prevObj);\n }\n }\n\n return result;\n };\n\n ListUtils.min = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var res = ListUtils.minExtended(list, getValue, startIndex, endIndex);\n return res ? res.minElement : null;\n };\n\n ListUtils.max = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var res = ListUtils.maxExtended(list, getValue, startIndex, endIndex);\n return res ? res.maxElement : null;\n };\n\n ListUtils.minMax = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n var res = ListUtils.minMaxExtended(list, getValue, startIndex, endIndex);\n return res ? new min_max_1.MinMax(res.minElement, res.maxElement) : null;\n };\n\n ListUtils.minExtended = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var minElement = list[startIndex];\n var minValue = getValue(minElement);\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n var elemValue = getValue(elem);\n\n if (elemValue < minValue) {\n minValue = elemValue;\n minElement = elem;\n }\n }\n\n return new min_max_1.ExtendedMin(minElement, minValue);\n };\n\n ListUtils.maxExtended = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var maxElement = list[startIndex];\n var maxValue = getValue(maxElement);\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n var elemValue = getValue(elem);\n\n if (elemValue > maxValue) {\n maxValue = elemValue;\n maxElement = elem;\n }\n }\n\n return new min_max_1.ExtendedMax(maxElement, maxValue);\n };\n\n ListUtils.minMaxExtended = function (list, getValue, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var minElement = list[startIndex];\n var maxElement = minElement;\n var minValue = getValue(minElement);\n var maxValue = minValue;\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n var elemValue = getValue(elem);\n\n if (elemValue < minValue) {\n minValue = elemValue;\n minElement = elem;\n } else if (elemValue > maxValue) {\n maxValue = elemValue;\n maxElement = elem;\n }\n }\n\n return new min_max_1.ExtendedMinMax(minElement, minValue, maxElement, maxValue);\n };\n\n ListUtils.minByCmp = function (list, cmp, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var found = list[startIndex];\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n if (cmp(elem, found) < 0) found = elem;\n }\n\n return found;\n };\n\n ListUtils.maxByCmp = function (list, cmp, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var found = list[startIndex];\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n if (cmp(elem, found) > 0) found = elem;\n }\n\n return found;\n };\n\n ListUtils.minMaxByCmp = function (list, cmp, startIndex, endIndex) {\n if (startIndex === void 0) {\n startIndex = 0;\n }\n\n if (endIndex === void 0) {\n endIndex = list.length;\n }\n\n if (list.length === 0) return null;\n var min = list[startIndex];\n var max = min;\n\n for (var index = startIndex + 1; index < endIndex; index++) {\n var elem = list[index];\n var res = cmp(elem, min);\n if (res > 0) max = elem;else if (res < 0) min = elem;\n }\n\n return new min_max_1.MinMax(min, max);\n };\n\n return ListUtils;\n }();\n\n exports.ListUtils = ListUtils;\n /***/\n },\n /* 83 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var file_1 = __webpack_require__(177);\n\n var mime_type_1 = __webpack_require__(178);\n\n var Base64Utils = function () {\n function Base64Utils() {}\n\n Base64Utils.normalizeToDataUrl = function (base64, mimeType) {\n if (!Base64Utils.checkPrependDataUrl(base64)) base64 = Base64Utils.prependByDataUrl(base64, mimeType);\n return base64;\n };\n\n Base64Utils.prependByDataUrl = function (base64, mimeType) {\n return \"data:\" + mimeType + \";base64,\" + base64;\n };\n\n Base64Utils.checkPrependDataUrl = function (base64) {\n return Base64Utils.dataUrl.test(base64);\n };\n\n Base64Utils.deleteDataUrlPrefix = function (base64DataUrl) {\n return base64DataUrl.replace(Base64Utils.dataUrl, '');\n };\n\n Base64Utils.getUint8Array = function (base64) {\n base64 = atob(base64);\n var n = base64.length;\n var arr = new Uint8Array(n);\n\n while (n--) {\n arr[n] = base64.charCodeAt(n);\n }\n\n return arr;\n };\n\n Base64Utils.fromArrayBuffer = function (buffer) {\n var binary = [];\n var bytes = new Uint8Array(buffer);\n var len = bytes.byteLength;\n\n for (var i = 0; i < len; i++) {\n binary.push(String.fromCharCode(bytes[i]));\n }\n\n return window.btoa(binary.join(''));\n };\n\n Base64Utils.getFileFromBase64 = function (base64, fileName, options) {\n if (fileName === void 0) {\n fileName = '';\n }\n\n var data = Base64Utils.getUint8Array(base64);\n return file_1.FileUtils.createFile([data], fileName, options);\n };\n\n Base64Utils.getMimeTypeAsString = function (base64) {\n var match = base64.match(Base64Utils.dataUrl);\n return match ? match[1] : null;\n };\n\n Base64Utils.getKnownMimeType = function (base64) {\n var match = base64.match(Base64Utils.dataUrl);\n return match ? mime_type_1.MimeTypeUtils.stringTypeToType(match[1]) : mime_type_1.DxMimeType.Unknown;\n };\n\n Base64Utils.fromBlobAsArrayBuffer = function (blob, callback) {\n var reader = new FileReader();\n\n reader.onloadend = function () {\n return callback(Base64Utils.fromArrayBuffer(reader.result));\n };\n\n reader.readAsArrayBuffer(blob);\n };\n\n Base64Utils.fromBlobAsDataUrl = function (blob, callback) {\n var reader = new FileReader();\n\n reader.onloadend = function () {\n return callback(reader.result);\n };\n\n reader.readAsDataURL(blob);\n };\n\n Base64Utils.dataUrl = /^data:(.*?)(;(.*?))??(;base64)?,/;\n return Base64Utils;\n }();\n\n exports.Base64Utils = Base64Utils;\n /***/\n },\n /* 84 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics37 = function extendStatics(d, b) {\n _extendStatics37 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics37(d, b);\n };\n\n return function (d, b) {\n _extendStatics37(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.NativeConnector = exports.NativeShape = exports.NativeItem = void 0;\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var NativeItem =\n /** @class */\n function () {\n function NativeItem(id, key) {\n this.id = id;\n this.key = key;\n this.unitsApplied = false;\n }\n\n NativeItem.prototype.applyUnits = function (units) {\n if (!this.unitsApplied && units !== undefined) {\n this.applyUnitsCore(units);\n this.unitsApplied = true;\n }\n };\n\n return NativeItem;\n }();\n\n exports.NativeItem = NativeItem;\n\n var NativeShape =\n /** @class */\n function (_super) {\n __extends(NativeShape, _super);\n\n function NativeShape() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n NativeShape.prototype.applyUnitsCore = function (units) {\n this.position.x = ModelUtils_1.ModelUtils.getlUnitValue(units, this.position.x);\n this.position.y = ModelUtils_1.ModelUtils.getlUnitValue(units, this.position.y);\n this.size.width = ModelUtils_1.ModelUtils.getlUnitValue(units, this.size.width);\n this.size.height = ModelUtils_1.ModelUtils.getlUnitValue(units, this.size.height);\n };\n\n return NativeShape;\n }(NativeItem);\n\n exports.NativeShape = NativeShape;\n\n var NativeConnector =\n /** @class */\n function (_super) {\n __extends(NativeConnector, _super);\n\n function NativeConnector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n NativeConnector.prototype.applyUnitsCore = function (units) {\n this.points.forEach(function (pt) {\n pt.x = ModelUtils_1.ModelUtils.getlUnitValue(units, pt.x);\n pt.y = ModelUtils_1.ModelUtils.getlUnitValue(units, pt.y);\n });\n };\n\n return NativeConnector;\n }(NativeItem);\n\n exports.NativeConnector = NativeConnector;\n /***/\n },\n /* 85 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorRenderPointsContext = void 0;\n\n var ConnectorRenderPointsContext =\n /** @class */\n function () {\n function ConnectorRenderPointsContext(renderPoints, lockCreateRenderPoints, actualRoutingMode) {\n this.renderPoints = renderPoints;\n this.lockCreateRenderPoints = lockCreateRenderPoints;\n this.actualRoutingMode = actualRoutingMode;\n }\n\n return ConnectorRenderPointsContext;\n }();\n\n exports.ConnectorRenderPointsContext = ConnectorRenderPointsContext;\n /***/\n },\n /* 86 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics38 = function extendStatics(d, b) {\n _extendStatics38 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics38(d, b);\n };\n\n return function (d, b) {\n _extendStatics38(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ReplaceConnectorPointsHistoryItem = exports.ChangeConnectorPointsHistoryItem = exports.UpdateConnectorPointsHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var UpdateConnectorPointsHistoryItem =\n /** @class */\n function (_super) {\n __extends(UpdateConnectorPointsHistoryItem, _super);\n\n function UpdateConnectorPointsHistoryItem(connectorKey, newPoints) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connectorKey;\n _this.newPoints = newPoints;\n return _this;\n }\n\n UpdateConnectorPointsHistoryItem.prototype.redo = function (manipulator) {\n var _this = this;\n\n var connector = manipulator.model.findConnector(this.connectorKey);\n this.oldRenderContext = connector.createRenderPointsContext();\n this.oldPoints = connector.points.map(function (p) {\n return p.clone();\n });\n manipulator.changeConnectorPoints(connector, function (connector) {\n connector.points = _this.newPoints;\n\n _this.updateRenderPoints(connector);\n });\n };\n\n UpdateConnectorPointsHistoryItem.prototype.undo = function (manipulator) {\n var _this = this;\n\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.changeConnectorPoints(connector, function (connector) {\n connector.points = _this.oldPoints;\n connector.replaceRenderPoints(_this.oldRenderContext);\n });\n };\n\n return UpdateConnectorPointsHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.UpdateConnectorPointsHistoryItem = UpdateConnectorPointsHistoryItem;\n\n var ChangeConnectorPointsHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorPointsHistoryItem, _super);\n\n function ChangeConnectorPointsHistoryItem(connectorKey, newPoints, newRenderContext) {\n var _this = _super.call(this, connectorKey, newPoints) || this;\n\n _this.connectorKey = connectorKey;\n _this.newPoints = newPoints;\n _this.newRenderContext = newRenderContext;\n return _this;\n }\n\n ChangeConnectorPointsHistoryItem.prototype.updateRenderPoints = function (connector) {\n connector.replaceRenderPoints(this.newRenderContext);\n };\n\n return ChangeConnectorPointsHistoryItem;\n }(UpdateConnectorPointsHistoryItem);\n\n exports.ChangeConnectorPointsHistoryItem = ChangeConnectorPointsHistoryItem;\n\n var ReplaceConnectorPointsHistoryItem =\n /** @class */\n function (_super) {\n __extends(ReplaceConnectorPointsHistoryItem, _super);\n\n function ReplaceConnectorPointsHistoryItem(connectorKey, newPoints) {\n var _this = _super.call(this, connectorKey, newPoints) || this;\n\n _this.connectorKey = connectorKey;\n _this.newPoints = newPoints;\n return _this;\n }\n\n ReplaceConnectorPointsHistoryItem.prototype.updateRenderPoints = function (connector) {\n connector.clearRenderPoints();\n };\n\n return ReplaceConnectorPointsHistoryItem;\n }(UpdateConnectorPointsHistoryItem);\n\n exports.ReplaceConnectorPointsHistoryItem = ReplaceConnectorPointsHistoryItem;\n /***/\n },\n /* 87 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Offsets = function () {\n function Offsets(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n\n Offsets.empty = function () {\n return new Offsets(0, 0, 0, 0);\n };\n\n Object.defineProperty(Offsets.prototype, \"horizontal\", {\n get: function get() {\n return this.left + this.right;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Offsets.prototype, \"vertical\", {\n get: function get() {\n return this.top + this.bottom;\n },\n enumerable: true,\n configurable: true\n });\n\n Offsets.fromNumber = function (offset) {\n return new Offsets(offset, offset, offset, offset);\n };\n\n Offsets.fromOffsets = function (offsets) {\n return new Offsets(offsets.left, offsets.right, offsets.top, offsets.bottom);\n };\n\n Offsets.fromSide = function (horizontal, vertical) {\n return new Offsets(horizontal, horizontal, vertical, vertical);\n };\n\n Offsets.prototype.normalize = function () {\n this.left = Math.max(0, this.left);\n this.right = Math.max(0, this.right);\n this.top = Math.max(0, this.top);\n this.bottom = Math.max(0, this.bottom);\n return this;\n };\n\n Offsets.prototype.toString = function () {\n return JSON.stringify(this);\n };\n\n Offsets.prototype.isEmpty = function () {\n return this.left === 0 && this.right === 0 && this.top === 0 && this.bottom === 0;\n };\n\n Offsets.prototype.offset = function (offset) {\n this.left += offset.left;\n this.right += offset.right;\n this.top += offset.top;\n this.bottom += offset.bottom;\n return this;\n };\n\n Offsets.prototype.multiply = function (multLeft, multRight, multTop, multBottom) {\n switch (arguments.length) {\n case 1:\n {\n this.left *= multLeft;\n this.right *= multLeft;\n this.top *= multLeft;\n this.bottom *= multLeft;\n return this;\n }\n\n case 2:\n {\n this.left *= multLeft;\n this.right *= multLeft;\n this.top *= multRight;\n this.bottom *= multRight;\n return this;\n }\n\n case 4:\n {\n this.left *= multLeft;\n this.right *= multRight;\n this.top *= multTop;\n this.bottom *= multBottom;\n return this;\n }\n }\n\n return this;\n };\n\n Offsets.prototype.clone = function () {\n return new Offsets(this.left, this.right, this.top, this.bottom);\n };\n\n Offsets.prototype.copyFrom = function (obj) {\n this.left = obj.left;\n this.right = obj.right;\n this.top = obj.top;\n this.bottom = obj.bottom;\n };\n\n Offsets.prototype.equals = function (obj) {\n return this.top === obj.top && this.bottom === obj.bottom && this.right === obj.right && this.left === obj.left;\n };\n\n Offsets.prototype.applyConverter = function (converter) {\n this.left = converter(this.left);\n this.right = converter(this.right);\n this.top = converter(this.top);\n this.bottom = converter(this.bottom);\n return this;\n };\n\n return Offsets;\n }();\n\n exports.Offsets = Offsets;\n /***/\n },\n /* 88 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics39 = function extendStatics(d, b) {\n _extendStatics39 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics39(d, b);\n };\n\n return function (d, b) {\n _extendStatics39(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectorPropertyHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangeConnectorPropertyHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorPropertyHistoryItem, _super);\n\n function ChangeConnectorPropertyHistoryItem(connectorKey, propertyName, value) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connectorKey;\n _this.propertyName = propertyName;\n _this.value = value;\n return _this;\n }\n\n ChangeConnectorPropertyHistoryItem.prototype.redo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n this.oldValue = connector.properties[this.propertyName];\n manipulator.changeConnectorProperty(connector, this.propertyName, this.value);\n };\n\n ChangeConnectorPropertyHistoryItem.prototype.undo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.changeConnectorProperty(connector, this.propertyName, this.oldValue);\n };\n\n return ChangeConnectorPropertyHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeConnectorPropertyHistoryItem = ChangeConnectorPropertyHistoryItem;\n /***/\n },\n /* 89 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics40 = function extendStatics(d, b) {\n _extendStatics40 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics40(d, b);\n };\n\n return function (d, b) {\n _extendStatics40(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeStyleHistoryItem = void 0;\n\n var ChangeStyleHistoryItemBase_1 = __webpack_require__(119);\n\n var ChangeStyleHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeStyleHistoryItem, _super);\n\n function ChangeStyleHistoryItem(itemKey, styleProperty, styleValue) {\n return _super.call(this, itemKey, styleProperty, styleValue) || this;\n }\n\n ChangeStyleHistoryItem.prototype.redo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n this.oldStyleValue = item.style[this.styleProperty];\n manipulator.changeStyle(item, this.styleProperty, this.styleValue);\n };\n\n ChangeStyleHistoryItem.prototype.undo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.changeStyle(item, this.styleProperty, this.oldStyleValue);\n };\n\n return ChangeStyleHistoryItem;\n }(ChangeStyleHistoryItemBase_1.ChangeStyleHistoryItemBase);\n\n exports.ChangeStyleHistoryItem = ChangeStyleHistoryItem;\n /***/\n },\n /* 90 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HashSet = void 0;\n\n var HashSet =\n /** @class */\n function () {\n function HashSet(list, getHashCode) {\n var _this = this;\n\n if (list === void 0) {\n list = [];\n }\n\n if (getHashCode === void 0) {\n getHashCode = function getHashCode(item) {\n return item.toString();\n };\n }\n\n this.items = [];\n this.map = {};\n this.getHashCode = getHashCode;\n list.forEach(function (i) {\n return _this.tryPush(i);\n });\n }\n\n HashSet.prototype.tryPush = function (item) {\n var code = this.getHashCode(item);\n\n if (this.map[code] === undefined) {\n this.map[code] = this.items.push(item) - 1;\n return true;\n }\n\n return false;\n };\n\n HashSet.prototype.contains = function (item) {\n return this.map[this.getHashCode(item)] !== undefined;\n };\n\n HashSet.prototype.forEach = function (callback) {\n this.items.forEach(callback);\n };\n\n HashSet.prototype.filter = function (predicate) {\n return this.items.filter(predicate);\n };\n\n HashSet.prototype.list = function () {\n return this.items.slice(0);\n };\n\n HashSet.prototype.item = function (index) {\n return this.items[index];\n };\n\n HashSet.prototype.first = function () {\n return this.items[0];\n };\n\n HashSet.prototype.remove = function (item) {\n var code = this.getHashCode(item);\n var index = this.map[code];\n\n if (typeof index === \"number\") {\n delete this.map[code];\n this.items.splice(index, 1);\n\n for (var i = index; i < this.items.length; i++) {\n this.map[this.getHashCode(this.items[i])]--;\n }\n } else throw \"Item not found\";\n };\n\n Object.defineProperty(HashSet.prototype, \"length\", {\n get: function get() {\n return this.items.length;\n },\n enumerable: false,\n configurable: true\n });\n return HashSet;\n }();\n\n exports.HashSet = HashSet;\n /***/\n },\n /* 91 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ShapeDescriptionManager = void 0;\n\n var ProcessShapeDescription_1 = __webpack_require__(202);\n\n var DecisionShapeDescription_1 = __webpack_require__(203);\n\n var ManualInputShapeDescription_1 = __webpack_require__(204);\n\n var DataShapeDescription_1 = __webpack_require__(205);\n\n var TerminatorShapeDescription_1 = __webpack_require__(206);\n\n var PredefinedProcessShapeDescription_1 = __webpack_require__(207);\n\n var ArrowUpDownShapeDescription_1 = __webpack_require__(208);\n\n var ArrowRightShapeDescription_1 = __webpack_require__(209);\n\n var ArrowUpShapeDescription_1 = __webpack_require__(210);\n\n var CrossShapeDescription_1 = __webpack_require__(211);\n\n var DiamondShapeDescription_1 = __webpack_require__(121);\n\n var EllipseShapeDescription_1 = __webpack_require__(71);\n\n var HeartShapeDescription_1 = __webpack_require__(212);\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var TextShapeDescription_1 = __webpack_require__(122);\n\n var PentagonShapeDescription_1 = __webpack_require__(123);\n\n var HexagonShapeDescription_1 = __webpack_require__(124);\n\n var OctagonShapeDescription_1 = __webpack_require__(213);\n\n var StarShapeDescription_1 = __webpack_require__(214);\n\n var ArrowDownShapeDescription_1 = __webpack_require__(215);\n\n var ArrowLeftRightShapeDescription_1 = __webpack_require__(216);\n\n var ArrowLeftShapeDescription_1 = __webpack_require__(217);\n\n var TriangleShapeDescription_1 = __webpack_require__(125);\n\n var DocumentShapeDescription_1 = __webpack_require__(126);\n\n var MultipleDocumentsShapeDescription_1 = __webpack_require__(218);\n\n var PreparationShapeDescription_1 = __webpack_require__(219);\n\n var HardDiskShapeDescription_1 = __webpack_require__(220);\n\n var DatabaseShapeDescription_1 = __webpack_require__(221);\n\n var InternalStorageShapeDescription_1 = __webpack_require__(222);\n\n var PaperTapeShapeDescription_1 = __webpack_require__(223);\n\n var ManualOperationShapeDescription_1 = __webpack_require__(224);\n\n var DelayShapeDescription_1 = __webpack_require__(225);\n\n var StoredDataShapeDescription_1 = __webpack_require__(226);\n\n var MergeShapeDescription_1 = __webpack_require__(227);\n\n var DisplayShapeDescription_1 = __webpack_require__(228);\n\n var OrShapeDescription_1 = __webpack_require__(229);\n\n var SummingJunctionShapeDescription_1 = __webpack_require__(230);\n\n var CustomShapeDescription_1 = __webpack_require__(127);\n\n var VerticalContainerDescription_1 = __webpack_require__(232);\n\n var HorizontalContainerDescription_1 = __webpack_require__(233);\n\n var CardWithImageOnTopDescription_1 = __webpack_require__(234);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ConnectorShapeDescription_1 = __webpack_require__(236);\n\n var Utils_1 = __webpack_require__(3);\n\n var CardWithHorizontalImageDescription_1 = __webpack_require__(237);\n\n var ShapeDescriptionManager =\n /** @class */\n function () {\n function ShapeDescriptionManager() {\n this.descriptions = {};\n this.descriptionTypes = {};\n this.descriptionCategories = {};\n this.onShapeDecriptionChanged = new Utils_1.EventDispatcher();\n this.register(new TextShapeDescription_1.TextShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new RectangleShapeDescription_1.RectangleShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new EllipseShapeDescription_1.EllipseShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new CrossShapeDescription_1.CrossShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new TriangleShapeDescription_1.TriangleShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new DiamondShapeDescription_1.DiamondShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new HeartShapeDescription_1.HeartShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new PentagonShapeDescription_1.PentagonShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new HexagonShapeDescription_1.HexagonShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new OctagonShapeDescription_1.OctagonShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new StarShapeDescription_1.StarShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new ArrowUpShapeDescription_1.ArrowUpShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new ArrowDownShapeDescription_1.ArrowDownShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new ArrowLeftShapeDescription_1.ArrowLeftShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new ArrowRightShapeDescription_1.ArrowRightShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new ArrowUpDownShapeDescription_1.ArrowUpDownShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new ArrowLeftRightShapeDescription_1.ArrowLeftRightShapeDescription(), ShapeTypes_1.ShapeCategories.General);\n this.register(new ProcessShapeDescription_1.ProcessShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new DecisionShapeDescription_1.DecisionShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new TerminatorShapeDescription_1.TerminatorShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new PredefinedProcessShapeDescription_1.PredefinedProcessShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new DocumentShapeDescription_1.DocumentShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new MultipleDocumentsShapeDescription_1.MultipleDocumentsShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new ManualInputShapeDescription_1.ManualInputShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new PreparationShapeDescription_1.PreparationShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new DataShapeDescription_1.DataShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new DatabaseShapeDescription_1.DatabaseShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new HardDiskShapeDescription_1.HardDiskShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new InternalStorageShapeDescription_1.InternalStorageShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new PaperTapeShapeDescription_1.PaperTapeShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new ManualOperationShapeDescription_1.ManualOperationShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new DelayShapeDescription_1.DelayShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new StoredDataShapeDescription_1.StoredDataShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new DisplayShapeDescription_1.DisplayShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new MergeShapeDescription_1.MergeShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new ConnectorShapeDescription_1.ConnectorShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new OrShapeDescription_1.OrShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new SummingJunctionShapeDescription_1.SummingJunctionShapeDescription(), ShapeTypes_1.ShapeCategories.Flowchart);\n this.register(new CardWithHorizontalImageDescription_1.CardWithImageOnLeftDescription(), ShapeTypes_1.ShapeCategories.OrgChart);\n this.register(new CardWithHorizontalImageDescription_1.CardWithImageOnRightDescription(), ShapeTypes_1.ShapeCategories.OrgChart);\n this.register(new CardWithImageOnTopDescription_1.CardWithImageOnTopDescription(), ShapeTypes_1.ShapeCategories.OrgChart);\n this.register(new VerticalContainerDescription_1.VerticalContainerDescription(), ShapeTypes_1.ShapeCategories.Containers);\n this.register(new HorizontalContainerDescription_1.HorizontalContainerDescription(), ShapeTypes_1.ShapeCategories.Containers);\n }\n\n Object.defineProperty(ShapeDescriptionManager, \"default\", {\n get: function get() {\n return ShapeDescriptionManager.defaultInstance;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ShapeDescriptionManager, \"defaultContainer\", {\n get: function get() {\n return ShapeDescriptionManager.defaultContainerInstance;\n },\n enumerable: false,\n configurable: true\n });\n\n ShapeDescriptionManager.prototype.get = function (type) {\n return this.descriptions[type];\n };\n\n ShapeDescriptionManager.prototype.getTypesByCategory = function (category) {\n return this.descriptionTypes[category] || [];\n };\n\n ShapeDescriptionManager.prototype.getCategoryByType = function (type) {\n return this.descriptionCategories[type];\n };\n\n ShapeDescriptionManager.prototype.getCategoryByDescription = function (description) {\n return this.getCategoryByType(description.key);\n };\n\n ShapeDescriptionManager.prototype.register = function (description, category, type) {\n if (type === void 0) {\n type = description.key;\n }\n\n if (this.descriptions[type] !== undefined) throw Error(\"Description key is duplicated\");\n this.descriptions[type] = description;\n if (!this.descriptionTypes[category]) this.descriptionTypes[category] = [];\n this.descriptionTypes[category].push(type);\n this.descriptionCategories[type] = category;\n description.onChanged.add(this);\n };\n\n ShapeDescriptionManager.prototype.registerCustomShape = function (shape) {\n if (shape.type === undefined) throw Error(\"Custom shape type is not defined\");\n if (this.descriptions[shape.type] !== undefined) throw Error(\"Custom shape type is duplicated\");\n var baseDescription = shape.baseType && this.descriptions[shape.baseType];\n if (shape.minWidth > shape.maxWidth) shape.maxWidth = shape.minWidth;\n if (shape.minHeight > shape.maxHeight) shape.maxHeight = shape.minHeight;\n this.register(new CustomShapeDescription_1.CustomShapeDescription(shape, baseDescription), shape.category || ShapeTypes_1.ShapeCategories.Custom);\n };\n\n ShapeDescriptionManager.prototype.unregisterCustomShape = function (shapeType) {\n var description = this.descriptions[shapeType];\n\n if (description instanceof CustomShapeDescription_1.CustomShapeDescription) {\n description.onChanged.remove(this);\n var category = this.descriptionCategories[shapeType];\n delete this.descriptions[shapeType];\n delete this.descriptionCategories[shapeType];\n var index = this.descriptionTypes[category].indexOf(shapeType);\n this.descriptionTypes[category].splice(index, 1);\n if (this.descriptionTypes[category].length === 0) delete this.descriptionTypes[category];\n }\n };\n\n ShapeDescriptionManager.prototype.unregisterAllCustomShapes = function () {\n var _this = this;\n\n Object.keys(this.descriptions).forEach(function (shapeType) {\n _this.unregisterCustomShape(shapeType);\n });\n };\n\n ShapeDescriptionManager.prototype.notifyShapeDescriptionChanged = function (description) {\n this.onShapeDecriptionChanged.raise1(function (l) {\n return l.notifyShapeDescriptionChanged(description);\n });\n };\n\n ShapeDescriptionManager.defaultInstance = new RectangleShapeDescription_1.RectangleShapeDescription();\n ShapeDescriptionManager.defaultContainerInstance = new VerticalContainerDescription_1.VerticalContainerDescription();\n return ShapeDescriptionManager;\n }();\n\n exports.ShapeDescriptionManager = ShapeDescriptionManager;\n /***/\n },\n /* 92 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics41 = function extendStatics(d, b) {\n _extendStatics41 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics41(d, b);\n };\n\n return function (d, b) {\n _extendStatics41(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ArrowVerticalShapeDescription = exports.ArrowVerticalLineWidthParameterName = exports.ArrowVerticalTriangleHeightParameterName = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeParameters_1 = __webpack_require__(38);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n exports.ArrowVerticalTriangleHeightParameterName = \"th\";\n exports.ArrowVerticalLineWidthParameterName = \"lw\";\n\n var ArrowVerticalShapeDescription =\n /** @class */\n function (_super) {\n __extends(ArrowVerticalShapeDescription, _super);\n\n function ArrowVerticalShapeDescription() {\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 0.375, ShapeDescription_1.ShapeDefaultDimension)) || this;\n }\n\n Object.defineProperty(ArrowVerticalShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n ArrowVerticalShapeDescription.prototype.createParameters = function (parameters) {\n parameters.addRange([new ShapeParameters_1.ShapeParameter(exports.ArrowVerticalTriangleHeightParameterName, Math.sqrt(Math.pow(this.defaultSize.width, 2) - Math.pow(this.defaultSize.width / 2, 2))), new ShapeParameters_1.ShapeParameter(exports.ArrowVerticalLineWidthParameterName, this.defaultSize.width / 3)]);\n };\n\n ArrowVerticalShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\n this.changeParameterValue(parameters, exports.ArrowVerticalTriangleHeightParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.height, p.value));\n });\n this.changeParameterValue(parameters, exports.ArrowVerticalLineWidthParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.width, p.value));\n });\n };\n\n ArrowVerticalShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var delta = (shape.size.width - shape.parameters.get(exports.ArrowVerticalLineWidthParameterName).value) / 2;\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.East) point.x -= delta;else if (side === DiagramItem_1.ConnectionPointSide.West) point.x += delta;\n };\n\n ArrowVerticalShapeDescription.prototype.getTextRectangle = function (shape) {\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\n };\n\n ArrowVerticalShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\n };\n\n return ArrowVerticalShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.ArrowVerticalShapeDescription = ArrowVerticalShapeDescription;\n /***/\n },\n /* 93 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics42 = function extendStatics(d, b) {\n _extendStatics42 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics42(d, b);\n };\n\n return function (d, b) {\n _extendStatics42(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ArrowHorizontalShapeDescription = exports.ArrowVerticalLineHeightParameterName = exports.ArrowVerticalTriangleWidthParameterName = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeParameters_1 = __webpack_require__(38);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n exports.ArrowVerticalTriangleWidthParameterName = \"tw\";\n exports.ArrowVerticalLineHeightParameterName = \"lh\";\n\n var ArrowHorizontalShapeDescription =\n /** @class */\n function (_super) {\n __extends(ArrowHorizontalShapeDescription, _super);\n\n function ArrowHorizontalShapeDescription() {\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.375)) || this;\n }\n\n Object.defineProperty(ArrowHorizontalShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n ArrowHorizontalShapeDescription.prototype.createParameters = function (parameters) {\n parameters.addRange([new ShapeParameters_1.ShapeParameter(exports.ArrowVerticalTriangleWidthParameterName, Math.sqrt(Math.pow(this.defaultSize.height, 2) - Math.pow(this.defaultSize.height / 2, 2))), new ShapeParameters_1.ShapeParameter(exports.ArrowVerticalLineHeightParameterName, this.defaultSize.height / 3)]);\n };\n\n ArrowHorizontalShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\n this.changeParameterValue(parameters, exports.ArrowVerticalTriangleWidthParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.width, p.value));\n });\n this.changeParameterValue(parameters, exports.ArrowVerticalLineHeightParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.height, p.value));\n });\n };\n\n ArrowHorizontalShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var delta = (shape.size.height - shape.parameters.get(exports.ArrowVerticalLineHeightParameterName).value) / 2;\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.North) point.y += delta;else if (side === DiagramItem_1.ConnectionPointSide.South) point.y -= delta;\n };\n\n ArrowHorizontalShapeDescription.prototype.getTextRectangle = function (shape) {\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\n };\n\n ArrowHorizontalShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\n };\n\n return ArrowHorizontalShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.ArrowHorizontalShapeDescription = ArrowHorizontalShapeDescription;\n /***/\n },\n /* 94 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics43 = function extendStatics(d, b) {\n _extendStatics43 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics43(d, b);\n };\n\n return function (d, b) {\n _extendStatics43(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PolygonShapeDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var PolygonShapeDescription =\n /** @class */\n function (_super) {\n __extends(PolygonShapeDescription, _super);\n\n function PolygonShapeDescription(hasDefaultText) {\n var _this = _super.call(this, undefined, hasDefaultText) || this;\n\n _this.defaultSize.height = _this.calculateHeight(ShapeDescription_1.ShapeDefaultDimension);\n return _this;\n }\n\n Object.defineProperty(PolygonShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PolygonShapeDescription.prototype, \"angle\", {\n get: function get() {\n return Math.PI * (this.angleCount - 2) / this.angleCount;\n },\n enumerable: false,\n configurable: true\n });\n return PolygonShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.PolygonShapeDescription = PolygonShapeDescription;\n /***/\n },\n /* 95 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImportUtils = void 0;\n\n var ImportUtils =\n /** @class */\n function () {\n function ImportUtils() {}\n\n ImportUtils.parseJSON = function (json) {\n if (!json || json === \"\") return {};\n\n try {\n return JSON.parse(json);\n } catch (_a) {\n return {};\n }\n };\n\n ImportUtils.createDocument = function (xml) {\n var parser = new DOMParser();\n return parser.parseFromString(xml, \"application/xml\");\n };\n\n return ImportUtils;\n }();\n\n exports.ImportUtils = ImportUtils;\n /***/\n },\n /* 96 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics44 = function extendStatics(d, b) {\n _extendStatics44 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics44(d, b);\n };\n\n return function (d, b) {\n _extendStatics44(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeStyleTextPropertyCommand = void 0;\n\n var ChangeStylePropertyCommandBase_1 = __webpack_require__(136);\n\n var ChangeStyleTextHistoryItem_1 = __webpack_require__(68);\n\n var Style_1 = __webpack_require__(27);\n\n var ChangeStyleTextPropertyCommand =\n /** @class */\n function (_super) {\n __extends(ChangeStyleTextPropertyCommand, _super);\n\n function ChangeStyleTextPropertyCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeStyleTextPropertyCommand.prototype.getValue = function () {\n return this.control.selection.inputPosition.getCurrentTextStylePropertyValue(this.getStyleProperty());\n };\n\n ChangeStyleTextPropertyCommand.prototype.getStyleObj = function (item) {\n return item.styleText;\n };\n\n ChangeStyleTextPropertyCommand.prototype.getDefaultStyleObj = function () {\n return new Style_1.TextStyle();\n };\n\n ChangeStyleTextPropertyCommand.prototype.createHistoryItem = function (item, styleProperty, styleValue) {\n return new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(item.key, styleProperty, styleValue);\n };\n\n ChangeStyleTextPropertyCommand.prototype.updateInputPosition = function (value) {\n this.control.selection.inputPosition.setTextStylePropertyValue(this.getStyleProperty(), value);\n };\n\n return ChangeStyleTextPropertyCommand;\n }(ChangeStylePropertyCommandBase_1.ChangeStylePropertyCommandBase);\n\n exports.ChangeStyleTextPropertyCommand = ChangeStyleTextPropertyCommand;\n /***/\n },\n /* 97 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics45 = function extendStatics(d, b) {\n _extendStatics45 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics45(d, b);\n };\n\n return function (d, b) {\n _extendStatics45(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TreeLayoutBuilder = void 0;\n\n var GraphLayout_1 = __webpack_require__(139);\n\n var Tree_1 = __webpack_require__(252);\n\n var NodeLayout_1 = __webpack_require__(70);\n\n var Utils_1 = __webpack_require__(3);\n\n var point_1 = __webpack_require__(1);\n\n var BaseBuilder_1 = __webpack_require__(140);\n\n var Structures_1 = __webpack_require__(39);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var TreeLayoutBuilder =\n /** @class */\n function (_super) {\n __extends(TreeLayoutBuilder, _super);\n\n function TreeLayoutBuilder() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.nodeToLevel = {};\n _this.levelDepthSize = {};\n return _this;\n }\n\n TreeLayoutBuilder.prototype.build = function () {\n var _this = this;\n\n var layout = new GraphLayout_1.GraphLayout();\n var offset = 0;\n this.graph.getConnectedComponents().forEach(function (c) {\n var tree = Tree_1.Tree.createSpanningTree(c);\n\n var componentLayout = _this.processTree(tree);\n\n layout.extend(_this.setComponentOffset(componentLayout, offset));\n offset += _this.getComponentOffset(componentLayout);\n });\n return layout;\n };\n\n TreeLayoutBuilder.prototype.preProcessTree = function (tree, parents, level) {\n var _this = this;\n\n parents = parents.filter(function (p) {\n return (_this.nodeToLevel[p.key] === undefined ? _this.nodeToLevel[p.key] = level : -1) >= 0;\n });\n\n if (parents.length) {\n var maxDepthSize = this.getMaxDepthSize(parents);\n this.levelDepthSize[level] = maxDepthSize;\n this.preProcessTree(tree, [].concat.apply([], parents.map(function (p) {\n return tree.getChildren(p);\n })), level + 1);\n }\n };\n\n TreeLayoutBuilder.prototype.loadNodes = function (tree, layout, parent) {\n if (!parent) return [layout.addNode(new NodeLayout_1.NodeLayout(tree.root, point_1.Point.zero()))];\n return tree.getChildren(parent.info).map(function (child) {\n return !layout.hasNode(child.key) ? layout.addNode(new NodeLayout_1.NodeLayout(child, point_1.Point.zero())) : undefined;\n }).filter(function (nl) {\n return nl;\n });\n };\n\n TreeLayoutBuilder.prototype.processTree = function (tree) {\n var _this = this;\n\n var layout = new GraphLayout_1.GraphLayout();\n this.preProcessTree(tree, [tree.root], 0);\n this.processLevel(tree, layout, 0, new Utils_1.Range(0), 0);\n\n if (this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Backward) {\n var levelDepths = Object.keys(this.levelDepthSize).map(function (l) {\n return _this.levelDepthSize[l];\n });\n var mostDepthPos_1 = levelDepths.reduce(function (acc, v) {\n return acc + v;\n }, 0) + (levelDepths.length - 1) * this.settings.layerSpacing;\n layout.forEachNode(function (n) {\n return _this.setDepthPos(n, _this.getDepthPos(n) + mostDepthPos_1);\n });\n }\n\n return layout;\n };\n\n TreeLayoutBuilder.prototype.processLevel = function (tree, layout, depthPos, breadthParentRange, level, parent) {\n var _this = this;\n\n var nodes = this.addNodes(tree, layout, level, parent);\n var parentEdges = parent ? this.graph.getAdjacentEdges(parent.key, Structures_1.ConnectionMode.Outgoing) : [];\n var maxDepthSize = this.getDirectionValue(this.levelDepthSize[level]);\n var layerSpacing = this.getDirectionValue(this.settings.layerSpacing);\n var prevRange;\n nodes.forEach(function (node) {\n var range = Utils_1.Range.fromLength(prevRange ? prevRange.to + _this.settings.columnSpacing : breadthParentRange.from, _this.getBreadthNodeSizeCore(node.info));\n node.position = _this.getNodePosition(range.from, depthPos, maxDepthSize).clone().offset(node.info.margin.left, node.info.margin.top);\n\n _this.processLevel(tree, layout, depthPos + maxDepthSize + layerSpacing, range, level + 1, node);\n\n _this.updateEdgeConnections(layout, parentEdges, node);\n\n breadthParentRange.extend(range);\n prevRange = range;\n });\n\n if (parent && nodes.length) {\n var lastChild = nodes[nodes.length - 1];\n var childRange = new Utils_1.Range(this.getBreadthPos(nodes[0]), this.getBreadthPos(lastChild) + this.getBreadthNodeSizeCore(lastChild.info, true));\n this.alignParent(parent, childRange, breadthParentRange);\n }\n };\n\n TreeLayoutBuilder.prototype.addNodes = function (tree, layout, level, parent) {\n var _this = this;\n\n if (level === 0) return [layout.addNode(new NodeLayout_1.NodeLayout(tree.root, point_1.Point.zero()))];\n return tree.getChildren(parent.info).reduce(function (acc, n) {\n if (_this.nodeToLevel[n.key] === level && !layout.hasNode(n.key)) acc.push(layout.addNode(new NodeLayout_1.NodeLayout(n, point_1.Point.zero())));\n return acc;\n }, []);\n };\n\n TreeLayoutBuilder.prototype.getMaxDepthSize = function (nodes) {\n var _this = this;\n\n return nodes.reduce(function (acc, node) {\n return Math.max(acc, _this.getDepthNodeSizeCore(node));\n }, 0); // make it negative\n // return this.settings.direction === LogicalDirectionKind.Forward ? maxSide : -maxSide;\n };\n\n TreeLayoutBuilder.prototype.getNodePosition = function (breadthPos, depthPos, maxDepthSide) {\n if (this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward) return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? new point_1.Point(breadthPos, depthPos) : new point_1.Point(depthPos, breadthPos);\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? new point_1.Point(breadthPos, depthPos + maxDepthSide) : new point_1.Point(depthPos + maxDepthSide, breadthPos);\n };\n\n TreeLayoutBuilder.prototype.updateEdgeConnections = function (layout, edges, node) {\n var _this = this;\n\n edges.filter(function (e) {\n return e.to === node.key;\n }).forEach(function (e) {\n var beginIndex = _this.getBeginEdgeIndex();\n\n var endIndex = _this.getEndEdgeIndex();\n\n layout.addEdge(new NodeLayout_1.EdgeLayout(e.key, beginIndex, endIndex));\n });\n };\n\n TreeLayoutBuilder.prototype.getBeginEdgeIndex = function () {\n if (this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward) return this.isVertical() ? DiagramItem_1.ConnectionPointSide.South : DiagramItem_1.ConnectionPointSide.East;\n return this.isVertical() ? DiagramItem_1.ConnectionPointSide.North : DiagramItem_1.ConnectionPointSide.West;\n };\n\n TreeLayoutBuilder.prototype.getEndEdgeIndex = function () {\n if (this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward) return this.isVertical() ? DiagramItem_1.ConnectionPointSide.North : DiagramItem_1.ConnectionPointSide.West;\n return this.isVertical() ? DiagramItem_1.ConnectionPointSide.South : DiagramItem_1.ConnectionPointSide.East;\n };\n\n TreeLayoutBuilder.prototype.alignParent = function (parent, childRange, availableRange) {\n if (this.settings.alignment === LayoutSettings_1.Alignment.Center) {\n var alignedPosition = childRange.from + childRange.length / 2 - this.getBreadthNodeSizeCore(parent.info, true) / 2;\n\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical) {\n parent.position.x = Math.max(availableRange.from + parent.info.margin.left, alignedPosition);\n parent.position.x = Math.min(availableRange.to - parent.info.size.width - parent.info.margin.right, parent.position.x);\n } else {\n parent.position.y = Math.max(availableRange.from + parent.info.margin.top, alignedPosition);\n parent.position.y = Math.min(availableRange.to - parent.info.size.height - parent.info.margin.bottom, parent.position.y);\n }\n }\n };\n\n TreeLayoutBuilder.prototype.getDepthPos = function (node) {\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? node.position.y : node.position.x;\n };\n\n TreeLayoutBuilder.prototype.getBreadthPos = function (node) {\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? node.position.x : node.position.y;\n };\n\n TreeLayoutBuilder.prototype.setDepthPos = function (node, pos) {\n if (this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical) node.position.y = pos;else node.position.x = pos;\n };\n\n TreeLayoutBuilder.prototype.isVertical = function () {\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical;\n };\n\n return TreeLayoutBuilder;\n }(BaseBuilder_1.LayoutBuilder);\n\n exports.TreeLayoutBuilder = TreeLayoutBuilder;\n /***/\n },\n /* 98 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics46 = function extendStatics(d, b) {\n _extendStatics46 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics46(d, b);\n };\n\n return function (d, b) {\n _extendStatics46(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExportImageCommand = void 0;\n\n var CanvasItemsManager_1 = __webpack_require__(77);\n\n var CanvasExportManager_1 = __webpack_require__(260);\n\n var ExportImportCommandBase_1 = __webpack_require__(56);\n\n var Exporter_1 = __webpack_require__(72);\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var TextMeasurer_1 = __webpack_require__(78);\n\n var DOMManipulator_1 = __webpack_require__(100);\n\n var ImageCache_1 = __webpack_require__(47);\n\n var ExportImageCommand =\n /** @class */\n function (_super) {\n __extends(ExportImageCommand, _super);\n\n function ExportImageCommand(control) {\n var _this = _super.call(this, control) || this;\n\n _this.exporter = new Exporter_1.Exporter();\n return _this;\n }\n\n ExportImageCommand.prototype.isEnabled = function () {\n return !ImageCache_1.ImageCache.instance.hasNonLoadedImages();\n };\n\n ExportImageCommand.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n try {\n var exportManager = this.getExportManager();\n var exportFunc = this.getExportFunc();\n exportFunc(this.control.model.size.clone(), this.control.model.pageColor, exportManager, function (url) {\n parameter(url, _this.getExtension());\n\n _this.tryDispose();\n });\n } catch (e) {\n this.tryDispose();\n throw e;\n }\n\n return true;\n };\n\n ExportImageCommand.prototype.getExportManager = function () {\n var measurer = this.getOrCreateMeasurer();\n var itemsManager = this.control.render && this.control.render.items || this.createItemsManager(measurer);\n return this.exportManager || (this.exportManager = new CanvasExportManager_1.CanvasExportManager(itemsManager.itemsContainer, measurer));\n };\n\n ExportImageCommand.prototype.createItemsManager = function (measurer) {\n this.svgElement = RenderHelper_1.RenderHelper.createSvgElement(document.body, true);\n var canvasManager = new CanvasItemsManager_1.CanvasItemsManager(this.svgElement, 1, new DOMManipulator_1.ExportDOMManipulator(measurer));\n this.control.modelManipulator.onModelChanged.add(canvasManager);\n this.control.modelManipulator.commitItemsCreateChanges();\n return canvasManager;\n };\n\n ExportImageCommand.prototype.tryDispose = function () {\n if (this.svgElement) {\n document.body.removeChild(this.svgElement);\n delete this.svgElement;\n }\n\n if (this.tempMeasurer) {\n this.tempMeasurer.clean();\n this.tempMeasurer = undefined;\n }\n\n this.exportManager = undefined;\n };\n\n ExportImageCommand.prototype.getOrCreateMeasurer = function () {\n return this.control.measurer || (this.tempMeasurer = new TextMeasurer_1.TextMeasurer(document.body));\n };\n\n return ExportImageCommand;\n }(ExportImportCommandBase_1.ExportImportCommandBase);\n\n exports.ExportImageCommand = ExportImageCommand;\n /***/\n },\n /* 99 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ItemChange = exports.ItemChangeType = void 0;\n var ItemChangeType;\n\n (function (ItemChangeType) {\n ItemChangeType[ItemChangeType[\"Create\"] = 0] = \"Create\";\n ItemChangeType[ItemChangeType[\"UpdateProperties\"] = 1] = \"UpdateProperties\";\n ItemChangeType[ItemChangeType[\"UpdateStructure\"] = 2] = \"UpdateStructure\";\n ItemChangeType[ItemChangeType[\"Update\"] = 3] = \"Update\";\n ItemChangeType[ItemChangeType[\"Remove\"] = 4] = \"Remove\";\n ItemChangeType[ItemChangeType[\"UpdateClassName\"] = 5] = \"UpdateClassName\";\n })(ItemChangeType = exports.ItemChangeType || (exports.ItemChangeType = {}));\n\n var ItemChange =\n /** @class */\n function () {\n function ItemChange(item, type, isValid) {\n if (isValid === void 0) {\n isValid = true;\n }\n\n this.item = item;\n this.type = type;\n this.isValid = isValid;\n }\n\n Object.defineProperty(ItemChange.prototype, \"key\", {\n get: function get() {\n return this.item.key;\n },\n enumerable: false,\n configurable: true\n });\n return ItemChange;\n }();\n\n exports.ItemChange = ItemChange;\n /***/\n },\n /* 100 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics47 = function extendStatics(d, b) {\n _extendStatics47 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics47(d, b);\n };\n\n return function (d, b) {\n _extendStatics47(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExportDOMManipulator = exports.DOMManipulator = void 0;\n\n var Diagnostics_1 = __webpack_require__(59);\n\n var RAF_CHANGES_LIMIT = 2000;\n\n var DOMManipulator =\n /** @class */\n function () {\n function DOMManipulator(measurer) {\n this.measurer = measurer;\n this.queue = [];\n }\n\n DOMManipulator.prototype.createElement = function (primitive, parent, sibling) {\n return primitive.createElement(function (el) {\n if (parent != null) if (sibling !== undefined) parent.insertBefore(el, sibling);else parent.appendChild(el);\n });\n };\n\n DOMManipulator.prototype.changeChildrenByPrimitives = function (primitives, parent) {\n var _this = this;\n\n primitives.forEach(function (primitive, index) {\n var element = parent.childNodes[index];\n\n _this.changeByPrimitive(element, primitive);\n });\n };\n\n DOMManipulator.prototype.changeByFunc = function (element, func) {\n this.doChange(element, func);\n };\n\n DOMManipulator.prototype.changeByPrimitive = function (element, primitive) {\n this.doChange(element, primitive);\n };\n\n DOMManipulator.prototype.cancelAnimation = function () {\n if (this.rafId !== undefined) {\n cancelAnimationFrame(this.rafId);\n this.queue = [];\n }\n };\n\n DOMManipulator.prototype.doChange = function (element, action) {\n if (Diagnostics_1.Diagnostics.optimizeUsingRAF) {\n this.queue.push([element, action]);\n this.requestAnimation();\n } else this.doChangeSync(element, action);\n };\n\n DOMManipulator.prototype.doChangeSync = function (element, action) {\n if (typeof action === \"function\") action(element);else action.applyElementProperties(element, this.measurer);\n };\n\n DOMManipulator.prototype.requestAnimation = function () {\n var _this = this;\n\n if (!this.rafRequested) {\n this.rafRequested = true;\n\n var func_1 = function func_1() {\n _this.queue.splice(0, RAF_CHANGES_LIMIT).forEach(function (t) {\n return _this.doChangeSync(t[0], t[1]);\n });\n\n if (_this.queue.length) _this.rafId = requestAnimationFrame(func_1);else {\n _this.rafRequested = false;\n _this.rafId = undefined;\n }\n };\n\n this.rafId = requestAnimationFrame(func_1);\n }\n };\n\n return DOMManipulator;\n }();\n\n exports.DOMManipulator = DOMManipulator;\n\n var ExportDOMManipulator =\n /** @class */\n function (_super) {\n __extends(ExportDOMManipulator, _super);\n\n function ExportDOMManipulator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ExportDOMManipulator.prototype.doChange = function (element, action) {\n this.doChangeSync(element, action);\n };\n\n return ExportDOMManipulator;\n }(DOMManipulator);\n\n exports.ExportDOMManipulator = ExportDOMManipulator;\n /***/\n },\n /* 101 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics48 = function extendStatics(d, b) {\n _extendStatics48 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics48(d, b);\n };\n\n return function (d, b) {\n _extendStatics48(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ClipboardCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ClipboardCommand =\n /** @class */\n function (_super) {\n __extends(ClipboardCommand, _super);\n\n function ClipboardCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ClipboardCommand.prototype.setClipboardData = function (data) {\n if (this.control.render) this.control.render.input.setClipboardData(data);\n ClipboardCommand.clipboardData = data;\n };\n\n ClipboardCommand.prototype.getClipboardData = function (callback) {\n if (this.control.render && this.isPasteSupportedByBrowser()) this.control.render.input.getClipboardData(callback);else callback(ClipboardCommand.clipboardData);\n };\n\n ClipboardCommand.prototype.isPasteSupportedByBrowser = function () {\n return this.control.render && this.control.render.input.isPasteSupportedByBrowser();\n };\n\n return ClipboardCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ClipboardCommand = ClipboardCommand;\n /***/\n },\n /* 102 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics49 = function extendStatics(d, b) {\n _extendStatics49 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics49(d, b);\n };\n\n return function (d, b) {\n _extendStatics49(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeZindexHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangeZindexHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeZindexHistoryItem, _super);\n\n function ChangeZindexHistoryItem(item, zIndex) {\n var _this = _super.call(this) || this;\n\n _this.itemKey = item.key;\n _this.zIndex = zIndex;\n return _this;\n }\n\n ChangeZindexHistoryItem.prototype.redo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n this.oldZIndex = item.zIndex;\n manipulator.changeZIndex(item, this.zIndex);\n };\n\n ChangeZindexHistoryItem.prototype.undo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.changeZIndex(item, this.oldZIndex);\n };\n\n return ChangeZindexHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeZindexHistoryItem = ChangeZindexHistoryItem;\n /***/\n },\n /* 103 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DataLayoutParameters = exports.DataLayoutType = void 0;\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var WideTree_1 = __webpack_require__(97);\n\n var Sugiyama_1 = __webpack_require__(79);\n\n var DataLayoutType;\n\n (function (DataLayoutType) {\n DataLayoutType[DataLayoutType[\"Tree\"] = 0] = \"Tree\";\n DataLayoutType[DataLayoutType[\"Sugiyama\"] = 1] = \"Sugiyama\";\n })(DataLayoutType = exports.DataLayoutType || (exports.DataLayoutType = {}));\n\n var DataLayoutParameters =\n /** @class */\n function () {\n function DataLayoutParameters(sizeSettings, parameter) {\n this.sizeSettings = sizeSettings;\n\n if (parameter) {\n if (parameter.type !== undefined) {\n this.layoutType = parameter.type;\n this.layoutSettings = this.layoutType === DataLayoutType.Sugiyama ? new LayoutSettings_1.LayoutSettings() : new LayoutSettings_1.TreeLayoutSettings();\n }\n\n if (parameter.orientation !== undefined) this.layoutSettings.orientation = parameter.orientation;\n this.skipPointIndices = parameter.skipPointIndices;\n this.autoSizeEnabled = parameter.autoSizeEnabled;\n }\n }\n\n Object.defineProperty(DataLayoutParameters.prototype, \"needAutoLayout\", {\n get: function get() {\n return this.layoutType !== undefined;\n },\n enumerable: false,\n configurable: true\n });\n\n DataLayoutParameters.prototype.getLayoutBuilder = function (graph) {\n return this.layoutType === DataLayoutType.Tree ? new WideTree_1.TreeLayoutBuilder(this.layoutSettings, graph) : new Sugiyama_1.SugiyamaLayoutBuilder(this.layoutSettings, graph);\n };\n\n return DataLayoutParameters;\n }();\n\n exports.DataLayoutParameters = DataLayoutParameters;\n /***/\n },\n /* 104 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics50 = function extendStatics(d, b) {\n _extendStatics50 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics50(d, b);\n };\n\n return function (d, b) {\n _extendStatics50(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EditShapeImageCommandBase = void 0;\n\n var ChangeShapeImageHistoryItem_1 = __webpack_require__(147);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var EditShapeImageCommandBase =\n /** @class */\n function (_super) {\n __extends(EditShapeImageCommandBase, _super);\n\n function EditShapeImageCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n EditShapeImageCommandBase.prototype.isEnabled = function () {\n var selectedShape = this.getSelectedShape();\n return _super.prototype.isEnabled.call(this) && !!selectedShape && !selectedShape.locked && selectedShape.enableImage && selectedShape.allowEditImage;\n };\n\n EditShapeImageCommandBase.prototype.getValue = function () {\n var selectedShape = this.getSelectedShape();\n var imageUrl = selectedShape ? selectedShape.image.exportUrl : undefined;\n return imageUrl;\n };\n\n EditShapeImageCommandBase.prototype.getSelectedShape = function () {\n var selectedShapes = this.control.selection.getSelectedShapes(true);\n return selectedShapes.length === 1 ? selectedShapes[0] : undefined;\n };\n\n EditShapeImageCommandBase.prototype.executeCore = function (state, parameter) {\n this.control.history.beginTransaction();\n var selectedUnlockedShapes = this.control.selection.getSelectedShapes(false);\n this.control.history.addAndRedo(new ChangeShapeImageHistoryItem_1.ChangeShapeImageHistoryItem(selectedUnlockedShapes[0], parameter));\n this.control.history.endTransaction();\n return true;\n };\n\n return EditShapeImageCommandBase;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.EditShapeImageCommandBase = EditShapeImageCommandBase;\n /***/\n },\n /* 105 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToolboxDragEventsHandlerBase = void 0;\n\n var evt_1 = __webpack_require__(60);\n\n var point_1 = __webpack_require__(1);\n\n var Utils_1 = __webpack_require__(17);\n\n var ToolboxDragEventsHandlerBase =\n /** @class */\n function () {\n function ToolboxDragEventsHandlerBase(isTouchUIEnabled) {\n this.isTouchUIEnabled = isTouchUIEnabled;\n }\n\n ToolboxDragEventsHandlerBase.prototype.attach = function (source) {\n if (!source || !source.mainElement) return;\n source.dragEventsHandler = this;\n this.manager = source;\n this.onElementDownHandler = this.onElementDown.bind(this);\n this.onElementUpHandler = this.onElementUp.bind(this);\n this.onDownHandler = this.onDown.bind(this);\n this.onMoveHandler = this.onMove.bind(this);\n this.onUpHandler = this.onUp.bind(this);\n var element = this.manager.mainElement;\n element.addEventListener(this.downEventName, this.onElementDownHandler);\n element.addEventListener(this.upEventName, this.onElementUpHandler);\n element.addEventListener(this.downEventName, this.onDownHandler);\n document.addEventListener(this.moveEventName, this.onMoveHandler);\n document.addEventListener(this.upEventName, this.onUpHandler);\n };\n\n ToolboxDragEventsHandlerBase.prototype.detach = function () {\n var element = this.manager.mainElement;\n element.removeEventListener(this.downEventName, this.onElementDownHandler);\n element.removeEventListener(this.upEventName, this.onElementUpHandler);\n element.removeEventListener(this.downEventName, this.onDownHandler);\n document.removeEventListener(this.moveEventName, this.onMoveHandler);\n document.removeEventListener(this.upEventName, this.onUpHandler);\n this.manager = undefined;\n };\n\n ToolboxDragEventsHandlerBase.prototype.onElementDown = function (evt) {\n this.mouseDownShapeType = this.getDragShapeType(evt);\n };\n\n ToolboxDragEventsHandlerBase.prototype.onElementUp = function (evt) {\n var shapeType = this.getDragShapeType(evt);\n if (shapeType && shapeType === this.mouseDownShapeType) this.manager.raiseNotifyToolboxClick(shapeType);\n this.mouseDownShapeType = undefined;\n };\n\n ToolboxDragEventsHandlerBase.prototype.onDown = function (evt) {\n if (this.manager.shouldPrepareDrag()) {\n var startShapeType = this.getDragShapeType(evt);\n if (startShapeType === undefined) this.manager.finishDragging();else {\n this.manager.prepareDragging(this.createPoint(evt), this.getDragShapeType(evt));\n this.onDownCore(evt);\n }\n }\n };\n\n ToolboxDragEventsHandlerBase.prototype.onMove = function (evt) {\n this.onMoveCore(evt, Utils_1.isLeftButtonPressed(evt));\n };\n\n ToolboxDragEventsHandlerBase.prototype.onUp = function (evt) {\n this.manager.finishDragging();\n };\n\n ToolboxDragEventsHandlerBase.prototype.onMoveCore = function (evt, isLeftButtonPressed) {\n if (isLeftButtonPressed) {\n if (this.manager.shouldContinueDragging()) this.manager.continueDragging(this.createPoint(evt));\n } else this.manager.finishDragging();\n };\n\n ToolboxDragEventsHandlerBase.prototype.getDragShapeType = function (evt) {\n return this.manager.getDragShapeType(this.getEventSource(evt));\n };\n\n ToolboxDragEventsHandlerBase.prototype.createPoint = function (evt) {\n return new point_1.Point(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt));\n };\n\n ToolboxDragEventsHandlerBase.prototype.getEventSource = function (evt) {\n return evt_1.EvtUtils.getEventSource(evt);\n };\n\n return ToolboxDragEventsHandlerBase;\n }();\n\n exports.ToolboxDragEventsHandlerBase = ToolboxDragEventsHandlerBase;\n /***/\n },\n /* 106 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RenderManagerDragEventsHandlerBase = void 0;\n\n var browser_1 = __webpack_require__(19);\n\n var RenderManagerDragEventsHandlerBase =\n /** @class */\n function () {\n function RenderManagerDragEventsHandlerBase() {\n this.isMoveLocked = false;\n this.lockMoveTimer = -1;\n }\n\n RenderManagerDragEventsHandlerBase.prototype.attach = function (source) {\n if (!source || !source.svgElement) return;\n source.dragEventsHandler = this;\n this.manager = source;\n this.isMoveLocked = false;\n this.lockMoveTimer = -1;\n this.onEnterHandler = this.onEnter.bind(this);\n this.onLeaveHandler = this.onLeave.bind(this);\n this.onDownHandler = this.onDown.bind(this);\n this.onMoveHandler = this.onMove.bind(this);\n this.onUpHandler = this.onUp.bind(this);\n var svgElement = this.manager.svgElement;\n svgElement.addEventListener(this.enterEventName, this.onEnterHandler, {\n passive: false\n });\n svgElement.addEventListener(this.leaveEventName, this.onLeaveHandler, {\n passive: false\n });\n svgElement.addEventListener(this.downEventName, this.onDownHandler, {\n passive: false\n });\n document.addEventListener(this.moveEventName, this.onMoveHandler, {\n passive: false\n });\n document.addEventListener(this.upEventName, this.onUpHandler, {\n passive: false\n });\n };\n\n RenderManagerDragEventsHandlerBase.prototype.detach = function () {\n var svgElement = this.manager.svgElement;\n svgElement.removeEventListener(this.enterEventName, this.onEnterHandler);\n svgElement.removeEventListener(this.leaveEventName, this.onLeaveHandler);\n svgElement.removeEventListener(this.downEventName, this.onDownHandler);\n document.removeEventListener(this.moveEventName, this.onMoveHandler);\n document.removeEventListener(this.upEventName, this.onUpHandler);\n this.unLockMove();\n this.manager = undefined;\n };\n\n RenderManagerDragEventsHandlerBase.prototype.onDown = function (evt) {\n this.lockMove();\n this.onDownCore(evt);\n };\n\n RenderManagerDragEventsHandlerBase.prototype.onUp = function (evt) {\n this.lockMove();\n this.onUpCore(evt);\n };\n\n RenderManagerDragEventsHandlerBase.prototype.onMove = function (evt) {\n if (!this.isMoveLocked) {\n this.onMoveCore(evt);\n browser_1.Browser.IE && this.lockMove();\n }\n };\n\n RenderManagerDragEventsHandlerBase.prototype.onEnter = function (evt) {\n this.manager.onMouseEnter(evt);\n };\n\n RenderManagerDragEventsHandlerBase.prototype.onLeave = function (evt) {\n this.manager.onMouseLeave(evt);\n };\n\n RenderManagerDragEventsHandlerBase.prototype.lockMove = function () {\n var _this = this;\n\n this.isMoveLocked = true;\n this.lockMoveTimer = setTimeout(function () {\n _this.isMoveLocked = false;\n _this.lockMoveTimer = -1;\n }, 10); // because chrome raises 2 events on click: buttonDown and move.\n };\n\n RenderManagerDragEventsHandlerBase.prototype.unLockMove = function () {\n if (this.lockMoveTimer !== -1) {\n clearTimeout(this.lockMoveTimer);\n this.lockMoveTimer = -1;\n }\n };\n\n return RenderManagerDragEventsHandlerBase;\n }();\n\n exports.RenderManagerDragEventsHandlerBase = RenderManagerDragEventsHandlerBase;\n /***/\n },\n /* 107 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DiagramModelOperation = exports.Diagnostics = exports.RenderHelper = exports.DiagramLocalizationService = exports.NativeConnector = exports.NativeShape = exports.ShapeType = exports.ColorUtils = exports.PageOrientation = exports.ConnectorPosition = exports.ConnectorLineOption = exports.ConnectorLineEnding = exports.AutoZoomMode = exports.Browser = exports.UnitConverter = exports.EventDispatcher = exports.DataLayoutOrientation = exports.DataLayoutType = exports.ShapeCategories = exports.ShapeTypes = exports.DiagramUnit = exports.default = exports.DiagramControl = exports.DiagramCommand = exports.Point = exports.Size = void 0;\n\n var CommandManager_1 = __webpack_require__(81);\n\n Object.defineProperty(exports, \"DiagramCommand\", {\n enumerable: true,\n get: function get() {\n return CommandManager_1.DiagramCommand;\n }\n });\n\n var Diagram_1 = __webpack_require__(301);\n\n Object.defineProperty(exports, \"DiagramControl\", {\n enumerable: true,\n get: function get() {\n return Diagram_1.DiagramControl;\n }\n });\n Object.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function get() {\n return Diagram_1.DiagramControl;\n }\n });\n\n var size_1 = __webpack_require__(2);\n\n Object.defineProperty(exports, \"Size\", {\n enumerable: true,\n get: function get() {\n return size_1.Size;\n }\n });\n\n var point_1 = __webpack_require__(1);\n\n Object.defineProperty(exports, \"Point\", {\n enumerable: true,\n get: function get() {\n return point_1.Point;\n }\n });\n\n var Utils_1 = __webpack_require__(3);\n\n Object.defineProperty(exports, \"EventDispatcher\", {\n enumerable: true,\n get: function get() {\n return Utils_1.EventDispatcher;\n }\n });\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n Object.defineProperty(exports, \"ShapeTypes\", {\n enumerable: true,\n get: function get() {\n return ShapeTypes_1.ShapeTypes;\n }\n });\n Object.defineProperty(exports, \"ShapeCategories\", {\n enumerable: true,\n get: function get() {\n return ShapeTypes_1.ShapeCategories;\n }\n });\n Object.defineProperty(exports, \"ShapeType\", {\n enumerable: true,\n get: function get() {\n return ShapeTypes_1.ShapeType;\n }\n });\n\n var unit_converter_1 = __webpack_require__(11);\n\n Object.defineProperty(exports, \"UnitConverter\", {\n enumerable: true,\n get: function get() {\n return unit_converter_1.UnitConverter;\n }\n });\n\n var browser_1 = __webpack_require__(19);\n\n Object.defineProperty(exports, \"Browser\", {\n enumerable: true,\n get: function get() {\n return browser_1.Browser;\n }\n });\n\n var Settings_1 = __webpack_require__(28);\n\n Object.defineProperty(exports, \"AutoZoomMode\", {\n enumerable: true,\n get: function get() {\n return Settings_1.AutoZoomMode;\n }\n });\n\n var DataLayoutParameters_1 = __webpack_require__(103);\n\n Object.defineProperty(exports, \"DataLayoutType\", {\n enumerable: true,\n get: function get() {\n return DataLayoutParameters_1.DataLayoutType;\n }\n });\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n Object.defineProperty(exports, \"DataLayoutOrientation\", {\n enumerable: true,\n get: function get() {\n return LayoutSettings_1.DataLayoutOrientation;\n }\n });\n\n __webpack_require__(387);\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n Object.defineProperty(exports, \"ConnectorLineEnding\", {\n enumerable: true,\n get: function get() {\n return ConnectorProperties_1.ConnectorLineEnding;\n }\n });\n Object.defineProperty(exports, \"ConnectorLineOption\", {\n enumerable: true,\n get: function get() {\n return ConnectorProperties_1.ConnectorLineOption;\n }\n });\n\n var color_1 = __webpack_require__(22);\n\n Object.defineProperty(exports, \"ColorUtils\", {\n enumerable: true,\n get: function get() {\n return color_1.ColorUtils;\n }\n });\n\n var Diagnostics_1 = __webpack_require__(59);\n\n Object.defineProperty(exports, \"Diagnostics\", {\n enumerable: true,\n get: function get() {\n return Diagnostics_1.Diagnostics;\n }\n });\n\n var NativeItem_1 = __webpack_require__(84);\n\n Object.defineProperty(exports, \"NativeShape\", {\n enumerable: true,\n get: function get() {\n return NativeItem_1.NativeShape;\n }\n });\n Object.defineProperty(exports, \"NativeConnector\", {\n enumerable: true,\n get: function get() {\n return NativeItem_1.NativeConnector;\n }\n });\n\n var LocalizationService_1 = __webpack_require__(37);\n\n Object.defineProperty(exports, \"DiagramLocalizationService\", {\n enumerable: true,\n get: function get() {\n return LocalizationService_1.DiagramLocalizationService;\n }\n });\n\n var RenderHelper_1 = __webpack_require__(15);\n\n Object.defineProperty(exports, \"RenderHelper\", {\n enumerable: true,\n get: function get() {\n return RenderHelper_1.RenderHelper;\n }\n });\n\n var Enums_1 = __webpack_require__(48);\n\n Object.defineProperty(exports, \"DiagramUnit\", {\n enumerable: true,\n get: function get() {\n return Enums_1.DiagramUnit;\n }\n });\n Object.defineProperty(exports, \"PageOrientation\", {\n enumerable: true,\n get: function get() {\n return Enums_1.PageOrientation;\n }\n });\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n Object.defineProperty(exports, \"DiagramModelOperation\", {\n enumerable: true,\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation;\n }\n });\n\n var Connector_1 = __webpack_require__(6);\n\n Object.defineProperty(exports, \"ConnectorPosition\", {\n enumerable: true,\n get: function get() {\n return Connector_1.ConnectorPosition;\n }\n });\n /***/\n },\n /* 108 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var tslib_1 = __webpack_require__(57);\n\n var mutable_1 = __webpack_require__(167);\n\n var FixedInterval = function (_super) {\n tslib_1.__extends(FixedInterval, _super);\n\n function FixedInterval(start, length) {\n var _this = _super.call(this) || this;\n\n _this.start = start;\n _this.length = length;\n return _this;\n }\n\n Object.defineProperty(FixedInterval.prototype, \"end\", {\n get: function get() {\n return this.start + this.length;\n },\n set: function set(newEnd) {\n this.length = newEnd - this.start;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(FixedInterval.prototype, \"center\", {\n get: function get() {\n return this.start + this.length / 2;\n },\n enumerable: true,\n configurable: true\n });\n\n FixedInterval.prototype.copyFrom = function (obj) {\n this.start = obj.start;\n this.length = obj.length;\n };\n\n FixedInterval.prototype.equals = function (obj) {\n return obj && this.start === obj.start && this.length === obj.length;\n };\n\n FixedInterval.prototype.clone = function () {\n return new FixedInterval(this.start, this.length);\n };\n\n FixedInterval.prototype.makeByStartEnd = function (start, end) {\n return new FixedInterval(start, end - start);\n };\n\n FixedInterval.prototype.makeByStartLength = function (start, length) {\n return new FixedInterval(start, length);\n };\n\n FixedInterval.prototype.makeByLengthEnd = function (length, end) {\n return new FixedInterval(end - length, length);\n };\n\n FixedInterval.fromPositions = function (start, end) {\n return new FixedInterval(start, end - start);\n };\n\n FixedInterval.makeByConstInterval = function (interval) {\n return new FixedInterval(interval.start, interval.length);\n };\n\n FixedInterval.prototype.expand = function (interval) {\n var end = Math.max(interval.end, this.end);\n this.start = Math.min(interval.start, this.start);\n this.end = end;\n return this;\n };\n\n return FixedInterval;\n }(mutable_1.MutableInterval);\n\n exports.FixedInterval = FixedInterval;\n /***/\n },\n /* 109 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var SparseIntervalsIterator = function () {\n function SparseIntervalsIterator(sparseIntervals) {\n this.sparseIntervals = sparseIntervals;\n this.intervalIndex = -1;\n }\n\n Object.defineProperty(SparseIntervalsIterator.prototype, \"isStarted\", {\n get: function get() {\n return !!this.curr;\n },\n enumerable: true,\n configurable: true\n });\n\n SparseIntervalsIterator.prototype.moveNext = function () {\n if (this.curr && this.posInInterval + 1 < this.curr.length) {\n this.posInInterval++;\n this.index++;\n this.initObject();\n return true;\n }\n\n if (this.intervalIndex + 1 < this.sparseIntervals.numIntervals) {\n this.intervalIndex++;\n this.curr = this.sparseIntervals.getInterval(this.intervalIndex);\n if (!this.curr.length) return this.moveNext();\n this.posInInterval = 0;\n this.index = this.curr.start;\n this.initObject();\n return true;\n }\n\n return false;\n };\n\n SparseIntervalsIterator.prototype.movePrev = function () {\n if (this.curr && this.posInInterval - 1 >= this.curr.start) {\n this.posInInterval--;\n this.index--;\n this.initObject();\n return true;\n }\n\n if (!this.isStarted) this.intervalIndex = this.sparseIntervals.numIntervals;\n\n if (this.intervalIndex - 1 >= 0) {\n this.intervalIndex--;\n this.curr = this.sparseIntervals.getInterval(this.intervalIndex);\n this.posInInterval = Math.max(this.curr.length - 1, this.curr.start);\n this.index = this.curr.start;\n this.initObject();\n return true;\n }\n\n return false;\n };\n\n SparseIntervalsIterator.prototype.initObject = function () {};\n\n return SparseIntervalsIterator;\n }();\n\n exports.SparseIntervalsIterator = SparseIntervalsIterator;\n /***/\n },\n /* 110 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics51 = function extendStatics(d, b) {\n _extendStatics51 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics51(d, b);\n };\n\n return function (d, b) {\n _extendStatics51(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FilterPrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var FilterPrimitive =\n /** @class */\n function (_super) {\n __extends(FilterPrimitive, _super);\n\n function FilterPrimitive(id, x, y, width, height) {\n var _this = _super.call(this) || this;\n\n _this.id = id;\n _this.x = x;\n _this.y = y;\n _this.width = width;\n _this.height = height;\n return _this;\n }\n\n FilterPrimitive.prototype.createMainElement = function () {\n var element = document.createElementNS(RenderHelper_1.svgNS, \"filter\");\n element.setAttribute(\"id\", this.id);\n return element;\n };\n\n FilterPrimitive.prototype.applyElementProperties = function (element, measurer) {\n if (this.id) element.setAttribute(\"id\", this.id);\n this.setUnitAttribute(element, \"x\", this.x);\n this.setUnitAttribute(element, \"y\", this.y);\n this.setUnitAttribute(element, \"width\", this.width);\n this.setUnitAttribute(element, \"height\", this.height);\n this.setPositionCorrectionAttribute(element);\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n return FilterPrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.FilterPrimitive = FilterPrimitive;\n /***/\n },\n /* 111 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PrimitiveObject = void 0;\n\n var unit_converter_1 = __webpack_require__(11);\n\n var PrimitiveObject =\n /** @class */\n function () {\n function PrimitiveObject(style) {\n this.style = style;\n }\n\n Object.defineProperty(PrimitiveObject.prototype, \"strokeWidthPx\", {\n get: function get() {\n return this.style ? this.style.strokeWidthPx : 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PrimitiveObject.prototype, \"strokeOffset\", {\n get: function get() {\n return this.style ? this.style.strokeOffset : 0;\n },\n enumerable: false,\n configurable: true\n });\n\n PrimitiveObject.prototype.getUnitVaue = function (value) {\n return typeof value === \"number\" ? unit_converter_1.UnitConverter.twipsToPixels(value).toString() : value;\n };\n\n PrimitiveObject.prototype.setUnitAttribute = function (element, key, value) {\n if (value === undefined || value === null) return;\n element.setAttribute(key, this.getUnitVaue(value));\n };\n\n PrimitiveObject.prototype.setPositionCorrectionAttribute = function (element) {\n var transformAttr = this.strokeWidthPx % 2 === 1 ? \"translate(\" + this.strokeOffset + \", \" + this.strokeOffset + \")\" : \"\";\n element.setAttribute(\"transform\", transformAttr);\n };\n\n return PrimitiveObject;\n }();\n\n exports.PrimitiveObject = PrimitiveObject;\n /***/\n },\n /* 112 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.isColorProperty = void 0;\n var COLOR_PROPERTIES = {\n \"stroke\": true,\n \"fill\": true\n };\n\n function isColorProperty(propName) {\n return COLOR_PROPERTIES[propName];\n }\n\n exports.isColorProperty = isColorProperty;\n /***/\n },\n /* 113 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorPointsCalculatorBase = void 0;\n\n var ConnectorPointsCalculatorBase =\n /** @class */\n function () {\n function ConnectorPointsCalculatorBase(connector) {\n this.connector = connector;\n }\n\n return ConnectorPointsCalculatorBase;\n }();\n\n exports.ConnectorPointsCalculatorBase = ConnectorPointsCalculatorBase;\n /***/\n },\n /* 114 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics52 = function extendStatics(d, b) {\n _extendStatics52 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics52(d, b);\n };\n\n return function (d, b) {\n _extendStatics52(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeShapeParametersHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangeShapeParametersHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeShapeParametersHistoryItem, _super);\n\n function ChangeShapeParametersHistoryItem(shapeKey, parameters) {\n var _this = _super.call(this) || this;\n\n _this.shapeKey = shapeKey;\n _this.parameters = parameters;\n return _this;\n }\n\n ChangeShapeParametersHistoryItem.prototype.redo = function (manipulator) {\n var shape = manipulator.model.findShape(this.shapeKey);\n this.oldParameters = shape.parameters.clone();\n manipulator.changeShapeParameters(shape, this.parameters);\n };\n\n ChangeShapeParametersHistoryItem.prototype.undo = function (manipulator) {\n var shape = manipulator.model.findShape(this.shapeKey);\n manipulator.changeShapeParameters(shape, this.oldParameters);\n };\n\n return ChangeShapeParametersHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeShapeParametersHistoryItem = ChangeShapeParametersHistoryItem;\n /***/\n },\n /* 115 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics53 = function extendStatics(d, b) {\n _extendStatics53 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics53(d, b);\n };\n\n return function (d, b) {\n _extendStatics53(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DeleteConnectorHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var DeleteConnectorHistoryItem =\n /** @class */\n function (_super) {\n __extends(DeleteConnectorHistoryItem, _super);\n\n function DeleteConnectorHistoryItem(connectorKey) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connectorKey;\n return _this;\n }\n\n DeleteConnectorHistoryItem.prototype.redo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n this.connector = connector.clone();\n manipulator.deleteConnector(connector);\n };\n\n DeleteConnectorHistoryItem.prototype.undo = function (manipulator) {\n manipulator.addConnector(this.connector, this.connector.key);\n };\n\n return DeleteConnectorHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.DeleteConnectorHistoryItem = DeleteConnectorHistoryItem;\n /***/\n },\n /* 116 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics54 = function extendStatics(d, b) {\n _extendStatics54 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics54(d, b);\n };\n\n return function (d, b) {\n _extendStatics54(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DeleteShapeHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var DeleteShapeHistoryItem =\n /** @class */\n function (_super) {\n __extends(DeleteShapeHistoryItem, _super);\n\n function DeleteShapeHistoryItem(shapeKey, allowed) {\n if (allowed === void 0) {\n allowed = true;\n }\n\n var _this = _super.call(this) || this;\n\n _this.shapeKey = shapeKey;\n _this.allowed = allowed;\n return _this;\n }\n\n DeleteShapeHistoryItem.prototype.redo = function (manipulator) {\n var shape = manipulator.model.findShape(this.shapeKey);\n this.shape = shape.clone();\n manipulator.deleteShape(shape, this.allowed);\n };\n\n DeleteShapeHistoryItem.prototype.undo = function (manipulator) {\n manipulator.addShape(this.shape, this.shape.key);\n };\n\n return DeleteShapeHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.DeleteShapeHistoryItem = DeleteShapeHistoryItem;\n /***/\n },\n /* 117 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics55 = function extendStatics(d, b) {\n _extendStatics55 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics55(d, b);\n };\n\n return function (d, b) {\n _extendStatics55(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResizeShapeHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ResizeShapeHistoryItem =\n /** @class */\n function (_super) {\n __extends(ResizeShapeHistoryItem, _super);\n\n function ResizeShapeHistoryItem(shapeKey, position, size) {\n var _this = _super.call(this) || this;\n\n _this.shapeKey = shapeKey;\n _this.position = position;\n _this.size = size;\n return _this;\n }\n\n ResizeShapeHistoryItem.prototype.redo = function (manipulator) {\n var shape = manipulator.model.findShape(this.shapeKey);\n this.oldPosition = shape.position.clone();\n this.oldSize = shape.size.clone();\n manipulator.resizeShape(shape, this.position, this.size);\n };\n\n ResizeShapeHistoryItem.prototype.undo = function (manipulator) {\n var shape = manipulator.model.findShape(this.shapeKey);\n manipulator.resizeShape(shape, this.oldPosition, this.oldSize);\n };\n\n return ResizeShapeHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ResizeShapeHistoryItem = ResizeShapeHistoryItem;\n /***/\n },\n /* 118 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics56 = function extendStatics(d, b) {\n _extendStatics56 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics56(d, b);\n };\n\n return function (d, b) {\n _extendStatics56(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeLockedHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangeLockedHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeLockedHistoryItem, _super);\n\n function ChangeLockedHistoryItem(item, locked) {\n var _this = _super.call(this) || this;\n\n _this.itemKey = item.key;\n _this.locked = locked;\n return _this;\n }\n\n ChangeLockedHistoryItem.prototype.redo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n this.oldLocked = item.locked;\n manipulator.changeLocked(item, this.locked);\n };\n\n ChangeLockedHistoryItem.prototype.undo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.changeLocked(item, this.oldLocked);\n };\n\n return ChangeLockedHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeLockedHistoryItem = ChangeLockedHistoryItem;\n /***/\n },\n /* 119 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics57 = function extendStatics(d, b) {\n _extendStatics57 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics57(d, b);\n };\n\n return function (d, b) {\n _extendStatics57(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeStyleHistoryItemBase = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangeStyleHistoryItemBase =\n /** @class */\n function (_super) {\n __extends(ChangeStyleHistoryItemBase, _super);\n\n function ChangeStyleHistoryItemBase(itemKey, styleProperty, styleValue) {\n var _this = _super.call(this) || this;\n\n _this.itemKey = itemKey;\n _this.styleProperty = styleProperty;\n _this.styleValue = styleValue;\n return _this;\n }\n\n ChangeStyleHistoryItemBase.prototype.redo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n this.oldStyleValue = item.style[this.styleProperty];\n manipulator.changeStyle(item, this.styleProperty, this.styleValue);\n };\n\n ChangeStyleHistoryItemBase.prototype.undo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.changeStyle(item, this.styleProperty, this.oldStyleValue);\n };\n\n return ChangeStyleHistoryItemBase;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeStyleHistoryItemBase = ChangeStyleHistoryItemBase;\n /***/\n },\n /* 120 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics58 = function extendStatics(d, b) {\n _extendStatics58 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics58(d, b);\n };\n\n return function (d, b) {\n _extendStatics58(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Importer = void 0;\n\n var Shape_1 = __webpack_require__(13);\n\n var Utils_1 = __webpack_require__(3);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var ShapeDescriptionManager_1 = __webpack_require__(91);\n\n var Connector_1 = __webpack_require__(6);\n\n var ImageInfo_1 = __webpack_require__(51);\n\n var ImporterBase_1 = __webpack_require__(134);\n\n var ImportUtils_1 = __webpack_require__(95);\n\n var color_1 = __webpack_require__(22);\n\n var Importer =\n /** @class */\n function (_super) {\n __extends(Importer, _super);\n\n function Importer(shapeDescriptionManager, json) {\n var _this = _super.call(this, shapeDescriptionManager) || this;\n\n _this.obj = ImportUtils_1.ImportUtils.parseJSON(json);\n return _this;\n }\n\n Importer.prototype.getObject = function () {\n return this.obj;\n };\n\n Importer.prototype.getPageObject = function (obj) {\n return obj[\"page\"];\n };\n\n Importer.prototype.getShapeObjects = function (obj) {\n return obj[\"shapes\"];\n };\n\n Importer.prototype.getConnectorObjects = function (obj) {\n return obj[\"connectors\"];\n };\n\n Importer.prototype.importPageSettings = function (model, pageObj) {\n if (!pageObj) return;\n this.assert(pageObj[\"width\"], \"number\");\n this.assert(pageObj[\"height\"], \"number\");\n if (typeof pageObj[\"width\"] === \"number\") model.size.width = pageObj[\"width\"];\n if (typeof pageObj[\"height\"] === \"number\") model.size.height = pageObj[\"height\"];\n if (typeof pageObj[\"pageColor\"] === \"number\") model.pageColor = pageObj[\"pageColor\"];else if (typeof pageObj[\"pageColor\"] === \"string\") model.pageColor = color_1.ColorUtils.fromString(pageObj[\"pageColor\"]);\n if (typeof pageObj[\"pageWidth\"] === \"number\") model.pageSize.width = pageObj[\"pageWidth\"];\n if (typeof pageObj[\"pageHeight\"] === \"number\") model.pageSize.height = pageObj[\"pageHeight\"];\n if (typeof pageObj[\"pageLandscape\"] === \"boolean\") model.pageLandscape = pageObj[\"pageLandscape\"];\n };\n\n Importer.prototype.importShape = function (shapeObj) {\n this.assert(shapeObj[\"key\"], \"string\");\n this.assert(shapeObj[\"x\"], \"number\");\n this.assert(shapeObj[\"y\"], \"number\");\n this.assert(shapeObj[\"type\"], \"string\");\n var shapeType = shapeObj[\"type\"];\n var description = this.shapeDescriptionManager.get(shapeType);\n var position = new point_1.Point(shapeObj[\"x\"], shapeObj[\"y\"]);\n var shape = new Shape_1.Shape(description || ShapeDescriptionManager_1.ShapeDescriptionManager.default, position);\n shape.key = shapeObj[\"key\"];\n if (typeof shapeObj[\"dataKey\"] === \"string\" || typeof shapeObj[\"dataKey\"] === \"number\") shape.dataKey = shapeObj[\"dataKey\"];\n if (typeof shapeObj[\"customData\"] === \"object\") shape.customData = Utils_1.ObjectUtils.cloneObject(shapeObj[\"customData\"]);\n if (typeof shapeObj[\"locked\"] === \"boolean\") shape.locked = shapeObj[\"locked\"];\n if (typeof shapeObj[\"width\"] === \"number\") shape.size.width = shapeObj[\"width\"];\n if (typeof shapeObj[\"height\"] === \"number\") shape.size.height = shapeObj[\"height\"];\n if (typeof shapeObj[\"text\"] === \"string\") shape.text = shapeObj[\"text\"];\n if (typeof shapeObj[\"imageUrl\"] === \"string\") shape.image = new ImageInfo_1.ImageInfo(shapeObj[\"imageUrl\"]);\n\n if (shapeObj[\"parameters\"]) {\n shape.parameters.fromObject(shapeObj[\"parameters\"]);\n shape.description.normalizeParameters(shape, shape.parameters);\n }\n\n if (shapeObj[\"style\"]) shape.style.fromObject(shapeObj[\"style\"]);\n if (shapeObj[\"styleText\"]) shape.styleText.fromObject(shapeObj[\"styleText\"]);\n if (typeof shapeObj[\"zIndex\"] === \"number\") shape.zIndex = shapeObj[\"zIndex\"];\n if (Array.isArray(shapeObj[\"childKeys\"])) shape[\"childKeys\"] = shapeObj[\"childKeys\"].slice();\n if (typeof shapeObj[\"expanded\"] === \"boolean\") shape.expanded = shapeObj[\"expanded\"];\n if (typeof shapeObj[\"expandedWidth\"] === \"number\" && typeof shapeObj[\"expandedHeight\"] === \"number\") shape.expandedSize = new size_1.Size(shapeObj[\"expandedWidth\"], shapeObj[\"expandedHeight\"]);\n return shape;\n };\n\n Importer.prototype.importShapeChildren = function (shapeObj, shape) {\n return [];\n };\n\n Importer.prototype.importConnector = function (connectorObj) {\n var _this = this;\n\n this.assert(connectorObj[\"key\"], \"string\");\n if (!Array.isArray(connectorObj[\"points\"])) throw Error(\"Invalid Format\");\n var points = connectorObj[\"points\"].map(function (pt) {\n _this.assert(pt[\"x\"], \"number\");\n\n _this.assert(pt[\"y\"], \"number\");\n\n return new point_1.Point(pt[\"x\"], pt[\"y\"]);\n });\n var connector = new Connector_1.Connector(points);\n connector.key = connectorObj[\"key\"];\n if (typeof connectorObj[\"dataKey\"] === \"string\" || typeof connectorObj[\"dataKey\"] === \"number\") connector.dataKey = connectorObj[\"dataKey\"];\n if (typeof connectorObj[\"customData\"] === \"object\") connector.customData = Utils_1.ObjectUtils.cloneObject(connectorObj[\"customData\"]);\n if (typeof connectorObj[\"locked\"] === \"boolean\") connector.locked = connectorObj[\"locked\"];\n connector.endConnectionPointIndex = typeof connectorObj[\"endConnectionPointIndex\"] === \"number\" ? connectorObj[\"endConnectionPointIndex\"] : -1;\n connector.beginConnectionPointIndex = typeof connectorObj[\"beginConnectionPointIndex\"] === \"number\" ? connectorObj[\"beginConnectionPointIndex\"] : -1;\n if (connectorObj[\"endItemKey\"] !== undefined) this.assert(connectorObj[\"endItemKey\"], \"string\");\n if (connectorObj[\"beginItemKey\"] !== undefined) this.assert(connectorObj[\"beginItemKey\"], \"string\");\n connector[\"endItemKey\"] = connectorObj[\"endItemKey\"];\n connector[\"beginItemKey\"] = connectorObj[\"beginItemKey\"];\n if (connectorObj[\"texts\"]) connector.texts.fromObject(connectorObj[\"texts\"]);\n if (connectorObj[\"properties\"]) connector.properties.fromObject(connectorObj[\"properties\"]);\n if (connectorObj[\"style\"]) connector.style.fromObject(connectorObj[\"style\"]);\n if (connectorObj[\"styleText\"]) connector.styleText.fromObject(connectorObj[\"styleText\"]);\n if (typeof connectorObj[\"zIndex\"] === \"number\") connector.zIndex = connectorObj[\"zIndex\"];\n return connector;\n };\n\n return Importer;\n }(ImporterBase_1.ImporterBase);\n\n exports.Importer = Importer;\n /***/\n },\n /* 121 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics59 = function extendStatics(d, b) {\n _extendStatics59 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics59(d, b);\n };\n\n return function (d, b) {\n _extendStatics59(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DiamondShapeDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var DiamondShapeDescription =\n /** @class */\n function (_super) {\n __extends(DiamondShapeDescription, _super);\n\n function DiamondShapeDescription(defaultSize, hasDefaultText) {\n if (defaultSize === void 0) {\n defaultSize = ShapeDescription_1.ShapeDefaultSize.clone();\n }\n\n return _super.call(this, defaultSize, hasDefaultText) || this;\n }\n\n Object.defineProperty(DiamondShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Diamond;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiamondShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n DiamondShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom;\n var _a = rect.center,\n cx = _a.x,\n cy = _a.y;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy), new PathPrimitive_1.PathPrimitiveLineToCommand(cx, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, cy), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n DiamondShapeDescription.prototype.getTextRectangle = function (shape) {\n return shape.rectangle.clone().inflate(-shape.size.width / 4, -shape.size.height / 4);\n };\n\n DiamondShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return textSize.clone().multiply(2, 2);\n };\n\n return DiamondShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.DiamondShapeDescription = DiamondShapeDescription;\n /***/\n },\n /* 122 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics60 = function extendStatics(d, b) {\n _extendStatics60 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics60(d, b);\n };\n\n return function (d, b) {\n _extendStatics60(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TextShapeDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ClipPathPrimitive_1 = __webpack_require__(55);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var Utils_1 = __webpack_require__(17);\n\n var TextShapeDescription =\n /** @class */\n function (_super) {\n __extends(TextShapeDescription, _super);\n\n function TextShapeDescription() {\n var _this = _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.5), true) || this;\n\n _this.textClipPathId = Utils_1.RenderUtils.generateSvgElementId(\"clipRect\");\n return _this;\n }\n\n Object.defineProperty(TextShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Text;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TextShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n TextShapeDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\n if (forToolbox) {\n var _a = shape.rectangle,\n left = _a.x,\n top_1 = _a.y,\n width = _a.width,\n height = _a.height;\n return [new ClipPathPrimitive_1.ClipPathPrimitive(this.getTextClipPathId(forToolbox), [new RectaglePrimitive_1.RectanglePrimitive(left, top_1, width, height)])];\n }\n\n return [];\n };\n\n TextShapeDescription.prototype.getTextClipPathId = function (forToolbox) {\n return forToolbox ? this.textClipPathId : undefined;\n };\n\n TextShapeDescription.prototype.getSizeByTextRectangle = function (textSize) {\n return textSize;\n };\n\n TextShapeDescription.prototype.getSizeByText = function (textSize, shape) {\n return textSize.clone();\n };\n\n TextShapeDescription.prototype.getTextRectangle = function (shape) {\n return shape.rectangle;\n };\n\n return TextShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.TextShapeDescription = TextShapeDescription;\n /***/\n },\n /* 123 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics61 = function extendStatics(d, b) {\n _extendStatics61 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics61(d, b);\n };\n\n return function (d, b) {\n _extendStatics61(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PentagonShapeDescription = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PolygonShapeDescription_1 = __webpack_require__(94);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var Utils_1 = __webpack_require__(3);\n\n var rectangle_1 = __webpack_require__(12);\n\n var PentagonShapeDescription =\n /** @class */\n function (_super) {\n __extends(PentagonShapeDescription, _super);\n\n function PentagonShapeDescription(hasDefaultText) {\n var _this = _super.call(this, hasDefaultText) || this;\n\n _this.defaultRatio = _this.defaultSize.height / _this.defaultSize.width;\n return _this;\n }\n\n Object.defineProperty(PentagonShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Pentagon;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PentagonShapeDescription.prototype, \"angleCount\", {\n get: function get() {\n return 5;\n },\n enumerable: false,\n configurable: true\n });\n\n PentagonShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width,\n height = rect.height;\n var cx = rect.center.x;\n var ratio = height / width / this.defaultRatio;\n var angle = Math.PI - this.angle;\n var py = width / 2 * Math.tan(angle / 2) * ratio;\n var y = top + py;\n var px = (height - py) / Math.tan(angle) / ratio;\n var x1 = left + px;\n var x2 = right - px;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, y), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, y), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n PentagonShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var side = shape.getConnectionPointSide(point);\n\n if (side === DiagramItem_1.ConnectionPointSide.East || side === DiagramItem_1.ConnectionPointSide.West) {\n var rect = shape.rectangle;\n var top_1 = rect.y,\n width = rect.width,\n height = rect.height;\n var ratio = height / width / this.defaultRatio;\n var angle = Math.PI - this.angle;\n var py = width / 2 * Math.tan(angle / 2) * ratio;\n var y = top_1 + py;\n if (side === DiagramItem_1.ConnectionPointSide.East) point.y = y;else if (side === DiagramItem_1.ConnectionPointSide.West) point.y = y;\n }\n };\n\n PentagonShapeDescription.prototype.calculateHeight = function (width) {\n var angle = Math.PI - this.angle;\n var h1 = width / 2 * Math.tan(angle / 2);\n var side = width / 2 / Math.cos(angle / 2);\n var h2 = side * Math.sin(angle);\n return h1 + h2;\n };\n\n PentagonShapeDescription.prototype.getTextRectangle = function (shape) {\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\n };\n\n PentagonShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\n };\n\n return PentagonShapeDescription;\n }(PolygonShapeDescription_1.PolygonShapeDescription);\n\n exports.PentagonShapeDescription = PentagonShapeDescription;\n /***/\n },\n /* 124 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics62 = function extendStatics(d, b) {\n _extendStatics62 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics62(d, b);\n };\n\n return function (d, b) {\n _extendStatics62(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HexagonShapeDescription = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PolygonShapeDescription_1 = __webpack_require__(94);\n\n var Utils_1 = __webpack_require__(3);\n\n var rectangle_1 = __webpack_require__(12);\n\n var HexagonShapeDescription =\n /** @class */\n function (_super) {\n __extends(HexagonShapeDescription, _super);\n\n function HexagonShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(HexagonShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Hexagon;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HexagonShapeDescription.prototype, \"angleCount\", {\n get: function get() {\n return 6;\n },\n enumerable: false,\n configurable: true\n });\n\n HexagonShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width;\n var cy = rect.center.y;\n var angle = Math.PI - this.angle;\n var sideX = width / (1 + 2 * Math.cos(angle));\n var x1 = left + (width - sideX) / 2;\n var x2 = x1 + sideX;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, cy), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n HexagonShapeDescription.prototype.calculateHeight = function (width) {\n var angle = Math.PI - this.angle;\n var sideX = width / (1 + 2 * Math.cos(angle));\n return 2 * sideX * Math.sin(angle);\n };\n\n HexagonShapeDescription.prototype.getTextRectangle = function (shape) {\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\n };\n\n HexagonShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\n };\n\n return HexagonShapeDescription;\n }(PolygonShapeDescription_1.PolygonShapeDescription);\n\n exports.HexagonShapeDescription = HexagonShapeDescription;\n /***/\n },\n /* 125 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics63 = function extendStatics(d, b) {\n _extendStatics63 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics63(d, b);\n };\n\n return function (d, b) {\n _extendStatics63(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TriangleShapeDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ConnectionPoint_1 = __webpack_require__(46);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var rectangle_1 = __webpack_require__(12);\n\n var size_1 = __webpack_require__(2);\n\n var TriangleShapeDescription =\n /** @class */\n function (_super) {\n __extends(TriangleShapeDescription, _super);\n\n function TriangleShapeDescription(hasDefaultText) {\n var _this = _super.call(this, undefined, hasDefaultText) || this;\n\n _this.defaultSize.height = _this.calculateHeight(ShapeDescription_1.ShapeDefaultDimension);\n return _this;\n }\n\n Object.defineProperty(TriangleShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Triangle;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TriangleShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n TriangleShapeDescription.prototype.createConnectionPoints = function () {\n return [new ConnectionPoint_1.ConnectionPoint(0.5, 0, DiagramItem_1.ConnectionPointSide.North), new ConnectionPoint_1.ConnectionPoint(0.75, 0.5, DiagramItem_1.ConnectionPointSide.East), new ConnectionPoint_1.ConnectionPoint(0.5, 1, DiagramItem_1.ConnectionPointSide.South), new ConnectionPoint_1.ConnectionPoint(0.25, 0.5, DiagramItem_1.ConnectionPointSide.West)];\n };\n\n TriangleShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.center.x, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, bottom), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n TriangleShapeDescription.prototype.calculateHeight = function (width) {\n return Math.sqrt(Math.pow(width, 2) - Math.pow(width / 2, 2));\n };\n\n TriangleShapeDescription.prototype.getTextRectangle = function (shape) {\n return new rectangle_1.Rectangle(shape.position.x + shape.size.width / 4, shape.position.y + shape.size.height / 2, shape.size.width / 2, shape.size.height / 2 - ShapeDescription_1.ShapeTextPadding).nonNegativeSize();\n };\n\n TriangleShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return new size_1.Size(textSize.width * 2, textSize.height * 2 + ShapeDescription_1.ShapeTextPadding);\n };\n\n return TriangleShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.TriangleShapeDescription = TriangleShapeDescription;\n /***/\n },\n /* 126 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics64 = function extendStatics(d, b) {\n _extendStatics64 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics64(d, b);\n };\n\n return function (d, b) {\n _extendStatics64(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DocumentShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var DocumentShapeDescription =\n /** @class */\n function (_super) {\n __extends(DocumentShapeDescription, _super);\n\n function DocumentShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(DocumentShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Document;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DocumentShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n DocumentShapeDescription.prototype.createShapePrimitives = function (shape) {\n return this.createDocumentPrimitives(shape.rectangle, shape.style);\n };\n\n DocumentShapeDescription.prototype.createDocumentPrimitives = function (rect, style) {\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width,\n height = rect.height;\n var cx = rect.center.x;\n var dy = height * DocumentShapeDescription.curveOffsetRatio;\n var primitives = [];\n return primitives.concat([new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right - width * 0.25, bottom - 2 * dy, cx, bottom - dy), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left + width * 0.25, bottom + dy, left, bottom - dy), new PathPrimitive_1.PathPrimitiveClosePathCommand()], style)]);\n };\n\n DocumentShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.South) point.y -= shape.size.height * DocumentShapeDescription.curveOffsetRatio;\n };\n\n DocumentShapeDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n return rect.clone().resize(0, -rect.height * DocumentShapeDescription.curveOffsetRatio);\n };\n\n DocumentShapeDescription.curveOffsetRatio = 0.1;\n return DocumentShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.DocumentShapeDescription = DocumentShapeDescription;\n /***/\n },\n /* 127 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics65 = function extendStatics(d, b) {\n _extendStatics65 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics65(d, b);\n };\n\n return function (d, b) {\n _extendStatics65(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CustomShapeDescription = void 0;\n\n var ImagePrimitive_1 = __webpack_require__(128);\n\n var rectangle_1 = __webpack_require__(12);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var ConnectionPoint_1 = __webpack_require__(46);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ShapeWithImageDescription_1 = __webpack_require__(129);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var ImageInfo_1 = __webpack_require__(51);\n\n var ImageCache_1 = __webpack_require__(47);\n\n var ImageLoader_1 = __webpack_require__(131);\n\n var SvgElementPrimitive_1 = __webpack_require__(231);\n\n var CustomShapeDescription =\n /** @class */\n function (_super) {\n __extends(CustomShapeDescription, _super);\n\n function CustomShapeDescription(properties, baseDescription) {\n var _this = _super.call(this, new size_1.Size(properties.defaultWidth || baseDescription && baseDescription.defaultSize.width || ShapeDescription_1.ShapeDefaultDimension, properties.defaultHeight || baseDescription && baseDescription.defaultSize.height || ShapeDescription_1.ShapeDefaultDimension)) || this;\n\n _this.properties = properties;\n _this.baseDescription = baseDescription;\n _this.imageLoader = new ImageLoader_1.ImageLoader(_this.updateSvgImage.bind(_this));\n _this.defaultText = properties.defaultText !== undefined ? properties.defaultText : baseDescription && baseDescription.getDefaultText();\n _this.defaultImageUrl = properties.defaultImageUrl || baseDescription && baseDescription.getDefaultImageUrl();\n _this.title = properties.title || baseDescription && baseDescription.getTitle() || _this.defaultText || \"\";\n _this.connectionPoints = _this.createConnectionPoints();\n\n if (properties.svgUrl) {\n _this.svgImage = new ImageInfo_1.ImageInfo(properties.svgUrl);\n var cachedImage = ImageCache_1.ImageCache.instance.createUnloadedInfoByShapeImageInfo(_this.svgImage);\n\n _this.imageLoader.load(cachedImage);\n }\n\n if (properties.svgToolboxUrl) {\n _this.svgToolboxImage = new ImageInfo_1.ImageInfo(properties.svgToolboxUrl);\n var cachedImage = ImageCache_1.ImageCache.instance.createUnloadedInfoByShapeImageInfo(_this.svgToolboxImage);\n\n _this.imageLoader.load(cachedImage);\n }\n\n return _this;\n }\n\n Object.defineProperty(CustomShapeDescription.prototype, \"key\", {\n get: function get() {\n return this.properties.type;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"allowEditText\", {\n get: function get() {\n return this.properties.allowEditText !== false;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"allowEditImage\", {\n get: function get() {\n return this.baseDescription ? this.baseDescription.allowEditImage : this.properties.allowEditImage === true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"enableChildren\", {\n get: function get() {\n return this.baseDescription && this.baseDescription.enableChildren;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"hasTemplate\", {\n get: function get() {\n return !!this.properties.createTemplate;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"minWidth\", {\n get: function get() {\n return this.properties.minWidth || this.baseDescription && this.baseDescription.minWidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"minHeight\", {\n get: function get() {\n return this.properties.minHeight || this.baseDescription && this.baseDescription.minHeight;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"maxWidth\", {\n get: function get() {\n return this.properties.maxWidth || this.baseDescription && this.baseDescription.maxWidth;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"maxHeight\", {\n get: function get() {\n return this.properties.maxHeight || this.baseDescription && this.baseDescription.maxHeight;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return this.properties.keepRatioOnAutoSize;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CustomShapeDescription.prototype, \"toolboxSize\", {\n get: function get() {\n if (this.properties.toolboxWidthToHeightRatio) return new size_1.Size(this.defaultSize.width, this.defaultSize.width / this.properties.toolboxWidthToHeightRatio);\n return this.defaultSize;\n },\n enumerable: false,\n configurable: true\n });\n\n CustomShapeDescription.prototype.getTextAngle = function () {\n return this.baseDescription && this.baseDescription.getTextAngle() || _super.prototype.getTextAngle.call(this);\n };\n\n CustomShapeDescription.prototype.getTitle = function () {\n return this.title !== undefined ? this.title : _super.prototype.getTitle.call(this);\n };\n\n CustomShapeDescription.prototype.getDefaultText = function () {\n return this.defaultText !== undefined ? this.defaultText : _super.prototype.getDefaultText.call(this);\n };\n\n CustomShapeDescription.prototype.getDefaultImageUrl = function () {\n return this.defaultImageUrl !== undefined ? this.defaultImageUrl : _super.prototype.getDefaultImageUrl.call(this);\n };\n\n CustomShapeDescription.prototype.allowResizeHorizontally = function (shape) {\n if (this.properties.allowResize === false) return false;\n if (this.baseDescription) return this.baseDescription.allowResizeHorizontally(shape);\n return _super.prototype.allowResizeHorizontally.call(this, shape);\n };\n\n CustomShapeDescription.prototype.allowResizeVertically = function (shape) {\n if (this.properties.allowResize === false) return false;\n if (this.baseDescription) return this.baseDescription.allowResizeVertically(shape);\n return _super.prototype.allowResizeVertically.call(this, shape);\n };\n\n CustomShapeDescription.prototype.createConnectionPoints = function () {\n if (this.properties && this.properties.connectionPoints && this.properties.connectionPoints.length) return this.properties.connectionPoints.map(function (ptObj) {\n if (ptObj && typeof ptObj[\"x\"] === \"number\" && typeof ptObj[\"y\"] === \"number\") {\n var side = typeof ptObj[\"side\"] === \"number\" ? ptObj[\"side\"] : DiagramItem_1.ConnectionPointSide.Undefined;\n return new ConnectionPoint_1.ConnectionPoint(ptObj[\"x\"], ptObj[\"y\"], side);\n }\n }).filter(function (pt) {\n return pt;\n });\n return _super.prototype.createConnectionPoints.call(this);\n };\n\n CustomShapeDescription.prototype.createImagePrimitives = function (shape, forToolbox) {\n if (this.baseDescription) return this.baseDescription.createImagePrimitives(shape, forToolbox);\n return _super.prototype.createImagePrimitives.call(this, shape, forToolbox);\n };\n\n CustomShapeDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\n var primitives = [];\n var _a = shape.rectangle,\n left = _a.x,\n top = _a.y,\n width = _a.width,\n height = _a.height;\n if (this.baseDescription) primitives = this.baseDescription.createShapePrimitives(shape, forToolbox);else {\n var svgImage = forToolbox && this.svgToolboxImage ? this.svgToolboxImage : this.svgImage;\n\n if (svgImage) {\n var svgLeft = left + (this.properties.svgLeft && !forToolbox ? this.properties.svgLeft * width : 0);\n var svgTop = top + (this.properties.svgTop && !forToolbox ? this.properties.svgTop * height : 0);\n var svgWidth = this.properties.svgWidth && !forToolbox ? this.properties.svgWidth * width : width;\n var svgHeight = this.properties.svgHeight && !forToolbox ? this.properties.svgHeight * height : height;\n primitives = primitives.concat([new ImagePrimitive_1.ImagePrimitive(svgLeft, svgTop, svgWidth, svgHeight, svgImage.exportUrl)]);\n }\n }\n var createTemplate = forToolbox && this.properties.createToolboxTemplate || this.properties.createTemplate;\n\n if (createTemplate) {\n var templateLeft = left + (this.properties.templateLeft && !forToolbox ? this.properties.templateLeft * width : 0);\n var templateTop = top + (this.properties.templateTop && !forToolbox ? this.properties.templateTop * height : 0);\n var templateWidth = this.properties.templateWidth && !forToolbox ? this.properties.templateWidth * width : width;\n var templateHeight = this.properties.templateHeight && !forToolbox ? this.properties.templateHeight * height : height;\n var nativeShape = this.properties.apiController ? this.properties.apiController.createNativeShape(shape) : shape.toNative();\n primitives = primitives.concat([new SvgElementPrimitive_1.SvgElementPrimitive(templateLeft, templateTop, templateWidth, templateHeight, createTemplate, this.properties.destroyTemplate, nativeShape)]);\n }\n\n return primitives;\n };\n\n CustomShapeDescription.prototype.createParameters = function (parameters) {\n if (this.baseDescription) return this.baseDescription.createParameters(parameters);else return _super.prototype.createParameters.call(this, parameters);\n };\n\n CustomShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\n if (this.baseDescription) this.baseDescription.normalizeParameters(shape, parameters);else _super.prototype.normalizeParameters.call(this, shape, parameters);\n };\n\n CustomShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n if (this.baseDescription) this.baseDescription.modifyParameters(shape, parameters, deltaX, deltaY);else _super.prototype.modifyParameters.call(this, shape, parameters, deltaX, deltaY);\n };\n\n CustomShapeDescription.prototype.getParameterPoints = function (shape) {\n if (this.baseDescription) return this.baseDescription.getParameterPoints(shape);else return _super.prototype.getParameterPoints.call(this, shape);\n };\n\n CustomShapeDescription.prototype.getTextRectangle = function (shape) {\n if (this.baseDescription) return this.baseDescription.getTextRectangle(shape);else {\n var _a = shape.rectangle,\n left = _a.x,\n top_1 = _a.y,\n width = _a.width,\n height = _a.height;\n return new rectangle_1.Rectangle(left + (this.properties.textLeft ? this.properties.textLeft * width : 0), top_1 + (this.properties.textTop ? this.properties.textTop * height : 0), this.properties.textWidth ? this.properties.textWidth * width : width, this.properties.textHeight ? this.properties.textHeight * height : height);\n }\n };\n\n CustomShapeDescription.prototype.getSizeByText = function (textSize, shape) {\n if (this.baseDescription) return this.baseDescription.getSizeByText(textSize, shape);else {\n var textWidth = this.properties.textWidth;\n if (!textWidth) textWidth = 1;\n var textHeight = this.properties.textHeight;\n if (!textHeight) textHeight = 1;\n return new size_1.Size(textSize.width / textWidth, textSize.height / textHeight);\n }\n };\n\n CustomShapeDescription.prototype.getImageSize = function (shapeSize, includeMargins, forToolbox) {\n if (this.baseDescription) {\n if (this.baseDescription instanceof ShapeWithImageDescription_1.ShapeWithImageDescription) return this.baseDescription.getImageSize(shapeSize, includeMargins, forToolbox);\n return size_1.Size.empty();\n }\n\n return new size_1.Size(this.properties.imageWidth ? this.properties.imageWidth * shapeSize.width : shapeSize.width, this.properties.imageHeight ? this.properties.imageHeight * shapeSize.height : shapeSize.height).nonNegativeSize();\n };\n\n CustomShapeDescription.prototype.getImagePlacementRectangle = function (rect, forToolbox) {\n if (this.baseDescription) {\n if (this.baseDescription instanceof ShapeWithImageDescription_1.ShapeWithImageDescription) return this.baseDescription.getImagePlacementRectangle(rect, forToolbox);\n return rectangle_1.Rectangle.fromGeometry(point_1.Point.zero(), size_1.Size.empty());\n }\n\n var left = rect.x,\n top = rect.y,\n width = rect.width,\n height = rect.height;\n return new rectangle_1.Rectangle(left + (this.properties.imageLeft && !forToolbox ? this.properties.imageLeft * width : 0), top + (this.properties.imageTop && !forToolbox ? this.properties.imageTop * height : 0), this.properties.imageWidth && !forToolbox ? this.properties.imageWidth * width : width, this.properties.imageHeight && !forToolbox ? this.properties.imageHeight * height : height);\n };\n\n CustomShapeDescription.prototype.updateSvgImage = function (cacheImageInfo) {\n var isToolboxImage = cacheImageInfo.imageUrl && cacheImageInfo.imageUrl === this.properties.svgToolboxUrl;\n var svgImage = isToolboxImage ? this.svgToolboxImage : this.svgImage;\n if (cacheImageInfo.base64) svgImage.loadBase64Content(cacheImageInfo.base64);else svgImage.setUnableToLoadFlag();\n if (!isToolboxImage) this.raiseShapeDescriptionChanged(this);\n };\n\n return CustomShapeDescription;\n }(ShapeWithImageDescription_1.ShapeWithImageDescription);\n\n exports.CustomShapeDescription = CustomShapeDescription;\n /***/\n },\n /* 128 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics66 = function extendStatics(d, b) {\n _extendStatics66 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics66(d, b);\n };\n\n return function (d, b) {\n _extendStatics66(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImagePrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var ImagePrimitive =\n /** @class */\n function (_super) {\n __extends(ImagePrimitive, _super);\n\n function ImagePrimitive(x, y, width, height, url, preserveAspectRatio, style, className) {\n if (preserveAspectRatio === void 0) {\n preserveAspectRatio = \"none\";\n }\n\n var _this = _super.call(this, style, className) || this;\n\n _this.x = x;\n _this.y = y;\n _this.width = width;\n _this.height = height;\n _this.url = url;\n _this.preserveAspectRatio = preserveAspectRatio;\n return _this;\n }\n\n ImagePrimitive.prototype.createMainElement = function () {\n return document.createElementNS(RenderHelper_1.svgNS, \"image\");\n };\n\n ImagePrimitive.prototype.applyElementProperties = function (element, measurer) {\n this.setUnitAttribute(element, \"x\", this.x);\n this.setUnitAttribute(element, \"y\", this.y);\n this.setUnitAttribute(element, \"width\", this.width);\n this.setUnitAttribute(element, \"height\", this.height);\n this.setPositionCorrectionAttribute(element);\n element.setAttribute(\"href\", this.url);\n element.setAttribute(\"preserveAspectRatio\", this.preserveAspectRatio);\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n return ImagePrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.ImagePrimitive = ImagePrimitive;\n /***/\n },\n /* 129 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics67 = function extendStatics(d, b) {\n _extendStatics67 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics67(d, b);\n };\n\n return function (d, b) {\n _extendStatics67(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ShapeWithImageDescription = exports.SHAPE_IMAGE_CLASSNAMES = exports.ShapeDefaultSize = exports.ShapeDefaultDimension = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var rectangle_1 = __webpack_require__(12);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var ImagePrimitive_1 = __webpack_require__(128);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var GroupPrimitive_1 = __webpack_require__(40);\n\n var Utils_1 = __webpack_require__(17);\n\n var ClipPathPrimitive_1 = __webpack_require__(55);\n\n var ShapeImageIndicator_1 = __webpack_require__(130);\n\n exports.ShapeDefaultDimension = 1440;\n exports.ShapeDefaultSize = new size_1.Size(exports.ShapeDefaultDimension, exports.ShapeDefaultDimension);\n exports.SHAPE_IMAGE_CLASSNAMES = {\n IMAGE: \"dxdi-image\",\n IMAGE_PLACEHOLDER: \"dxdi-image-placeholder\",\n LOADING_INDICATOR: \"dxdi-spinner\",\n USER_PIC: \"dxdi-user\",\n WARNING_MARK: \"dxdi-warning\"\n };\n\n var ShapeWithImageDescription =\n /** @class */\n function (_super) {\n __extends(ShapeWithImageDescription, _super);\n\n function ShapeWithImageDescription(defaultSize, hasDefaultText) {\n if (defaultSize === void 0) {\n defaultSize = exports.ShapeDefaultSize.clone();\n }\n\n var _this = _super.call(this, defaultSize, hasDefaultText) || this;\n\n _this.hasDefaultText = hasDefaultText;\n _this.defaultIconSize = 480;\n return _this;\n }\n\n Object.defineProperty(ShapeWithImageDescription.prototype, \"enableImage\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n\n ShapeWithImageDescription.prototype.getImageMargin = function (forToolbox) {\n return forToolbox ? unit_converter_1.UnitConverter.pixelsToTwips(2) : unit_converter_1.UnitConverter.pixelsToTwips(3);\n };\n\n ShapeWithImageDescription.prototype.createImagePrimitives = function (shape, forToolbox) {\n if (!this.enableImage) return [];\n var rect = this.getImagePlacementRectangle(shape.rectangle, forToolbox);\n if (forToolbox) return this.createImagePlaceholder(rect);\n var imagePrimitives = [];\n if (shape.image.isEmpty || shape.image.unableToLoad) imagePrimitives = imagePrimitives.concat(this.createEmptyImagePrimitives(rect, shape.image.unableToLoad));else if (shape.image.renderUrl === \"\") imagePrimitives = imagePrimitives.concat(this.createLoadingImagePrimitives(rect));else imagePrimitives = imagePrimitives.concat(this.createLoadedImagePrimitives(rect, shape.image.renderUrl));\n\n if (shape.image.renderUrl === \"\") {\n var clipPathId = Utils_1.RenderUtils.generateSvgElementId(\"clipImage\");\n return [].concat([new GroupPrimitive_1.GroupPrimitive(imagePrimitives, exports.SHAPE_IMAGE_CLASSNAMES.IMAGE, undefined, clipPathId), new ClipPathPrimitive_1.ClipPathPrimitive(clipPathId, [new RectaglePrimitive_1.RectanglePrimitive(rect.x, rect.y, rect.width, rect.height)])]);\n } else return imagePrimitives;\n };\n\n ShapeWithImageDescription.prototype.createImagePlaceholder = function (rect) {\n return [];\n };\n\n ShapeWithImageDescription.prototype.createLoadedImagePrimitives = function (rect, imageUrl) {\n return [new ImagePrimitive_1.ImagePrimitive(rect.x, rect.y, rect.width, rect.height, imageUrl, ShapeWithImageDescription.imageScalingRule, undefined, exports.SHAPE_IMAGE_CLASSNAMES.IMAGE)];\n };\n\n ShapeWithImageDescription.prototype.createLoadingImagePrimitives = function (rect) {\n var loadingRect = this.getIconPlacementRectangle(rect);\n return [ShapeImageIndicator_1.ShapeImageIndicator.createLoadingIndicatorPrimitives(loadingRect.x, loadingRect.y, this.defaultIconSize, unit_converter_1.UnitConverter.pixelsToTwips(5), exports.SHAPE_IMAGE_CLASSNAMES.LOADING_INDICATOR)];\n };\n\n ShapeWithImageDescription.prototype.createEmptyImagePrimitives = function (rect, showWarning) {\n var loadingRect = this.getIconPlacementRectangle(rect);\n var primitives = [];\n primitives = primitives.concat(this.createEmptyImagePrimitive(loadingRect));\n if (showWarning) primitives = primitives.concat(this.createWarningPrimitive(loadingRect));\n return primitives;\n };\n\n ShapeWithImageDescription.prototype.createEmptyImagePrimitive = function (rect) {\n return new GroupPrimitive_1.GroupPrimitive([]);\n };\n\n ShapeWithImageDescription.prototype.createWarningPrimitive = function (rect) {\n return new GroupPrimitive_1.GroupPrimitive([]);\n };\n\n ShapeWithImageDescription.prototype.getIconPlacementRectangle = function (rect) {\n var iconRect = rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y), new size_1.Size(this.defaultIconSize, this.defaultIconSize));\n if (iconRect.width < rect.width) iconRect.x = rect.x + (rect.width - iconRect.width) / 2;\n if (iconRect.height < rect.height) iconRect.y = rect.y + (rect.height - iconRect.height) / 2;\n return iconRect;\n };\n\n ShapeWithImageDescription.imageScalingRule = \"xMidYMid meet\";\n return ShapeWithImageDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.ShapeWithImageDescription = ShapeWithImageDescription;\n /***/\n },\n /* 130 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ShapeImageIndicator = void 0;\n\n var EllipsePrimitive_1 = __webpack_require__(54);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var GroupPrimitive_1 = __webpack_require__(40);\n\n var browser_1 = __webpack_require__(19);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var ShapeImageIndicator =\n /** @class */\n function () {\n function ShapeImageIndicator(x, y, size, borderThickness, className) {\n this.x = x;\n this.y = y;\n this.size = size;\n this.borderThickness = borderThickness;\n this.className = className;\n this.animationStarted = false;\n }\n\n ShapeImageIndicator.createLoadingIndicatorPrimitives = function (x, y, r, borderThickness, className) {\n var indicator = new ShapeImageIndicator(x, y, r, borderThickness, className);\n return indicator.createLoadingIndicatorPrimitive();\n };\n\n ShapeImageIndicator.createUserIconPrimitives = function (x, y, r, borderThickness, className) {\n var indicator = new ShapeImageIndicator(x, y, r, borderThickness, className);\n return indicator.createUserIconPrimitive();\n };\n\n ShapeImageIndicator.createWarningIconPrimitives = function (x, y, size, className) {\n var indicator = new ShapeImageIndicator(x, y, size, undefined, className);\n return indicator.createWarningIconPrimitive();\n };\n\n ShapeImageIndicator.prototype.rotate = function (element, centerX, centerY, timestamp) {\n if (!this.animationStarted) return;\n var angle = Math.round(timestamp) % 1080 / 3;\n var transformAttributeValue = \"rotate(\" + angle + \" \" + centerX + \" \" + centerY + \")\";\n element.setAttribute(\"transform\", transformAttributeValue);\n this.animationRequestId = requestAnimationFrame(function (timestamp) {\n this.rotate(element, centerX, centerY, timestamp);\n }.bind(this));\n };\n\n ShapeImageIndicator.prototype.onApplyLoadingIndicatorElementProperties = function (element) {\n var _a = [unit_converter_1.UnitConverter.twipsToPixelsF(this.x + this.size / 2), unit_converter_1.UnitConverter.twipsToPixelsF(this.y + this.size / 2)],\n centerX = _a[0],\n centerY = _a[1];\n\n if (browser_1.Browser.IE) {\n this.animationRequestId = requestAnimationFrame(function (timestamp) {\n this.rotate(element, centerX, centerY, timestamp);\n }.bind(this));\n this.animationStarted = true;\n } else element.style.setProperty(\"transform-origin\", centerX + \"px \" + centerY + \"px\");\n };\n\n ShapeImageIndicator.prototype.center = function () {\n return [unit_converter_1.UnitConverter.twipsToPixelsF(this.x + this.size / 2), unit_converter_1.UnitConverter.twipsToPixelsF(this.y + this.size / 2)];\n };\n\n ShapeImageIndicator.prototype.createLoadingIndicatorPrimitive = function () {\n var _a = this.center(),\n centerX = _a[0],\n centerY = _a[1];\n\n var radius = unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 2 - this.borderThickness / 2);\n return new GroupPrimitive_1.GroupPrimitive([new EllipsePrimitive_1.EllipsePrimitive(centerX + \"\", centerY + \"\", radius + \"\", radius + \"\"), new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(centerX + radius + \"\", centerY + \"\"), new PathPrimitive_1.PathPrimitiveArcToCommand(radius + \"\", radius + \"\", 0, false, false, centerX + \"\", centerY - radius + \"\")])], this.className, undefined, undefined, this.onApplyLoadingIndicatorElementProperties.bind(this), this.onBeforeDispose.bind(this));\n };\n\n ShapeImageIndicator.prototype.createUserIconPrimitive = function () {\n var _a = this.center(),\n centerX = _a[0],\n centerY = _a[1];\n\n var radius = unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 2 - this.borderThickness / 2);\n var sizeInPixels = unit_converter_1.UnitConverter.twipsToPixelsF(this.size);\n return new GroupPrimitive_1.GroupPrimitive([new EllipsePrimitive_1.EllipsePrimitive(centerX + \"\", centerY + \"\", radius + \"\", radius + \"\", undefined, \"dxdi-background\"), new EllipsePrimitive_1.EllipsePrimitive(centerX + \"\", centerY - sizeInPixels / 8 + \"\", sizeInPixels / 8 + \"\", sizeInPixels / 8 + \"\"), new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(centerX + \"\", centerY + sizeInPixels / 16 + \"\"), new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(centerX + 0.1375 * sizeInPixels + \"\", centerY + sizeInPixels / 16 + \"\", centerX + sizeInPixels / 4 + \"\", centerY + 0.11875 * sizeInPixels + \"\", centerX + sizeInPixels / 4 + \"\", centerY + 0.1875 * sizeInPixels + \"\"), new PathPrimitive_1.PathPrimitiveLineToCommand(centerX + sizeInPixels / 4 + \"\", centerY + sizeInPixels / 4 + \"\"), new PathPrimitive_1.PathPrimitiveLineToCommand(centerX - sizeInPixels / 4 + \"\", centerY + sizeInPixels / 4 + \"\"), new PathPrimitive_1.PathPrimitiveLineToCommand(centerX - sizeInPixels / 4 + \"\", centerY + 0.1875 * sizeInPixels + \"\"), new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(centerX - sizeInPixels / 4 + \"\", centerY + 0.11875 * sizeInPixels + \"\", centerX - 0.1375 * sizeInPixels + \"\", centerY + sizeInPixels / 16 + \"\", centerX + \"\", centerY + sizeInPixels / 16 + \"\"), new PathPrimitive_1.PathPrimitiveClosePathCommand()])], this.className);\n };\n\n ShapeImageIndicator.prototype.createWarningIconPrimitive = function () {\n var _a = this.center(),\n centerX = _a[0],\n centerY = _a[1];\n\n var radius = unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 2) - 1;\n var exclamationLineWidth = unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 8);\n return new GroupPrimitive_1.GroupPrimitive([new EllipsePrimitive_1.EllipsePrimitive(centerX + \"\", centerY + \"\", radius + \"\", radius + \"\"), new RectaglePrimitive_1.RectanglePrimitive(centerX - exclamationLineWidth / 2 + 0.5 + \"\", centerY + radius - unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 4) + \"\", exclamationLineWidth + \"\", exclamationLineWidth + \"\"), new RectaglePrimitive_1.RectanglePrimitive(centerX - exclamationLineWidth / 2 + 0.5 + \"\", centerY - radius + unit_converter_1.UnitConverter.twipsToPixelsF(this.size / 4) - exclamationLineWidth + \"\", exclamationLineWidth + \"\", radius + \"\")], this.className);\n };\n\n ShapeImageIndicator.prototype.onBeforeDispose = function () {\n if (this.animationRequestId) cancelAnimationFrame(this.animationRequestId);\n this.animationStarted = false;\n };\n\n return ShapeImageIndicator;\n }();\n\n exports.ShapeImageIndicator = ShapeImageIndicator;\n /***/\n },\n /* 131 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImageLoader = void 0;\n\n var ImageCache_1 = __webpack_require__(47);\n\n var ImageLoader =\n /** @class */\n function () {\n function ImageLoader(loadedCallback) {\n this.loadedCallback = loadedCallback;\n }\n\n ImageLoader.prototype.load = function (data) {\n if (data.isLoaded) this.loadedCallback(data);else if (!data.isLoading) this.loadInner(data);\n };\n\n ImageLoader.prototype.loadInner = function (data) {\n var _this = this;\n\n if (data.imageUrl) this.loadPictureByUrl(data, function () {\n return _this.finalizeLoading(data, data);\n });else if (data.base64) this.loadPictureByBase64(data, function () {\n return _this.finalizeLoading(data, data);\n });\n return data;\n };\n\n ImageLoader.prototype.finalizeLoading = function (loadedData, existingInfo) {\n if (!existingInfo) existingInfo = ImageCache_1.ImageCache.instance.getImageData(loadedData.actualId);\n if (!existingInfo.isLoaded) ImageCache_1.ImageCache.instance.finalizeLoading(existingInfo, loadedData);\n this.loadedCallback(existingInfo);\n };\n\n ImageLoader.prototype.loadPictureByBase64 = function (data, imageLoaded) {\n var img = new Image();\n\n img.onload = function () {\n imageLoaded(data);\n };\n\n img.src = data.base64;\n };\n\n ImageLoader.prototype.loadPictureByUrl = function (data, imageLoaded) {\n var _this = this;\n\n var xhr = new XMLHttpRequest();\n\n try {\n xhr.onload = function () {\n var reader = new FileReader();\n\n reader.onloadend = function () {\n data.base64 = reader.result;\n\n _this.loadPictureByBase64(data, function (data) {\n return imageLoaded(data);\n });\n };\n\n reader.readAsDataURL(xhr.response);\n }; // Access to XMLHttpRequest at 'https://url.jpg' from origin 'http://myurl' has been blocked by CORS policy:\n // No 'Access-Control-Allow-Origin' header is present on the requested resource.\n\n\n xhr.onerror = function\n /* this: XMLHttpRequest*/\n () {\n return imageLoaded(data);\n };\n\n xhr.onloadend = function () {\n if (xhr.status === 404) imageLoaded(data);\n };\n\n xhr.open(\"GET\", data.imageUrl, true);\n xhr.responseType = \"blob\";\n data.startLoading();\n xhr.send();\n } catch (_a) {}\n };\n\n return ImageLoader;\n }();\n\n exports.ImageLoader = ImageLoader;\n /***/\n },\n /* 132 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics68 = function extendStatics(d, b) {\n _extendStatics68 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics68(d, b);\n };\n\n return function (d, b) {\n _extendStatics68(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ContainerDescription = exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO = exports.CONTAINER_EXPAND_BUTTON_RECT_RATIO = exports.CONTAINER_HEADER_TOOLBOX_SIZE_RATIO = exports.CONTAINER_HEADER_SIZE = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var Utils_1 = __webpack_require__(17);\n\n var Event_1 = __webpack_require__(14);\n\n var GroupPrimitive_1 = __webpack_require__(40);\n\n var ConnectionPoint_1 = __webpack_require__(46);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var LocalizationService_1 = __webpack_require__(37);\n\n exports.CONTAINER_HEADER_SIZE = 360;\n exports.CONTAINER_HEADER_TOOLBOX_SIZE_RATIO = 0.2;\n exports.CONTAINER_EXPAND_BUTTON_RECT_RATIO = 0.5;\n exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO = 0.3;\n\n var ContainerDescription =\n /** @class */\n function (_super) {\n __extends(ContainerDescription, _super);\n\n function ContainerDescription(defaultSize) {\n if (defaultSize === void 0) {\n defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 2, ShapeDescription_1.ShapeDefaultDimension * 1.5);\n }\n\n return _super.call(this, defaultSize, true) || this;\n }\n\n Object.defineProperty(ContainerDescription.prototype, \"enableChildren\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ContainerDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n ContainerDescription.prototype.getDefaultText = function () {\n return LocalizationService_1.DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Container];\n };\n\n ContainerDescription.prototype.createConnectionPoints = function () {\n return [new ConnectionPoint_1.ConnectionPoint(0.25, 0, DiagramItem_1.ConnectionPointSide.North), new ConnectionPoint_1.ConnectionPoint(0.5, 0, DiagramItem_1.ConnectionPointSide.North), new ConnectionPoint_1.ConnectionPoint(0.75, 0, DiagramItem_1.ConnectionPointSide.North), new ConnectionPoint_1.ConnectionPoint(1, 0.25, DiagramItem_1.ConnectionPointSide.East), new ConnectionPoint_1.ConnectionPoint(1, 0.5, DiagramItem_1.ConnectionPointSide.East), new ConnectionPoint_1.ConnectionPoint(1, 0.75, DiagramItem_1.ConnectionPointSide.East), new ConnectionPoint_1.ConnectionPoint(0.75, 1, DiagramItem_1.ConnectionPointSide.South), new ConnectionPoint_1.ConnectionPoint(0.5, 1, DiagramItem_1.ConnectionPointSide.South), new ConnectionPoint_1.ConnectionPoint(0.25, 1, DiagramItem_1.ConnectionPointSide.South), new ConnectionPoint_1.ConnectionPoint(0, 0.75, DiagramItem_1.ConnectionPointSide.West), new ConnectionPoint_1.ConnectionPoint(0, 0.5, DiagramItem_1.ConnectionPointSide.West), new ConnectionPoint_1.ConnectionPoint(0, 0.25, DiagramItem_1.ConnectionPointSide.West)];\n };\n\n ContainerDescription.prototype.getConnectionPointIndexForItem = function (item, connectionPointIndex) {\n var shapeConnectionPoints = item && item.getConnectionPoints();\n if (shapeConnectionPoints.length === 4) return connectionPointIndex * 3 + 1;\n return connectionPointIndex;\n };\n\n ContainerDescription.prototype.getConnectionPointIndexForSide = function (side) {\n return side * 3 + 1;\n };\n\n ContainerDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\n var _a = shape.rectangle,\n left = _a.x,\n top = _a.y,\n width = _a.width,\n height = _a.height;\n var primitives = [];\n if (shape.expanded) primitives = primitives.concat([new RectaglePrimitive_1.RectanglePrimitive(left, top, width, height, shape.style)]);\n return primitives.concat(this.createHeaderPrimitives(shape, forToolbox));\n };\n\n ContainerDescription.prototype.createExpandButtonPrimitives = function (shape, rect) {\n var commands = [new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.x + rect.width * ((1 - exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO) / 2), rect.center.y), new PathPrimitive_1.PathPrimitiveLineToCommand(rect.x + rect.width * ((1 - exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO) / 2 + exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO), rect.center.y)];\n if (!shape.expanded) commands = commands.concat([new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.center.x, rect.y + rect.height * ((1 - exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO) / 2)), new PathPrimitive_1.PathPrimitiveLineToCommand(rect.center.x, rect.y + rect.height * ((1 - exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO) / 2 + exports.CONTAINER_EXPAND_BUTTON_SIGN_RATIO))]);\n var buttonRect = rect.clone().inflate(-rect.width * (1 - exports.CONTAINER_EXPAND_BUTTON_RECT_RATIO) / 2, -rect.height * (1 - exports.CONTAINER_EXPAND_BUTTON_RECT_RATIO) / 2);\n return [new GroupPrimitive_1.GroupPrimitive([new RectaglePrimitive_1.RectanglePrimitive(buttonRect.x, buttonRect.y, buttonRect.width, buttonRect.height, shape.style), new PathPrimitive_1.PathPrimitive(commands, shape.style)], \"shape-expand-btn\", null, null, function (el) {\n Utils_1.RenderUtils.setElementEventData(el, Event_1.MouseEventElementType.ShapeExpandButton, shape.key);\n })];\n };\n\n return ContainerDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.ContainerDescription = ContainerDescription;\n /***/\n },\n /* 133 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics69 = function extendStatics(d, b) {\n _extendStatics69 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics69(d, b);\n };\n\n return function (d, b) {\n _extendStatics69(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CardBaseDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var rectangle_1 = __webpack_require__(12);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeWithImageDescription_1 = __webpack_require__(129);\n\n var RoundedRectanglePrimitive_1 = __webpack_require__(235);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var GroupPrimitive_1 = __webpack_require__(40);\n\n var ShapeImageIndicator_1 = __webpack_require__(130);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var LocalizationService_1 = __webpack_require__(37);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var point_1 = __webpack_require__(1);\n\n var CardBaseDescription =\n /** @class */\n function (_super) {\n __extends(CardBaseDescription, _super);\n\n function CardBaseDescription(defaultSize) {\n if (defaultSize === void 0) {\n defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, 26 / 46 * ShapeDescription_1.ShapeDefaultDimension);\n }\n\n return _super.call(this, defaultSize, true) || this;\n }\n\n Object.defineProperty(CardBaseDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n CardBaseDescription.prototype.getDefaultText = function () {\n return LocalizationService_1.DiagramLocalizationService.shapeTexts[ShapeTypes_1.ShapeTypes.Card];\n };\n\n CardBaseDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\n var _a = shape.rectangle,\n left = _a.x,\n top = _a.y,\n width = _a.width,\n height = _a.height;\n return [new RoundedRectanglePrimitive_1.RoundedRectanglePrimitive(left, top, width, height, forToolbox ? 30 : 60, forToolbox ? 30 : 60, shape.style)];\n };\n\n CardBaseDescription.prototype.createImagePlaceholder = function (rect) {\n return [new RoundedRectanglePrimitive_1.RoundedRectanglePrimitive(rect.x, rect.y, rect.width, rect.height, unit_converter_1.UnitConverter.pixelsToTwips(2), unit_converter_1.UnitConverter.pixelsToTwips(2), undefined, ShapeWithImageDescription_1.SHAPE_IMAGE_CLASSNAMES.IMAGE_PLACEHOLDER)];\n };\n\n CardBaseDescription.prototype.createEmptyImagePrimitive = function (rect) {\n return ShapeImageIndicator_1.ShapeImageIndicator.createUserIconPrimitives(rect.x, rect.y, this.defaultIconSize, unit_converter_1.UnitConverter.pixelsToTwips(1), ShapeWithImageDescription_1.SHAPE_IMAGE_CLASSNAMES.USER_PIC);\n };\n\n CardBaseDescription.prototype.createWarningPrimitive = function (rect) {\n return ShapeImageIndicator_1.ShapeImageIndicator.createWarningIconPrimitives(rect.x + this.defaultIconSize / 2, rect.y + this.defaultIconSize / 2, this.defaultIconSize / 2, ShapeWithImageDescription_1.SHAPE_IMAGE_CLASSNAMES.WARNING_MARK);\n };\n\n CardBaseDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n var textRectangle = rect.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\n var imgBlockSize = this.getImageSize(rect.createSize(), true);\n if (this.isTextAfterImage) textRectangle.moveRectangle(this.isHorizontal ? imgBlockSize.width : 0, this.isHorizontal ? 0 : imgBlockSize.height);\n textRectangle.resize(this.isHorizontal ? -imgBlockSize.width : 0, this.isHorizontal ? 0 : -imgBlockSize.height);\n return textRectangle.nonNegativeSize();\n };\n\n CardBaseDescription.prototype.getSizeByText = function (textSize, _shape) {\n var size = textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\n var imgBlockSize = this.getImageSizeByTextBlockSize(size);\n if (this.isHorizontal) size.width += imgBlockSize.width;else size.height += imgBlockSize.height;\n return size;\n };\n\n CardBaseDescription.prototype.createTextPrimitives = function (shape, forToolbox) {\n if (forToolbox) return this.createGraphicalTextRepresentation(shape.rectangle);else return _super.prototype.createTextPrimitives.call(this, shape, forToolbox);\n };\n\n CardBaseDescription.prototype.createGraphicalTextRepresentation = function (rect) {\n var textRect = new rectangle_1.Rectangle(0, 0, 0, 0);\n var imgBlockSize = this.getImageSize(rect.createSize(), true, true);\n\n if (this.isHorizontal) {\n var horizontalShift = this.isTextAfterImage ? rect.width / 2 - unit_converter_1.UnitConverter.pixelsToTwips(2) : 0;\n textRect.x = rect.x + horizontalShift + unit_converter_1.UnitConverter.pixelsToTwips(4);\n textRect.y = rect.y + unit_converter_1.UnitConverter.pixelsToTwips(5);\n textRect.width = imgBlockSize.width - unit_converter_1.UnitConverter.pixelsToTwips(4);\n textRect.height = rect.height - unit_converter_1.UnitConverter.pixelsToTwips(6);\n } else {\n var verticalShift = this.isTextAfterImage ? rect.height / 2 - unit_converter_1.UnitConverter.pixelsToTwips(2) : 0;\n textRect.x = rect.x + rect.width / 4;\n textRect.y = rect.y + verticalShift + unit_converter_1.UnitConverter.pixelsToTwips(4);\n textRect.width = rect.width / 2;\n textRect.height = imgBlockSize.height - unit_converter_1.UnitConverter.pixelsToTwips(2);\n }\n\n return this.createTextRepresentationPrimitives(textRect);\n };\n\n CardBaseDescription.prototype.getImagePlacementRectangle = function (rect, forToolbox) {\n var imageSize = this.getImageSize(rect.createSize(), false, forToolbox);\n var imageRectangle = rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y), imageSize);\n var imgBlockSize = this.getImageSize(rect.createSize(), true, forToolbox);\n if (this.isHorizontal && this.isTextAfterImage) imageRectangle.x += this.getImageMargin(forToolbox);else if (this.isHorizontal) imageRectangle.x = rect.right - imgBlockSize.width - this.getImageMargin(forToolbox);\n if (!this.isHorizontal && !this.isTextAfterImage) imageRectangle.y = rect.bottom - imgBlockSize.height - this.getImageMargin(forToolbox);else imageRectangle.y += this.getImageMargin(forToolbox);\n if (!this.isHorizontal) imageRectangle.x += (rect.width - imageRectangle.width) / 2;\n return imageRectangle;\n };\n\n CardBaseDescription.prototype.createTextRepresentationPrimitives = function (rect) {\n var lineHeight = unit_converter_1.UnitConverter.pixelsToTwips(unit_converter_1.UnitConverter.twipsToPixels(rect.height / 3));\n return [new GroupPrimitive_1.GroupPrimitive([new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.x, rect.y), new PathPrimitive_1.PathPrimitiveLineToCommand(rect.x + rect.width, rect.y)]), new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.x, rect.y + lineHeight), new PathPrimitive_1.PathPrimitiveLineToCommand(rect.x + rect.width, rect.y + lineHeight)]), new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(rect.x, rect.y + lineHeight * 2), new PathPrimitive_1.PathPrimitiveLineToCommand(rect.x + rect.width * 0.66, rect.y + lineHeight * 2)])], \"dxdi-shape-text\")];\n };\n\n return CardBaseDescription;\n }(ShapeWithImageDescription_1.ShapeWithImageDescription);\n\n exports.CardBaseDescription = CardBaseDescription;\n /***/\n },\n /* 134 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImporterBase = void 0;\n\n var Model_1 = __webpack_require__(61);\n\n var Shape_1 = __webpack_require__(13);\n\n var ImporterBase =\n /** @class */\n function () {\n function ImporterBase(shapeDescriptionManager) {\n this.shapeDescriptionManager = shapeDescriptionManager;\n }\n\n ImporterBase.prototype.import = function () {\n var model = new Model_1.DiagramModel();\n var obj = this.getObject();\n this.importPageSettings(model, this.getPageObject(obj));\n var shapes = this.importShapes(this.getShapeObjects(obj));\n\n for (var i = 0; i < shapes.length; i++) {\n var shape = shapes[i];\n if (model.findItem(shape.key)) throw Error(\"Item key is duplicated\");\n model.pushItem(shape);\n }\n\n var connectors = this.importConnectors(this.getConnectorObjects(obj));\n\n for (var i = 0; i < connectors.length; i++) {\n var connector = connectors[i];\n connector.endItem = model.findItem(connector[\"endItemKey\"]) || undefined;\n delete connector[\"endItemKey\"];\n connector.beginItem = model.findItem(connector[\"beginItemKey\"]) || undefined;\n delete connector[\"beginItemKey\"];\n if (model.findItem(connector.key)) throw Error(\"Item key is duplicated\");\n model.pushItem(connector);\n this.updateConnections(connector);\n }\n\n this.updateChildren(model.items, function (key) {\n return model.findItem(key);\n });\n return model;\n };\n\n ImporterBase.prototype.importItems = function (model) {\n var result = [];\n var obj = this.getObject();\n var itemHash = {};\n var shapes = this.importShapes(this.getShapeObjects(obj));\n var key;\n\n for (var i = 0; i < shapes.length; i++) {\n var shape = shapes[i];\n var oldKey = shape.key;\n key = model.getNextKey();\n shape.key = key;\n itemHash[oldKey] = shape;\n if (shape.dataKey !== undefined) shape.dataKey = undefined;\n result.push(shape);\n }\n\n var connectors = this.importConnectors(this.getConnectorObjects(obj));\n\n for (var i = 0; i < connectors.length; i++) {\n var connector = connectors[i];\n var oldKey = connector.key;\n key = model.getNextKey();\n connector.key = key;\n itemHash[oldKey] = connector;\n if (connector.dataKey !== undefined) connector.dataKey = undefined;\n var endItemKey = connector[\"endItemKey\"];\n connector.endItem = itemHash[endItemKey];\n delete connector[\"endItemKey\"];\n var beginItemKey = connector[\"beginItemKey\"];\n connector.beginItem = itemHash[beginItemKey];\n delete connector[\"beginItemKey\"];\n result.push(connector);\n this.updateConnections(connector);\n }\n\n this.updateChildren(result, function (key) {\n return itemHash[key];\n });\n return result;\n };\n\n ImporterBase.prototype.importItemsData = function (model) {\n var obj = this.getObject();\n var shapes = this.importShapes(this.getShapeObjects(obj));\n var shapeDataKeys = {};\n\n for (var i = 0; i < shapes.length; i++) {\n var srcShape = shapes[i];\n var destShape = void 0;\n if (srcShape.dataKey !== undefined) destShape = model.findShapeByDataKey(srcShape.dataKey);\n\n if (destShape) {\n destShape.dataKey = srcShape.dataKey;\n shapeDataKeys[srcShape.key] = srcShape.dataKey;\n destShape.locked = srcShape.locked;\n destShape.position = srcShape.position.clone();\n destShape.expanded = srcShape.expanded;\n if (srcShape.expandedSize) destShape.expandedSize = srcShape.expandedSize.clone();\n destShape.size = srcShape.size.clone();\n destShape.parameters = srcShape.parameters.clone();\n destShape.style = srcShape.style.clone();\n destShape.styleText = srcShape.styleText.clone();\n destShape.zIndex = srcShape.zIndex;\n destShape.text = srcShape.text;\n destShape.description = srcShape.description;\n destShape.image = srcShape.image.clone();\n }\n }\n\n var connectors = this.importConnectors(this.getConnectorObjects(obj));\n\n for (var i = 0; i < connectors.length; i++) {\n var srcConnector = connectors[i];\n var destConnector = void 0;\n if (srcConnector.dataKey !== undefined) destConnector = model.findConnectorByDataKey(srcConnector.dataKey);\n if (!destConnector) destConnector = model.findConnectorByBeginEndDataKeys(shapeDataKeys[srcConnector[\"beginItemKey\"]], shapeDataKeys[srcConnector[\"endItemKey\"]]);\n\n if (destConnector) {\n destConnector.dataKey = srcConnector.dataKey;\n destConnector.locked = srcConnector.locked;\n destConnector.points = srcConnector.points.slice();\n destConnector.properties = srcConnector.properties.clone();\n destConnector.style = srcConnector.style.clone();\n destConnector.endConnectionPointIndex = srcConnector.endConnectionPointIndex;\n destConnector.beginConnectionPointIndex = srcConnector.beginConnectionPointIndex;\n destConnector.texts = srcConnector.texts.clone();\n destConnector.styleText = srcConnector.styleText.clone();\n destConnector.zIndex = srcConnector.zIndex;\n }\n }\n };\n\n ImporterBase.prototype.importShapes = function (shapeObjs) {\n var result = [];\n if (!shapeObjs) return result;\n if (!Array.isArray(shapeObjs)) throw Error(\"Invalid Format\");\n\n for (var i = 0; i < shapeObjs.length; i++) {\n var shapeObj = shapeObjs[i];\n var shape = this.importShape(shapeObj);\n result.push(shape);\n result = result.concat(this.importShapeChildren(shapeObj, shape));\n }\n\n return result;\n };\n\n ImporterBase.prototype.importConnectors = function (connectorObjs) {\n var result = [];\n if (!connectorObjs) return result;\n if (!Array.isArray(connectorObjs)) throw Error(\"Invalid Format\");\n\n for (var i = 0; i < connectorObjs.length; i++) {\n var shapeObj = connectorObjs[i];\n result.push(this.importConnector(shapeObj));\n }\n\n return result;\n };\n\n ImporterBase.prototype.updateChildren = function (items, findItem) {\n items.forEach(function (item) {\n if (item instanceof Shape_1.Shape && item[\"childKeys\"]) {\n item[\"childKeys\"].forEach(function (childKey) {\n var child = findItem(childKey);\n\n if (child) {\n if (item.children.indexOf(child) === -1) item.children.push(child);\n child.container = item;\n }\n });\n delete item[\"childKeys\"];\n }\n });\n };\n\n ImporterBase.prototype.updateConnections = function (connector) {\n if (connector.endItem) if (connector.endItem instanceof Shape_1.Shape) {\n connector.endItem.attachedConnectors.push(connector);\n connector.points[connector.points.length - 1] = connector.endItem.getConnectionPointPosition(connector.endConnectionPointIndex, connector.points[connector.points.length - 2]);\n } else {\n connector.endItem = undefined;\n connector.endConnectionPointIndex = -1;\n }\n if (connector.beginItem) if (connector.beginItem instanceof Shape_1.Shape) {\n connector.beginItem.attachedConnectors.push(connector);\n connector.points[0] = connector.beginItem.getConnectionPointPosition(connector.beginConnectionPointIndex, connector.points[1]);\n } else {\n connector.beginItem = undefined;\n connector.beginConnectionPointIndex = -1;\n }\n };\n\n ImporterBase.prototype.assert = function (value, type) {\n if (value === undefined) throw Error(\"Invalid Format\");\n if (type !== undefined && typeof value !== type) throw Error(\"Invalid Format\");\n };\n\n return ImporterBase;\n }();\n\n exports.ImporterBase = ImporterBase;\n /***/\n },\n /* 135 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics70 = function extendStatics(d, b) {\n _extendStatics70 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics70(d, b);\n };\n\n return function (d, b) {\n _extendStatics70(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.StylePropertyCommandBase = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var StylePropertyCommandBase =\n /** @class */\n function (_super) {\n __extends(StylePropertyCommandBase, _super);\n\n function StylePropertyCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n StylePropertyCommandBase.prototype.lockInputPositionUpdating = function () {\n return true;\n };\n\n return StylePropertyCommandBase;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.StylePropertyCommandBase = StylePropertyCommandBase;\n /***/\n },\n /* 136 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics71 = function extendStatics(d, b) {\n _extendStatics71 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics71(d, b);\n };\n\n return function (d, b) {\n _extendStatics71(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeStylePropertyCommandBase = void 0;\n\n var StylePropertyCommandBase_1 = __webpack_require__(135);\n\n var ChangeStylePropertyCommandBase =\n /** @class */\n function (_super) {\n __extends(ChangeStylePropertyCommandBase, _super);\n\n function ChangeStylePropertyCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeStylePropertyCommandBase.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n this.control.history.beginTransaction();\n var items = this.control.selection.getSelectedItems();\n parameter = this.processParameter(parameter);\n items.forEach(function (item) {\n var styleProperty = _this.getStyleProperty();\n\n _this.control.history.addAndRedo(_this.createHistoryItem(item, styleProperty, parameter));\n });\n this.updateInputPosition(parameter);\n this.control.history.endTransaction();\n return true;\n };\n\n ChangeStylePropertyCommandBase.prototype.getDefaultValue = function () {\n return this.getDefaultStyleObj()[this.getStyleProperty()];\n };\n\n ChangeStylePropertyCommandBase.prototype.processParameter = function (parameter) {\n return parameter;\n };\n\n return ChangeStylePropertyCommandBase;\n }(StylePropertyCommandBase_1.StylePropertyCommandBase);\n\n exports.ChangeStylePropertyCommandBase = ChangeStylePropertyCommandBase;\n /***/\n },\n /* 137 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics72 = function extendStatics(d, b) {\n _extendStatics72 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics72(d, b);\n };\n\n return function (d, b) {\n _extendStatics72(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectorPropertyCommand = void 0;\n\n var ChangeConnectorPropertyHistoryItem_1 = __webpack_require__(88);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ChangeConnectorPropertyCommand =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorPropertyCommand, _super);\n\n function ChangeConnectorPropertyCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeConnectorPropertyCommand.prototype.getValue = function () {\n return this.control.selection.inputPosition.getCurrentConnectorPropertyValue(this.getPropertyName());\n };\n\n ChangeConnectorPropertyCommand.prototype.getDefaultValue = function () {\n return this.getPropertyDefaultValue();\n };\n\n ChangeConnectorPropertyCommand.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n this.control.history.beginTransaction();\n var connectors = this.control.selection.getSelectedConnectors();\n connectors.forEach(function (connector) {\n var propertyName = _this.getPropertyName();\n\n _this.control.history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(connector.key, propertyName, parameter));\n });\n this.control.selection.inputPosition.setConnectorPropertyValue(this.getPropertyName(), parameter);\n this.control.history.endTransaction();\n return true;\n };\n\n ChangeConnectorPropertyCommand.prototype.lockInputPositionUpdating = function () {\n return true;\n };\n\n ChangeConnectorPropertyCommand.prototype.isEnabled = function () {\n var connectors = this.control.selection.getSelectedConnectors();\n return _super.prototype.isEnabled.call(this) && connectors.length > 0;\n };\n\n return ChangeConnectorPropertyCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeConnectorPropertyCommand = ChangeConnectorPropertyCommand;\n /***/\n },\n /* 138 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics73 = function extendStatics(d, b) {\n _extendStatics73 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics73(d, b);\n };\n\n return function (d, b) {\n _extendStatics73(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoLayoutTreeVerticalCommand = void 0;\n\n var AutoLayoutCommandBase_1 = __webpack_require__(75);\n\n var WideTree_1 = __webpack_require__(97);\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var AutoLayoutTreeVerticalCommand =\n /** @class */\n function (_super) {\n __extends(AutoLayoutTreeVerticalCommand, _super);\n\n function AutoLayoutTreeVerticalCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AutoLayoutTreeVerticalCommand.prototype.createLayoutSettings = function () {\n var gridSize = this.control.settings.snapToGrid ? this.control.settings.gridSize : undefined;\n var settings = new LayoutSettings_1.TreeLayoutSettings(gridSize);\n settings.orientation = LayoutSettings_1.DataLayoutOrientation.Vertical;\n return settings;\n };\n\n AutoLayoutTreeVerticalCommand.prototype.createLayout = function (settings, graph) {\n return new WideTree_1.TreeLayoutBuilder(settings, graph).build();\n };\n\n return AutoLayoutTreeVerticalCommand;\n }(AutoLayoutCommandBase_1.AutoLayoutCommandBase);\n\n exports.AutoLayoutTreeVerticalCommand = AutoLayoutTreeVerticalCommand;\n /***/\n },\n /* 139 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GraphLayout = void 0;\n\n var Utils_1 = __webpack_require__(3);\n\n var NodeLayout_1 = __webpack_require__(70);\n\n var GraphLayout =\n /** @class */\n function () {\n function GraphLayout() {\n this.nodeKeys = [];\n this.nodeToLayout = {};\n this.edgeToPosition = {};\n }\n\n GraphLayout.prototype.forEachNode = function (callback) {\n var _this = this;\n\n this.nodeKeys.forEach(function (nk) {\n return callback(_this.nodeToLayout[nk], nk);\n });\n };\n\n GraphLayout.prototype.reduce = function (callback, initValue) {\n var _this = this;\n\n return this.nodeKeys.reduce(function (acc, key, index) {\n return callback(acc, _this.nodeToLayout[key], index);\n }, initValue);\n };\n\n GraphLayout.prototype.addNode = function (nodeLayout) {\n if (this.nodeToLayout[nodeLayout.key]) throw Error(\"Node layout is already registered\");\n this.nodeKeys.push(nodeLayout.key);\n this.nodeToLayout[nodeLayout.key] = nodeLayout;\n return nodeLayout;\n };\n\n GraphLayout.prototype.hasNode = function (key) {\n return !!this.nodeToLayout[key];\n };\n\n GraphLayout.prototype.addEdge = function (edgeLayout) {\n if (this.edgeToPosition[edgeLayout.key]) throw Error(\"Edge layout is already registered\");\n this.edgeToPosition[edgeLayout.key] = edgeLayout;\n };\n\n GraphLayout.prototype.getRectangle = function (includeMargins) {\n var _this = this;\n\n return Utils_1.GeometryUtils.getCommonRectangle(this.nodeKeys.map(function (nk) {\n return _this.nodeToLayout[nk].rectangle;\n }));\n };\n\n GraphLayout.prototype.offsetNodes = function (deltaX, deltaY) {\n var _this = this;\n\n if (deltaX === void 0) {\n deltaX = 0;\n }\n\n if (deltaY === void 0) {\n deltaY = 0;\n }\n\n var layout = new GraphLayout();\n this.nodeKeys.forEach(function (nk) {\n var nl = _this.nodeToLayout[nk];\n layout.addNode(new NodeLayout_1.NodeLayout(nl.info, nl.position.clone().offset(deltaX, deltaY)));\n });\n layout.copyEdges(this);\n return layout;\n };\n\n GraphLayout.prototype.extend = function (layout) {\n var _this = this;\n\n layout.forEachNode(function (nl) {\n return _this.addNode(nl);\n });\n this.copyEdges(layout);\n };\n\n GraphLayout.prototype.copyEdges = function (source) {\n var _this = this;\n\n Object.keys(source.edgeToPosition).forEach(function (e) {\n var edge = source.edgeToPosition[e];\n\n _this.addEdge(new NodeLayout_1.EdgeLayout(edge.key, edge.beginIndex, edge.endIndex));\n });\n };\n\n return GraphLayout;\n }();\n\n exports.GraphLayout = GraphLayout;\n /***/\n },\n /* 140 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.LayoutBuilder = void 0;\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var LayoutBuilder =\n /** @class */\n function () {\n function LayoutBuilder(settings, graph) {\n this.settings = settings;\n this.graph = graph;\n }\n\n LayoutBuilder.prototype.getBreadthNodeSizeCore = function (node, excludeMargins) {\n var size = this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? node.size.width : node.size.height;\n if (!excludeMargins) size += this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? node.margin.left + node.margin.right : node.margin.top + node.margin.bottom;\n return size;\n };\n\n LayoutBuilder.prototype.getDepthNodeSizeCore = function (node) {\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Horizontal ? node.size.width + node.margin.left + node.margin.right : node.size.height + node.margin.top + node.margin.bottom;\n };\n\n LayoutBuilder.prototype.chooseDirectionValue = function (near, far) {\n return this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward ? near : far;\n };\n\n LayoutBuilder.prototype.getDirectionValue = function (value) {\n return this.settings.direction === LayoutSettings_1.LogicalDirectionKind.Forward ? value : -value;\n };\n\n LayoutBuilder.prototype.getComponentOffset = function (graphLayout) {\n var rect = graphLayout.getRectangle(true);\n var offset = this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? rect.width : rect.height;\n return offset + this.settings.componentSpacing;\n };\n\n LayoutBuilder.prototype.setComponentOffset = function (graphLayout, offset) {\n return this.settings.orientation === LayoutSettings_1.DataLayoutOrientation.Vertical ? graphLayout.offsetNodes(offset) : graphLayout.offsetNodes(0, offset);\n };\n\n return LayoutBuilder;\n }();\n\n exports.LayoutBuilder = LayoutBuilder;\n /***/\n },\n /* 141 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics74 = function extendStatics(d, b) {\n _extendStatics74 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics74(d, b);\n };\n\n return function (d, b) {\n _extendStatics74(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CanvasManager = void 0;\n\n var ModelChange_1 = __webpack_require__(99);\n\n var CanvasManagerBase_1 = __webpack_require__(43);\n\n var CanvasManager =\n /** @class */\n function (_super) {\n __extends(CanvasManager, _super);\n\n function CanvasManager() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.pendingChanges = {};\n _this.pendingRemoveChanges = {};\n _this.updatesLock = 0;\n return _this;\n }\n\n CanvasManager.prototype.beginUpdate = function () {\n this.updatesLock++;\n };\n\n CanvasManager.prototype.endUpdate = function () {\n this.updatesLock--;\n if (this.updatesLock === 0) this.applyPendingChanges();\n };\n\n CanvasManager.prototype.getPendingChanges = function () {\n var _this = this;\n\n return Object.keys(this.pendingChanges).map(function (key) {\n return _this.pendingChanges[key];\n });\n };\n\n CanvasManager.prototype.getPendingRemoveChanges = function () {\n var _this = this;\n\n return Object.keys(this.pendingRemoveChanges).map(function (key) {\n return _this.pendingRemoveChanges[key];\n });\n };\n\n CanvasManager.prototype.applyPendingChanges = function () {\n var removeChanges = this.getPendingRemoveChanges();\n\n if (removeChanges.length) {\n this.applyChangesCore(removeChanges);\n this.pendingRemoveChanges = {};\n }\n\n var changes = this.getPendingChanges();\n\n if (changes.length) {\n this.applyChangesCore(changes);\n this.pendingChanges = {};\n }\n };\n\n CanvasManager.prototype.applyChangesCore = function (changes) {\n var _this = this;\n\n var changesToReapply = [];\n changes.forEach(function (change) {\n if (!_this.applyChange(change)) changesToReapply.push(change);\n });\n if (changesToReapply.length && changesToReapply.length !== changes.length) this.applyChangesCore(changesToReapply);\n };\n\n CanvasManager.prototype.postponeChanges = function (changes) {\n var _this = this;\n\n changes.forEach(function (change) {\n if (change.type === ModelChange_1.ItemChangeType.Remove) {\n _this.pendingRemoveChanges[change.key] = change;\n delete _this.pendingChanges[change.key];\n } else if (!_this.pendingChanges[change.key]) {\n if (_this.pendingRemoveChanges[change.key] && change.type !== ModelChange_1.ItemChangeType.Create) throw new Error(\"Incorrect model changes sequence.\");\n _this.pendingChanges[change.key] = change;\n } else if (change.type === ModelChange_1.ItemChangeType.Create) _this.pendingChanges[change.key] = change;else if (change.type === ModelChange_1.ItemChangeType.UpdateStructure) {\n if (_this.pendingChanges[change.key].type === ModelChange_1.ItemChangeType.UpdateProperties) _this.pendingChanges[change.key] = change;\n } else if (change.type === ModelChange_1.ItemChangeType.UpdateProperties) {\n if (_this.pendingChanges[change.key].type === ModelChange_1.ItemChangeType.Update) _this.pendingChanges[change.key] = change;\n } else if (change.type === ModelChange_1.ItemChangeType.UpdateClassName) if (_this.pendingChanges[change.key].type === ModelChange_1.ItemChangeType.UpdateClassName) _this.pendingChanges[change.key] = change;\n });\n };\n\n CanvasManager.prototype.applyOrPostponeChanges = function (changes) {\n if (this.updatesLock === 0) this.applyChangesCore(changes);else this.postponeChanges(changes);\n }; // Notifications\n\n\n CanvasManager.prototype.notifyModelChanged = function (changes) {\n this.applyOrPostponeChanges(changes);\n };\n\n CanvasManager.prototype.notifyPageColorChanged = function (color) {};\n\n CanvasManager.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) {};\n\n return CanvasManager;\n }(CanvasManagerBase_1.CanvasManagerBase);\n\n exports.CanvasManager = CanvasManager;\n /***/\n },\n /* 142 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics75 = function extendStatics(d, b) {\n _extendStatics75 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics75(d, b);\n };\n\n return function (d, b) {\n _extendStatics75(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PasteSelectionCommandBase = void 0;\n\n var ClipboardCommand_1 = __webpack_require__(101);\n\n var Importer_1 = __webpack_require__(120);\n\n var Shape_1 = __webpack_require__(13);\n\n var ImportShapeHistoryItem_1 = __webpack_require__(266);\n\n var Connector_1 = __webpack_require__(6);\n\n var ImportConnectorHistoryItem_1 = __webpack_require__(267);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var SetSelectionHistoryItem_1 = __webpack_require__(66);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var PasteSelectionCommandBase =\n /** @class */\n function (_super) {\n __extends(PasteSelectionCommandBase, _super);\n\n function PasteSelectionCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n PasteSelectionCommandBase.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && (this.isPasteSupportedByBrowser() || ClipboardCommand_1.ClipboardCommand.clipboardData !== undefined);\n };\n\n PasteSelectionCommandBase.prototype.isVisible = function () {\n return this.isPasteSupportedByBrowser() || ClipboardCommand_1.ClipboardCommand.clipboardData !== undefined;\n };\n\n PasteSelectionCommandBase.prototype.parseClipboardData = function (data) {\n var items = [];\n var importer = new Importer_1.Importer(this.control.shapeDescriptionManager, data);\n items = importer.importItems(this.control.model);\n if (this.control.contextMenuPosition) this.calculateSelectionOffset(items, this.control.contextMenuPosition);\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (item instanceof Shape_1.Shape) item.position = this.getShapeNewPosition(item.position);else if (item instanceof Connector_1.Connector) this.changeConnectorPoints(item);\n }\n\n return items;\n };\n\n PasteSelectionCommandBase.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n var ret = true;\n if (parameter) this.performPaste(parameter);else this.getClipboardData(function (data) {\n ret = _this.execute(data); // may be async\n });\n return ret;\n };\n\n PasteSelectionCommandBase.prototype.addItemForSortingRecursive = function (itemsHashtable, item) {\n if (itemsHashtable[item.key]) return itemsHashtable[item.key];\n\n if (item instanceof Connector_1.Connector) {\n if (item.endItem) itemsHashtable[item.key] = this.addItemForSortingRecursive(itemsHashtable, item.endItem) - 0.5;else if (item.beginItem) itemsHashtable[item.key] = this.addItemForSortingRecursive(itemsHashtable, item.beginItem) + 0.5;else itemsHashtable[item.key] = -1;\n return itemsHashtable[item.key];\n }\n\n if (item.attachedConnectors.length === 0) return itemsHashtable[item.key] = 0;else for (var i = 0; i < item.attachedConnectors.length; i++) {\n var beginItem = item.attachedConnectors[i].beginItem;\n if (item.attachedConnectors[i].endItem === item && beginItem && beginItem !== item.attachedConnectors[i].endItem) return itemsHashtable[item.key] = this.addItemForSortingRecursive(itemsHashtable, beginItem) + 1;else return itemsHashtable[item.key] = 0; // no parent\n }\n };\n\n PasteSelectionCommandBase.prototype.getSortedPasteItems = function (items) {\n var sortedItems = [];\n var connectors = [];\n var itemsHashtable = {};\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (item instanceof Shape_1.Shape) sortedItems.push(item);else if (item instanceof Connector_1.Connector) {\n connectors.push(item);\n this.addItemForSortingRecursive(itemsHashtable, item);\n }\n }\n\n connectors.sort(function (a, b) {\n return itemsHashtable[b.key] - itemsHashtable[a.key];\n });\n return sortedItems.concat(connectors);\n };\n\n PasteSelectionCommandBase.prototype.performPaste = function (data) {\n this.control.beginUpdateCanvas();\n this.control.history.beginTransaction();\n var ids = [];\n var items = this.parseClipboardData(data);\n items = this.getSortedPasteItems(items);\n\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n if (item instanceof Shape_1.Shape) this.control.history.addAndRedo(new ImportShapeHistoryItem_1.ImportShapeHistoryItem(item));else if (item instanceof Connector_1.Connector) this.control.history.addAndRedo(new ImportConnectorHistoryItem_1.ImportConnectorHistoryItem(item));\n var containerKey = item.container && item.container.key;\n if (!containerKey || ids.indexOf(containerKey) === -1) ids.push(item.key);\n }\n\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\n this.control.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(this.control.selection, ids));\n this.control.history.endTransaction();\n this.control.endUpdateCanvas();\n this.control.barManager.updateItemsState();\n };\n\n PasteSelectionCommandBase.prototype.calculateSelectionOffset = function (items, position) {};\n\n Object.defineProperty(PasteSelectionCommandBase.prototype, \"isPermissionsRequired\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n\n PasteSelectionCommandBase.getShapeNewPosition = function (model, position) {\n while (model.findShapeAtPosition(position)) {\n position = position.clone().offset(PasteSelectionCommandBase.positionOffset, PasteSelectionCommandBase.positionOffset);\n }\n\n return position;\n };\n\n PasteSelectionCommandBase.changeConnectorPoints = function (model, connector) {\n while (model.findConnectorAtPoints(connector.points)) {\n connector.points.forEach(function (pt) {\n pt.x += PasteSelectionCommandBase.positionOffset;\n pt.y += PasteSelectionCommandBase.positionOffset;\n });\n }\n };\n\n PasteSelectionCommandBase.positionOffset = unit_converter_1.UnitConverter.pixelsToTwips(10);\n return PasteSelectionCommandBase;\n }(ClipboardCommand_1.ClipboardCommand);\n\n exports.PasteSelectionCommandBase = PasteSelectionCommandBase;\n /***/\n },\n /* 143 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics76 = function extendStatics(d, b) {\n _extendStatics76 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics76(d, b);\n };\n\n return function (d, b) {\n _extendStatics76(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoLayoutLayeredHorizontalCommand = void 0;\n\n var AutoLayoutCommandBase_1 = __webpack_require__(75);\n\n var Sugiyama_1 = __webpack_require__(79);\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var AutoLayoutLayeredHorizontalCommand =\n /** @class */\n function (_super) {\n __extends(AutoLayoutLayeredHorizontalCommand, _super);\n\n function AutoLayoutLayeredHorizontalCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AutoLayoutLayeredHorizontalCommand.prototype.createLayoutSettings = function () {\n var settings = new LayoutSettings_1.LayoutSettings();\n settings.orientation = LayoutSettings_1.DataLayoutOrientation.Horizontal;\n return settings;\n };\n\n AutoLayoutLayeredHorizontalCommand.prototype.createLayout = function (settings, graph) {\n return new Sugiyama_1.SugiyamaLayoutBuilder(settings, graph).build();\n };\n\n return AutoLayoutLayeredHorizontalCommand;\n }(AutoLayoutCommandBase_1.AutoLayoutCommandBase);\n\n exports.AutoLayoutLayeredHorizontalCommand = AutoLayoutLayeredHorizontalCommand;\n /***/\n },\n /* 144 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics77 = function extendStatics(d, b) {\n _extendStatics77 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics77(d, b);\n };\n\n return function (d, b) {\n _extendStatics77(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoLayoutTreeHorizontalCommand = void 0;\n\n var AutoLayoutCommandBase_1 = __webpack_require__(75);\n\n var WideTree_1 = __webpack_require__(97);\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var AutoLayoutTreeHorizontalCommand =\n /** @class */\n function (_super) {\n __extends(AutoLayoutTreeHorizontalCommand, _super);\n\n function AutoLayoutTreeHorizontalCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AutoLayoutTreeHorizontalCommand.prototype.createLayoutSettings = function () {\n var gridSize = this.control.settings.snapToGrid ? this.control.settings.gridSize : undefined;\n var settings = new LayoutSettings_1.TreeLayoutSettings(gridSize);\n settings.orientation = LayoutSettings_1.DataLayoutOrientation.Horizontal;\n return settings;\n };\n\n AutoLayoutTreeHorizontalCommand.prototype.createLayout = function (settings, graph) {\n return new WideTree_1.TreeLayoutBuilder(settings, graph).build();\n };\n\n return AutoLayoutTreeHorizontalCommand;\n }(AutoLayoutCommandBase_1.AutoLayoutCommandBase);\n\n exports.AutoLayoutTreeHorizontalCommand = AutoLayoutTreeHorizontalCommand;\n /***/\n },\n /* 145 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics78 = function extendStatics(d, b) {\n _extendStatics78 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics78(d, b);\n };\n\n return function (d, b) {\n _extendStatics78(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoLayoutLayeredVerticalCommand = void 0;\n\n var AutoLayoutCommandBase_1 = __webpack_require__(75);\n\n var Sugiyama_1 = __webpack_require__(79);\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var AutoLayoutLayeredVerticalCommand =\n /** @class */\n function (_super) {\n __extends(AutoLayoutLayeredVerticalCommand, _super);\n\n function AutoLayoutLayeredVerticalCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AutoLayoutLayeredVerticalCommand.prototype.createLayoutSettings = function () {\n var settings = new LayoutSettings_1.LayoutSettings();\n settings.orientation = LayoutSettings_1.DataLayoutOrientation.Vertical;\n return settings;\n };\n\n AutoLayoutLayeredVerticalCommand.prototype.createLayout = function (settings, graph) {\n return new Sugiyama_1.SugiyamaLayoutBuilder(settings, graph).build();\n };\n\n return AutoLayoutLayeredVerticalCommand;\n }(AutoLayoutCommandBase_1.AutoLayoutCommandBase);\n\n exports.AutoLayoutLayeredVerticalCommand = AutoLayoutLayeredVerticalCommand;\n /***/\n },\n /* 146 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics79 = function extendStatics(d, b) {\n _extendStatics79 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics79(d, b);\n };\n\n return function (d, b) {\n _extendStatics79(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeLockedCommand = void 0;\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ChangeLockedCommand =\n /** @class */\n function (_super) {\n __extends(ChangeLockedCommand, _super);\n\n function ChangeLockedCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeLockedCommand.prototype.isEnabled = function () {\n var _this = this;\n\n var items = this.control.selection.getSelectedItems(true);\n var enabled = false;\n items.forEach(function (item) {\n if (item.locked !== _this.getLockState()) enabled = true;\n });\n return _super.prototype.isEnabled.call(this) && enabled;\n };\n\n ChangeLockedCommand.prototype.executeCore = function (state, parameter) {\n ModelUtils_1.ModelUtils.changeSelectionLocked(this.control.history, this.control.model, this.control.selection, this.getLockState());\n return true;\n };\n\n return ChangeLockedCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeLockedCommand = ChangeLockedCommand;\n /***/\n },\n /* 147 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics80 = function extendStatics(d, b) {\n _extendStatics80 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics80(d, b);\n };\n\n return function (d, b) {\n _extendStatics80(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeShapeImageHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ImageInfo_1 = __webpack_require__(51);\n\n var ChangeShapeImageHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeShapeImageHistoryItem, _super);\n\n function ChangeShapeImageHistoryItem(item, imageUrl) {\n var _this = _super.call(this) || this;\n\n _this.shapeKey = item.key;\n _this.imageUrl = imageUrl;\n return _this;\n }\n\n ChangeShapeImageHistoryItem.prototype.redo = function (manipulator) {\n var item = manipulator.model.findShape(this.shapeKey);\n this.oldImage = item.image;\n manipulator.changeShapeImage(item, new ImageInfo_1.ImageInfo(this.imageUrl));\n };\n\n ChangeShapeImageHistoryItem.prototype.undo = function (manipulator) {\n var item = manipulator.model.findShape(this.shapeKey);\n manipulator.changeShapeImage(item, this.oldImage);\n };\n\n return ChangeShapeImageHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeShapeImageHistoryItem = ChangeShapeImageHistoryItem;\n /***/\n },\n /* 148 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics81 = function extendStatics(d, b) {\n _extendStatics81 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics81(d, b);\n };\n\n return function (d, b) {\n _extendStatics81(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDefaultState = void 0;\n\n var Event_1 = __webpack_require__(14);\n\n var MouseHandlerMoveConnectorPointState_1 = __webpack_require__(305);\n\n var MouseHandlerResizeShapeState_1 = __webpack_require__(306);\n\n var MouseHandlerMoveConnectorSideState_1 = __webpack_require__(307);\n\n var MouseHandlerDragParameterPointState_1 = __webpack_require__(308);\n\n var MouseHandlerCreateConnectorState_1 = __webpack_require__(309);\n\n var MouseHandlerMoveConnectorOrthogonalSideState_1 = __webpack_require__(310);\n\n var MouseHandlerToolboxDraggingState_1 = __webpack_require__(311);\n\n var MouseHandlerMoveConnectorTextState_1 = __webpack_require__(312);\n\n var MouseHandlerDefaultStateBase_1 = __webpack_require__(150);\n\n var MouseHandlerMoveShapeState_1 = __webpack_require__(318);\n\n var Connector_1 = __webpack_require__(6);\n\n var MouseHandlerMoveConnectorState_1 = __webpack_require__(319);\n\n var MouseHandlerDefaultState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerDefaultState, _super);\n\n function MouseHandlerDefaultState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerDefaultState.prototype.finish = function () {\n this.visualizerManager.resetConnectionPoints();\n\n _super.prototype.finish.call(this);\n };\n\n MouseHandlerDefaultState.prototype.onMouseDownCore = function (evt) {\n if (this.handler.canScrollPage(evt)) this.startScrolling(evt);else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ConnectorText) {\n this.handler.changeSingleSelection(evt.source.key);\n this.handler.switchState(new MouseHandlerMoveConnectorTextState_1.MouseHandlerMoveConnectorTextState(this.handler, this.history, this.model));\n } else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ShapeResizeBox) this.handler.switchState(new MouseHandlerResizeShapeState_1.MouseHandlerResizeShapeState(this.handler, this.history, this.model, this.selection, this.visualizerManager, this.settings));else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ShapeParameterBox) this.handler.switchState(new MouseHandlerDragParameterPointState_1.MouseHandlerDragParameterPointState(this.handler, this.history, this.model));else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ConnectorPoint) this.handler.switchState(new MouseHandlerMoveConnectorPointState_1.MouseHandlerMoveConnectorPointState(this.handler, this.history, this.model, this.visualizerManager));else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ConnectorSide) this.handler.switchState(new MouseHandlerMoveConnectorSideState_1.MouseHandlerMoveConnectorSideState(this.handler, this.history, this.model));else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ConnectorOrthogonalSide) this.handler.switchState(new MouseHandlerMoveConnectorOrthogonalSideState_1.MouseHandlerMoveConnectorOrthogonalSideState(this.handler, this.history, this.model));else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ShapeConnectionPoint) this.handler.switchState(new MouseHandlerCreateConnectorState_1.MouseHandlerCreateConnectorState(this.handler, this.history, this.model, this.visualizerManager, this.shapeDescriptionManager, this.selection));else _super.prototype.onMouseDownCore.call(this, evt);\n };\n\n MouseHandlerDefaultState.prototype.onDragDiagramItemOnMouseDown = function (evt) {\n if (!this.handler.canAddDiagramItemToSelection(evt)) _super.prototype.onDragDiagramItemOnMouseDown.call(this, evt);else if (evt.source.type === Event_1.MouseEventElementType.Shape) this.handler.switchState(new MouseHandlerMoveShapeState_1.MouseHandlerMoveShapeState(this.handler, this.history, this.model, this.selection, this.visualizerManager));else if (evt.source.type === Event_1.MouseEventElementType.Connector) this.handler.switchState(new MouseHandlerMoveConnectorState_1.MouseHandlerMoveConnectorState(this.handler, this.history, this.model, this.selection, this.visualizerManager));\n };\n\n MouseHandlerDefaultState.prototype.onDragStart = function (evt) {\n this.handler.switchState(new MouseHandlerToolboxDraggingState_1.MouseHandlerBeforeToolboxDraggingState(this.handler, this.history, this.model, this.selection, this.visualizerManager, this.shapeDescriptionManager));\n this.handler.state.onDragStart(evt);\n };\n\n MouseHandlerDefaultState.prototype.onMouseMoveCore = function (evt) {\n this.updateConnectionsOnMouseMove(evt);\n\n _super.prototype.onMouseMoveCore.call(this, evt);\n };\n\n MouseHandlerDefaultState.prototype.onMouseUp = function (evt) {\n if (this.canRemoveDiagramItemToSelection(evt)) this.handler.removeDiagramItemFromSelection(evt.button, evt.source.key);else _super.prototype.onMouseUp.call(this, evt);\n };\n\n MouseHandlerDefaultState.prototype.updateConnectionsOnMouseMove = function (evt) {\n var item = this.model.findItem(evt.source.key);\n this.visualizerManager.updateConnections(item, evt.source.type, evt.source.value);\n };\n\n MouseHandlerDefaultState.prototype.canRemoveDiagramItemToSelection = function (evt) {\n return this.handler.canRemoveDiagramItemToSelection(evt);\n };\n\n MouseHandlerDefaultState.prototype.canDragObjectOnMouseDown = function (key) {\n return true;\n };\n\n MouseHandlerDefaultState.prototype.canExpandContainerOnMouseDown = function (key) {\n return true;\n };\n\n MouseHandlerDefaultState.prototype.canClearSelectionOnMouseDown = function () {\n return false;\n };\n\n MouseHandlerDefaultState.prototype.processOnMouseMoveAfterLimit = function (evt) {\n this.startSelection(evt);\n };\n\n MouseHandlerDefaultState.prototype.canSelectOnMouseUp = function (key) {\n return false;\n };\n\n MouseHandlerDefaultState.prototype.canClearSelectionOnMouseUp = function () {\n return true;\n };\n\n MouseHandlerDefaultState.prototype.onConnectionPointsShow = function (key, points) {\n var _this = this;\n\n var shape = this.model.findShape(key);\n if (shape) points.forEach(function (point, index) {\n point.allowed = _this.handler.canPerformChangeConnectionOnUpdateUI(undefined, {\n item: shape,\n position: Connector_1.ConnectorPosition.Begin,\n connectionPointIndex: index\n });\n });\n };\n\n return MouseHandlerDefaultState;\n }(MouseHandlerDefaultStateBase_1.MouseHandlerDefaultStateBase);\n\n exports.MouseHandlerDefaultState = MouseHandlerDefaultState;\n /***/\n },\n /* 149 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics82 = function extendStatics(d, b) {\n _extendStatics82 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics82(d, b);\n };\n\n return function (d, b) {\n _extendStatics82(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerMoveConnectorPointStateBase = void 0;\n\n var Connector_1 = __webpack_require__(6);\n\n var Event_1 = __webpack_require__(14);\n\n var MouseHandlerDraggingState_1 = __webpack_require__(35);\n\n var DeleteConnectionHistoryItem_1 = __webpack_require__(65);\n\n var AddConnectionHistoryItem_1 = __webpack_require__(49);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n var MouseHandlerMoveConnectorPointStateBase =\n /** @class */\n function (_super) {\n __extends(MouseHandlerMoveConnectorPointStateBase, _super);\n\n function MouseHandlerMoveConnectorPointStateBase(handler, history, model, visualizerManager) {\n var _this = _super.call(this, handler, history) || this;\n\n _this.model = model;\n _this.visualizerManager = visualizerManager;\n return _this;\n }\n\n MouseHandlerMoveConnectorPointStateBase.prototype.finish = function () {\n this.visualizerManager.resetConnectionTarget();\n this.visualizerManager.resetConnectionPoints();\n\n _super.prototype.finish.call(this);\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.onMouseDown = function (evt) {\n _super.prototype.onMouseDown.call(this, evt);\n\n if (this.connector) this.handler.addInteractingItem(this.connector);\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.onMouseMove = function (evt) {\n _super.prototype.onMouseMove.call(this, evt);\n\n if (!this.allowAttachToObjects(evt, false, false)) {\n this.visualizerManager.resetConnectionTarget();\n this.visualizerManager.resetConnectionPoints();\n } else if (this.connector) {\n var item = this.connector.getExtremeItem(this.pointPosition);\n this.visualizerManager.setConnectionTarget(item, evt.source.type);\n var pointIndex = this.connector.getExtremeConnectionPointIndex(this.pointPosition);\n if (!item && this.oppositeConnectionPointIndex !== -1 || !this.allowAttachToObjects(evt, true, false)) item = this.model.findItem(evt.source.key);\n this.visualizerManager.setConnectionPoints(item, evt.source.type, pointIndex, true);\n }\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.onApplyChanges = function (evt) {\n var point = this.getSnappedPoint(evt, evt.modelPoint);\n\n if (this.pointPosition !== undefined) {\n if (this.oppositePointPosition === undefined) {\n this.oppositePointPosition = this.getOppositePointPosition();\n this.oppositeItem = this.connector.getExtremeItem(this.oppositePointPosition);\n this.oppositeConnectionPointIndex = this.connector.getExtremeConnectionPointIndex(this.oppositePointPosition);\n }\n\n this.targetItem = this.model.findItem(evt.source.key);\n var item = this.allowAttachToObjects(evt, true, true) ? this.targetItem : undefined;\n var connectionPointIndex = -1;\n if (evt.source.type === Event_1.MouseEventElementType.ShapeConnectionPoint) connectionPointIndex = parseInt(evt.source.value);\n\n if (item && (evt.source.type === Event_1.MouseEventElementType.Shape || evt.source.type === Event_1.MouseEventElementType.ShapeConnectionPoint) && (this.connector.getExtremeItem(this.oppositePointPosition) !== item || connectionPointIndex !== -1 && this.oppositeConnectionPointIndex !== -1 && connectionPointIndex !== this.oppositeConnectionPointIndex)) {\n if (this.connector.getExtremeItem(this.pointPosition) !== item || this.connector.getExtremeConnectionPointIndex(this.pointPosition) !== connectionPointIndex) {\n if (this.connector.getExtremeItem(this.pointPosition)) this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, this.pointPosition));\n this.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(this.connector, item, connectionPointIndex, this.pointPosition));\n if (this.oppositeItem) this.updateOppositeItemConnectionPointIndex(connectionPointIndex);\n }\n\n point = item.getConnectionPointPosition(connectionPointIndex, this.connector.points[this.pointIndex + (this.pointPosition === Connector_1.ConnectorPosition.End ? -1 : 1)]);\n this.visualizerManager.setConnectionPointIndex(connectionPointIndex);\n } else if (this.connector.getExtremeItem(this.pointPosition)) {\n this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, this.pointPosition));\n if (this.oppositeItem) this.updateOppositeItemConnectionPointIndex(this.oppositeConnectionPointIndex);\n }\n }\n\n ModelUtils_1.ModelUtils.moveConnectorPoint(this.history, this.connector, this.pointIndex, point);\n ModelUtils_1.ModelUtils.updateConnectorAttachedPoints(this.history, this.model, this.connector);\n\n if (this.connector.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Orthogonal) {\n var renderPoints = this.connector.getRenderPoints(true);\n ModelUtils_1.ModelUtils.skipUnnecessaryRightAngleRenderPoints(renderPoints);\n }\n\n this.handler.tryUpdateModelSize();\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.updateOppositeItemConnectionPointIndex = function (connectionPointIndex) {\n var pointIndex = connectionPointIndex === -1 ? -1 : this.oppositeConnectionPointIndex;\n\n if (pointIndex !== this.connector.getExtremeConnectionPointIndex(this.oppositePointPosition)) {\n this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, this.oppositePointPosition));\n this.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(this.connector, this.oppositeItem, pointIndex, this.oppositePointPosition));\n }\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.onFinishWithChanges = function () {\n ModelUtils_1.ModelUtils.updateConnectorContainer(this.history, this.model, this.connector);\n ModelUtils_1.ModelUtils.deleteConnectorUnnecessaryPoints(this.history, this.connector);\n this.handler.tryUpdateModelSize();\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.getDraggingElementKeys = function () {\n return this.connector ? [this.connector.key] : [];\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.getOppositePointPosition = function () {\n return this.pointPosition === Connector_1.ConnectorPosition.Begin ? Connector_1.ConnectorPosition.End : Connector_1.ConnectorPosition.Begin;\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.allowAttachToObjects = function (evt, checkContainers, checkOppositeItem) {\n if (this.handler.canMultipleSelection(evt)) return false;\n var connector = this.connector;\n\n if (connector && evt.source.type === Event_1.MouseEventElementType.Shape) {\n var targetItem_1 = this.model.findItem(evt.source.key);\n if (checkContainers && this.model.findItemContainerCore(connector, function (c) {\n return c === targetItem_1;\n })) return false;\n if (checkContainers && this.oppositeItem && this.model.findItemContainerCore(this.oppositeItem, function (c) {\n return c === targetItem_1;\n })) return false;\n if (checkOppositeItem && this.oppositeItem === targetItem_1 && this.oppositeConnectionPointIndex === -1) return false;\n }\n\n return true;\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.onConnectionPointsShow = function (key, points) {\n var _this = this;\n\n if (this.connector && this.pointPosition !== undefined && (this.connector.endItem && this.connector.endItem.key === key || this.connector.beginItem && this.connector.beginItem.key === key)) {\n var position_1 = this.connector.beginItem && this.connector.beginItem.key === key ? Connector_1.ConnectorPosition.Begin : Connector_1.ConnectorPosition.End;\n points.forEach(function (point, index) {\n point.allowed = _this.handler.canPerformChangeConnectionOnUpdateUI(_this.connector, {\n item: _this.connector.getExtremeItem(position_1),\n position: position_1,\n connectionPointIndex: index\n });\n });\n }\n };\n\n MouseHandlerMoveConnectorPointStateBase.prototype.onConnectionTargetShow = function (key, info) {\n if (this.connector && this.pointPosition !== undefined && (this.connector.endItem && this.connector.endItem.key === key || this.connector.beginItem && this.connector.beginItem.key === key)) {\n var position = this.connector.beginItem && this.connector.beginItem.key === key ? Connector_1.ConnectorPosition.Begin : Connector_1.ConnectorPosition.End;\n info.allowed = this.handler.canPerformChangeConnectionOnUpdateUI(this.connector, {\n item: this.connector.getExtremeItem(position),\n position: position,\n connectionPointIndex: -1\n });\n }\n };\n\n return MouseHandlerMoveConnectorPointStateBase;\n }(MouseHandlerDraggingState_1.MouseHandlerDraggingState);\n\n exports.MouseHandlerMoveConnectorPointStateBase = MouseHandlerMoveConnectorPointStateBase;\n /***/\n },\n /* 150 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics83 = function extendStatics(d, b) {\n _extendStatics83 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics83(d, b);\n };\n\n return function (d, b) {\n _extendStatics83(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDefaultStateBase = void 0;\n\n var MouseHandlerStateBase_1 = __webpack_require__(41);\n\n var Event_1 = __webpack_require__(14);\n\n var MouseHandlerToggleShapeExpandedState_1 = __webpack_require__(314);\n\n var MouseHandlerSelectionState_1 = __webpack_require__(316);\n\n var MouseHandlerZoomOnWheelState_1 = __webpack_require__(317);\n\n var MouseHandlerScrollingState_1 = __webpack_require__(151);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var MouseHandlerDefaultStateBase =\n /** @class */\n function (_super) {\n __extends(MouseHandlerDefaultStateBase, _super);\n\n function MouseHandlerDefaultStateBase(handler, history, selection, model, view, visualizerManager, shapeDescriptionManager, settings) {\n var _this = _super.call(this, handler) || this;\n\n _this.history = history;\n _this.selection = selection;\n _this.model = model;\n _this.view = view;\n _this.visualizerManager = visualizerManager;\n _this.shapeDescriptionManager = shapeDescriptionManager;\n _this.settings = settings;\n return _this;\n }\n\n MouseHandlerDefaultStateBase.prototype.onKeyDown = function (evt) {\n this.handler.onStartScrollPageByKeyboard(evt);\n };\n\n MouseHandlerDefaultStateBase.prototype.onKeyUp = function (evt) {\n this.handler.onFinishScrollPageByKeyboard(evt);\n };\n\n MouseHandlerDefaultStateBase.prototype.onMouseDown = function (evt) {\n if (!this.handler.canFinishTextEditing()) return;\n this.onMouseDownCore(evt);\n if (this.handler.state !== this) this.handler.state.onMouseDown(evt);\n };\n\n MouseHandlerDefaultStateBase.prototype.onMouseDownCore = function (evt) {\n if (this.handler.canScrollPage(evt)) this.startScrolling(evt);else if (this.hasDiagramItem(evt) && this.canDragObjectOnMouseDown(evt.source.key)) this.onDragDiagramItemOnMouseDown(evt);else if (evt.button === Event_1.MouseButton.Left && evt.source.type === Event_1.MouseEventElementType.ShapeExpandButton && this.canExpandContainerOnMouseDown(evt.source.key)) this.onShapeExpandBtnMouseDown(evt);else {\n if (!this.hasDiagramItem(evt) && this.canClearSelectionOnMouseDown()) this.clearSelection();\n this.startPoint = evt.modelPoint;\n }\n };\n\n MouseHandlerDefaultStateBase.prototype.onDragDiagramItemOnMouseDown = function (evt) {\n this.replaceSelection(evt);\n };\n\n MouseHandlerDefaultStateBase.prototype.onMouseMove = function (evt) {\n this.onMouseMoveCore(evt);\n\n if (this.handler.state !== this) {\n this.handler.state.onMouseDown(this.handler.mouseDownEvent);\n this.handler.state.onMouseMove(evt);\n }\n };\n\n MouseHandlerDefaultStateBase.prototype.onMouseMoveCore = function (evt) {\n if (this.startPoint && (Math.abs(this.startPoint.x - evt.modelPoint.x) > MouseHandlerDefaultStateBase.startLimit || Math.abs(this.startPoint.y - evt.modelPoint.y) > MouseHandlerDefaultStateBase.startLimit)) {\n this.processOnMouseMoveAfterLimit(evt);\n this.startPoint = undefined;\n }\n };\n\n MouseHandlerDefaultStateBase.prototype.onMouseUp = function (evt) {\n this.onMouseUpCore(evt);\n if (this.handler.state !== this) this.handler.state.onMouseUp(evt);\n };\n\n MouseHandlerDefaultStateBase.prototype.onMouseUpCore = function (evt) {\n if (evt.source.type === Event_1.MouseEventElementType.Shape && this.canSelectOnMouseUp(evt.source.key)) this.replaceSelection(evt);else if (evt.source.type === Event_1.MouseEventElementType.Connector && this.canSelectOnMouseUp(evt.source.key)) this.replaceSelection(evt);else if (evt.source.type === Event_1.MouseEventElementType.ShapeExpandButton && this.canSelectOnMouseUp(evt.source.key)) this.replaceSelection(evt);else if (this.startPoint && this.canClearSelectionOnMouseUp()) this.clearSelection();\n this.startPoint = undefined;\n };\n\n MouseHandlerDefaultStateBase.prototype.onMouseWheel = function (evt) {\n if (this.handler.canStartZoomOnWheel(evt)) {\n this.handler.switchState(new MouseHandlerZoomOnWheelState_1.MouseHandlerZoomOnWheelState(this.handler, this.settings, this.view));\n this.handler.state.onMouseWheel(evt);\n return true;\n }\n\n return false;\n };\n\n MouseHandlerDefaultStateBase.prototype.onLongTouch = function (evt) {\n this.replaceMultipleSelection(evt.source.key);\n };\n\n MouseHandlerDefaultStateBase.prototype.finish = function () {\n this.startPoint = undefined;\n };\n\n MouseHandlerDefaultStateBase.prototype.startSelection = function (evt) {\n if (evt.button === Event_1.MouseButton.Left) this.handler.switchState(new MouseHandlerSelectionState_1.MouseHandlerSelectionState(this.handler, this.selection, this.visualizerManager));\n };\n\n MouseHandlerDefaultStateBase.prototype.startScrolling = function (evt) {\n if (evt.button === Event_1.MouseButton.Left) {\n this.handler.onDocumentDragScrollStart();\n this.handler.switchState(new MouseHandlerScrollingState_1.MouseHandlerScrollingState(this.handler, this.view, this.selection));\n }\n };\n\n MouseHandlerDefaultStateBase.prototype.inSelection = function (key) {\n return this.selection.hasKey(key);\n };\n\n MouseHandlerDefaultStateBase.prototype.hasDiagramItem = function (evt) {\n return evt.source.type === Event_1.MouseEventElementType.Shape || evt.source.type === Event_1.MouseEventElementType.Connector;\n };\n\n MouseHandlerDefaultStateBase.prototype.onShapeExpandBtnMouseDown = function (evt) {\n this.handler.addDiagramItemToSelection(evt);\n this.handler.switchState(new MouseHandlerToggleShapeExpandedState_1.MouseHandlerToggleShapeExpandedState(this.handler, this.history, this.model, this.selection));\n };\n\n MouseHandlerDefaultStateBase.prototype.replaceSelection = function (evt) {\n if (this.handler.canMultipleSelection(evt)) this.replaceMultipleSelection(evt.source.key);else this.handler.changeSingleSelection(evt.source.key);\n };\n\n MouseHandlerDefaultStateBase.prototype.replaceMultipleSelection = function (key) {\n if (this.selection.hasKey(key)) this.selection.remove(key);else this.selection.add(key);\n };\n\n MouseHandlerDefaultStateBase.prototype.clearSelection = function () {\n this.selection.set([]);\n };\n\n MouseHandlerDefaultStateBase.startLimit = unit_converter_1.UnitConverter.pixelsToTwips(1);\n return MouseHandlerDefaultStateBase;\n }(MouseHandlerStateBase_1.MouseHandlerStateBase);\n\n exports.MouseHandlerDefaultStateBase = MouseHandlerDefaultStateBase;\n /***/\n },\n /* 151 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics84 = function extendStatics(d, b) {\n _extendStatics84 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics84(d, b);\n };\n\n return function (d, b) {\n _extendStatics84(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerScrollingState = void 0;\n\n var MouseHandlerStateBase_1 = __webpack_require__(41);\n\n var Event_1 = __webpack_require__(14);\n\n var point_1 = __webpack_require__(1);\n\n var MouseHandlerScrollingState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerScrollingState, _super);\n\n function MouseHandlerScrollingState(handler, view, selection) {\n var _this = _super.call(this, handler) || this;\n\n _this.view = view;\n _this.selection = selection;\n _this.lastOffset = new point_1.Point(0, 0);\n return _this;\n }\n\n MouseHandlerScrollingState.prototype.onKeyUp = function (evt) {\n this.handler.onFinishScrollPageByKeyboard(evt);\n };\n\n MouseHandlerScrollingState.prototype.onMouseDown = function (evt) {\n evt.preventDefault = true;\n this.startPoint = this.getPointByEvent(evt);\n };\n\n MouseHandlerScrollingState.prototype.onMouseMove = function (evt) {\n if (evt.button !== Event_1.MouseButton.Left) {\n this.handler.onFinishScrollPageByMouse(evt);\n return;\n }\n\n var prevPoint = this.currentPoint || this.startPoint;\n evt.preventDefault = true;\n var point = this.getPointByEvent(evt);\n var actualOffset = this.view.scrollBy(new point_1.Point(point.x - prevPoint.x, point.y - prevPoint.y));\n this.lastOffset = this.lastOffset.clone().offset(actualOffset.x, actualOffset.y);\n this.currentPoint = point;\n };\n\n MouseHandlerScrollingState.prototype.onMouseUp = function (evt) {\n if (evt.button === Event_1.MouseButton.Left) this.handler.onFinishScrollPageByMouse(evt);\n this.handler.switchToDefaultState();\n };\n\n MouseHandlerScrollingState.prototype.cancelChanges = function () {\n if (this.currentPoint) this.view.scrollBy(this.lastOffset.clone().multiply(-1, -1));\n };\n\n MouseHandlerScrollingState.prototype.finish = function () {\n if (!this.currentPoint || !this.startPoint || this.currentPoint.equals(this.startPoint)) this.selection.set([]);\n\n _super.prototype.finish.call(this);\n };\n\n MouseHandlerScrollingState.prototype.getPointByEvent = function (evt) {\n return evt.offsetPoint;\n };\n\n return MouseHandlerScrollingState;\n }(MouseHandlerStateBase_1.MouseHandlerCancellableState);\n\n exports.MouseHandlerScrollingState = MouseHandlerScrollingState;\n /***/\n },\n /* 152 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics85 = function extendStatics(d, b) {\n _extendStatics85 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics85(d, b);\n };\n\n return function (d, b) {\n _extendStatics85(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDragDiagramItemStateBase = exports.DraggingConnector = void 0;\n\n var vector_1 = __webpack_require__(58);\n\n var ChangeConnectorPointsHistoryItem_1 = __webpack_require__(86);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var ConnectorRenderPointsContext_1 = __webpack_require__(85);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var Event_1 = __webpack_require__(14);\n\n var MouseHandlerDraggingState_1 = __webpack_require__(35);\n\n var DraggingConnector =\n /** @class */\n function () {\n function DraggingConnector(connector) {\n this.connector = connector;\n this.startPoints = connector.points.map(function (x) {\n return x.clone();\n });\n this.startRenderContext = connector.createRenderPointsContext();\n }\n\n return DraggingConnector;\n }();\n\n exports.DraggingConnector = DraggingConnector;\n\n var DraggingShape =\n /** @class */\n function () {\n function DraggingShape(shape) {\n this.shape = shape;\n this.startPosition = shape.position.clone();\n }\n\n return DraggingShape;\n }();\n\n var MouseHandlerDragDiagramItemStateBase =\n /** @class */\n function (_super) {\n __extends(MouseHandlerDragDiagramItemStateBase, _super);\n\n function MouseHandlerDragDiagramItemStateBase(handler, history, model, selection, visualizerManager) {\n var _this = _super.call(this, handler, history) || this;\n\n _this.model = model;\n _this.selection = selection;\n _this.visualizerManager = visualizerManager;\n _this.startScrollLeft = 0;\n _this.startScrollTop = 0;\n return _this;\n }\n\n MouseHandlerDragDiagramItemStateBase.prototype.finish = function () {\n this.visualizerManager.resetExtensionLines();\n this.visualizerManager.resetContainerTarget();\n this.visualizerManager.resetConnectionTarget();\n if (!this.hasTouchDown) this.visualizerManager.resetConnectionPoints();\n\n _super.prototype.finish.call(this);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.onMouseDown = function (evt) {\n var _this = this;\n\n this.handler.addDiagramItemToSelection(evt);\n this.shouldClone = this.handler.canCopySelectedItems(evt);\n this.startPoint = evt.modelPoint;\n this.hasTouchDown = evt.isTouchEvent;\n this.initDrag();\n this.lockInitDrag = false;\n if (!this.shouldClone) this.draggingShapes.forEach(function (draggingShape) {\n return _this.handler.addInteractingItem(draggingShape.shape, ModelOperationSettings_1.DiagramModelOperation.MoveShape);\n });\n\n _super.prototype.onMouseDown.call(this, evt);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.onMouseMove = function (evt) {\n this.mouseMoveEvent = evt;\n\n if (evt.button !== Event_1.MouseButton.Left) {\n this.cancelChanges();\n this.handler.switchToDefaultState();\n }\n\n if (!this.canApplyChangesOnMouseMove(this.startPoint, evt.modelPoint)) return;\n if (this.handler.canCopySelectedItems(evt)) if (!this.lockInitDrag) {\n this.cancelChanges();\n this.shouldClone = true;\n this.copySelection();\n this.initDrag();\n this.lockInitDrag = true;\n }\n this.onApplyChanges(evt);\n this.onAfterApplyChanges();\n this.updateContainers(evt);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.updateContainers = function (evt) {\n this.visualizerManager.setExtensionLines(this.selection.getSelectedShapes(false, true));\n var container = ModelUtils_1.ModelUtils.findContainerByEventKey(this.model, this.selection, evt.source.key);\n if (container && this.allowInsertToContainer(evt, container)) this.visualizerManager.setContainerTarget(container, evt.source.type);else this.visualizerManager.resetContainerTarget();\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.onMouseUp = function (evt) {\n _super.prototype.onMouseUp.call(this, evt);\n\n this.handler.removeDiagramItemFromSelection(evt.button, evt.source.key);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.onApplyChanges = function (evt) {\n var _this = this;\n\n this.calculateFixedPosition(evt);\n\n if (this.draggingShapes.length) {\n this.draggingShapes.forEach(function (ds) {\n return _this.moveShape(ds, evt);\n });\n var firstDraggingShape = this.draggingShapes[0];\n var offset_1 = vector_1.Vector.fromPoints(firstDraggingShape.startPosition.clone(), firstDraggingShape.shape.position.clone());\n if (offset_1.x || offset_1.y) this.draggingConnectors.forEach(function (dc) {\n return _this.moveConnectorCore(dc.connector, dc.startPoints, dc.startRenderContext, offset_1);\n });\n } else this.draggingConnectors.forEach(function (x) {\n return _this.moveConnector(x, evt);\n });\n\n var container = ModelUtils_1.ModelUtils.findContainerByEventKey(this.model, this.selection, evt.source.key);\n if (container && this.allowInsertToContainer(evt, container)) ModelUtils_1.ModelUtils.insertSelectionToContainer(this.history, this.model, this.selection, container);else ModelUtils_1.ModelUtils.removeSelectionFromContainer(this.history, this.model, this.selection);\n this.handler.tryUpdateModelSize(function (offsetLeft, offsetTop) {\n _this.modelConnectorsWithoutBeginItemInfo.forEach(function (pi) {\n pi.point.x += offsetLeft;\n pi.point.y += offsetTop;\n });\n\n _this.modelConnectorsWithoutEndItemInfo.forEach(function (pi) {\n pi.point.x += offsetLeft;\n pi.point.y += offsetTop;\n });\n });\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.getDraggingElementKeys = function () {\n return this.draggingShapes.map(function (x) {\n return x.shape.key;\n }).concat(this.draggingConnectors.map(function (x) {\n return x.connector.key;\n }));\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.getSnappedPoint = function (evt, point) {\n return this.handler.getSnappedPointOnDragDiagramItem(evt, point, this.fixedX, this.fixedY, this.startPoint);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.initDrag = function () {\n this.selectedItems = ModelUtils_1.ModelUtils.createSelectedItems(this.selection);\n this.initDraggingShapes();\n\n if (!this.areValidDraggingShapes) {\n this.handler.switchToDefaultState();\n return;\n }\n\n this.initDraggingConnectors();\n\n if (!this.areValidDraggingConnectors) {\n this.handler.switchToDefaultState();\n return;\n }\n\n this.modelConnectorsWithoutBeginItemInfo = this.createModelConnectorsWithoutBeginItemInfo();\n this.modelConnectorsWithoutEndItemInfo = this.createModelConnectorsWithoutEndItemInfo();\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.initDraggingShapes = function () {\n this.draggingShapes = this.selection.getSelectedShapes(false, true).map(function (s) {\n return new DraggingShape(s);\n });\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.initDraggingConnectors = function () {\n var _this = this;\n\n this.draggingConnectors = [];\n this.draggingConnectorsIndexByKey = {};\n this.selection.getSelectedConnectors(false, true).forEach(function (c) {\n return _this.registerConnector(c);\n });\n if (this.shouldClone) return;\n this.draggingShapes.forEach(function (x) {\n var attachedConnectors = x.shape.attachedConnectors;\n if (attachedConnectors) attachedConnectors.forEach(function (c) {\n if (!_this.containsDraggingConnectorByKey(c.key)) _this.registerConnector(c);\n });\n });\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.copySelection = function () {\n var _this = this;\n\n ModelUtils_1.ModelUtils.cloneSelectionToOffset(this.history, this.model, function (key) {\n var item = _this.model.findItem(key);\n\n if (item) _this.handler.addInteractingItem(item, ModelOperationSettings_1.DiagramModelOperation.AddShape);\n }, this.selection, 0, 0);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.calculateFixedPosition = function (evt) {\n this.fixedX = false;\n this.fixedY = false;\n\n if (this.handler.canCalculateFixedPosition(evt)) {\n var dx = Math.abs(this.startPoint.x - evt.modelPoint.x);\n var dy = Math.abs(this.startPoint.y - evt.modelPoint.y);\n if (dx < dy) this.fixedX = true;else this.fixedY = true;\n }\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.containsDraggingConnectorByKey = function (key) {\n return this.draggingConnectorsIndexByKey[key] !== undefined;\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.allowInsertToContainer = function (evt, container) {\n if (this.handler.canMultipleSelection(evt)) return false;\n return container && container.expanded && ModelUtils_1.ModelUtils.canInsertSelectionToContainer(this.model, this.selection, container);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.registerConnector = function (connector) {\n this.draggingConnectorsIndexByKey[connector.key] = this.draggingConnectors.push(new DraggingConnector(connector)) - 1;\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.createModelConnectorsWithoutBeginItemInfo = function () {\n var _this = this;\n\n var connectors = this.model.findConnectorsCore(function (c) {\n return !c.beginItem && !_this.containsDraggingConnectorByKey(c.key);\n });\n return connectors.map(function (c) {\n return {\n connector: c,\n point: c.points[0].clone()\n };\n });\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.createModelConnectorsWithoutEndItemInfo = function () {\n var _this = this;\n\n var connectors = this.model.findConnectorsCore(function (c) {\n return !c.endItem && !_this.containsDraggingConnectorByKey(c.key);\n });\n return connectors.map(function (c) {\n return {\n connector: c,\n point: c.points[c.points.length - 1].clone()\n };\n });\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.moveConnector = function (dc, evt) {\n var startPoints = dc.startPoints;\n var offset = vector_1.Vector.fromPoints(startPoints[0].clone(), this.getSnappedPoint(evt, startPoints[0]).clone());\n if (offset.x || offset.y) this.moveConnectorCore(dc.connector, startPoints, dc.startRenderContext, offset);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.moveConnectorCore = function (connector, startPoints, startRenderContext, offset) {\n if (this.shouldClone || ModelUtils_1.ModelUtils.canMoveConnector(this.selectedItems, connector)) this.offsetConnector(connector, startPoints, startRenderContext, offset);else this.changeConnector(connector);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.moveShape = function (ds, evt) {\n var _this = this;\n\n var shape = ds.shape;\n var position = this.getSnappedPoint(evt, ds.startPosition);\n ModelUtils_1.ModelUtils.setShapePosition(this.history, this.model, shape, position);\n ModelUtils_1.ModelUtils.updateMovingShapeConnections(this.history, shape, this.modelConnectorsWithoutBeginItemInfo, this.modelConnectorsWithoutEndItemInfo, function () {\n _this.visualizerManager.resetConnectionTarget();\n\n _this.visualizerManager.resetConnectionPoints();\n }, function (shape, connectionPointIndex) {\n _this.visualizerManager.setConnectionTarget(shape, Event_1.MouseEventElementType.Shape);\n\n _this.visualizerManager.setConnectionPoints(shape, Event_1.MouseEventElementType.Shape, connectionPointIndex, true);\n }, function (connector) {\n return _this.handler.addInteractingItem(connector);\n });\n if (!this.draggingConnectors.filter(function (dc) {\n return !!_this.selectedItems[dc.connector.key];\n }).length) ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(this.history, this.model, shape);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.offsetConnector = function (connector, startPoints, startRenderContext, offset) {\n var _this = this;\n\n var newPoints = startPoints.map(function (p) {\n return _this.offsetPoint(p, offset);\n });\n if (!newPoints[0].equals(connector.points[0])) this.history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ChangeConnectorPointsHistoryItem(connector.key, newPoints, this.offsetRenderContext(startRenderContext, offset)));\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.offsetRenderContext = function (context, offset) {\n var _this = this;\n\n if (context === undefined) return undefined;\n return new ConnectorRenderPointsContext_1.ConnectorRenderPointsContext(context.renderPoints.map(function (p) {\n var newPoint = _this.offsetPoint(p, offset);\n\n return new ConnectorRenderPoint_1.ConnectorRenderPoint(newPoint.x, newPoint.y, p.pointIndex, p.skipped);\n }), true, context.actualRoutingMode);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.offsetPoint = function (point, offset) {\n var pointOffset = vector_1.Vector.fromPoints(point, this.startPoint);\n return this.startPoint.clone().offset(offset.x - pointOffset.x, offset.y - pointOffset.y);\n };\n\n MouseHandlerDragDiagramItemStateBase.prototype.changeConnector = function (connector) {\n ModelUtils_1.ModelUtils.removeConnectorIntermediatePoints(this.history, connector);\n ModelUtils_1.ModelUtils.updateConnectorAttachedPoints(this.history, this.model, connector);\n };\n\n return MouseHandlerDragDiagramItemStateBase;\n }(MouseHandlerDraggingState_1.MouseHandlerDraggingState);\n\n exports.MouseHandlerDragDiagramItemStateBase = MouseHandlerDragDiagramItemStateBase;\n /***/\n },\n /* 153 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics86 = function extendStatics(d, b) {\n _extendStatics86 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics86(d, b);\n };\n\n return function (d, b) {\n _extendStatics86(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDefaultReadOnlyState = void 0;\n\n var MouseHandlerDefaultStateBase_1 = __webpack_require__(150);\n\n var MouseHandlerDefaultReadOnlyState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerDefaultReadOnlyState, _super);\n\n function MouseHandlerDefaultReadOnlyState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerDefaultReadOnlyState.prototype.canDragObjectOnMouseDown = function (key) {\n return false;\n };\n\n MouseHandlerDefaultReadOnlyState.prototype.canExpandContainerOnMouseDown = function (key) {\n return false;\n };\n\n MouseHandlerDefaultReadOnlyState.prototype.canClearSelectionOnMouseDown = function () {\n return false;\n };\n\n MouseHandlerDefaultReadOnlyState.prototype.processOnMouseMoveAfterLimit = function (evt) {\n this.startSelection(evt);\n };\n\n MouseHandlerDefaultReadOnlyState.prototype.canSelectOnMouseUp = function (key) {\n return true;\n };\n\n MouseHandlerDefaultReadOnlyState.prototype.canClearSelectionOnMouseUp = function () {\n return true;\n };\n\n MouseHandlerDefaultReadOnlyState.prototype.updateConnectionsOnMouseMove = function (evt) {};\n\n return MouseHandlerDefaultReadOnlyState;\n }(MouseHandlerDefaultStateBase_1.MouseHandlerDefaultStateBase);\n\n exports.MouseHandlerDefaultReadOnlyState = MouseHandlerDefaultReadOnlyState;\n /***/\n },\n /* 154 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics87 = function extendStatics(d, b) {\n _extendStatics87 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics87(d, b);\n };\n\n return function (d, b) {\n _extendStatics87(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeShapeTextHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangeShapeTextHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeShapeTextHistoryItem, _super);\n\n function ChangeShapeTextHistoryItem(item, text) {\n var _this = _super.call(this) || this;\n\n _this.shapeKey = item.key;\n _this.text = text;\n return _this;\n }\n\n ChangeShapeTextHistoryItem.prototype.redo = function (manipulator) {\n var item = manipulator.model.findShape(this.shapeKey);\n this.oldText = item.text;\n manipulator.changeShapeText(item, this.text);\n };\n\n ChangeShapeTextHistoryItem.prototype.undo = function (manipulator) {\n var item = manipulator.model.findShape(this.shapeKey);\n manipulator.changeShapeText(item, this.oldText);\n };\n\n return ChangeShapeTextHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeShapeTextHistoryItem = ChangeShapeTextHistoryItem;\n /***/\n },\n /* 155 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TargetVisualizerBase = void 0;\n\n var TargetVisualizerBase =\n /** @class */\n function () {\n function TargetVisualizerBase(dispatcher) {\n this.dispatcher = dispatcher;\n }\n\n TargetVisualizerBase.prototype.getKey = function () {\n return this.key;\n };\n\n TargetVisualizerBase.prototype.setTargetRect = function (key, targetRect, targetStrokeWidth) {\n if (this.key !== key) {\n this.key = key;\n this.targetRect = targetRect;\n this.targetStrokeWidth = targetStrokeWidth;\n this.raiseShow();\n }\n };\n\n TargetVisualizerBase.prototype.reset = function () {\n if (this.key !== \"-1\") {\n this.key = \"-1\";\n this.targetRect = undefined;\n this.targetStrokeWidth = 0;\n this.raiseHide();\n }\n };\n\n return TargetVisualizerBase;\n }();\n\n exports.TargetVisualizerBase = TargetVisualizerBase;\n /***/\n },\n /* 156 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExtensionLinesVisualizer = exports.ExtensionLine = exports.ExtensionLineType = void 0;\n var ExtensionLineType;\n\n (function (ExtensionLineType) {\n ExtensionLineType[ExtensionLineType[\"LeftToLeftAbove\"] = 0] = \"LeftToLeftAbove\";\n ExtensionLineType[ExtensionLineType[\"LeftToLeftBelow\"] = 1] = \"LeftToLeftBelow\";\n ExtensionLineType[ExtensionLineType[\"RightToRightAbove\"] = 2] = \"RightToRightAbove\";\n ExtensionLineType[ExtensionLineType[\"RightToRightBelow\"] = 3] = \"RightToRightBelow\";\n ExtensionLineType[ExtensionLineType[\"LeftToRightAbove\"] = 4] = \"LeftToRightAbove\";\n ExtensionLineType[ExtensionLineType[\"LeftToRightBelow\"] = 5] = \"LeftToRightBelow\";\n ExtensionLineType[ExtensionLineType[\"RightToLeftAbove\"] = 6] = \"RightToLeftAbove\";\n ExtensionLineType[ExtensionLineType[\"RightToLeftBelow\"] = 7] = \"RightToLeftBelow\";\n ExtensionLineType[ExtensionLineType[\"TopToTopBefore\"] = 8] = \"TopToTopBefore\";\n ExtensionLineType[ExtensionLineType[\"TopToTopAfter\"] = 9] = \"TopToTopAfter\";\n ExtensionLineType[ExtensionLineType[\"BottomToBottomBefore\"] = 10] = \"BottomToBottomBefore\";\n ExtensionLineType[ExtensionLineType[\"BottomToBottomAfter\"] = 11] = \"BottomToBottomAfter\";\n ExtensionLineType[ExtensionLineType[\"TopToBottomBefore\"] = 12] = \"TopToBottomBefore\";\n ExtensionLineType[ExtensionLineType[\"TopToBottomAfter\"] = 13] = \"TopToBottomAfter\";\n ExtensionLineType[ExtensionLineType[\"BottomToTopBefore\"] = 14] = \"BottomToTopBefore\";\n ExtensionLineType[ExtensionLineType[\"BottomToTopAfter\"] = 15] = \"BottomToTopAfter\";\n ExtensionLineType[ExtensionLineType[\"HorizontalCenterAbove\"] = 16] = \"HorizontalCenterAbove\";\n ExtensionLineType[ExtensionLineType[\"HorizontalCenterBelow\"] = 17] = \"HorizontalCenterBelow\";\n ExtensionLineType[ExtensionLineType[\"VerticalCenterBefore\"] = 18] = \"VerticalCenterBefore\";\n ExtensionLineType[ExtensionLineType[\"VerticalCenterAfter\"] = 19] = \"VerticalCenterAfter\";\n ExtensionLineType[ExtensionLineType[\"VerticalCenterToPageCenter\"] = 20] = \"VerticalCenterToPageCenter\";\n ExtensionLineType[ExtensionLineType[\"HorizontalCenterToPageCenter\"] = 21] = \"HorizontalCenterToPageCenter\";\n ExtensionLineType[ExtensionLineType[\"LeftToPageCenter\"] = 22] = \"LeftToPageCenter\";\n ExtensionLineType[ExtensionLineType[\"RightToPageCenter\"] = 23] = \"RightToPageCenter\";\n ExtensionLineType[ExtensionLineType[\"TopToPageCenter\"] = 24] = \"TopToPageCenter\";\n ExtensionLineType[ExtensionLineType[\"BottomToPageCenter\"] = 25] = \"BottomToPageCenter\";\n })(ExtensionLineType = exports.ExtensionLineType || (exports.ExtensionLineType = {}));\n\n var ExtensionLine =\n /** @class */\n function () {\n function ExtensionLine(type, segment, text) {\n this.type = type;\n this.segment = segment;\n this.text = text;\n }\n\n return ExtensionLine;\n }();\n\n exports.ExtensionLine = ExtensionLine;\n\n var ExtensionLinesVisualizer =\n /** @class */\n function () {\n function ExtensionLinesVisualizer(dispatcher) {\n this.dispatcher = dispatcher;\n this.lines = [];\n this.lineIndexByType = {};\n }\n\n ExtensionLinesVisualizer.prototype.addSegment = function (type, segment, text) {\n var curIndex = this.lineIndexByType[type];\n\n if (curIndex === undefined) {\n var line = new ExtensionLine(type, segment, text);\n var index = this.lines.push(line);\n this.lineIndexByType[line.type] = index - 1;\n this.raiseShow();\n } else if (segment.length < this.lines[curIndex].segment.length) {\n var line = new ExtensionLine(type, segment, text);\n this.lines.splice(curIndex, 1, line);\n this.raiseShow();\n }\n };\n\n ExtensionLinesVisualizer.prototype.update = function () {\n this.raiseShow();\n };\n\n ExtensionLinesVisualizer.prototype.reset = function () {\n if (this.lines.length) {\n this.lines = [];\n this.lineIndexByType = {};\n this.raiseHide();\n }\n };\n\n ExtensionLinesVisualizer.prototype.raiseShow = function () {\n var _this = this;\n\n this.dispatcher.raise1(function (l) {\n return l.notifyExtensionLinesShow(_this.lines);\n });\n };\n\n ExtensionLinesVisualizer.prototype.raiseHide = function () {\n this.dispatcher.raise1(function (l) {\n return l.notifyExtensionLinesHide();\n });\n };\n\n return ExtensionLinesVisualizer;\n }();\n\n exports.ExtensionLinesVisualizer = ExtensionLinesVisualizer;\n /***/\n },\n /* 157 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics88 = function extendStatics(d, b) {\n _extendStatics88 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics88(d, b);\n };\n\n return function (d, b) {\n _extendStatics88(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CanvasSelectionManager = exports.ACTIVE_SELECTION_CSSCLASS = exports.SELECTION_ELEMENT_CLASSNAMES = void 0;\n\n var CanvasManagerBase_1 = __webpack_require__(43);\n\n var GroupPrimitive_1 = __webpack_require__(40);\n\n var Utils_1 = __webpack_require__(17);\n\n var Event_1 = __webpack_require__(14);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var Utils_2 = __webpack_require__(3);\n\n var point_1 = __webpack_require__(1);\n\n var ExtensionLinesVisualizer_1 = __webpack_require__(156);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var TextPrimitive_1 = __webpack_require__(62);\n\n var EllipsePrimitive_1 = __webpack_require__(54);\n\n var Style_1 = __webpack_require__(27);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var ITextMeasurer_1 = __webpack_require__(44);\n\n var dom_1 = __webpack_require__(23);\n\n var CanvasItemsManager_1 = __webpack_require__(77);\n\n var CanvasManager_1 = __webpack_require__(141);\n\n var metrics_1 = __webpack_require__(36);\n\n var math_1 = __webpack_require__(32);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var MULTIPLE_SELECTION_KEY = \"-1\";\n exports.SELECTION_ELEMENT_CLASSNAMES = {\n SELECTION_RECTANGLE: \"selection-rect\",\n CONNECTION_POINT: \"connection-point\",\n ACTIVE: \"active\",\n CONTAINER_TARGET: \"container-target\",\n CONNECTION_TARGET: \"connection-target\",\n EXTENSION_LINE: \"extension-line\",\n CONNECTION_MARK: \"connection-mark\",\n SELECTION_MARK: \"selection-mark\",\n LOCKED_SELECTION_MARK: \"locked-selection-mark\",\n ITEMS_SELECTION_RECT: \"items-selection-rect\",\n CONNECTOR_MULTI_SELECTION: \"connector-multi-selection\",\n CONNECTOR_SELECTION: \"connector-selection\",\n CONNECTOR_POINT_MARK: \"connector-point-mark\",\n CONNECTOR_SELECTION_MASK: \"connector-selection-mask\",\n CONNECTOR_SIDE_MARK: \"connector-side-mark\",\n ITEM_SELECTION_RECT: \"item-selection-rect\",\n ITEM_MULTI_SELECTION: \"item-multi-selection-rect\"\n };\n exports.ACTIVE_SELECTION_CSSCLASS = \"dxdi-active-selection\";\n\n var CanvasSelectionManager =\n /** @class */\n function (_super) {\n __extends(CanvasSelectionManager, _super);\n\n function CanvasSelectionManager(parent, zoomLevel, readOnly, dom, isTouchUIEnabled) {\n var _this = _super.call(this, zoomLevel, dom) || this;\n\n _this.readOnly = readOnly;\n _this.isTouchUIEnabled = isTouchUIEnabled;\n _this.connectionPointElements = [];\n _this.extensionLineElements = [];\n _this.selectionMap = {};\n _this.parentContainer = parent;\n\n _this.initializeContainerElements(parent);\n\n return _this;\n }\n\n CanvasSelectionManager.prototype.initializeContainerElements = function (parent) {\n this.itemSelectionContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), parent);\n this.visualizersContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), parent);\n this.selectionMarksContainer = this.createAndChangePrimitiveElement(new GroupPrimitive_1.GroupPrimitive([], null), parent);\n };\n\n CanvasSelectionManager.prototype.clear = function () {\n Utils_1.RenderUtils.removeContent(this.itemSelectionContainer);\n Utils_1.RenderUtils.removeContent(this.selectionMarksContainer);\n Utils_1.RenderUtils.removeContent(this.visualizersContainer);\n this.selectionRectElement = undefined;\n this.resizeInfoElement = undefined;\n this.connectionPointElements = [];\n this.connectionTargetElement = undefined;\n this.containerTargetElement = undefined;\n this.extensionLineElements = [];\n this.selectionMap = {};\n };\n\n CanvasSelectionManager.prototype.showSelectionRect = function (rect) {\n dom_1.DomUtils.addClassName(this.parentContainer, exports.ACTIVE_SELECTION_CSSCLASS);\n var primitive = new RectaglePrimitive_1.RectanglePrimitive(rect.x, rect.y, rect.width, rect.height, Style_1.StrokeStyle.default1pxInstance, exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_RECTANGLE);\n var rectEl = this.getSelectionRectElement(primitive);\n this.changePrimitiveElement(primitive, rectEl);\n };\n\n CanvasSelectionManager.prototype.hideSelectionRect = function () {\n dom_1.DomUtils.removeClassName(this.parentContainer, exports.ACTIVE_SELECTION_CSSCLASS);\n if (this.selectionRectElement !== undefined) this.dom.changeByFunc(this.selectionRectElement, function (e) {\n return e.style.display = \"none\";\n });\n };\n\n CanvasSelectionManager.prototype.getSelectionRectElement = function (primitive) {\n if (this.selectionRectElement !== undefined) this.dom.changeByFunc(this.selectionRectElement, function (e) {\n return e.style.display = \"\";\n });else this.selectionRectElement = this.createPrimitiveElement(primitive, this.visualizersContainer);\n return this.selectionRectElement;\n };\n\n CanvasSelectionManager.prototype.showResizeInfo = function (point, text) {\n var rectPrimitive = new RectaglePrimitive_1.RectanglePrimitive(point.x, point.y, 0, 0, Style_1.StrokeStyle.default1pxInstance);\n var primitive = new GroupPrimitive_1.GroupPrimitive([rectPrimitive, new TextPrimitive_1.TextPrimitive(point.x, point.y, text, ITextMeasurer_1.TextOwner.Resize)], \"resize-info\");\n var groupEl = this.getResizeInfoElement(primitive);\n this.changePrimitiveElement(primitive, groupEl);\n var textSize = this.dom.measurer.measureTextLine(text, null, ITextMeasurer_1.TextOwner.Resize).applyConverter(unit_converter_1.UnitConverter.pixelsToTwips);\n rectPrimitive.width = textSize.width + CanvasSelectionManager.resizeInfoTextOffset * 2;\n rectPrimitive.height = textSize.height + CanvasSelectionManager.resizeInfoTextOffset * 2;\n rectPrimitive.x = point.x - textSize.width / 2 - CanvasSelectionManager.resizeInfoTextOffset;\n rectPrimitive.y = point.y - textSize.height / 2 - CanvasSelectionManager.resizeInfoTextOffset;\n this.changePrimitiveElement(primitive, groupEl);\n };\n\n CanvasSelectionManager.prototype.hideResizeInfo = function () {\n if (this.resizeInfoElement !== undefined) this.dom.changeByFunc(this.resizeInfoElement, function (e) {\n return e.style.display = \"none\";\n });\n };\n\n CanvasSelectionManager.prototype.getResizeInfoElement = function (primitive) {\n if (this.resizeInfoElement !== undefined) this.dom.changeByFunc(this.resizeInfoElement, function (e) {\n return e.style.display = \"\";\n });else this.resizeInfoElement = this.createPrimitiveElement(primitive, this.visualizersContainer);\n return this.resizeInfoElement;\n };\n\n CanvasSelectionManager.prototype.getConnectionPointClassName = function (active, allowed) {\n var className = exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTION_POINT;\n if (active) className += \" \" + exports.SELECTION_ELEMENT_CLASSNAMES.ACTIVE;\n if (!allowed) className += \" \" + CanvasItemsManager_1.NOT_VALID_CSSCLASS;\n return className;\n };\n\n CanvasSelectionManager.prototype.showConnectionPoint = function (index, point, key, value, active, allowed) {\n this.showConnectionPointCore(index * 2, point.x, point.y, CanvasSelectionManager.connectionPointLargeSize, CanvasSelectionManager.connectionPointLargeSize, Event_1.MouseEventElementType.ShapeConnectionPoint, key, value, exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTION_POINT + \" selector\" + (!allowed ? \" \" + CanvasItemsManager_1.NOT_VALID_CSSCLASS : \"\"));\n this.showConnectionPointCore(index * 2 + 1, point.x, point.y, CanvasSelectionManager.connectionPointSmallSize, CanvasSelectionManager.connectionPointSmallSize, Event_1.MouseEventElementType.ShapeConnectionPoint, key, value, this.getConnectionPointClassName(active, allowed));\n };\n\n CanvasSelectionManager.prototype.showConnectionPointCore = function (index, cx, cy, rx, ry, type, key, value, className) {\n var primitive = new EllipsePrimitive_1.EllipsePrimitive(cx, cy, rx, ry, null, className, function (e) {\n return Utils_1.RenderUtils.setElementEventData(e, type, key, value);\n });\n var ellEl = this.getConnectionPointElement(primitive, index);\n this.changePrimitiveElement(primitive, ellEl);\n };\n\n CanvasSelectionManager.prototype.hideConnectionPoints = function () {\n for (var i = 0; i < this.connectionPointElements.length; i++) {\n this.dom.changeByFunc(this.connectionPointElements[i], function (e) {\n return e.style.display = \"none\";\n });\n }\n };\n\n CanvasSelectionManager.prototype.getConnectionPointElement = function (primitive, index) {\n var ellEl = this.connectionPointElements[index];\n if (ellEl !== undefined) this.dom.changeByFunc(ellEl, function (e) {\n return e.style.display = \"\";\n });else {\n ellEl = this.createPrimitiveElement(primitive, this.visualizersContainer);\n this.connectionPointElements[index] = ellEl;\n }\n return ellEl;\n };\n\n CanvasSelectionManager.prototype.showContainerTarget = function (index, targetRect) {\n var primitive = new RectaglePrimitive_1.RectanglePrimitive(targetRect.x, targetRect.y, targetRect.width, targetRect.height, null, exports.SELECTION_ELEMENT_CLASSNAMES.CONTAINER_TARGET);\n var rectEl = this.getContainerTargetElement(primitive);\n this.changePrimitiveElement(primitive, rectEl);\n };\n\n CanvasSelectionManager.prototype.hideContainerTarget = function () {\n if (this.containerTargetElement) this.dom.changeByFunc(this.containerTargetElement, function (e) {\n return e.style.display = \"none\";\n });\n };\n\n CanvasSelectionManager.prototype.getContainerTargetElement = function (primitive) {\n if (this.containerTargetElement !== undefined) this.dom.changeByFunc(this.containerTargetElement, function (e) {\n return e.style.display = \"\";\n });else this.containerTargetElement = this.createPrimitiveElement(primitive, this.itemSelectionContainer);\n return this.containerTargetElement;\n };\n\n CanvasSelectionManager.prototype.showConnectionTarget = function (index, targetRect) {\n var primitive = new RectaglePrimitive_1.RectanglePrimitive(targetRect.x, targetRect.y, targetRect.width, targetRect.height, null, exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTION_TARGET);\n var rectEl = this.getConnectionTargetElement(primitive);\n this.changePrimitiveElement(primitive, rectEl);\n };\n\n CanvasSelectionManager.prototype.hideConnectionTarget = function () {\n if (this.connectionTargetElement) this.dom.changeByFunc(this.connectionTargetElement, function (e) {\n return e.style.display = \"none\";\n });\n };\n\n CanvasSelectionManager.prototype.getConnectionTargetElement = function (primitive) {\n if (this.connectionTargetElement !== undefined) this.dom.changeByFunc(this.connectionTargetElement, function (e) {\n return e.style.display = \"\";\n });else this.connectionTargetElement = this.createPrimitiveElement(primitive, this.itemSelectionContainer);\n return this.connectionTargetElement;\n };\n\n CanvasSelectionManager.prototype.showExtensionLine = function (index, type, startPoint, endPoint, text) {\n var className = exports.SELECTION_ELEMENT_CLASSNAMES.EXTENSION_LINE;\n if (type === ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterAfter || type === ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterBefore || type === ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterAbove || type === ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterBelow) className += \" center\";\n if (type === ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterToPageCenter || type === ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterToPageCenter || type === ExtensionLinesVisualizer_1.ExtensionLineType.LeftToPageCenter || type === ExtensionLinesVisualizer_1.ExtensionLineType.RightToPageCenter || type === ExtensionLinesVisualizer_1.ExtensionLineType.TopToPageCenter || type === ExtensionLinesVisualizer_1.ExtensionLineType.BottomToPageCenter) className += \" page\";\n var x1_1 = 0;\n var y1_1 = 0;\n var x1_2 = 0;\n var y1_2 = 0;\n var x2_1 = 0;\n var y2_1 = 0;\n var x2_2 = 0;\n var y2_2 = 0;\n\n if (startPoint.y === endPoint.y) {\n x1_1 = startPoint.x - CanvasSelectionManager.extensionLineWidth;\n y1_1 = startPoint.y - CanvasSelectionManager.extensionLineEndingSize;\n x1_2 = startPoint.x - CanvasSelectionManager.extensionLineWidth;\n y1_2 = startPoint.y + CanvasSelectionManager.extensionLineEndingSize;\n x2_1 = endPoint.x - CanvasSelectionManager.extensionLineWidth;\n y2_1 = startPoint.y - CanvasSelectionManager.extensionLineEndingSize;\n x2_2 = endPoint.x - CanvasSelectionManager.extensionLineWidth;\n y2_2 = startPoint.y + CanvasSelectionManager.extensionLineEndingSize;\n } else if (startPoint.x === endPoint.x) {\n x1_1 = startPoint.x - CanvasSelectionManager.extensionLineEndingSize;\n y1_1 = startPoint.y - CanvasSelectionManager.extensionLineWidth;\n x1_2 = startPoint.x + CanvasSelectionManager.extensionLineEndingSize;\n y1_2 = startPoint.y - CanvasSelectionManager.extensionLineWidth;\n x2_1 = startPoint.x - CanvasSelectionManager.extensionLineEndingSize;\n y2_1 = endPoint.y - CanvasSelectionManager.extensionLineWidth;\n x2_2 = startPoint.x + CanvasSelectionManager.extensionLineEndingSize;\n y2_2 = endPoint.y - CanvasSelectionManager.extensionLineWidth;\n }\n\n var sizeLineXCorr = 0;\n var sizeLineYCorr = 0;\n if (type === ExtensionLinesVisualizer_1.ExtensionLineType.RightToRightAbove || type === ExtensionLinesVisualizer_1.ExtensionLineType.RightToRightBelow) sizeLineXCorr -= CanvasSelectionManager.extensionLineWidth;\n if (type === ExtensionLinesVisualizer_1.ExtensionLineType.BottomToBottomAfter || type === ExtensionLinesVisualizer_1.ExtensionLineType.BottomToBottomBefore) sizeLineYCorr -= CanvasSelectionManager.extensionLineWidth;\n var children = [new PathPrimitive_1.PathPrimitive([PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(startPoint.clone().offset(sizeLineXCorr, sizeLineYCorr)), PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(endPoint.clone().offset(sizeLineXCorr, sizeLineYCorr))], Style_1.StrokeStyle.default1pxInstance, \"size-line\"), new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(x1_1, y1_1), new PathPrimitive_1.PathPrimitiveLineToCommand(x1_2, y1_2), new PathPrimitive_1.PathPrimitiveMoveToCommand(x2_1, y2_1), new PathPrimitive_1.PathPrimitiveLineToCommand(x2_2, y2_2)], Style_1.StrokeStyle.default1pxInstance), new TextPrimitive_1.TextPrimitive((endPoint.x + startPoint.x) / 2, (endPoint.y + startPoint.y) / 2, text, ITextMeasurer_1.TextOwner.ExtensionLine, undefined, undefined, undefined, null, undefined, null, CanvasManagerBase_1.PAGE_BG_TEXTFLOOR_FILTER_ID)];\n var primitive = new GroupPrimitive_1.GroupPrimitive(children, className);\n var ellEl = this.getExtensionLineElement(primitive, index);\n this.changePrimitiveElement(primitive, ellEl);\n };\n\n CanvasSelectionManager.prototype.hideExtensionLines = function () {\n for (var i = 0; i < this.extensionLineElements.length; i++) {\n if (this.extensionLineElements[i]) this.dom.changeByFunc(this.extensionLineElements[i], function (e) {\n return e.style.display = \"none\";\n });\n }\n };\n\n CanvasSelectionManager.prototype.getExtensionLineElement = function (primitive, index) {\n var ellEl = this.extensionLineElements[index];\n if (ellEl !== undefined) this.dom.changeByFunc(ellEl, function (e) {\n return e.style.display = \"\";\n });else {\n ellEl = this.createPrimitiveElement(primitive, this.visualizersContainer);\n this.extensionLineElements[index] = ellEl;\n }\n return ellEl;\n };\n\n CanvasSelectionManager.prototype.getOrCreateShapeSelection = function (shape, usedItems) {\n var element = this.selectionMap[shape.key];\n\n if (!element) {\n element = new ShapeSelectionElement(this.itemSelectionContainer, this.selectionMarksContainer, this.actualZoom, this.readOnly, this.dom, this.isTouchUIEnabled, shape.key, shape.isLocked, shape.rectangle, shape.style, shape.allowResizeHorizontally, shape.allowResizeVertically, shape.description.getParameterPoints(shape));\n this.selectionMap[shape.key] = element;\n }\n\n usedItems && (usedItems[shape.key] = true);\n return element;\n };\n\n CanvasSelectionManager.prototype.getOrCreateConnectorSelection = function (connector, usedItems) {\n var element = this.selectionMap[connector.key];\n var points = connector.getRenderPoints();\n\n if (!element) {\n element = new ConnectorSelectionElement(this.itemSelectionContainer, this.selectionMarksContainer, this.actualZoom, this.readOnly, this.dom, this.isTouchUIEnabled, connector.key, connector.isLocked, connector.rectangle, points, connector.style, connector.styleText, connector.enableText, connector.texts.map(function (t) {\n var textInfo = Utils_2.GeometryUtils.getPathPointByPosition(points, t.position);\n return {\n text: connector.getText(t.position),\n point: textInfo[0],\n pointIndex: textInfo[1],\n pos: t.position\n };\n }).sort(function (a, b) {\n return a.pos - b.pos;\n }), connector.points, connector.properties.lineOption);\n this.selectionMap[connector.key] = element;\n }\n\n usedItems && (usedItems[connector.key] = true);\n return element;\n };\n\n CanvasSelectionManager.prototype.getOrCreateMultipleSelection = function (usedItems) {\n var element = this.selectionMap[MULTIPLE_SELECTION_KEY];\n\n if (!element) {\n element = new MultipleSelectionElement(this.itemSelectionContainer, this.selectionMarksContainer, this.actualZoom, this.readOnly, this.dom, this.isTouchUIEnabled);\n this.selectionMap[MULTIPLE_SELECTION_KEY] = element;\n }\n\n usedItems[MULTIPLE_SELECTION_KEY] = true;\n return element;\n };\n\n CanvasSelectionManager.prototype.getMultipleSelection = function () {\n return this.selectionMap[MULTIPLE_SELECTION_KEY];\n };\n\n CanvasSelectionManager.prototype.updateShapeSelection = function (shape, multipleSelection) {\n if (shape.key in this.selectionMap) {\n this.getOrCreateShapeSelection(shape).onModelChanged(shape.isLocked, shape.rectangle, shape.style, shape.allowResizeHorizontally, shape.allowResizeVertically, shape.description.getParameterPoints(shape));\n multipleSelection && multipleSelection.onModelItemChanged(shape.key, shape.rectangle);\n }\n };\n\n CanvasSelectionManager.prototype.updateConnectorSelection = function (connector, multipleSelection) {\n if (connector.key in this.selectionMap) {\n var renderPoints_1 = connector.getRenderPoints();\n this.getOrCreateConnectorSelection(connector).onModelChanged(connector.isLocked, connector.rectangle, renderPoints_1, connector.style, connector.styleText, connector.enableText, connector.texts.map(function (t) {\n var textPos = Utils_2.GeometryUtils.getPathPointByPosition(renderPoints_1, t.position);\n return {\n text: connector.getText(t.position),\n pointIndex: textPos[1],\n pos: t.position,\n point: textPos[0]\n };\n }).sort(function (a, b) {\n return a.pos - b.pos;\n }), connector.points, connector.properties.lineOption);\n multipleSelection && multipleSelection.onModelItemChanged(connector.key, connector.rectangle);\n }\n };\n\n CanvasSelectionManager.prototype.hideOutdatedSelection = function (updated) {\n var _this = this;\n\n Object.keys(this.selectionMap).filter(function (k) {\n return !updated[k];\n }).forEach(function (k) {\n _this.selectionMap[k].destroy();\n\n delete _this.selectionMap[k];\n });\n };\n\n CanvasSelectionManager.prototype.selectionCanBeDrawn = function (item) {\n return !item.container || item.container.expanded && this.selectionCanBeDrawn(item.container);\n };\n\n CanvasSelectionManager.prototype.notifySelectionChanged = function (selection) {\n var _this = this;\n\n var items = selection.getSelectedItems(true).filter(function (item) {\n return _this.selectionCanBeDrawn(item);\n });\n var changedItems = {};\n var isMultipleSelection = items.length > 1;\n var shapes = selection.getSelectedShapes(true).filter(function (shape) {\n return _this.selectionCanBeDrawn(shape);\n });\n var connectors = selection.getSelectedConnectors(true).filter(function (connector) {\n return _this.selectionCanBeDrawn(connector);\n });\n shapes.forEach(function (shape) {\n return _this.getOrCreateShapeSelection(shape, changedItems).onSelectionChanged(isMultipleSelection);\n });\n connectors.forEach(function (connector) {\n return _this.getOrCreateConnectorSelection(connector, changedItems).onSelectionChanged(isMultipleSelection);\n });\n\n if (isMultipleSelection) {\n var strokeWidth = items.length > 0 ? items[0].strokeWidth : 0;\n var rectangles_1 = {};\n items.filter(function (i) {\n return !i.isLocked;\n }).forEach(function (item) {\n return rectangles_1[item.key] = item.rectangle;\n });\n this.getOrCreateMultipleSelection(changedItems).onSelectionChanged(!!shapes.filter(function (i) {\n return !i.isLocked;\n }).length, strokeWidth, rectangles_1);\n }\n\n this.hideOutdatedSelection(changedItems);\n };\n\n CanvasSelectionManager.prototype.applyChangesCore = function (changes) {\n _super.prototype.applyChangesCore.call(this, changes);\n\n var multipleSelection = this.getMultipleSelection();\n multipleSelection && multipleSelection.onModelChanged();\n };\n\n CanvasSelectionManager.prototype.applyChange = function (change) {\n var multipleSelection = this.getMultipleSelection();\n if (change.item instanceof Shape_1.Shape) this.updateShapeSelection(change.item, multipleSelection);else if (change.item instanceof Connector_1.Connector) this.updateConnectorSelection(change.item, multipleSelection);\n };\n\n CanvasSelectionManager.prototype.notifyPageColorChanged = function (color) {};\n\n CanvasSelectionManager.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) {};\n\n CanvasSelectionManager.prototype.notifyActualZoomChanged = function (actualZoom) {\n var _this = this;\n\n Object.keys(this.selectionMap).forEach(function (k) {\n return _this.selectionMap[k].notifyZoomChanged(actualZoom);\n });\n this.actualZoom = actualZoom;\n };\n\n CanvasSelectionManager.prototype.notifyViewAdjusted = function (canvasOffset) {};\n\n CanvasSelectionManager.prototype.notifyReadOnlyChanged = function (readOnly) {\n var _this = this;\n\n this.readOnly = readOnly;\n Object.keys(this.selectionMap).forEach(function (k) {\n return _this.selectionMap[k].notifyReadOnlyChanged(readOnly);\n });\n };\n\n CanvasSelectionManager.prototype.notifySelectionRectShow = function (rect) {\n this.showSelectionRect(rect.clone().multiply(this.actualZoom, this.actualZoom));\n };\n\n CanvasSelectionManager.prototype.notifySelectionRectHide = function () {\n this.hideSelectionRect();\n };\n\n CanvasSelectionManager.prototype.notifyResizeInfoShow = function (point, text) {\n this.showResizeInfo(point.clone().multiply(this.actualZoom, this.actualZoom), text);\n };\n\n CanvasSelectionManager.prototype.notifyResizeInfoHide = function () {\n this.hideResizeInfo();\n };\n\n CanvasSelectionManager.prototype.notifyConnectionPointsShow = function (key, points, activePointIndex, outsideRectangle) {\n var _this = this;\n\n this.hideConnectionPoints();\n points.forEach(function (p, index) {\n var point = p.point.clone().multiply(_this.actualZoom, _this.actualZoom);\n if (outsideRectangle) switch (p.side) {\n case DiagramItem_1.ConnectionPointSide.North:\n point.y = outsideRectangle.y * _this.actualZoom - CanvasSelectionManager.connectionPointShift;\n break;\n\n case DiagramItem_1.ConnectionPointSide.South:\n point.y = outsideRectangle.bottom * _this.actualZoom + CanvasSelectionManager.connectionPointShift;\n break;\n\n case DiagramItem_1.ConnectionPointSide.West:\n point.x = outsideRectangle.x * _this.actualZoom - CanvasSelectionManager.connectionPointShift;\n break;\n\n case DiagramItem_1.ConnectionPointSide.East:\n point.x = outsideRectangle.right * _this.actualZoom + CanvasSelectionManager.connectionPointShift;\n break;\n }\n\n _this.showConnectionPoint(index, point, key, index, index === activePointIndex, p.allowed);\n });\n };\n\n CanvasSelectionManager.prototype.notifyConnectionPointsHide = function () {\n this.hideConnectionPoints();\n };\n\n CanvasSelectionManager.prototype.notifyConnectionTargetShow = function (key, info) {\n if (!info.allowed) return;\n var rect = CanvasSelectionManager.correctSelectionRect(info.rect.clone().multiply(this.actualZoom, this.actualZoom), info.strokeWidth, CanvasSelectionManager.connectionTargetBorderWidth, this.actualZoom, 0);\n this.showConnectionTarget(0, rect);\n };\n\n CanvasSelectionManager.prototype.notifyConnectionTargetHide = function () {\n this.hideConnectionTarget();\n };\n\n CanvasSelectionManager.prototype.notifyContainerTargetShow = function (key, info) {\n var rect = CanvasSelectionManager.correctSelectionRect(info.rect.clone().multiply(this.actualZoom, this.actualZoom), info.strokeWidth, CanvasSelectionManager.connectionTargetBorderWidth, this.actualZoom, 0);\n this.showContainerTarget(0, rect);\n };\n\n CanvasSelectionManager.prototype.notifyContainerTargetHide = function () {\n this.hideContainerTarget();\n };\n\n CanvasSelectionManager.prototype.notifyExtensionLinesShow = function (lines) {\n var _this = this;\n\n this.hideExtensionLines();\n lines.forEach(function (line, index) {\n _this.showExtensionLine(index, line.type, line.segment.startPoint.clone().multiply(_this.actualZoom, _this.actualZoom), line.segment.endPoint.clone().multiply(_this.actualZoom, _this.actualZoom), line.text);\n });\n };\n\n CanvasSelectionManager.prototype.notifyExtensionLinesHide = function () {\n this.hideExtensionLines();\n };\n\n CanvasSelectionManager.prototype.notifyDragStart = function (itemKeys) {\n this.dom.changeByFunc(this.selectionMarksContainer, function (e) {\n return e.style.display = \"none\";\n });\n };\n\n CanvasSelectionManager.prototype.notifyDragEnd = function (itemKeys) {\n this.dom.changeByFunc(this.selectionMarksContainer, function (e) {\n return e.style.display = \"\";\n });\n };\n\n CanvasSelectionManager.prototype.notifyDragScrollStart = function () {};\n\n CanvasSelectionManager.prototype.notifyDragScrollEnd = function () {};\n\n CanvasSelectionManager.prototype.notifyTextInputStart = function (item, text, position, size) {\n this.dom.changeByFunc(this.visualizersContainer, function (e) {\n return e.style.display = \"none\";\n });\n };\n\n CanvasSelectionManager.prototype.notifyTextInputEnd = function (item) {\n this.dom.changeByFunc(this.visualizersContainer, function (e) {\n return e.style.display = \"\";\n });\n };\n\n CanvasSelectionManager.prototype.notifyTextInputPermissionsCheck = function (item, allowed) {};\n\n CanvasSelectionManager.correctSelectionRect = function (rect, targetLineWidth, selectionLineWidth, zoomLevel, outsideOffset) {\n if (outsideOffset === void 0) {\n outsideOffset = CanvasSelectionManager.selectionOffset;\n }\n\n var evenOddWidth = unit_converter_1.UnitConverter.twipsToPixels(targetLineWidth) % 2 !== unit_converter_1.UnitConverter.twipsToPixels(selectionLineWidth) % 2;\n var corr = Math.ceil(targetLineWidth / 2 * zoomLevel);\n rect = rect.clone().inflate(corr, corr);\n var lwCorr = Math.floor(selectionLineWidth / 2);\n rect.x -= lwCorr;\n rect.y -= lwCorr;\n rect.width += selectionLineWidth;\n rect.height += selectionLineWidth;\n\n if (evenOddWidth) {\n var correction = CanvasSelectionManager.evenOddSelectionCorrection * (unit_converter_1.UnitConverter.twipsToPixels(selectionLineWidth) % 2 === 1 ? -1 : 1);\n rect = rect.clone().moveRectangle(correction, correction);\n }\n\n return rect.clone().inflate(outsideOffset, outsideOffset);\n };\n\n CanvasSelectionManager.selectionMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(10);\n CanvasSelectionManager.lockedSelectionMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(8);\n CanvasSelectionManager.selectionOffset = unit_converter_1.UnitConverter.pixelsToTwips(2);\n CanvasSelectionManager.selectionRectLineWidth = unit_converter_1.UnitConverter.pixelsToTwips(1);\n CanvasSelectionManager.multiSelectionRectLineWidth = unit_converter_1.UnitConverter.pixelsToTwips(1);\n CanvasSelectionManager.connectionPointSmallSize = unit_converter_1.UnitConverter.pixelsToTwips(5);\n CanvasSelectionManager.connectionPointLargeSize = unit_converter_1.UnitConverter.pixelsToTwips(12);\n CanvasSelectionManager.connectionPointShift = unit_converter_1.UnitConverter.pixelsToTwips(16);\n CanvasSelectionManager.connectionTargetBorderWidth = unit_converter_1.UnitConverter.pixelsToTwips(2);\n CanvasSelectionManager.geomertyMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(8);\n CanvasSelectionManager.connectorPointMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(6);\n CanvasSelectionManager.connectorSideMarkSize = unit_converter_1.UnitConverter.pixelsToTwips(6);\n CanvasSelectionManager.extensionLineWidth = unit_converter_1.UnitConverter.pixelsToTwips(1);\n CanvasSelectionManager.extensionLineOffset = unit_converter_1.UnitConverter.pixelsToTwips(1);\n CanvasSelectionManager.extensionLineEndingSize = unit_converter_1.UnitConverter.pixelsToTwips(6);\n CanvasSelectionManager.resizeInfoOffset = unit_converter_1.UnitConverter.pixelsToTwips(16);\n CanvasSelectionManager.resizeInfoTextOffset = unit_converter_1.UnitConverter.pixelsToTwips(2);\n CanvasSelectionManager.resizeInfoLineWidth = unit_converter_1.UnitConverter.pixelsToTwips(1);\n CanvasSelectionManager.evenOddSelectionCorrection = unit_converter_1.UnitConverter.pixelsToTwips(1);\n return CanvasSelectionManager;\n }(CanvasManager_1.CanvasManager);\n\n exports.CanvasSelectionManager = CanvasSelectionManager;\n\n var CanvasElement =\n /** @class */\n function () {\n function CanvasElement(rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled) {\n this.rectsContainer = rectsContainer;\n this.marksContainer = marksContainer;\n this.key = key;\n this.zoomLevel = zoomLevel;\n this.readOnly = readOnly;\n this.dom = dom;\n this.isTouchUIEnabled = isTouchUIEnabled;\n this.elements = {};\n this.updatedElements = {};\n }\n\n CanvasElement.prototype.notifyZoomChanged = function (zoom) {\n if (this.zoomLevel !== zoom) {\n this.zoomLevel = zoom;\n this.redraw();\n }\n };\n\n CanvasElement.prototype.notifyReadOnlyChanged = function (readOnly) {\n this.readOnly = readOnly;\n this.redraw();\n };\n\n CanvasElement.prototype.destroy = function () {\n var _this = this;\n\n Object.keys(this.elements).forEach(function (key) {\n _this.elements[key].parentNode.removeChild(_this.elements[key]);\n\n delete _this.elements[key];\n });\n };\n\n CanvasElement.prototype.redraw = function () {\n var _this = this;\n\n this.updatedElements = {};\n this.redrawCore();\n Object.keys(this.elements).filter(function (key) {\n return !_this.updatedElements[key];\n }).forEach(function (key) {\n _this.elements[key].parentNode.removeChild(_this.elements[key]);\n\n delete _this.elements[key];\n });\n this.updatedElements = {};\n };\n\n CanvasElement.prototype.drawSelectionMarks = function (rect, allowResizeHorizontally, allowResizeVertically) {\n if (this.readOnly) return;\n var hasEWMarks = allowResizeHorizontally && rect.height > CanvasSelectionManager.selectionMarkSize * 3;\n var hasNSMarks = allowResizeVertically && rect.width > CanvasSelectionManager.selectionMarkSize * 3;\n var hasCornerMarks = allowResizeHorizontally || allowResizeVertically;\n if (hasCornerMarks) this.drawSelectionMark(0, new point_1.Point(rect.x, rect.y), CanvasSelectionManager.selectionMarkSize, Event_1.MouseEventElementType.ShapeResizeBox, Event_1.ResizeEventSource.ResizeBox_NW, exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK);\n if (hasNSMarks && !this.isTouchUIEnabled) this.drawSelectionMark(1, new point_1.Point(rect.x + rect.width / 2, rect.y), CanvasSelectionManager.selectionMarkSize, Event_1.MouseEventElementType.ShapeResizeBox, Event_1.ResizeEventSource.ResizeBox_N, exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK);\n if (hasCornerMarks) this.drawSelectionMark(2, new point_1.Point(rect.right, rect.y), CanvasSelectionManager.selectionMarkSize, Event_1.MouseEventElementType.ShapeResizeBox, Event_1.ResizeEventSource.ResizeBox_NE, exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK);\n if (hasEWMarks && !this.isTouchUIEnabled) this.drawSelectionMark(3, new point_1.Point(rect.right, rect.y + rect.height / 2), CanvasSelectionManager.selectionMarkSize, Event_1.MouseEventElementType.ShapeResizeBox, Event_1.ResizeEventSource.ResizeBox_E, exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK);\n if (hasCornerMarks) this.drawSelectionMark(4, new point_1.Point(rect.right, rect.bottom), CanvasSelectionManager.selectionMarkSize, Event_1.MouseEventElementType.ShapeResizeBox, Event_1.ResizeEventSource.ResizeBox_SE, exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK);\n if (hasNSMarks && !this.isTouchUIEnabled) this.drawSelectionMark(5, new point_1.Point(rect.x + rect.width / 2, rect.bottom), CanvasSelectionManager.selectionMarkSize, Event_1.MouseEventElementType.ShapeResizeBox, Event_1.ResizeEventSource.ResizeBox_S, exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK);\n if (hasCornerMarks) this.drawSelectionMark(6, new point_1.Point(rect.x, rect.bottom), CanvasSelectionManager.selectionMarkSize, Event_1.MouseEventElementType.ShapeResizeBox, Event_1.ResizeEventSource.ResizeBox_SW, exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK);\n if (hasEWMarks && !this.isTouchUIEnabled) this.drawSelectionMark(7, new point_1.Point(rect.x, rect.y + rect.height / 2), CanvasSelectionManager.selectionMarkSize, Event_1.MouseEventElementType.ShapeResizeBox, Event_1.ResizeEventSource.ResizeBox_W, exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK);\n };\n\n CanvasElement.prototype.drawSelectionMark = function (index, point, size, type, value, className) {\n var _this = this;\n\n this.getOrCreateElement(\"SM\" + index, new RectaglePrimitive_1.RectanglePrimitive(point.x - size / 2, point.y - size / 2, size, size, null, className, undefined, function (el) {\n Utils_1.RenderUtils.setElementEventData(el, type, _this.key, value);\n }), this.marksContainer);\n };\n\n CanvasElement.prototype.drawSelectionRect = function (rectangle, type, className) {\n var primitive = new RectaglePrimitive_1.RectanglePrimitive(rectangle.x, rectangle.y, rectangle.width, rectangle.height, Style_1.StrokeStyle.default1pxInstance, className, undefined, function (el) {\n Utils_1.RenderUtils.setElementEventData(el, type, \"-1\", -1);\n });\n this.getOrCreateElement(\"shapeSelection\", primitive, this.rectsContainer);\n };\n\n CanvasElement.prototype.getOrCreateElement = function (cacheKey, primitive, container) {\n var element = this.elements[cacheKey];\n\n if (!element) {\n element = primitive.createElement(function (el) {\n return container.appendChild(el);\n });\n this.elements[cacheKey] = element;\n }\n\n this.updatedElements[cacheKey] = true;\n this.dom.changeByPrimitive(element, primitive);\n return element;\n };\n\n return CanvasElement;\n }();\n\n var ItemSelectionElement =\n /** @class */\n function (_super) {\n __extends(ItemSelectionElement, _super);\n\n function ItemSelectionElement(rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled, isLocked, rectangle) {\n var _this = _super.call(this, rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled) || this;\n\n _this.isLocked = isLocked;\n _this.rectangle = rectangle;\n return _this;\n }\n\n ItemSelectionElement.prototype.onSelectionChanged = function (isMultipleSelection) {\n if (this.isMultipleSelection !== isMultipleSelection) {\n this.isMultipleSelection = isMultipleSelection;\n this.redraw();\n }\n };\n\n ItemSelectionElement.prototype.isLockedRender = function () {\n return this.isLocked && !this.readOnly;\n };\n\n ItemSelectionElement.prototype.drawLockedSelectionMark = function (index, point, size, className) {\n var primitive = new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(point.x - size / 2, point.y - size / 2), new PathPrimitive_1.PathPrimitiveLineToCommand(point.x + size / 2, point.y + size / 2), new PathPrimitive_1.PathPrimitiveMoveToCommand(point.x + size / 2, point.y - size / 2), new PathPrimitive_1.PathPrimitiveLineToCommand(point.x - size / 2, point.y + size / 2)], null, className);\n this.getOrCreateElement(\"LSM\" + index, primitive, this.marksContainer);\n };\n\n return ItemSelectionElement;\n }(CanvasElement);\n\n var MultipleSelectionElement =\n /** @class */\n function (_super) {\n __extends(MultipleSelectionElement, _super);\n\n function MultipleSelectionElement(rectsContainer, marksContainer, zoomLevel, readOnly, dom, isTouchUIEnabled) {\n var _this = _super.call(this, rectsContainer, marksContainer, \"-1\", zoomLevel, readOnly, dom, isTouchUIEnabled) || this;\n\n _this.rectangles = {};\n return _this;\n }\n\n MultipleSelectionElement.prototype.onModelItemChanged = function (key, rectangle) {\n if (key in this.rectangles) this.rectangles[key] = rectangle;\n };\n\n MultipleSelectionElement.prototype.onModelChanged = function () {\n this.redraw();\n };\n\n MultipleSelectionElement.prototype.onSelectionChanged = function (needDrawSelectionMarks, strokeWidth, rectangles) {\n this.needDrawSelectionMarks = needDrawSelectionMarks;\n this.strokeWidth = strokeWidth;\n this.rectangles = rectangles;\n this.redraw();\n };\n\n MultipleSelectionElement.prototype.redrawCore = function () {\n var _this = this;\n\n var rectKeys = Object.keys(this.rectangles);\n if (!rectKeys.length) return;\n var rect = Utils_2.GeometryUtils.getCommonRectangle(rectKeys.map(function (key) {\n return _this.rectangles[key];\n })).clone().multiply(this.zoomLevel, this.zoomLevel);\n var selRect = CanvasSelectionManager.correctSelectionRect(rect, this.strokeWidth, CanvasSelectionManager.selectionRectLineWidth, this.zoomLevel);\n this.drawSelectionRect(selRect, Event_1.MouseEventElementType.SelectionRect, exports.SELECTION_ELEMENT_CLASSNAMES.ITEMS_SELECTION_RECT);\n if (this.needDrawSelectionMarks) this.drawSelectionMarks(rect, true, true);\n };\n\n return MultipleSelectionElement;\n }(CanvasElement);\n\n var ShapeSelectionElement =\n /** @class */\n function (_super) {\n __extends(ShapeSelectionElement, _super);\n\n function ShapeSelectionElement(rectsContainer, marksContainer, zoomLevel, readOnly, dom, isTouchUIEnabled, key, isLocked, rectangle, style, allowResizeHorizontally, allowResizeVertically, shapeParameterPoints) {\n var _this = _super.call(this, rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled, isLocked, rectangle) || this;\n\n _this.style = style;\n _this.allowResizeHorizontally = allowResizeHorizontally;\n _this.allowResizeVertically = allowResizeVertically;\n _this.shapeParameterPoints = shapeParameterPoints;\n return _this;\n }\n\n ShapeSelectionElement.prototype.onModelChanged = function (isLocked, rectangle, style, allowResizeHorizontally, allowResizeVertically, shapeParameterPoints) {\n this.isLocked = isLocked;\n this.rectangle = rectangle;\n this.style = style;\n this.allowResizeHorizontally = allowResizeHorizontally;\n this.allowResizeVertically = allowResizeVertically;\n this.shapeParameterPoints = shapeParameterPoints;\n this.redraw();\n };\n\n ShapeSelectionElement.prototype.redrawCore = function () {\n var rect = this.rectangle.clone().multiply(this.zoomLevel, this.zoomLevel);\n if (this.isLockedRender()) this.drawLockedSelection(rect);else this.drawUnlockedSelection(rect);\n };\n\n ShapeSelectionElement.prototype.drawLockedSelection = function (rect) {\n this.drawLockedSelectionMark(0, new point_1.Point(rect.x, rect.y), CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\n this.drawLockedSelectionMark(1, new point_1.Point(rect.right, rect.y), CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\n this.drawLockedSelectionMark(2, new point_1.Point(rect.right, rect.bottom), CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\n this.drawLockedSelectionMark(3, new point_1.Point(rect.x, rect.bottom), CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\n };\n\n ShapeSelectionElement.prototype.drawUnlockedSelection = function (rect) {\n var selRect = CanvasSelectionManager.correctSelectionRect(rect, this.style.strokeWidth, CanvasSelectionManager.selectionRectLineWidth, this.zoomLevel);\n this.drawSelectionRect(selRect, Event_1.MouseEventElementType.SelectionRect, this.isMultipleSelection ? exports.SELECTION_ELEMENT_CLASSNAMES.ITEM_MULTI_SELECTION : exports.SELECTION_ELEMENT_CLASSNAMES.ITEM_SELECTION_RECT);\n if (!this.isMultipleSelection) this.drawSelectionMarks(rect, this.allowResizeHorizontally, this.allowResizeVertically);\n this.drawShapeParameterPoints();\n };\n\n ShapeSelectionElement.prototype.drawShapeParameterPoints = function () {\n var _this = this;\n\n if (this.readOnly) return;\n this.shapeParameterPoints.forEach(function (pp, index) {\n var point = pp.point.clone().multiply(_this.zoomLevel, _this.zoomLevel);\n\n _this.drawShapeParameterPoint(point, index, pp.key);\n });\n };\n\n ShapeSelectionElement.prototype.drawShapeParameterPoint = function (point, index, pointKey) {\n var _this = this;\n\n var size = CanvasSelectionManager.geomertyMarkSize;\n var primitive = new RectaglePrimitive_1.RectanglePrimitive(point.x - size / 2, point.y - size / 2, size, size, null, \"geometry-mark\", undefined, function (el) {\n Utils_1.RenderUtils.setElementEventData(el, Event_1.MouseEventElementType.ShapeParameterBox, _this.key, pointKey);\n });\n this.getOrCreateElement(\"pp\" + index.toString(), primitive, this.marksContainer);\n };\n\n return ShapeSelectionElement;\n }(ItemSelectionElement);\n\n var ConnectorSelectionElement =\n /** @class */\n function (_super) {\n __extends(ConnectorSelectionElement, _super);\n\n function ConnectorSelectionElement(rectsContainer, marksContainer, zoomLevel, readOnly, dom, isTouchUIEnabled, key, isLocked, rectangle, renderPoints, style, styleText, enableText, texts, points, lineType) {\n var _this = _super.call(this, rectsContainer, marksContainer, key, zoomLevel, readOnly, dom, isTouchUIEnabled, isLocked, rectangle) || this;\n\n _this.renderPoints = renderPoints;\n _this.style = style;\n _this.styleText = styleText;\n _this.enableText = enableText;\n _this.texts = texts;\n _this.points = points;\n _this.lineType = lineType;\n return _this;\n }\n\n ConnectorSelectionElement.prototype.onModelChanged = function (isLocked, rectangle, renderPoints, style, styleText, enableText, texts, points, lineType) {\n this.isLocked = isLocked;\n this.rectangle = rectangle;\n this.renderPoints = renderPoints;\n this.style = style;\n this.styleText = styleText;\n this.enableText = enableText;\n this.texts = texts;\n this.points = points;\n this.lineType = lineType;\n this.redraw();\n };\n\n ConnectorSelectionElement.prototype.redrawCore = function () {\n if (this.isLockedRender()) this.drawLockedSelection();else this.drawUnlockedSelection();\n };\n\n ConnectorSelectionElement.prototype.drawLockedSelection = function () {\n var _this = this;\n\n this.renderPoints.forEach(function (pt, index) {\n _this.drawLockedSelectionMark(index, pt, CanvasSelectionManager.lockedSelectionMarkSize, exports.SELECTION_ELEMENT_CLASSNAMES.LOCKED_SELECTION_MARK);\n });\n };\n\n ConnectorSelectionElement.prototype.drawUnlockedSelection = function () {\n this.drawConnectorSelection();\n if (!this.isMultipleSelection && !this.readOnly) this.drawConnectorSelectionMarks();\n };\n\n ConnectorSelectionElement.prototype.drawConnectorSelection = function () {\n var commands = [];\n var commandsWB = [];\n var className = this.isMultipleSelection ? exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTOR_MULTI_SELECTION : exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTOR_SELECTION;\n this.populateSelectionPrimitiveCommands(commands, commandsWB);\n var primitive = new PathPrimitive_1.PathPrimitive(commands.concat(commandsWB.reverse()), Style_1.StrokeStyle.default1pxInstance, className);\n this.getOrCreateElement(\"CS\", primitive, this.rectsContainer);\n };\n\n ConnectorSelectionElement.prototype.populateSelectionPrimitiveCommands = function (commands, commandsWB) {\n var texts = this.texts;\n var txtAlign = this.styleText.getAlignment();\n var points = this.createNotSkippedRenderPoints();\n var zoomLevel = this.zoomLevel;\n var strokeWidthPx = this.style.strokeWidthPx;\n var selectionOffset = this.getSelectionOffset(strokeWidthPx);\n var strokeWidthPxIsEvenOdd = strokeWidthPx % 2 === 0;\n var prevPt = points[0];\n var textIndex = 0;\n var offset;\n var distance;\n var nextOffset;\n var nextDistance;\n\n for (var i = 1, pt = void 0; pt = points[i]; i++) {\n var nextPt = points[i + 1];\n\n if (offset === undefined) {\n distance = metrics_1.Metrics.euclideanDistance(prevPt, pt);\n if (math_1.MathUtils.numberCloseTo(distance, 0)) continue;\n offset = Utils_2.GeometryUtils.getSelectionOffsetPoint(prevPt, pt, distance).multiply(selectionOffset, selectionOffset);\n }\n\n if (nextPt) {\n nextDistance = metrics_1.Metrics.euclideanDistance(pt, nextPt);\n if (math_1.MathUtils.numberCloseTo(nextDistance, 0)) continue;\n nextOffset = Utils_2.GeometryUtils.getSelectionOffsetPoint(pt, nextPt, nextDistance).multiply(selectionOffset, selectionOffset);\n }\n\n var offsetX = offset.x;\n var offsetY = offset.y;\n var offsetXNegative = -offsetX;\n var offsetYNegative = -offsetY;\n var nextOffsetX = nextOffset && nextOffset.x;\n var nextOffsetY = nextOffset && nextOffset.y;\n var nextOffsetXNegative = nextOffset && -nextOffset.x;\n var nextOffsetYNegative = nextOffset && -nextOffset.y;\n\n if (strokeWidthPxIsEvenOdd) {\n if (offsetXNegative > 0) offsetXNegative -= CanvasSelectionManager.evenOddSelectionCorrection;else if (offsetX > 0) offsetX -= CanvasSelectionManager.evenOddSelectionCorrection;\n if (offsetYNegative > 0) offsetYNegative -= CanvasSelectionManager.evenOddSelectionCorrection;else if (offsetY > 0) offsetY -= CanvasSelectionManager.evenOddSelectionCorrection;\n if (nextOffsetXNegative > 0) nextOffsetXNegative -= CanvasSelectionManager.evenOddSelectionCorrection;else if (nextOffsetX > 0) nextOffsetX -= CanvasSelectionManager.evenOddSelectionCorrection;\n if (nextOffsetYNegative > 0) nextOffsetYNegative -= CanvasSelectionManager.evenOddSelectionCorrection;else if (nextOffsetY > 0) nextOffsetY -= CanvasSelectionManager.evenOddSelectionCorrection;\n }\n\n while (texts[textIndex] && texts[textIndex].pointIndex <= i) {\n var text = texts[textIndex];\n var size = this.getConnectorSelectionTextSize(text.text, selectionOffset);\n var textPts = Utils_2.GeometryUtils.getSelectionTextStartEndPoints(prevPt, pt, distance, text.point, size, txtAlign);\n\n if (texts[textIndex].pointIndex < i) {\n prevPt = textPts[1];\n commands.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(prevPt.clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\n commandsWB.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(prevPt.clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\n } else {\n if (!commands.length) {\n commands.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(prevPt.clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\n commandsWB.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(prevPt.clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\n }\n\n commands.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(textPts[0].clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\n commands.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(textPts[1].clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\n commandsWB.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(textPts[0].clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\n commandsWB.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(textPts[1].clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\n prevPt = textPts[1];\n }\n\n textIndex++;\n }\n\n if (!commands.length) {\n commands.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(prevPt.clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\n commandsWB.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(prevPt.clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\n }\n\n if (nextPt) {\n Utils_2.GeometryUtils.addSelectedLinesTo(prevPt, pt, nextPt, offsetX, offsetY, offsetXNegative, offsetYNegative, nextOffsetX, nextOffsetY, nextOffsetXNegative, nextOffsetYNegative, function (x, y) {\n return commands.push(new PathPrimitive_1.PathPrimitiveLineToCommand(x * zoomLevel, y * zoomLevel));\n }, function (x, y) {\n return commandsWB.push(new PathPrimitive_1.PathPrimitiveLineToCommand(x * zoomLevel, y * zoomLevel));\n });\n offset = nextOffset;\n distance = nextDistance;\n } else {\n commands.push(PathPrimitive_1.PathPrimitiveLineToCommand.fromPoint(pt.clone().offset(offsetX, offsetY).multiply(zoomLevel, zoomLevel)));\n commandsWB.push(PathPrimitive_1.PathPrimitiveMoveToCommand.fromPoint(pt.clone().offset(offsetXNegative, offsetYNegative).multiply(zoomLevel, zoomLevel)));\n }\n\n prevPt = pt;\n }\n };\n\n ConnectorSelectionElement.prototype.createNotSkippedRenderPoints = function () {\n var clonedRenderPoints = this.renderPoints.map(function (p) {\n return p.clone();\n });\n\n if (this.lineType === ConnectorProperties_1.ConnectorLineOption.Straight) {\n ModelUtils_1.ModelUtils.removeUnnecessaryRenderPoints(clonedRenderPoints);\n return clonedRenderPoints.filter(function (p) {\n return !p.skipped;\n });\n }\n\n ModelUtils_1.ModelUtils.removeUnnecessaryRightAngleRenderPoints(clonedRenderPoints);\n return clonedRenderPoints.filter(function (p) {\n return !p.skipped;\n });\n };\n\n ConnectorSelectionElement.prototype.getSelectionOffset = function (strokeWidthPx) {\n return CanvasSelectionManager.selectionOffset + unit_converter_1.UnitConverter.pixelsToTwips(Math.round(strokeWidthPx / 2) + (strokeWidthPx + 1) % 2);\n };\n\n ConnectorSelectionElement.prototype.getConnectorSelectionTextSize = function (text, selectionOffset) {\n return this.dom.measurer.measureTextLine(text, this.styleText, ITextMeasurer_1.TextOwner.Connector).applyConverter(unit_converter_1.UnitConverter.pixelsToTwips).clone().offset(selectionOffset, selectionOffset).nonNegativeSize();\n };\n\n ConnectorSelectionElement.prototype.drawConnectorSelectionMarks = function () {\n var _this = this;\n\n var pointsCount = this.points.length - 1;\n this.points.forEach(function (pt, index) {\n var isEdgePoint = index === 0 || index === pointsCount;\n var className = isEdgePoint ? exports.SELECTION_ELEMENT_CLASSNAMES.SELECTION_MARK : exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTOR_POINT_MARK;\n var markSize = isEdgePoint ? CanvasSelectionManager.selectionMarkSize : CanvasSelectionManager.connectorPointMarkSize;\n if (isEdgePoint || _this.lineType === ConnectorProperties_1.ConnectorLineOption.Straight) _this.drawSelectionMark(index, pt.clone().multiply(_this.zoomLevel, _this.zoomLevel), markSize, Event_1.MouseEventElementType.ConnectorPoint, index, className);else _this.drawSelectionMark(index, pt.clone().multiply(_this.zoomLevel, _this.zoomLevel), markSize, Event_1.MouseEventElementType.Undefined, -1, className + \" disabled\");\n });\n this.drawConnectorSideMarks();\n };\n\n ConnectorSelectionElement.prototype.drawConnectorSideMarks = function () {\n var _this = this;\n\n var type = this.lineType === ConnectorProperties_1.ConnectorLineOption.Straight ? Event_1.MouseEventElementType.ConnectorSide : Event_1.MouseEventElementType.ConnectorOrthogonalSide;\n var prevPt;\n var prevPtIndex;\n this.renderPoints.filter(function (rp) {\n return !rp.skipped;\n }).forEach(function (pt, index) {\n if (pt.skipped) return;\n if (prevPt !== undefined) if (_this.canDrawConnectorSideMark(pt, prevPt)) {\n var classNameSuffix = _this.lineType === ConnectorProperties_1.ConnectorLineOption.Orthogonal ? pt.x - prevPt.x === 0 ? \"vertical\" : \"horizontal\" : \"\";\n\n _this.drawSelectionMark(_this.points.length + index - 1, new point_1.Point(prevPt.x + (pt.x - prevPt.x) / 2, prevPt.y + (pt.y - prevPt.y) / 2).clone().multiply(_this.zoomLevel, _this.zoomLevel), CanvasSelectionManager.connectorSideMarkSize, type, prevPtIndex + \"_\" + index, exports.SELECTION_ELEMENT_CLASSNAMES.CONNECTOR_SIDE_MARK + \" \" + classNameSuffix);\n }\n prevPt = pt;\n prevPtIndex = index;\n });\n };\n\n ConnectorSelectionElement.prototype.canDrawConnectorSideMark = function (current, prev) {\n if (this.lineType === ConnectorProperties_1.ConnectorLineOption.Straight) {\n var minSize = CanvasSelectionManager.selectionMarkSize + CanvasSelectionManager.connectorSideMarkSize;\n return metrics_1.Metrics.euclideanDistance(current, prev) > minSize;\n }\n\n if (this.lineType === ConnectorProperties_1.ConnectorLineOption.Orthogonal) {\n var hasBeginPoint = prev.pointIndex === 0;\n var hasEndPoint = Utils_2.GeometryUtils.areDuplicatedPoints(this.points[this.points.length - 1], current);\n if (hasBeginPoint && hasEndPoint) return metrics_1.Metrics.euclideanDistance(current, prev) > 2 * Connector_1.Connector.minOffset;\n if (!hasBeginPoint && hasEndPoint || hasBeginPoint && !hasEndPoint) return metrics_1.Metrics.euclideanDistance(current, prev) > Connector_1.Connector.minOffset;\n var minSize = CanvasSelectionManager.selectionMarkSize + CanvasSelectionManager.connectorSideMarkSize;\n return metrics_1.Metrics.euclideanDistance(current, prev) > minSize; // return ((MathUtils.numberCloseTo(point1.x, point2.x) || Math.abs(point1.x - point2.x) > Connector.minOffset) &&\n // (point1.y - point2.y === 0 || Math.abs(point1.y - point2.y) > Connector.minOffset));\n }\n\n return false;\n };\n\n return ConnectorSelectionElement;\n }(ItemSelectionElement);\n /***/\n\n },\n /* 158 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DiagramDraggingEvent = exports.ToolboxDraggingObject = exports.DragState = exports.Toolbox = exports.TOUCH_DRAGTIMEOUT_MS = void 0;\n\n var Utils_1 = __webpack_require__(3);\n\n var Data_1 = __webpack_require__(45);\n\n var dom_1 = __webpack_require__(23);\n\n var CanvasItemsManager_1 = __webpack_require__(77);\n\n var TOOLBOX_CSSCLASS = \"dxdi-toolbox\";\n var DRAG_CAPTURED_CSSCLASS = \"dxdi-tb-drag-captured\";\n exports.TOUCH_DRAGTIMEOUT_MS = 800;\n\n var Toolbox =\n /** @class */\n function () {\n function Toolbox(parent, readOnly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) {\n this.readOnly = readOnly;\n this.allowDragging = allowDragging;\n this.shapeDescriptionManager = shapeDescriptionManager;\n this.shapeTypes = shapeTypes;\n this.getAllowedShapeTypes = getAllowedShapeTypes;\n this.isTouchUIEnabled = isTouchUIEnabled;\n this.dragPrepareTimeout = -1;\n this.onDragOperation = new Utils_1.EventDispatcher();\n this.onClickOperation = new Utils_1.EventDispatcher();\n this.dragState = DragState.None;\n if (parent) this.mainElement = this.createMainElement(parent);\n }\n\n Toolbox.prototype.clean = function (removeElement) {\n if (this.dragEventsHandler) {\n this.dragEventsHandler.detach();\n this.dragEventsHandler = undefined;\n }\n\n if (removeElement) removeElement(this.mainElement);\n };\n\n Toolbox.prototype.createMainElement = function (parent) {\n var element = document.createElement(\"div\");\n element.setAttribute(\"class\", TOOLBOX_CSSCLASS);\n element.draggable = true;\n if (this.isTouchUIEnabled) element.tabIndex = 0;\n parent.appendChild(element);\n return element;\n };\n\n Toolbox.prototype.render = function (filter) {\n if (this.mainElement.childNodes) this.mainElement.innerHTML = \"\";\n var shapeTypes = this.shapeTypes;\n shapeTypes = this.getAllowedShapeTypes ? this.getAllowedShapeTypes(shapeTypes) : shapeTypes;\n shapeTypes = filter ? shapeTypes.filter(filter) : shapeTypes;\n if (shapeTypes.length) this.createElements(this.mainElement, shapeTypes);\n return !!shapeTypes.length;\n };\n\n Toolbox.prototype.createDraggingObject = function (shapeType) {\n var evt = new DiagramDraggingEvent();\n evt.data = shapeType;\n evt.onFinishDragging = this.finishDragging.bind(this);\n evt.onCaptured = this.capture.bind(this);\n return new ToolboxDraggingObject(evt);\n };\n\n Toolbox.prototype.getDragShapeType = function (element) {\n while (element && !dom_1.DomUtils.hasClassName(element, TOOLBOX_CSSCLASS)) {\n if (element.getAttribute && element.getAttribute(\"data-tb-type\")) return element.getAttribute(\"data-tb-type\");\n element = element.parentNode;\n }\n\n return undefined;\n };\n\n Toolbox.prototype.shouldPrepareDrag = function () {\n return this.shouldChangeDragState(DragState.Prepare);\n };\n\n Toolbox.prototype.prepareDragging = function (startPoint, startShapeType) {\n this.dragState = DragState.Prepare;\n this.dragStartPoint = startPoint;\n this.dragStartShapeType = startShapeType;\n };\n\n Toolbox.prototype.shouldStartDragging = function () {\n return this.dragState === DragState.Prepare && this.shouldChangeDragState(DragState.Start);\n };\n\n Toolbox.prototype.startTouchDragging = function () {\n this.dragPrepareTimeout = setTimeout(this.startDragTimeout.bind(this), exports.TOUCH_DRAGTIMEOUT_MS);\n };\n\n Toolbox.prototype.startDragging = function () {\n if (!this.shouldChangeDragState(DragState.Start)) return;\n this.dragState = DragState.Start;\n dom_1.DomUtils.addClassName(document.body, \"dxdi-dragging\");\n this.draggingObject = this.createDraggingObject(this.dragStartShapeType);\n\n if (this.dragStartShapeType) {\n this.raiseDragStart();\n this.draggingObject.element = this.createDraggingElement(this.draggingObject);\n if (this.draggingObject.captured !== undefined) this.capture(this.draggingObject.captured, true);\n this.updatePositionsOnDragging(this.dragStartPoint);\n } else dom_1.DomUtils.addClassName(document.body, CanvasItemsManager_1.NOT_VALID_CSSCLASS);\n };\n\n Toolbox.prototype.shouldContinueDragging = function () {\n return this.draggingObject && this.draggingObject.element && this.shouldChangeDragState(DragState.Dragging);\n };\n\n Toolbox.prototype.continueDragging = function (point) {\n this.dragState = DragState.Dragging;\n this.updatePositionsOnDragging(point);\n };\n\n Toolbox.prototype.updatePositionsOnDragging = function (point) {\n var element = this.draggingObject.element;\n var xPos = point.x - element.offsetWidth / 2;\n var yPos = point.y - element.offsetHeight / 2;\n Data_1.SetAbsoluteX(element, xPos);\n Data_1.SetAbsoluteY(element, yPos);\n };\n\n Toolbox.prototype.finishDragging = function () {\n if (!this.shouldChangeDragState(DragState.None)) return;\n this.dragState = DragState.None;\n\n if (this.draggingObject) {\n this.raiseDragEnd();\n var element = this.draggingObject.element;\n if (element) element.parentNode.removeChild(element);\n delete this.draggingObject;\n }\n\n this.dragStartPoint = undefined;\n this.dragStartShapeType = undefined;\n dom_1.DomUtils.removeClassName(document.body, CanvasItemsManager_1.NOT_VALID_CSSCLASS);\n setTimeout(function () {\n return dom_1.DomUtils.removeClassName(document.body, \"dxdi-dragging\");\n }, 500); // prevent selection on dragend\n };\n\n Toolbox.prototype.startDragTimeout = function () {\n this.dragPrepareTimeout = -1;\n if (this.dragState === DragState.Prepare) this.startDragging();\n };\n\n Toolbox.prototype.shouldChangeDragState = function (newState) {\n if (this.readOnly || !this.allowDragging || newState === DragState.None && this.dragState === DragState.None) return false;\n\n if (this.dragPrepareTimeout > -1) {\n clearTimeout(this.dragPrepareTimeout);\n this.dragPrepareTimeout = -1;\n }\n\n return newState - this.dragState <= 1 && (newState === DragState.None || newState >= this.dragState);\n };\n\n Toolbox.prototype.capture = function (captured, forced) {\n if (this.draggingObject && (this.draggingObject.captured !== captured || forced)) {\n this.draggingObject.captured = captured;\n if (this.draggingObject.element) dom_1.DomUtils.toggleClassName(this.draggingObject.element, DRAG_CAPTURED_CSSCLASS, captured);\n }\n };\n\n Toolbox.prototype.raiseDragStart = function () {\n this.onDragOperation.raise(\"notifyToolboxDragStart\");\n };\n\n Toolbox.prototype.raiseDragEnd = function () {\n this.onDragOperation.raise(\"notifyToolboxDragEnd\");\n };\n\n Toolbox.prototype.raiseNotifyToolboxClick = function (shapeType) {\n this.onClickOperation.raise(\"notifyToolboxClick\", shapeType);\n };\n\n Toolbox.prototype.notifyReadOnlyChanged = function (readOnly) {\n this.readOnly = readOnly;\n };\n\n return Toolbox;\n }();\n\n exports.Toolbox = Toolbox;\n var DragState;\n\n (function (DragState) {\n DragState[DragState[\"None\"] = -1] = \"None\";\n DragState[DragState[\"Prepare\"] = 0] = \"Prepare\";\n DragState[DragState[\"Start\"] = 1] = \"Start\";\n DragState[DragState[\"Dragging\"] = 2] = \"Dragging\";\n })(DragState = exports.DragState || (exports.DragState = {}));\n\n var ToolboxDraggingObject =\n /** @class */\n function () {\n function ToolboxDraggingObject(evt) {\n this.evt = evt;\n }\n\n return ToolboxDraggingObject;\n }();\n\n exports.ToolboxDraggingObject = ToolboxDraggingObject;\n\n var DiagramDraggingEvent =\n /** @class */\n function () {\n function DiagramDraggingEvent() {}\n\n return DiagramDraggingEvent;\n }();\n\n exports.DiagramDraggingEvent = DiagramDraggingEvent;\n /***/\n },\n /* 159 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RightAngleConnectorRoutingMathOperations = void 0;\n\n var segment_1 = __webpack_require__(33);\n\n var math_1 = __webpack_require__(32);\n\n var AStarMetrics_1 = __webpack_require__(160);\n\n var Utils_1 = __webpack_require__(3);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var RightAngleConnectorRoutingMathOperations =\n /** @class */\n function () {\n function RightAngleConnectorRoutingMathOperations() {}\n\n RightAngleConnectorRoutingMathOperations.createUnionSegments = function (segments, shouldCreateSegment) {\n var result = [];\n var startRenderPoint = segments[0].startPoint;\n var endRenderPoint = segments[0].endPoint;\n\n for (var i = 1; i < segments.length; i++) {\n var currentSegment = segments[i];\n\n if (shouldCreateSegment(endRenderPoint, currentSegment.startPoint)) {\n result.push(new segment_1.Segment(startRenderPoint.clone(), endRenderPoint.clone()));\n startRenderPoint = currentSegment.startPoint;\n }\n\n endRenderPoint = currentSegment.endPoint;\n }\n\n result.push(new segment_1.Segment(startRenderPoint, endRenderPoint));\n return result;\n };\n\n RightAngleConnectorRoutingMathOperations.unionPoints = function (points) {\n var index = 0;\n\n while (index < points.length - 2) {\n if (Utils_1.GeometryUtils.isCorner(points[index], points[index + 1], points[index + 2])) index++;else {\n points.splice(index + 1, 1);\n index = Math.max(0, index - 1);\n }\n }\n };\n\n RightAngleConnectorRoutingMathOperations.getTurnDirection = function (angle) {\n if (math_1.MathUtils.numberCloseTo(angle, 0)) return AStarMetrics_1.RightAngleTurnDirection.Straight;\n if (math_1.MathUtils.numberCloseTo(angle, Math.PI)) return AStarMetrics_1.RightAngleTurnDirection.Backwards;\n return angle < Math.PI ? AStarMetrics_1.RightAngleTurnDirection.Left : AStarMetrics_1.RightAngleTurnDirection.Right;\n };\n\n RightAngleConnectorRoutingMathOperations.isSegmentNormal = function (segment, isHorizontal) {\n return isHorizontal ? math_1.MathUtils.numberCloseTo(segment.startPoint.y, segment.endPoint.y) : math_1.MathUtils.numberCloseTo(segment.startPoint.x, segment.endPoint.x);\n };\n\n RightAngleConnectorRoutingMathOperations.isConnectionRectanleLineIntersected = function (rect, segment, side, excludeBeginPoint, excludeEndPoint, createPoint) {\n switch (side) {\n case DiagramItem_1.ConnectionPointSide.North:\n return Utils_1.GeometryUtils.isLineIntersected(createPoint(rect.x, rect.y), createPoint(rect.right, rect.y), segment, excludeBeginPoint, excludeEndPoint);\n\n case DiagramItem_1.ConnectionPointSide.South:\n return Utils_1.GeometryUtils.isLineIntersected(createPoint(rect.right, rect.bottom), createPoint(rect.x, rect.bottom), segment, excludeBeginPoint, excludeEndPoint);\n\n case DiagramItem_1.ConnectionPointSide.West:\n return Utils_1.GeometryUtils.isLineIntersected(createPoint(rect.x, rect.y), createPoint(rect.x, rect.bottom), segment, excludeBeginPoint, excludeEndPoint);\n\n case DiagramItem_1.ConnectionPointSide.East:\n return Utils_1.GeometryUtils.isLineIntersected(createPoint(rect.right, rect.y), createPoint(rect.right, rect.bottom), segment, excludeBeginPoint, excludeEndPoint);\n\n default:\n return false;\n }\n };\n\n RightAngleConnectorRoutingMathOperations.createBeginConnectionSegment = function (beginConnectionSide, beginPoint, offset, createPoint) {\n switch (beginConnectionSide) {\n case DiagramItem_1.ConnectionPointSide.North:\n return new segment_1.Segment(beginPoint, createPoint(beginPoint.x, beginPoint.y - offset));\n\n case DiagramItem_1.ConnectionPointSide.South:\n return new segment_1.Segment(beginPoint, createPoint(beginPoint.x, beginPoint.y + offset));\n\n case DiagramItem_1.ConnectionPointSide.West:\n return new segment_1.Segment(beginPoint, createPoint(beginPoint.x - offset, beginPoint.y));\n\n case DiagramItem_1.ConnectionPointSide.East:\n return new segment_1.Segment(beginPoint, createPoint(beginPoint.x + offset, beginPoint.y));\n\n default:\n return beginPoint;\n }\n };\n\n RightAngleConnectorRoutingMathOperations.createEndConnectionSegment = function (endConnectionSide, endPoint, offset, createPoint) {\n switch (endConnectionSide) {\n case DiagramItem_1.ConnectionPointSide.North:\n return new segment_1.Segment(createPoint(endPoint.x, endPoint.y - offset), endPoint);\n\n case DiagramItem_1.ConnectionPointSide.South:\n return new segment_1.Segment(createPoint(endPoint.x, endPoint.y + offset), endPoint);\n\n case DiagramItem_1.ConnectionPointSide.West:\n return new segment_1.Segment(createPoint(endPoint.x - offset, endPoint.y), endPoint);\n\n case DiagramItem_1.ConnectionPointSide.East:\n return new segment_1.Segment(createPoint(endPoint.x + offset, endPoint.y), endPoint);\n\n default:\n return endPoint;\n }\n };\n\n return RightAngleConnectorRoutingMathOperations;\n }();\n\n exports.RightAngleConnectorRoutingMathOperations = RightAngleConnectorRoutingMathOperations;\n /***/\n },\n /* 160 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.IntersectedShapeZone = exports.AStarMetrics = exports.IntersectedShapesMetrics = exports.TurnDirectionMetrics = exports.IntersectedShapeMetrics = exports.RightAngleTurnDirection = void 0;\n\n var point_1 = __webpack_require__(1);\n\n var metrics_1 = __webpack_require__(36);\n\n var RightAngleTurnDirection;\n\n (function (RightAngleTurnDirection) {\n RightAngleTurnDirection[RightAngleTurnDirection[\"Straight\"] = 0] = \"Straight\";\n RightAngleTurnDirection[RightAngleTurnDirection[\"Left\"] = 1] = \"Left\";\n RightAngleTurnDirection[RightAngleTurnDirection[\"Right\"] = 2] = \"Right\";\n RightAngleTurnDirection[RightAngleTurnDirection[\"Backwards\"] = 3] = \"Backwards\";\n })(RightAngleTurnDirection = exports.RightAngleTurnDirection || (exports.RightAngleTurnDirection = {}));\n\n var IntersectedShapeMetrics =\n /** @class */\n function () {\n function IntersectedShapeMetrics(description, shapeMargin) {\n this.description = description;\n this.shapeMargin = shapeMargin;\n }\n\n IntersectedShapeMetrics.prototype.penalty = function (oldValue, distance, position, item) {\n var rectangle = item.rectangle;\n if (rectangle.containsPoint(position)) return oldValue + this.description.shape * distance;\n var relativePenalty = this.createRelativeMarginPenalty(position, rectangle, this.shapeMargin);\n if (relativePenalty > 0) return oldValue + this.description.margin * relativePenalty * distance;\n return oldValue;\n };\n\n IntersectedShapeMetrics.prototype.createRelativeMarginPenalty = function (point, rectangle, margin) {\n var isTopPosition = this.isTopPosition(point, rectangle, margin);\n var isLeftPosition = this.isLeftPosition(point, rectangle, margin);\n var isBottomPosition = this.isBottomPosition(point, rectangle, margin);\n var isRightPosition = this.isRightPosition(point, rectangle, margin);\n\n if (isTopPosition) {\n if (isLeftPosition) {\n var extendedRectangle = rectangle.clone().inflate(margin);\n var extendedTopLeft = extendedRectangle.createPosition();\n var rectangleTopLeft = rectangle.createPosition();\n var topLeftDistance = metrics_1.Metrics.euclideanDistance(rectangleTopLeft, extendedTopLeft);\n var currentDistance = metrics_1.Metrics.euclideanDistance(rectangleTopLeft, point);\n return 1 - currentDistance / topLeftDistance;\n }\n\n if (isRightPosition) {\n var extendedRectangle = rectangle.clone().inflate(margin);\n var extendedTopRight = new point_1.Point(extendedRectangle.right, extendedRectangle.y);\n var rectangleTopRight = new point_1.Point(rectangle.right, rectangle.y);\n var topRightDistance = metrics_1.Metrics.euclideanDistance(rectangleTopRight, extendedTopRight);\n var currentDistance = metrics_1.Metrics.euclideanDistance(rectangleTopRight, point);\n return 1 - currentDistance / topRightDistance;\n }\n\n return 1 - (rectangle.y - point.y) / margin;\n }\n\n if (isBottomPosition) {\n if (isLeftPosition) {\n var extendedRectangle = rectangle.clone().inflate(margin);\n var extendedBottomLeft = new point_1.Point(extendedRectangle.x, extendedRectangle.bottom);\n var rectangleBottomLeft = new point_1.Point(rectangle.x, rectangle.bottom);\n var bottomLeftDistance = metrics_1.Metrics.euclideanDistance(rectangleBottomLeft, extendedBottomLeft);\n var currentDistance = metrics_1.Metrics.euclideanDistance(rectangleBottomLeft, point);\n return 1 - currentDistance / bottomLeftDistance;\n }\n\n if (isRightPosition) {\n var extendedRectangle = rectangle.clone().inflate(margin);\n var extendedBottomRight = new point_1.Point(extendedRectangle.right, extendedRectangle.bottom);\n var rectangleBottomRight = new point_1.Point(rectangle.right, rectangle.bottom);\n var bottomRightDistance = metrics_1.Metrics.euclideanDistance(rectangleBottomRight, extendedBottomRight);\n var currentDistance = metrics_1.Metrics.euclideanDistance(rectangleBottomRight, point);\n return 1 - currentDistance / bottomRightDistance;\n }\n\n return 1 - (point.y - rectangle.bottom) / margin;\n }\n\n if (isLeftPosition) return 1 - (rectangle.x - point.x) / margin;\n if (isRightPosition) return 1 - (point.x - rectangle.right) / margin;\n return 0;\n };\n\n IntersectedShapeMetrics.prototype.isTopPosition = function (point, rectangle, margin) {\n return point.x > rectangle.x - margin && point.x < rectangle.right + margin && point.y > rectangle.y - margin && point.y < rectangle.y;\n };\n\n IntersectedShapeMetrics.prototype.isBottomPosition = function (point, rectangle, margin) {\n return point.x > rectangle.x - margin && point.x < rectangle.right + margin && point.y > rectangle.bottom && point.y < rectangle.bottom + margin;\n };\n\n IntersectedShapeMetrics.prototype.isLeftPosition = function (point, rectangle, margin) {\n return point.x > rectangle.x - margin && point.x < rectangle.x && point.y > rectangle.y - margin && point.y < rectangle.bottom + margin;\n };\n\n IntersectedShapeMetrics.prototype.isRightPosition = function (point, rectangle, margin) {\n return point.x > rectangle.right && point.x < rectangle.right + margin && point.y > rectangle.y - margin && point.y < rectangle.bottom + margin;\n };\n\n return IntersectedShapeMetrics;\n }();\n\n exports.IntersectedShapeMetrics = IntersectedShapeMetrics;\n\n var TurnDirectionMetrics =\n /** @class */\n function () {\n function TurnDirectionMetrics(description) {\n this.description = description;\n }\n\n TurnDirectionMetrics.prototype.penalty = function (oldValue, turnDirection) {\n switch (turnDirection) {\n case RightAngleTurnDirection.Backwards:\n return oldValue * this.description.turnBack;\n\n case RightAngleTurnDirection.Left:\n return oldValue * this.description.turnLeft;\n\n case RightAngleTurnDirection.Right:\n return oldValue * this.description.turnRight;\n }\n\n return oldValue;\n };\n\n return TurnDirectionMetrics;\n }();\n\n exports.TurnDirectionMetrics = TurnDirectionMetrics;\n\n var IntersectedShapesMetrics =\n /** @class */\n function () {\n function IntersectedShapesMetrics(shapeMetrics) {\n this.shapeMetrics = shapeMetrics;\n }\n\n IntersectedShapesMetrics.prototype.penalty = function (oldValue, distance, position, intersectedItems) {\n var _this = this;\n\n if (!intersectedItems || !intersectedItems.length) return oldValue;\n var result = oldValue;\n intersectedItems.forEach(function (item) {\n return result = _this.shapeMetrics.penalty(result, distance, position, item);\n });\n return result;\n };\n\n return IntersectedShapesMetrics;\n }();\n\n exports.IntersectedShapesMetrics = IntersectedShapesMetrics;\n\n var AStarMetrics =\n /** @class */\n function () {\n function AStarMetrics(turnDirectionMetrics, shapesMetrics) {\n this.turnDirectionMetrics = turnDirectionMetrics;\n this.shapesMetrics = shapesMetrics;\n }\n\n AStarMetrics.prototype.distance = function (point1, point2) {\n return metrics_1.Metrics.manhattanDistance(point1, point2);\n };\n\n AStarMetrics.prototype.penalty = function (distance, position, turnDirection, intersectedItems) {\n var result = distance;\n result = this.shapesMetrics.penalty(result, distance, position, intersectedItems);\n result = this.turnDirectionMetrics.penalty(result, turnDirection);\n return result;\n };\n\n return AStarMetrics;\n }();\n\n exports.AStarMetrics = AStarMetrics;\n var IntersectedShapeZone;\n\n (function (IntersectedShapeZone) {\n IntersectedShapeZone[IntersectedShapeZone[\"None\"] = 0] = \"None\";\n IntersectedShapeZone[IntersectedShapeZone[\"Shape\"] = 1] = \"Shape\";\n IntersectedShapeZone[IntersectedShapeZone[\"Margin\"] = 2] = \"Margin\";\n })(IntersectedShapeZone = exports.IntersectedShapeZone || (exports.IntersectedShapeZone = {}));\n /***/\n\n },\n /* 161 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TOUCH_ACTION_NONE = void 0;\n exports.TOUCH_ACTION_NONE = \"dxdi-touch-action\";\n /***/\n },\n /* 162 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics89 = function extendStatics(d, b) {\n _extendStatics89 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics89(d, b);\n };\n\n return function (d, b) {\n _extendStatics89(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DeleteCommand = void 0;\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var DeleteCommand =\n /** @class */\n function (_super) {\n __extends(DeleteCommand, _super);\n\n function DeleteCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n DeleteCommand.prototype.isEnabled = function () {\n var items = this.control.selection.getSelectedItems();\n return _super.prototype.isEnabled.call(this) && items.length && (items.length > 1 || this.permissionsProvider.canDeleteItems(items));\n };\n\n DeleteCommand.prototype.executeCore = function (state) {\n var items = this.control.selection.getSelectedItems(true, true);\n this.permissionsProvider.beginDeleteItems(items);\n ModelUtils_1.ModelUtils.deleteSelection(this.control.history, this.control.model, this.control.selection);\n this.permissionsProvider.endDeleteItems();\n return true;\n };\n\n Object.defineProperty(DeleteCommand.prototype, \"isPermissionsRequired\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n return DeleteCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.DeleteCommand = DeleteCommand;\n /***/\n },\n /* 163 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Flag = function () {\n function Flag(initValue) {\n if (initValue === void 0) {\n initValue = 0;\n }\n\n this.value = initValue;\n }\n\n Flag.prototype.get = function (enumVal) {\n return (this.value & enumVal) === enumVal;\n };\n\n Flag.prototype.set = function (enumVal, newValue) {\n var currVal = (this.value & enumVal) === enumVal;\n\n if (currVal !== newValue) {\n if (newValue) this.value |= enumVal;else this.value ^= enumVal;\n }\n\n return this;\n };\n\n Flag.prototype.add = function (value) {\n this.value |= value;\n };\n\n Flag.prototype.anyOf = function () {\n var flags = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n flags[_i] = arguments[_i];\n }\n\n for (var _a = 0, flags_1 = flags; _a < flags_1.length; _a++) {\n var flag = flags_1[_a];\n if ((this.value & flag) === flag) return true;\n }\n\n return false;\n };\n\n Flag.prototype.getValue = function () {\n return this.value;\n };\n\n Flag.prototype.clone = function () {\n return new Flag(this.value);\n };\n\n return Flag;\n }();\n\n exports.Flag = Flag;\n /***/\n },\n /* 164 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var list_1 = __webpack_require__(82);\n\n var search_1 = __webpack_require__(42);\n\n var fixed_1 = __webpack_require__(108);\n\n var collector_1 = __webpack_require__(169);\n\n var IntervalAlgorithms = function () {\n function IntervalAlgorithms() {}\n\n IntervalAlgorithms.oneConstainsOtherArraysOfInterval = function (mergedIntervalsA, intervalsB) {\n var shouldBeContais = list_1.ListUtils.deepCopy(intervalsB);\n var currenInterval = shouldBeContais.pop();\n\n while (currenInterval) {\n if (!list_1.ListUtils.unsafeAnyOf(mergedIntervalsA, function (mergedInterval) {\n return mergedInterval.containsInterval(currenInterval);\n })) return false;\n currenInterval = shouldBeContais.pop();\n }\n\n return true;\n };\n\n IntervalAlgorithms.getIntersection = function (intervalA, intervalB) {\n return IntervalAlgorithms.getIntersectionTemplate(intervalA, intervalB, intervalA);\n };\n\n IntervalAlgorithms.getIntersectionTemplate = function (intervalA, intervalB, template) {\n var start = Math.max(intervalA.start, intervalB.start);\n var end = Math.min(intervalA.end, intervalB.end);\n if (start > end) return null;\n return template.makeByStartEnd(start, end);\n };\n\n IntervalAlgorithms.getIntersectionNonNullLength = function (intervalA, intervalB) {\n return IntervalAlgorithms.getIntersectionNonNullLengthTemplate(intervalA, intervalB, intervalA);\n };\n\n IntervalAlgorithms.getIntersectionNonNullLengthTemplate = function (intervalA, intervalB, template) {\n var inters = IntervalAlgorithms.getIntersectionTemplate(intervalA, intervalB, template);\n return inters && inters.length ? inters : null;\n };\n\n IntervalAlgorithms.getIntersectionsTwoArraysOfInterval = function (intervalsA, intervalsB) {\n return IntervalAlgorithms.getIntersectionsTwoArraysOfIntervalTemplate(intervalsA, intervalsB, intervalsA[0]);\n };\n\n IntervalAlgorithms.getIntersectionsTwoArraysOfIntervalTemplate = function (intervalsA, intervalsB, template) {\n var result = [];\n var lengthIntervalsA = intervalsA.length;\n var lengthIntervalsB = intervalsB.length;\n var intervalsAIndex = 0;\n var intervalsBIndex = 0;\n var currAInterval = intervalsA[intervalsAIndex];\n var currBInterval = intervalsB[intervalsBIndex];\n var currResultInterval = null;\n\n while (intervalsAIndex < lengthIntervalsA && intervalsBIndex < lengthIntervalsB) {\n var intersection = IntervalAlgorithms.getIntersectionTemplate(currAInterval, currBInterval, template);\n\n if (intersection) {\n if (currResultInterval && currResultInterval.end === intersection.start) currResultInterval.length += intersection.length;else {\n currResultInterval = intersection;\n result.push(currResultInterval);\n }\n }\n\n if (currAInterval.end < currBInterval.end) {\n intervalsAIndex++;\n currAInterval = intervalsA[intervalsAIndex];\n } else {\n intervalsBIndex++;\n currBInterval = intervalsB[intervalsBIndex];\n }\n }\n\n return result;\n };\n\n IntervalAlgorithms.getAffectedObjects = function (objects, intervals, getFirstIndex, conflictResolver) {\n if (getFirstIndex === void 0) {\n getFirstIndex = function getFirstIndex(start) {\n return search_1.SearchUtils.normedInterpolationIndexOf(objects, function (obj) {\n return obj.interval.start;\n }, start);\n };\n }\n\n if (conflictResolver === void 0) {\n conflictResolver = function conflictResolver(objectInterval, touchingIntervalLength, touchPoint) {\n return objectInterval.start === touchPoint && touchingIntervalLength === 0;\n };\n }\n\n return IntervalAlgorithms.getAffectedObjectsTemplate(objects, intervals, intervals[0], getFirstIndex, conflictResolver);\n };\n\n IntervalAlgorithms.getAffectedObjectsTemplate = function (objects, intervals, template, getFirstIndex, conflictResolver) {\n if (getFirstIndex === void 0) {\n getFirstIndex = function getFirstIndex(start) {\n return search_1.SearchUtils.normedInterpolationIndexOf(objects, function (obj) {\n return obj.interval.start;\n }, start);\n };\n }\n\n if (conflictResolver === void 0) {\n conflictResolver = function conflictResolver(objectInterval, touchingIntervalLength, touchPoint) {\n return objectInterval.start === touchPoint && touchingIntervalLength === 0;\n };\n }\n\n var collector = new collector_1.SparseIntervalsCollector(template);\n\n for (var _i = 0, intervals_1 = intervals; _i < intervals_1.length; _i++) {\n var interval = intervals_1[_i];\n var ind = Math.max(0, getFirstIndex(interval.start, objects));\n\n for (var obj = void 0; obj = objects[ind]; ind++) {\n var objInterval = obj.interval;\n if (objInterval.start > interval.end) break;\n var intersection = IntervalAlgorithms.getIntersectionTemplate(objInterval, interval, template);\n if (intersection && (intersection.length || conflictResolver(objInterval, interval.length, intersection.start))) collector.add(ind);\n }\n }\n\n return collector.getIntervals();\n };\n\n IntervalAlgorithms.handleAffectedObjects = function (objects, intervals, callback, getFirstIndex) {\n if (getFirstIndex === void 0) {\n getFirstIndex = function getFirstIndex(start) {\n return search_1.SearchUtils.normedInterpolationIndexOf(objects, function (obj) {\n return obj.interval.start;\n }, start);\n };\n }\n\n var template = new fixed_1.FixedInterval(0, 0);\n\n for (var _i = 0, intervals_2 = intervals; _i < intervals_2.length; _i++) {\n var interval = intervals_2[_i];\n var ind = Math.max(0, getFirstIndex(interval.start, objects));\n\n for (var obj = void 0; obj = objects[ind]; ind++) {\n var objInterval = obj.interval;\n if (objInterval.start > interval.end) break;\n var intersection = IntervalAlgorithms.getIntersectionTemplate(objInterval, interval, template);\n if (intersection) callback(obj, ind, interval, intersection);\n }\n }\n };\n\n IntervalAlgorithms.getMergedIntervals = function (intervals, needSort) {\n return IntervalAlgorithms.getMergedIntervalsTemplate(intervals, needSort, intervals[0]);\n };\n\n IntervalAlgorithms.getMergedIntervalsTemplate = function (intervals, needSort, template) {\n if (intervals.length < 2) return intervals.length > 0 ? [template.makeByStartLength(intervals[0].start, intervals[0].length)] : [];\n var sortedIntervals = needSort ? [].concat(intervals).sort(function (a, b) {\n return a.start - b.start;\n }) : intervals;\n var result = [];\n\n for (var i = 0, interval = void 0; interval = sortedIntervals[i];) {\n var minBound = interval.start;\n var maxBound = interval.end;\n\n for (++i; (interval = sortedIntervals[i]) !== undefined && interval.start <= maxBound; i++) {\n if (interval.end > maxBound) maxBound = interval.end;\n }\n\n result.push(template.makeByStartEnd(minBound, maxBound));\n }\n\n return result;\n };\n\n IntervalAlgorithms.reflectIntervals = function (intervals, bounds) {\n return IntervalAlgorithms.reflectIntervalsTemplate(intervals, bounds, bounds);\n };\n\n IntervalAlgorithms.reflectIntervalsTemplate = function (intervals, bounds, template) {\n if (!intervals.length) return [template.makeByStartLength(bounds.start, bounds.length)];\n var lastIntervalEnd = list_1.ListUtils.last(intervals).end;\n var result = list_1.ListUtils.reducedMap(intervals, function (curr, i) {\n return IntervalAlgorithms.getIntersectionNonNullLengthTemplate(template.makeByStartEnd(intervals[i - 1].end, curr.start), bounds, template);\n }, 1);\n if (bounds.start < intervals[0].start) result.unshift(template.makeByStartEnd(bounds.start, intervals[0].start));\n if (bounds.end > lastIntervalEnd) result.push(template.makeByStartEnd(lastIntervalEnd, bounds.end));\n return result;\n };\n\n IntervalAlgorithms.reflectionOfPointOnInterval = function (value, valInterval, targetInterval) {\n return (value - valInterval.start) / valInterval.length * targetInterval.length + targetInterval.start;\n };\n\n return IntervalAlgorithms;\n }();\n\n exports.IntervalAlgorithms = IntervalAlgorithms;\n /***/\n },\n /* 165 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var tslib_1 = __webpack_require__(57);\n\n var MinMax = function () {\n function MinMax(minElement, maxElement) {\n this.minElement = minElement;\n this.maxElement = maxElement;\n }\n\n return MinMax;\n }();\n\n exports.MinMax = MinMax;\n\n var MinMaxNumber = function (_super) {\n tslib_1.__extends(MinMaxNumber, _super);\n\n function MinMaxNumber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(MinMaxNumber.prototype, \"length\", {\n get: function get() {\n return this.maxElement - this.minElement;\n },\n enumerable: true,\n configurable: true\n });\n return MinMaxNumber;\n }(MinMax);\n\n exports.MinMaxNumber = MinMaxNumber;\n\n var ExtendedMin = function () {\n function ExtendedMin(minElement, minValue) {\n this.minElement = minElement;\n this.minValue = minValue;\n }\n\n return ExtendedMin;\n }();\n\n exports.ExtendedMin = ExtendedMin;\n\n var ExtendedMax = function () {\n function ExtendedMax(maxElement, maxValue) {\n this.maxElement = maxElement;\n this.maxValue = maxValue;\n }\n\n return ExtendedMax;\n }();\n\n exports.ExtendedMax = ExtendedMax;\n\n var ExtendedMinMax = function (_super) {\n tslib_1.__extends(ExtendedMinMax, _super);\n\n function ExtendedMinMax(minElement, minValue, maxElement, maxValue) {\n var _this = _super.call(this, minElement, maxElement) || this;\n\n _this.minValue = minValue;\n _this.maxValue = maxValue;\n return _this;\n }\n\n return ExtendedMinMax;\n }(MinMax);\n\n exports.ExtendedMinMax = ExtendedMinMax;\n /***/\n },\n /* 166 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Comparers = function () {\n function Comparers() {}\n\n Comparers.number = function (a, b) {\n return a - b;\n };\n\n Comparers.string = function (a, b) {\n return a === b ? 0 : a > b ? 1 : -1;\n };\n\n Comparers.stringIgnoreCase = function (a, b) {\n a = a.toLowerCase();\n b = b.toLowerCase();\n return a === b ? 0 : a > b ? 1 : -1;\n };\n\n return Comparers;\n }();\n\n exports.Comparers = Comparers;\n\n var Equals = function () {\n function Equals() {}\n\n Equals.simpleType = function (a, b) {\n return a === b;\n };\n\n Equals.object = function (a, b) {\n return a && b && (a === b || a.equals(b));\n };\n\n return Equals;\n }();\n\n exports.Equals = Equals;\n /***/\n },\n /* 167 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var tslib_1 = __webpack_require__(57);\n\n var const_1 = __webpack_require__(168);\n\n var MutableInterval = function (_super) {\n tslib_1.__extends(MutableInterval, _super);\n\n function MutableInterval() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MutableInterval.prototype.normalizeLength = function () {\n if (this.length < 0) this.length = 0;\n return this;\n };\n\n return MutableInterval;\n }(const_1.ConstInterval);\n\n exports.MutableInterval = MutableInterval;\n /***/\n },\n /* 168 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var ConstInterval = function () {\n function ConstInterval() {}\n\n Object.defineProperty(ConstInterval.prototype, \"center\", {\n get: function get() {\n return this.start + this.length / 2;\n },\n enumerable: true,\n configurable: true\n });\n\n ConstInterval.prototype.isNormalized = function () {\n return this.end >= this.start;\n };\n\n ConstInterval.prototype.isCollapsed = function () {\n return this.length === 0;\n };\n\n ConstInterval.prototype.equals = function (obj) {\n return this.start === obj.start && this.end === obj.end;\n };\n\n ConstInterval.isCollapsed = function (intervals) {\n return !intervals[1] && intervals[0].isCollapsed();\n };\n\n ConstInterval.prototype.containsInterval = function (interval) {\n return this.start <= interval.start && this.end >= interval.end;\n };\n\n ConstInterval.prototype.containsIntervalWithoutEnd = function (interval) {\n return this.start <= interval.start && this.end > interval.end;\n };\n\n ConstInterval.prototype.contains = function (pos) {\n return this.start <= pos && pos < this.end;\n };\n\n ConstInterval.prototype.containsWithIntervalEnd = function (val) {\n return this.start <= val && val <= this.end;\n };\n\n ConstInterval.prototype.containsWithoutIntervalEndAndStart = function (pos) {\n return this.start < pos && pos < this.end;\n };\n\n return ConstInterval;\n }();\n\n exports.ConstInterval = ConstInterval;\n /***/\n },\n /* 169 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var intervals_1 = __webpack_require__(170);\n\n var SparseIntervalsCollector = function () {\n function SparseIntervalsCollector(template) {\n this.intervals = [];\n this.template = template;\n }\n\n SparseIntervalsCollector.prototype.add = function (index) {\n if (this.curr && this.curr.end === index) {\n this.curr.length++;\n return;\n }\n\n this.curr = this.template.makeByStartLength(index, 1);\n this.intervals.push(this.curr);\n };\n\n SparseIntervalsCollector.prototype.getIntervals = function () {\n return new intervals_1.SparseIntervals(this.intervals);\n };\n\n return SparseIntervalsCollector;\n }();\n\n exports.SparseIntervalsCollector = SparseIntervalsCollector;\n /***/\n },\n /* 170 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var iterator_1 = __webpack_require__(109);\n\n var objects_iterator_1 = __webpack_require__(171);\n\n var SparseIntervals = function () {\n function SparseIntervals(list) {\n if (list === void 0) {\n list = [];\n }\n\n this.list = list;\n this._count = 0;\n this._numIntervals = 0;\n\n for (var _i = 0, list_1 = list; _i < list_1.length; _i++) {\n var curr = list_1[_i];\n this._count += curr.length;\n this._numIntervals++;\n }\n }\n\n Object.defineProperty(SparseIntervals.prototype, \"count\", {\n get: function get() {\n return this._count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(SparseIntervals.prototype, \"numIntervals\", {\n get: function get() {\n return this._numIntervals;\n },\n enumerable: true,\n configurable: true\n });\n\n SparseIntervals.prototype.getInterval = function (index) {\n return this.list[index];\n };\n\n SparseIntervals.prototype.getNativeIterator = function () {\n return new iterator_1.SparseIntervalsIterator(this);\n };\n\n SparseIntervals.prototype.getObjectsIterator = function (objects) {\n return new objects_iterator_1.SparseObjectsIterator(this, objects);\n };\n\n return SparseIntervals;\n }();\n\n exports.SparseIntervals = SparseIntervals;\n /***/\n },\n /* 171 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var tslib_1 = __webpack_require__(57);\n\n var iterator_1 = __webpack_require__(109);\n\n var SparseObjectsIterator = function (_super) {\n tslib_1.__extends(SparseObjectsIterator, _super);\n\n function SparseObjectsIterator(sparseIntervals, objects) {\n var _this = _super.call(this, sparseIntervals) || this;\n\n _this.objects = objects;\n return _this;\n }\n\n SparseObjectsIterator.prototype.initObject = function () {\n this.obj = this.objects[this.index];\n };\n\n return SparseObjectsIterator;\n }(iterator_1.SparseIntervalsIterator);\n\n exports.SparseObjectsIterator = SparseObjectsIterator;\n /***/\n },\n /* 172 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics90 = function extendStatics(d, b) {\n _extendStatics90 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics90(d, b);\n };\n\n return function (d, b) {\n _extendStatics90(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TextFloodFilterPrimitive = exports.TextFilterPrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var FilterPrimitive_1 = __webpack_require__(110);\n\n var Model_1 = __webpack_require__(61);\n\n var color_1 = __webpack_require__(22);\n\n var TextFilterPrimitive =\n /** @class */\n function (_super) {\n __extends(TextFilterPrimitive, _super);\n\n function TextFilterPrimitive(id, x, y, width, height) {\n if (x === void 0) {\n x = \"-0.05\";\n }\n\n if (y === void 0) {\n y = \"-0.05\";\n }\n\n if (width === void 0) {\n width = \"1.1\";\n }\n\n if (height === void 0) {\n height = \"1.1\";\n }\n\n var _this = _super.call(this, id, x, y, width, height) || this;\n\n _this.id = id;\n _this.x = x;\n _this.y = y;\n _this.width = width;\n _this.height = height;\n return _this;\n }\n\n TextFilterPrimitive.prototype.createChildElements = function (parent) {\n var feFlood = document.createElementNS(RenderHelper_1.svgNS, \"feFlood\");\n parent.appendChild(feFlood);\n var feComposite = document.createElementNS(RenderHelper_1.svgNS, \"feComposite\");\n feComposite.setAttribute(\"in\", \"SourceGraphic\");\n feComposite.setAttribute(\"operator\", \"atop\");\n parent.appendChild(feComposite);\n };\n\n return TextFilterPrimitive;\n }(FilterPrimitive_1.FilterPrimitive);\n\n exports.TextFilterPrimitive = TextFilterPrimitive;\n\n var TextFloodFilterPrimitive =\n /** @class */\n function (_super) {\n __extends(TextFloodFilterPrimitive, _super);\n\n function TextFloodFilterPrimitive(id, floodColor, x, y, width, height) {\n if (x === void 0) {\n x = \"-0.05\";\n }\n\n if (y === void 0) {\n y = \"-0.05\";\n }\n\n if (width === void 0) {\n width = \"1.1\";\n }\n\n if (height === void 0) {\n height = \"1.1\";\n }\n\n var _this = _super.call(this, id, x, y, width, height) || this;\n\n _this.id = id;\n _this.floodColor = floodColor;\n _this.x = x;\n _this.y = y;\n _this.width = width;\n _this.height = height;\n return _this;\n }\n\n TextFloodFilterPrimitive.prototype.applyChildrenProperties = function (element) {\n for (var child = void 0, i = 0; child = element.childNodes[i]; i++) {\n if (child.nodeName && child.nodeName.toUpperCase() === \"FEFLOOD\") {\n this.prepareFEFloodNode(child);\n break;\n }\n }\n };\n\n TextFloodFilterPrimitive.prototype.prepareFEFloodNode = function (node) {\n var colorHash = color_1.ColorUtils.colorToHash(this.floodColor);\n node.setAttribute(\"flood-color\", colorHash);\n node.setAttribute(\"class\", \"text-filter-flood\");\n if (this.floodColor !== Model_1.DiagramModel.defaultPageColor) node.style.setProperty(\"flood-color\", colorHash);else node.style.setProperty(\"flood-color\", \"\");\n };\n\n return TextFloodFilterPrimitive;\n }(TextFilterPrimitive);\n\n exports.TextFloodFilterPrimitive = TextFloodFilterPrimitive;\n /***/\n },\n /* 173 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var EncodeUtils = function () {\n function EncodeUtils() {}\n\n EncodeUtils.encodeHtml = function (text) {\n return text.replace(/&/g, '&').replace(//g, '>');\n };\n\n EncodeUtils.decodeHtml = function (text) {\n return text.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>');\n };\n\n EncodeUtils.prepareTextForRequest = function (text) {\n return text.replace(/%/g, '%25').replace(/&/g, '%26amp;').replace(/\\+/g, '%2B').replace(//g, '%26gt;').replace(/\"/g, '%26quot;');\n };\n\n EncodeUtils.prepareTextForCallBackRequest = function (text) {\n return text.replace(/&/g, '&').replace(//g, '>').replace(/\"/g, '"');\n };\n\n EncodeUtils.decodeViaTextArea = function (html) {\n var textArea = document.createElement('TEXTAREA');\n textArea.innerHTML = html;\n return textArea.value;\n };\n\n return EncodeUtils;\n }();\n\n exports.EncodeUtils = EncodeUtils;\n /***/\n },\n /* 174 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(19);\n\n var common_1 = __webpack_require__(34);\n\n var TouchUtils = function () {\n function TouchUtils() {}\n\n TouchUtils.onEventAttachingToDocument = function (eventName, func) {\n if (browser_1.Browser.MacOSMobilePlatform && TouchUtils.isTouchEventName(eventName)) {\n if (!TouchUtils.documentTouchHandlers[eventName]) TouchUtils.documentTouchHandlers[eventName] = [];\n TouchUtils.documentTouchHandlers[eventName].push(func);\n return TouchUtils.documentEventAttachingAllowed;\n }\n\n return true;\n };\n\n TouchUtils.isTouchEventName = function (eventName) {\n return browser_1.Browser.WebKitTouchUI && (eventName.indexOf('touch') > -1 || eventName.indexOf('gesture') > -1);\n };\n\n TouchUtils.isTouchEvent = function (evt) {\n return browser_1.Browser.WebKitTouchUI && common_1.isDefined(evt.changedTouches);\n };\n\n TouchUtils.getEventX = function (evt) {\n return browser_1.Browser.IE ? evt.pageX : evt.changedTouches[0].pageX;\n };\n\n TouchUtils.getEventY = function (evt) {\n return browser_1.Browser.IE ? evt.pageY : evt.changedTouches[0].pageY;\n };\n\n TouchUtils.touchMouseDownEventName = browser_1.Browser.WebKitTouchUI ? 'touchstart' : browser_1.Browser.Edge && browser_1.Browser.MSTouchUI && window.PointerEvent ? 'pointerdown' : 'mousedown';\n TouchUtils.touchMouseUpEventName = browser_1.Browser.WebKitTouchUI ? 'touchend' : browser_1.Browser.Edge && browser_1.Browser.MSTouchUI && window.PointerEvent ? 'pointerup' : 'mouseup';\n TouchUtils.touchMouseMoveEventName = browser_1.Browser.WebKitTouchUI ? 'touchmove' : browser_1.Browser.Edge && browser_1.Browser.MSTouchUI && window.PointerEvent ? 'pointermove' : 'mousemove';\n TouchUtils.msTouchDraggableClassName = 'dxMSTouchDraggable';\n TouchUtils.documentTouchHandlers = {};\n TouchUtils.documentEventAttachingAllowed = true;\n return TouchUtils;\n }();\n\n exports.TouchUtils = TouchUtils;\n /***/\n },\n /* 175 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n __webpack_require__(176).polyfill();\n /***/\n\n },\n /* 176 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n /**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n function assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n\n return to;\n }\n\n function polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n }\n\n module.exports = {\n assign: assign,\n polyfill: polyfill\n };\n /***/\n },\n /* 177 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var browser_1 = __webpack_require__(19);\n\n var base64_1 = __webpack_require__(83);\n\n var common_1 = __webpack_require__(34);\n\n var FileUtils = function () {\n function FileUtils() {}\n\n FileUtils.loadJavascriptFile = function (srcUri, callback) {\n var _a;\n\n var headElem = document.getElementsByTagName('head')[0];\n\n if (!headElem) {\n headElem = document.createElement('head');\n var bodyElem = document.getElementsByTagName('body')[0];\n (_a = bodyElem.parentNode) === null || _a === void 0 ? void 0 : _a.insertBefore(headElem, bodyElem);\n }\n\n var scriptElem = document.createElement('script');\n scriptElem.onload = callback;\n scriptElem.src = srcUri;\n headElem.appendChild(scriptElem);\n return {\n htmlScriptElement: scriptElem\n };\n };\n\n FileUtils.startDownloadFileLocal = function (content, fileName) {\n if (content instanceof ArrayBuffer) content = base64_1.Base64Utils.fromArrayBuffer(content);\n if (common_1.isString(content)) content = base64_1.Base64Utils.getFileFromBase64(content);\n if (window.navigator.msSaveOrOpenBlob) window.navigator.msSaveOrOpenBlob(content, fileName);else {\n var a_1 = document.createElement('a');\n var url_1 = URL.createObjectURL(content);\n a_1.href = url_1;\n a_1.download = fileName;\n document.body.appendChild(a_1);\n a_1.click();\n setTimeout(function () {\n document.body.removeChild(a_1);\n window.URL.revokeObjectURL(url_1);\n }, 0);\n }\n };\n\n FileUtils.createFile = function (fileBits, fileName, options) {\n var _a;\n\n if (browser_1.Browser.IE || browser_1.Browser.Edge && browser_1.Browser.MajorVersion < 86) {\n var blob = new Blob(fileBits, options);\n blob['lastModifiedDate'] = (_a = options === null || options === void 0 ? void 0 : options.lastModified) !== null && _a !== void 0 ? _a : Date.now();\n blob['name'] = fileName;\n return blob;\n } else return new File(fileBits, fileName, options);\n };\n\n FileUtils.isFile = function (file) {\n if (browser_1.Browser.IE || browser_1.Browser.Edge && browser_1.Browser.MajorVersion < 86) return file instanceof File || file instanceof Blob && common_1.isDefined(file.name);else return file instanceof File;\n };\n\n return FileUtils;\n }();\n\n exports.FileUtils = FileUtils;\n /***/\n },\n /* 178 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var _a, _b, _c;\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.OpenXmlMimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n exports.RtfMimeType = 'application/rtf';\n exports.PlainTextMimeType = 'text/plain';\n exports.DocmMimeType = 'application/vnd.ms-word.document.macroEnabled.12';\n exports.ImagePngMimeType = 'image/png';\n exports.ImageGifMimeType = 'image/gif';\n exports.ImageJpegMimeType = 'image/jpeg';\n exports.ImagePjpegMimeType = 'image/pjpeg';\n exports.ImageSvgMimeType = 'image/svg+xml';\n exports.ImageTiffMimeType = 'image/tiff';\n exports.ImageIcoMimeType = 'image/vnd.microsoft.icon';\n exports.ImageWbmpMimeType = 'image/vnd.wap.wbmp';\n exports.ImageWebpMimeType = 'image/webp';\n var DxMimeType;\n\n (function (DxMimeType) {\n DxMimeType[DxMimeType[\"Unknown\"] = 0] = \"Unknown\";\n DxMimeType[DxMimeType[\"OpenXml\"] = 1] = \"OpenXml\";\n DxMimeType[DxMimeType[\"Rtf\"] = 2] = \"Rtf\";\n DxMimeType[DxMimeType[\"PlainText\"] = 3] = \"PlainText\";\n DxMimeType[DxMimeType[\"Docm\"] = 4] = \"Docm\";\n DxMimeType[DxMimeType[\"Png\"] = 5] = \"Png\";\n DxMimeType[DxMimeType[\"Gif\"] = 6] = \"Gif\";\n DxMimeType[DxMimeType[\"Jpeg\"] = 7] = \"Jpeg\";\n DxMimeType[DxMimeType[\"Pjpeg\"] = 8] = \"Pjpeg\";\n DxMimeType[DxMimeType[\"Svg\"] = 9] = \"Svg\";\n DxMimeType[DxMimeType[\"Tiff\"] = 10] = \"Tiff\";\n DxMimeType[DxMimeType[\"Ico\"] = 11] = \"Ico\";\n DxMimeType[DxMimeType[\"Wbmp\"] = 12] = \"Wbmp\";\n DxMimeType[DxMimeType[\"Webp\"] = 13] = \"Webp\";\n })(DxMimeType = exports.DxMimeType || (exports.DxMimeType = {}));\n\n var MimeTypeUtils = function () {\n function MimeTypeUtils() {}\n\n MimeTypeUtils.stringTypeToExtension = function (mimeTypeAsStr) {\n var mimeType = MimeTypeUtils.stringTypeToTypeMap[mimeTypeAsStr];\n return mimeType === undefined ? '' : MimeTypeUtils.typeToExtensionMap[mimeType];\n };\n\n MimeTypeUtils.typeToExtension = function (mimeType) {\n var ext = MimeTypeUtils.typeToExtensionMap[mimeType];\n return ext !== null && ext !== void 0 ? ext : '';\n };\n\n MimeTypeUtils.extensionToType = function (extension) {\n extension = extension.toLowerCase();\n if (extension[0] !== '.') extension += '.';\n var mimeType = MimeTypeUtils.extensionToTypeMap[extension];\n return mimeType !== null && mimeType !== void 0 ? mimeType : DxMimeType.Unknown;\n };\n\n MimeTypeUtils.typeToStringType = function (mimeType) {\n var str = MimeTypeUtils.typeToStringTypeMap[mimeType];\n return str !== null && str !== void 0 ? str : '';\n };\n\n MimeTypeUtils.stringTypeToType = function (mimeTypeAsStr) {\n var mimeType = MimeTypeUtils.stringTypeToTypeMap[mimeTypeAsStr];\n return mimeType === undefined ? DxMimeType.Unknown : mimeType;\n };\n\n MimeTypeUtils.stringTypeToTypeMap = (_a = {}, _a[exports.OpenXmlMimeType] = DxMimeType.OpenXml, _a[exports.RtfMimeType] = DxMimeType.Rtf, _a[exports.PlainTextMimeType] = DxMimeType.PlainText, _a[exports.DocmMimeType] = DxMimeType.Docm, _a[exports.ImagePngMimeType] = DxMimeType.Png, _a[exports.ImageGifMimeType] = DxMimeType.Gif, _a[exports.ImageJpegMimeType] = DxMimeType.Jpeg, _a[exports.ImagePjpegMimeType] = DxMimeType.Pjpeg, _a[exports.ImageSvgMimeType] = DxMimeType.Svg, _a[exports.ImageTiffMimeType] = DxMimeType.Tiff, _a[exports.ImageIcoMimeType] = DxMimeType.Ico, _a[exports.ImageWbmpMimeType] = DxMimeType.Wbmp, _a[exports.ImageWebpMimeType] = DxMimeType.Webp, _a);\n MimeTypeUtils.typeToStringTypeMap = (_b = {}, _b[DxMimeType.Unknown] = undefined, _b[DxMimeType.OpenXml] = exports.OpenXmlMimeType, _b[DxMimeType.Rtf] = exports.RtfMimeType, _b[DxMimeType.PlainText] = exports.PlainTextMimeType, _b[DxMimeType.Docm] = exports.DocmMimeType, _b[DxMimeType.Png] = exports.ImagePngMimeType, _b[DxMimeType.Gif] = exports.ImageGifMimeType, _b[DxMimeType.Jpeg] = exports.ImageJpegMimeType, _b[DxMimeType.Pjpeg] = exports.ImagePjpegMimeType, _b[DxMimeType.Svg] = exports.ImageSvgMimeType, _b[DxMimeType.Tiff] = exports.ImageTiffMimeType, _b[DxMimeType.Ico] = exports.ImageIcoMimeType, _b[DxMimeType.Wbmp] = exports.ImageWbmpMimeType, _b[DxMimeType.Webp] = exports.ImageWebpMimeType, _b);\n MimeTypeUtils.typeToExtensionMap = (_c = {}, _c[DxMimeType.Unknown] = undefined, _c[DxMimeType.OpenXml] = '.docx', _c[DxMimeType.Rtf] = '.rtf', _c[DxMimeType.PlainText] = '.txt', _c[DxMimeType.Docm] = '.docm', _c[DxMimeType.Png] = '.png', _c[DxMimeType.Gif] = '.gif', _c[DxMimeType.Jpeg] = '.jpeg', _c[DxMimeType.Pjpeg] = '.pjpeg', _c[DxMimeType.Svg] = '.svg', _c[DxMimeType.Tiff] = '.tiff', _c[DxMimeType.Ico] = '.ico', _c[DxMimeType.Wbmp] = '.wbmp', _c[DxMimeType.Webp] = '.webp', _c);\n MimeTypeUtils.extensionToTypeMap = {\n '.docx': DxMimeType.OpenXml,\n '.rtf': DxMimeType.Rtf,\n '.txt': DxMimeType.PlainText,\n '.docm': DxMimeType.Docm,\n '.png': DxMimeType.Png,\n '.gif': DxMimeType.Gif,\n '.jpeg': DxMimeType.Jpeg,\n '.pjpeg': DxMimeType.Pjpeg,\n '.svg': DxMimeType.Svg,\n '.tiff': DxMimeType.Tiff,\n '.ico': DxMimeType.Ico,\n '.wbmp': DxMimeType.Wbmp,\n '.webp': DxMimeType.Webp\n };\n return MimeTypeUtils;\n }();\n\n exports.MimeTypeUtils = MimeTypeUtils;\n /***/\n },\n /* 179 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics91 = function extendStatics(d, b) {\n _extendStatics91 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics91(d, b);\n };\n\n return function (d, b) {\n _extendStatics91(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorPointsCalculator = void 0;\n\n var ConnectorPointsCalculatorBase_1 = __webpack_require__(113);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var ConnectorPointsCalculator =\n /** @class */\n function (_super) {\n __extends(ConnectorPointsCalculator, _super);\n\n function ConnectorPointsCalculator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ConnectorPointsCalculator.prototype.getPoints = function () {\n return this.connector.points.map(function (pt, index) {\n return new ConnectorRenderPoint_1.ConnectorRenderPoint(pt.x, pt.y, index);\n });\n };\n\n return ConnectorPointsCalculator;\n }(ConnectorPointsCalculatorBase_1.ConnectorPointsCalculatorBase);\n\n exports.ConnectorPointsCalculator = ConnectorPointsCalculator;\n /***/\n },\n /* 180 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics92 = function extendStatics(d, b) {\n _extendStatics92 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics92(d, b);\n };\n\n return function (d, b) {\n _extendStatics92(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorPointsOrthogonalCalculator = void 0;\n\n var rectangle_1 = __webpack_require__(12);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ConnectorPointsCalculatorBase_1 = __webpack_require__(113);\n\n var ConnectorPointsOrthogonalUndefinedSideCalculator_1 = __webpack_require__(181);\n\n var ConnectorPointsOrthogonalSouthSideCalculator_1 = __webpack_require__(182);\n\n var ConnectorPointsOrthogonalNorthSideCalculator_1 = __webpack_require__(183);\n\n var ConnectorPointsOrthogonalEastSideCalculator_1 = __webpack_require__(184);\n\n var ConnectorPointsOrthogonalWestSideCalculator_1 = __webpack_require__(185);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ConnectorPointsOrthogonalCalculator =\n /** @class */\n function (_super) {\n __extends(ConnectorPointsOrthogonalCalculator, _super);\n\n function ConnectorPointsOrthogonalCalculator(connector) {\n var _this = _super.call(this, connector) || this;\n\n _this.sideCalculators = {};\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.Undefined] = new ConnectorPointsOrthogonalUndefinedSideCalculator_1.ConnectorPointsOrthogonalUndefinedSideCalculator(_this);\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.South] = new ConnectorPointsOrthogonalSouthSideCalculator_1.ConnectorPointsOrthogonalSouthSideCalculator(_this);\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.North] = new ConnectorPointsOrthogonalNorthSideCalculator_1.ConnectorPointsOrthogonalNorthSideCalculator(_this);\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.East] = new ConnectorPointsOrthogonalEastSideCalculator_1.ConnectorPointsOrthogonalEastSideCalculator(_this);\n _this.sideCalculators[DiagramItem_1.ConnectionPointSide.West] = new ConnectorPointsOrthogonalWestSideCalculator_1.ConnectorPointsOrthogonalWestSideCalculator(_this);\n return _this;\n }\n\n Object.defineProperty(ConnectorPointsOrthogonalCalculator.prototype, \"beginRect\", {\n get: function get() {\n return this.connector.beginItem ? this.connector.beginItem.rectangle : undefined;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ConnectorPointsOrthogonalCalculator.prototype, \"endRect\", {\n get: function get() {\n return this.connector.endItem ? this.connector.endItem.rectangle : undefined;\n },\n enumerable: false,\n configurable: true\n });\n\n ConnectorPointsOrthogonalCalculator.prototype.getPoints = function () {\n var points = this.connector.points.map(function (pt, index) {\n return new ConnectorRenderPoint_1.ConnectorRenderPoint(pt.x, pt.y, index);\n });\n ModelUtils_1.ModelUtils.removeUnnecessaryRenderPoints(points);\n var beginIndex = 0;\n var endIndex = points.length - 1;\n var beginSide = this.getPointSide(points, 0);\n var beginNextSide = this.getPointSide(points, 1);\n var endSide = this.getPointSide(points, points.length - 1);\n var endPrevSide = this.getPointSide(points, points.length - 1 - 1);\n var beginSideCalculator = this.getSideCalculator(beginSide);\n var endSideCalculator = this.getSideCalculator(endSide);\n var originRect = this.beginRect;\n var originPoint = beginSideCalculator.getCorrectOriginPoint(points[beginIndex], originRect);\n var targetPoint = points[beginIndex + 1];\n\n if (points.length === 2 && beginSideCalculator.isOnSidePoint(originPoint, targetPoint) && beginSideCalculator.isDirectConnectionAllowed(beginNextSide, originPoint, targetPoint)) {\n var directConnectionPoints = beginSideCalculator.getDirectConnectionPoints(originPoint, targetPoint);\n directConnectionPoints.forEach(function (pt) {\n points.splice(beginIndex + 1, 0, pt);\n beginIndex++;\n endIndex++;\n });\n } else {\n var bOffsetPoints = beginSideCalculator.getBeginOffsetPoints(beginNextSide, points[beginIndex], points[beginIndex + 1], this.beginRect);\n bOffsetPoints.forEach(function (pt) {\n points.splice(beginIndex + 1, 0, pt);\n });\n beginIndex += bOffsetPoints.length;\n endIndex += bOffsetPoints.length;\n var eOffsetPoints = endSideCalculator.getEndOffsetPoints(endPrevSide, points[endIndex], points[endIndex - 1], this.endRect);\n eOffsetPoints.forEach(function (pt, index) {\n points.splice(endIndex + index, 0, pt);\n });\n this.addMiddlePoints(points, beginIndex, endIndex);\n }\n\n ModelUtils_1.ModelUtils.removeUnnecessaryRightAngleRenderPoints(points);\n return points;\n };\n\n ConnectorPointsOrthogonalCalculator.prototype.getSideCalculator = function (side) {\n return this.sideCalculators[side];\n };\n\n ConnectorPointsOrthogonalCalculator.prototype.getPointSide = function (points, index) {\n if (index === 0 && this.connector.beginItem) {\n var connectionPointIndex = this.connector.beginConnectionPointIndex;\n return this.connector.beginItem.getConnectionPointSideByIndex(connectionPointIndex, points[1]);\n }\n\n if (index === points.length - 1 && this.connector.endItem) {\n var connectionPointIndex = this.connector.endConnectionPointIndex;\n return this.connector.endItem.getConnectionPointSideByIndex(connectionPointIndex, points[points.length - 2]);\n }\n\n return DiagramItem_1.ConnectionPointSide.Undefined;\n };\n\n ConnectorPointsOrthogonalCalculator.prototype.addMiddlePoints = function (points, beginIndex, endIndex) {\n for (var index = beginIndex; index < endIndex; index++) {\n var nextIndex = index + 1;\n var middlePoint = this.getMiddlePoint(points[index], points[index - 1], index - 1 === 0, points[nextIndex], points[nextIndex + 1], nextIndex + 1 === points.length - 1);\n\n if (middlePoint !== undefined) {\n points.splice(index + 1, 0, middlePoint);\n index++;\n endIndex++;\n }\n }\n };\n\n ConnectorPointsOrthogonalCalculator.prototype.getMiddlePoints = function (point1, point2) {\n if (point1.x === point2.x || point1.y === point2.y) return [];\n return [new ConnectorRenderPoint_1.ConnectorRenderPoint(point1.x, point2.y), new ConnectorRenderPoint_1.ConnectorRenderPoint(point2.x, point1.y)];\n };\n\n ConnectorPointsOrthogonalCalculator.prototype.getMiddlePoint = function (point1, directionPoint1, nextToBegin, point2, directionPoint2, nextToEnd) {\n var _this = this;\n\n var point;\n var points = this.getMiddlePoints(point1, point2);\n points.forEach(function (pt) {\n var rect1 = _this.createPointsRect(point1, pt);\n\n var rect2 = _this.createPointsRect(pt, point2);\n\n var itemRect1 = _this.connector.beginItem ? _this.connector.beginItem.rectangle : undefined;\n var itemRect2 = _this.connector.endItem ? _this.connector.endItem.rectangle : undefined;\n if (itemRect1) if (rectangle_1.Rectangle.areIntersected(itemRect1, rect1) || rectangle_1.Rectangle.areIntersected(itemRect1, rect2)) return;\n if (itemRect2) if (rectangle_1.Rectangle.areIntersected(itemRect2, rect1) || rectangle_1.Rectangle.areIntersected(itemRect2, rect2)) return;\n if ((!_this.isReturnPoint(pt, point1, directionPoint1) || _this.isIntermediatePoints(point1, directionPoint1)) && (!_this.isReturnPoint(pt, point2, directionPoint2) || _this.isIntermediatePoints(point2, directionPoint2))) if (point === undefined) point = pt;else if (_this.isPriorMiddlePoint(pt, point1, directionPoint1, point2, directionPoint2)) point = pt;\n });\n if (point === undefined && points.length > 0) point = points[0];\n return point;\n };\n\n ConnectorPointsOrthogonalCalculator.prototype.createPointsRect = function (point1, point2) {\n var result = rectangle_1.Rectangle.fromPoints(point1, point2);\n if (result.width > 0) result = result.clone().inflate(-1, 0);\n if (result.height > 0) result = result.clone().inflate(0, -1);\n return result;\n };\n\n ConnectorPointsOrthogonalCalculator.prototype.isPriorMiddlePoint = function (point, point1, directionPoint1, point2, directionPoint2) {\n if (directionPoint1) if (point.x === directionPoint1.x || point.y === directionPoint1.y) return true;\n if (directionPoint2) if (point.x === directionPoint2.x || point.y === directionPoint2.y) return true;\n return false;\n };\n\n ConnectorPointsOrthogonalCalculator.prototype.isReturnPoint = function (point, point1, point2) {\n if (point1 !== undefined && point2 !== undefined) {\n if (point.x === point2.x) if (point1.y < point.y && point.y < point2.y || point1.y > point.y && point.y > point2.y) return true;\n if (point.y === point2.y) if (point1.x < point.x && point.x < point2.x || point1.x > point.x && point.x > point2.x) return true;\n }\n\n return false;\n };\n\n ConnectorPointsOrthogonalCalculator.prototype.isIntermediatePoints = function (point1, point2) {\n return 0 < point1.pointIndex && point1.pointIndex < this.connector.points.length - 1 && 0 < point2.pointIndex && point2.pointIndex < this.connector.points.length - 1;\n };\n\n return ConnectorPointsOrthogonalCalculator;\n }(ConnectorPointsCalculatorBase_1.ConnectorPointsCalculatorBase);\n\n exports.ConnectorPointsOrthogonalCalculator = ConnectorPointsOrthogonalCalculator;\n /***/\n },\n /* 181 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics93 = function extendStatics(d, b) {\n _extendStatics93 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics93(d, b);\n };\n\n return function (d, b) {\n _extendStatics93(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorPointsOrthogonalUndefinedSideCalculator = void 0;\n\n var ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var ConnectorPointsOrthogonalUndefinedSideCalculator =\n /** @class */\n function (_super) {\n __extends(ConnectorPointsOrthogonalUndefinedSideCalculator, _super);\n\n function ConnectorPointsOrthogonalUndefinedSideCalculator(parent) {\n return _super.call(this, parent) || this;\n }\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\n return originPoint;\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [];\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [];\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [];\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [];\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [];\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [];\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [];\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [];\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\n return true;\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\n var calculator = this.getSideCalculator(originPoint, targetPoint);\n if (calculator !== undefined) return calculator.isDirectConnectionAllowed(targetSide, originPoint, targetPoint);\n return true;\n };\n\n ConnectorPointsOrthogonalUndefinedSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\n var diffX = Math.abs(targetPoint.x - originPoint.x);\n var diffY = Math.abs(targetPoint.y - originPoint.y);\n\n if (diffX > diffY) {\n var minX = Math.min(originPoint.x, targetPoint.x);\n var cx = minX + diffX / 2;\n return [new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, originPoint.y), new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, targetPoint.y)];\n } else {\n var minY = Math.min(originPoint.y, targetPoint.y);\n var cy = minY + diffY / 2;\n return [new ConnectorRenderPoint_1.ConnectorRenderPoint(originPoint.x, cy), new ConnectorRenderPoint_1.ConnectorRenderPoint(targetPoint.x, cy)];\n }\n };\n\n return ConnectorPointsOrthogonalUndefinedSideCalculator;\n }(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase);\n\n exports.ConnectorPointsOrthogonalUndefinedSideCalculator = ConnectorPointsOrthogonalUndefinedSideCalculator;\n /***/\n },\n /* 182 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics94 = function extendStatics(d, b) {\n _extendStatics94 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics94(d, b);\n };\n\n return function (d, b) {\n _extendStatics94(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorPointsOrthogonalSouthSideCalculator = void 0;\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var ConnectorPointsOrthogonalSouthSideCalculator =\n /** @class */\n function (_super) {\n __extends(ConnectorPointsOrthogonalSouthSideCalculator, _super);\n\n function ConnectorPointsOrthogonalSouthSideCalculator(parent) {\n return _super.call(this, parent) || this;\n }\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\n if (originPoint.y < originRect.bottom) originPoint = originPoint.clone().offset(0, originRect.bottom - originPoint.y);\n return originPoint;\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n case DiagramItem_1.ConnectionPointSide.West:\n case DiagramItem_1.ConnectionPointSide.South:\n return [originPoint.clone().offset(0, this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.North:\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset());\n }\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.South:\n return [originPoint.clone().offset(0, this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.North:\n return [originPoint.clone().offset(0, -this.getMinOffset())];\n }\n\n return [];\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n if (originPoint.y < targetPoint.y) if (originPoint.x > targetPoint.x) return [];else return [originPoint.clone().offset(0, this.getMinOffset())];\n if (originPoint.y > this.endRect.bottom) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\n return [originPoint.clone().offset(0, this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.West:\n if (originPoint.y < targetPoint.y) if (originPoint.x < targetPoint.x) return [];else return [originPoint.clone().offset(0, this.getMinOffset())];\n if (originPoint.y > this.endRect.bottom) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\n return [originPoint.clone().offset(0, this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.South:\n return [originPoint.clone().offset(0, this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.North:\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), originPoint.x < targetPoint.x);\n }\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n if (targetPoint.y < originPoint.y) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\n if (originPoint.x < targetPoint.x) return [originPoint.clone().offset(0, this.getMinOffset())];\n return [];\n\n case DiagramItem_1.ConnectionPointSide.West:\n if (targetPoint.y < originPoint.y) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\n if (originPoint.x > targetPoint.x) return [originPoint.clone().offset(0, this.getMinOffset())];\n return [];\n\n case DiagramItem_1.ConnectionPointSide.South:\n return [originPoint.clone().offset(0, this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.North:\n {\n var offset = this.getMinOffset();\n if (this.beginRect.bottom > originPoint.y) offset += this.beginRect.bottom - originPoint.y;\n return [originPoint.clone().offset(0, offset)];\n }\n }\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [originPoint.clone().offset(0, this.getScaleableOffsetY(originPoint, targetPoint, false))];\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [originPoint.clone().offset(0, this.getScaleableOffsetY(originPoint, targetPoint, true))];\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n if (this.isBeginEndOverlappedX()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, false);\n break;\n\n case DiagramItem_1.ConnectionPointSide.West:\n if (this.isBeginEndOverlappedX()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, true);\n break;\n\n case DiagramItem_1.ConnectionPointSide.South:\n if (this.isBeginEndOverlappedX()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\n break;\n\n case DiagramItem_1.ConnectionPointSide.Undefined:\n case DiagramItem_1.ConnectionPointSide.North:\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\n }\n\n return [originPoint.clone().offset(0, this.getScaleableOffsetY(originPoint, targetPoint, false))];\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n if (targetSide === DiagramItem_1.ConnectionPointSide.Undefined) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true);else if (this.isBeginEndOverlappedX()) {\n var direction = this.beginRect.center.x > this.endRect.center.x;\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true, direction);\n }\n return [originPoint.clone().offset(0, this.getScaleableOffsetY(originPoint, targetPoint, true))];\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getAsideOffsetPoints = function (originPoint, targetPoint, originRect, offset, asideOffset, direction) {\n var points = [];\n\n if (originRect !== undefined) {\n if (direction === undefined) direction = targetPoint.x < originPoint.x;\n if (direction) points.push(originPoint.clone().offset(-(originPoint.x - originRect.x + asideOffset), offset));else points.push(originPoint.clone().offset(originRect.right - originPoint.x + asideOffset, offset));\n }\n\n points.push(originPoint.clone().offset(0, offset));\n return points;\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getScaleableAsideOffsetPoints = function (originPoint, targetPoint, originRect, isEnd, direction) {\n var offset = this.getScaleableOffsetY(originPoint, targetPoint, isEnd);\n var asideOffset = this.getScaleableOffsetX(originPoint, targetPoint, isEnd);\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, offset, asideOffset, direction);\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getScaleableOffsetX = function (originPoint, targetPoint, isEnd) {\n if (this.beginRect && this.endRect) if (!isEnd && !this.isBeginEndOverlappedX()) {\n var distance = void 0;\n if (targetPoint.x < originPoint.x) distance = this.beginRect.x - this.endRect.right;else distance = this.endRect.x - this.beginRect.right;\n if (distance < this.getMinOffset() * 2) return distance / 2;\n }\n return this.getMinOffset();\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getScaleableOffsetY = function (originPoint, targetPoint, isEnd) {\n if (this.beginRect && this.endRect) {\n var distance = isEnd ? this.beginRect.y - originPoint.y : this.endRect.y - originPoint.y;\n if (distance > 0 && distance < this.getMinOffset() * 2) return distance / 2;\n }\n\n return this.getMinOffset();\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\n return targetPoint.y > originPoint.y;\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\n return targetSide === DiagramItem_1.ConnectionPointSide.North || targetSide === DiagramItem_1.ConnectionPointSide.Undefined;\n };\n\n ConnectorPointsOrthogonalSouthSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\n var cy = originPoint.y + (targetPoint.y - originPoint.y) / 2;\n return [new ConnectorRenderPoint_1.ConnectorRenderPoint(originPoint.x, cy), new ConnectorRenderPoint_1.ConnectorRenderPoint(targetPoint.x, cy)];\n };\n\n return ConnectorPointsOrthogonalSouthSideCalculator;\n }(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase);\n\n exports.ConnectorPointsOrthogonalSouthSideCalculator = ConnectorPointsOrthogonalSouthSideCalculator;\n /***/\n },\n /* 183 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics95 = function extendStatics(d, b) {\n _extendStatics95 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics95(d, b);\n };\n\n return function (d, b) {\n _extendStatics95(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorPointsOrthogonalNorthSideCalculator = void 0;\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var ConnectorPointsOrthogonalNorthSideCalculator =\n /** @class */\n function (_super) {\n __extends(ConnectorPointsOrthogonalNorthSideCalculator, _super);\n\n function ConnectorPointsOrthogonalNorthSideCalculator(parent) {\n return _super.call(this, parent) || this;\n }\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\n if (originPoint.y > originRect.y) originPoint = originPoint.clone().offset(0, originRect.y - originPoint.y);\n return originPoint;\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n case DiagramItem_1.ConnectionPointSide.West:\n case DiagramItem_1.ConnectionPointSide.North:\n return [originPoint.clone().offset(0, -this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.South:\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset());\n }\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.South:\n return [originPoint.clone().offset(0, this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.North:\n return [originPoint.clone().offset(0, -this.getMinOffset())];\n }\n\n return [];\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n if (originPoint.y > targetPoint.y) if (originPoint.x > targetPoint.x) return [];else return [originPoint.clone().offset(0, -this.getMinOffset())];\n if (originPoint.y < this.endRect.y) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\n return [originPoint.clone().offset(0, -this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.West:\n if (originPoint.y > targetPoint.y) if (originPoint.x < targetPoint.x) return [];else return [originPoint.clone().offset(0, -this.getMinOffset())];\n if (originPoint.y < this.endRect.y) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\n return [originPoint.clone().offset(0, -this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.North:\n return [originPoint.clone().offset(0, -this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.South:\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), originPoint.x < targetPoint.x);\n }\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n if (targetPoint.y > originPoint.y) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\n if (originPoint.x < targetPoint.x) return [originPoint.clone().offset(0, -this.getMinOffset())];\n return [];\n\n case DiagramItem_1.ConnectionPointSide.West:\n if (targetPoint.y > originPoint.y) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\n if (originPoint.x > targetPoint.x) return [originPoint.clone().offset(0, -this.getMinOffset())];\n return [];\n\n case DiagramItem_1.ConnectionPointSide.North:\n return [originPoint.clone().offset(0, -this.getMinOffset())];\n\n case DiagramItem_1.ConnectionPointSide.South:\n {\n var offset = -this.getMinOffset();\n if (this.beginRect.y < originPoint.y) offset -= originPoint.y - this.beginRect.y;\n return [originPoint.clone().offset(0, offset)];\n }\n }\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [originPoint.clone().offset(0, -this.getScaleableOffsetY(originPoint, targetPoint, false))];\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [originPoint.clone().offset(0, -this.getScaleableOffsetY(originPoint, targetPoint, true))];\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n if (this.isBeginEndOverlappedX()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, false);\n break;\n\n case DiagramItem_1.ConnectionPointSide.West:\n if (this.isBeginEndOverlappedX()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, true);\n break;\n\n case DiagramItem_1.ConnectionPointSide.North:\n if (this.isBeginEndOverlappedX()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\n break;\n\n case DiagramItem_1.ConnectionPointSide.Undefined:\n case DiagramItem_1.ConnectionPointSide.South:\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\n }\n\n return [originPoint.clone().offset(0, -this.getScaleableOffsetY(originPoint, targetPoint, false))];\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n if (targetSide === DiagramItem_1.ConnectionPointSide.Undefined) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true);else if (this.isBeginEndOverlappedX()) {\n var direction = this.beginRect.center.x > this.endRect.center.x;\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true, direction);\n }\n return [originPoint.clone().offset(0, -this.getScaleableOffsetY(originPoint, targetPoint, true))];\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getAsideOffsetPoints = function (originPoint, targetPoint, originRect, offset, asideOffset, direction) {\n var points = [];\n\n if (originRect !== undefined) {\n if (direction === undefined) direction = targetPoint.x < originPoint.x;\n if (direction) points.push(originPoint.clone().offset(-(originPoint.x - originRect.x + asideOffset), -offset));else points.push(originPoint.clone().offset(originRect.right - originPoint.x + asideOffset, -offset));\n }\n\n points.push(originPoint.clone().offset(0, -offset));\n return points;\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getScaleableAsideOffsetPoints = function (originPoint, targetPoint, originRect, isEnd, direction) {\n var offset = this.getScaleableOffsetY(originPoint, targetPoint, isEnd);\n var asideOffset = this.getScaleableOffsetX(originPoint, targetPoint, isEnd);\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, offset, asideOffset, direction);\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getScaleableOffsetX = function (originPoint, targetPoint, isEnd) {\n if (this.beginRect && this.endRect) if (!isEnd && !this.isBeginEndOverlappedX()) {\n var distance = void 0;\n if (targetPoint.x < originPoint.x) distance = this.beginRect.x - this.endRect.right;else distance = this.endRect.x - this.beginRect.right;\n if (distance < this.getMinOffset() * 2) return distance / 2;\n }\n return this.getMinOffset();\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getScaleableOffsetY = function (originPoint, targetPoint, isEnd) {\n if (this.beginRect && this.endRect) {\n var distance = isEnd ? originPoint.y - this.beginRect.bottom : originPoint.y - this.endRect.bottom;\n if (distance > 0 && distance < this.getMinOffset() * 2) return distance / 2;\n }\n\n return this.getMinOffset();\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\n return targetPoint.y < originPoint.y;\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\n return targetSide === DiagramItem_1.ConnectionPointSide.South || targetSide === DiagramItem_1.ConnectionPointSide.Undefined;\n };\n\n ConnectorPointsOrthogonalNorthSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\n var cy = targetPoint.y + (originPoint.y - targetPoint.y) / 2;\n return [new ConnectorRenderPoint_1.ConnectorRenderPoint(originPoint.x, cy), new ConnectorRenderPoint_1.ConnectorRenderPoint(targetPoint.x, cy)];\n };\n\n return ConnectorPointsOrthogonalNorthSideCalculator;\n }(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase);\n\n exports.ConnectorPointsOrthogonalNorthSideCalculator = ConnectorPointsOrthogonalNorthSideCalculator;\n /***/\n },\n /* 184 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics96 = function extendStatics(d, b) {\n _extendStatics96 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics96(d, b);\n };\n\n return function (d, b) {\n _extendStatics96(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorPointsOrthogonalEastSideCalculator = void 0;\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var ConnectorPointsOrthogonalEastSideCalculator =\n /** @class */\n function (_super) {\n __extends(ConnectorPointsOrthogonalEastSideCalculator, _super);\n\n function ConnectorPointsOrthogonalEastSideCalculator(parent) {\n return _super.call(this, parent) || this;\n }\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\n if (originPoint.x < originRect.right) originPoint = originPoint.clone().offset(originRect.right - originPoint.x, 0);\n return originPoint;\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.North:\n case DiagramItem_1.ConnectionPointSide.South:\n case DiagramItem_1.ConnectionPointSide.East:\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.West:\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset());\n }\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.West:\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n }\n\n return [];\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.North:\n if (originPoint.x < targetPoint.x) if (originPoint.y < targetPoint.y) return [];else return [originPoint.clone().offset(this.getMinOffset(), 0)];\n if (originPoint.x > this.endRect.right) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.South:\n if (originPoint.x < targetPoint.x) if (originPoint.y > targetPoint.y) return [];else return [originPoint.clone().offset(this.getMinOffset(), 0)];\n if (originPoint.x > this.endRect.right) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.East:\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.West:\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), originPoint.y < targetPoint.y);\n }\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.West:\n {\n var offset = this.getMinOffset();\n if (this.beginRect.right > originPoint.x) offset += this.beginRect.right - originPoint.x;\n return [originPoint.clone().offset(offset, 0)];\n }\n\n case DiagramItem_1.ConnectionPointSide.North:\n if (targetPoint.x < originPoint.x) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\n if (originPoint.y > targetPoint.y) return [originPoint.clone().offset(this.getMinOffset(), 0)];\n return [];\n\n case DiagramItem_1.ConnectionPointSide.South:\n if (targetPoint.x < originPoint.x) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\n if (originPoint.y < targetPoint.y) return [originPoint.clone().offset(this.getMinOffset(), 0)];\n return [];\n }\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [originPoint.clone().offset(this.getScaleableOffsetX(originPoint, targetPoint, false), 0)];\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [originPoint.clone().offset(this.getScaleableOffsetX(originPoint, targetPoint, true), 0)];\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.South:\n if (this.isBeginEndOverlappedY()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, false);\n break;\n\n case DiagramItem_1.ConnectionPointSide.North:\n if (this.isBeginEndOverlappedY()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, true);\n break;\n\n case DiagramItem_1.ConnectionPointSide.East:\n if (this.isBeginEndOverlappedY()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\n break;\n\n case DiagramItem_1.ConnectionPointSide.Undefined:\n case DiagramItem_1.ConnectionPointSide.West:\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\n }\n\n return [originPoint.clone().offset(this.getScaleableOffsetX(originPoint, targetPoint, false), 0)];\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n if (targetSide === DiagramItem_1.ConnectionPointSide.Undefined) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true);else if (this.isBeginEndOverlappedY()) {\n var direction = this.beginRect.center.y > this.endRect.center.y;\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true, direction);\n }\n return [originPoint.clone().offset(this.getScaleableOffsetX(originPoint, targetPoint, true), 0)];\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getAsideOffsetPoints = function (originPoint, targetPoint, originRect, offset, asideOffset, direction) {\n var points = [];\n\n if (originRect !== undefined) {\n if (direction === undefined) direction = targetPoint.y < originPoint.y;\n if (direction) points.push(originPoint.clone().offset(offset, -(originPoint.y - originRect.y + asideOffset)));else points.push(originPoint.clone().offset(offset, originRect.bottom - originPoint.y + asideOffset));\n }\n\n points.push(originPoint.clone().offset(offset, 0));\n return points;\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getScaleableAsideOffsetPoints = function (originPoint, targetPoint, originRect, isEnd, direction) {\n var offset = this.getScaleableOffsetX(originPoint, targetPoint, isEnd);\n var asideOffset = this.getScaleableOffsetY(originPoint, targetPoint, isEnd);\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, offset, asideOffset, direction);\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getScaleableOffsetX = function (originPoint, targetPoint, isEnd) {\n if (this.beginRect && this.endRect) {\n var distance = isEnd ? this.beginRect.x - originPoint.x : this.endRect.x - originPoint.x;\n if (distance > 0 && distance < this.getMinOffset() * 2) return distance / 2;\n }\n\n return this.getMinOffset();\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getScaleableOffsetY = function (originPoint, targetPoint, isEnd) {\n if (this.beginRect && this.endRect) if (!isEnd && !this.isBeginEndOverlappedY()) {\n var distance = void 0;\n if (targetPoint.y < originPoint.y) distance = this.beginRect.y - this.endRect.bottom;else distance = this.endRect.y - this.beginRect.bottom;\n if (distance < this.getMinOffset() * 2) return distance / 2;\n }\n return this.getMinOffset();\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\n return targetPoint.x > originPoint.x;\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\n return targetSide === DiagramItem_1.ConnectionPointSide.West || targetSide === DiagramItem_1.ConnectionPointSide.Undefined;\n };\n\n ConnectorPointsOrthogonalEastSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\n var cx = originPoint.x + (targetPoint.x - originPoint.x) / 2;\n return [new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, originPoint.y), new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, targetPoint.y)];\n };\n\n return ConnectorPointsOrthogonalEastSideCalculator;\n }(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase);\n\n exports.ConnectorPointsOrthogonalEastSideCalculator = ConnectorPointsOrthogonalEastSideCalculator;\n /***/\n },\n /* 185 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics97 = function extendStatics(d, b) {\n _extendStatics97 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics97(d, b);\n };\n\n return function (d, b) {\n _extendStatics97(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorPointsOrthogonalWestSideCalculator = void 0;\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ConnectorPointsOrthogonalSideCalculatorBase_1 = __webpack_require__(52);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var ConnectorPointsOrthogonalWestSideCalculator =\n /** @class */\n function (_super) {\n __extends(ConnectorPointsOrthogonalWestSideCalculator, _super);\n\n function ConnectorPointsOrthogonalWestSideCalculator(parent) {\n return _super.call(this, parent) || this;\n }\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getCorrectOriginPoint = function (originPoint, originRect) {\n if (originPoint.x > originRect.x) originPoint = originPoint.clone().offset(originRect.x - originPoint.x, 0);\n return originPoint;\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getSameShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.North:\n case DiagramItem_1.ConnectionPointSide.South:\n case DiagramItem_1.ConnectionPointSide.West:\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.East:\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset());\n }\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getOverlappedPointsOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n return [originPoint.clone().offset(this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.West:\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n }\n\n return [];\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getBeginOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.North:\n if (originPoint.x > targetPoint.x) if (originPoint.y < targetPoint.y) return [];else return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n if (originPoint.x < this.endRect.x) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.South:\n if (originPoint.x > targetPoint.x) if (originPoint.y > targetPoint.y) return [];else return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n if (originPoint.x < this.endRect.x) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.West:\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.East:\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), originPoint.y < targetPoint.y);\n }\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getEndOverlappedShapeOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.East:\n {\n var offset = -this.getMinOffset();\n if (this.beginRect.x < originPoint.x) offset -= originPoint.x - this.beginRect.x;\n return [originPoint.clone().offset(offset, 0)];\n }\n\n case DiagramItem_1.ConnectionPointSide.West:\n return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n\n case DiagramItem_1.ConnectionPointSide.North:\n if (targetPoint.x > originPoint.x) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), true);\n if (originPoint.y > targetPoint.y) return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n return [];\n\n case DiagramItem_1.ConnectionPointSide.South:\n if (targetPoint.x > originPoint.x) return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, this.getMinOffset(), this.getMinOffset(), false);\n if (originPoint.y < targetPoint.y) return [originPoint.clone().offset(-this.getMinOffset(), 0)];\n return [];\n }\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getBeginOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [originPoint.clone().offset(-this.getScaleableOffsetX(originPoint, false), 0)];\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getEndOnSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n return [originPoint.clone().offset(-this.getScaleableOffsetX(originPoint, true), 0)];\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getBeginOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n switch (targetSide) {\n case DiagramItem_1.ConnectionPointSide.South:\n if (this.isBeginEndOverlappedY()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, false);\n break;\n\n case DiagramItem_1.ConnectionPointSide.North:\n if (this.isBeginEndOverlappedY()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false, true);\n break;\n\n case DiagramItem_1.ConnectionPointSide.West:\n if (this.isBeginEndOverlappedY()) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\n break;\n\n case DiagramItem_1.ConnectionPointSide.Undefined:\n case DiagramItem_1.ConnectionPointSide.East:\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, false);\n }\n\n return [originPoint.clone().offset(-this.getScaleableOffsetX(originPoint, false), 0)];\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getEndOffSideOffsetPoints = function (targetSide, originPoint, targetPoint, originRect) {\n if (targetSide === DiagramItem_1.ConnectionPointSide.Undefined) return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true);else if (this.isBeginEndOverlappedY()) {\n var direction = this.beginRect.center.y > this.endRect.center.y;\n return this.getScaleableAsideOffsetPoints(originPoint, targetPoint, originRect, true, direction);\n }\n return [originPoint.clone().offset(-this.getScaleableOffsetX(originPoint, true), 0)];\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getAsideOffsetPoints = function (originPoint, targetPoint, originRect, offset, asideOffset, direction) {\n var points = [];\n\n if (originRect !== undefined) {\n if (direction === undefined) direction = targetPoint.y < originPoint.y;\n if (direction) points.push(originPoint.clone().offset(-offset, -(originPoint.y - originRect.y + asideOffset)));else points.push(originPoint.clone().offset(-offset, originRect.bottom - originPoint.y + asideOffset));\n }\n\n points.push(originPoint.clone().offset(-offset, 0));\n return points;\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getScaleableAsideOffsetPoints = function (originPoint, targetPoint, originRect, isEnd, direction) {\n var offset = this.getScaleableOffsetX(originPoint, isEnd);\n var asideOffset = this.getScaleableOffsetY(originPoint, targetPoint, isEnd);\n return this.getAsideOffsetPoints(originPoint, targetPoint, originRect, offset, asideOffset, direction);\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getScaleableOffsetX = function (originPoint, isEnd) {\n if (this.beginRect && this.endRect) {\n var distance = isEnd ? originPoint.x - this.beginRect.right : originPoint.x - this.endRect.right;\n if (distance > 0 && distance < this.getMinOffset() * 2) return distance / 2;\n }\n\n return this.getMinOffset();\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getScaleableOffsetY = function (originPoint, targetPoint, isEnd) {\n if (this.beginRect && this.endRect) if (!isEnd && !this.isBeginEndOverlappedY()) {\n var distance = void 0;\n if (targetPoint.y < originPoint.y) distance = this.beginRect.y - this.endRect.bottom;else distance = this.endRect.y - this.beginRect.bottom;\n if (distance < this.getMinOffset() * 2) return distance / 2;\n }\n return this.getMinOffset();\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.isOnSidePoint = function (originPoint, targetPoint) {\n return targetPoint.x < originPoint.x;\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.isDirectConnectionAllowed = function (targetSide, originPoint, targetPoint) {\n return targetSide === DiagramItem_1.ConnectionPointSide.East || targetSide === DiagramItem_1.ConnectionPointSide.Undefined;\n };\n\n ConnectorPointsOrthogonalWestSideCalculator.prototype.getDirectConnectionPoints = function (originPoint, targetPoint) {\n var cx = targetPoint.x + (originPoint.x - targetPoint.x) / 2;\n return [new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, originPoint.y), new ConnectorRenderPoint_1.ConnectorRenderPoint(cx, targetPoint.y)];\n };\n\n return ConnectorPointsOrthogonalWestSideCalculator;\n }(ConnectorPointsOrthogonalSideCalculatorBase_1.ConnectorPointsOrthogonalSideCalculatorBase);\n\n exports.ConnectorPointsOrthogonalWestSideCalculator = ConnectorPointsOrthogonalWestSideCalculator;\n /***/\n },\n /* 186 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics98 = function extendStatics(d, b) {\n _extendStatics98 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics98(d, b);\n };\n\n return function (d, b) {\n _extendStatics98(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorLineEndingFilledTriangleStrategy = exports.ConnectorLineEndingOutlinedTriangleStrategy = exports.ConnectorLineEndingArrowStrategy = exports.ConnectorLineEndingNoneStrategy = exports.ConnectorLineEndingStrategy = void 0;\n\n var Utils_1 = __webpack_require__(3);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ConnectorLineEndingStrategy =\n /** @class */\n function () {\n function ConnectorLineEndingStrategy(style) {\n this.style = style;\n }\n\n ConnectorLineEndingStrategy.prototype.hasCommands = function () {\n return true;\n };\n\n ConnectorLineEndingStrategy.prototype.needCreateSeparatePrimitive = function () {\n return false;\n };\n\n ConnectorLineEndingStrategy.prototype.createPrimitive = function () {\n return new PathPrimitive_1.PathPrimitive([], this.getStyle(), this.getCssClass());\n };\n\n ConnectorLineEndingStrategy.prototype.createCommands = function (point, directionPoint) {\n return [];\n };\n\n ConnectorLineEndingStrategy.prototype.getStyle = function () {\n var style = this.style.clone();\n style.resetStrokeDashArray();\n return style;\n };\n\n ConnectorLineEndingStrategy.prototype.getCssClass = function () {\n return undefined;\n };\n\n return ConnectorLineEndingStrategy;\n }();\n\n exports.ConnectorLineEndingStrategy = ConnectorLineEndingStrategy;\n\n var ConnectorLineEndingNoneStrategy =\n /** @class */\n function (_super) {\n __extends(ConnectorLineEndingNoneStrategy, _super);\n\n function ConnectorLineEndingNoneStrategy() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ConnectorLineEndingNoneStrategy.prototype.hasCommands = function () {\n return false;\n };\n\n return ConnectorLineEndingNoneStrategy;\n }(ConnectorLineEndingStrategy);\n\n exports.ConnectorLineEndingNoneStrategy = ConnectorLineEndingNoneStrategy;\n\n var ConnectorLineEndingArrowStrategy =\n /** @class */\n function (_super) {\n __extends(ConnectorLineEndingArrowStrategy, _super);\n\n function ConnectorLineEndingArrowStrategy() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ConnectorLineEndingArrowStrategy.prototype, \"arrowHeight\", {\n get: function get() {\n return this.style.strokeWidth * 6;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ConnectorLineEndingArrowStrategy.prototype, \"arrowWidth\", {\n get: function get() {\n return this.style.strokeWidth * 2;\n },\n enumerable: false,\n configurable: true\n });\n\n ConnectorLineEndingArrowStrategy.prototype.needCreateSeparatePrimitive = function () {\n return !this.style.isDefaultStrokeDashArray();\n };\n\n ConnectorLineEndingArrowStrategy.prototype.createCommands = function (point, directionPoint) {\n var arrowPoints = this.getArrowPoints(point, directionPoint);\n var commands = [new PathPrimitive_1.PathPrimitiveMoveToCommand(arrowPoints.point1.x, arrowPoints.point1.y), new PathPrimitive_1.PathPrimitiveLineToCommand(point.x, point.y), new PathPrimitive_1.PathPrimitiveLineToCommand(arrowPoints.point2.x, arrowPoints.point2.y)];\n if (!this.style.isDefaultStrokeDashArray()) commands = commands.concat([new PathPrimitive_1.PathPrimitiveMoveToCommand(point.x, point.y), new PathPrimitive_1.PathPrimitiveLineToCommand(arrowPoints.point3.x, arrowPoints.point3.y)]);\n return commands;\n };\n\n ConnectorLineEndingArrowStrategy.prototype.getArrowPoints = function (point, directionPoint) {\n var arrowHeight = this.arrowHeight;\n\n if (point.x === directionPoint.x) {\n var distance = Math.abs(point.y - directionPoint.y);\n if (distance < arrowHeight) arrowHeight = distance;\n }\n\n if (point.y === directionPoint.y) {\n var distance = Math.abs(point.x - directionPoint.x);\n if (distance < arrowHeight) arrowHeight = distance;\n }\n\n return Utils_1.GeometryUtils.getArrowPoints(point, directionPoint, arrowHeight, this.arrowWidth);\n };\n\n return ConnectorLineEndingArrowStrategy;\n }(ConnectorLineEndingStrategy);\n\n exports.ConnectorLineEndingArrowStrategy = ConnectorLineEndingArrowStrategy;\n\n var ConnectorLineEndingOutlinedTriangleStrategy =\n /** @class */\n function (_super) {\n __extends(ConnectorLineEndingOutlinedTriangleStrategy, _super);\n\n function ConnectorLineEndingOutlinedTriangleStrategy() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ConnectorLineEndingOutlinedTriangleStrategy.prototype.needCreateSeparatePrimitive = function () {\n return true;\n };\n\n ConnectorLineEndingOutlinedTriangleStrategy.prototype.createCommands = function (point, directionPoint) {\n var arrowPoints = this.getArrowPoints(point, directionPoint);\n return [new PathPrimitive_1.PathPrimitiveMoveToCommand(arrowPoints.point1.x, arrowPoints.point1.y), new PathPrimitive_1.PathPrimitiveLineToCommand(point.x, point.y), new PathPrimitive_1.PathPrimitiveLineToCommand(arrowPoints.point2.x, arrowPoints.point2.y), new PathPrimitive_1.PathPrimitiveClosePathCommand()];\n };\n\n ConnectorLineEndingOutlinedTriangleStrategy.prototype.getCssClass = function () {\n return \"outlined-line-ending\";\n };\n\n return ConnectorLineEndingOutlinedTriangleStrategy;\n }(ConnectorLineEndingArrowStrategy);\n\n exports.ConnectorLineEndingOutlinedTriangleStrategy = ConnectorLineEndingOutlinedTriangleStrategy;\n\n var ConnectorLineEndingFilledTriangleStrategy =\n /** @class */\n function (_super) {\n __extends(ConnectorLineEndingFilledTriangleStrategy, _super);\n\n function ConnectorLineEndingFilledTriangleStrategy() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ConnectorLineEndingFilledTriangleStrategy.prototype.getStyle = function () {\n var style = _super.prototype.getStyle.call(this);\n\n style[\"fill\"] = style[\"stroke\"];\n return style;\n };\n\n ConnectorLineEndingFilledTriangleStrategy.prototype.getCssClass = function () {\n return \"filled-line-ending\";\n };\n\n return ConnectorLineEndingFilledTriangleStrategy;\n }(ConnectorLineEndingOutlinedTriangleStrategy);\n\n exports.ConnectorLineEndingFilledTriangleStrategy = ConnectorLineEndingFilledTriangleStrategy;\n /***/\n },\n /* 187 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorTexts = exports.ConnectorText = void 0;\n\n var ConnectorText =\n /** @class */\n function () {\n function ConnectorText(position, value) {\n this.position = position;\n this.value = value;\n }\n\n return ConnectorText;\n }();\n\n exports.ConnectorText = ConnectorText;\n\n var ConnectorTexts =\n /** @class */\n function () {\n function ConnectorTexts() {\n this.items = {};\n }\n\n ConnectorTexts.prototype.get = function (position) {\n return this.items[position];\n };\n\n ConnectorTexts.prototype.set = function (position, text) {\n this.items[position] = text;\n };\n\n ConnectorTexts.prototype.remove = function (position) {\n delete this.items[position];\n };\n\n ConnectorTexts.prototype.map = function (callback) {\n var list = [];\n this.forEach(function (t) {\n return list.push(callback(t));\n });\n return list;\n };\n\n ConnectorTexts.prototype.forEach = function (callback) {\n for (var key in this.items) {\n if (Object.prototype.hasOwnProperty.call(this.items, key)) callback(this.items[key]);\n }\n };\n\n ConnectorTexts.prototype.count = function () {\n return Object.keys(this.items).length;\n };\n\n ConnectorTexts.prototype.clone = function () {\n var result = new ConnectorTexts();\n this.forEach(function (t) {\n result.set(t.position, new ConnectorText(t.position, t.value));\n });\n return result;\n };\n\n ConnectorTexts.prototype.toObject = function () {\n var result = {};\n var modified = false;\n this.forEach(function (t) {\n result[t.position] = t.value;\n modified = true;\n });\n return modified ? result : null;\n };\n\n ConnectorTexts.prototype.fromObject = function (obj) {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var position = parseFloat(key);\n if (!isNaN(position) && typeof obj[key] === \"string\") this.set(position, new ConnectorText(position, obj[key]));\n }\n }\n };\n\n return ConnectorTexts;\n }();\n\n exports.ConnectorTexts = ConnectorTexts;\n /***/\n },\n /* 188 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics99 = function extendStatics(d, b) {\n _extendStatics99 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics99(d, b);\n };\n\n return function (d, b) {\n _extendStatics99(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AddConnectorPointHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var AddConnectorPointHistoryItem =\n /** @class */\n function (_super) {\n __extends(AddConnectorPointHistoryItem, _super);\n\n function AddConnectorPointHistoryItem(connectorKey, pointIndex, point) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connectorKey;\n _this.pointIndex = pointIndex;\n _this.point = point;\n return _this;\n }\n\n AddConnectorPointHistoryItem.prototype.redo = function (manipulator) {\n var _this = this;\n\n var connector = manipulator.model.findConnector(this.connectorKey);\n this.renderContext = connector.createRenderPointsContext();\n manipulator.addDeleteConnectorPoint(connector, function (connector) {\n connector.addPoint(_this.pointIndex, _this.point);\n connector.onAddPoint(_this.pointIndex, _this.point);\n });\n };\n\n AddConnectorPointHistoryItem.prototype.undo = function (manipulator) {\n var _this = this;\n\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.addDeleteConnectorPoint(connector, function (connector) {\n connector.deletePoint(_this.pointIndex);\n connector.replaceRenderPoints(_this.renderContext);\n });\n };\n\n return AddConnectorPointHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.AddConnectorPointHistoryItem = AddConnectorPointHistoryItem;\n /***/\n },\n /* 189 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics100 = function extendStatics(d, b) {\n _extendStatics100 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics100(d, b);\n };\n\n return function (d, b) {\n _extendStatics100(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.InsertToContainerHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var InsertToContainerHistoryItem =\n /** @class */\n function (_super) {\n __extends(InsertToContainerHistoryItem, _super);\n\n function InsertToContainerHistoryItem(item, container) {\n var _this = _super.call(this) || this;\n\n _this.containerKey = container.key;\n _this.itemKey = item.key;\n return _this;\n }\n\n InsertToContainerHistoryItem.prototype.redo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n var container = manipulator.model.findShape(this.containerKey);\n manipulator.insertToContainer(item, container);\n };\n\n InsertToContainerHistoryItem.prototype.undo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.removeFromContainer(item);\n };\n\n return InsertToContainerHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.InsertToContainerHistoryItem = InsertToContainerHistoryItem;\n /***/\n },\n /* 190 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics101 = function extendStatics(d, b) {\n _extendStatics101 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics101(d, b);\n };\n\n return function (d, b) {\n _extendStatics101(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MoveConnectorRightAnglePointsHistoryItem = exports.MoveConnectorPointHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var MoveConnectorPointHistoryItem =\n /** @class */\n function (_super) {\n __extends(MoveConnectorPointHistoryItem, _super);\n\n function MoveConnectorPointHistoryItem(connectorKey, pointIndex, newPoint) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connectorKey;\n _this.pointIndex = pointIndex;\n _this.newPoint = newPoint;\n return _this;\n }\n\n MoveConnectorPointHistoryItem.prototype.redo = function (manipulator) {\n var _this = this;\n\n var connector = manipulator.model.findConnector(this.connectorKey);\n this.oldPoint = connector.points[this.pointIndex].clone();\n this.renderContext = connector.createRenderPointsContext();\n manipulator.moveConnectorPoint(connector, this.pointIndex, function (connector) {\n connector.movePoint(_this.pointIndex, _this.newPoint);\n connector.onMovePoint(_this.pointIndex, _this.newPoint);\n });\n };\n\n MoveConnectorPointHistoryItem.prototype.undo = function (manipulator) {\n var _this = this;\n\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.moveConnectorPoint(connector, this.pointIndex, function (connector) {\n connector.movePoint(_this.pointIndex, _this.oldPoint);\n connector.replaceRenderPoints(_this.renderContext);\n });\n };\n\n return MoveConnectorPointHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.MoveConnectorPointHistoryItem = MoveConnectorPointHistoryItem;\n\n var MoveConnectorRightAnglePointsHistoryItem =\n /** @class */\n function (_super) {\n __extends(MoveConnectorRightAnglePointsHistoryItem, _super);\n\n function MoveConnectorRightAnglePointsHistoryItem(connectorKey, beginPointIndex, newBeginPoint, lastPointIndex, newLastPoint) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connectorKey;\n _this.beginPointIndex = beginPointIndex;\n _this.newBeginPoint = newBeginPoint;\n _this.lastPointIndex = lastPointIndex;\n _this.newLastPoint = newLastPoint;\n return _this;\n }\n\n MoveConnectorRightAnglePointsHistoryItem.prototype.redo = function (manipulator) {\n var _this = this;\n\n var connector = manipulator.model.findConnector(this.connectorKey);\n this.oldBeginPoint = connector.points[this.beginPointIndex].clone();\n this.oldLastPoint = connector.points[this.lastPointIndex].clone();\n this.renderContext = connector.createRenderPointsContext();\n manipulator.changeConnectorPoints(connector, function (connector) {\n connector.movePoint(_this.beginPointIndex, _this.newBeginPoint);\n connector.movePoint(_this.lastPointIndex, _this.newLastPoint);\n connector.onMovePoints(_this.beginPointIndex, _this.newBeginPoint, _this.lastPointIndex, _this.newLastPoint);\n });\n };\n\n MoveConnectorRightAnglePointsHistoryItem.prototype.undo = function (manipulator) {\n var _this = this;\n\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.changeConnectorPoints(connector, function (connector) {\n connector.movePoint(_this.beginPointIndex, _this.oldBeginPoint);\n connector.movePoint(_this.lastPointIndex, _this.oldLastPoint);\n connector.replaceRenderPoints(_this.renderContext);\n });\n };\n\n return MoveConnectorRightAnglePointsHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.MoveConnectorRightAnglePointsHistoryItem = MoveConnectorRightAnglePointsHistoryItem;\n /***/\n },\n /* 191 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics102 = function extendStatics(d, b) {\n _extendStatics102 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics102(d, b);\n };\n\n return function (d, b) {\n _extendStatics102(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MoveShapeHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var MoveShapeHistoryItem =\n /** @class */\n function (_super) {\n __extends(MoveShapeHistoryItem, _super);\n\n function MoveShapeHistoryItem(shapeKey, position) {\n var _this = _super.call(this) || this;\n\n _this.shapeKey = shapeKey;\n _this.position = position;\n return _this;\n }\n\n MoveShapeHistoryItem.prototype.redo = function (manipulator) {\n var shape = manipulator.model.findShape(this.shapeKey);\n this.oldPosition = shape.position.clone();\n manipulator.moveShape(shape, this.position);\n };\n\n MoveShapeHistoryItem.prototype.undo = function (manipulator) {\n var shape = manipulator.model.findShape(this.shapeKey);\n manipulator.moveShape(shape, this.oldPosition);\n };\n\n return MoveShapeHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.MoveShapeHistoryItem = MoveShapeHistoryItem;\n /***/\n },\n /* 192 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics103 = function extendStatics(d, b) {\n _extendStatics103 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics103(d, b);\n };\n\n return function (d, b) {\n _extendStatics103(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RemoveFromContainerHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var RemoveFromContainerHistoryItem =\n /** @class */\n function (_super) {\n __extends(RemoveFromContainerHistoryItem, _super);\n\n function RemoveFromContainerHistoryItem(item) {\n var _this = _super.call(this) || this;\n\n _this.itemKey = item.key;\n return _this;\n }\n\n RemoveFromContainerHistoryItem.prototype.redo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n this.containerKey = item.container && item.container.key;\n manipulator.removeFromContainer(item);\n };\n\n RemoveFromContainerHistoryItem.prototype.undo = function (manipulator) {\n var container = manipulator.model.findContainer(this.containerKey);\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.insertToContainer(item, container);\n };\n\n return RemoveFromContainerHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.RemoveFromContainerHistoryItem = RemoveFromContainerHistoryItem;\n /***/\n },\n /* 193 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics104 = function extendStatics(d, b) {\n _extendStatics104 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics104(d, b);\n };\n\n return function (d, b) {\n _extendStatics104(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ModelResizeHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var offsets_1 = __webpack_require__(87);\n\n var size_1 = __webpack_require__(2);\n\n var ModelResizeHistoryItem =\n /** @class */\n function (_super) {\n __extends(ModelResizeHistoryItem, _super);\n\n function ModelResizeHistoryItem(offset) {\n var _this = _super.call(this) || this;\n\n _this.offset = offset;\n return _this;\n }\n\n ModelResizeHistoryItem.prototype.redo = function (manipulator) {\n this.oldSize = manipulator.model.size.clone();\n this.backOffset = new offsets_1.Offsets(-this.offset.left, -this.offset.right, -this.offset.top, -this.offset.bottom);\n var newWidth = Math.max(this.oldSize.width + this.offset.left + this.offset.right, manipulator.model.pageWidth);\n var newHeight = Math.max(this.oldSize.height + this.offset.top + this.offset.bottom, manipulator.model.pageHeight);\n manipulator.changeModelSize(new size_1.Size(newWidth, newHeight), this.offset);\n };\n\n ModelResizeHistoryItem.prototype.undo = function (manipulator) {\n manipulator.changeModelSize(this.oldSize, this.backOffset);\n };\n\n return ModelResizeHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ModelResizeHistoryItem = ModelResizeHistoryItem;\n /***/\n },\n /* 194 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics105 = function extendStatics(d, b) {\n _extendStatics105 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics105(d, b);\n };\n\n return function (d, b) {\n _extendStatics105(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.UpdatePositionsOnPageResizeHistoryItem = void 0;\n\n var Connector_1 = __webpack_require__(6);\n\n var Shape_1 = __webpack_require__(13);\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var UpdatePositionsOnPageResizeHistoryItem =\n /** @class */\n function (_super) {\n __extends(UpdatePositionsOnPageResizeHistoryItem, _super);\n\n function UpdatePositionsOnPageResizeHistoryItem(offset) {\n var _this = _super.call(this) || this;\n\n _this.offset = offset;\n return _this;\n }\n\n UpdatePositionsOnPageResizeHistoryItem.prototype.redo = function (manipulator) {\n var _this = this;\n\n manipulator.model.iterateItems(function (item) {\n if (item instanceof Shape_1.Shape) manipulator.moveShape(item, _this.applyOffset(item.position, _this.offset.x, _this.offset.y));\n if (item instanceof Connector_1.Connector) manipulator.changeConnectorPoints(item, function (i) {\n return i.updatePointsOnPageResize(_this.offset.x, _this.offset.y);\n });\n });\n };\n\n UpdatePositionsOnPageResizeHistoryItem.prototype.undo = function (manipulator) {\n var _this = this;\n\n manipulator.model.iterateItems(function (item) {\n if (item instanceof Shape_1.Shape) manipulator.moveShape(item, _this.applyOffset(item.position, -_this.offset.x, -_this.offset.y));\n if (item instanceof Connector_1.Connector) manipulator.changeConnectorPoints(item, function (i) {\n return i.updatePointsOnPageResize(-_this.offset.x, -_this.offset.y);\n });\n });\n };\n\n UpdatePositionsOnPageResizeHistoryItem.prototype.applyOffset = function (point, offsetX, offsetY) {\n return point.clone().offset(offsetX, offsetY);\n };\n\n return UpdatePositionsOnPageResizeHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.UpdatePositionsOnPageResizeHistoryItem = UpdatePositionsOnPageResizeHistoryItem;\n /***/\n },\n /* 195 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.GraphInfo = void 0;\n\n var LayoutUtils_1 = __webpack_require__(196);\n\n var GraphInfo =\n /** @class */\n function () {\n function GraphInfo(container, sourceGraph) {\n this.container = container;\n this.sourceGraph = sourceGraph;\n }\n\n Object.defineProperty(GraphInfo.prototype, \"graph\", {\n get: function get() {\n return this._graph || (this._graph = this.getNodeInfoGraph());\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(GraphInfo.prototype, \"level\", {\n get: function get() {\n return this._level !== undefined ? this._level : this._level = this.getLevel();\n },\n enumerable: false,\n configurable: true\n });\n\n GraphInfo.prototype.getNodeInfoGraph = function () {\n return this.sourceGraph.cast(LayoutUtils_1.LayoutUtils.shapeToLayout);\n };\n\n GraphInfo.prototype.getLevel = function () {\n var level = 0;\n if (this.container) level = this.getContainerLevel(this.container);\n return level;\n };\n\n GraphInfo.prototype.getContainerLevel = function (container) {\n var level = 1;\n var parentContainer = container.container;\n if (parentContainer) level += this.getContainerLevel(parentContainer);\n return level;\n };\n\n return GraphInfo;\n }();\n\n exports.GraphInfo = GraphInfo;\n /***/\n },\n /* 196 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.LayoutUtils = void 0;\n\n var NodeLayout_1 = __webpack_require__(70);\n\n var LayoutUtils =\n /** @class */\n function () {\n function LayoutUtils() {}\n\n LayoutUtils.shapeToLayout = function (shape) {\n var margin = new NodeLayout_1.Margin(0);\n var shapeRect = shape.rectangle;\n shape.attachedConnectors.filter(function (c) {\n return !c.beginItem || !c.endItem;\n }).forEach(function (c) {\n var connRect = c.rectangle;\n margin.left = Math.max(margin.left, shapeRect.x - connRect.x);\n margin.right = Math.max(margin.right, connRect.right - shapeRect.right);\n margin.top = Math.max(margin.top, shapeRect.y - connRect.y);\n margin.bottom = Math.max(margin.bottom, connRect.bottom - shapeRect.bottom);\n });\n var layout = new NodeLayout_1.NodeInfo(shape.key, margin, shape.size.clone());\n layout.connectionPoints = shape.description.getConnectionPoints();\n return layout;\n };\n\n return LayoutUtils;\n }();\n\n exports.LayoutUtils = LayoutUtils;\n /***/\n },\n /* 197 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CommandBase = void 0;\n\n var CommandBase =\n /** @class */\n function () {\n function CommandBase(control) {\n this.control = control;\n }\n\n CommandBase.prototype.execute = function (parameter) {\n if (this.isPermissionsRequired) this.permissionsProvider.lockPermissions();\n var state = this.getState();\n if (this.isPermissionsRequired) this.permissionsProvider.unlockPermissions();\n if (!state.enabled) return false;\n this.control.beginUpdate();\n var executed = false;\n if (this.isPermissionsRequired) executed = this.executeWithPermissions(state, parameter);else executed = this.executeCore(state, parameter);\n this.control.endUpdate();\n if (executed) this.updateControlState();\n return executed;\n };\n\n CommandBase.prototype.executeWithPermissions = function (state, parameter) {\n var executed = false;\n this.permissionsProvider.beginStorePermissions();\n this.control.history.beginTransaction();\n executed = this.executeCore(state, parameter);\n\n if (!this.permissionsProvider.isStoredPermissionsGranted()) {\n this.permissionsProvider.lockPermissions();\n this.control.history.undoTransaction();\n this.permissionsProvider.unlockPermissions();\n executed = false;\n }\n\n this.control.history.endTransaction();\n this.permissionsProvider.endStorePermissions();\n return executed;\n };\n\n CommandBase.prototype.updateControlState = function () {\n if (!this.lockInputPositionUpdating()) this.control.selection.inputPosition.reset();\n if (!this.lockUIUpdating()) this.control.barManager.updateItemsState();\n };\n\n Object.defineProperty(CommandBase.prototype, \"permissionsProvider\", {\n get: function get() {\n return this.control && this.control.permissionsProvider;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CommandBase.prototype, \"isPermissionsRequired\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n CommandBase.prototype.lockUIUpdating = function () {\n return false;\n };\n\n CommandBase.prototype.lockInputPositionUpdating = function () {\n return false;\n };\n\n return CommandBase;\n }();\n\n exports.CommandBase = CommandBase;\n /***/\n },\n /* 198 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SimpleCommandState = void 0;\n\n var SimpleCommandState =\n /** @class */\n function () {\n function SimpleCommandState(enabled, value, defaultValue, items, visible) {\n this.visible = true;\n this.denyUpdateValue = false;\n this.enabled = enabled;\n this.value = value;\n this.items = items;\n this.visible = visible;\n this.defaultValue = defaultValue;\n }\n\n return SimpleCommandState;\n }();\n\n exports.SimpleCommandState = SimpleCommandState;\n /***/\n },\n /* 199 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics106 = function extendStatics(d, b) {\n _extendStatics106 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics106(d, b);\n };\n\n return function (d, b) {\n _extendStatics106(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.UndoCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var UndoCommand =\n /** @class */\n function (_super) {\n __extends(UndoCommand, _super);\n\n function UndoCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UndoCommand.prototype.executeCore = function (state) {\n this.control.beginUpdateCanvas();\n this.permissionsProvider.lockPermissions();\n this.control.history.undo();\n this.permissionsProvider.unlockPermissions();\n this.control.endUpdateCanvas();\n return true;\n };\n\n UndoCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.history.canUndo();\n };\n\n return UndoCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.UndoCommand = UndoCommand;\n /***/\n },\n /* 200 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics107 = function extendStatics(d, b) {\n _extendStatics107 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics107(d, b);\n };\n\n return function (d, b) {\n _extendStatics107(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RedoCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var RedoCommand =\n /** @class */\n function (_super) {\n __extends(RedoCommand, _super);\n\n function RedoCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n RedoCommand.prototype.executeCore = function (state) {\n this.control.beginUpdateCanvas();\n this.permissionsProvider.lockPermissions();\n this.control.history.redo();\n this.permissionsProvider.unlockPermissions();\n this.control.endUpdateCanvas();\n return true;\n };\n\n RedoCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && this.control.history.canRedo();\n };\n\n return RedoCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.RedoCommand = RedoCommand;\n /***/\n },\n /* 201 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics108 = function extendStatics(d, b) {\n _extendStatics108 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics108(d, b);\n };\n\n return function (d, b) {\n _extendStatics108(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImportCommand = void 0;\n\n var Importer_1 = __webpack_require__(120);\n\n var ExportImportCommandBase_1 = __webpack_require__(56);\n\n var ImportCommand =\n /** @class */\n function (_super) {\n __extends(ImportCommand, _super);\n\n function ImportCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ImportCommand.prototype.executeCore = function (state, parameter) {\n this.permissionsProvider.lockPermissions();\n var data = parameter[\"data\"] ? parameter[\"data\"] : parameter;\n var importer = new Importer_1.Importer(this.control.shapeDescriptionManager, data);\n\n if (parameter[\"keepExistingItems\"] === true) {\n importer.importItemsData(this.control.model);\n this.control.importItemsData();\n } else {\n var model = importer.import();\n this.control.importModel(model);\n }\n\n this.permissionsProvider.unlockPermissions();\n return true;\n };\n\n return ImportCommand;\n }(ExportImportCommandBase_1.ExportImportCommandBase);\n\n exports.ImportCommand = ImportCommand;\n /***/\n },\n /* 202 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics109 = function extendStatics(d, b) {\n _extendStatics109 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics109(d, b);\n };\n\n return function (d, b) {\n _extendStatics109(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ProcessShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ProcessShapeDescription =\n /** @class */\n function (_super) {\n __extends(ProcessShapeDescription, _super);\n\n function ProcessShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(ProcessShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Process;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ProcessShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n return ProcessShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.ProcessShapeDescription = ProcessShapeDescription;\n /***/\n },\n /* 203 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics110 = function extendStatics(d, b) {\n _extendStatics110 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics110(d, b);\n };\n\n return function (d, b) {\n _extendStatics110(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DecisionShapeDescription = void 0;\n\n var DiamondShapeDescription_1 = __webpack_require__(121);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var DecisionShapeDescription =\n /** @class */\n function (_super) {\n __extends(DecisionShapeDescription, _super);\n\n function DecisionShapeDescription() {\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.75), true) || this;\n }\n\n Object.defineProperty(DecisionShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Decision;\n },\n enumerable: false,\n configurable: true\n });\n return DecisionShapeDescription;\n }(DiamondShapeDescription_1.DiamondShapeDescription);\n\n exports.DecisionShapeDescription = DecisionShapeDescription;\n /***/\n },\n /* 204 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics111 = function extendStatics(d, b) {\n _extendStatics111 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics111(d, b);\n };\n\n return function (d, b) {\n _extendStatics111(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ManualInputShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var ManualInputShapeDescription =\n /** @class */\n function (_super) {\n __extends(ManualInputShapeDescription, _super);\n\n function ManualInputShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(ManualInputShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.ManualInput;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ManualInputShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n ManualInputShapeDescription.prototype.createShapePrimitives = function (shape) {\n var _a = shape.rectangle,\n left = _a.x,\n top = _a.y,\n right = _a.right,\n bottom = _a.bottom,\n height = _a.height;\n var y1 = top + height * ManualInputShapeDescription.slopeHeightRatio;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, y1), new PathPrimitive_1.PathPrimitiveLineToCommand(right, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, bottom), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n ManualInputShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.North) point.y += ManualInputShapeDescription.slopeHeightRatio / 2 * shape.size.height;\n };\n\n ManualInputShapeDescription.prototype.getTextRectangle = function (shape) {\n var yOffset = shape.size.height * ManualInputShapeDescription.slopeHeightRatio;\n return shape.rectangle.clone().moveRectangle(ShapeDescription_1.ShapeTextPadding, yOffset).resize(-ShapeDescription_1.ShapeTextPadding * 2, -yOffset - ShapeDescription_1.ShapeTextPadding).nonNegativeSize();\n };\n\n ManualInputShapeDescription.slopeHeightRatio = 0.1;\n return ManualInputShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.ManualInputShapeDescription = ManualInputShapeDescription;\n /***/\n },\n /* 205 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics112 = function extendStatics(d, b) {\n _extendStatics112 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics112(d, b);\n };\n\n return function (d, b) {\n _extendStatics112(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DataShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var DataShapeDescription =\n /** @class */\n function (_super) {\n __extends(DataShapeDescription, _super);\n\n function DataShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(DataShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Data;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DataShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n DataShapeDescription.prototype.createShapePrimitives = function (shape) {\n var _a = shape.rectangle,\n left = _a.x,\n top = _a.y,\n right = _a.right,\n bottom = _a.bottom,\n width = _a.width,\n height = _a.height;\n var px = Math.min(Math.max(0, height / Math.tan(DataShapeDescription.slopeAngle)), width);\n var x1 = left + px;\n var x2 = right - px;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, top), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, bottom), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n DataShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var offset = shape.size.height / Math.tan(DataShapeDescription.slopeAngle);\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.East) point.x -= offset / 2;else if (side === DiagramItem_1.ConnectionPointSide.West) point.x += offset / 2;\n };\n\n DataShapeDescription.prototype.getTextRectangle = function (shape) {\n var px = Math.min(Math.max(0, shape.size.height / Math.tan(DataShapeDescription.slopeAngle)), shape.size.width);\n return shape.rectangle.clone().moveRectangle(px, ShapeDescription_1.ShapeTextPadding).resize(-px * 2, -ShapeDescription_1.ShapeTextPadding * 2);\n };\n\n DataShapeDescription.slopeAngle = 81 * Math.PI / 180;\n return DataShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.DataShapeDescription = DataShapeDescription;\n /***/\n },\n /* 206 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics113 = function extendStatics(d, b) {\n _extendStatics113 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics113(d, b);\n };\n\n return function (d, b) {\n _extendStatics113(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TerminatorShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var rectangle_1 = __webpack_require__(12);\n\n var Utils_1 = __webpack_require__(3);\n\n var TerminatorShapeDescription =\n /** @class */\n function (_super) {\n __extends(TerminatorShapeDescription, _super);\n\n function TerminatorShapeDescription() {\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.5), true) || this;\n }\n\n Object.defineProperty(TerminatorShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Terminator;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(TerminatorShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n TerminatorShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width;\n var cy = rect.center.y;\n var x1 = left + width * TerminatorShapeDescription.curveWidthRatio;\n var x2 = left + width * (1 - TerminatorShapeDescription.curveWidthRatio);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, top), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right, top, right, cy), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right, bottom, x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left, bottom, left, cy), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left, top, x1, top), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n TerminatorShapeDescription.prototype.getTextRectangle = function (shape) {\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\n };\n\n TerminatorShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\n };\n\n TerminatorShapeDescription.curveWidthRatio = 0.3;\n return TerminatorShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.TerminatorShapeDescription = TerminatorShapeDescription;\n /***/\n },\n /* 207 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics114 = function extendStatics(d, b) {\n _extendStatics114 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics114(d, b);\n };\n\n return function (d, b) {\n _extendStatics114(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PredefinedProcessShapeDescription = exports.PredefinedProcessEdgeParameterName = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ShapeParameters_1 = __webpack_require__(38);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var point_1 = __webpack_require__(1);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n exports.PredefinedProcessEdgeParameterName = \"e\";\n\n var PredefinedProcessShapeDescription =\n /** @class */\n function (_super) {\n __extends(PredefinedProcessShapeDescription, _super);\n\n function PredefinedProcessShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(PredefinedProcessShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.PredefinedProcess;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PredefinedProcessShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n PredefinedProcessShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom;\n var x1 = left + shape.parameters.get(exports.PredefinedProcessEdgeParameterName).value;\n var x2 = right - shape.parameters.get(exports.PredefinedProcessEdgeParameterName).value;\n\n var primitives = _super.prototype.createShapePrimitives.call(this, shape);\n\n return primitives.concat([new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom), new PathPrimitive_1.PathPrimitiveMoveToCommand(x2, top), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom)], shape.style)]);\n };\n\n PredefinedProcessShapeDescription.prototype.createParameters = function (parameters) {\n parameters.add(new ShapeParameters_1.ShapeParameter(exports.PredefinedProcessEdgeParameterName, this.defaultSize.width * 0.1));\n };\n\n PredefinedProcessShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\n this.changeParameterValue(parameters, exports.PredefinedProcessEdgeParameterName, function (p) {\n return Math.max(PredefinedProcessShapeDescription.minEdge, Math.min(shape.size.width * 0.3, p.value));\n });\n };\n\n PredefinedProcessShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n this.changeParameterValue(parameters, exports.PredefinedProcessEdgeParameterName, function (p) {\n return p.value + deltaX;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n PredefinedProcessShapeDescription.prototype.getParameterPoints = function (shape) {\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + shape.parameters.get(exports.PredefinedProcessEdgeParameterName).value), shape.position.y))];\n };\n\n PredefinedProcessShapeDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n var dx = shape.parameters.get(exports.PredefinedProcessEdgeParameterName).value;\n return rect.clone().resize(-2 * dx, 0).clone().moveRectangle(dx, 0);\n };\n\n PredefinedProcessShapeDescription.minEdge = 72;\n return PredefinedProcessShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.PredefinedProcessShapeDescription = PredefinedProcessShapeDescription;\n /***/\n },\n /* 208 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics115 = function extendStatics(d, b) {\n _extendStatics115 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics115(d, b);\n };\n\n return function (d, b) {\n _extendStatics115(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ArrowUpDownShapeDescription = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var point_1 = __webpack_require__(1);\n\n var ArrowVerticalShapeDescription_1 = __webpack_require__(92);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ArrowUpDownShapeDescription =\n /** @class */\n function (_super) {\n __extends(ArrowUpDownShapeDescription, _super);\n\n function ArrowUpDownShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ArrowUpDownShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.ArrowUpDown;\n },\n enumerable: false,\n configurable: true\n });\n\n ArrowUpDownShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width;\n var cx = rect.center.x;\n var p1dx = (width - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName).value) / 2;\n var p0dy = shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\n var p1x1 = shape.normalizeX(left + p1dx);\n var p0y1 = shape.normalizeY(top + p0dy);\n var p1x2 = shape.normalizeX(right - p1dx);\n var p0y2 = shape.normalizeY(bottom - p0dy);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, p0y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, p0y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, p0y2), new PathPrimitive_1.PathPrimitiveLineToCommand(right, p0y2), new PathPrimitive_1.PathPrimitiveLineToCommand(cx, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, p0y2), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, p0y2), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, p0y1), new PathPrimitive_1.PathPrimitiveLineToCommand(left, p0y1), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n ArrowUpDownShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.height / 2 - 2 * shape.strokeWidth, p.value));\n });\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.width, p.value));\n });\n };\n\n ArrowUpDownShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName, function (p) {\n return p.value + deltaY;\n });\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName, function (p) {\n return p.value - deltaX * 2;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n ArrowUpDownShapeDescription.prototype.getParameterPoints = function (shape) {\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + (shape.size.width - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName).value) / 2), shape.normalizeY(shape.position.y + shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value)))];\n };\n\n return ArrowUpDownShapeDescription;\n }(ArrowVerticalShapeDescription_1.ArrowVerticalShapeDescription);\n\n exports.ArrowUpDownShapeDescription = ArrowUpDownShapeDescription;\n /***/\n },\n /* 209 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics116 = function extendStatics(d, b) {\n _extendStatics116 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics116(d, b);\n };\n\n return function (d, b) {\n _extendStatics116(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ArrowRightShapeDescription = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ArrowHorizontalShapeDescription_1 = __webpack_require__(93);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var point_1 = __webpack_require__(1);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ArrowRightShapeDescription =\n /** @class */\n function (_super) {\n __extends(ArrowRightShapeDescription, _super);\n\n function ArrowRightShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ArrowRightShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.ArrowRight;\n },\n enumerable: false,\n configurable: true\n });\n\n ArrowRightShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width,\n height = rect.height;\n var cy = rect.center.y;\n var p0dx = width - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\n var p1dy = (height - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName).value) / 2;\n var p0x1 = shape.normalizeX(left + p0dx);\n var p1y1 = shape.normalizeY(top + p1dy);\n var p1y2 = shape.normalizeY(bottom - p1dy);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y2), new PathPrimitive_1.PathPrimitiveLineToCommand(left, p1y2), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n ArrowRightShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName, function (p) {\n return p.value - deltaX;\n });\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName, function (p) {\n return p.value - deltaY * 2;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n ArrowRightShapeDescription.prototype.getParameterPoints = function (shape) {\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + shape.size.width - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value), shape.normalizeY(shape.position.y + (shape.size.height - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName).value) / 2)))];\n };\n\n ArrowRightShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var triangleWidth = shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\n\n if (point.x > shape.position.x + shape.size.width - triangleWidth) {\n var tg = shape.size.height / 2 / triangleWidth;\n var delta = (point.x - (shape.position.x + shape.size.width - triangleWidth)) * tg;\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.North) point.y += delta;else if (side === DiagramItem_1.ConnectionPointSide.South) point.y -= delta;\n } else _super.prototype.processConnectionPoint.call(this, shape, point);\n };\n\n return ArrowRightShapeDescription;\n }(ArrowHorizontalShapeDescription_1.ArrowHorizontalShapeDescription);\n\n exports.ArrowRightShapeDescription = ArrowRightShapeDescription;\n /***/\n },\n /* 210 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics117 = function extendStatics(d, b) {\n _extendStatics117 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics117(d, b);\n };\n\n return function (d, b) {\n _extendStatics117(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ArrowUpShapeDescription = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var point_1 = __webpack_require__(1);\n\n var ArrowVerticalShapeDescription_1 = __webpack_require__(92);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ArrowUpShapeDescription =\n /** @class */\n function (_super) {\n __extends(ArrowUpShapeDescription, _super);\n\n function ArrowUpShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ArrowUpShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.ArrowUp;\n },\n enumerable: false,\n configurable: true\n });\n\n ArrowUpShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width;\n var cx = rect.center.x;\n var p1dx = (width - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName).value) / 2;\n var p0dy = shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\n var p1x1 = shape.normalizeX(left + p1dx);\n var p0y1 = shape.normalizeY(top + p0dy);\n var p1x2 = shape.normalizeX(right - p1dx);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, p0y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, p0y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, p0y1), new PathPrimitive_1.PathPrimitiveLineToCommand(left, p0y1), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n ArrowUpShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName, function (p) {\n return p.value + deltaY;\n });\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName, function (p) {\n return p.value - deltaX * 2;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n ArrowUpShapeDescription.prototype.getParameterPoints = function (shape) {\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + (shape.size.width - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName).value) / 2), shape.normalizeY(shape.position.y + shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value)))];\n };\n\n ArrowUpShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var triangleHeight = shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\n\n if (point.y < shape.position.y + triangleHeight) {\n var tg = shape.size.width / 2 / triangleHeight;\n var delta = (shape.position.y + triangleHeight - point.y) * tg;\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.East) point.x -= delta;else if (side === DiagramItem_1.ConnectionPointSide.West) point.x += delta;\n } else _super.prototype.processConnectionPoint.call(this, shape, point);\n };\n\n return ArrowUpShapeDescription;\n }(ArrowVerticalShapeDescription_1.ArrowVerticalShapeDescription);\n\n exports.ArrowUpShapeDescription = ArrowUpShapeDescription;\n /***/\n },\n /* 211 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics118 = function extendStatics(d, b) {\n _extendStatics118 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics118(d, b);\n };\n\n return function (d, b) {\n _extendStatics118(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CrossShapeDescription = exports.CrossVerticalWidthParameterName = exports.CrossHorizontalWidthParameterName = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var point_1 = __webpack_require__(1);\n\n var ShapeParameters_1 = __webpack_require__(38);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n exports.CrossHorizontalWidthParameterName = \"chw\";\n exports.CrossVerticalWidthParameterName = \"cvw\";\n\n var CrossShapeDescription =\n /** @class */\n function (_super) {\n __extends(CrossShapeDescription, _super);\n\n function CrossShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(CrossShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Cross;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(CrossShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n\n CrossShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width,\n height = rect.height;\n var p0dx = (width - shape.parameters.get(exports.CrossHorizontalWidthParameterName).value) / 2;\n var p1dy = (height - shape.parameters.get(exports.CrossVerticalWidthParameterName).value) / 2;\n var p0x1 = shape.normalizeX(left + p0dx);\n var p1y1 = shape.normalizeY(top + p1dy);\n var p0x2 = shape.normalizeX(right - p0dx);\n var p1y2 = shape.normalizeY(bottom - p1dy);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, top), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(right, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(right, p1y2), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, p1y2), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y2), new PathPrimitive_1.PathPrimitiveLineToCommand(left, p1y2), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n CrossShapeDescription.prototype.createParameters = function (parameters) {\n parameters.addRange([new ShapeParameters_1.ShapeParameter(exports.CrossHorizontalWidthParameterName, this.defaultSize.width * 0.2), new ShapeParameters_1.ShapeParameter(exports.CrossVerticalWidthParameterName, this.defaultSize.height * 0.2)]);\n };\n\n CrossShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\n this.changeParameterValue(parameters, exports.CrossHorizontalWidthParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.width, p.value));\n });\n this.changeParameterValue(parameters, exports.CrossVerticalWidthParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.height, p.value));\n });\n };\n\n CrossShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n this.changeParameterValue(parameters, exports.CrossHorizontalWidthParameterName, function (p) {\n return p.value - deltaX * 2;\n });\n this.changeParameterValue(parameters, exports.CrossVerticalWidthParameterName, function (p) {\n return p.value - deltaY * 2;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n CrossShapeDescription.prototype.getParameterPoints = function (shape) {\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + (shape.size.width - shape.parameters.get(exports.CrossHorizontalWidthParameterName).value) / 2), shape.normalizeY(shape.position.y + (shape.size.height - shape.parameters.get(exports.CrossVerticalWidthParameterName).value) / 2)))];\n };\n\n CrossShapeDescription.prototype.getTextRectangle = function (shape) {\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\n };\n\n CrossShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return textSize.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\n };\n\n return CrossShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.CrossShapeDescription = CrossShapeDescription;\n /***/\n },\n /* 212 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics119 = function extendStatics(d, b) {\n _extendStatics119 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics119(d, b);\n };\n\n return function (d, b) {\n _extendStatics119(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HeartShapeDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ConnectionPoint_1 = __webpack_require__(46);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var HeartShapeDescription =\n /** @class */\n function (_super) {\n __extends(HeartShapeDescription, _super);\n\n function HeartShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(HeartShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Heart;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HeartShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n\n HeartShapeDescription.prototype.createConnectionPoints = function () {\n return [new ConnectionPoint_1.ConnectionPoint(0.5, 0.15, DiagramItem_1.ConnectionPointSide.North), new ConnectionPoint_1.ConnectionPoint(1, 0.25, DiagramItem_1.ConnectionPointSide.East), new ConnectionPoint_1.ConnectionPoint(0.5, 1, DiagramItem_1.ConnectionPointSide.South), new ConnectionPoint_1.ConnectionPoint(0, 0.25, DiagramItem_1.ConnectionPointSide.West)];\n };\n\n HeartShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width,\n height = rect.height;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(right - width * 0.25, top), new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(right - width * 0.15, top, right, top + height * 0.1, right, top + height * 0.25), new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(right, top + height * 0.3, right - width * 0.02, top + height * 0.35, right - width * 0.05, top + height * 0.4), new PathPrimitive_1.PathPrimitiveLineToCommand(rect.center.x, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left + width * 0.05, top + height * 0.4), new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(left + width * 0.02, top + height * 0.35, left, top + height * 0.3, left, top + height * 0.25), new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(left, top + height * 0.1, left + width * 0.15, top, left + width * 0.25, top), new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(left + width * 0.3, top, left + width * 0.45, top + height * 0.03, left + width * 0.5, top + height * 0.15), new PathPrimitive_1.PathPrimitiveCubicCurveToCommand(right - width * 0.45, top + height * 0.03, right - width * 0.3, top, right - width * 0.25, top), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n HeartShapeDescription.prototype.getTextRectangle = function (shape) {\n return shape.rectangle.clone().inflate(-ShapeDescription_1.ShapeTextPadding, -ShapeDescription_1.ShapeTextPadding);\n };\n\n HeartShapeDescription.prototype.getSizeByText = function (_textSize, shape) {\n return shape.size.clone().offset(ShapeDescription_1.ShapeTextPadding * 2, ShapeDescription_1.ShapeTextPadding * 2);\n };\n\n return HeartShapeDescription;\n }(ShapeDescription_1.ShapeDescription);\n\n exports.HeartShapeDescription = HeartShapeDescription;\n /***/\n },\n /* 213 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics120 = function extendStatics(d, b) {\n _extendStatics120 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics120(d, b);\n };\n\n return function (d, b) {\n _extendStatics120(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.OctagonShapeDescription = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PolygonShapeDescription_1 = __webpack_require__(94);\n\n var Utils_1 = __webpack_require__(3);\n\n var rectangle_1 = __webpack_require__(12);\n\n var OctagonShapeDescription =\n /** @class */\n function (_super) {\n __extends(OctagonShapeDescription, _super);\n\n function OctagonShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(OctagonShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Octagon;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(OctagonShapeDescription.prototype, \"angleCount\", {\n get: function get() {\n return 8;\n },\n enumerable: false,\n configurable: true\n });\n\n OctagonShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width,\n height = rect.height;\n var angle = Math.PI - this.angle;\n var sideX = width / (1 + 2 * Math.cos(angle));\n var sideY = height / (1 + 2 * Math.cos(angle));\n var x1 = left + (width - sideX) / 2;\n var x2 = x1 + sideX;\n var y1 = top + (height - sideY) / 2;\n var y2 = y1 + sideY;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, y1), new PathPrimitive_1.PathPrimitiveLineToCommand(right, y2), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, y2), new PathPrimitive_1.PathPrimitiveLineToCommand(left, y1), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n OctagonShapeDescription.prototype.calculateHeight = function (width) {\n return width;\n };\n\n OctagonShapeDescription.prototype.getTextRectangle = function (shape) {\n var textSize = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset((shape.size.width - textSize.width) / 2, (shape.size.height - textSize.height) / 2), textSize);\n };\n\n OctagonShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\n };\n\n return OctagonShapeDescription;\n }(PolygonShapeDescription_1.PolygonShapeDescription);\n\n exports.OctagonShapeDescription = OctagonShapeDescription;\n /***/\n },\n /* 214 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics121 = function extendStatics(d, b) {\n _extendStatics121 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics121(d, b);\n };\n\n return function (d, b) {\n _extendStatics121(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.StarShapeDescription = exports.StarConvexParameterName = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PentagonShapeDescription_1 = __webpack_require__(123);\n\n var ShapeParameters_1 = __webpack_require__(38);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var point_1 = __webpack_require__(1);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n exports.StarConvexParameterName = \"sc\";\n\n var StarShapeDescription =\n /** @class */\n function (_super) {\n __extends(StarShapeDescription, _super);\n\n function StarShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(StarShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Star;\n },\n enumerable: false,\n configurable: true\n });\n\n StarShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n width = rect.width,\n height = rect.height;\n var bottom = this.getActualBottom(top, rect.bottom, width, height);\n var cx = rect.center.x;\n var cy = top + (bottom - top) / 2;\n var ratio = height / width;\n var angle = Math.PI - this.angle;\n var py = width / 2 * Math.tan(angle / 2) * ratio;\n var y = top + py;\n var px = (height - py) / Math.tan(angle) / ratio;\n var x1 = left + px;\n var x2 = right - px;\n var pDistance = shape.parameters.get(exports.StarConvexParameterName).value;\n var distance = this.getInnerPointDistance(cx, cx, right, cy, top, y);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top), new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, cx, right, pDistance, distance), this.getInnerPointPos(cy, top, y, pDistance, distance)), new PathPrimitive_1.PathPrimitiveLineToCommand(right, y), new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, right, x2, pDistance, distance), this.getInnerPointPos(cy, y, bottom, pDistance, distance)), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, x2, x1, pDistance, distance), this.getInnerPointPos(cy, bottom, bottom, pDistance, distance)), new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, x1, left, pDistance, distance), this.getInnerPointPos(cy, bottom, y, pDistance, distance)), new PathPrimitive_1.PathPrimitiveLineToCommand(left, y), new PathPrimitive_1.PathPrimitiveLineToCommand(this.getInnerPointPos(cx, left, cx, pDistance, distance), this.getInnerPointPos(cy, y, top, pDistance, distance)), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n StarShapeDescription.prototype.createParameters = function (parameters) {\n parameters.addRange([new ShapeParameters_1.ShapeParameter(exports.StarConvexParameterName, 300)]);\n };\n\n StarShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\n var rect = shape.rectangle;\n var top = rect.y,\n right = rect.right,\n width = rect.width,\n height = rect.height;\n var bottom = this.getActualBottom(top, rect.bottom, width, height);\n var cx = rect.center.x;\n var cy = top + (bottom - top) / 2;\n var ratio = height / width;\n var angle = Math.PI - this.angle;\n var py = width / 2 * Math.tan(angle / 2) * ratio;\n var y = top + py;\n var distance = this.getInnerPointDistance(cx, cx, right, cy, top, y);\n this.changeParameterValue(parameters, exports.StarConvexParameterName, function (p) {\n return Math.max(0, Math.min(distance, p.value));\n });\n };\n\n StarShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n var distance = Math.sqrt(Math.pow(deltaX, 2) + Math.pow(deltaY, 2));\n if (deltaX < 0 || deltaY > 0) distance = -distance;\n this.changeParameterValue(parameters, exports.StarConvexParameterName, function (p) {\n return p.value + distance;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n StarShapeDescription.prototype.getParameterPoints = function (shape) {\n var rect = shape.rectangle;\n var top = rect.y,\n right = rect.right,\n width = rect.width,\n height = rect.height;\n var bottom = this.getActualBottom(top, rect.bottom, width, height);\n var cx = rect.center.x;\n var cy = top + (bottom - top) / 2;\n var ratio = height / width;\n var angle = Math.PI - this.angle;\n var py = width / 2 * Math.tan(angle / 2) * ratio;\n var y = top + py;\n var pDistance = shape.parameters.get(exports.StarConvexParameterName).value;\n var distance = this.getInnerPointDistance(cx, cx, right, cy, top, y);\n var innerPointX = this.getInnerPointPos(cx, cx, right, pDistance, distance);\n var innerPointY = this.getInnerPointPos(cy, top, y, pDistance, distance);\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(innerPointX, innerPointY))];\n };\n\n StarShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n _super.prototype.processConnectionPoint.call(this, shape, point);\n\n var side = shape.getConnectionPointSide(point);\n\n if (side === DiagramItem_1.ConnectionPointSide.South) {\n var rect = shape.rectangle;\n var top_1 = rect.y,\n right = rect.right,\n width = rect.width,\n height = rect.height;\n var bottom = this.getActualBottom(top_1, rect.bottom, width, height);\n var cx = rect.center.x;\n var cy = top_1 + (bottom - top_1) / 2;\n var ratio = height / width;\n var angle = Math.PI - this.angle;\n var py = width / 2 * Math.tan(angle / 2) * ratio;\n var y = top_1 + py;\n var pDistance = shape.parameters.get(exports.StarConvexParameterName).value;\n var distance = this.getInnerPointDistance(cx, cx, right, cy, top_1, y);\n point.y = this.getInnerPointPos(cy, bottom, bottom, pDistance, distance);\n }\n };\n\n StarShapeDescription.prototype.getInnerPointDistanceByAxis = function (center, edge1, edge2) {\n var edgeX = Math.min(edge1, edge2) + Math.abs(edge1 - edge2) / 2;\n return edgeX - center;\n };\n\n StarShapeDescription.prototype.getInnerPointPos = function (center, edge1, edge2, pDistance, distance) {\n var ratio = Math.min(1, pDistance / distance);\n return center + this.getInnerPointDistanceByAxis(center, edge1, edge2) * ratio;\n };\n\n StarShapeDescription.prototype.getInnerPointDistance = function (centerX, edgeX1, edgeX2, centerY, edgeY1, edgeY2) {\n var disX = this.getInnerPointDistanceByAxis(centerX, edgeX1, edgeX2);\n var disY = this.getInnerPointDistanceByAxis(centerY, edgeY1, edgeY2);\n return Math.sqrt(Math.pow(disX, 2) + Math.pow(disY, 2));\n };\n\n StarShapeDescription.prototype.getActualBottom = function (top, bottom, width, height) {\n var result = top + _super.prototype.calculateHeight.call(this, width) * height / width;\n return result < bottom ? result : bottom;\n };\n\n StarShapeDescription.prototype.calculateHeight = function (width) {\n return width;\n };\n\n return StarShapeDescription;\n }(PentagonShapeDescription_1.PentagonShapeDescription);\n\n exports.StarShapeDescription = StarShapeDescription;\n /***/\n },\n /* 215 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics122 = function extendStatics(d, b) {\n _extendStatics122 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics122(d, b);\n };\n\n return function (d, b) {\n _extendStatics122(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ArrowDownShapeDescription = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var point_1 = __webpack_require__(1);\n\n var ArrowVerticalShapeDescription_1 = __webpack_require__(92);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ArrowDownShapeDescription =\n /** @class */\n function (_super) {\n __extends(ArrowDownShapeDescription, _super);\n\n function ArrowDownShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ArrowDownShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.ArrowDown;\n },\n enumerable: false,\n configurable: true\n });\n\n ArrowDownShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width,\n height = rect.height;\n var cx = rect.center.x;\n var p1dx = (width - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName).value) / 2;\n var p0dy = height - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\n var p1x1 = shape.normalizeX(left + p1dx);\n var p0y1 = shape.normalizeY(top + p0dy);\n var p1x2 = shape.normalizeX(right - p1dx);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(p1x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, top), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x2, p0y1), new PathPrimitive_1.PathPrimitiveLineToCommand(right, p0y1), new PathPrimitive_1.PathPrimitiveLineToCommand(cx, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, p0y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p1x1, p0y1), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n ArrowDownShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName, function (p) {\n return p.value - deltaY;\n });\n this.changeParameterValue(parameters, ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName, function (p) {\n return p.value - deltaX * 2;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n ArrowDownShapeDescription.prototype.getParameterPoints = function (shape) {\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + (shape.size.width - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalLineWidthParameterName).value) / 2), shape.normalizeY(shape.position.y + shape.size.height - shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value)))];\n };\n\n ArrowDownShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var triangleHeight = shape.parameters.get(ArrowVerticalShapeDescription_1.ArrowVerticalTriangleHeightParameterName).value;\n\n if (point.y > shape.position.y + shape.size.height - triangleHeight) {\n var tg = shape.size.width / 2 / triangleHeight;\n var delta = (point.y - (shape.position.y + shape.size.height - triangleHeight)) * tg;\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.East) point.x -= delta;else if (side === DiagramItem_1.ConnectionPointSide.West) point.x += delta;\n } else _super.prototype.processConnectionPoint.call(this, shape, point);\n };\n\n return ArrowDownShapeDescription;\n }(ArrowVerticalShapeDescription_1.ArrowVerticalShapeDescription);\n\n exports.ArrowDownShapeDescription = ArrowDownShapeDescription;\n /***/\n },\n /* 216 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics123 = function extendStatics(d, b) {\n _extendStatics123 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics123(d, b);\n };\n\n return function (d, b) {\n _extendStatics123(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ArrowLeftRightShapeDescription = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ArrowHorizontalShapeDescription_1 = __webpack_require__(93);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var point_1 = __webpack_require__(1);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ArrowLeftRightShapeDescription =\n /** @class */\n function (_super) {\n __extends(ArrowLeftRightShapeDescription, _super);\n\n function ArrowLeftRightShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ArrowLeftRightShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.ArrowLeftRight;\n },\n enumerable: false,\n configurable: true\n });\n\n ArrowLeftRightShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n height = rect.height;\n var cy = rect.center.y;\n var p0dx = shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\n var p1dy = (height - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName).value) / 2;\n var p0x1 = shape.normalizeX(left + p0dx);\n var p1y1 = shape.normalizeY(top + p1dy);\n var p0x2 = shape.normalizeX(right - p0dx);\n var p1y2 = shape.normalizeY(bottom - p1dy);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, cy), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x2, p1y2), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y2), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, bottom), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n ArrowLeftRightShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.width / 2 - 2 * shape.strokeWidth, p.value));\n });\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName, function (p) {\n return Math.max(0, Math.min(shape.size.height, p.value));\n });\n };\n\n ArrowLeftRightShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName, function (p) {\n return p.value + deltaX;\n });\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName, function (p) {\n return p.value - deltaY * 2;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n ArrowLeftRightShapeDescription.prototype.getParameterPoints = function (shape) {\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value), shape.normalizeY(shape.position.y + (shape.size.height - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName).value) / 2)))];\n };\n\n return ArrowLeftRightShapeDescription;\n }(ArrowHorizontalShapeDescription_1.ArrowHorizontalShapeDescription);\n\n exports.ArrowLeftRightShapeDescription = ArrowLeftRightShapeDescription;\n /***/\n },\n /* 217 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics124 = function extendStatics(d, b) {\n _extendStatics124 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics124(d, b);\n };\n\n return function (d, b) {\n _extendStatics124(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ArrowLeftShapeDescription = void 0;\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ArrowHorizontalShapeDescription_1 = __webpack_require__(93);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var point_1 = __webpack_require__(1);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ArrowLeftShapeDescription =\n /** @class */\n function (_super) {\n __extends(ArrowLeftShapeDescription, _super);\n\n function ArrowLeftShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ArrowLeftShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.ArrowLeft;\n },\n enumerable: false,\n configurable: true\n });\n\n ArrowLeftShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n height = rect.height;\n var cy = rect.center.y;\n var p0dx = shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\n var p1dy = (height - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName).value) / 2;\n var p0x1 = shape.normalizeX(left + p0dx);\n var p1y1 = shape.normalizeY(top + p1dy);\n var p1y2 = shape.normalizeY(bottom - p1dy);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, cy), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, top), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(right, p1y1), new PathPrimitive_1.PathPrimitiveLineToCommand(right, p1y2), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, p1y2), new PathPrimitive_1.PathPrimitiveLineToCommand(p0x1, bottom), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n ArrowLeftShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName, function (p) {\n return p.value + deltaX;\n });\n this.changeParameterValue(parameters, ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName, function (p) {\n return p.value - deltaY * 2;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n ArrowLeftShapeDescription.prototype.getParameterPoints = function (shape) {\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value), shape.normalizeY(shape.position.y + (shape.size.height - shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalLineHeightParameterName).value) / 2)))];\n };\n\n ArrowLeftShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var triangleWidth = shape.parameters.get(ArrowHorizontalShapeDescription_1.ArrowVerticalTriangleWidthParameterName).value;\n\n if (point.x < shape.position.x + triangleWidth) {\n var tg = shape.size.height / 2 / triangleWidth;\n var delta = (shape.position.x + triangleWidth - point.x) * tg;\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.North) point.y += delta;else if (side === DiagramItem_1.ConnectionPointSide.South) point.y -= delta;\n } else _super.prototype.processConnectionPoint.call(this, shape, point);\n };\n\n return ArrowLeftShapeDescription;\n }(ArrowHorizontalShapeDescription_1.ArrowHorizontalShapeDescription);\n\n exports.ArrowLeftShapeDescription = ArrowLeftShapeDescription;\n /***/\n },\n /* 218 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics125 = function extendStatics(d, b) {\n _extendStatics125 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics125(d, b);\n };\n\n return function (d, b) {\n _extendStatics125(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MultipleDocumentsShapeDescription = void 0;\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var DocumentShapeDescription_1 = __webpack_require__(126);\n\n var ClipPathPrimitive_1 = __webpack_require__(55);\n\n var Utils_1 = __webpack_require__(17);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var MultipleDocumentsShapeDescription =\n /** @class */\n function (_super) {\n __extends(MultipleDocumentsShapeDescription, _super);\n\n function MultipleDocumentsShapeDescription() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(MultipleDocumentsShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.MultipleDocuments;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MultipleDocumentsShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n MultipleDocumentsShapeDescription.prototype.createShapePrimitives = function (shape, forToolbox) {\n var rect = shape.rectangle;\n var _a = shape.rectangle,\n width = _a.width,\n height = _a.height;\n var ratio = forToolbox ? MultipleDocumentsShapeDescription.documentsOffsetRatioForToolbox : MultipleDocumentsShapeDescription.documentsOffsetRatio;\n var documentOffsetX = Math.ceil(width * ratio);\n var documentOffsetY = Math.ceil(height * ratio);\n rect = rect.clone().inflate(-documentOffsetX, -documentOffsetY).clone().moveRectangle(-documentOffsetX, -documentOffsetY);\n var rect1 = rect.clone().moveRectangle(documentOffsetX, documentOffsetY);\n var rect2 = rect1.clone().moveRectangle(documentOffsetX, documentOffsetY);\n var clipPathId = Utils_1.RenderUtils.generateSvgElementId(\"clipRect\");\n var primitives = [];\n return primitives.concat(this.createDocumentPrimitives(rect, shape.style, clipPathId + \"1\", rect1)).concat(this.createDocumentPrimitives(rect1, shape.style, clipPathId + \"2\", rect2)).concat(this.createDocumentPrimitives(rect2, shape.style));\n };\n\n MultipleDocumentsShapeDescription.prototype.createDocumentPrimitives = function (rect, style, clipPathId, clipRect) {\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width,\n height = rect.height;\n var cx = rect.center.x;\n var dy = height * DocumentShapeDescription_1.DocumentShapeDescription.curveOffsetRatio;\n var primitives = [];\n primitives = primitives.concat([new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right - width * 0.25, bottom - 2 * dy, cx, bottom - dy), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left + width * 0.25, bottom + dy, left, bottom - dy), new PathPrimitive_1.PathPrimitiveClosePathCommand()], style, undefined, clipRect && clipPathId)]);\n if (clipRect && clipPathId) primitives = primitives.concat([new ClipPathPrimitive_1.ClipPathPrimitive(clipPathId, [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left - style.strokeWidth, top - style.strokeWidth), new PathPrimitive_1.PathPrimitiveLineToCommand(right + style.strokeWidth, top - style.strokeWidth), new PathPrimitive_1.PathPrimitiveLineToCommand(right + style.strokeWidth, clipRect.y), new PathPrimitive_1.PathPrimitiveLineToCommand(clipRect.x, clipRect.y), new PathPrimitive_1.PathPrimitiveLineToCommand(clipRect.x, bottom + style.strokeWidth), new PathPrimitive_1.PathPrimitiveLineToCommand(left - style.strokeWidth, bottom + style.strokeWidth), new PathPrimitive_1.PathPrimitiveClosePathCommand()])])]);\n return primitives;\n };\n\n MultipleDocumentsShapeDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n var documentOffsetX = rect.width * MultipleDocumentsShapeDescription.documentsOffsetRatio;\n var documentOffsetY = rect.height * MultipleDocumentsShapeDescription.documentsOffsetRatio;\n rect = rect.clone().inflate(-documentOffsetX, -documentOffsetY).clone().moveRectangle(-documentOffsetX, -documentOffsetY);\n var innerRect = rect.clone().moveRectangle(2 * documentOffsetX + ShapeDescription_1.ShapeTextPadding, 2 * documentOffsetY + ShapeDescription_1.ShapeTextPadding);\n return innerRect.clone().resize(-2 * ShapeDescription_1.ShapeTextPadding, -rect.height * DocumentShapeDescription_1.DocumentShapeDescription.curveOffsetRatio - 2 * ShapeDescription_1.ShapeTextPadding);\n };\n\n MultipleDocumentsShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return new size_1.Size((textSize.width + 2 * ShapeDescription_1.ShapeTextPadding) / (1 - 2 * MultipleDocumentsShapeDescription.documentsOffsetRatio), (textSize.height + 2 * ShapeDescription_1.ShapeTextPadding) / ((1 - DocumentShapeDescription_1.DocumentShapeDescription.curveOffsetRatio) * (1 - MultipleDocumentsShapeDescription.documentsOffsetRatio))).nonNegativeSize();\n };\n\n MultipleDocumentsShapeDescription.documentsOffsetRatio = 0.1;\n MultipleDocumentsShapeDescription.documentsOffsetRatioForToolbox = 0.16;\n return MultipleDocumentsShapeDescription;\n }(DocumentShapeDescription_1.DocumentShapeDescription);\n\n exports.MultipleDocumentsShapeDescription = MultipleDocumentsShapeDescription;\n /***/\n },\n /* 219 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics126 = function extendStatics(d, b) {\n _extendStatics126 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics126(d, b);\n };\n\n return function (d, b) {\n _extendStatics126(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PreparationShapeDescription = void 0;\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var HexagonShapeDescription_1 = __webpack_require__(124);\n\n var PreparationShapeDescription =\n /** @class */\n function (_super) {\n __extends(PreparationShapeDescription, _super);\n\n function PreparationShapeDescription() {\n var _this = _super.call(this, true) || this;\n\n _this.defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension * 0.75);\n return _this;\n }\n\n Object.defineProperty(PreparationShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Preparation;\n },\n enumerable: false,\n configurable: true\n });\n return PreparationShapeDescription;\n }(HexagonShapeDescription_1.HexagonShapeDescription);\n\n exports.PreparationShapeDescription = PreparationShapeDescription;\n /***/\n },\n /* 220 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics127 = function extendStatics(d, b) {\n _extendStatics127 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics127(d, b);\n };\n\n return function (d, b) {\n _extendStatics127(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HardDiskShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var EllipsePrimitive_1 = __webpack_require__(54);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var HardDiskShapeDescription =\n /** @class */\n function (_super) {\n __extends(HardDiskShapeDescription, _super);\n\n function HardDiskShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(HardDiskShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.HardDisk;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(HardDiskShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n HardDiskShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width;\n var cy = rect.center.y;\n var dx = width * HardDiskShapeDescription.arcWidthRatio;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(right - dx / 2, top), new PathPrimitive_1.PathPrimitiveLineToCommand(left + dx / 2, top), new PathPrimitive_1.PathPrimitiveArcToCommand(dx / 2, (bottom - top) / 2, 0, false, false, left + dx / 2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(right - dx / 2, bottom)], shape.style), new EllipsePrimitive_1.EllipsePrimitive(right - dx / 2, cy, dx / 2, (bottom - top) / 2, shape.style)];\n };\n\n HardDiskShapeDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n var dx = rect.width * HardDiskShapeDescription.arcWidthRatio * 1.5;\n return rect.clone().resize(-dx - 2 * ShapeDescription_1.ShapeTextPadding, -2 * ShapeDescription_1.ShapeTextPadding).moveRectangle(ShapeDescription_1.ShapeTextPadding, ShapeDescription_1.ShapeTextPadding).nonNegativeSize();\n };\n\n HardDiskShapeDescription.prototype.getSizeByText = function (textSize, shape) {\n return new size_1.Size((textSize.width + ShapeDescription_1.ShapeTextPadding * 2) / (1 - 1.5 * HardDiskShapeDescription.arcWidthRatio), shape.size.height + ShapeDescription_1.ShapeTextPadding);\n };\n\n HardDiskShapeDescription.arcWidthRatio = 0.2;\n return HardDiskShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.HardDiskShapeDescription = HardDiskShapeDescription;\n /***/\n },\n /* 221 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics128 = function extendStatics(d, b) {\n _extendStatics128 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics128(d, b);\n };\n\n return function (d, b) {\n _extendStatics128(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DatabaseShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var EllipsePrimitive_1 = __webpack_require__(54);\n\n var DatabaseShapeDescription =\n /** @class */\n function (_super) {\n __extends(DatabaseShapeDescription, _super);\n\n function DatabaseShapeDescription() {\n var _this = _super.call(this, undefined, true) || this;\n\n _this.defaultSize.width = _this.defaultSize.height;\n return _this;\n }\n\n Object.defineProperty(DatabaseShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Database;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DatabaseShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n DatabaseShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n height = rect.height;\n var cx = rect.center.x;\n var dy = height * DatabaseShapeDescription.arcWidthRatio;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(right, top + dy / 2), new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom - dy / 2), new PathPrimitive_1.PathPrimitiveArcToCommand((right - left) / 2, dy / 2, 0, false, true, left, bottom - dy / 2), new PathPrimitive_1.PathPrimitiveLineToCommand(left, top + dy / 2)], shape.style), new EllipsePrimitive_1.EllipsePrimitive(cx, top + dy / 2, (right - left) / 2, dy / 2, shape.style)];\n };\n\n DatabaseShapeDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n var dy = rect.height * DatabaseShapeDescription.arcWidthRatio;\n return rect.clone().resize(0, -dy).clone().moveRectangle(0, dy);\n };\n\n DatabaseShapeDescription.arcWidthRatio = 0.2;\n return DatabaseShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.DatabaseShapeDescription = DatabaseShapeDescription;\n /***/\n },\n /* 222 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics129 = function extendStatics(d, b) {\n _extendStatics129 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics129(d, b);\n };\n\n return function (d, b) {\n _extendStatics129(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.InternalStorageShapeDescription = exports.InternalStorageVerticalEdgeParameterName = exports.InternalStorageHorizontalEdgeParameterName = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ShapeParameters_1 = __webpack_require__(38);\n\n var ShapeParameterPoint_1 = __webpack_require__(31);\n\n var point_1 = __webpack_require__(1);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n exports.InternalStorageHorizontalEdgeParameterName = \"he\";\n exports.InternalStorageVerticalEdgeParameterName = \"ve\";\n\n var InternalStorageShapeDescription =\n /** @class */\n function (_super) {\n __extends(InternalStorageShapeDescription, _super);\n\n function InternalStorageShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(InternalStorageShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.InternalStorage;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InternalStorageShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n InternalStorageShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom;\n var x = left + shape.parameters.get(exports.InternalStorageHorizontalEdgeParameterName).value;\n var y = top + shape.parameters.get(exports.InternalStorageVerticalEdgeParameterName).value;\n\n var primitives = _super.prototype.createShapePrimitives.call(this, shape);\n\n return primitives.concat([new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(x, top), new PathPrimitive_1.PathPrimitiveLineToCommand(x, bottom), new PathPrimitive_1.PathPrimitiveMoveToCommand(left, y), new PathPrimitive_1.PathPrimitiveLineToCommand(right, y)], shape.style)]);\n };\n\n InternalStorageShapeDescription.prototype.createParameters = function (parameters) {\n parameters.addRange([new ShapeParameters_1.ShapeParameter(exports.InternalStorageHorizontalEdgeParameterName, this.defaultSize.width * 0.1), new ShapeParameters_1.ShapeParameter(exports.InternalStorageVerticalEdgeParameterName, this.defaultSize.width * 0.1)]);\n };\n\n InternalStorageShapeDescription.prototype.normalizeParameters = function (shape, parameters) {\n this.changeParameterValue(parameters, exports.InternalStorageHorizontalEdgeParameterName, function (p) {\n return Math.max(InternalStorageShapeDescription.minEdge, Math.min(shape.size.width * 0.3, p.value));\n });\n this.changeParameterValue(parameters, exports.InternalStorageVerticalEdgeParameterName, function (p) {\n return Math.max(InternalStorageShapeDescription.minEdge, Math.min(shape.size.height * 0.3, p.value));\n });\n };\n\n InternalStorageShapeDescription.prototype.modifyParameters = function (shape, parameters, deltaX, deltaY) {\n this.changeParameterValue(parameters, exports.InternalStorageHorizontalEdgeParameterName, function (p) {\n return p.value + deltaX;\n });\n this.changeParameterValue(parameters, exports.InternalStorageVerticalEdgeParameterName, function (p) {\n return p.value + deltaY;\n });\n this.normalizeParameters(shape, parameters);\n };\n\n InternalStorageShapeDescription.prototype.getParameterPoints = function (shape) {\n return [new ShapeParameterPoint_1.ShapeParameterPoint(\"c\", new point_1.Point(shape.normalizeX(shape.position.x + shape.parameters.get(exports.InternalStorageHorizontalEdgeParameterName).value), shape.normalizeY(shape.position.y + shape.parameters.get(exports.InternalStorageVerticalEdgeParameterName).value)))];\n };\n\n InternalStorageShapeDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n var dx = shape.parameters.get(exports.InternalStorageHorizontalEdgeParameterName).value;\n return rect.clone().resize(-dx, 0).clone().moveRectangle(dx, 0);\n };\n\n InternalStorageShapeDescription.minEdge = 72;\n return InternalStorageShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.InternalStorageShapeDescription = InternalStorageShapeDescription;\n /***/\n },\n /* 223 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics130 = function extendStatics(d, b) {\n _extendStatics130 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics130(d, b);\n };\n\n return function (d, b) {\n _extendStatics130(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PaperTapeShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var PaperTapeShapeDescription =\n /** @class */\n function (_super) {\n __extends(PaperTapeShapeDescription, _super);\n\n function PaperTapeShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(PaperTapeShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.PaperTape;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(PaperTapeShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n PaperTapeShapeDescription.prototype.createShapePrimitives = function (shape) {\n return this.createDocumentPrimitives(shape.rectangle, shape.style);\n };\n\n PaperTapeShapeDescription.prototype.createDocumentPrimitives = function (rect, style) {\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width,\n height = rect.height;\n var cx = rect.center.x;\n var dy = height * PaperTapeShapeDescription.curveOffsetRatio;\n var primitives = [];\n return primitives.concat([new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left + width * 0.25, top + 2 * dy, cx, top + dy), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right - width * 0.25, top - dy, right, top + dy), new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(right - width * 0.25, bottom - 2 * dy, cx, bottom - dy), new PathPrimitive_1.PathPrimitiveQuadraticCurveToCommand(left + width * 0.25, bottom + dy, left, bottom - dy), new PathPrimitive_1.PathPrimitiveClosePathCommand()], style)]);\n };\n\n PaperTapeShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.North) point.y += shape.size.height * PaperTapeShapeDescription.curveOffsetRatio;\n if (side === DiagramItem_1.ConnectionPointSide.South) point.y -= shape.size.height * PaperTapeShapeDescription.curveOffsetRatio;\n };\n\n PaperTapeShapeDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n return rect.clone().inflate(ShapeDescription_1.ShapeTextPadding, -rect.height * PaperTapeShapeDescription.curveOffsetRatio);\n };\n\n PaperTapeShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return new size_1.Size(textSize.width + ShapeDescription_1.ShapeTextPadding * 2, textSize.height / (1 - 2 * PaperTapeShapeDescription.curveOffsetRatio));\n };\n\n PaperTapeShapeDescription.curveOffsetRatio = 0.1;\n return PaperTapeShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.PaperTapeShapeDescription = PaperTapeShapeDescription;\n /***/\n },\n /* 224 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics131 = function extendStatics(d, b) {\n _extendStatics131 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics131(d, b);\n };\n\n return function (d, b) {\n _extendStatics131(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ManualOperationShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var ManualOperationShapeDescription =\n /** @class */\n function (_super) {\n __extends(ManualOperationShapeDescription, _super);\n\n function ManualOperationShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(ManualOperationShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.ManualOperation;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ManualOperationShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n ManualOperationShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var _a = shape.rectangle,\n left = _a.x,\n top = _a.y,\n right = _a.right,\n bottom = _a.bottom,\n width = _a.width,\n height = _a.height;\n var px = Math.min(Math.max(0, height / Math.tan(ManualOperationShapeDescription.slopeAngle)), width);\n var cx = rect.center.x;\n var x1 = Math.min(left + px, cx);\n var x2 = Math.max(right - px, cx);\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, top), new PathPrimitive_1.PathPrimitiveLineToCommand(x2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(x1, bottom), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n ManualOperationShapeDescription.prototype.processConnectionPoint = function (shape, point) {\n var offset = shape.size.height / Math.tan(ManualOperationShapeDescription.slopeAngle);\n var side = shape.getConnectionPointSide(point);\n if (side === DiagramItem_1.ConnectionPointSide.East) point.x -= offset / 2;else if (side === DiagramItem_1.ConnectionPointSide.West) point.x += offset / 2;\n };\n\n ManualOperationShapeDescription.prototype.getTextRectangle = function (shape) {\n var px = Math.min(Math.max(0, shape.size.height / Math.tan(ManualOperationShapeDescription.slopeAngle)), shape.size.width);\n return shape.rectangle.clone().moveRectangle(px, ShapeDescription_1.ShapeTextPadding).resize(-px * 2, -ShapeDescription_1.ShapeTextPadding * 2).nonNegativeSize();\n };\n\n ManualOperationShapeDescription.slopeAngle = 81 * Math.PI / 180;\n return ManualOperationShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.ManualOperationShapeDescription = ManualOperationShapeDescription;\n /***/\n },\n /* 225 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics132 = function extendStatics(d, b) {\n _extendStatics132 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics132(d, b);\n };\n\n return function (d, b) {\n _extendStatics132(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DelayShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var Utils_1 = __webpack_require__(3);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var DelayShapeDescription =\n /** @class */\n function (_super) {\n __extends(DelayShapeDescription, _super);\n\n function DelayShapeDescription() {\n var _this = _super.call(this, undefined, true) || this;\n\n _this.defaultSize.width = _this.defaultSize.height;\n return _this;\n }\n\n Object.defineProperty(DelayShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Delay;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DelayShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n DelayShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom;\n var cx = rect.center.x;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top), new PathPrimitive_1.PathPrimitiveLineToCommand(cx, top), new PathPrimitive_1.PathPrimitiveArcToCommand((right - left) / 2, (bottom - top) / 2, 0, false, true, cx, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(left, bottom), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n DelayShapeDescription.prototype.getTextRectangle = function (shape) {\n var maxRectInEllipse = Utils_1.GeometryUtils.getMaxRectangleEnscribedInEllipse(shape.size);\n return shape.rectangle.clone().moveRectangle(ShapeDescription_1.ShapeTextPadding, ShapeDescription_1.ShapeTextPadding).setSize({\n width: maxRectInEllipse.width / 2 + shape.size.width / 2 - ShapeDescription_1.ShapeTextPadding,\n height: maxRectInEllipse.height / 2 + shape.size.height / 2 - ShapeDescription_1.ShapeTextPadding\n }).nonNegativeSize();\n };\n\n DelayShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n var rectByEllipse = Utils_1.GeometryUtils.getEllipseByEnscribedRectangle(textSize);\n return new size_1.Size(rectByEllipse.width / 2 + textSize.width / 2 + ShapeDescription_1.ShapeTextPadding, rectByEllipse.height / 2 + textSize.height / 2 + ShapeDescription_1.ShapeTextPadding);\n };\n\n DelayShapeDescription.arcWidthRatio = 0.2;\n return DelayShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.DelayShapeDescription = DelayShapeDescription;\n /***/\n },\n /* 226 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics133 = function extendStatics(d, b) {\n _extendStatics133 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics133(d, b);\n };\n\n return function (d, b) {\n _extendStatics133(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.StoredDataShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var StoredDataShapeDescription =\n /** @class */\n function (_super) {\n __extends(StoredDataShapeDescription, _super);\n\n function StoredDataShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(StoredDataShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.StoredData;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StoredDataShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n StoredDataShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width;\n var dx = width * StoredDataShapeDescription.arcWidthRatio;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(right, top), new PathPrimitive_1.PathPrimitiveLineToCommand(left + dx / 2, top), new PathPrimitive_1.PathPrimitiveArcToCommand(dx / 2, (bottom - top) / 2, 0, false, false, left + dx / 2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(right, bottom), new PathPrimitive_1.PathPrimitiveArcToCommand(dx / 2, (bottom - top) / 2, 0, false, true, right, top)], shape.style)];\n };\n\n StoredDataShapeDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n var dx = rect.width * StoredDataShapeDescription.arcWidthRatio / 2;\n return rect.clone().resize(-dx - 2 * ShapeDescription_1.ShapeTextPadding, -2 * ShapeDescription_1.ShapeTextPadding).moveRectangle(ShapeDescription_1.ShapeTextPadding, ShapeDescription_1.ShapeTextPadding).nonNegativeSize();\n };\n\n StoredDataShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return new size_1.Size((textSize.width + 2 * ShapeDescription_1.ShapeTextPadding) / (1 - StoredDataShapeDescription.arcWidthRatio / 2), textSize.height + 2 * ShapeDescription_1.ShapeTextPadding);\n };\n\n StoredDataShapeDescription.arcWidthRatio = 0.2;\n return StoredDataShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.StoredDataShapeDescription = StoredDataShapeDescription;\n /***/\n },\n /* 227 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics134 = function extendStatics(d, b) {\n _extendStatics134 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics134(d, b);\n };\n\n return function (d, b) {\n _extendStatics134(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MergeShapeDescription = void 0;\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var rectangle_1 = __webpack_require__(12);\n\n var TriangleShapeDescription_1 = __webpack_require__(125);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var MergeShapeDescription =\n /** @class */\n function (_super) {\n __extends(MergeShapeDescription, _super);\n\n function MergeShapeDescription() {\n return _super.call(this, true) || this;\n }\n\n Object.defineProperty(MergeShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Merge;\n },\n enumerable: false,\n configurable: true\n });\n\n MergeShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(left, top), new PathPrimitive_1.PathPrimitiveLineToCommand(right, top), new PathPrimitive_1.PathPrimitiveLineToCommand(rect.center.x, bottom), new PathPrimitive_1.PathPrimitiveClosePathCommand()], shape.style)];\n };\n\n MergeShapeDescription.prototype.calculateHeight = function (width) {\n return width * 0.75;\n };\n\n MergeShapeDescription.prototype.getTextRectangle = function (shape) {\n return rectangle_1.Rectangle.fromGeometry(shape.position.clone().offset(shape.size.width / 4, ShapeDescription_1.ShapeTextPadding), new size_1.Size(shape.size.width / 2, shape.size.height / 2 - ShapeDescription_1.ShapeTextPadding));\n };\n\n MergeShapeDescription.prototype.getSizeByText = function (textSize, _shape) {\n return new size_1.Size(textSize.width * 2, (textSize.height + ShapeDescription_1.ShapeTextPadding) * 2);\n };\n\n return MergeShapeDescription;\n }(TriangleShapeDescription_1.TriangleShapeDescription);\n\n exports.MergeShapeDescription = MergeShapeDescription;\n /***/\n },\n /* 228 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics135 = function extendStatics(d, b) {\n _extendStatics135 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics135(d, b);\n };\n\n return function (d, b) {\n _extendStatics135(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DisplayShapeDescription = void 0;\n\n var RectangleShapeDescription_1 = __webpack_require__(18);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var DisplayShapeDescription =\n /** @class */\n function (_super) {\n __extends(DisplayShapeDescription, _super);\n\n function DisplayShapeDescription() {\n return _super.call(this, undefined, true) || this;\n }\n\n Object.defineProperty(DisplayShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Display;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DisplayShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n DisplayShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom,\n width = rect.width;\n var cy = rect.center.y;\n var dx = width * DisplayShapeDescription.arcWidthRatio;\n return [new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(right - dx / 2, top), new PathPrimitive_1.PathPrimitiveLineToCommand(left + dx / 2, top), new PathPrimitive_1.PathPrimitiveLineToCommand(left, cy), new PathPrimitive_1.PathPrimitiveLineToCommand(left + dx / 2, bottom), new PathPrimitive_1.PathPrimitiveLineToCommand(right - dx / 2, bottom), new PathPrimitive_1.PathPrimitiveArcToCommand(dx / 2, (bottom - top) / 2, 0, false, false, right - dx / 2, top)], shape.style)];\n };\n\n DisplayShapeDescription.prototype.getTextRectangle = function (shape) {\n var dx = shape.size.width * DisplayShapeDescription.arcWidthRatio;\n return shape.rectangle.clone().moveRectangle(dx / 2, ShapeDescription_1.ShapeTextPadding).resize(-dx, -ShapeDescription_1.ShapeTextPadding * 2).nonNegativeSize();\n };\n\n DisplayShapeDescription.arcWidthRatio = 0.2;\n return DisplayShapeDescription;\n }(RectangleShapeDescription_1.RectangleShapeDescription);\n\n exports.DisplayShapeDescription = DisplayShapeDescription;\n /***/\n },\n /* 229 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics136 = function extendStatics(d, b) {\n _extendStatics136 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics136(d, b);\n };\n\n return function (d, b) {\n _extendStatics136(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.OrShapeDescription = void 0;\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var EllipseShapeDescription_1 = __webpack_require__(71);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var OrShapeDescription =\n /** @class */\n function (_super) {\n __extends(OrShapeDescription, _super);\n\n function OrShapeDescription() {\n var _this = _super.call(this, true) || this;\n\n _this.defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 0.5, ShapeDescription_1.ShapeDefaultDimension * 0.5);\n return _this;\n }\n\n Object.defineProperty(OrShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Or;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(OrShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(OrShapeDescription.prototype, \"enableText\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n OrShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n right = rect.right,\n bottom = rect.bottom;\n var _a = rect.center,\n cx = _a.x,\n cy = _a.y;\n var primitives = [];\n return primitives.concat(_super.prototype.createShapePrimitives.call(this, shape)).concat([new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(cx, top), new PathPrimitive_1.PathPrimitiveLineToCommand(cx, bottom), new PathPrimitive_1.PathPrimitiveMoveToCommand(left, cy), new PathPrimitive_1.PathPrimitiveLineToCommand(right, cy)], shape.style)]);\n };\n\n return OrShapeDescription;\n }(EllipseShapeDescription_1.EllipseShapeDescription);\n\n exports.OrShapeDescription = OrShapeDescription;\n /***/\n },\n /* 230 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics137 = function extendStatics(d, b) {\n _extendStatics137 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics137(d, b);\n };\n\n return function (d, b) {\n _extendStatics137(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SummingJunctionShapeDescription = void 0;\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var EllipseShapeDescription_1 = __webpack_require__(71);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var SummingJunctionShapeDescription =\n /** @class */\n function (_super) {\n __extends(SummingJunctionShapeDescription, _super);\n\n function SummingJunctionShapeDescription() {\n var _this = _super.call(this, true) || this;\n\n _this.defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 0.5, ShapeDescription_1.ShapeDefaultDimension * 0.5);\n return _this;\n }\n\n Object.defineProperty(SummingJunctionShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.SummingJunction;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SummingJunctionShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(SummingJunctionShapeDescription.prototype, \"enableText\", {\n get: function get() {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n\n SummingJunctionShapeDescription.prototype.createShapePrimitives = function (shape) {\n var rect = shape.rectangle;\n var width = rect.width,\n height = rect.height;\n var _a = rect.center,\n cx = _a.x,\n cy = _a.y;\n var rx = width / 2;\n var ry = height / 2;\n var angle = Math.atan(ry / rx);\n var ex = 1 / Math.sqrt(1 / Math.pow(rx, 2) + Math.pow(Math.tan(angle), 2) / Math.pow(ry, 2));\n var ey = ex * Math.tan(angle);\n var primitives = [];\n return primitives.concat(_super.prototype.createShapePrimitives.call(this, shape)).concat([new PathPrimitive_1.PathPrimitive([new PathPrimitive_1.PathPrimitiveMoveToCommand(cx - ex, cy - ey), new PathPrimitive_1.PathPrimitiveLineToCommand(cx + ex, cy + ey), new PathPrimitive_1.PathPrimitiveMoveToCommand(cx - ex, cy + ey), new PathPrimitive_1.PathPrimitiveLineToCommand(cx + ex, cy - ey)], shape.style)]);\n };\n\n return SummingJunctionShapeDescription;\n }(EllipseShapeDescription_1.EllipseShapeDescription);\n\n exports.SummingJunctionShapeDescription = SummingJunctionShapeDescription;\n /***/\n },\n /* 231 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics138 = function extendStatics(d, b) {\n _extendStatics138 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics138(d, b);\n };\n\n return function (d, b) {\n _extendStatics138(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SvgElementPrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var SvgElementPrimitive =\n /** @class */\n function (_super) {\n __extends(SvgElementPrimitive, _super);\n\n function SvgElementPrimitive(x, y, width, height, createContent, destroyContent, data, className, onApplyProperties) {\n var _this = _super.call(this, null, className, undefined, onApplyProperties) || this;\n\n _this.x = x;\n _this.y = y;\n _this.width = width;\n _this.height = height;\n _this.createContent = createContent;\n _this.destroyContent = destroyContent;\n _this.data = data;\n return _this;\n }\n\n SvgElementPrimitive.prototype.createMainElement = function () {\n return document.createElementNS(RenderHelper_1.svgNS, \"svg\");\n };\n\n SvgElementPrimitive.prototype.applyElementProperties = function (element, measurer) {\n this.setUnitAttribute(element, \"x\", this.x);\n this.setUnitAttribute(element, \"y\", this.y);\n this.setUnitAttribute(element, \"width\", this.width);\n this.setUnitAttribute(element, \"height\", this.height);\n this.setPositionCorrectionAttribute(element);\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n SvgElementPrimitive.prototype.createCustomContent = function (parent) {\n if (this.createContent) this.createContent(parent, this.data);\n };\n\n SvgElementPrimitive.prototype.destroyCustomContent = function (parent) {\n if (this.destroyContent) this.destroyContent(parent);\n };\n\n return SvgElementPrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.SvgElementPrimitive = SvgElementPrimitive;\n /***/\n },\n /* 232 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics139 = function extendStatics(d, b) {\n _extendStatics139 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics139(d, b);\n };\n\n return function (d, b) {\n _extendStatics139(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.VerticalContainerDescription = void 0;\n\n var point_1 = __webpack_require__(1);\n\n var size_1 = __webpack_require__(2);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var rectangle_1 = __webpack_require__(12);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var ContainerDescription_1 = __webpack_require__(132);\n\n var VerticalContainerDescription =\n /** @class */\n function (_super) {\n __extends(VerticalContainerDescription, _super);\n\n function VerticalContainerDescription() {\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 2, ShapeDescription_1.ShapeDefaultDimension * 1.5)) || this;\n }\n\n Object.defineProperty(VerticalContainerDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.VerticalContainer;\n },\n enumerable: false,\n configurable: true\n });\n\n VerticalContainerDescription.prototype.getExpandedSize = function (shape) {\n return new size_1.Size(shape.size.width, shape.expandedSize.height);\n };\n\n VerticalContainerDescription.prototype.getCollapsedSize = function (shape) {\n return new size_1.Size(shape.size.width, ContainerDescription_1.CONTAINER_HEADER_SIZE + 2 * shape.strokeWidth);\n };\n\n VerticalContainerDescription.prototype.allowResizeVertically = function (shape) {\n return shape.expanded;\n };\n\n VerticalContainerDescription.prototype.createHeaderPrimitives = function (shape, forToolbox) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n width = rect.width;\n var headerSize = this.getHeaderSize(shape, forToolbox);\n var primitives = [];\n primitives = primitives.concat([new RectaglePrimitive_1.RectanglePrimitive(left, top, width, headerSize, shape.style)]);\n if (!forToolbox) primitives = primitives.concat(this.createExpandButtonPrimitives(shape, new rectangle_1.Rectangle(left, top, headerSize, headerSize)));\n return primitives;\n };\n\n VerticalContainerDescription.prototype.getClientRectangle = function (shape) {\n var rect = shape.rectangle;\n var headerSize = this.getHeaderSize(shape);\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y + headerSize), new size_1.Size(rect.width, rect.height - headerSize));\n };\n\n VerticalContainerDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n var headerSize = this.getHeaderSize(shape);\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x + headerSize, rect.y), new size_1.Size(rect.width - headerSize, headerSize));\n };\n\n VerticalContainerDescription.prototype.getSizeByText = function (textSize, shape) {\n var headerSize = this.getHeaderSize(shape);\n return new size_1.Size(Math.max(shape.size.width, textSize.width + headerSize), shape.size.height);\n };\n\n VerticalContainerDescription.prototype.getHeaderSize = function (shape, forToolbox) {\n var rect = shape.rectangle;\n return forToolbox ? rect.height * ContainerDescription_1.CONTAINER_HEADER_TOOLBOX_SIZE_RATIO : ContainerDescription_1.CONTAINER_HEADER_SIZE + 2 * shape.strokeWidth;\n };\n\n return VerticalContainerDescription;\n }(ContainerDescription_1.ContainerDescription);\n\n exports.VerticalContainerDescription = VerticalContainerDescription;\n /***/\n },\n /* 233 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics140 = function extendStatics(d, b) {\n _extendStatics140 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics140(d, b);\n };\n\n return function (d, b) {\n _extendStatics140(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.HorizontalContainerDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var rectangle_1 = __webpack_require__(12);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ContainerDescription_1 = __webpack_require__(132);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var TextPrimitive_1 = __webpack_require__(62);\n\n var HorizontalContainerDescription =\n /** @class */\n function (_super) {\n __extends(HorizontalContainerDescription, _super);\n\n function HorizontalContainerDescription() {\n return _super.call(this, new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 2, ShapeDescription_1.ShapeDefaultDimension * 1.5)) || this;\n }\n\n Object.defineProperty(HorizontalContainerDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.HorizontalContainer;\n },\n enumerable: false,\n configurable: true\n });\n\n HorizontalContainerDescription.prototype.getExpandedSize = function (shape) {\n return new size_1.Size(shape.expandedSize.width, shape.size.height);\n };\n\n HorizontalContainerDescription.prototype.getCollapsedSize = function (shape) {\n return new size_1.Size(ContainerDescription_1.CONTAINER_HEADER_SIZE + 2 * shape.strokeWidth, shape.size.height);\n };\n\n HorizontalContainerDescription.prototype.allowResizeHorizontally = function (shape) {\n return shape.expanded;\n };\n\n HorizontalContainerDescription.prototype.createHeaderPrimitives = function (shape, forToolbox) {\n var rect = shape.rectangle;\n var left = rect.x,\n top = rect.y,\n height = rect.height;\n var headerSize = this.getHeaderSize(shape, forToolbox);\n var primitives = [];\n primitives = primitives.concat([new RectaglePrimitive_1.RectanglePrimitive(left, top, headerSize, height, shape.style)]);\n if (!forToolbox) primitives = primitives.concat(this.createExpandButtonPrimitives(shape, new rectangle_1.Rectangle(left, top, headerSize, headerSize)));\n return primitives;\n };\n\n HorizontalContainerDescription.prototype.getClientRectangle = function (shape) {\n var rect = shape.rectangle;\n var headerSize = this.getHeaderSize(shape);\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x + headerSize, rect.y), new size_1.Size(rect.width - headerSize, rect.height));\n };\n\n HorizontalContainerDescription.prototype.getTextRectangle = function (shape) {\n var rect = shape.rectangle;\n var headerSize = this.getHeaderSize(shape);\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y + headerSize), new size_1.Size(headerSize, rect.height - headerSize)).nonNegativeSize();\n };\n\n HorizontalContainerDescription.prototype.getSizeByText = function (textSize, shape) {\n var headerSize = this.getHeaderSize(shape);\n return new size_1.Size(shape.size.width, Math.max(shape.size.height, Math.max(textSize.width + headerSize, shape.size.height)));\n };\n\n HorizontalContainerDescription.prototype.getTextEditRectangle = function (shape) {\n var rect = this.getTextRectangle(shape);\n return rectangle_1.Rectangle.fromGeometry(new point_1.Point(rect.x, rect.y + rect.height), new size_1.Size(rect.height, rect.width));\n };\n\n HorizontalContainerDescription.prototype.getTextAngle = function () {\n return TextPrimitive_1.TextAngle.Angle270deg;\n };\n\n HorizontalContainerDescription.prototype.getHeaderSize = function (shape, forToolbox) {\n var rect = shape.rectangle;\n return forToolbox ? rect.height * ContainerDescription_1.CONTAINER_HEADER_TOOLBOX_SIZE_RATIO : ContainerDescription_1.CONTAINER_HEADER_SIZE + 2 * shape.strokeWidth;\n };\n\n return HorizontalContainerDescription;\n }(ContainerDescription_1.ContainerDescription);\n\n exports.HorizontalContainerDescription = HorizontalContainerDescription;\n /***/\n },\n /* 234 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics141 = function extendStatics(d, b) {\n _extendStatics141 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics141(d, b);\n };\n\n return function (d, b) {\n _extendStatics141(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CardWithImageOnTopDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var CardBaseDescription_1 = __webpack_require__(133);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var CardWithImageOnTopDescription =\n /** @class */\n function (_super) {\n __extends(CardWithImageOnTopDescription, _super);\n\n function CardWithImageOnTopDescription() {\n var _this = _super.call(this, new size_1.Size(32 / 40 * ShapeDescription_1.ShapeDefaultDimension, ShapeDescription_1.ShapeDefaultDimension)) || this;\n\n _this.isTextAfterImage = true;\n _this.isHorizontal = false;\n return _this;\n }\n\n Object.defineProperty(CardWithImageOnTopDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.CardWithImageOnTop;\n },\n enumerable: false,\n configurable: true\n });\n\n CardWithImageOnTopDescription.prototype.getImageSize = function (shapeSize, includeMargins, forToolbox) {\n var w = shapeSize.width / 2;\n if (unit_converter_1.UnitConverter.twipsToPixels(w) % 2 === 1) w -= unit_converter_1.UnitConverter.pixelsToTwips(1);\n var imageSize = Math.max(0, shapeSize.height - (includeMargins ? 0 : 2 * this.getImageMargin(forToolbox)));\n imageSize = Math.min(w, imageSize);\n return new size_1.Size(imageSize, imageSize);\n };\n\n CardWithImageOnTopDescription.prototype.getImageSizeByTextBlockSize = function (textBlockSize) {\n return this.getImageSize(new size_1.Size(textBlockSize.width, Number.MAX_VALUE), true);\n };\n\n return CardWithImageOnTopDescription;\n }(CardBaseDescription_1.CardBaseDescription);\n\n exports.CardWithImageOnTopDescription = CardWithImageOnTopDescription;\n /***/\n },\n /* 235 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics142 = function extendStatics(d, b) {\n _extendStatics142 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics142(d, b);\n };\n\n return function (d, b) {\n _extendStatics142(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RoundedRectanglePrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var RoundedRectanglePrimitive =\n /** @class */\n function (_super) {\n __extends(RoundedRectanglePrimitive, _super);\n\n function RoundedRectanglePrimitive(x, y, width, height, rx, ry, style, className, clipPathId, onApplyProperties) {\n if (rx === void 0) {\n rx = 0;\n }\n\n if (ry === void 0) {\n ry = 0;\n }\n\n var _this = _super.call(this, x, y, width, height, style, className, clipPathId, onApplyProperties) || this;\n\n _this.x = x;\n _this.y = y;\n _this.width = width;\n _this.height = height;\n _this.rx = rx;\n _this.ry = ry;\n return _this;\n }\n\n RoundedRectanglePrimitive.prototype.createMainElement = function () {\n return document.createElementNS(RenderHelper_1.svgNS, \"rect\");\n };\n\n RoundedRectanglePrimitive.prototype.applyElementProperties = function (element, measurer) {\n this.setUnitAttribute(element, \"rx\", this.rx);\n this.setUnitAttribute(element, \"ry\", this.ry);\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n return RoundedRectanglePrimitive;\n }(RectaglePrimitive_1.RectanglePrimitive);\n\n exports.RoundedRectanglePrimitive = RoundedRectanglePrimitive;\n /***/\n },\n /* 236 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics143 = function extendStatics(d, b) {\n _extendStatics143 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics143(d, b);\n };\n\n return function (d, b) {\n _extendStatics143(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorShapeDescription = void 0;\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var size_1 = __webpack_require__(2);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var EllipseShapeDescription_1 = __webpack_require__(71);\n\n var ConnectorShapeDescription =\n /** @class */\n function (_super) {\n __extends(ConnectorShapeDescription, _super);\n\n function ConnectorShapeDescription() {\n var _this = _super.call(this, false) || this;\n\n _this.defaultSize = new size_1.Size(ShapeDescription_1.ShapeDefaultDimension * 0.5, ShapeDescription_1.ShapeDefaultDimension * 0.5);\n return _this;\n }\n\n Object.defineProperty(ConnectorShapeDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.Connector;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ConnectorShapeDescription.prototype, \"keepRatioOnAutoSize\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n return ConnectorShapeDescription;\n }(EllipseShapeDescription_1.EllipseShapeDescription);\n\n exports.ConnectorShapeDescription = ConnectorShapeDescription;\n /***/\n },\n /* 237 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics144 = function extendStatics(d, b) {\n _extendStatics144 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics144(d, b);\n };\n\n return function (d, b) {\n _extendStatics144(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CardWithImageOnRightDescription = exports.CardWithImageOnLeftDescription = void 0;\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var CardBaseDescription_1 = __webpack_require__(133);\n\n var size_1 = __webpack_require__(2);\n\n var CardWithHorizontalImageDescription =\n /** @class */\n function (_super) {\n __extends(CardWithHorizontalImageDescription, _super);\n\n function CardWithHorizontalImageDescription() {\n var _this = _super.call(this, new size_1.Size(1.5 * ShapeDescription_1.ShapeDefaultDimension, 0.5 * ShapeDescription_1.ShapeDefaultDimension)) || this;\n\n _this.isHorizontal = true;\n return _this;\n }\n\n CardWithHorizontalImageDescription.prototype.getToolboxHeightToWidthRatio = function (_width, _height) {\n return 26 / 46;\n };\n\n CardWithHorizontalImageDescription.prototype.getImageSize = function (shapeSize, includeMargins, forToolbox) {\n var imageSize = Math.min(shapeSize.height, shapeSize.width);\n if (!includeMargins) imageSize = Math.max(0, imageSize - 2 * this.getImageMargin(forToolbox));\n return new size_1.Size(imageSize, imageSize);\n };\n\n CardWithHorizontalImageDescription.prototype.getImageSizeByTextBlockSize = function (textBlockSize) {\n return this.getImageSize(new size_1.Size(Number.MAX_VALUE, textBlockSize.height), true);\n };\n\n return CardWithHorizontalImageDescription;\n }(CardBaseDescription_1.CardBaseDescription);\n\n var CardWithImageOnLeftDescription =\n /** @class */\n function (_super) {\n __extends(CardWithImageOnLeftDescription, _super);\n\n function CardWithImageOnLeftDescription() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.isTextAfterImage = true;\n return _this;\n }\n\n Object.defineProperty(CardWithImageOnLeftDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.CardWithImageOnLeft;\n },\n enumerable: false,\n configurable: true\n });\n return CardWithImageOnLeftDescription;\n }(CardWithHorizontalImageDescription);\n\n exports.CardWithImageOnLeftDescription = CardWithImageOnLeftDescription;\n\n var CardWithImageOnRightDescription =\n /** @class */\n function (_super) {\n __extends(CardWithImageOnRightDescription, _super);\n\n function CardWithImageOnRightDescription() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.isTextAfterImage = false;\n return _this;\n }\n\n Object.defineProperty(CardWithImageOnRightDescription.prototype, \"key\", {\n get: function get() {\n return ShapeTypes_1.ShapeTypes.CardWithImageOnRight;\n },\n enumerable: false,\n configurable: true\n });\n return CardWithImageOnRightDescription;\n }(CardWithHorizontalImageDescription);\n\n exports.CardWithImageOnRightDescription = CardWithImageOnRightDescription;\n /***/\n },\n /* 238 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics145 = function extendStatics(d, b) {\n _extendStatics145 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics145(d, b);\n };\n\n return function (d, b) {\n _extendStatics145(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExportCommand = void 0;\n\n var Exporter_1 = __webpack_require__(72);\n\n var ExportImportCommandBase_1 = __webpack_require__(56);\n\n var ExportCommand =\n /** @class */\n function (_super) {\n __extends(ExportCommand, _super);\n\n function ExportCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ExportCommand.prototype.executeCore = function (state, parameter) {\n var exporter = new Exporter_1.Exporter();\n var data = exporter.export(this.control.model);\n parameter(data);\n return true;\n };\n\n return ExportCommand;\n }(ExportImportCommandBase_1.ExportImportCommandBase);\n\n exports.ExportCommand = ExportCommand;\n /***/\n },\n /* 239 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics146 = function extendStatics(d, b) {\n _extendStatics146 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics146(d, b);\n };\n\n return function (d, b) {\n _extendStatics146(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleFontBoldCommand = void 0;\n\n var ToggleStyleTextPropertyCommand_1 = __webpack_require__(73);\n\n var ToggleFontBoldCommand =\n /** @class */\n function (_super) {\n __extends(ToggleFontBoldCommand, _super);\n\n function ToggleFontBoldCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleFontBoldCommand.prototype.getStyleProperty = function () {\n return \"font-weight\";\n };\n\n ToggleFontBoldCommand.prototype.getStylePropertyValue = function () {\n return \"bold\";\n };\n\n return ToggleFontBoldCommand;\n }(ToggleStyleTextPropertyCommand_1.ToggleStyleTextPropertyCommand);\n\n exports.ToggleFontBoldCommand = ToggleFontBoldCommand;\n /***/\n },\n /* 240 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics147 = function extendStatics(d, b) {\n _extendStatics147 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics147(d, b);\n };\n\n return function (d, b) {\n _extendStatics147(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleFontItalicCommand = void 0;\n\n var ToggleStyleTextPropertyCommand_1 = __webpack_require__(73);\n\n var ToggleFontItalicCommand =\n /** @class */\n function (_super) {\n __extends(ToggleFontItalicCommand, _super);\n\n function ToggleFontItalicCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleFontItalicCommand.prototype.getStyleProperty = function () {\n return \"font-style\";\n };\n\n ToggleFontItalicCommand.prototype.getStylePropertyValue = function () {\n return \"italic\";\n };\n\n return ToggleFontItalicCommand;\n }(ToggleStyleTextPropertyCommand_1.ToggleStyleTextPropertyCommand);\n\n exports.ToggleFontItalicCommand = ToggleFontItalicCommand;\n /***/\n },\n /* 241 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics148 = function extendStatics(d, b) {\n _extendStatics148 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics148(d, b);\n };\n\n return function (d, b) {\n _extendStatics148(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleFontUnderlineCommand = void 0;\n\n var ToggleStyleTextPropertyCommand_1 = __webpack_require__(73);\n\n var ToggleFontUnderlineCommand =\n /** @class */\n function (_super) {\n __extends(ToggleFontUnderlineCommand, _super);\n\n function ToggleFontUnderlineCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleFontUnderlineCommand.prototype.getStyleProperty = function () {\n return \"text-decoration\";\n };\n\n ToggleFontUnderlineCommand.prototype.getStylePropertyValue = function () {\n return \"underline\";\n };\n\n return ToggleFontUnderlineCommand;\n }(ToggleStyleTextPropertyCommand_1.ToggleStyleTextPropertyCommand);\n\n exports.ToggleFontUnderlineCommand = ToggleFontUnderlineCommand;\n /***/\n },\n /* 242 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics149 = function extendStatics(d, b) {\n _extendStatics149 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics149(d, b);\n };\n\n return function (d, b) {\n _extendStatics149(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeFontNameCommand = void 0;\n\n var ChangeStyleTextPropertyCommand_1 = __webpack_require__(96);\n\n var ChangeFontNameCommand =\n /** @class */\n function (_super) {\n __extends(ChangeFontNameCommand, _super);\n\n function ChangeFontNameCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeFontNameCommand.prototype.getStyleProperty = function () {\n return \"font-family\";\n };\n\n return ChangeFontNameCommand;\n }(ChangeStyleTextPropertyCommand_1.ChangeStyleTextPropertyCommand);\n\n exports.ChangeFontNameCommand = ChangeFontNameCommand;\n /***/\n },\n /* 243 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics150 = function extendStatics(d, b) {\n _extendStatics150 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics150(d, b);\n };\n\n return function (d, b) {\n _extendStatics150(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeFontSizeCommand = void 0;\n\n var ChangeStyleTextPropertyCommand_1 = __webpack_require__(96);\n\n var ChangeFontSizeCommand =\n /** @class */\n function (_super) {\n __extends(ChangeFontSizeCommand, _super);\n\n function ChangeFontSizeCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeFontSizeCommand.prototype.getStyleProperty = function () {\n return \"font-size\";\n };\n\n return ChangeFontSizeCommand;\n }(ChangeStyleTextPropertyCommand_1.ChangeStyleTextPropertyCommand);\n\n exports.ChangeFontSizeCommand = ChangeFontSizeCommand;\n /***/\n },\n /* 244 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics151 = function extendStatics(d, b) {\n _extendStatics151 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics151(d, b);\n };\n\n return function (d, b) {\n _extendStatics151(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeFontColorCommand = void 0;\n\n var ChangeStyleTextPropertyCommand_1 = __webpack_require__(96);\n\n var color_1 = __webpack_require__(22);\n\n var ChangeFontColorCommand =\n /** @class */\n function (_super) {\n __extends(ChangeFontColorCommand, _super);\n\n function ChangeFontColorCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeFontColorCommand.prototype.processParameter = function (parameter) {\n return color_1.ColorUtils.stringToHash(parameter);\n };\n\n ChangeFontColorCommand.prototype.getStyleProperty = function () {\n return \"fill\";\n };\n\n return ChangeFontColorCommand;\n }(ChangeStyleTextPropertyCommand_1.ChangeStyleTextPropertyCommand);\n\n exports.ChangeFontColorCommand = ChangeFontColorCommand;\n /***/\n },\n /* 245 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics152 = function extendStatics(d, b) {\n _extendStatics152 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics152(d, b);\n };\n\n return function (d, b) {\n _extendStatics152(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeFillColorCommand = void 0;\n\n var ChangeStylePropertyCommand_1 = __webpack_require__(74);\n\n var color_1 = __webpack_require__(22);\n\n var ChangeFillColorCommand =\n /** @class */\n function (_super) {\n __extends(ChangeFillColorCommand, _super);\n\n function ChangeFillColorCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeFillColorCommand.prototype.processParameter = function (parameter) {\n return color_1.ColorUtils.stringToHash(parameter);\n };\n\n ChangeFillColorCommand.prototype.getStyleProperty = function () {\n return \"fill\";\n };\n\n return ChangeFillColorCommand;\n }(ChangeStylePropertyCommand_1.ChangeStylePropertyCommand);\n\n exports.ChangeFillColorCommand = ChangeFillColorCommand;\n /***/\n },\n /* 246 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics153 = function extendStatics(d, b) {\n _extendStatics153 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics153(d, b);\n };\n\n return function (d, b) {\n _extendStatics153(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeStrokeColorCommand = void 0;\n\n var ChangeStylePropertyCommand_1 = __webpack_require__(74);\n\n var color_1 = __webpack_require__(22);\n\n var ChangeStrokeColorCommand =\n /** @class */\n function (_super) {\n __extends(ChangeStrokeColorCommand, _super);\n\n function ChangeStrokeColorCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeStrokeColorCommand.prototype.processParameter = function (parameter) {\n return color_1.ColorUtils.stringToHash(parameter);\n };\n\n ChangeStrokeColorCommand.prototype.getStyleProperty = function () {\n return \"stroke\";\n };\n\n return ChangeStrokeColorCommand;\n }(ChangeStylePropertyCommand_1.ChangeStylePropertyCommand);\n\n exports.ChangeStrokeColorCommand = ChangeStrokeColorCommand;\n /***/\n },\n /* 247 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics154 = function extendStatics(d, b) {\n _extendStatics154 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics154(d, b);\n };\n\n return function (d, b) {\n _extendStatics154(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TextRightAlignCommand = exports.TextCenterAlignCommand = exports.TextLeftAlignCommand = exports.ChangeTextAlignCommand = void 0;\n\n var ToggleStyleTextPropertyCommand_1 = __webpack_require__(73);\n\n var ChangeTextAlignCommand =\n /** @class */\n function (_super) {\n __extends(ChangeTextAlignCommand, _super);\n\n function ChangeTextAlignCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeTextAlignCommand.prototype.getStyleProperty = function () {\n return \"text-anchor\";\n };\n\n return ChangeTextAlignCommand;\n }(ToggleStyleTextPropertyCommand_1.ToggleStyleTextPropertyCommand);\n\n exports.ChangeTextAlignCommand = ChangeTextAlignCommand;\n\n var TextLeftAlignCommand =\n /** @class */\n function (_super) {\n __extends(TextLeftAlignCommand, _super);\n\n function TextLeftAlignCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TextLeftAlignCommand.prototype.getStylePropertyValue = function () {\n return \"start\";\n };\n\n return TextLeftAlignCommand;\n }(ChangeTextAlignCommand);\n\n exports.TextLeftAlignCommand = TextLeftAlignCommand;\n\n var TextCenterAlignCommand =\n /** @class */\n function (_super) {\n __extends(TextCenterAlignCommand, _super);\n\n function TextCenterAlignCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TextCenterAlignCommand.prototype.getStylePropertyValue = function () {\n return \"middle\";\n };\n\n return TextCenterAlignCommand;\n }(ChangeTextAlignCommand);\n\n exports.TextCenterAlignCommand = TextCenterAlignCommand;\n\n var TextRightAlignCommand =\n /** @class */\n function (_super) {\n __extends(TextRightAlignCommand, _super);\n\n function TextRightAlignCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n TextRightAlignCommand.prototype.getStylePropertyValue = function () {\n return \"end\";\n };\n\n return TextRightAlignCommand;\n }(ChangeTextAlignCommand);\n\n exports.TextRightAlignCommand = TextRightAlignCommand;\n /***/\n },\n /* 248 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics155 = function extendStatics(d, b) {\n _extendStatics155 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics155(d, b);\n };\n\n return function (d, b) {\n _extendStatics155(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectorEndLineEndingCommand = exports.ChangeConnectorStartLineEndingCommand = void 0;\n\n var ChangeConnectorPropertyCommand_1 = __webpack_require__(137);\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n var ChangeConnectorStartLineEndingCommand =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorStartLineEndingCommand, _super);\n\n function ChangeConnectorStartLineEndingCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeConnectorStartLineEndingCommand.prototype.getPropertyName = function () {\n return \"startLineEnding\";\n };\n\n ChangeConnectorStartLineEndingCommand.prototype.getPropertyDefaultValue = function () {\n return ConnectorProperties_1.ConnectorLineEnding.None;\n };\n\n return ChangeConnectorStartLineEndingCommand;\n }(ChangeConnectorPropertyCommand_1.ChangeConnectorPropertyCommand);\n\n exports.ChangeConnectorStartLineEndingCommand = ChangeConnectorStartLineEndingCommand;\n\n var ChangeConnectorEndLineEndingCommand =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorEndLineEndingCommand, _super);\n\n function ChangeConnectorEndLineEndingCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeConnectorEndLineEndingCommand.prototype.getPropertyName = function () {\n return \"endLineEnding\";\n };\n\n ChangeConnectorEndLineEndingCommand.prototype.getPropertyDefaultValue = function () {\n return ConnectorProperties_1.ConnectorLineEnding.Arrow;\n };\n\n return ChangeConnectorEndLineEndingCommand;\n }(ChangeConnectorPropertyCommand_1.ChangeConnectorPropertyCommand);\n\n exports.ChangeConnectorEndLineEndingCommand = ChangeConnectorEndLineEndingCommand;\n /***/\n },\n /* 249 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics156 = function extendStatics(d, b) {\n _extendStatics156 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics156(d, b);\n };\n\n return function (d, b) {\n _extendStatics156(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectorLineOptionCommand = void 0;\n\n var ChangeConnectorPropertyCommand_1 = __webpack_require__(137);\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n var ChangeConnectorLineOptionCommand =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorLineOptionCommand, _super);\n\n function ChangeConnectorLineOptionCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeConnectorLineOptionCommand.prototype.getPropertyName = function () {\n return \"lineOption\";\n };\n\n ChangeConnectorLineOptionCommand.prototype.getPropertyDefaultValue = function () {\n return ConnectorProperties_1.ConnectorLineOption.Straight;\n };\n\n return ChangeConnectorLineOptionCommand;\n }(ChangeConnectorPropertyCommand_1.ChangeConnectorPropertyCommand);\n\n exports.ChangeConnectorLineOptionCommand = ChangeConnectorLineOptionCommand;\n /***/\n },\n /* 250 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics157 = function extendStatics(d, b) {\n _extendStatics157 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics157(d, b);\n };\n\n return function (d, b) {\n _extendStatics157(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SelectAllCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var SelectAllCommand =\n /** @class */\n function (_super) {\n __extends(SelectAllCommand, _super);\n\n function SelectAllCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SelectAllCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n SelectAllCommand.prototype.executeCore = function (state, parameter) {\n var itemKeys = [];\n this.control.model.iterateItems(function (i) {\n return itemKeys.push(i.key);\n });\n this.control.selection.set(itemKeys);\n return true;\n };\n\n return SelectAllCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.SelectAllCommand = SelectAllCommand;\n /***/\n },\n /* 251 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics158 = function extendStatics(d, b) {\n _extendStatics158 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics158(d, b);\n };\n\n return function (d, b) {\n _extendStatics158(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ScrollIntoViewOnUndoHistoryItem = exports.ScrollIntoViewOnRedoHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ScrollIntoViewOnRedoHistoryItem =\n /** @class */\n function (_super) {\n __extends(ScrollIntoViewOnRedoHistoryItem, _super);\n\n function ScrollIntoViewOnRedoHistoryItem(view, rectangle) {\n var _this = _super.call(this) || this;\n\n _this.view = view;\n _this.rectangle = rectangle;\n _this.view = view;\n _this.rectangle = rectangle.clone();\n return _this;\n }\n\n ScrollIntoViewOnRedoHistoryItem.prototype.redo = function (manipulator) {\n this.view.scrollIntoView(this.rectangle);\n };\n\n ScrollIntoViewOnRedoHistoryItem.prototype.undo = function (manipulator) {};\n\n return ScrollIntoViewOnRedoHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ScrollIntoViewOnRedoHistoryItem = ScrollIntoViewOnRedoHistoryItem;\n\n var ScrollIntoViewOnUndoHistoryItem =\n /** @class */\n function (_super) {\n __extends(ScrollIntoViewOnUndoHistoryItem, _super);\n\n function ScrollIntoViewOnUndoHistoryItem(view, rectangle) {\n var _this = _super.call(this) || this;\n\n _this.view = view;\n _this.rectangle = rectangle;\n _this.view = view;\n _this.rectangle = rectangle.clone();\n return _this;\n }\n\n ScrollIntoViewOnUndoHistoryItem.prototype.redo = function (manipulator) {};\n\n ScrollIntoViewOnUndoHistoryItem.prototype.undo = function (manipulator) {\n this.view.scrollIntoView(this.rectangle);\n };\n\n return ScrollIntoViewOnUndoHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ScrollIntoViewOnUndoHistoryItem = ScrollIntoViewOnUndoHistoryItem;\n /***/\n },\n /* 252 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Tree = void 0;\n\n var Structures_1 = __webpack_require__(39);\n\n var Tree =\n /** @class */\n function () {\n function Tree(root, parentToChildren) {\n var _this = this;\n\n this.childToParent = {};\n this.root = root;\n this.parentToChildren = parentToChildren;\n\n var _loop_1 = function _loop_1(key) {\n if (!Object.prototype.hasOwnProperty.call(parentToChildren, key)) return \"continue\";\n parentToChildren[key].forEach(function (c) {\n return _this.childToParent[c.key] = key;\n });\n };\n\n for (var key in parentToChildren) {\n _loop_1(key);\n }\n }\n\n Tree.prototype.getChildren = function (node) {\n return node && this.parentToChildren[node.key] ? this.parentToChildren[node.key] : [];\n };\n\n Tree.prototype.hasChildren = function (node) {\n return this.parentToChildren[node.key] && this.parentToChildren[node.key].length > 0;\n };\n\n Tree.prototype.iterate = function (callback) {\n this.iterateCore(this.root, 0, callback);\n };\n\n Tree.createSpanningTree = function (component) {\n var rootKey = Tree.findRoot(component);\n var iterator = component.createIterator(Structures_1.ConnectionMode.Outgoing);\n var parentToChildren = {};\n\n iterator.skipEdge = function (e) {\n return e.to === undefined || iterator.isNodeVisited(e.to);\n };\n\n iterator.onNode = function (n) {\n return parentToChildren[n.key] = [];\n };\n\n iterator.onEdge = function (e) {\n var node = component.getNode(e.to);\n node && parentToChildren[e.from].push(node);\n };\n\n iterator.iterate(rootKey);\n return new Tree(component.getNode(rootKey), parentToChildren);\n };\n\n Tree.prototype.iterateCore = function (node, level, callback) {\n var _this = this;\n\n callback(node, level);\n this.getChildren(node).forEach(function (n) {\n return _this.iterateCore(n, level + 1, callback);\n });\n };\n\n Tree.findRoot = function (component) {\n return component.nodes.reduce(function (aggregator, cur) {\n var edges = component.getAdjacentEdges(cur);\n var inc = edges.filter(function (l) {\n return l.to === cur;\n }).length;\n var out = edges.filter(function (l) {\n return l.from === cur;\n }).length;\n\n if (aggregator.candidate === undefined || inc === 0 && aggregator.inc > 0 || aggregator.inc !== 0 && aggregator.out - aggregator.inc < out - inc) {\n aggregator.candidate = cur;\n aggregator.inc = inc;\n aggregator.out = out;\n }\n\n return aggregator;\n }, {\n inc: -1,\n out: -1,\n candidate: undefined\n }).candidate;\n };\n\n return Tree;\n }();\n\n exports.Tree = Tree;\n /***/\n },\n /* 253 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics159 = function extendStatics(d, b) {\n _extendStatics159 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics159(d, b);\n };\n\n return function (d, b) {\n _extendStatics159(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeSnapToGridCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ChangeSnapToGridCommand =\n /** @class */\n function (_super) {\n __extends(ChangeSnapToGridCommand, _super);\n\n function ChangeSnapToGridCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeSnapToGridCommand.prototype.executeCore = function (state, parameter) {\n var newValue = parameter === undefined ? !this.control.settings.snapToGrid : !!parameter;\n\n if (this.control.settings.snapToGrid !== newValue) {\n this.control.settings.snapToGrid = newValue;\n return true;\n }\n\n return false;\n };\n\n ChangeSnapToGridCommand.prototype.getValue = function () {\n return this.control.settings.snapToGrid;\n };\n\n return ChangeSnapToGridCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeSnapToGridCommand = ChangeSnapToGridCommand;\n /***/\n },\n /* 254 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics160 = function extendStatics(d, b) {\n _extendStatics160 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics160(d, b);\n };\n\n return function (d, b) {\n _extendStatics160(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeGridSizeItemsCommand = exports.ChangeGridSizeCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ChangeGridSizeCommand =\n /** @class */\n function (_super) {\n __extends(ChangeGridSizeCommand, _super);\n\n function ChangeGridSizeCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeGridSizeCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ChangeGridSizeCommand.prototype.getValue = function () {\n return this.getModelUnit(this.control.settings.gridSize);\n };\n\n ChangeGridSizeCommand.prototype.executeCore = function (state, parameter) {\n this.control.settings.gridSize = this.getModelUnitTwipsValue(parameter);\n return true;\n };\n\n ChangeGridSizeCommand.prototype.getItems = function () {\n var _this = this;\n\n return this.control.settings.gridSizeItems.map(function (s) {\n return {\n value: _this.getModelUnit(s),\n text: _this.getViewUnitText(s)\n };\n });\n };\n\n return ChangeGridSizeCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeGridSizeCommand = ChangeGridSizeCommand;\n\n var ChangeGridSizeItemsCommand =\n /** @class */\n function (_super) {\n __extends(ChangeGridSizeItemsCommand, _super);\n\n function ChangeGridSizeItemsCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeGridSizeItemsCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ChangeGridSizeItemsCommand.prototype.getValue = function () {\n var _this = this;\n\n return this.control.settings.gridSizeItems.map(function (s) {\n return _this.getModelUnit(s);\n });\n };\n\n ChangeGridSizeItemsCommand.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n this.control.settings.gridSizeItems = parameter.map(function (s) {\n return _this.getModelUnitTwipsValue(s);\n });\n return true;\n };\n\n return ChangeGridSizeItemsCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeGridSizeItemsCommand = ChangeGridSizeItemsCommand;\n /***/\n },\n /* 255 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics161 = function extendStatics(d, b) {\n _extendStatics161 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics161(d, b);\n };\n\n return function (d, b) {\n _extendStatics161(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangePageLandscapeCommand = void 0;\n\n var ChangePagePropertyCommand_1 = __webpack_require__(76);\n\n var ChangePageLandscapeHistoryItem_1 = __webpack_require__(256);\n\n var ChangePageLandscapeCommand =\n /** @class */\n function (_super) {\n __extends(ChangePageLandscapeCommand, _super);\n\n function ChangePageLandscapeCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangePageLandscapeCommand.prototype.getValue = function () {\n return this.control.model.pageLandscape;\n };\n\n ChangePageLandscapeCommand.prototype.createHistoryItems = function (parameter) {\n return [new ChangePageLandscapeHistoryItem_1.ChangePageLandscapeHistoryItem(parameter)];\n };\n\n return ChangePageLandscapeCommand;\n }(ChangePagePropertyCommand_1.ChangePagePropertyCommand);\n\n exports.ChangePageLandscapeCommand = ChangePageLandscapeCommand;\n /***/\n },\n /* 256 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics162 = function extendStatics(d, b) {\n _extendStatics162 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics162(d, b);\n };\n\n return function (d, b) {\n _extendStatics162(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangePageLandscapeHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangePageLandscapeHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangePageLandscapeHistoryItem, _super);\n\n function ChangePageLandscapeHistoryItem(value) {\n var _this = _super.call(this) || this;\n\n _this.value = value;\n return _this;\n }\n\n ChangePageLandscapeHistoryItem.prototype.redo = function (manipulator) {\n this.oldValue = manipulator.model.pageLandscape;\n manipulator.changePageLandscape(this.value);\n };\n\n ChangePageLandscapeHistoryItem.prototype.undo = function (manipulator) {\n manipulator.changePageLandscape(this.oldValue);\n };\n\n return ChangePageLandscapeHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangePageLandscapeHistoryItem = ChangePageLandscapeHistoryItem;\n /***/\n },\n /* 257 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics163 = function extendStatics(d, b) {\n _extendStatics163 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics163(d, b);\n };\n\n return function (d, b) {\n _extendStatics163(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangePageSizeItemsCommand = exports.ChangePageSizeCommand = void 0;\n\n var ChangePagePropertyCommand_1 = __webpack_require__(76);\n\n var size_1 = __webpack_require__(2);\n\n var ChangePageSizeHistoryItem_1 = __webpack_require__(258);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ChangePageSizeCommand =\n /** @class */\n function (_super) {\n __extends(ChangePageSizeCommand, _super);\n\n function ChangePageSizeCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangePageSizeCommand.prototype.getValue = function () {\n return this.getModelUnitSize(this.control.model.pageSize);\n };\n\n ChangePageSizeCommand.prototype.createHistoryItems = function (parameter) {\n return [new ChangePageSizeHistoryItem_1.ChangePageSizeHistoryItem(new size_1.Size(this.getModelUnitTwipsValue(parameter.width), this.getModelUnitTwipsValue(parameter.height)))];\n };\n\n ChangePageSizeCommand.prototype.getItems = function () {\n var _this = this;\n\n return this.control.settings.pageSizeItems.map(function (i) {\n return {\n value: _this.getModelUnitSize(i.size),\n text: i.text.replace(\"{width}\", _this.getViewUnitText(i.size.width)).replace(\"{height}\", _this.getViewUnitText(i.size.height))\n };\n });\n };\n\n ChangePageSizeCommand.prototype.getModelUnitSize = function (size) {\n return new size_1.Size(this.getModelUnit(size.width), this.getModelUnit(size.height));\n };\n\n return ChangePageSizeCommand;\n }(ChangePagePropertyCommand_1.ChangePagePropertyCommand);\n\n exports.ChangePageSizeCommand = ChangePageSizeCommand;\n\n var ChangePageSizeItemsCommand =\n /** @class */\n function (_super) {\n __extends(ChangePageSizeItemsCommand, _super);\n\n function ChangePageSizeItemsCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangePageSizeItemsCommand.prototype.isEnabled = function () {\n return true;\n };\n\n ChangePageSizeItemsCommand.prototype.getValue = function () {\n var _this = this;\n\n return this.control.settings.pageSizeItems.map(function (i) {\n return {\n size: new size_1.Size(_this.getModelUnit(i.width), _this.getModelUnit(i.height)),\n text: i.text\n };\n });\n };\n\n ChangePageSizeItemsCommand.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n this.control.settings.pageSizeItems = parameter.map(function (i) {\n return {\n size: new size_1.Size(_this.getModelUnitTwipsValue(i.width), _this.getModelUnitTwipsValue(i.height)),\n text: i.text\n };\n });\n return true;\n };\n\n return ChangePageSizeItemsCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangePageSizeItemsCommand = ChangePageSizeItemsCommand;\n /***/\n },\n /* 258 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics164 = function extendStatics(d, b) {\n _extendStatics164 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics164(d, b);\n };\n\n return function (d, b) {\n _extendStatics164(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangePageSizeHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangePageSizeHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangePageSizeHistoryItem, _super);\n\n function ChangePageSizeHistoryItem(size) {\n var _this = _super.call(this) || this;\n\n _this.size = size;\n return _this;\n }\n\n ChangePageSizeHistoryItem.prototype.redo = function (manipulator) {\n this.oldSize = manipulator.model.pageSize;\n manipulator.changePageSize(this.size);\n };\n\n ChangePageSizeHistoryItem.prototype.undo = function (manipulator) {\n manipulator.changePageSize(this.oldSize);\n };\n\n return ChangePageSizeHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangePageSizeHistoryItem = ChangePageSizeHistoryItem;\n /***/\n },\n /* 259 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics165 = function extendStatics(d, b) {\n _extendStatics165 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics165(d, b);\n };\n\n return function (d, b) {\n _extendStatics165(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExportPngCommand = void 0;\n\n var ExportImageCommand_1 = __webpack_require__(98);\n\n var ExportPngCommand =\n /** @class */\n function (_super) {\n __extends(ExportPngCommand, _super);\n\n function ExportPngCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ExportPngCommand.prototype.getExtension = function () {\n return \"png\";\n };\n\n ExportPngCommand.prototype.getExportFunc = function () {\n return this.exporter.exportPng;\n };\n\n return ExportPngCommand;\n }(ExportImageCommand_1.ExportImageCommand);\n\n exports.ExportPngCommand = ExportPngCommand;\n /***/\n },\n /* 260 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics166 = function extendStatics(d, b) {\n _extendStatics166 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics166(d, b);\n };\n\n return function (d, b) {\n _extendStatics166(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n var __awaiter = this && this.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n };\n\n var __generator = this && this.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n };\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CanvasExportManager = void 0;\n\n var unit_converter_1 = __webpack_require__(11);\n\n var browser_1 = __webpack_require__(19);\n\n var Utils_1 = __webpack_require__(17);\n\n var CanvasManagerBase_1 = __webpack_require__(43);\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var DOMManipulator_1 = __webpack_require__(100);\n\n var color_1 = __webpack_require__(22);\n\n var EXPORT_IMAGE_QUALITY = 1;\n\n var CanvasExportManager =\n /** @class */\n function (_super) {\n __extends(CanvasExportManager, _super);\n\n function CanvasExportManager(itemsContainer, measurer) {\n var _this = _super.call(this, 1, new DOMManipulator_1.ExportDOMManipulator(measurer)) || this;\n\n _this.itemsContainer = itemsContainer;\n return _this;\n }\n\n CanvasExportManager.prototype.getSvgImage = function (modelSize, pageColor, exportAsInline, exportForBinaryImage) {\n var svgEl = RenderHelper_1.RenderHelper.createSvgElement(undefined, true);\n var modelAbsSize = modelSize.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF).clone().applyConverter(Math.ceil);\n Utils_1.RenderUtils.updateSvgElementSize(svgEl, modelAbsSize.width, modelAbsSize.height, true);\n svgEl.style.backgroundColor = color_1.ColorUtils.colorToHash(pageColor);\n this.createTextFloodFilter(undefined, svgEl, pageColor);\n var exportCssRules = !exportAsInline && !browser_1.Browser.IE && this.getExportCssRules();\n\n if (exportCssRules) {\n var style = document.createElementNS(RenderHelper_1.svgNS, \"style\");\n style.innerHTML = exportCssRules;\n svgEl.appendChild(style);\n }\n\n if (exportForBinaryImage) {\n // Only for IE11, fix for canvg.Canvg\n var bk = document.createElementNS(RenderHelper_1.svgNS, \"rect\");\n bk.setAttributeNS(null, \"x\", \"0\");\n bk.setAttributeNS(null, \"y\", \"0\");\n bk.setAttributeNS(null, \"height\", modelAbsSize.height.toString());\n bk.setAttributeNS(null, \"width\", modelAbsSize.width.toString());\n bk.setAttributeNS(null, \"fill\", svgEl.style.backgroundColor);\n svgEl.appendChild(bk);\n }\n\n for (var i = 0; i < this.itemsContainer.childNodes.length; i++) {\n var node = this.itemsContainer.childNodes[i].cloneNode(true);\n if (!exportCssRules) this.inlineStyle(node, this.itemsContainer.childNodes[i]);\n svgEl.appendChild(node);\n }\n\n return svgEl;\n };\n\n CanvasExportManager.prototype.getSvgImageUrl = function (modelSize, pageColor, exportAsInline) {\n var svgEl = this.getSvgImage(modelSize, pageColor, exportAsInline, false);\n return this.getSvgBase64String(svgEl);\n };\n\n CanvasExportManager.prototype.getSvgString = function (svgElement) {\n return new XMLSerializer().serializeToString(svgElement);\n };\n\n CanvasExportManager.prototype.getSvgBase64String = function (svgElement) {\n var xml = this.getSvgString(svgElement);\n return CanvasExportManager.base64Start + this.getBase64EncodeUnicode(xml);\n };\n\n CanvasExportManager.prototype.getBase64EncodeUnicode = function (s) {\n return btoa(encodeURIComponent(s).replace(/%([0-9A-F]{2})/g, function (match, p1) {\n return String.fromCharCode(parseInt(\"0x\" + p1, 16));\n }));\n };\n\n CanvasExportManager.prototype.getExportCssRules = function () {\n for (var i = 0; i < document.styleSheets.length; i++) {\n var rules = this.getRules(document.styleSheets[i]);\n\n if (rules) {\n var cssText = \"\";\n\n for (var j = 0; j < rules.length; j++) {\n var rule = rules[j];\n var selectorText = this.isCSSStyleRule(rule) ? rule.selectorText : null;\n if (selectorText && this.checkSelector(selectorText)) cssText += rule.cssText + \"\\n\";\n }\n\n if (cssText.length > 0) return \"\\n\" + cssText;\n }\n }\n };\n\n CanvasExportManager.prototype.checkSelector = function (selectorText) {\n for (var i = 0; i < CanvasExportManager.exportStyleRules.length; i++) {\n if (selectorText.indexOf(CanvasExportManager.exportStyleRules[i]) === 0) return true;\n }\n\n return false;\n };\n\n CanvasExportManager.prototype.getRules = function (styleSheet) {\n try {\n return this.isCSSStyleSheet(styleSheet) ? styleSheet.rules || styleSheet.cssRules : null;\n } catch (_a) {} // Catch access dinied exception\n\n };\n\n CanvasExportManager.prototype.isCSSStyleSheet = function (stylesheet) {\n return stylesheet.rules !== undefined;\n };\n\n CanvasExportManager.prototype.isCSSStyleRule = function (rule) {\n return rule.selectorText !== undefined;\n };\n\n CanvasExportManager.prototype.inlineStyle = function (destNode, srcNode) {\n for (var i = 0; i < destNode.childNodes.length; i++) {\n var child = destNode.childNodes[i];\n if (!child.tagName) continue;\n if (child.tagName === \"g\") this.inlineStyle(child, srcNode.childNodes[i]);else if (child.style) {\n var style = window.getComputedStyle(srcNode.childNodes[i]);\n if (style !== undefined) for (var index = 0; index < CanvasExportManager.exportStyleAttributes.length; index++) {\n var styleProperty = CanvasExportManager.exportStyleAttributes[index];\n child.style.setProperty(styleProperty, style.getPropertyValue(styleProperty));\n }\n this.inlineStyle(child, srcNode.childNodes[i]);\n }\n }\n };\n\n CanvasExportManager.prototype.exportSvgImage = function (modelSize, pageColor, callback) {\n callback(this.getSvgImageUrl(modelSize, pageColor, true));\n };\n\n CanvasExportManager.prototype.exportBinaryImage = function (modelSize, pageColor, mimeType, callback) {\n var modelAbsSize = this.getAbsoluteSize(modelSize).clone().applyConverter(Math.ceil);\n var canvasEl = document.createElement(\"canvas\");\n canvasEl.width = modelAbsSize.width;\n canvasEl.height = modelAbsSize.height;\n var ctx = canvasEl.getContext(\"2d\");\n ctx.fillStyle = color_1.ColorUtils.colorToHash(pageColor);\n ctx.fillRect(0, 0, modelAbsSize.width, modelAbsSize.height);\n if (browser_1.Browser.IE && typeof canvg === \"object\") this.exportBinaryImageCanvgAsync(modelSize, pageColor, canvasEl, ctx, mimeType).then(function (dataUrl) {\n return callback(dataUrl);\n });else if (browser_1.Browser.IE && typeof canvg === \"function\") this.exportBinaryImageCanvgOld(modelSize, pageColor, canvasEl, ctx, mimeType, callback);else {\n var imgEl_1 = new Image();\n imgEl_1.width = modelAbsSize.width;\n imgEl_1.height = modelAbsSize.height;\n imgEl_1.setAttribute(\"crossOrigin\", \"anonymous\");\n\n imgEl_1.onload = function () {\n ctx.drawImage(imgEl_1, 0, 0);\n callback(canvasEl.toDataURL(mimeType, EXPORT_IMAGE_QUALITY));\n };\n\n imgEl_1.src = this.getSvgImageUrl(modelSize, pageColor, true);\n }\n };\n\n CanvasExportManager.prototype.exportBinaryImageCanvgOld = function (modelSize, pageColor, canvasEl, ctx, mimeType, callback) {\n var svgEl = this.getSvgImage(modelSize, pageColor, true, false);\n var svgStr = this.getSvgString(svgEl);\n ctx[\"drawSvg\"](svgStr, 0, 0, null, null, {\n renderCallback: function renderCallback() {\n callback(canvasEl.toDataURL(mimeType, EXPORT_IMAGE_QUALITY));\n }\n });\n };\n\n CanvasExportManager.prototype.exportBinaryImageCanvgAsync = function (modelSize, pageColor, canvas, ctx, mimeType) {\n return __awaiter(this, void 0, void 0, function () {\n var svgEl, svgStr, v;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n svgEl = this.getSvgImage(modelSize, pageColor, true, true);\n svgStr = this.getSvgString(svgEl);\n v = canvg.Canvg.fromString(ctx, svgStr);\n return [4\n /*yield*/\n , v.render()];\n\n case 1:\n _a.sent();\n\n return [2\n /*return*/\n , canvas.toDataURL(mimeType, EXPORT_IMAGE_QUALITY)];\n }\n });\n });\n };\n\n CanvasExportManager.prototype.exportPngImage = function (modelSize, pageColor, callback) {\n this.exportBinaryImage(modelSize, pageColor, \"image/png\", callback);\n };\n\n CanvasExportManager.prototype.exportJpgImage = function (modelSize, pageColor, callback) {\n this.exportBinaryImage(modelSize, pageColor, \"image/jpeg\", callback);\n };\n\n CanvasExportManager.prototype.notifyModelChanged = function (changes) {};\n\n CanvasExportManager.prototype.notifyPageColorChanged = function (color) {};\n\n CanvasExportManager.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) {};\n\n CanvasExportManager.base64Start = \"data:image/svg+xml;base64,\";\n CanvasExportManager.exportStyleRules = [\".dxdi-canvas .shape \", \".dxdi-canvas .connector \", \".dxdi-canvas text\", \".dxdi-canvas.export\"];\n CanvasExportManager.exportStyleAttributes = [\"fill\", \"stroke\", \"stroke-width\", \"stroke-linejoin\", \"font-family\", \"font-size\", \"font-weight\", \"font-style\", \"text-decoration\", \"text-anchor\"];\n return CanvasExportManager;\n }(CanvasManagerBase_1.CanvasManagerBase);\n\n exports.CanvasExportManager = CanvasExportManager;\n /***/\n },\n /* 261 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics167 = function extendStatics(d, b) {\n _extendStatics167 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics167(d, b);\n };\n\n return function (d, b) {\n _extendStatics167(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExportSvgCommand = void 0;\n\n var ExportImageCommand_1 = __webpack_require__(98);\n\n var ExportSvgCommand =\n /** @class */\n function (_super) {\n __extends(ExportSvgCommand, _super);\n\n function ExportSvgCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ExportSvgCommand.prototype.getExtension = function () {\n return \"svg\";\n };\n\n ExportSvgCommand.prototype.getExportFunc = function () {\n return this.exporter.exportSvg;\n };\n\n return ExportSvgCommand;\n }(ExportImageCommand_1.ExportImageCommand);\n\n exports.ExportSvgCommand = ExportSvgCommand;\n /***/\n },\n /* 262 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics168 = function extendStatics(d, b) {\n _extendStatics168 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics168(d, b);\n };\n\n return function (d, b) {\n _extendStatics168(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ExportJpgCommand = void 0;\n\n var ExportImageCommand_1 = __webpack_require__(98);\n\n var ExportJpgCommand =\n /** @class */\n function (_super) {\n __extends(ExportJpgCommand, _super);\n\n function ExportJpgCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ExportJpgCommand.prototype.getExtension = function () {\n return \"jpg\";\n };\n\n ExportJpgCommand.prototype.getExportFunc = function () {\n return this.exporter.exportJpg;\n };\n\n return ExportJpgCommand;\n }(ExportImageCommand_1.ExportImageCommand);\n\n exports.ExportJpgCommand = ExportJpgCommand;\n /***/\n },\n /* 263 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics169 = function extendStatics(d, b) {\n _extendStatics169 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics169(d, b);\n };\n\n return function (d, b) {\n _extendStatics169(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CopySelectionCommand = void 0;\n\n var Exporter_1 = __webpack_require__(72);\n\n var ClipboardCommand_1 = __webpack_require__(101);\n\n var CopySelectionCommand =\n /** @class */\n function (_super) {\n __extends(CopySelectionCommand, _super);\n\n function CopySelectionCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CopySelectionCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && !this.control.selection.isEmpty(true);\n };\n\n CopySelectionCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n CopySelectionCommand.prototype.executeCore = function (state) {\n var exporter = new Exporter_1.Exporter();\n var data = exporter.exportItems(this.control.selection.getSelectedItems(true, true));\n this.setClipboardData(data);\n return true;\n };\n\n return CopySelectionCommand;\n }(ClipboardCommand_1.ClipboardCommand);\n\n exports.CopySelectionCommand = CopySelectionCommand;\n /***/\n },\n /* 264 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics170 = function extendStatics(d, b) {\n _extendStatics170 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics170(d, b);\n };\n\n return function (d, b) {\n _extendStatics170(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CutSelectionCommand = void 0;\n\n var Exporter_1 = __webpack_require__(72);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ClipboardCommand_1 = __webpack_require__(101);\n\n var CutSelectionCommand =\n /** @class */\n function (_super) {\n __extends(CutSelectionCommand, _super);\n\n function CutSelectionCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CutSelectionCommand.prototype.isEnabled = function () {\n var items = this.control.selection.getSelectedItems();\n return _super.prototype.isEnabled.call(this) && items.length && (items.length > 1 || this.permissionsProvider.canDeleteItems(items));\n };\n\n CutSelectionCommand.prototype.executeCore = function (state) {\n var exporter = new Exporter_1.Exporter();\n var items = this.control.selection.getSelectedItems(true, true);\n var data = exporter.exportItems(items);\n this.permissionsProvider.beginDeleteItems(items);\n this.setClipboardData(data);\n ModelUtils_1.ModelUtils.deleteSelection(this.control.history, this.control.model, this.control.selection);\n this.permissionsProvider.endDeleteItems();\n return true;\n };\n\n Object.defineProperty(CutSelectionCommand.prototype, \"isPermissionsRequired\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n return CutSelectionCommand;\n }(ClipboardCommand_1.ClipboardCommand);\n\n exports.CutSelectionCommand = CutSelectionCommand;\n /***/\n },\n /* 265 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics171 = function extendStatics(d, b) {\n _extendStatics171 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics171(d, b);\n };\n\n return function (d, b) {\n _extendStatics171(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PasteSelectionCommand = void 0;\n\n var PasteSelectoinCommandBase_1 = __webpack_require__(142);\n\n var PasteSelectionCommand =\n /** @class */\n function (_super) {\n __extends(PasteSelectionCommand, _super);\n\n function PasteSelectionCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n PasteSelectionCommand.prototype.getShapeNewPosition = function (position) {\n return PasteSelectoinCommandBase_1.PasteSelectionCommandBase.getShapeNewPosition(this.control.model, position);\n };\n\n PasteSelectionCommand.prototype.changeConnectorPoints = function (connector) {\n PasteSelectoinCommandBase_1.PasteSelectionCommandBase.changeConnectorPoints(this.control.model, connector);\n };\n\n return PasteSelectionCommand;\n }(PasteSelectoinCommandBase_1.PasteSelectionCommandBase);\n\n exports.PasteSelectionCommand = PasteSelectionCommand;\n /***/\n },\n /* 266 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics172 = function extendStatics(d, b) {\n _extendStatics172 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics172(d, b);\n };\n\n return function (d, b) {\n _extendStatics172(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImportShapeHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ImportShapeHistoryItem =\n /** @class */\n function (_super) {\n __extends(ImportShapeHistoryItem, _super);\n\n function ImportShapeHistoryItem(shape) {\n var _this = _super.call(this) || this;\n\n _this.shape = shape;\n return _this;\n }\n\n ImportShapeHistoryItem.prototype.redo = function (manipulator) {\n this.shapeKey = this.shape.key;\n manipulator.insertShape(this.shape);\n };\n\n ImportShapeHistoryItem.prototype.undo = function (manipulator) {\n manipulator.removeShape(manipulator.model.findShape(this.shapeKey), true);\n };\n\n return ImportShapeHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ImportShapeHistoryItem = ImportShapeHistoryItem;\n /***/\n },\n /* 267 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics173 = function extendStatics(d, b) {\n _extendStatics173 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics173(d, b);\n };\n\n return function (d, b) {\n _extendStatics173(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImportConnectorHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ImportConnectorHistoryItem =\n /** @class */\n function (_super) {\n __extends(ImportConnectorHistoryItem, _super);\n\n function ImportConnectorHistoryItem(connector) {\n var _this = _super.call(this) || this;\n\n _this.connector = connector;\n return _this;\n }\n\n ImportConnectorHistoryItem.prototype.redo = function (manipulator) {\n this.connectorKey = this.connector.key;\n manipulator.insertConnector(this.connector);\n };\n\n ImportConnectorHistoryItem.prototype.undo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.removeConnector(connector);\n };\n\n return ImportConnectorHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ImportConnectorHistoryItem = ImportConnectorHistoryItem;\n /***/\n },\n /* 268 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics174 = function extendStatics(d, b) {\n _extendStatics174 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics174(d, b);\n };\n\n return function (d, b) {\n _extendStatics174(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImportBPMNCommand = void 0;\n\n var BPMNImporter_1 = __webpack_require__(269);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var AddShapeHistoryItem_1 = __webpack_require__(53);\n\n var point_1 = __webpack_require__(1);\n\n var Connector_1 = __webpack_require__(6);\n\n var AddConnectorHistoryItem_1 = __webpack_require__(64);\n\n var AddConnectionHistoryItem_1 = __webpack_require__(49);\n\n var Sugiyama_1 = __webpack_require__(79);\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var ExportImportCommandBase_1 = __webpack_require__(56);\n\n var ImportBPMNCommand =\n /** @class */\n function (_super) {\n __extends(ImportBPMNCommand, _super);\n\n function ImportBPMNCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ImportBPMNCommand.prototype.executeCore = function (state, parameter) {\n var importer = new BPMNImporter_1.BPMNImporter(parameter);\n var graph = importer.import();\n this.updateModel(graph);\n return true;\n };\n\n ImportBPMNCommand.prototype.updateModel = function (graph) {\n var _this = this;\n\n var externalKeyToModelKey = {};\n var shapes = [];\n var connectors = [];\n this.control.history.beginTransaction();\n graph.items.forEach(function (node) {\n var insert = new AddShapeHistoryItem_1.AddShapeHistoryItem(_this.getShapeDescription(node.type), new point_1.Point(0, 0), node.text, node.key);\n\n _this.control.history.addAndRedo(insert);\n\n externalKeyToModelKey[node.key] = insert.shapeKey;\n\n var shape = _this.control.model.findShape(insert.shapeKey);\n\n shapes.push(shape);\n });\n graph.edges.forEach(function (edge) {\n var from = _this.control.model.findShape(externalKeyToModelKey[edge.from]);\n\n var to = _this.control.model.findShape(externalKeyToModelKey[edge.to]);\n\n var insert = new AddConnectorHistoryItem_1.AddConnectorHistoryItem([from.getConnectionPointPosition(0), to.getConnectionPointPosition(0)]);\n\n _this.control.history.addAndRedo(insert);\n\n var connector = _this.control.model.findConnector(insert.connectorKey);\n\n _this.control.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(connector, from, 0, Connector_1.ConnectorPosition.Begin));\n\n _this.control.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(connector, to, 0, Connector_1.ConnectorPosition.End));\n\n connectors.push(connector);\n });\n var settings = new LayoutSettings_1.LayoutSettings();\n var graphInfo = ModelUtils_1.ModelUtils.getGraphInfoByItems(this.control.model, shapes, connectors);\n graphInfo.forEach(function (info) {\n var layout = new Sugiyama_1.SugiyamaLayoutBuilder(settings, info.graph).build();\n var nonGraphItems = ModelUtils_1.ModelUtils.getNonGraphItems(_this.control.model, info.container, layout.nodeToLayout, shapes, connectors);\n ModelUtils_1.ModelUtils.applyLayout(_this.control.history, _this.control.model, undefined, info.graph, layout, nonGraphItems, settings, _this.control.settings.snapToGrid, _this.control.settings.gridSize, false);\n });\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\n this.control.history.endTransaction();\n };\n\n ImportBPMNCommand.prototype.getShapeDescription = function (shapeType) {\n return this.control.shapeDescriptionManager.get(shapeType);\n };\n\n return ImportBPMNCommand;\n }(ExportImportCommandBase_1.ExportImportCommandBase);\n\n exports.ImportBPMNCommand = ImportBPMNCommand;\n /***/\n },\n /* 269 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics175 = function extendStatics(d, b) {\n _extendStatics175 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics175(d, b);\n };\n\n return function (d, b) {\n _extendStatics175(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BPMNNode = exports.BPMNImporter = void 0;\n\n var Graph_1 = __webpack_require__(69);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var Structures_1 = __webpack_require__(39);\n\n var ImportUtils_1 = __webpack_require__(95);\n\n var BPMNImporter =\n /** @class */\n function () {\n function BPMNImporter(xml) {\n this.doc = ImportUtils_1.ImportUtils.createDocument(xml);\n this.graph = new Graph_1.Graph([], []);\n }\n\n BPMNImporter.prototype.import = function () {\n for (var child = void 0, i = 0; child = this.doc.children[i]; i++) {\n if (child.nodeName.toUpperCase() === \"DEFINITIONS\") this.onDefinitionsElement(child);\n }\n\n this.validate();\n return this.graph;\n };\n\n BPMNImporter.prototype.validate = function () {\n var nodesMap = {};\n this.graph.nodes.forEach(function (n) {\n return nodesMap[n] = true;\n });\n\n for (var i = 0, edge = void 0; edge = this.graph.edges[i]; i++) {\n if (!nodesMap[edge.from] || !nodesMap[edge.to]) {\n this.graph.edges.splice(i, 1);\n i--;\n }\n }\n };\n\n BPMNImporter.prototype.onDefinitionsElement = function (element) {\n this.dataSourceKey = element.getAttribute(\"id\");\n\n for (var child = void 0, i = 0; child = element.children[i]; i++) {\n if (child.nodeName.toUpperCase() === \"PROCESS\") this.onProcessElement(child);\n }\n };\n\n BPMNImporter.prototype.onProcessElement = function (element) {\n for (var child = void 0, i = 0; child = element.children[i]; i++) {\n switch (child.nodeName.toUpperCase()) {\n case \"STARTEVENT\":\n this.onStartEventElement(child);\n break;\n\n case \"SEQUENCEFLOW\":\n this.onSequenceFlowElement(child);\n break;\n\n case \"SCRIPTTASK\":\n this.onScriptTaskElement(child);\n break;\n\n case \"USERTASK\":\n this.onUserTaskElement(child);\n break;\n\n case \"SERVICETASK\":\n this.onServiceTaskElement(child);\n break;\n\n case \"SENDTASK\":\n this.onSendTaskElement(child);\n break;\n\n case \"EXCLUSIVEGATEWAY\":\n this.onExclusiveGateway(child);\n break;\n\n case \"ENDEVENT\":\n this.onEndEventGateway(child);\n break;\n }\n }\n };\n\n BPMNImporter.prototype.onStartEventElement = function (element) {\n var node = this.createNode(element);\n node.type = ShapeTypes_1.ShapeTypes.Ellipse;\n node.text = element.getAttribute(\"name\");\n this.graph.addNode(node);\n };\n\n BPMNImporter.prototype.onSequenceFlowElement = function (element) {\n var fromKey = element.getAttribute(\"sourceRef\");\n var toKey = element.getAttribute(\"targetRef\");\n var edge = this.createEdge(element, fromKey, toKey);\n if (element.hasAttribute(\"name\")) edge.text = element.getAttribute(\"name\");\n this.graph.addEdge(edge);\n };\n\n BPMNImporter.prototype.onScriptTaskElement = function (element) {\n var node = this.createNode(element);\n node.text = element.getAttribute(\"name\");\n this.graph.addNode(node);\n };\n\n BPMNImporter.prototype.onUserTaskElement = function (element) {\n var node = this.createNode(element);\n node.text = element.getAttribute(\"name\");\n this.graph.addNode(node);\n };\n\n BPMNImporter.prototype.onServiceTaskElement = function (element) {\n var node = this.createNode(element);\n node.text = element.getAttribute(\"name\");\n this.graph.addNode(node);\n };\n\n BPMNImporter.prototype.onSendTaskElement = function (element) {\n var node = this.createNode(element);\n node.text = element.getAttribute(\"name\");\n this.graph.addNode(node);\n };\n\n BPMNImporter.prototype.onExclusiveGateway = function (element) {\n var node = this.createNode(element);\n node.text = element.getAttribute(\"name\");\n node.type = ShapeTypes_1.ShapeTypes.Decision;\n this.graph.addNode(node);\n };\n\n BPMNImporter.prototype.onEndEventGateway = function (element) {\n var node = this.createNode(element);\n node.text = element.getAttribute(\"name\");\n node.type = ShapeTypes_1.ShapeTypes.Ellipse;\n this.graph.addNode(node);\n };\n\n BPMNImporter.prototype.createNode = function (element) {\n return new BPMNNode(this.dataSourceKey, element.getAttribute(\"id\"));\n };\n\n BPMNImporter.prototype.createEdge = function (element, fromKey, toKey) {\n return new BPMNEdge(this.dataSourceKey, element.getAttribute(\"id\"), fromKey, toKey);\n };\n\n return BPMNImporter;\n }();\n\n exports.BPMNImporter = BPMNImporter;\n\n var BPMNNode =\n /** @class */\n function () {\n function BPMNNode(sourceKey, key) {\n this.sourceKey = sourceKey;\n this.key = key;\n this.type = ShapeTypes_1.ShapeTypes.Rectangle;\n }\n\n return BPMNNode;\n }();\n\n exports.BPMNNode = BPMNNode;\n\n var BPMNEdge =\n /** @class */\n function (_super) {\n __extends(BPMNEdge, _super);\n\n function BPMNEdge(sourceKey, key, fromKey, toKey) {\n var _this = _super.call(this, key, fromKey, toKey) || this;\n\n _this.sourceKey = sourceKey;\n return _this;\n }\n\n return BPMNEdge;\n }(Structures_1.Edge);\n /***/\n\n },\n /* 270 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CycleRemover = void 0;\n\n var Graph_1 = __webpack_require__(69);\n\n var Structures_1 = __webpack_require__(39);\n\n var ListUtils_1 = __webpack_require__(90);\n\n var CycleRemover =\n /** @class */\n function () {\n function CycleRemover() {}\n\n CycleRemover.removeCycles = function (graph) {\n var feedbackSet = this.getFeedbackSet(graph);\n return this.reverseEdges(graph, feedbackSet);\n };\n\n CycleRemover.getFeedbackSet = function (graph) {\n var _this = this;\n\n var feedbackSet = {};\n var nonTrivialStronglyConnectedComponents = this.getNonTrivialStronglyConnectedComponents(graph);\n\n while (nonTrivialStronglyConnectedComponents.length) {\n nonTrivialStronglyConnectedComponents.forEach(function (g) {\n var maxCyclicEdges = _this.getMaxCyclicEdges(g);\n\n maxCyclicEdges.forEach(function (e) {\n return delete feedbackSet[e.reverse().getHashKey()];\n });\n maxCyclicEdges.forEach(function (e) {\n return feedbackSet[e.getHashKey()] = true;\n });\n });\n nonTrivialStronglyConnectedComponents = this.getNonTrivialStronglyConnectedComponents(this.reverseEdges(graph, feedbackSet).graph);\n }\n\n return feedbackSet;\n };\n\n CycleRemover.getMaxCyclicEdges = function (graph) {\n var black = {};\n var gray = {};\n var edgeCycleCount = {};\n var visitedEdges = [];\n var cycles = [];\n var iterator = graph.createIterator(Structures_1.ConnectionMode.Outgoing);\n iterator.visitEachEdgeOnce = false;\n\n iterator.onNode = function (n) {\n gray[n.key] = true;\n };\n\n iterator.skipNode = function (n) {\n if (gray[n.key]) {\n var cycle = [];\n\n for (var i = 0; i < visitedEdges.length; i++) {\n var e = visitedEdges[i];\n if (edgeCycleCount[e.key] === undefined) edgeCycleCount[e.key] = 0;\n edgeCycleCount[e.key]++;\n cycle.push(e);\n if (e.from === n.key) break;\n }\n\n cycles.push(cycle);\n }\n\n return gray[n.key] || black[n.key];\n };\n\n iterator.skipEdge = function (e) {\n return false;\n };\n\n iterator.onEdge = function (e) {\n visitedEdges.splice(0, 0, e);\n };\n\n iterator.onAfterEdge = function (e) {\n visitedEdges.splice(0, 1);\n };\n\n iterator.onAllEdges = function (e) {\n black[e.key] = true;\n gray[e.key] = false;\n };\n\n iterator.iterate(graph.nodes[0]);\n var edgeSet = new ListUtils_1.HashSet([], function (e) {\n return e.key;\n });\n cycles.forEach(function (c) {\n edgeSet.tryPush(c.reduce(function (max, curr) {\n return edgeCycleCount[curr.key] > edgeCycleCount[max.key] ? curr : max;\n }, c[0]));\n });\n return edgeSet.list();\n };\n\n CycleRemover.reverseEdges = function (graph, feedbackSet) {\n var edges = new ListUtils_1.HashSet([], function (e) {\n return e.getHashKey();\n });\n var reversedEdges = {};\n var removedEdges = {};\n graph.edges.forEach(function (e) {\n if (feedbackSet[e.getHashKey()]) {\n e = e.reverse();\n reversedEdges[e.key] = true;\n }\n\n if (!edges.tryPush(e)) {\n removedEdges[e.key] = true;\n delete reversedEdges[e.key];\n }\n });\n return {\n graph: new Graph_1.Graph(graph.nodes.map(function (n) {\n return graph.getNode(n);\n }), edges.list()),\n reversedEdges: reversedEdges,\n removedEdges: removedEdges\n };\n };\n\n CycleRemover.getNonTrivialStronglyConnectedComponents = function (graph) {\n return this.getStronglyConnectedComponents(graph).filter(function (g) {\n return g.edges.length;\n });\n };\n\n CycleRemover.getStronglyConnectedComponents = function (graph) {\n var _this = this; // Tarjan algorithm\n // https://en.wikipedia.org/wiki/Tarjan%27s_strongly_connected_components_algorithm\n\n\n var nodesStack = [];\n var index = 0;\n var lowIndex = {};\n var lowLink = {};\n var onStack = {};\n var components = [];\n var visitedNodes = {};\n\n for (var i = 0; i < graph.nodes.length; i++) {\n var nodeKey = graph.nodes[i];\n var iterator = graph.createIterator(Structures_1.ConnectionMode.Outgoing);\n iterator.visitEachEdgeOnce = false;\n iterator.visitEachNodeOnce = false;\n\n iterator.onNode = function (n) {\n visitedNodes[n.key] = true;\n nodesStack.push(n);\n onStack[n.key] = true;\n lowLink[n.key] = index;\n lowIndex[n.key] = index;\n index++;\n };\n\n iterator.skipNode = function (n) {\n return visitedNodes[n.key];\n };\n\n iterator.skipEdge = function (e) {\n var isVisited = visitedNodes[e.to];\n if (isVisited && onStack[e.to]) lowLink[e.from] = Math.min(lowLink[e.from], lowIndex[e.to]);\n return isVisited;\n };\n\n iterator.onAfterEdge = function (e) {\n lowLink[e.from] = Math.min(lowLink[e.from], lowLink[e.to]);\n };\n\n iterator.onAllEdges = function (n, outgoing) {\n if (outgoing && lowLink[n.key] === lowIndex[n.key]) components.push(_this.getStronglyConnectedComponent(graph, n, nodesStack, onStack));\n };\n\n iterator.iterate(nodeKey);\n }\n\n return components;\n };\n\n CycleRemover.getStronglyConnectedComponent = function (graph, root, nodesStack, onStack) {\n var itemsMap = {};\n var nodes = [];\n var edges = [];\n var topStackNode;\n\n do {\n topStackNode = nodesStack.pop();\n if (!itemsMap[topStackNode.key]) nodes.push(topStackNode);\n itemsMap[topStackNode.key] = true;\n onStack[topStackNode.key] = false;\n } while (topStackNode !== root);\n\n nodes.forEach(function (n) {\n var aEdges = graph.getAdjacentEdges(n.key, Structures_1.ConnectionMode.Outgoing);\n edges = edges.concat(aEdges.filter(function (e) {\n return !itemsMap[e.key] && itemsMap[e.to];\n }));\n aEdges.forEach(function (e) {\n return itemsMap[e.key] = true;\n });\n });\n return new Graph_1.Graph(nodes, edges);\n };\n\n return CycleRemover;\n }();\n\n exports.CycleRemover = CycleRemover;\n /***/\n },\n /* 271 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics176 = function extendStatics(d, b) {\n _extendStatics176 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics176(d, b);\n };\n\n return function (d, b) {\n _extendStatics176(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SendToBackCommand = void 0;\n\n var ChangeZindexHistoryItem_1 = __webpack_require__(102);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var SendToBackCommand =\n /** @class */\n function (_super) {\n __extends(SendToBackCommand, _super);\n\n function SendToBackCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SendToBackCommand.prototype.isEnabled = function () {\n var items = this.control.selection.getSelectedItems();\n return _super.prototype.isEnabled.call(this) && items.length > 0 && this.needSendToBack(items);\n };\n\n SendToBackCommand.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n this.control.history.beginTransaction();\n var items = this.control.selection.getSelectedItems();\n items.forEach(function (item) {\n var newZIndex = _this.control.model.getIntersectItemsMinZIndex(item) - 1;\n\n _this.control.history.addAndRedo(new ChangeZindexHistoryItem_1.ChangeZindexHistoryItem(item, newZIndex));\n });\n this.control.history.endTransaction();\n return true;\n };\n\n SendToBackCommand.prototype.needSendToBack = function (items) {\n var _this = this;\n\n var _loop_1 = function _loop_1(i) {\n var zIndex = this_1.control.model.getIntersectItemsMinZIndex(items[i]);\n if (zIndex < items[i].zIndex) return {\n value: true\n };\n\n if (zIndex === items[i].zIndex) {\n var result_1 = false;\n var sameZIndexItems = this_1.control.model.getIntersectItems(items[i]).filter(function (item) {\n return item.zIndex === items[i].zIndex;\n });\n sameZIndexItems.forEach(function (item) {\n if (_this.control.model.getItemIndex(item) < _this.control.model.getItemIndex(items[i])) {\n result_1 = true;\n return;\n }\n });\n return {\n value: result_1\n };\n }\n };\n\n var this_1 = this;\n\n for (var i = 0; i < items.length; i++) {\n var state_1 = _loop_1(i);\n\n if (typeof state_1 === \"object\") return state_1.value;\n }\n\n return false;\n };\n\n return SendToBackCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.SendToBackCommand = SendToBackCommand;\n /***/\n },\n /* 272 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics177 = function extendStatics(d, b) {\n _extendStatics177 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics177(d, b);\n };\n\n return function (d, b) {\n _extendStatics177(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BringToFrontCommand = void 0;\n\n var ChangeZindexHistoryItem_1 = __webpack_require__(102);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var BringToFrontCommand =\n /** @class */\n function (_super) {\n __extends(BringToFrontCommand, _super);\n\n function BringToFrontCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n BringToFrontCommand.prototype.isEnabled = function () {\n var items = this.control.selection.getSelectedItems();\n return _super.prototype.isEnabled.call(this) && items.length > 0 && this.needBringToFront(items);\n };\n\n BringToFrontCommand.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n this.control.history.beginTransaction();\n var items = this.control.selection.getSelectedItems();\n items.forEach(function (item) {\n var newZIndex = _this.control.model.getIntersectItemsMaxZIndex(item) + 1;\n\n _this.control.history.addAndRedo(new ChangeZindexHistoryItem_1.ChangeZindexHistoryItem(item, newZIndex));\n });\n this.control.history.endTransaction();\n return true;\n };\n\n BringToFrontCommand.prototype.needBringToFront = function (items) {\n var _this = this;\n\n var _loop_1 = function _loop_1(i) {\n var zIndex = this_1.control.model.getIntersectItemsMaxZIndex(items[i]);\n if (zIndex > items[i].zIndex) return {\n value: true\n };\n\n if (zIndex === items[i].zIndex) {\n var result_1 = false;\n var sameZIndexItems = this_1.control.model.getIntersectItems(items[i]).filter(function (item) {\n return item.zIndex === items[i].zIndex;\n });\n sameZIndexItems.forEach(function (item) {\n if (_this.control.model.getItemIndex(item) > _this.control.model.getItemIndex(items[i])) {\n result_1 = true;\n return;\n }\n });\n return {\n value: result_1\n };\n }\n };\n\n var this_1 = this;\n\n for (var i = 0; i < items.length; i++) {\n var state_1 = _loop_1(i);\n\n if (typeof state_1 === \"object\") return state_1.value;\n }\n\n return false;\n };\n\n return BringToFrontCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.BringToFrontCommand = BringToFrontCommand;\n /***/\n },\n /* 273 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics178 = function extendStatics(d, b) {\n _extendStatics178 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics178(d, b);\n };\n\n return function (d, b) {\n _extendStatics178(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MoveStepDownCommand = exports.MoveDownCommand = exports.MoveStepUpCommand = exports.MoveUpCommand = exports.MoveStepRightCommand = exports.MoveRightCommand = exports.MoveStepLeftCommand = exports.MoveLeftCommand = exports.MoveCommand = void 0;\n\n var point_1 = __webpack_require__(1);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var MoveCommand =\n /** @class */\n function (_super) {\n __extends(MoveCommand, _super);\n\n function MoveCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MoveCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && !this.control.selection.isEmpty();\n };\n\n MoveCommand.prototype.executeCore = function (state, parameter) {\n var _this = this;\n\n this.control.history.beginTransaction();\n var selection = this.control.selection;\n selection.getSelectedShapes().forEach(function (shape) {\n var pos = _this.getPosition(shape.position);\n\n ModelUtils_1.ModelUtils.setShapePosition(_this.control.history, _this.control.model, shape, pos);\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(_this.control.history, _this.control.model, shape);\n });\n var selectedItems = ModelUtils_1.ModelUtils.createSelectedItems(selection);\n selection.getSelectedConnectors().forEach(function (connector) {\n if (ModelUtils_1.ModelUtils.canMoveConnector(selectedItems, connector)) {\n var startPtIndex = connector.beginItem ? 1 : 0;\n var endPtIndex = connector.endItem ? connector.points.length - 2 : connector.points.length - 1;\n\n for (var i = startPtIndex; i <= endPtIndex; i++) {\n var pos = _this.getPosition(connector.points[i]);\n\n ModelUtils_1.ModelUtils.moveConnectorPoint(_this.control.history, connector, i, pos);\n }\n }\n });\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.control.history);\n this.control.history.endTransaction();\n return true;\n };\n\n return MoveCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.MoveCommand = MoveCommand;\n\n var MoveLeftCommand =\n /** @class */\n function (_super) {\n __extends(MoveLeftCommand, _super);\n\n function MoveLeftCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MoveLeftCommand.prototype.getPosition = function (position) {\n return position.clone().offset(-unit_converter_1.UnitConverter.pixelsToTwips(1), 0);\n };\n\n return MoveLeftCommand;\n }(MoveCommand);\n\n exports.MoveLeftCommand = MoveLeftCommand;\n\n var MoveStepLeftCommand =\n /** @class */\n function (_super) {\n __extends(MoveStepLeftCommand, _super);\n\n function MoveStepLeftCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MoveStepLeftCommand.prototype.getPosition = function (position) {\n if (this.control.settings.snapToGrid) return new point_1.Point(ModelUtils_1.ModelUtils.getSnappedPos(this.control.model, this.control.settings.gridSize, position.x - (this.control.settings.gridSize / 2 + 2), true), position.y);else return position.clone().offset(-this.control.settings.gridSize, 0);\n };\n\n return MoveStepLeftCommand;\n }(MoveCommand);\n\n exports.MoveStepLeftCommand = MoveStepLeftCommand;\n\n var MoveRightCommand =\n /** @class */\n function (_super) {\n __extends(MoveRightCommand, _super);\n\n function MoveRightCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MoveRightCommand.prototype.getPosition = function (position) {\n return position.clone().offset(unit_converter_1.UnitConverter.pixelsToTwips(1), 0);\n };\n\n return MoveRightCommand;\n }(MoveCommand);\n\n exports.MoveRightCommand = MoveRightCommand;\n\n var MoveStepRightCommand =\n /** @class */\n function (_super) {\n __extends(MoveStepRightCommand, _super);\n\n function MoveStepRightCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MoveStepRightCommand.prototype.getPosition = function (position) {\n if (this.control.settings.snapToGrid) return new point_1.Point(ModelUtils_1.ModelUtils.getSnappedPos(this.control.model, this.control.settings.gridSize, position.x + (this.control.settings.gridSize / 2 + 2), true), position.y);else return position.clone().offset(this.control.settings.gridSize, 0);\n };\n\n return MoveStepRightCommand;\n }(MoveCommand);\n\n exports.MoveStepRightCommand = MoveStepRightCommand;\n\n var MoveUpCommand =\n /** @class */\n function (_super) {\n __extends(MoveUpCommand, _super);\n\n function MoveUpCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MoveUpCommand.prototype.getPosition = function (position) {\n return position.clone().offset(0, -unit_converter_1.UnitConverter.pixelsToTwips(1));\n };\n\n return MoveUpCommand;\n }(MoveCommand);\n\n exports.MoveUpCommand = MoveUpCommand;\n\n var MoveStepUpCommand =\n /** @class */\n function (_super) {\n __extends(MoveStepUpCommand, _super);\n\n function MoveStepUpCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MoveStepUpCommand.prototype.getPosition = function (position) {\n if (this.control.settings.snapToGrid) return new point_1.Point(position.x, ModelUtils_1.ModelUtils.getSnappedPos(this.control.model, this.control.settings.gridSize, position.y - (this.control.settings.gridSize / 2 + 2), false));else return position.clone().offset(0, -this.control.settings.gridSize);\n };\n\n return MoveStepUpCommand;\n }(MoveCommand);\n\n exports.MoveStepUpCommand = MoveStepUpCommand;\n\n var MoveDownCommand =\n /** @class */\n function (_super) {\n __extends(MoveDownCommand, _super);\n\n function MoveDownCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MoveDownCommand.prototype.getPosition = function (position) {\n return position.clone().offset(0, unit_converter_1.UnitConverter.pixelsToTwips(1));\n };\n\n return MoveDownCommand;\n }(MoveCommand);\n\n exports.MoveDownCommand = MoveDownCommand;\n\n var MoveStepDownCommand =\n /** @class */\n function (_super) {\n __extends(MoveStepDownCommand, _super);\n\n function MoveStepDownCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MoveStepDownCommand.prototype.getPosition = function (position) {\n if (this.control.settings.snapToGrid) return new point_1.Point(position.x, ModelUtils_1.ModelUtils.getSnappedPos(this.control.model, this.control.settings.gridSize, position.y + (this.control.settings.gridSize / 2 + 2), false));else return position.clone().offset(0, this.control.settings.gridSize);\n };\n\n return MoveStepDownCommand;\n }(MoveCommand);\n\n exports.MoveStepDownCommand = MoveStepDownCommand;\n /***/\n },\n /* 274 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics179 = function extendStatics(d, b) {\n _extendStatics179 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics179(d, b);\n };\n\n return function (d, b) {\n _extendStatics179(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleAutoZoomCommand = exports.ToggleAutoZoomToWidthCommand = exports.ToggleAutoZoomToContentCommand = exports.SwitchAutoZoomCommand = exports.FitToWidthCommand = exports.FitToScreenCommand = exports.ChangeZoomLevelItemsCommand = exports.ChangeZoomLevelTo200Command = exports.ChangeZoomLevelTo150Command = exports.ChangeZoomLevelTo125Command = exports.ChangeZoomLevelTo100Command = exports.ChangeZoomLevelTo75Command = exports.ChangeZoomLevelTo50Command = exports.ChangeZoomLevelTo25Command = exports.ChangeZoomLevelInPercentageCommand = exports.ChangeZoomLevelCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var Settings_1 = __webpack_require__(28);\n\n var ChangeZoomLevelCommand =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelCommand, _super);\n\n function ChangeZoomLevelCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeZoomLevelCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ChangeZoomLevelCommand.prototype.getValue = function () {\n return this.control.view.getZoom();\n };\n\n ChangeZoomLevelCommand.prototype.executeCore = function (state, parameter) {\n this.control.settings.zoomLevel = parameter;\n this.control.settings.autoZoom = Settings_1.AutoZoomMode.Disabled;\n this.control.updateLayout(true);\n return true;\n };\n\n ChangeZoomLevelCommand.prototype.getItems = function () {\n return this.control.settings.zoomLevelItems.map(function (l) {\n return {\n value: l,\n text: l * 100 + \"%\"\n };\n });\n };\n\n return ChangeZoomLevelCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeZoomLevelCommand = ChangeZoomLevelCommand;\n\n var ChangeZoomLevelInPercentageCommand =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelInPercentageCommand, _super);\n\n function ChangeZoomLevelInPercentageCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeZoomLevelInPercentageCommand.prototype.executeCore = function (state, parameter) {\n return _super.prototype.executeCore.call(this, state, parameter / 100);\n };\n\n ChangeZoomLevelInPercentageCommand.prototype.getValue = function () {\n return this.control.view.getZoom() * 100;\n };\n\n return ChangeZoomLevelInPercentageCommand;\n }(ChangeZoomLevelCommand);\n\n exports.ChangeZoomLevelInPercentageCommand = ChangeZoomLevelInPercentageCommand;\n\n var ChangeZoomLevelExactlyCommand =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelExactlyCommand, _super);\n\n function ChangeZoomLevelExactlyCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeZoomLevelExactlyCommand.prototype.getValue = function () {\n return this.control.view.getZoom() === this.exactValue;\n };\n\n ChangeZoomLevelExactlyCommand.prototype.executeCore = function (state, parameter) {\n _super.prototype.executeCore.call(this, state, this.exactValue);\n\n return true;\n };\n\n ChangeZoomLevelExactlyCommand.prototype.getItems = function () {\n return undefined;\n };\n\n return ChangeZoomLevelExactlyCommand;\n }(ChangeZoomLevelCommand);\n\n var ChangeZoomLevelTo25Command =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelTo25Command, _super);\n\n function ChangeZoomLevelTo25Command() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.exactValue = 0.25;\n return _this;\n }\n\n return ChangeZoomLevelTo25Command;\n }(ChangeZoomLevelExactlyCommand);\n\n exports.ChangeZoomLevelTo25Command = ChangeZoomLevelTo25Command;\n\n var ChangeZoomLevelTo50Command =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelTo50Command, _super);\n\n function ChangeZoomLevelTo50Command() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.exactValue = 0.5;\n return _this;\n }\n\n return ChangeZoomLevelTo50Command;\n }(ChangeZoomLevelExactlyCommand);\n\n exports.ChangeZoomLevelTo50Command = ChangeZoomLevelTo50Command;\n\n var ChangeZoomLevelTo75Command =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelTo75Command, _super);\n\n function ChangeZoomLevelTo75Command() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.exactValue = 0.75;\n return _this;\n }\n\n return ChangeZoomLevelTo75Command;\n }(ChangeZoomLevelExactlyCommand);\n\n exports.ChangeZoomLevelTo75Command = ChangeZoomLevelTo75Command;\n\n var ChangeZoomLevelTo100Command =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelTo100Command, _super);\n\n function ChangeZoomLevelTo100Command() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.exactValue = 1;\n return _this;\n }\n\n return ChangeZoomLevelTo100Command;\n }(ChangeZoomLevelExactlyCommand);\n\n exports.ChangeZoomLevelTo100Command = ChangeZoomLevelTo100Command;\n\n var ChangeZoomLevelTo125Command =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelTo125Command, _super);\n\n function ChangeZoomLevelTo125Command() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.exactValue = 1.25;\n return _this;\n }\n\n return ChangeZoomLevelTo125Command;\n }(ChangeZoomLevelExactlyCommand);\n\n exports.ChangeZoomLevelTo125Command = ChangeZoomLevelTo125Command;\n\n var ChangeZoomLevelTo150Command =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelTo150Command, _super);\n\n function ChangeZoomLevelTo150Command() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.exactValue = 1.5;\n return _this;\n }\n\n return ChangeZoomLevelTo150Command;\n }(ChangeZoomLevelExactlyCommand);\n\n exports.ChangeZoomLevelTo150Command = ChangeZoomLevelTo150Command;\n\n var ChangeZoomLevelTo200Command =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelTo200Command, _super);\n\n function ChangeZoomLevelTo200Command() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.exactValue = 2;\n return _this;\n }\n\n return ChangeZoomLevelTo200Command;\n }(ChangeZoomLevelExactlyCommand);\n\n exports.ChangeZoomLevelTo200Command = ChangeZoomLevelTo200Command;\n\n var ChangeZoomLevelItemsCommand =\n /** @class */\n function (_super) {\n __extends(ChangeZoomLevelItemsCommand, _super);\n\n function ChangeZoomLevelItemsCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeZoomLevelItemsCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ChangeZoomLevelItemsCommand.prototype.getValue = function () {\n return this.control.settings.zoomLevelItems;\n };\n\n ChangeZoomLevelItemsCommand.prototype.executeCore = function (state, parameter) {\n this.control.settings.zoomLevelItems = parameter;\n return true;\n };\n\n return ChangeZoomLevelItemsCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeZoomLevelItemsCommand = ChangeZoomLevelItemsCommand;\n\n var FitZoomCommandBase =\n /** @class */\n function (_super) {\n __extends(FitZoomCommandBase, _super);\n\n function FitZoomCommandBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n FitZoomCommandBase.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && !!this.control.render;\n };\n\n FitZoomCommandBase.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n FitZoomCommandBase.prototype.executeCore = function (state) {\n var zoomLevel = this.getZoomLevel();\n this.control.settings.zoomLevel = zoomLevel;\n this.control.settings.autoZoom = Settings_1.AutoZoomMode.Disabled;\n this.control.updateLayout(true);\n return true;\n };\n\n return FitZoomCommandBase;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n var FitToScreenCommand =\n /** @class */\n function (_super) {\n __extends(FitToScreenCommand, _super);\n\n function FitToScreenCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n FitToScreenCommand.prototype.getZoomLevel = function () {\n return this.control.render.view.getActualAutoZoomLevel(Settings_1.AutoZoomMode.FitContent);\n };\n\n return FitToScreenCommand;\n }(FitZoomCommandBase);\n\n exports.FitToScreenCommand = FitToScreenCommand;\n\n var FitToWidthCommand =\n /** @class */\n function (_super) {\n __extends(FitToWidthCommand, _super);\n\n function FitToWidthCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n FitToWidthCommand.prototype.getZoomLevel = function () {\n return this.control.render.view.getActualAutoZoomLevel(Settings_1.AutoZoomMode.FitToWidth);\n };\n\n return FitToWidthCommand;\n }(FitZoomCommandBase);\n\n exports.FitToWidthCommand = FitToWidthCommand;\n\n var SwitchAutoZoomCommand =\n /** @class */\n function (_super) {\n __extends(SwitchAutoZoomCommand, _super);\n\n function SwitchAutoZoomCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n SwitchAutoZoomCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n SwitchAutoZoomCommand.prototype.getValue = function () {\n return this.control.settings.autoZoom;\n };\n\n SwitchAutoZoomCommand.prototype.executeCore = function (state, value) {\n value = parseInt(value);\n if (this.control.settings.autoZoom === value) return false;\n if (value === Settings_1.AutoZoomMode.Disabled) this.control.settings.zoomLevel = this.control.view.getZoom();\n this.control.settings.autoZoom = value;\n this.control.updateLayout(true);\n return true;\n };\n\n return SwitchAutoZoomCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.SwitchAutoZoomCommand = SwitchAutoZoomCommand;\n\n var ToggleAutoZoomToContentCommand =\n /** @class */\n function (_super) {\n __extends(ToggleAutoZoomToContentCommand, _super);\n\n function ToggleAutoZoomToContentCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleAutoZoomToContentCommand.prototype.getValue = function () {\n return this.control.settings.autoZoom === Settings_1.AutoZoomMode.FitContent;\n };\n\n ToggleAutoZoomToContentCommand.prototype.executeCore = function (state, value) {\n return _super.prototype.executeCore.call(this, state, Settings_1.AutoZoomMode.FitContent);\n };\n\n return ToggleAutoZoomToContentCommand;\n }(SwitchAutoZoomCommand);\n\n exports.ToggleAutoZoomToContentCommand = ToggleAutoZoomToContentCommand;\n\n var ToggleAutoZoomToWidthCommand =\n /** @class */\n function (_super) {\n __extends(ToggleAutoZoomToWidthCommand, _super);\n\n function ToggleAutoZoomToWidthCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleAutoZoomToWidthCommand.prototype.getValue = function () {\n return this.control.settings.autoZoom === Settings_1.AutoZoomMode.FitToWidth;\n };\n\n ToggleAutoZoomToWidthCommand.prototype.executeCore = function (state, value) {\n return _super.prototype.executeCore.call(this, state, Settings_1.AutoZoomMode.FitToWidth);\n };\n\n return ToggleAutoZoomToWidthCommand;\n }(SwitchAutoZoomCommand);\n\n exports.ToggleAutoZoomToWidthCommand = ToggleAutoZoomToWidthCommand;\n\n var ToggleAutoZoomCommand =\n /** @class */\n function (_super) {\n __extends(ToggleAutoZoomCommand, _super);\n\n function ToggleAutoZoomCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleAutoZoomCommand.prototype.isEnabled = function () {\n return _super.prototype.isEnabled.call(this) && !!this.control.render;\n };\n\n ToggleAutoZoomCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ToggleAutoZoomCommand.prototype.getValue = function () {\n return this.control.settings.autoZoom;\n };\n\n ToggleAutoZoomCommand.prototype.executeCore = function (state, value) {\n var newValue;\n if (value === undefined) newValue = this.control.settings.autoZoom === Settings_1.AutoZoomMode.Disabled ? Settings_1.AutoZoomMode.FitContent : Settings_1.AutoZoomMode.Disabled;else newValue = value ? Settings_1.AutoZoomMode.FitContent : Settings_1.AutoZoomMode.Disabled;\n if (this.control.settings.autoZoom === newValue) return false;\n if (!newValue) this.control.settings.zoomLevel = this.control.view.getZoom();\n this.control.settings.autoZoom = newValue;\n this.control.updateLayout(true);\n return true;\n };\n\n return ToggleAutoZoomCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ToggleAutoZoomCommand = ToggleAutoZoomCommand;\n /***/\n },\n /* 275 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics180 = function extendStatics(d, b) {\n _extendStatics180 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics180(d, b);\n };\n\n return function (d, b) {\n _extendStatics180(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BindDocumentCommand = void 0;\n\n var DataLayoutParameters_1 = __webpack_require__(103);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var BindDocumentCommand =\n /** @class */\n function (_super) {\n __extends(BindDocumentCommand, _super);\n\n function BindDocumentCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n BindDocumentCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n BindDocumentCommand.prototype.executeCore = function (state, parameter) {\n if (!parameter || !Array.isArray(parameter.nodeDataSource)) throw Error(\"Format exception\");\n this.performImportData(parameter);\n this.control.updateLayout(true);\n return true;\n };\n\n BindDocumentCommand.prototype.performImportData = function (parameter) {\n var dataSource = this.control.createDocumentDataSource(parameter.nodeDataSource, parameter.edgeDataSource, parameter.dataParameters, parameter.nodeDataImporter, parameter.edgeDataImporter);\n this.control.beginUpdateCanvas();\n this.permissionsProvider.lockPermissions();\n var layoutParameters = new DataLayoutParameters_1.DataLayoutParameters(this.control.settings, parameter.layoutParameters);\n dataSource.createModelItems(this.control.history, this.control.model, this.control.shapeDescriptionManager, this.control.selection, layoutParameters, this.control.settings.snapToGrid, this.control.settings.gridSize, this.control.measurer);\n this.permissionsProvider.unlockPermissions();\n this.control.endUpdateCanvas();\n };\n\n return BindDocumentCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.BindDocumentCommand = BindDocumentCommand;\n /***/\n },\n /* 276 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics181 = function extendStatics(d, b) {\n _extendStatics181 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics181(d, b);\n };\n\n return function (d, b) {\n _extendStatics181(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.UnbindDocumentCommand = void 0;\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var UnbindDocumentCommand =\n /** @class */\n function (_super) {\n __extends(UnbindDocumentCommand, _super);\n\n function UnbindDocumentCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UnbindDocumentCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n UnbindDocumentCommand.prototype.executeCore = function (state) {\n this.permissionsProvider.lockPermissions();\n this.control.deleteDocumentDataSource();\n ModelUtils_1.ModelUtils.deleteAllItems(this.control.history, this.control.model, this.control.selection);\n this.control.history.clear();\n this.permissionsProvider.unlockPermissions();\n return true;\n };\n\n return UnbindDocumentCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.UnbindDocumentCommand = UnbindDocumentCommand;\n /***/\n },\n /* 277 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics182 = function extendStatics(d, b) {\n _extendStatics182 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics182(d, b);\n };\n\n return function (d, b) {\n _extendStatics182(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.LockCommand = void 0;\n\n var ChangeLockedCommand_1 = __webpack_require__(146);\n\n var LockCommand =\n /** @class */\n function (_super) {\n __extends(LockCommand, _super);\n\n function LockCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n LockCommand.prototype.getLockState = function () {\n return true;\n };\n\n return LockCommand;\n }(ChangeLockedCommand_1.ChangeLockedCommand);\n\n exports.LockCommand = LockCommand;\n /***/\n },\n /* 278 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics183 = function extendStatics(d, b) {\n _extendStatics183 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics183(d, b);\n };\n\n return function (d, b) {\n _extendStatics183(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.UnLockCommand = void 0;\n\n var ChangeLockedCommand_1 = __webpack_require__(146);\n\n var UnLockCommand =\n /** @class */\n function (_super) {\n __extends(UnLockCommand, _super);\n\n function UnLockCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n UnLockCommand.prototype.getLockState = function () {\n return false;\n };\n\n return UnLockCommand;\n }(ChangeLockedCommand_1.ChangeLockedCommand);\n\n exports.UnLockCommand = UnLockCommand;\n /***/\n },\n /* 279 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics184 = function extendStatics(d, b) {\n _extendStatics184 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics184(d, b);\n };\n\n return function (d, b) {\n _extendStatics184(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CloneDownCommand = exports.CloneUpCommand = exports.CloneRightCommand = exports.CloneLeftCommand = exports.CloneCommand = void 0;\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var CloneCommand =\n /** @class */\n function (_super) {\n __extends(CloneCommand, _super);\n\n function CloneCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CloneCommand.prototype.isEnabled = function () {\n var items = this.control.selection.getSelectedItems();\n return _super.prototype.isEnabled.call(this) && items.length && items.length > 0 && this.permissionsProvider.canAddItems(items);\n };\n\n CloneCommand.prototype.executeCore = function (state, parameter) {\n var selectionRect = ModelUtils_1.ModelUtils.createRectangle(this.control.selection.getSelectedItems());\n ModelUtils_1.ModelUtils.cloneSelectionToOffset(this.control.history, this.control.model, undefined, this.control.selection, this.getOffsetX(selectionRect), this.getOffsetY(selectionRect));\n return true;\n };\n\n Object.defineProperty(CloneCommand.prototype, \"isPermissionsRequired\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n\n CloneCommand.prototype.getOffsetX = function (selectionRect) {\n return 0;\n };\n\n CloneCommand.prototype.getOffsetY = function (selectionRect) {\n return 0;\n };\n\n return CloneCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.CloneCommand = CloneCommand;\n\n var CloneLeftCommand =\n /** @class */\n function (_super) {\n __extends(CloneLeftCommand, _super);\n\n function CloneLeftCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CloneLeftCommand.prototype.getOffsetX = function (selectionRect) {\n return -selectionRect.width;\n };\n\n return CloneLeftCommand;\n }(CloneCommand);\n\n exports.CloneLeftCommand = CloneLeftCommand;\n\n var CloneRightCommand =\n /** @class */\n function (_super) {\n __extends(CloneRightCommand, _super);\n\n function CloneRightCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CloneRightCommand.prototype.getOffsetX = function (selectionRect) {\n return selectionRect.width;\n };\n\n return CloneRightCommand;\n }(CloneCommand);\n\n exports.CloneRightCommand = CloneRightCommand;\n\n var CloneUpCommand =\n /** @class */\n function (_super) {\n __extends(CloneUpCommand, _super);\n\n function CloneUpCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CloneUpCommand.prototype.getOffsetY = function (selectionRect) {\n return -selectionRect.height;\n };\n\n return CloneUpCommand;\n }(CloneCommand);\n\n exports.CloneUpCommand = CloneUpCommand;\n\n var CloneDownCommand =\n /** @class */\n function (_super) {\n __extends(CloneDownCommand, _super);\n\n function CloneDownCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n CloneDownCommand.prototype.getOffsetY = function (selectionRect) {\n return selectionRect.height;\n };\n\n return CloneDownCommand;\n }(CloneCommand);\n\n exports.CloneDownCommand = CloneDownCommand;\n /***/\n },\n /* 280 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics185 = function extendStatics(d, b) {\n _extendStatics185 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics185(d, b);\n };\n\n return function (d, b) {\n _extendStatics185(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeViewUnitsCommand = exports.ChangeUnitsCommand = void 0;\n\n var ChangePagePropertyCommand_1 = __webpack_require__(76);\n\n var ChangeUnitsHistoryItem_1 = __webpack_require__(281);\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var LocalizationService_1 = __webpack_require__(37);\n\n var ChangeUnitsCommand =\n /** @class */\n function (_super) {\n __extends(ChangeUnitsCommand, _super);\n\n function ChangeUnitsCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeUnitsCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ChangeUnitsCommand.prototype.getValue = function () {\n return this.control.model.units;\n };\n\n ChangeUnitsCommand.prototype.createHistoryItems = function (parameter) {\n return [new ChangeUnitsHistoryItem_1.ChangeUnitsHistoryItem(parameter)];\n };\n\n ChangeUnitsCommand.prototype.getItems = function () {\n return Object.keys(LocalizationService_1.DiagramLocalizationService.unitItems).map(function (key) {\n return {\n value: parseInt(key),\n text: LocalizationService_1.DiagramLocalizationService.unitItems[key]\n };\n });\n };\n\n return ChangeUnitsCommand;\n }(ChangePagePropertyCommand_1.ChangePagePropertyCommand);\n\n exports.ChangeUnitsCommand = ChangeUnitsCommand;\n\n var ChangeViewUnitsCommand =\n /** @class */\n function (_super) {\n __extends(ChangeViewUnitsCommand, _super);\n\n function ChangeViewUnitsCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeViewUnitsCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ChangeViewUnitsCommand.prototype.getValue = function () {\n return this.control.settings.viewUnits;\n };\n\n ChangeViewUnitsCommand.prototype.executeCore = function (state, parameter) {\n this.control.settings.viewUnits = parameter;\n return true;\n };\n\n ChangeViewUnitsCommand.prototype.getItems = function () {\n return Object.keys(LocalizationService_1.DiagramLocalizationService.unitItems).map(function (key) {\n return {\n value: parseInt(key),\n text: LocalizationService_1.DiagramLocalizationService.unitItems[key]\n };\n });\n };\n\n return ChangeViewUnitsCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeViewUnitsCommand = ChangeViewUnitsCommand;\n /***/\n },\n /* 281 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics186 = function extendStatics(d, b) {\n _extendStatics186 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics186(d, b);\n };\n\n return function (d, b) {\n _extendStatics186(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeUnitsHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangeUnitsHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeUnitsHistoryItem, _super);\n\n function ChangeUnitsHistoryItem(units) {\n var _this = _super.call(this) || this;\n\n _this.units = units;\n return _this;\n }\n\n ChangeUnitsHistoryItem.prototype.redo = function (manipulator) {\n this.oldUnits = manipulator.model.units;\n manipulator.model.units = this.units;\n };\n\n ChangeUnitsHistoryItem.prototype.undo = function (manipulator) {\n manipulator.model.units = this.oldUnits;\n };\n\n return ChangeUnitsHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeUnitsHistoryItem = ChangeUnitsHistoryItem;\n /***/\n },\n /* 282 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics187 = function extendStatics(d, b) {\n _extendStatics187 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics187(d, b);\n };\n\n return function (d, b) {\n _extendStatics187(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangePageColorCommand = void 0;\n\n var ChangePagePropertyCommand_1 = __webpack_require__(76);\n\n var ChangePageColorHistoryItem_1 = __webpack_require__(283);\n\n var Model_1 = __webpack_require__(61);\n\n var color_1 = __webpack_require__(22);\n\n var ChangePageColorCommand =\n /** @class */\n function (_super) {\n __extends(ChangePageColorCommand, _super);\n\n function ChangePageColorCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangePageColorCommand.prototype.getValue = function () {\n return color_1.ColorUtils.colorToHash(this.control.model.pageColor);\n };\n\n ChangePageColorCommand.prototype.getDefaultValue = function () {\n return color_1.ColorUtils.colorToHash(Model_1.DiagramModel.defaultPageColor);\n };\n\n ChangePageColorCommand.prototype.createHistoryItems = function (parameter) {\n return [new ChangePageColorHistoryItem_1.ChangePageColorHistoryItem(color_1.ColorUtils.fromString(parameter))];\n };\n\n return ChangePageColorCommand;\n }(ChangePagePropertyCommand_1.ChangePagePropertyCommand);\n\n exports.ChangePageColorCommand = ChangePageColorCommand;\n /***/\n },\n /* 283 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics188 = function extendStatics(d, b) {\n _extendStatics188 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics188(d, b);\n };\n\n return function (d, b) {\n _extendStatics188(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangePageColorHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangePageColorHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangePageColorHistoryItem, _super);\n\n function ChangePageColorHistoryItem(value) {\n var _this = _super.call(this) || this;\n\n _this.value = value;\n return _this;\n }\n\n ChangePageColorHistoryItem.prototype.redo = function (manipulator) {\n this.oldValue = manipulator.model.pageColor;\n manipulator.changePageColor(this.value);\n };\n\n ChangePageColorHistoryItem.prototype.undo = function (manipulator) {\n manipulator.changePageColor(this.oldValue);\n };\n\n return ChangePageColorHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangePageColorHistoryItem = ChangePageColorHistoryItem;\n /***/\n },\n /* 284 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics189 = function extendStatics(d, b) {\n _extendStatics189 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics189(d, b);\n };\n\n return function (d, b) {\n _extendStatics189(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeShowGridCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ChangeShowGridCommand =\n /** @class */\n function (_super) {\n __extends(ChangeShowGridCommand, _super);\n\n function ChangeShowGridCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeShowGridCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ChangeShowGridCommand.prototype.executeCore = function (state, parameter) {\n var newValue = parameter === undefined ? !this.control.settings.showGrid : !!parameter;\n\n if (this.control.settings.showGrid !== newValue) {\n this.control.settings.showGrid = newValue;\n return true;\n }\n\n return false;\n };\n\n ChangeShowGridCommand.prototype.getValue = function () {\n return this.control.settings.showGrid;\n };\n\n return ChangeShowGridCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeShowGridCommand = ChangeShowGridCommand;\n /***/\n },\n /* 285 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics190 = function extendStatics(d, b) {\n _extendStatics190 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics190(d, b);\n };\n\n return function (d, b) {\n _extendStatics190(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleFullscreenCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ToggleFullscreenCommand =\n /** @class */\n function (_super) {\n __extends(ToggleFullscreenCommand, _super);\n\n function ToggleFullscreenCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleFullscreenCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ToggleFullscreenCommand.prototype.getValue = function () {\n return this.control.settings.fullscreen;\n };\n\n ToggleFullscreenCommand.prototype.executeCore = function (state, parameter) {\n var newValue = typeof parameter === \"boolean\" ? parameter : !state.value;\n\n if (this.control.settings.fullscreen !== newValue) {\n this.control.settings.fullscreen = !state.value;\n this.control.notifyToggleFullscreen(this.control.settings.fullscreen);\n }\n\n return true;\n };\n\n return ToggleFullscreenCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ToggleFullscreenCommand = ToggleFullscreenCommand;\n /***/\n },\n /* 286 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics191 = function extendStatics(d, b) {\n _extendStatics191 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics191(d, b);\n };\n\n return function (d, b) {\n _extendStatics191(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleSimpleViewCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ToggleSimpleViewCommand =\n /** @class */\n function (_super) {\n __extends(ToggleSimpleViewCommand, _super);\n\n function ToggleSimpleViewCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleSimpleViewCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ToggleSimpleViewCommand.prototype.getValue = function () {\n return this.control.settings.simpleView;\n };\n\n ToggleSimpleViewCommand.prototype.executeCore = function (state, parameter) {\n if (typeof parameter === \"boolean\") this.control.settings.simpleView = parameter;else if (parameter === undefined) this.control.settings.simpleView = !state.value;\n this.control.updateLayout(true);\n return true;\n };\n\n return ToggleSimpleViewCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ToggleSimpleViewCommand = ToggleSimpleViewCommand;\n /***/\n },\n /* 287 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics192 = function extendStatics(d, b) {\n _extendStatics192 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics192(d, b);\n };\n\n return function (d, b) {\n _extendStatics192(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleReadOnlyCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var ToggleReadOnlyCommand =\n /** @class */\n function (_super) {\n __extends(ToggleReadOnlyCommand, _super);\n\n function ToggleReadOnlyCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ToggleReadOnlyCommand.prototype.isEnabledInReadOnlyMode = function () {\n return true;\n };\n\n ToggleReadOnlyCommand.prototype.getValue = function () {\n return this.control.settings.readOnly;\n };\n\n ToggleReadOnlyCommand.prototype.executeCore = function (state, parameter) {\n if (typeof parameter === \"boolean\") this.control.settings.readOnly = parameter;else if (parameter === undefined) this.control.settings.readOnly = !state.value;\n return true;\n };\n\n return ToggleReadOnlyCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ToggleReadOnlyCommand = ToggleReadOnlyCommand;\n /***/\n },\n /* 288 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics193 = function extendStatics(d, b) {\n _extendStatics193 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics193(d, b);\n };\n\n return function (d, b) {\n _extendStatics193(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EditShapeImageCommand = void 0;\n\n var EditShapeImageCommandBase_1 = __webpack_require__(104);\n\n var EditShapeImageCommand =\n /** @class */\n function (_super) {\n __extends(EditShapeImageCommand, _super);\n\n function EditShapeImageCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n EditShapeImageCommand.prototype.isEnabled = function () {\n var selectedShape = this.getSelectedShape();\n return _super.prototype.isEnabled.call(this) && !selectedShape.image.isEmpty;\n };\n\n return EditShapeImageCommand;\n }(EditShapeImageCommandBase_1.EditShapeImageCommandBase);\n\n exports.EditShapeImageCommand = EditShapeImageCommand;\n /***/\n },\n /* 289 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics194 = function extendStatics(d, b) {\n _extendStatics194 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics194(d, b);\n };\n\n return function (d, b) {\n _extendStatics194(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PasteSelectionInPositionCommand = void 0;\n\n var PasteSelectoinCommandBase_1 = __webpack_require__(142);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var PasteSelectionInPositionCommand =\n /** @class */\n function (_super) {\n __extends(PasteSelectionInPositionCommand, _super);\n\n function PasteSelectionInPositionCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n PasteSelectionInPositionCommand.prototype.calculateSelectionOffset = function (items, position) {\n var selectionPos = items.reduce(function (min, i) {\n return {\n x: Math.min(min.x, i instanceof Shape_1.Shape ? i.position.x : i instanceof Connector_1.Connector ? i.getMinX() : Number.MAX_VALUE),\n y: Math.min(min.y, i instanceof Shape_1.Shape ? i.position.y : i instanceof Connector_1.Connector ? i.getMinY() : Number.MAX_VALUE)\n };\n }, {\n x: Number.MAX_VALUE,\n y: Number.MAX_VALUE\n });\n var newSelectionPos = this.control.render.getModelPointByEventPoint(position.x, position.y);\n this.offsetX = newSelectionPos.x - selectionPos.x;\n this.offsetY = newSelectionPos.y - selectionPos.y;\n };\n\n PasteSelectionInPositionCommand.prototype.getShapeNewPosition = function (position) {\n var newPosition = position.clone();\n if (this.offsetX !== undefined && this.offsetY !== undefined) newPosition = newPosition.offset(this.offsetX, this.offsetY);\n return PasteSelectoinCommandBase_1.PasteSelectionCommandBase.getShapeNewPosition(this.control.model, newPosition);\n };\n\n PasteSelectionInPositionCommand.prototype.changeConnectorPoints = function (connector) {\n var _this = this;\n\n connector.points.forEach(function (pt) {\n pt.x += _this.offsetX;\n pt.y += _this.offsetY;\n });\n PasteSelectoinCommandBase_1.PasteSelectionCommandBase.changeConnectorPoints(this.control.model, connector);\n };\n\n return PasteSelectionInPositionCommand;\n }(PasteSelectoinCommandBase_1.PasteSelectionCommandBase);\n\n exports.PasteSelectionInPositionCommand = PasteSelectionInPositionCommand;\n /***/\n },\n /* 290 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics195 = function extendStatics(d, b) {\n _extendStatics195 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics195(d, b);\n };\n\n return function (d, b) {\n _extendStatics195(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ImportXMLCommand = void 0;\n\n var XMLImporter_1 = __webpack_require__(291);\n\n var ExportImportCommandBase_1 = __webpack_require__(56);\n\n var ImportXMLCommand =\n /** @class */\n function (_super) {\n __extends(ImportXMLCommand, _super);\n\n function ImportXMLCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ImportXMLCommand.prototype.executeCore = function (state, parameter) {\n var importer = new XMLImporter_1.XmlImporter(this.control.shapeDescriptionManager, parameter);\n var model = importer.import();\n this.control.importModel(model);\n return true;\n };\n\n return ImportXMLCommand;\n }(ExportImportCommandBase_1.ExportImportCommandBase);\n\n exports.ImportXMLCommand = ImportXMLCommand;\n /***/\n },\n /* 291 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics196 = function extendStatics(d, b) {\n _extendStatics196 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics196(d, b);\n };\n\n return function (d, b) {\n _extendStatics196(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.XmlImporter = void 0;\n\n var Connector_1 = __webpack_require__(6);\n\n var Shape_1 = __webpack_require__(13);\n\n var ImporterBase_1 = __webpack_require__(134);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ShapeDescriptionManager_1 = __webpack_require__(91);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var ImportUtils_1 = __webpack_require__(95);\n\n var color_1 = __webpack_require__(22);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var XmlImporter =\n /** @class */\n function (_super) {\n __extends(XmlImporter, _super);\n\n function XmlImporter(shapeDescriptionManager, xml) {\n var _this = _super.call(this, shapeDescriptionManager) || this;\n\n _this.doc = ImportUtils_1.ImportUtils.createDocument(xml);\n return _this;\n }\n\n XmlImporter.prototype.getObject = function () {\n return this.doc;\n };\n\n XmlImporter.prototype.getPageObject = function (obj) {\n var pageElements = this.doc.querySelectorAll(\"[ItemKind='DiagramRoot']\");\n return pageElements && pageElements[0];\n };\n\n XmlImporter.prototype.getShapeObjects = function (obj) {\n var shapeObjs = [];\n this.doc.querySelectorAll(\"[ItemKind='DiagramRoot'] > Children > [ItemKind='DiagramShape']\").forEach(function (obj) {\n shapeObjs.push(obj);\n });\n this.doc.querySelectorAll(\"[ItemKind='DiagramRoot'] > Children > [ItemKind='DiagramContainer']\").forEach(function (obj) {\n shapeObjs.push(obj);\n });\n return shapeObjs;\n };\n\n XmlImporter.prototype.getConnectorObjects = function (obj) {\n var connectorObjs = [];\n this.doc.querySelectorAll(\"[ItemKind='DiagramRoot'] > Children > [ItemKind='DiagramConnector']\").forEach(function (obj) {\n connectorObjs.push(obj);\n });\n return connectorObjs;\n };\n\n XmlImporter.prototype.importPageSettings = function (model, pageObj) {\n if (!pageObj) return;\n var pageSizeAttr = pageObj.getAttribute(\"PageSize\");\n var pageSize = this.getSize(pageSizeAttr);\n\n if (pageSize) {\n model.size = pageSize.clone();\n model.pageSize = pageSize.clone();\n }\n };\n\n XmlImporter.prototype.importShape = function (shapeObj) {\n var positionAttr = shapeObj.getAttribute(\"Position\");\n var position = this.getPoint(positionAttr);\n var shapeAttr = shapeObj.getAttribute(\"Shape\");\n var shapeType = this.getShapeType(shapeAttr);\n var description = this.shapeDescriptionManager.get(shapeType);\n var shape = new Shape_1.Shape(description || ShapeDescriptionManager_1.ShapeDescriptionManager.default, position);\n shape.key = this.getItemKey(shapeObj);\n var sizeAttr = shapeObj.getAttribute(\"Size\");\n var size = this.getSize(sizeAttr);\n if (size) shape.size = size;\n var contentAttr = shapeObj.getAttribute(\"Content\");\n if (typeof contentAttr === \"string\") shape.text = contentAttr;else {\n var headerAttr = shapeObj.getAttribute(\"Header\");\n if (typeof headerAttr === \"string\") shape.text = headerAttr;\n }\n this.importStyle(shapeObj, shape);\n return shape;\n };\n\n XmlImporter.prototype.importShapeChildren = function (shapeObj, shape) {\n var childShapeObjs = [];\n shapeObj.setAttribute(\"dxDiagram\", \"\");\n this.doc.querySelectorAll(\"[dxDiagram] > Children > [ItemKind='DiagramShape']\").forEach(function (obj) {\n childShapeObjs.push(obj);\n });\n this.doc.querySelectorAll(\"[dxDiagram] > Children > [ItemKind='DiagramContainer']\").forEach(function (obj) {\n childShapeObjs.push(obj);\n });\n shapeObj.removeAttribute(\"dxDiagram\");\n var result = [];\n if (!childShapeObjs) return result;\n\n for (var i = 0; i < childShapeObjs.length; i++) {\n var childShapeObj = childShapeObjs[i];\n var childShape = this.importShape(childShapeObj);\n childShape.key = shape.key + \",\" + childShape.key;\n var rect = shape.clientRectangle;\n childShape.position = childShape.position.clone().offset(rect.x, rect.y);\n if (!shape[\"childKeys\"]) shape[\"childKeys\"] = [];\n shape[\"childKeys\"].push(childShape.key);\n result.push(childShape);\n result = result.concat(this.importShapeChildren(childShapeObj, childShape));\n }\n\n return result;\n };\n\n XmlImporter.prototype.importConnector = function (connectorObj) {\n var _this = this;\n\n var points = [];\n var beginPointAttr = connectorObj.getAttribute(\"BeginPoint\");\n var beginPoint = this.getPoint(beginPointAttr);\n if (beginPoint) points.push(beginPoint);\n var pointsAttr = connectorObj.getAttribute(\"Points\");\n pointsAttr.split(\" \").forEach(function (pointAttr) {\n var point = _this.getPoint(pointAttr);\n\n if (point) points.push(point);\n });\n var endPointAttr = connectorObj.getAttribute(\"EndPoint\");\n var endPoint = this.getPoint(endPointAttr);\n if (endPoint) points.push(endPoint);\n var connector = new Connector_1.Connector(points);\n connector.key = this.getItemKey(connectorObj);\n var endItemPointIndexAttr = connectorObj.getAttribute(\"EndItemPointIndex\");\n var endItemPointIndex = parseInt(endItemPointIndexAttr);\n connector.endConnectionPointIndex = !isNaN(endItemPointIndex) ? endItemPointIndex : -1;\n var beginItemPointIndexAttr = connectorObj.getAttribute(\"BeginItemPointIndex\");\n var beginItemPointIndex = parseInt(beginItemPointIndexAttr);\n connector.beginConnectionPointIndex = !isNaN(beginItemPointIndex) ? beginItemPointIndex : -1;\n var endItemAttr = connectorObj.getAttribute(\"EndItem\");\n if (endItemAttr !== undefined) this.assert(endItemAttr, \"string\");\n var beginItemAttr = connectorObj.getAttribute(\"BeginItem\");\n if (beginItemAttr !== undefined) this.assert(beginItemAttr, \"string\");\n connector[\"endItemKey\"] = endItemAttr;\n connector[\"beginItemKey\"] = beginItemAttr;\n var contentAttr = connectorObj.getAttribute(\"Content\");\n if (typeof contentAttr === \"string\") connector.setText(contentAttr);\n this.importStyle(connectorObj, connector);\n return connector;\n };\n\n XmlImporter.prototype.importStyle = function (obj, item) {\n var backgroundAttr = obj.getAttribute(\"Background\");\n if (typeof backgroundAttr === \"string\") item.style[\"fill\"] = this.getColor(backgroundAttr);\n var strokeAttr = obj.getAttribute(\"Stroke\");\n if (typeof strokeAttr === \"string\") item.style[\"stroke\"] = this.getColor(strokeAttr);\n var foregroundAttr = obj.getAttribute(\"Foreground\");\n if (typeof foregroundAttr === \"string\") item.styleText[\"fill\"] = this.getColor(foregroundAttr);\n var fontFamilyAttr = obj.getAttribute(\"FontFamily\");\n if (typeof fontFamilyAttr === \"string\") item.styleText[\"font-family\"] = fontFamilyAttr;\n var fontSizeAttr = obj.getAttribute(\"FontSize\");\n if (typeof fontSizeAttr === \"string\") item.styleText[\"font-size\"] = fontSizeAttr;\n var fontWeightAttr = obj.getAttribute(\"FontWeight\");\n if (fontWeightAttr === \"Bold\") item.styleText[\"font-weight\"] = \"bold\";\n var fontStyleAttr = obj.getAttribute(\"FontStyle\");\n if (fontStyleAttr === \"Italic\") item.styleText[\"font-style\"] = \"italic\";\n var textDecorationsAttr = obj.getAttribute(\"TextDecorations\");\n if (textDecorationsAttr === \"Underline\") item.styleText[\"text-decoration\"] = \"underline\";\n var textAlignmentAttr = obj.getAttribute(\"TextAlignment\");\n if (textAlignmentAttr === \"Left\") item.styleText[\"text-anchor\"] = \"start\";else if (textAlignmentAttr === \"Right\") item.styleText[\"text-anchor\"] = \"end\";else if (textAlignmentAttr === \"Center\") item.styleText[\"text-anchor\"] = \"middle\";\n };\n\n XmlImporter.prototype.getShapeType = function (shapeAttr) {\n if (XmlImporter.shapeTypes[shapeAttr]) return XmlImporter.shapeTypes[shapeAttr];\n if (shapeAttr && shapeAttr.toLowerCase().indexOf(\"container\") > -1) return ShapeTypes_1.ShapeTypes.VerticalContainer;\n return ShapeTypes_1.ShapeTypes.Rectangle;\n };\n\n XmlImporter.prototype.getItemKey = function (obj) {\n return (parseInt(obj.tagName.replace(\"Item\", \"\")) - 1).toString();\n };\n\n XmlImporter.prototype.getNumbers = function (s) {\n var parts = s.split(\",\");\n return parts && parts.length ? parts.map(function (part) {\n return +part;\n }) : [];\n };\n\n XmlImporter.prototype.getSize = function (attrValue) {\n if (attrValue) {\n var numbers = this.getNumbers(attrValue);\n\n if (numbers.length >= 2) {\n this.assert(numbers[0], \"number\");\n this.assert(numbers[1], \"number\");\n return new size_1.Size(unit_converter_1.UnitConverter.pixelsToTwips(numbers[0]), unit_converter_1.UnitConverter.pixelsToTwips(numbers[1]));\n }\n }\n };\n\n XmlImporter.prototype.getPoint = function (attrValue) {\n if (attrValue) {\n var numbers = this.getNumbers(attrValue);\n\n if (numbers.length >= 2) {\n this.assert(numbers[0], \"number\");\n this.assert(numbers[1], \"number\");\n return new point_1.Point(unit_converter_1.UnitConverter.pixelsToTwips(numbers[0]), unit_converter_1.UnitConverter.pixelsToTwips(numbers[1]));\n }\n }\n };\n\n XmlImporter.prototype.getColor = function (attrValue) {\n attrValue = attrValue.charAt(0) === \"#\" ? attrValue.substr(1) : attrValue;\n var color = parseInt(attrValue, 16);\n return !isNaN(color) ? color_1.ColorUtils.colorToHash(color) : undefined;\n };\n\n XmlImporter.shapeTypes = {\n \"BasicShapes.Rectangle\": ShapeTypes_1.ShapeTypes.Rectangle,\n \"BasicShapes.Ellipse\": ShapeTypes_1.ShapeTypes.Ellipse,\n \"BasicShapes.Triangle\": ShapeTypes_1.ShapeTypes.Triangle,\n \"BasicShapes.Pentagon\": ShapeTypes_1.ShapeTypes.Pentagon,\n \"BasicShapes.Hexagon\": ShapeTypes_1.ShapeTypes.Hexagon,\n \"BasicShapes.Octagon\": ShapeTypes_1.ShapeTypes.Octagon,\n \"BasicShapes.Diamond\": ShapeTypes_1.ShapeTypes.Diamond,\n \"BasicShapes.Cross\": ShapeTypes_1.ShapeTypes.Cross,\n \"BasicShapes.Star5\": ShapeTypes_1.ShapeTypes.Star,\n \"BasicFlowchartShapes.StartEnd\": ShapeTypes_1.ShapeTypes.Terminator,\n \"BasicFlowchartShapes.Data\": ShapeTypes_1.ShapeTypes.Data,\n \"BasicFlowchartShapes.Database\": ShapeTypes_1.ShapeTypes.Database,\n \"BasicFlowchartShapes.ExternalData\": ShapeTypes_1.ShapeTypes.StoredData,\n \"BasicFlowchartShapes.Process\": ShapeTypes_1.ShapeTypes.Process,\n \"BasicFlowchartShapes.Decision\": ShapeTypes_1.ShapeTypes.Decision,\n \"BasicFlowchartShapes.Subprocess\": ShapeTypes_1.ShapeTypes.PredefinedProcess,\n \"BasicFlowchartShapes.Document\": ShapeTypes_1.ShapeTypes.Document,\n \"BasicFlowchartShapes.Custom1\": ShapeTypes_1.ShapeTypes.ManualInput,\n \"BasicFlowchartShapes.Custom2\": ShapeTypes_1.ShapeTypes.ManualOperation,\n \"ArrowShapes.SimpleArrow\": ShapeTypes_1.ShapeTypes.ArrowLeft,\n \"ArrowShapes.SimpleDoubleArrow\": ShapeTypes_1.ShapeTypes.ArrowLeftRight\n };\n return XmlImporter;\n }(ImporterBase_1.ImporterBase);\n\n exports.XmlImporter = XmlImporter;\n /***/\n },\n /* 292 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics197 = function extendStatics(d, b) {\n _extendStatics197 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics197(d, b);\n };\n\n return function (d, b) {\n _extendStatics197(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.InsertShapeImageCommand = void 0;\n\n var EditShapeImageCommandBase_1 = __webpack_require__(104);\n\n var InsertShapeImageCommand =\n /** @class */\n function (_super) {\n __extends(InsertShapeImageCommand, _super);\n\n function InsertShapeImageCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n InsertShapeImageCommand.prototype.isEnabled = function () {\n var selectedShape = this.getSelectedShape();\n return _super.prototype.isEnabled.call(this) && selectedShape.image.isEmpty;\n };\n\n return InsertShapeImageCommand;\n }(EditShapeImageCommandBase_1.EditShapeImageCommandBase);\n\n exports.InsertShapeImageCommand = InsertShapeImageCommand;\n /***/\n },\n /* 293 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics198 = function extendStatics(d, b) {\n _extendStatics198 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics198(d, b);\n };\n\n return function (d, b) {\n _extendStatics198(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DeleteShapeImageCommand = void 0;\n\n var EditShapeImageCommandBase_1 = __webpack_require__(104);\n\n var DeleteShapeImageCommand =\n /** @class */\n function (_super) {\n __extends(DeleteShapeImageCommand, _super);\n\n function DeleteShapeImageCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n DeleteShapeImageCommand.prototype.isEnabled = function () {\n var selectedShape = this.getSelectedShape();\n return _super.prototype.isEnabled.call(this) && !selectedShape.image.isEmpty;\n };\n\n DeleteShapeImageCommand.prototype.executeCore = function (state, parameter) {\n return _super.prototype.executeCore.call(this, state, undefined);\n };\n\n return DeleteShapeImageCommand;\n }(EditShapeImageCommandBase_1.EditShapeImageCommandBase);\n\n exports.DeleteShapeImageCommand = DeleteShapeImageCommand;\n /***/\n },\n /* 294 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics199 = function extendStatics(d, b) {\n _extendStatics199 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics199(d, b);\n };\n\n return function (d, b) {\n _extendStatics199(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeStrokeStyleCommand = void 0;\n\n var ChangeStylePropertyCommand_1 = __webpack_require__(74);\n\n var ChangeStrokeStyleCommand =\n /** @class */\n function (_super) {\n __extends(ChangeStrokeStyleCommand, _super);\n\n function ChangeStrokeStyleCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeStrokeStyleCommand.prototype.getStyleProperty = function () {\n return \"stroke-dasharray\";\n };\n\n return ChangeStrokeStyleCommand;\n }(ChangeStylePropertyCommand_1.ChangeStylePropertyCommand);\n\n exports.ChangeStrokeStyleCommand = ChangeStrokeStyleCommand;\n /***/\n },\n /* 295 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics200 = function extendStatics(d, b) {\n _extendStatics200 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics200(d, b);\n };\n\n return function (d, b) {\n _extendStatics200(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeStrokeWidthCommand = void 0;\n\n var ChangeStylePropertyCommand_1 = __webpack_require__(74);\n\n var ChangeStrokeWidthCommand =\n /** @class */\n function (_super) {\n __extends(ChangeStrokeWidthCommand, _super);\n\n function ChangeStrokeWidthCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeStrokeWidthCommand.prototype.getStyleProperty = function () {\n return \"stroke-width\";\n };\n\n return ChangeStrokeWidthCommand;\n }(ChangeStylePropertyCommand_1.ChangeStylePropertyCommand);\n\n exports.ChangeStrokeWidthCommand = ChangeStrokeWidthCommand;\n /***/\n },\n /* 296 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics201 = function extendStatics(d, b) {\n _extendStatics201 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics201(d, b);\n };\n\n return function (d, b) {\n _extendStatics201(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoLayoutTreeVerticalBottomToTopCommand = void 0;\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var AutoLayoutTreeVerticalCommand_1 = __webpack_require__(138);\n\n var AutoLayoutTreeVerticalBottomToTopCommand =\n /** @class */\n function (_super) {\n __extends(AutoLayoutTreeVerticalBottomToTopCommand, _super);\n\n function AutoLayoutTreeVerticalBottomToTopCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AutoLayoutTreeVerticalBottomToTopCommand.prototype.createLayoutSettings = function () {\n var settings = _super.prototype.createLayoutSettings.call(this);\n\n settings.direction = LayoutSettings_1.LogicalDirectionKind.Backward;\n return settings;\n };\n\n return AutoLayoutTreeVerticalBottomToTopCommand;\n }(AutoLayoutTreeVerticalCommand_1.AutoLayoutTreeVerticalCommand);\n\n exports.AutoLayoutTreeVerticalBottomToTopCommand = AutoLayoutTreeVerticalBottomToTopCommand;\n /***/\n },\n /* 297 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics202 = function extendStatics(d, b) {\n _extendStatics202 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics202(d, b);\n };\n\n return function (d, b) {\n _extendStatics202(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoLayoutTreeHorizontalRightToLeftCommand = void 0;\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var AutoLayoutTreeHorizontalCommand_1 = __webpack_require__(144);\n\n var AutoLayoutTreeHorizontalRightToLeftCommand =\n /** @class */\n function (_super) {\n __extends(AutoLayoutTreeHorizontalRightToLeftCommand, _super);\n\n function AutoLayoutTreeHorizontalRightToLeftCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AutoLayoutTreeHorizontalRightToLeftCommand.prototype.createLayoutSettings = function () {\n var settings = _super.prototype.createLayoutSettings.call(this);\n\n settings.direction = LayoutSettings_1.LogicalDirectionKind.Backward;\n return settings;\n };\n\n return AutoLayoutTreeHorizontalRightToLeftCommand;\n }(AutoLayoutTreeHorizontalCommand_1.AutoLayoutTreeHorizontalCommand);\n\n exports.AutoLayoutTreeHorizontalRightToLeftCommand = AutoLayoutTreeHorizontalRightToLeftCommand;\n /***/\n },\n /* 298 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics203 = function extendStatics(d, b) {\n _extendStatics203 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics203(d, b);\n };\n\n return function (d, b) {\n _extendStatics203(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoLayoutLayeredVerticalBottomToTopCommand = void 0;\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var AutoLayoutLayeredVerticalCommand_1 = __webpack_require__(145);\n\n var AutoLayoutLayeredVerticalBottomToTopCommand =\n /** @class */\n function (_super) {\n __extends(AutoLayoutLayeredVerticalBottomToTopCommand, _super);\n\n function AutoLayoutLayeredVerticalBottomToTopCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AutoLayoutLayeredVerticalBottomToTopCommand.prototype.createLayoutSettings = function () {\n var settings = _super.prototype.createLayoutSettings.call(this);\n\n settings.direction = LayoutSettings_1.LogicalDirectionKind.Backward;\n return settings;\n };\n\n return AutoLayoutLayeredVerticalBottomToTopCommand;\n }(AutoLayoutLayeredVerticalCommand_1.AutoLayoutLayeredVerticalCommand);\n\n exports.AutoLayoutLayeredVerticalBottomToTopCommand = AutoLayoutLayeredVerticalBottomToTopCommand;\n /***/\n },\n /* 299 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics204 = function extendStatics(d, b) {\n _extendStatics204 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics204(d, b);\n };\n\n return function (d, b) {\n _extendStatics204(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoLayoutLayeredHorizontalRightToLeftCommand = void 0;\n\n var LayoutSettings_1 = __webpack_require__(20);\n\n var AutoLayoutLayeredHorizontalCommand_1 = __webpack_require__(143);\n\n var AutoLayoutLayeredHorizontalRightToLeftCommand =\n /** @class */\n function (_super) {\n __extends(AutoLayoutLayeredHorizontalRightToLeftCommand, _super);\n\n function AutoLayoutLayeredHorizontalRightToLeftCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n AutoLayoutLayeredHorizontalRightToLeftCommand.prototype.createLayoutSettings = function () {\n var settings = _super.prototype.createLayoutSettings.call(this);\n\n settings.direction = LayoutSettings_1.LogicalDirectionKind.Backward;\n return settings;\n };\n\n return AutoLayoutLayeredHorizontalRightToLeftCommand;\n }(AutoLayoutLayeredHorizontalCommand_1.AutoLayoutLayeredHorizontalCommand);\n\n exports.AutoLayoutLayeredHorizontalRightToLeftCommand = AutoLayoutLayeredHorizontalRightToLeftCommand;\n /***/\n },\n /* 300 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics205 = function extendStatics(d, b) {\n _extendStatics205 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics205(d, b);\n };\n\n return function (d, b) {\n _extendStatics205(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectorRoutingModeCommand = void 0;\n\n var SimpleCommandBase_1 = __webpack_require__(10);\n\n var Settings_1 = __webpack_require__(28);\n\n var ChangeConnectorRoutingModeCommand =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorRoutingModeCommand, _super);\n\n function ChangeConnectorRoutingModeCommand() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ChangeConnectorRoutingModeCommand.prototype.getValue = function () {\n return this.control.settings.connectorRoutingMode;\n };\n\n ChangeConnectorRoutingModeCommand.prototype.executeCore = function (state, parameter) {\n var mode = parameter !== undefined ? parameter : Settings_1.ConnectorRoutingMode.None;\n this.control.settings.connectorRoutingMode = mode;\n return true;\n };\n\n return ChangeConnectorRoutingModeCommand;\n }(SimpleCommandBase_1.SimpleCommandBase);\n\n exports.ChangeConnectorRoutingModeCommand = ChangeConnectorRoutingModeCommand;\n /***/\n },\n /* 301 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DiagramControl = void 0;\n\n var point_1 = __webpack_require__(1);\n\n var browser_1 = __webpack_require__(19);\n\n var ModelManipulator_1 = __webpack_require__(302);\n\n var CommandManager_1 = __webpack_require__(81);\n\n var EventManager_1 = __webpack_require__(303);\n\n var Model_1 = __webpack_require__(61);\n\n var Selection_1 = __webpack_require__(332);\n\n var History_1 = __webpack_require__(335);\n\n var BarManager_1 = __webpack_require__(336);\n\n var RenderManager_1 = __webpack_require__(337);\n\n var ShapeDescriptionManager_1 = __webpack_require__(91);\n\n var DocumentDataSource_1 = __webpack_require__(345);\n\n var Settings_1 = __webpack_require__(28);\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var ViewController_1 = __webpack_require__(350);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ToolboxManager_1 = __webpack_require__(351);\n\n var Utils_1 = __webpack_require__(3);\n\n var ApiController_1 = __webpack_require__(354);\n\n var ImageCache_1 = __webpack_require__(47);\n\n var PermissionsProvider_1 = __webpack_require__(355);\n\n var ConnectorRoutingModel_1 = __webpack_require__(369);\n\n var TextMeasurer_1 = __webpack_require__(78);\n\n var Connector_1 = __webpack_require__(6);\n\n var DataLayoutParameters_1 = __webpack_require__(103);\n\n var ReloadContentParameters_1 = __webpack_require__(380);\n\n var Utils_2 = __webpack_require__(17);\n\n var ToolboxTouchDragEventsHandler_1 = __webpack_require__(381);\n\n var ToolboxPointerDragEventsHandler_1 = __webpack_require__(382);\n\n var ToolboxMouseDragEventsHandler_1 = __webpack_require__(383);\n\n var RenderManagerTouchDragEventsHandler_1 = __webpack_require__(384);\n\n var RenderManagerPointerDragEventsHandler_1 = __webpack_require__(385);\n\n var RenderManagerMouseDragEventsHandler_1 = __webpack_require__(386);\n\n var DiagramControl =\n /** @class */\n function () {\n function DiagramControl() {\n this.updateLockCount = 0;\n this.shouldUpdateItemsByModel = false;\n this.reloadContentNeeded = false;\n this.reloadContentParameters = new ReloadContentParameters_1.ReloadContentParameters();\n this.reloadContentByExternalChangesParameters = new ReloadContentParameters_1.ReloadContentParameters();\n this.settings = new Settings_1.DiagramSettings();\n this.shapeDescriptionManager = new ShapeDescriptionManager_1.ShapeDescriptionManager();\n this.shapeDescriptionManager.onShapeDecriptionChanged.add(this);\n this.model = new Model_1.DiagramModel();\n this.selection = new Selection_1.Selection(this.model);\n this.onNativeAction = new Utils_1.EventDispatcher();\n this.apiController = new ApiController_1.ApiController(this.onNativeAction, this.selection, this.model);\n this.selection.onChanged.add(this.apiController);\n this.permissionsProvider = new PermissionsProvider_1.PermissionsProvider(this.apiController);\n this.permissionsProvider.onRequestOperation.add(this);\n this.selection.onChanged.add(this.permissionsProvider);\n this.routingModel = new ConnectorRoutingModel_1.ConnectorRoutingModel();\n this.settings.onConnectorRoutingModeChanged.add(this.routingModel);\n this.modelManipulator = new ModelManipulator_1.ModelManipulator(this.model, this.routingModel, this.permissionsProvider);\n this.modelManipulator.onModelChanged.add(this.permissionsProvider);\n this.history = new History_1.History(this.modelManipulator);\n this.history.onChanged.add(this);\n this.barManager = new BarManager_1.BarManager(this);\n this.selection.onChanged.add(this.barManager);\n this.view = new ViewController_1.ViewController(this.settings, this.barManager);\n this.commandManager = new CommandManager_1.CommandManager(this);\n this.eventManager = new EventManager_1.EventManager(this);\n this.isTouchUIEnabled = this.hasTouchDragEvents || this.hasMaxTouchPoints;\n this.eventManager.initialize(this.model, this.selection, this.isTouchUIEnabled);\n this.modelManipulator.commitItemsCreateChanges();\n this.toolboxManager = new ToolboxManager_1.ToolboxManager(this.shapeDescriptionManager);\n ImageCache_1.ImageCache.instance.onReadyStateChanged.add(this);\n }\n\n Object.defineProperty(DiagramControl.prototype, \"operationSettings\", {\n get: function get() {\n return this.permissionsProvider.operationSettings;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramControl.prototype, \"hasMaxTouchPoints\", {\n get: function get() {\n return typeof navigator !== \"undefined\" && navigator[\"maxTouchPoints\"] > 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DiagramControl.prototype, \"hasTouchDragEvents\", {\n get: function get() {\n return browser_1.Browser.TouchUI;\n },\n enumerable: false,\n configurable: true\n });\n\n DiagramControl.prototype.cleanMarkup = function (removeElement) {\n removeElement = removeElement || function (element) {\n Utils_2.RenderUtils.removeElement(element);\n };\n\n this.toolboxManager.clean(removeElement);\n this.barManager.clean();\n\n if (this.render) {\n this.settings.onZoomChanged.remove(this.render.view);\n this.settings.onViewChanged.remove(this.render.page);\n this.settings.onViewChanged.remove(this.render.view);\n this.settings.onReadOnlyChanged.remove(this.render);\n this.settings.onReadOnlyChanged.remove(this.render.selection);\n this.eventManager.onTextInputOperation.remove(this.render.input);\n this.eventManager.onTextInputOperation.remove(this.render.items);\n this.eventManager.onTextInputOperation.remove(this.render.selection);\n this.eventManager.onMouseOperation.remove(this.render.items);\n this.eventManager.onMouseOperation.remove(this.render.selection);\n this.eventManager.onMouseOperation.remove(this.render.view);\n this.eventManager.onMouseOperation.remove(this.render);\n this.eventManager.onVisualizersUpdate.remove(this.render.selection);\n this.modelManipulator.onModelSizeChanged.remove(this.render.view);\n this.modelManipulator.onModelSizeChanged.remove(this.render.page);\n this.modelManipulator.onModelChanged.remove(this.render.items);\n this.modelManipulator.onModelChanged.remove(this.render.page);\n this.modelManipulator.onModelChanged.remove(this.render.selection);\n this.selection.onChanged.remove(this.render.selection);\n this.selection.onChanged.remove(this.render.items);\n this.render.clean(removeElement);\n this.render = undefined;\n }\n };\n\n DiagramControl.prototype.createDocument = function (parent, scrollView, focusElementsParent) {\n if (!this.measurer) this.initMeasurer(parent);\n if (this.render) this.render.replaceParent(parent, scrollView);else {\n this.render = new RenderManager_1.RenderManager(parent, this.eventManager, this.measurer, {\n pageColor: this.model.pageColor,\n modelSize: this.model.size,\n pageLandscape: this.model.pageLandscape,\n pageSize: this.model.pageSize,\n simpleView: this.settings.simpleView,\n readOnly: this.settings.readOnly,\n contextMenuEnabled: this.settings.contextMenuEnabled,\n gridSize: this.settings.gridSize,\n gridVisible: this.settings.showGrid,\n zoomLevel: this.settings.zoomLevel,\n autoZoom: this.settings.autoZoom,\n rectangle: this.model.getRectangle(true),\n isTouchUIEnabled: this.isTouchUIEnabled\n }, scrollView, focusElementsParent);\n this.createRenderManagerDragEventsHandler().attach(this.render);\n this.settings.onZoomChanged.add(this.render.view);\n this.settings.onViewChanged.add(this.render.page);\n this.settings.onViewChanged.add(this.render.view);\n this.settings.onReadOnlyChanged.add(this.render);\n this.settings.onReadOnlyChanged.add(this.render.selection);\n this.eventManager.onTextInputOperation.add(this.render.input);\n this.eventManager.onTextInputOperation.add(this.render.items);\n this.eventManager.onTextInputOperation.add(this.render.selection);\n this.eventManager.onTextInputOperation.add(this);\n this.eventManager.onMouseOperation.add(this.render.items);\n this.eventManager.onMouseOperation.add(this.render.selection);\n this.eventManager.onMouseOperation.add(this.render.view);\n this.eventManager.onMouseOperation.add(this.render);\n this.eventManager.onVisualizersUpdate.add(this.render.selection);\n this.modelManipulator.onModelSizeChanged.add(this.render.view);\n this.modelManipulator.onModelSizeChanged.add(this.render.page);\n this.modelManipulator.onModelChanged.add(this.render.items);\n this.modelManipulator.onModelChanged.add(this.render.page);\n this.modelManipulator.onModelChanged.add(this.render.selection);\n this.selection.onChanged.add(this.render.selection);\n this.selection.onChanged.add(this.render.items);\n this.render.update(false);\n this.render.onNewModel(this.model.items);\n this.modelManipulator.commitItemsCreateChanges();\n this.view.initialize(this.render.view);\n if (this.settings.zoomLevelWasChanged) this.raiseCanvasViewActualZoomChanged();\n this.selection.raiseSelectionChanged();\n }\n };\n\n DiagramControl.prototype.createToolbox = function (parent, renderAsText, shapes, options) {\n var toolbox = this.createToolboxCore(parent, true, renderAsText, shapes, options);\n this.settings.onReadOnlyChanged.add(toolbox);\n toolbox.onDragOperation.add(this);\n toolbox.onDragOperation.add(this.apiController);\n this.eventManager.registerToolbox(toolbox);\n };\n\n DiagramControl.prototype.createContextToolbox = function (parent, renderAsText, shapes, options, onClick) {\n if (this.contextToolbox) this.cleanContextToolbox(parent);\n this.contextToolbox = this.createToolboxCore(parent, false, renderAsText, shapes, options);\n this.contextToolbox.onClickOperation.add(this);\n this.contextToolboxOnClick = onClick;\n };\n\n DiagramControl.prototype.createToolboxCore = function (parent, allowDragging, renderAsText, shapes, options) {\n var result = this.toolboxManager.create(parent, this.settings.readOnly, allowDragging, renderAsText, shapes, this.getToolboxAllowedShapeTypes.bind(this), this.isTouchUIEnabled, options);\n this.createToolboxDragEventsHandler().attach(result);\n return result;\n };\n\n DiagramControl.prototype.getToolboxAllowedShapeTypes = function (shapeTypes) {\n var _this = this;\n\n var allowedShapeTypes = [];\n this.permissionsProvider.beginUpdateUI();\n shapeTypes.forEach(function (shapeType) {\n if (_this.permissionsProvider.canAddShapeFromToolbox(shapeType)) allowedShapeTypes.push(shapeType);\n });\n this.permissionsProvider.endUpdateUI();\n return allowedShapeTypes;\n };\n\n DiagramControl.prototype.cleanContextToolbox = function (parent) {\n if (this.contextToolbox) {\n this.toolboxManager.clean(undefined, this.contextToolbox);\n this.contextToolbox = undefined;\n }\n };\n\n DiagramControl.prototype.refreshToolbox = function (toolboxes) {\n this.permissionsProvider.clearCache(ModelOperationSettings_1.DiagramModelOperation.AddShapeFromToolbox);\n this.toolboxManager.refresh(toolboxes);\n };\n\n DiagramControl.prototype.applyToolboxFilter = function (shapeSubstring, toolboxes) {\n return this.toolboxManager.applyFilter(shapeSubstring, toolboxes);\n };\n\n DiagramControl.prototype.notifyToolboxClick = function (shapeType) {\n if (this.contextToolboxOnClick) this.contextToolboxOnClick(shapeType);\n };\n\n DiagramControl.prototype.initMeasurer = function (parent) {\n this.measurer = new TextMeasurer_1.TextMeasurer(parent);\n };\n\n DiagramControl.prototype.onDimensionChanged = function () {\n if (!browser_1.Browser.TouchUI) this.updateLayout(true);\n };\n\n DiagramControl.prototype.updateLayout = function (resetScroll) {\n if (resetScroll === void 0) {\n resetScroll = false;\n }\n\n this.render && this.render.update(!resetScroll);\n };\n\n DiagramControl.prototype.captureFocus = function () {\n this.render && this.render.input.captureFocus();\n };\n\n DiagramControl.prototype.isFocused = function () {\n return !this.render || this.render.input.isFocused();\n };\n\n DiagramControl.prototype.registerBar = function (bar) {\n this.barManager.registerBar(bar);\n };\n\n DiagramControl.prototype.updateBarItemsState = function (bar, queryCommands) {\n this.barManager.updateBarItemsState(bar, queryCommands);\n };\n\n DiagramControl.prototype.getCommand = function (key) {\n return this.commandManager.getCommand(key);\n };\n\n DiagramControl.prototype.getNativeItemByKey = function (key) {\n var item = this.model.findItem(key);\n return item && this.apiController.createNativeItem(item);\n };\n\n DiagramControl.prototype.getNativeItemByDataKey = function (dataKey) {\n var item = this.model.findItemByDataKey(dataKey);\n return item && this.apiController.createNativeItem(item);\n };\n\n DiagramControl.prototype.setInitialStyleProperties = function (style) {\n this.selection.inputPosition.setInitialStyleProperties(style);\n };\n\n DiagramControl.prototype.setInitialTextStyleProperties = function (style) {\n this.selection.inputPosition.setInitialTextStyleProperties(style);\n };\n\n DiagramControl.prototype.setInitialConnectorProperties = function (properties) {\n this.selection.inputPosition.setInitialConnectorProperties(properties);\n };\n\n DiagramControl.prototype.addCustomShapes = function (shapes) {\n var _this = this;\n\n shapes.forEach(function (shape) {\n shape.apiController = _this.apiController;\n if (shape.defaultWidth) shape.defaultWidth = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.defaultWidth);\n if (shape.defaultHeight) shape.defaultHeight = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.defaultHeight);\n if (shape.minWidth) shape.minWidth = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.minWidth);\n if (shape.minHeight) shape.minHeight = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.minHeight);\n if (shape.maxWidth) shape.maxWidth = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.maxWidth);\n if (shape.maxHeight) shape.maxHeight = ModelUtils_1.ModelUtils.getTwipsValue(_this.model.units, shape.maxHeight);\n\n _this.shapeDescriptionManager.registerCustomShape(shape);\n });\n };\n\n DiagramControl.prototype.removeCustomShapes = function (shapeTypes) {\n var _this = this;\n\n shapeTypes.forEach(function (shapeType) {\n _this.shapeDescriptionManager.unregisterCustomShape(shapeType);\n });\n };\n\n DiagramControl.prototype.removeAllCustomShapes = function () {\n this.shapeDescriptionManager.unregisterAllCustomShapes();\n };\n\n DiagramControl.prototype.importModel = function (model) {\n this.model = model;\n this.model.initializeKeyCounter();\n this.apiController.model = model;\n this.onImportData();\n };\n\n DiagramControl.prototype.importItemsData = function () {\n this.model.iterateItems(function (item) {\n if (item instanceof Connector_1.Connector) item.invalidateRenderPoints();\n });\n this.onImportData();\n };\n\n DiagramControl.prototype.onImportData = function () {\n if (this.render) {\n this.render.clear();\n this.render.onNewModel(this.model.items);\n }\n\n this.permissionsProvider.clearCache();\n this.selection.initialize(this.model);\n this.modelManipulator.initialize(this.model, this.routingModel);\n this.history.clear();\n this.eventManager.initialize(this.model, this.selection, this.isTouchUIEnabled);\n this.modelManipulator.commitPageChanges();\n this.modelManipulator.commitItemsCreateChanges();\n this.notifyViewChanged();\n this.notifyHistoryChanged();\n };\n\n DiagramControl.prototype.createDocumentDataSource = function (nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter) {\n this.documentDataSource = new DocumentDataSource_1.DocumentDataSource(this, nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter);\n this.apiController.setDataSource(this.documentDataSource);\n return this.documentDataSource;\n };\n\n DiagramControl.prototype.deleteDocumentDataSource = function () {\n this.apiController.setDataSource(null);\n delete this.documentDataSource;\n };\n\n DiagramControl.prototype.applyShapeSizeSettings = function (settings) {\n this.settings.applyShapeSizeSettings(settings, this.model.units);\n };\n\n DiagramControl.prototype.applyOperationSettings = function (settings) {\n this.permissionsProvider.operationSettings.applySettings(settings);\n };\n\n DiagramControl.prototype.beginUpdateCanvas = function () {\n if (this.render) {\n this.render.items.beginUpdate();\n this.render.selection.beginUpdate();\n }\n };\n\n DiagramControl.prototype.endUpdateCanvas = function () {\n if (this.render) {\n this.render.items.endUpdate();\n this.render.selection.endUpdate();\n }\n };\n\n DiagramControl.prototype.beginUpdate = function () {\n this.barManager.beginUpdate();\n this.apiController.beginUpdate();\n this.eventManager.beginUpdate();\n };\n\n DiagramControl.prototype.endUpdate = function () {\n this.barManager.endUpdate();\n this.apiController.endUpdate();\n this.eventManager.endUpdate();\n }; // IDataChangesListener\n\n\n DiagramControl.prototype.notifyEdgeInserted = function (data, callback, errorCallback) {\n if (this.onEdgeInserted) this.onEdgeInserted(data, callback, errorCallback);else callback(data);\n };\n\n DiagramControl.prototype.notifyEdgeUpdated = function (key, data, callback, errorCallback) {\n if (this.onEdgeUpdated) this.onEdgeUpdated(key, data, callback, errorCallback);else callback(key, data);\n };\n\n DiagramControl.prototype.notifyEdgeRemoved = function (key, data, callback, errorCallback) {\n if (this.onEdgeUpdated) this.onEdgeRemoved(key, data, callback, errorCallback);else callback(key, data);\n };\n\n DiagramControl.prototype.notifyNodeInserted = function (data, callback, errorCallback) {\n if (this.onNodeInserted) this.onNodeInserted(data, callback, errorCallback);else callback(data);\n };\n\n DiagramControl.prototype.notifyNodeUpdated = function (key, data, callback, errorCallback) {\n if (this.onNodeUpdated) this.onNodeUpdated(key, data, callback, errorCallback);else callback(key, data);\n };\n\n DiagramControl.prototype.notifyNodeRemoved = function (key, data, callback, errorCallback) {\n if (this.onNodeRemoved) this.onNodeRemoved(key, data, callback, errorCallback);else callback(key, data);\n };\n\n DiagramControl.prototype.reloadInsertedItem = function (dataKey) {\n if (this.settings.reloadInsertedItemRequired) this.reloadContent(dataKey);\n };\n\n DiagramControl.prototype.reloadContent = function (dataKey, getData, layoutParameters, isExternalChanges) {\n if (!this.documentDataSource) return;\n if (this.isChangesLocked()) this.reloadContentNeeded = true;\n var addNewHistoryItem = isExternalChanges === true || isExternalChanges === undefined && !this.reloadContentNeeded;\n var reloadContentParameters = addNewHistoryItem ? this.reloadContentByExternalChangesParameters : this.reloadContentParameters;\n reloadContentParameters.add(dataKey, getData, layoutParameters);\n\n if (!this.isChangesLocked()) {\n this.reloadContentCore(reloadContentParameters, addNewHistoryItem);\n this.barManager.updateItemsState();\n }\n };\n\n DiagramControl.prototype.reloadContentCore = function (parameters, addNewHistoryItem) {\n var _this = this;\n\n var data = parameters.getData && parameters.getData();\n var changes = this.documentDataSource.refetchData(data && data.nodeDataSource, data && data.edgeDataSource);\n this.beginUpdateCanvas();\n this.permissionsProvider.lockPermissions();\n this.documentDataSource.updateModelItems(this.history, this.model, this.shapeDescriptionManager, this.selection, new DataLayoutParameters_1.DataLayoutParameters(this.settings, parameters.layoutParameters), addNewHistoryItem, parameters.dataKeys, function (item) {\n _this.modelManipulator.commitItemUpdateChanges(item);\n }, changes, this.settings.snapToGrid, this.settings.gridSize, this.measurer);\n this.permissionsProvider.unlockPermissions();\n this.endUpdateCanvas();\n parameters.clear();\n };\n\n DiagramControl.prototype.notifyHistoryChanged = function () {\n if (this.documentDataSource) {\n this.shouldUpdateItemsByModel = true;\n if (!this.settings.readOnly) this.notifyDataChanges();\n } else this.raiseOnChanged();\n };\n\n DiagramControl.prototype.notifyViewChanged = function () {\n this.settings.notifyViewChanged();\n };\n\n DiagramControl.prototype.notifyToolboxDragStart = function () {\n if (this.onToolboxDragStart) this.onToolboxDragStart();\n };\n\n DiagramControl.prototype.notifyToolboxDragEnd = function () {\n if (this.onToolboxDragEnd) this.onToolboxDragEnd();\n };\n\n DiagramControl.prototype.notifyTextInputStart = function (item, text, position, size) {\n if (this.onTextInputStart) this.onTextInputStart();\n };\n\n DiagramControl.prototype.notifyTextInputEnd = function (item) {\n if (this.onTextInputEnd) this.onTextInputEnd();\n };\n\n DiagramControl.prototype.notifyTextInputPermissionsCheck = function (item, allowed) {};\n\n DiagramControl.prototype.notifyToggleFullscreen = function (value) {\n if (this.onToggleFullscreen) this.onToggleFullscreen(value);\n };\n\n DiagramControl.prototype.notifyShowContextMenu = function (eventPoint, modelPoint, isTouchMode) {\n if (this.onShowContextMenu && this.render) {\n var selection = void 0;\n var selectedItems = this.selection.getSelectedItems(true);\n\n if (selectedItems.length > 0) {\n var rect = ModelUtils_1.ModelUtils.createRectangle(this.selection.getSelectedItems(true));\n var pos = this.render.getEventPointByModelPoint(rect.createPosition());\n var size = this.render.view.getAbsoluteSize(rect.createSize());\n selection = {\n x: pos.x,\n y: pos.y,\n width: size.width,\n height: size.height\n };\n }\n\n if (eventPoint) {\n this.contextMenuPosition = new point_1.Point(eventPoint.x, eventPoint.y);\n this.onShowContextMenu(eventPoint.x, eventPoint.y, isTouchMode, selection);\n } else if (modelPoint) {\n var point = this.render.getEventPointByModelPoint(modelPoint);\n this.contextMenuPosition = point.clone();\n this.onShowContextMenu(point.x, point.y, isTouchMode, selection);\n }\n }\n };\n\n DiagramControl.prototype.notifyHideContextMenu = function () {\n if (this.onHideContextMenu && this.render) this.onHideContextMenu();\n };\n\n DiagramControl.prototype.notifyShowContextToolbox = function (modelPoint, getPositionToInsertShapeTo, side, category, callback) {\n if (this.onShowContextToolbox && this.render) {\n var point = this.render.getEventPointByModelPoint(modelPoint);\n this.onShowContextToolbox(point.x, point.y, side, category, callback);\n this.render.view.notifyShowContextToolbox();\n }\n };\n\n DiagramControl.prototype.notifyHideContextToolbox = function () {\n if (this.onHideContextToolbox && this.render) {\n this.onHideContextToolbox();\n this.render.view.notifyHideContextToolbox();\n }\n };\n\n DiagramControl.prototype.notifyShapeDescriptionChanged = function (description) {\n this.modelManipulator.updateShapeDescription(description);\n };\n\n DiagramControl.prototype.notifyImageCacheReadyStateChanged = function (ready) {\n this.barManager.updateItemsState();\n };\n\n DiagramControl.prototype.raiseCanvasViewActualZoomChanged = function () {\n this.render.view.raiseActualZoomChanged();\n };\n\n DiagramControl.prototype.notifyRequestOperation = function (operation, args) {\n if (this.requestOperationByDataSource(operation, args)) return;\n if (this.onRequestOperation) this.onRequestOperation(operation, args);\n };\n\n DiagramControl.prototype.requestOperationByDataSource = function (operation, args) {\n if (!(this.documentDataSource && (this.documentDataSource.IsNodeParentIdMode() || this.documentDataSource.IsNodeItemsMode()))) return false;\n\n if (operation === ModelOperationSettings_1.DiagramModelOperation.ChangeConnection) {\n var e = args;\n var shape = e.shape && this.model.findItem(e.shape.id);\n var connector = e.connector && this.model.findItem(e.connector.id);\n if (!(shape && connector)) return; // shape can have only one incoming connection\n\n if (e.position === Connector_1.ConnectorPosition.End) for (var i = 0; i < shape.attachedConnectors.length; i++) {\n var attachedConnector = shape.attachedConnectors[i];\n\n if (attachedConnector !== connector && attachedConnector.endItem && attachedConnector.endItem === shape) {\n e.allowed = false;\n break;\n }\n } // circular reference is not allowed\n\n if (e.allowed && connector.beginItem && connector.endItem && this.isShapeParent(connector.endItem, connector.beginItem)) e.allowed = false;\n }\n\n return !args.allowed;\n };\n\n DiagramControl.prototype.isShapeParent = function (parentShape, shape) {\n if (parentShape === shape) return true;\n\n for (var i = 0; i < parentShape.attachedConnectors.length; i++) {\n var attachedConnector = parentShape.attachedConnectors[i];\n\n if (attachedConnector.beginItem === parentShape && attachedConnector.endItem) {\n var childShape = attachedConnector.endItem;\n if (childShape === shape || this.isShapeParent(childShape, shape)) return true;\n }\n }\n\n return false;\n };\n\n DiagramControl.prototype.isChangesLocked = function () {\n return this.updateLockCount > 0;\n };\n\n DiagramControl.prototype.beginChangesNotification = function () {\n if (!this.isChangesLocked()) if (this.changesLockChanged) this.changesLockChanged(true);\n this.updateLockCount++;\n };\n\n DiagramControl.prototype.endChangesNotification = function (preventNotifyReloadContent) {\n var _this = this;\n\n this.updateLockCount--;\n\n if (!this.isChangesLocked()) {\n this.changesLockChanged(false);\n if (!preventNotifyReloadContent) setTimeout(function () {\n _this.notifyReloadContent();\n\n _this.notifyDataChanges();\n }, 0);\n }\n };\n\n DiagramControl.prototype.changesLockChanged = function (locked) {\n if (locked) this.lockedReadOnly = this.settings.readOnly;else locked = this.lockedReadOnly;\n this.commandManager.getCommand(CommandManager_1.DiagramCommand.ToggleReadOnly).execute(locked);\n };\n\n DiagramControl.prototype.notifyDataChanges = function () {\n if (this.isChangesLocked()) return;\n\n if (this.shouldUpdateItemsByModel) {\n this.documentDataSource.updateItemsByModel(this.model);\n this.shouldUpdateItemsByModel = false;\n }\n\n this.raiseOnChanged();\n };\n\n DiagramControl.prototype.notifyReloadContent = function () {\n if (this.reloadContentNeeded) {\n if (!this.reloadContentParameters.empty) this.reloadContentCore(this.reloadContentParameters, false);\n if (!this.reloadContentByExternalChangesParameters.empty) this.reloadContentCore(this.reloadContentByExternalChangesParameters, true);\n this.reloadContentNeeded = false;\n }\n };\n\n DiagramControl.prototype.raiseOnChanged = function () {\n if (this.onChanged) this.onChanged();\n };\n\n DiagramControl.prototype.createRenderManagerDragEventsHandler = function () {\n if (window.PointerEvent) return new RenderManagerPointerDragEventsHandler_1.RenderManagerPointerDragEventsHandler();else if (this.hasTouchDragEvents) return new RenderManagerTouchDragEventsHandler_1.RenderManagerTouchDragEventsHandler();\n return new RenderManagerMouseDragEventsHandler_1.RenderManagerMouseDragEventsHandler();\n };\n\n DiagramControl.prototype.createToolboxDragEventsHandler = function () {\n if (window.PointerEvent) return new ToolboxPointerDragEventsHandler_1.ToolboxPointerDragEventsHandler(this.isTouchUIEnabled);else if (this.hasTouchDragEvents) return new ToolboxTouchDragEventsHandler_1.ToolboxTouchDragEventsHandler(this.isTouchUIEnabled);\n return new ToolboxMouseDragEventsHandler_1.ToolboxMouseDragEventsHandler(this.isTouchUIEnabled);\n };\n\n return DiagramControl;\n }();\n\n exports.DiagramControl = DiagramControl;\n /***/\n },\n /* 302 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ModelManipulator = void 0;\n\n var offsets_1 = __webpack_require__(87);\n\n var size_1 = __webpack_require__(2);\n\n var Diagnostics_1 = __webpack_require__(59);\n\n var ImageCache_1 = __webpack_require__(47);\n\n var ImageLoader_1 = __webpack_require__(131);\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var Utils_1 = __webpack_require__(3);\n\n var Connector_1 = __webpack_require__(6);\n\n var ModelChange_1 = __webpack_require__(99);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ModelManipulator =\n /** @class */\n function () {\n function ModelManipulator(model, routingModel, permissionsProvider) {\n this.onModelChanged = new Utils_1.EventDispatcher();\n this.onModelSizeChanged = new Utils_1.EventDispatcher();\n this.initializeCore(model, routingModel);\n this.permissionsProvider = permissionsProvider;\n this.imageLoader = new ImageLoader_1.ImageLoader(this.updateShapeImage.bind(this));\n }\n\n ModelManipulator.prototype.initialize = function (model, routingModel) {\n this.initializeCore(model, routingModel);\n this.model.loadAllImages(this.imageLoader);\n this.updateModelSize();\n };\n\n ModelManipulator.prototype.initializeCore = function (model, routingModel) {\n this.model = model;\n this.routingModel = routingModel;\n if (this.routingModel) this.routingModel.initialize(model);\n };\n\n ModelManipulator.prototype.commitPageChanges = function () {\n this.raisePageSizeChanged(this.model.pageSize.clone(), this.model.pageLandscape);\n this.raiseModelSizeChanged(this.model.size.clone());\n this.raisePageColorChanged(this.model.pageColor);\n this.raiseModelRectangleChanged(ModelUtils_1.ModelUtils.createRectangle(this.model.items));\n };\n\n ModelManipulator.prototype.commitItemsCreateChanges = function () {\n Diagnostics_1.Diagnostics.timer(\"new model: model changes\");\n this.commitItemsChangesCore(ModelChange_1.ItemChangeType.Create, this.model.items);\n Diagnostics_1.Diagnostics.endTimer();\n };\n\n ModelManipulator.prototype.commitItemUpdateChanges = function (item) {\n this.commitItemsChangesCore(ModelChange_1.ItemChangeType.UpdateStructure, [item]);\n };\n\n ModelManipulator.prototype.commitItemsChangesCore = function (changeType, items) {\n var changes = [];\n items.forEach(function (item) {\n changes.push(new ModelChange_1.ItemChange(item, changeType));\n });\n if (changes.length) this.raiseModelChanged(changes);\n }; // Items\n\n\n ModelManipulator.prototype.insertToContainer = function (item, container) {\n if (item.container && container && item.container.key !== container.key) throw Error(\"To insert an item to a container it's necessary to remove it from the current container.\");\n\n if (container) {\n if (container.children.indexOf(item) === -1) container.children.push(item);\n item.container = container;\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.Update)]);\n }\n };\n\n ModelManipulator.prototype.removeFromContainer = function (item) {\n if (item.container) {\n var index = item.container.children.indexOf(item);\n item.container.children.splice(index, 1);\n item.container = undefined;\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.Update)]);\n }\n };\n\n ModelManipulator.prototype.changeStyle = function (item, styleProperty, styleValue) {\n this.changeStyleCore(item, item.style, styleProperty, styleValue);\n };\n\n ModelManipulator.prototype.changeStyleText = function (item, styleProperty, styleValue) {\n this.changeStyleCore(item, item.styleText, styleProperty, styleValue);\n }; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n\n ModelManipulator.prototype.changeStyleCore = function (item, styleObj, styleProperty, styleValue) {\n if (styleValue !== undefined) styleObj[styleProperty] = styleValue;else delete styleObj[styleProperty];\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.UpdateProperties)]);\n };\n\n ModelManipulator.prototype.changeZIndex = function (item, zIndex) {\n item.zIndex = zIndex;\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.Update)]);\n };\n\n ModelManipulator.prototype.changeLocked = function (item, locked) {\n item.locked = locked;\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.UpdateClassName)]);\n }; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n\n ModelManipulator.prototype.changeCustomData = function (item, data) {\n item.customData = Utils_1.ObjectUtils.cloneObject(data);\n this.raiseModelChanged([new ModelChange_1.ItemChange(item, ModelChange_1.ItemChangeType.UpdateStructure)]);\n };\n\n ModelManipulator.prototype.addShape = function (shape, key) {\n if (shape.attachedConnectors.length) throw Error(\"A creating shape should not contain existing connectors.\");\n shape.key = key !== undefined ? key : this.model.getNextKey();\n return this.insertShape(shape);\n };\n\n ModelManipulator.prototype.insertShape = function (shape) {\n this.model.pushItem(shape);\n var allowed = this.permissionsProvider.canAddItems([shape]);\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.Create, allowed)]);\n this.model.loadAllImages(this.imageLoader);\n return shape;\n };\n\n ModelManipulator.prototype.resizeShape = function (shape, position, size) {\n shape.position = position;\n shape.size = size;\n var allowed = this.permissionsProvider.isStoredPermissionsGranted();\n var resizeInteractingItem = this.getInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.ResizeShape);\n\n if (resizeInteractingItem) {\n var oldSize = resizeInteractingItem.size.clone();\n var size_2 = shape.size.clone();\n if (!size_2.equals(oldSize)) allowed = this.permissionsProvider.canResizeShapes([{\n shape: shape,\n size: size_2,\n oldSize: oldSize\n }]);\n }\n\n var moveInteractingItem = this.getInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.MoveShape);\n\n if (moveInteractingItem) {\n var oldPosition = moveInteractingItem.position.clone();\n var position_1 = shape.position.clone();\n if (!position_1.equals(oldPosition)) allowed = this.permissionsProvider.canMoveShapes([{\n shape: shape,\n position: position_1,\n oldPosition: oldPosition\n }]);\n }\n\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\n };\n\n ModelManipulator.prototype.moveShape = function (shape, position) {\n shape.position = position;\n var allowed = this.permissionsProvider.isStoredPermissionsGranted();\n var addInteractingItem = this.getInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.AddShape);\n if (addInteractingItem) allowed = this.permissionsProvider.canAddItems([shape]);\n var moveInteractingItem = this.getInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.MoveShape);\n\n if (moveInteractingItem) {\n var oldPosition = moveInteractingItem.position.clone();\n var position_2 = shape.position.clone();\n if (!position_2.equals(oldPosition)) allowed = this.permissionsProvider.canMoveShapes([{\n shape: shape,\n position: position_2,\n oldPosition: oldPosition\n }]);\n }\n\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\n };\n\n ModelManipulator.prototype.changeShapeParameters = function (shape, parameters) {\n shape.parameters.forEach(function (p) {\n var parameter = parameters.get(p.key);\n if (parameter) p.value = parameter.value;\n });\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateProperties)]);\n };\n\n ModelManipulator.prototype.changeShapeText = function (shape, text) {\n shape.text = text;\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateStructure)]);\n };\n\n ModelManipulator.prototype.changeShapeImage = function (shape, image) {\n shape.image = image;\n var cachedImage = ImageCache_1.ImageCache.instance.createUnloadedInfoByShapeImageInfo(image);\n this.imageLoader.load(cachedImage);\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateStructure)]);\n };\n\n ModelManipulator.prototype.changeShapeExpanded = function (shape, expanded) {\n shape.expanded = expanded;\n shape.toggleExpandedSize();\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.UpdateStructure)]);\n };\n\n ModelManipulator.prototype.deleteShape = function (shape, allowed) {\n if (shape.attachedConnectors.length) throw Error(\"A removing shape should not contain existing connectors.\");\n this.removeShape(shape, allowed);\n };\n\n ModelManipulator.prototype.removeShape = function (shape, allowed) {\n this.model.removeItem(shape);\n this.raiseModelChanged([new ModelChange_1.ItemChange(shape, ModelChange_1.ItemChangeType.Remove, allowed)]);\n };\n\n ModelManipulator.prototype.updateShapeImage = function (cacheImageInfo) {\n if (!cacheImageInfo.imageUrl) return;\n var shapes = this.model.findShapesByImageUrl(cacheImageInfo.imageUrl);\n shapes.forEach(function (shape) {\n if (cacheImageInfo.base64) shape.image.loadBase64Content(cacheImageInfo.base64);else shape.image.setUnableToLoadFlag();\n });\n this.commitItemsChangesCore(ModelChange_1.ItemChangeType.UpdateStructure, shapes);\n };\n\n ModelManipulator.prototype.updateShapeDescription = function (description) {\n var shapes = this.model.findShapesByDescription(description);\n this.commitItemsChangesCore(ModelChange_1.ItemChangeType.UpdateProperties, shapes);\n }; // Connectors\n\n\n ModelManipulator.prototype.addConnector = function (connector, key) {\n if (connector.beginItem || connector.endItem) throw Error(\"Creating connector should not contain begin/end items\");\n connector.key = key !== undefined ? key : this.model.getNextKey();\n return this.insertConnector(connector);\n };\n\n ModelManipulator.prototype.insertConnector = function (connector) {\n this.model.pushItem(connector);\n var routingStrategy = this.routingModel.createStrategy(connector.properties.lineOption);\n if (routingStrategy) connector.changeRoutingStrategy(routingStrategy);else connector.clearRoutingStrategy();\n var allowed = this.permissionsProvider.canAddItems([connector]);\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.Create, allowed)]);\n return connector;\n };\n\n ModelManipulator.prototype.deleteConnector = function (connector) {\n if (connector.beginItem || connector.endItem) throw Error(\"Creating connector should not contain begin/end items\");\n this.removeConnector(connector);\n };\n\n ModelManipulator.prototype.removeConnector = function (connector) {\n this.model.removeItem(connector);\n var allowed = this.permissionsProvider.canDeleteItems([connector]);\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.Remove, allowed)]);\n };\n\n ModelManipulator.prototype.addDeleteConnectorPoint = function (connector, callBack) {\n var oldConnectorPoints = this.getConnectorInteractingPoints(connector);\n callBack(connector);\n this.addDeleteConnectorPointCore(connector, oldConnectorPoints);\n };\n\n ModelManipulator.prototype.moveConnectorPoint = function (connector, pointIndex, callBack) {\n callBack(connector);\n this.moveConnectorPointCore(connector, pointIndex);\n };\n\n ModelManipulator.prototype.changeConnectorPoints = function (connector, callBack) {\n var _this = this;\n\n callBack(connector);\n connector.points.forEach(function (_, i) {\n return _this.moveConnectorPointCore(connector, i);\n });\n };\n\n ModelManipulator.prototype.moveConnectorPointCore = function (connector, pointIndex) {\n var interactingItem = this.getInteractingItem(connector);\n var allowed = this.permissionsProvider.isStoredPermissionsGranted();\n\n if (interactingItem) {\n var changeConnectionPoints = 0 < pointIndex && pointIndex < connector.points.length - 1;\n changeConnectionPoints = changeConnectionPoints || pointIndex === 0 && !connector.beginItem;\n changeConnectionPoints = changeConnectionPoints || pointIndex === connector.points.length - 1 && !connector.endItem;\n\n if (changeConnectionPoints) {\n var oldConnectorPoints = interactingItem.points.map(function (p) {\n return p.clone();\n });\n var newConnectorPoints = connector.points.map(function (p) {\n return p.clone();\n });\n if (!Utils_1.GeometryUtils.arePointsEqual(oldConnectorPoints, newConnectorPoints)) allowed = this.permissionsProvider.canChangeConnectorPoints(connector, oldConnectorPoints, newConnectorPoints);\n }\n }\n\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\n };\n\n ModelManipulator.prototype.getConnectorInteractingPoints = function (connector) {\n var interactingItem = this.getInteractingItem(connector);\n return interactingItem ? interactingItem.points.map(function (p) {\n return p.clone();\n }) : connector.points.map(function (p) {\n return p.clone();\n });\n };\n\n ModelManipulator.prototype.addDeleteConnectorPointCore = function (connector, oldConnectorPoints) {\n var allowed = this.permissionsProvider.isStoredPermissionsGranted();\n var newConnectorPoints = connector.points.map(function (p) {\n return p.clone();\n });\n if (!Utils_1.GeometryUtils.arePointsEqual(oldConnectorPoints, newConnectorPoints)) allowed = this.permissionsProvider.canChangeConnectorPoints(connector, oldConnectorPoints, newConnectorPoints);\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\n };\n\n ModelManipulator.prototype.addConnection = function (connector, item, connectionPointIndex, position) {\n var existingItem = connector.getExtremeItem(position);\n var existingConnectionPointIndex = connector.getExtremeConnectionPointIndex(position);\n if (existingItem === item && existingConnectionPointIndex === connectionPointIndex) return;else if (existingItem) throw Error(\"Connector is already connected\");\n item.attachedConnectors.push(connector);\n\n if (position === Connector_1.ConnectorPosition.Begin) {\n connector.beginItem = item;\n connector.beginConnectionPointIndex = connectionPointIndex;\n } else {\n connector.endItem = item;\n connector.endConnectionPointIndex = connectionPointIndex;\n }\n\n connector.invalidateRenderPoints();\n var allowed = this.permissionsProvider.canChangeConnection(connector, item, undefined, position, connectionPointIndex);\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\n };\n\n ModelManipulator.prototype.setConnectionPointIndex = function (connector, connectionPointIndex, position) {\n if (!connector.getExtremeItem(position)) throw Error(\"Connection should be connected\");\n if (position === Connector_1.ConnectorPosition.Begin) connector.beginConnectionPointIndex = connectionPointIndex;else connector.endConnectionPointIndex = connectionPointIndex;\n connector.invalidateRenderPoints();\n var item = connector.getExtremeItem(position);\n var allowed = this.permissionsProvider.canChangeConnection(connector, item, item, position, connectionPointIndex);\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\n };\n\n ModelManipulator.prototype.deleteConnection = function (connector, position) {\n var item = connector.getExtremeItem(position);\n if (!item) return;\n item.attachedConnectors.splice(item.attachedConnectors.indexOf(connector), 1);\n\n if (position === Connector_1.ConnectorPosition.Begin) {\n connector.beginItem = null;\n connector.beginConnectionPointIndex = -1;\n } else {\n connector.endItem = null;\n connector.endConnectionPointIndex = -1;\n }\n\n connector.invalidateRenderPoints();\n var allowed = this.permissionsProvider.canChangeConnection(connector, undefined, item, position, -1);\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties, allowed)]);\n }; // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\n\n ModelManipulator.prototype.changeConnectorProperty = function (connector, propertyName, value) {\n connector.properties[propertyName] = value;\n\n if (propertyName === \"lineOption\") {\n var routingStrategy = this.routingModel ? this.routingModel.createStrategy(connector.properties.lineOption) : undefined;\n if (routingStrategy) connector.changeRoutingStrategy(routingStrategy);else connector.clearRoutingStrategy();\n } else connector.invalidateRenderPoints();\n\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties)]);\n };\n\n ModelManipulator.prototype.changeConnectorText = function (connector, text, position) {\n connector.setText(text, position);\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateStructure)]);\n };\n\n ModelManipulator.prototype.changeConnectorTextPosition = function (connector, position, newPosition) {\n var text = connector.getText(position);\n connector.setText(null, position);\n connector.setText(text, newPosition);\n this.raiseModelChanged([new ModelChange_1.ItemChange(connector, ModelChange_1.ItemChangeType.UpdateProperties)]);\n }; // Model\n\n\n ModelManipulator.prototype.changeModelSize = function (size, offset) {\n this.model.size.width = size.width;\n this.model.size.height = size.height;\n this.raiseModelSizeChanged(this.model.size.clone(), offset);\n\n if (offset.left || offset.top) {\n this.model.snapStartPoint = this.model.snapStartPoint.clone().offset(offset.left, offset.top);\n this.raiseSnapPointChange(this.model.snapStartPoint);\n }\n };\n\n ModelManipulator.prototype.changePageSize = function (value) {\n if (!this.model.pageSize.equals(value)) {\n this.model.pageSize = value;\n this.model.size = new size_1.Size(this.model.pageWidth, this.model.pageHeight);\n this.raiseModelSizeChanged(this.model.size.clone());\n this.raisePageSizeChanged(this.model.pageSize, this.model.pageLandscape);\n }\n };\n\n ModelManipulator.prototype.changePageLandscape = function (value) {\n if (this.model.pageLandscape !== value) {\n this.model.pageLandscape = value;\n\n if (this.model.pageSize.width !== this.model.pageSize.height) {\n this.model.size = new size_1.Size(this.model.pageWidth, this.model.pageHeight);\n this.raiseModelSizeChanged(this.model.size.clone());\n this.raisePageSizeChanged(this.model.pageSize, this.model.pageLandscape);\n }\n }\n };\n\n ModelManipulator.prototype.changePageColor = function (value) {\n if (this.model.pageColor !== value) {\n this.model.pageColor = value;\n this.raisePageColorChanged(value);\n }\n };\n\n ModelManipulator.prototype.updateModelSize = function () {\n var offset = this.getModelSizeUpdateOffset();\n\n if (!offset.isEmpty()) {\n var newWidth = Math.max(this.model.size.width + offset.left + offset.right, this.model.pageWidth);\n var newHeight = Math.max(this.model.size.height + offset.top + offset.bottom, this.model.pageHeight);\n this.model.size = new size_1.Size(newWidth, newHeight);\n }\n };\n\n ModelManipulator.prototype.getModelSizeUpdateOffset = function () {\n var oldRectangle = this.model.getRectangle(false);\n var newRectangle = this.model.getRectangle(true);\n if (!newRectangle.equals(oldRectangle)) this.raiseModelRectangleChanged(newRectangle);\n return this.createModelRectangleOffset(newRectangle);\n };\n\n ModelManipulator.prototype.createModelRectangleOffset = function (rectangle) {\n var pageWidth = this.model.pageWidth;\n var pageHeight = this.model.pageHeight;\n var size = this.model.size;\n return new offsets_1.Offsets(-Math.floor(rectangle.x / pageWidth) * pageWidth, -Math.floor((size.width - rectangle.right) / pageWidth) * pageWidth, -Math.floor(rectangle.y / pageHeight) * this.model.pageHeight, -Math.floor((size.height - rectangle.bottom) / pageHeight) * pageHeight);\n };\n\n ModelManipulator.prototype.raiseModelChanged = function (changes) {\n this.onModelChanged.raise1(function (l) {\n return l.notifyModelChanged(changes);\n });\n };\n\n ModelManipulator.prototype.raisePageColorChanged = function (color) {\n this.onModelChanged.raise1(function (l) {\n return l.notifyPageColorChanged(color);\n });\n };\n\n ModelManipulator.prototype.raisePageSizeChanged = function (pageSize, pageLandscape) {\n this.onModelChanged.raise1(function (l) {\n return l.notifyPageSizeChanged(pageSize, pageLandscape);\n });\n };\n\n ModelManipulator.prototype.raiseModelSizeChanged = function (size, offset) {\n this.onModelSizeChanged.raise1(function (l) {\n return l.notifyModelSizeChanged(size, offset);\n });\n };\n\n ModelManipulator.prototype.raiseModelRectangleChanged = function (rectangle) {\n this.onModelSizeChanged.raise1(function (l) {\n return l.notifyModelRectangleChanged(rectangle);\n });\n };\n\n ModelManipulator.prototype.raiseSnapPointChange = function (point) {\n this.onModelSizeChanged.raise1(function (l) {\n return l.notifySnapPointPositionChanged(point);\n });\n };\n\n ModelManipulator.prototype.getInteractingItem = function (item, operation) {\n return this.permissionsProvider.getInteractingItem(item, operation);\n };\n\n return ModelManipulator;\n }();\n\n exports.ModelManipulator = ModelManipulator;\n /***/\n },\n /* 303 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.EventManager = void 0;\n\n var MouseHandler_1 = __webpack_require__(304);\n\n var Utils_1 = __webpack_require__(3);\n\n var TextInputHandler_1 = __webpack_require__(323);\n\n var ContextMenuHandler_1 = __webpack_require__(324);\n\n var VisualizersManager_1 = __webpack_require__(325);\n\n var ContextToolboxHandler_1 = __webpack_require__(331);\n\n var key_1 = __webpack_require__(26);\n\n var EventManager =\n /** @class */\n function () {\n function EventManager(control) {\n this.control = control;\n this.onMouseOperation = new Utils_1.EventDispatcher();\n this.onTextInputOperation = new Utils_1.EventDispatcher();\n this.toolboxes = [];\n var settings = control.settings;\n this.visualizersManager = new VisualizersManager_1.VisualizerManager(settings);\n this.onMouseOperation.add(this.visualizersManager);\n this.contextMenuHandler = new ContextMenuHandler_1.ContextMenuHandler();\n this.contextMenuHandler.onVisibilityChanged.add(control);\n this.onMouseOperation.add(this.contextMenuHandler);\n this.onTextInputOperation.add(this.contextMenuHandler);\n this.contextToolboxHandler = new ContextToolboxHandler_1.ContextToolboxHandler();\n this.contextToolboxHandler.onVisibilityChanged.add(control);\n this.contextToolboxHandler.onVisibilityChanged.add(this.contextMenuHandler);\n this.mouseHandler = new MouseHandler_1.MouseHandler(control.history, control.view, this.visualizersManager, this.contextToolboxHandler, control.shapeDescriptionManager, settings, control.permissionsProvider);\n this.textInputHandler = new TextInputHandler_1.TextInputHandler(control);\n this.visualizersManager.onVisualizersUpdate.add(this.mouseHandler);\n }\n\n Object.defineProperty(EventManager.prototype, \"onVisualizersUpdate\", {\n get: function get() {\n return this.visualizersManager.onVisualizersUpdate;\n },\n enumerable: false,\n configurable: true\n });\n\n EventManager.prototype.registerToolbox = function (toolbox) {\n this.toolboxes.push(toolbox);\n };\n\n EventManager.prototype.initialize = function (model, selection, isTouchUIEnabled) {\n this.visualizersManager.initialize(model, this, selection, isTouchUIEnabled);\n this.mouseHandler.initialize(model, selection, isTouchUIEnabled);\n this.contextMenuHandler.initialize(selection, isTouchUIEnabled);\n this.contextToolboxHandler.initialize(isTouchUIEnabled);\n };\n\n EventManager.prototype.beginUpdate = function (lockUpdateCanvas) {\n this.contextMenuHandler.beginUpdate();\n this.visualizersManager.beginUpdate();\n };\n\n EventManager.prototype.endUpdate = function () {\n this.contextMenuHandler.endUpdate();\n this.visualizersManager.endUpdate();\n };\n\n EventManager.prototype.onMouseDown = function (evt) {\n this.mouseHandler.onMouseDown(evt);\n this.contextMenuHandler.onMouseDown(evt);\n this.visualizersManager.onMouseDown(evt);\n this.contextToolboxHandler.onMouseDown(evt);\n };\n\n EventManager.prototype.onMouseMove = function (evt) {\n this.processDragging(evt);\n this.mouseHandler.onMouseMove(evt);\n };\n\n EventManager.prototype.onMouseUp = function (evt) {\n this.contextToolboxHandler.onMouseUp(evt);\n this.mouseHandler.onMouseUp(evt);\n this.contextMenuHandler.onMouseUp(evt);\n this.visualizersManager.onMouseUp(evt);\n this.processDragging(evt);\n };\n\n EventManager.prototype.onMouseEnter = function (evt) {\n this.visualizersManager.onMouseEnter(evt);\n };\n\n EventManager.prototype.onMouseLeave = function (evt) {\n this.visualizersManager.onMouseLeave(evt);\n };\n\n EventManager.prototype.onDblClick = function (evt) {\n this.mouseHandler.onMouseDblClick(evt);\n this.textInputHandler.onDblClick(evt);\n this.control.apiController.notifyDblClick(evt);\n };\n\n EventManager.prototype.onClick = function (evt) {\n this.mouseHandler.onMouseClick(evt);\n this.control.apiController.notifyClick(evt);\n };\n\n EventManager.prototype.onContextMenu = function (evt) {\n this.contextMenuHandler.onContextMenu(evt);\n };\n\n EventManager.prototype.onLongTouch = function (evt) {\n this.mouseHandler.onLongTouch(evt);\n this.contextMenuHandler.onLongTouch(evt);\n };\n\n EventManager.prototype.onBlur = function (evt) {\n this.contextMenuHandler.onBlur(evt);\n this.contextToolboxHandler.onBlur(evt);\n this.visualizersManager.onBlur(evt);\n };\n\n EventManager.prototype.onFocus = function (evt) {\n this.contextMenuHandler.onFocus(evt);\n this.contextToolboxHandler.onFocus(evt);\n this.visualizersManager.onFocus(evt);\n };\n\n EventManager.prototype.onKeyDown = function (evt) {\n var scCode = evt.getShortcutCode();\n\n if (this.onShortcut(scCode)) {\n this.visualizersManager.updateConnectionPoints();\n this.contextMenuHandler.onShortcut(evt);\n this.contextToolboxHandler.onShortcut(evt);\n evt.preventDefault = true;\n } else if (this.isShortcutForFocusInput(scCode)) evt.preventDefault = true;\n\n this.contextMenuHandler.onKeyDown(evt);\n this.contextToolboxHandler.onKeyDown(evt);\n this.mouseHandler.onKeyDown(evt);\n };\n\n EventManager.prototype.onKeyUp = function (evt) {\n this.mouseHandler.onKeyUp(evt);\n };\n\n EventManager.prototype.onTextInputBlur = function (evt) {\n this.textInputHandler.onBlur(evt);\n this.contextMenuHandler.onTextInputBlur(evt);\n };\n\n EventManager.prototype.onTextInputFocus = function (evt) {\n this.textInputHandler.onFocus(evt);\n this.contextMenuHandler.onTextInputFocus(evt);\n };\n\n EventManager.prototype.onTextInputKeyDown = function (evt) {\n this.textInputHandler.onKeyDown(evt);\n };\n\n EventManager.prototype.onShortcut = function (code) {\n return this.control.commandManager.processShortcut(code) || this.mouseHandler.onShortcut(code);\n };\n\n EventManager.prototype.isShortcutForFocusInput = function (code) {\n return code === key_1.KeyCode.Delete || code === (key_1.KeyCode.Delete | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Delete | key_1.ModifierKey.Meta) || code === key_1.KeyCode.Backspace || code === (key_1.KeyCode.Backspace | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Backspace | key_1.ModifierKey.Shift) || code === (key_1.KeyCode.Backspace | key_1.ModifierKey.Meta) || code === key_1.KeyCode.Home || code === key_1.KeyCode.End || code === key_1.KeyCode.Up || code === (key_1.KeyCode.Up | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Up | key_1.ModifierKey.Meta) || code === key_1.KeyCode.Down || code === (key_1.KeyCode.Down | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Down | key_1.ModifierKey.Meta) || code === key_1.KeyCode.Left || code === (key_1.KeyCode.Left | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Left | key_1.ModifierKey.Meta) || code === key_1.KeyCode.Right || code === (key_1.KeyCode.Right | key_1.ModifierKey.Ctrl) || code === (key_1.KeyCode.Right | key_1.ModifierKey.Meta);\n };\n\n EventManager.prototype.onPaste = function (evt) {\n if (!this.textInputHandler.isTextInputActive() && this.control.commandManager.processPaste(evt.clipboardData)) {\n this.visualizersManager.updateConnectionPoints();\n evt.preventDefault = true;\n }\n };\n\n EventManager.prototype.onMouseWheel = function (evt) {\n if (this.mouseHandler.onWheel(evt)) evt.preventDefault = true;\n };\n\n EventManager.prototype.isFocused = function () {\n return this.control.isFocused();\n };\n\n EventManager.prototype.processDragging = function (evt) {\n var draggingEvt = this.toolboxes.filter(function (t) {\n return t.draggingObject;\n }).map(function (t) {\n return t.draggingObject.evt;\n })[0];\n\n if (draggingEvt && !this.draggingEvent) {\n this.draggingEvent = draggingEvt;\n this.mouseHandler.onDragStart(this.draggingEvent);\n this.control.captureFocus();\n } else if (!draggingEvt && this.draggingEvent) {\n delete this.draggingEvent;\n this.mouseHandler.onDragEnd(evt);\n }\n };\n\n EventManager.prototype.onDocumentDragStart = function (itemKeys) {\n this.control.beginUpdate();\n this.control.captureFocus();\n this.onMouseOperation.raise(\"notifyDragStart\", itemKeys);\n };\n\n EventManager.prototype.onDocumentDragEnd = function (itemKeys) {\n this.onMouseOperation.raise(\"notifyDragEnd\", itemKeys);\n this.control.endUpdate();\n this.control.barManager.updateItemsState();\n };\n\n EventManager.prototype.onDocumentDragScrollStart = function () {\n this.onMouseOperation.raise1(function (l) {\n return l.notifyDragScrollStart();\n });\n };\n\n EventManager.prototype.onDocumentDragScrollEnd = function () {\n this.onMouseOperation.raise1(function (l) {\n return l.notifyDragScrollEnd();\n });\n };\n\n EventManager.prototype.onDocumentClick = function (itemKeys) {\n this.control.beginUpdate();\n this.control.endUpdate();\n this.control.barManager.updateItemsState();\n };\n\n EventManager.prototype.raiseTextInputStart = function (item, text, position, size) {\n this.onTextInputOperation.raise(\"notifyTextInputStart\", item, text, position, size);\n };\n\n EventManager.prototype.raiseTextInputEnd = function (item) {\n this.onTextInputOperation.raise(\"notifyTextInputEnd\", item);\n };\n\n EventManager.prototype.raiseTextInputPermissionsCheck = function (item, allowed) {\n this.onTextInputOperation.raise(\"notifyTextInputPermissionsCheck\", item, allowed);\n };\n\n EventManager.prototype.canFinishTextEditing = function () {\n return this.textInputHandler.canFinishTextEditing();\n };\n\n return EventManager;\n }();\n\n exports.EventManager = EventManager;\n /***/\n },\n /* 304 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandler = void 0;\n\n var MouseHandlerDefaultState_1 = __webpack_require__(148);\n\n var Event_1 = __webpack_require__(14);\n\n var point_1 = __webpack_require__(1);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var MouseHandlerDefaultReadOnlyTouchState_1 = __webpack_require__(320);\n\n var MouseHandlerDefaultReadOnlyState_1 = __webpack_require__(153);\n\n var MouseHandlerDefaultTouchState_1 = __webpack_require__(321);\n\n var key_1 = __webpack_require__(26);\n\n var common_1 = __webpack_require__(34);\n\n var MouseHandler =\n /** @class */\n function () {\n function MouseHandler(history, view, visualizerManager, contextToolboxHandler, shapeDescriptionManager, settings, permissionsProvider) {\n this.history = history;\n this.view = view;\n this.visualizerManager = visualizerManager;\n this.contextToolboxHandler = contextToolboxHandler;\n this.shapeDescriptionManager = shapeDescriptionManager;\n this.settings = settings;\n this.permissionsProvider = permissionsProvider;\n this.finishStateLock = 0;\n this.isTouchUIEnabled = false;\n this.readOnly = this.settings.readOnly;\n this.settings.onReadOnlyChanged.add(this);\n }\n\n MouseHandler.prototype.initialize = function (model, selection, isTouchUIEnabled) {\n this.model = model;\n this.selection = selection;\n this.isTouchUIEnabled = isTouchUIEnabled;\n this.allowMultipleSelection = true;\n this.allowCopyDiagramItems = true;\n this.allowSnapToCellOnDragDiagramItem = true;\n this.allowSnapToCellOnDragPoint = true;\n this.allowSnapToCellOnResizeShape = true;\n this.allowFixedDrag = true;\n this.allowZoomOnWheel = true;\n this.allowScrollPage = true;\n this.shouldScrollPage = false;\n this.copyDiagramItemsByCtrlAndShift = false;\n this.startScrollingPageByCtrl = false;\n this.initializeDefaultState();\n };\n\n MouseHandler.prototype.initializeDefaultState = function () {\n this.defaultState = this.readOnly ? this.isTouchUIEnabled ? new MouseHandlerDefaultReadOnlyTouchState_1.MouseHandlerDefaultReadOnlyTouchState(this, this.history, this.selection, this.model, this.view, this.visualizerManager, this.shapeDescriptionManager, this.settings) : new MouseHandlerDefaultReadOnlyState_1.MouseHandlerDefaultReadOnlyState(this, this.history, this.selection, this.model, this.view, this.visualizerManager, this.shapeDescriptionManager, this.settings) : this.isTouchUIEnabled ? new MouseHandlerDefaultTouchState_1.MouseHandlerDefaultTouchState(this, this.history, this.selection, this.model, this.view, this.visualizerManager, this.shapeDescriptionManager, this.settings) : new MouseHandlerDefaultState_1.MouseHandlerDefaultState(this, this.history, this.selection, this.model, this.view, this.visualizerManager, this.shapeDescriptionManager, this.settings);\n this.switchToDefaultState();\n };\n\n MouseHandler.prototype.onMouseDown = function (evt) {\n this.mouseDownEvent = evt;\n this.state.onMouseDown(evt);\n };\n\n MouseHandler.prototype.onMouseMove = function (evt) {\n this.state.onMouseMove(evt);\n };\n\n MouseHandler.prototype.onMouseUp = function (evt) {\n this.state.onMouseUp(evt);\n };\n\n MouseHandler.prototype.onMouseDblClick = function (evt) {\n this.state.onMouseDblClick(evt);\n };\n\n MouseHandler.prototype.onMouseClick = function (evt) {\n this.state.onMouseClick(evt);\n };\n\n MouseHandler.prototype.onLongTouch = function (evt) {\n if (!evt.touches || evt.touches.length > 1) return;\n var key = evt.source.key;\n if (key === undefined) this.selection.clear();else if (this.selection.hasKey(key)) this.selection.remove(key);else this.selection.add(key);\n };\n\n MouseHandler.prototype.onShortcut = function (code) {\n return this.state.onShortcut(code);\n };\n\n MouseHandler.prototype.onWheel = function (evt) {\n return this.state.onMouseWheel(evt);\n };\n\n MouseHandler.prototype.onDragStart = function (evt) {\n this.state.onDragStart(evt);\n };\n\n MouseHandler.prototype.onDragEnd = function (evt) {\n this.state.onDragEnd(evt);\n };\n\n MouseHandler.prototype.onKeyDown = function (evt) {\n this.state.onKeyDown(evt);\n };\n\n MouseHandler.prototype.onKeyUp = function (evt) {\n this.state.onKeyUp(evt);\n };\n\n MouseHandler.prototype.showContextToolbox = function (modelPoint, getPositionToInsertShapeTo, side, category, applyCallback, cancelCallback) {\n this.contextToolboxHandler.showContextToolbox(modelPoint, getPositionToInsertShapeTo, side, category, applyCallback, cancelCallback);\n };\n\n MouseHandler.prototype.hideContextToolbox = function (applyed) {\n this.contextToolboxHandler.hideContextToolbox(applyed);\n };\n\n MouseHandler.prototype.canScrollPage = function (evt) {\n if (this.startScrollingPageByCtrl) {\n if (!this.hasCtrlModifier(evt.modifiers)) return false;\n if (!this.copyDiagramItemsByCtrlAndShift) return true;\n return evt.source.type !== Event_1.MouseEventElementType.Shape && evt.source.type !== Event_1.MouseEventElementType.Connector;\n }\n\n return this.allowScrollPage && this.shouldScrollPage;\n };\n\n MouseHandler.prototype.canMultipleSelection = function (evt) {\n return this.allowMultipleSelection && this.hasCtrlOrShiftModifier(evt.modifiers);\n };\n\n MouseHandler.prototype.canCopySelectedItems = function (evt) {\n if (!this.allowCopyDiagramItems) return false;\n return this.copyDiagramItemsByCtrlAndShift ? this.hasCtrlAndShiftModifier(evt.modifiers) : this.hasAltModifier(evt.modifiers);\n };\n\n MouseHandler.prototype.canCalculateFixedPosition = function (evt) {\n if (!this.allowFixedDrag || !this.hasShiftModifier(evt.modifiers)) return false;\n if (this.copyDiagramItemsByCtrlAndShift && this.hasCtrlModifier(evt.modifiers)) return false;\n return true;\n };\n\n MouseHandler.prototype.canStartZoomOnWheel = function (evt) {\n return this.allowZoomOnWheel && this.hasCtrlModifier(evt.modifiers);\n };\n\n MouseHandler.prototype.canFinishZoomOnWheel = function (evt) {\n return this.allowZoomOnWheel && !this.hasCtrlModifier(evt.modifiers);\n };\n\n MouseHandler.prototype.onStartScrollPageByKeyboard = function (evt) {\n if (this.canStartScrollingPageByKeyboard(evt)) {\n this.visualizerManager.onDocumentDragScrollStart();\n this.shouldScrollPage = true;\n }\n };\n\n MouseHandler.prototype.onFinishScrollPageByKeyboard = function (evt) {\n if (this.canEndScrollingPageByKeyboard(evt)) this.finishScrollingPage();\n };\n\n MouseHandler.prototype.onFinishScrollPageByMouse = function (evt) {\n if (this.canEndScrollingPage(evt)) this.finishScrollingPage();\n };\n\n MouseHandler.prototype.onDocumentDragStart = function (keys) {\n this.visualizerManager.onDocumentDragStart(keys);\n };\n\n MouseHandler.prototype.onDocumentDragEnd = function (keys) {\n this.visualizerManager.onDocumentDragEnd(keys);\n };\n\n MouseHandler.prototype.onDocumentDragScrollStart = function () {\n this.visualizerManager.onDocumentDragScrollStart();\n };\n\n MouseHandler.prototype.onDocumentDragScrollEnd = function () {\n this.visualizerManager.onDocumentDragScrollEnd();\n };\n\n MouseHandler.prototype.onDocumentClick = function (keys) {\n this.visualizerManager.onDocumentClick(keys);\n };\n\n MouseHandler.prototype.finishScrollingPage = function () {\n this.shouldScrollPage = false;\n this.visualizerManager.onDocumentDragScrollEnd();\n this.switchToDefaultState();\n }; // utils\n\n\n MouseHandler.prototype.hasCtrlOrShiftModifier = function (key) {\n return this.hasCtrlModifier(key) || this.hasShiftModifier(key);\n };\n\n MouseHandler.prototype.hasCtrlAndShiftModifier = function (key) {\n return this.hasCtrlModifier(key) && this.hasShiftModifier(key);\n };\n\n MouseHandler.prototype.hasCtrlModifier = function (key) {\n return (key & key_1.ModifierKey.Ctrl) > 0;\n };\n\n MouseHandler.prototype.hasAltModifier = function (key) {\n return (key & key_1.ModifierKey.Alt) > 0;\n };\n\n MouseHandler.prototype.hasShiftModifier = function (key) {\n return (key & key_1.ModifierKey.Shift) > 0;\n };\n\n MouseHandler.prototype.canStartScrollingPageByKeyboard = function (evt) {\n return !this.startScrollingPageByCtrl && !this.shouldScrollPage && evt.keyCode === key_1.KeyCode.Space;\n };\n\n MouseHandler.prototype.canEndScrollingPageByKeyboard = function (evt) {\n return !this.startScrollingPageByCtrl && evt.keyCode === key_1.KeyCode.Space;\n };\n\n MouseHandler.prototype.canEndScrollingPage = function (evt) {\n return this.startScrollingPageByCtrl ? this.hasCtrlModifier(evt.modifiers) : true;\n };\n\n MouseHandler.prototype.getSnappedPointOnDragDiagramItem = function (evt, basePoint, fixedX, fixedY, startPoint) {\n var snapToCell = this.getSnapToCellOnDragDiagramItem(evt);\n return new point_1.Point(this.getSnappedPos(this.getFixedXPosition(evt, basePoint, fixedX, startPoint), true, snapToCell), this.getSnappedPos(this.getFixedYPosition(evt, basePoint, fixedY, startPoint), false, snapToCell));\n };\n\n MouseHandler.prototype.getSnappedPointOnDragPoint = function (evt, point, additionalSnappedPoint) {\n var snapToCell = this.getSnapToCellOnDragPoint(evt);\n var newPoint = new point_1.Point(this.getSnappedPos(point.x, true, snapToCell), this.getSnappedPos(point.y, false, snapToCell));\n if (additionalSnappedPoint === undefined || this.getSquareEuclideanDistance(point, newPoint) < this.getSquareEuclideanDistance(point, additionalSnappedPoint)) return newPoint;else return additionalSnappedPoint;\n };\n\n MouseHandler.prototype.getSquareEuclideanDistance = function (left, right) {\n var diffX = left.x - right.x;\n var diffY = left.y - right.y;\n return diffX * diffX + diffY * diffY;\n };\n\n MouseHandler.prototype.getSnappedOffsetOnDragPoint = function (evt, startPoint) {\n var snapToCell = this.getSnapToCellOnDragPoint(evt);\n return new point_1.Point(this.getSnappedPos(evt.modelPoint.x - startPoint.x, true, snapToCell), this.getSnappedPos(evt.modelPoint.y - startPoint.y, false, snapToCell));\n };\n\n MouseHandler.prototype.lockAspectRatioOnShapeResize = function (evt) {\n return this.hasShiftModifier(evt.modifiers);\n };\n\n MouseHandler.prototype.getSnappedPositionOnResizeShape = function (evt, pos, isHorizontal) {\n if (!this.getSnapToCellOnResizeShape(evt)) return pos;\n return ModelUtils_1.ModelUtils.getSnappedPos(this.model, this.settings.gridSize, pos, isHorizontal);\n };\n\n MouseHandler.prototype.getSnappedPos = function (pos, isHorizontal, snapToCell) {\n return snapToCell ? ModelUtils_1.ModelUtils.getSnappedPos(this.model, this.settings.gridSize, pos, isHorizontal) : pos;\n };\n\n MouseHandler.prototype.getFixedXPosition = function (evt, basePoint, fixedX, startPoint) {\n return fixedX ? basePoint.x : basePoint.x + evt.modelPoint.x - startPoint.x;\n };\n\n MouseHandler.prototype.getFixedYPosition = function (evt, basePoint, fixedY, startPoint) {\n return fixedY ? basePoint.y : basePoint.y + evt.modelPoint.y - startPoint.y;\n };\n\n MouseHandler.prototype.getSnapToCellOnDragDiagramItem = function (evt) {\n return this.allowSnapToCellOnDragDiagramItem && this.settings.snapToGrid && !this.hasCtrlModifier(evt.modifiers);\n };\n\n MouseHandler.prototype.getSnapToCellOnDragPoint = function (evt) {\n return this.allowSnapToCellOnDragPoint && this.settings.snapToGrid && !this.hasCtrlModifier(evt.modifiers);\n };\n\n MouseHandler.prototype.getSnapToCellOnResizeShape = function (evt) {\n return this.allowSnapToCellOnResizeShape && this.settings.snapToGrid && !this.hasCtrlModifier(evt.modifiers);\n };\n\n MouseHandler.prototype.tryUpdateModelSize = function (processPoints) {\n this.lockPermissions();\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(this.history, processPoints);\n this.unlockPermissions();\n };\n\n MouseHandler.prototype.canAddDiagramItemToSelection = function (evt) {\n return evt.source.key && (evt.button === Event_1.MouseButton.Left || evt.button === Event_1.MouseButton.Right);\n };\n\n MouseHandler.prototype.addDiagramItemToSelection = function (evt) {\n this.pressedDiagramItemKey = evt.source.key;\n this.pressedDiagramItemInSelection = this.selection.hasKey(this.pressedDiagramItemKey);\n if (this.canMultipleSelection(evt)) this.selection.add(evt.source.key);else this.changeSingleSelection(evt.source.key);\n };\n\n MouseHandler.prototype.canRemoveDiagramItemToSelection = function (evt) {\n return this.pressedDiagramItemKey && evt.source.key && this.pressedDiagramItemKey === evt.source.key && (evt.button === Event_1.MouseButton.Left || evt.button === Event_1.MouseButton.Right);\n };\n\n MouseHandler.prototype.removeDiagramItemFromSelection = function (button, sourceKey) {\n if (common_1.isDefined(sourceKey) && button === Event_1.MouseButton.Left && this.pressedDiagramItemInSelection && this.selection.getKeys().length > 1) this.selection.remove(sourceKey);\n };\n\n MouseHandler.prototype.changeSingleSelection = function (key) {\n if (!this.selection.hasKey(key)) this.selection.set([key]);\n };\n\n MouseHandler.prototype.beginStorePermissions = function () {\n this.permissionsProvider.beginStorePermissions();\n };\n\n MouseHandler.prototype.endStorePermissions = function () {\n this.permissionsProvider.endStorePermissions();\n };\n\n MouseHandler.prototype.isStoredPermissionsGranted = function () {\n return this.permissionsProvider.isStoredPermissionsGranted();\n };\n\n MouseHandler.prototype.lockPermissions = function () {\n this.permissionsProvider.lockPermissions();\n };\n\n MouseHandler.prototype.unlockPermissions = function () {\n this.permissionsProvider.unlockPermissions();\n };\n\n MouseHandler.prototype.canPerformChangeConnection = function (connector, operationParams) {\n var allowed = true;\n if (connector) allowed = this.permissionsProvider.canChangeConnection(connector, operationParams.item, operationParams.oldItem, operationParams.position, operationParams.connectionPointIndex);else if (operationParams.item) allowed = this.permissionsProvider.canChangeConnection(undefined, operationParams.item, operationParams.oldItem, operationParams.position, operationParams.connectionPointIndex);\n return allowed;\n };\n\n MouseHandler.prototype.canPerformChangeConnectionOnUpdateUI = function (connector, operationParams) {\n this.permissionsProvider.beginUpdateUI();\n var allowed = this.canPerformChangeConnection(connector, operationParams);\n this.permissionsProvider.endUpdateUI();\n return allowed;\n };\n\n MouseHandler.prototype.canFinishTextEditing = function () {\n return this.visualizerManager.canFinishTextEditing();\n };\n\n MouseHandler.prototype.restartState = function () {\n if (this.state && !this.finishStateLock) {\n this.finishStateLock++;\n this.state.finish();\n this.finishStateLock--;\n }\n\n this.state.start();\n }; // switch state\n\n\n MouseHandler.prototype.switchToDefaultState = function () {\n this.switchState(this.defaultState);\n };\n\n MouseHandler.prototype.switchState = function (state) {\n this.newState = state;\n\n if (this.state && !this.finishStateLock) {\n this.finishStateLock++;\n this.state.finish();\n this.finishStateLock--;\n }\n\n if (this.newState) {\n this.state = this.newState;\n this.state.start();\n this.newState = undefined;\n }\n };\n\n MouseHandler.prototype.addInteractingItem = function (item, operation) {\n this.permissionsProvider.addInteractingItem(item, operation);\n };\n\n MouseHandler.prototype.clearInteractingItems = function () {\n this.permissionsProvider.clearInteractingItems();\n };\n\n MouseHandler.prototype.notifyReadOnlyChanged = function (readOnly) {\n this.readOnly = readOnly;\n this.initializeDefaultState();\n };\n\n MouseHandler.prototype.notifySelectionRectShow = function (rect) {};\n\n MouseHandler.prototype.notifySelectionRectHide = function () {};\n\n MouseHandler.prototype.notifyResizeInfoShow = function (point, text) {};\n\n MouseHandler.prototype.notifyResizeInfoHide = function () {};\n\n MouseHandler.prototype.notifyConnectionPointsShow = function (key, points, activePointIndex, outsideRectangle) {\n this.state.onConnectionPointsShow(key, points);\n };\n\n MouseHandler.prototype.notifyConnectionPointsHide = function () {};\n\n MouseHandler.prototype.notifyConnectionTargetShow = function (key, info) {\n this.state.onConnectionTargetShow(key, info);\n };\n\n MouseHandler.prototype.notifyConnectionTargetHide = function () {};\n\n MouseHandler.prototype.notifyContainerTargetShow = function (key, info) {};\n\n MouseHandler.prototype.notifyContainerTargetHide = function () {};\n\n MouseHandler.prototype.notifyExtensionLinesShow = function (lines) {};\n\n MouseHandler.prototype.notifyExtensionLinesHide = function () {};\n\n return MouseHandler;\n }();\n\n exports.MouseHandler = MouseHandler;\n /***/\n },\n /* 305 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics206 = function extendStatics(d, b) {\n _extendStatics206 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics206(d, b);\n };\n\n return function (d, b) {\n _extendStatics206(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerMoveConnectorPointState = void 0;\n\n var point_1 = __webpack_require__(1);\n\n var MouseHandlerMoveConnectorPointStateBase_1 = __webpack_require__(149);\n\n var Connector_1 = __webpack_require__(6);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n var MouseHandlerMoveConnectorPointState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerMoveConnectorPointState, _super);\n\n function MouseHandlerMoveConnectorPointState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerMoveConnectorPointState.prototype.onMouseDown = function (evt) {\n this.connector = this.model.findConnector(evt.source.key);\n this.pointIndex = parseInt(evt.source.value);\n if (this.pointIndex === 0) this.pointPosition = Connector_1.ConnectorPosition.Begin;else if (this.pointIndex === this.connector.points.length - 1) this.pointPosition = Connector_1.ConnectorPosition.End;\n this.handler.addInteractingItem(this.connector);\n\n _super.prototype.onMouseDown.call(this, evt);\n };\n\n MouseHandlerMoveConnectorPointState.prototype.onApplyChanges = function (evt) {\n if (this.connector.properties.lineOption === ConnectorProperties_1.ConnectorLineOption.Straight || this.pointIndex === 0 || this.pointIndex === this.connector.points.length - 1) _super.prototype.onApplyChanges.call(this, evt);\n };\n\n MouseHandlerMoveConnectorPointState.prototype.onFinishWithChanges = function () {\n _super.prototype.onFinishWithChanges.call(this);\n\n ModelUtils_1.ModelUtils.deleteConnectorUnnecessaryPoints(this.history, this.connector);\n this.handler.tryUpdateModelSize();\n };\n\n MouseHandlerMoveConnectorPointState.prototype.getSnappedPoint = function (evt, point) {\n var points = this.connector.points;\n var index = this.pointIndex;\n\n if (0 < index && index < points.length - 1) {\n var tg = (points[index + 1].y - points[index - 1].y) / (points[index + 1].x - points[index - 1].x);\n var x = point.x;\n var y = points[index + 1].y - (points[index + 1].x - x) * tg;\n return this.handler.getSnappedPointOnDragPoint(evt, point, new point_1.Point(x, y));\n }\n\n return this.handler.getSnappedPointOnDragPoint(evt, point);\n };\n\n return MouseHandlerMoveConnectorPointState;\n }(MouseHandlerMoveConnectorPointStateBase_1.MouseHandlerMoveConnectorPointStateBase);\n\n exports.MouseHandlerMoveConnectorPointState = MouseHandlerMoveConnectorPointState;\n /***/\n },\n /* 306 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics207 = function extendStatics(d, b) {\n _extendStatics207 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics207(d, b);\n };\n\n return function (d, b) {\n _extendStatics207(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerResizeShapeState = void 0;\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var Event_1 = __webpack_require__(14);\n\n var MouseHandlerDraggingState_1 = __webpack_require__(35);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ShapeDescription_1 = __webpack_require__(7);\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var MouseHandlerResizeShapeState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerResizeShapeState, _super);\n\n function MouseHandlerResizeShapeState(handler, history, model, selection, visualizerManager, settings) {\n var _this = _super.call(this, handler, history) || this;\n\n _this.model = model;\n _this.selection = selection;\n _this.visualizerManager = visualizerManager;\n _this.settings = settings;\n _this.startScrollLeft = 0;\n _this.startScrollTop = 0;\n _this.rotation = 0;\n return _this;\n }\n\n MouseHandlerResizeShapeState.prototype.finish = function () {\n this.visualizerManager.resetResizeInfo();\n this.visualizerManager.resetExtensionLines();\n\n _super.prototype.finish.call(this);\n };\n\n MouseHandlerResizeShapeState.prototype.onMouseDown = function (evt) {\n var _this = this;\n\n var source = parseInt(evt.source.value);\n this.resizeEventSource = source;\n this.startPoint = evt.modelPoint;\n this.lockH = source === Event_1.ResizeEventSource.ResizeBox_S || source === Event_1.ResizeEventSource.ResizeBox_N;\n this.lockV = source === Event_1.ResizeEventSource.ResizeBox_E || source === Event_1.ResizeEventSource.ResizeBox_W;\n this.sideH = source === Event_1.ResizeEventSource.ResizeBox_E || source === Event_1.ResizeEventSource.ResizeBox_NE || source === Event_1.ResizeEventSource.ResizeBox_SE;\n this.sideV = source === Event_1.ResizeEventSource.ResizeBox_SE || source === Event_1.ResizeEventSource.ResizeBox_S || source === Event_1.ResizeEventSource.ResizeBox_SW;\n this.shapes = this.selection.getSelectedShapes();\n\n if (this.shapes.length === 0) {\n this.handler.switchToDefaultState();\n return;\n }\n\n this.shapes.forEach(function (shape) {\n _this.handler.addInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.ResizeShape);\n\n _this.handler.addInteractingItem(shape, ModelOperationSettings_1.DiagramModelOperation.MoveShape);\n });\n this.connectors = this.selection.getSelectedConnectors();\n this.startRectangle = ModelUtils_1.ModelUtils.createRectangle(this.shapes);\n this.startShapeSizes = this.shapes.map(function (shape) {\n return shape.size.clone();\n });\n this.startShapePositions = this.shapes.map(function (shape) {\n return shape.position.clone();\n });\n this.startConnectorPoints = this.connectors.map(function (c) {\n return c.points.map(function (p) {\n return p.clone();\n });\n });\n\n _super.prototype.onMouseDown.call(this, evt);\n };\n\n MouseHandlerResizeShapeState.prototype.onMouseMove = function (evt) {\n _super.prototype.onMouseMove.call(this, evt);\n\n var shapes = this.selection.getSelectedShapes();\n this.visualizerManager.setExtensionLines(shapes);\n };\n\n MouseHandlerResizeShapeState.prototype.onApplyChanges = function (evt) {\n var _this = this;\n\n var rectangle = ModelUtils_1.ModelUtils.createRectangle(this.shapes);\n var minWidth = this.shapes.length === 1 ? this.shapes[0].getMinWidth(this.settings.shapeMinWidth) : ShapeDescription_1.ShapeMinDimension;\n var minHeight = this.shapes.length === 1 ? this.shapes[0].getMinHeight(this.settings.shapeMinHeight) : ShapeDescription_1.ShapeMinDimension;\n var maxWidth = this.shapes.length === 1 ? this.shapes[0].getMaxWidth(this.settings.shapeMaxWidth) : undefined;\n var maxHeight = this.shapes.length === 1 ? this.shapes[0].getMaxHeight(this.settings.shapeMaxHeight) : undefined;\n var size = this.getSize(evt, rectangle.createPosition(), this.startRectangle.createSize(), minWidth, minHeight, maxWidth, maxHeight, this.handler.lockAspectRatioOnShapeResize(evt));\n var pos = this.getPosition(evt, size, this.startRectangle.createSize(), this.startRectangle.createPosition());\n var ratioX = size.width / this.startRectangle.width;\n var ratioY = size.height / this.startRectangle.height;\n this.shapes.forEach(function (shape, index) {\n var shapeWidth = _this.startShapeSizes[index].width * (shape.allowResizeHorizontally ? ratioX : 1);\n shapeWidth = _this.getNormalizedSize(shapeWidth, shape.getMinWidth(_this.settings.shapeMinWidth), shape.getMaxWidth(_this.settings.shapeMaxWidth));\n var shapeHeight = _this.startShapeSizes[index].height * (shape.allowResizeVertically ? ratioY : 1);\n shapeHeight = _this.getNormalizedSize(shapeHeight, shape.getMinHeight(_this.settings.shapeMinHeight), shape.getMaxHeight(_this.settings.shapeMaxHeight));\n var shapeLeft = shape.allowResizeHorizontally ? pos.x + (_this.startShapePositions[index].x - _this.startRectangle.x) * ratioX : _this.startShapePositions[index].x;\n var shapeTop = shape.allowResizeVertically ? pos.y + (_this.startShapePositions[index].y - _this.startRectangle.y) * ratioY : _this.startShapePositions[index].y;\n ModelUtils_1.ModelUtils.setShapeSize(_this.history, _this.model, shape, new point_1.Point(shapeLeft, shapeTop), new size_1.Size(shapeWidth, shapeHeight));\n });\n this.connectors.forEach(function (connector, index) {\n var startPtIndex = connector.beginItem ? 1 : 0;\n var endPtIndex = connector.endItem ? connector.points.length - 2 : connector.points.length - 1;\n\n for (var i = startPtIndex; i <= endPtIndex; i++) {\n var connectorPtPos = new point_1.Point(pos.x + (_this.startConnectorPoints[index][i].x - _this.startRectangle.x) * ratioX, pos.y + (_this.startConnectorPoints[index][i].y - _this.startRectangle.y) * ratioY);\n ModelUtils_1.ModelUtils.moveConnectorPoint(_this.history, connector, i, connectorPtPos);\n }\n });\n var shapes = this.selection.getSelectedShapes(false, true);\n shapes.forEach(function (shape) {\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(_this.history, _this.model, shape);\n });\n this.tryUpdateModelSize();\n this.visualizerManager.setResizeInfo(this.shapes);\n };\n\n MouseHandlerResizeShapeState.prototype.tryUpdateModelSize = function () {\n var _this = this;\n\n this.handler.tryUpdateModelSize(function (offsetLeft, offsetTop) {\n _this.startShapePositions.forEach(function (pt) {\n pt.x += offsetLeft;\n pt.y += offsetTop;\n });\n\n _this.startConnectorPoints.forEach(function (connector) {\n connector.forEach(function (pt) {\n pt.x += offsetLeft;\n pt.y += offsetTop;\n });\n });\n\n _this.startRectangle.x += offsetLeft;\n _this.startRectangle.y += offsetTop;\n _this.startPoint.x += offsetLeft;\n _this.startPoint.y += offsetTop;\n });\n };\n\n MouseHandlerResizeShapeState.prototype.getDraggingElementKeys = function () {\n return this.shapes.map(function (shape) {\n return shape.key;\n });\n };\n\n MouseHandlerResizeShapeState.prototype.getNormalizedSize = function (value, minValue, maxValue) {\n if (minValue !== undefined) value = Math.max(value, minValue);\n if (maxValue !== undefined) value = Math.min(value, maxValue);\n return value;\n };\n\n MouseHandlerResizeShapeState.prototype.getSize = function (evt, position, startSize, minWidth, minHeight, maxWidth, maxHeight, lockAspectRatio) {\n var absDeltaX = evt.modelPoint.x - (this.startScrollLeft - evt.scrollX) - this.startPoint.x;\n var absDeltaY = evt.modelPoint.y - (this.startScrollTop - evt.scrollY) - this.startPoint.y;\n var deltaX = absDeltaX * Math.cos(this.rotation) - -absDeltaY * Math.sin(this.rotation);\n var deltaY = -(absDeltaX * Math.sin(this.rotation) + -absDeltaY * Math.cos(this.rotation));\n var newWidth;\n var newHeight;\n deltaY = !this.sideV && deltaY > 0 ? Math.min(startSize.height + 1, deltaY) : deltaY;\n deltaX = !this.sideH && deltaX > 0 ? Math.min(startSize.width + 1, deltaX) : deltaX;\n if (!this.lockH && !this.lockV && lockAspectRatio) {\n if (Math.abs(deltaX) > Math.abs(deltaY)) {\n newWidth = this.getNormalizedSize(this.sideH ? startSize.width + deltaX : startSize.width - deltaX, minWidth, maxWidth);\n newHeight = startSize.height * (newWidth / startSize.width);\n } else {\n newHeight = this.getNormalizedSize(this.sideV ? startSize.height + deltaY : startSize.height - deltaY, minHeight, maxHeight);\n newWidth = startSize.width * (newHeight / startSize.height);\n }\n } else {\n deltaX = this.lockH ? 0 : deltaX;\n deltaY = this.lockV ? 0 : deltaY;\n newWidth = this.getNormalizedSize(this.sideH ? startSize.width + deltaX : startSize.width - deltaX, minWidth, maxWidth);\n newHeight = this.getNormalizedSize(this.sideV ? startSize.height + deltaY : startSize.height - deltaY, minHeight, maxHeight);\n }\n if (!this.lockH) newWidth = this.getSnappedPosition(evt, position.x + newWidth, true) - position.x;\n if (!this.lockV) newHeight = this.getSnappedPosition(evt, position.y + newHeight, false) - position.y;\n return new size_1.Size(newWidth, newHeight);\n };\n\n MouseHandlerResizeShapeState.prototype.getPosition = function (evt, size, startSize, startPosition) {\n var x = startPosition.x;\n var y = startPosition.y;\n\n if (this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_N || this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_NE || this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_NW) {\n y += startSize.height - size.height;\n var snappedY = this.getSnappedPosition(evt, y, false);\n size.height += y - snappedY;\n y = snappedY;\n }\n\n if (this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_W || this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_NW || this.resizeEventSource === Event_1.ResizeEventSource.ResizeBox_SW) {\n x += startSize.width - size.width;\n var snappedX = this.getSnappedPosition(evt, x, true);\n size.width += x - snappedX;\n x = snappedX;\n }\n\n return new point_1.Point(x, y);\n };\n\n MouseHandlerResizeShapeState.prototype.getSnappedPosition = function (evt, pos, isHorizontal) {\n return this.handler.getSnappedPositionOnResizeShape(evt, pos, isHorizontal);\n };\n\n return MouseHandlerResizeShapeState;\n }(MouseHandlerDraggingState_1.MouseHandlerDraggingState);\n\n exports.MouseHandlerResizeShapeState = MouseHandlerResizeShapeState;\n /***/\n },\n /* 307 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics208 = function extendStatics(d, b) {\n _extendStatics208 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics208(d, b);\n };\n\n return function (d, b) {\n _extendStatics208(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerMoveConnectorSideState = void 0;\n\n var MouseHandlerDraggingState_1 = __webpack_require__(35);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var MouseHandlerMoveConnectorSideState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerMoveConnectorSideState, _super);\n\n function MouseHandlerMoveConnectorSideState(handler, history, model) {\n var _this = _super.call(this, handler, history) || this;\n\n _this.model = model;\n return _this;\n }\n\n MouseHandlerMoveConnectorSideState.prototype.onMouseDown = function (evt) {\n this.startPoint = evt.modelPoint;\n this.connectorKey = evt.source.key;\n this.pointIndex = parseInt(evt.source.value) + 1;\n\n _super.prototype.onMouseDown.call(this, evt);\n };\n\n MouseHandlerMoveConnectorSideState.prototype.onApplyChanges = function (evt) {\n var point = this.getSnappedPoint(evt, evt.modelPoint);\n var connector = this.model.findConnector(this.connectorKey);\n\n if (!this.pointCreated) {\n this.handler.addInteractingItem(connector);\n ModelUtils_1.ModelUtils.addConnectorPoint(this.history, this.connectorKey, this.pointIndex, point.clone());\n this.pointCreated = true;\n } else ModelUtils_1.ModelUtils.moveConnectorPoint(this.history, connector, this.pointIndex, point);\n\n this.handler.tryUpdateModelSize();\n };\n\n MouseHandlerMoveConnectorSideState.prototype.onFinishWithChanges = function () {\n ModelUtils_1.ModelUtils.deleteConnectorUnnecessaryPoints(this.history, this.model.findConnector(this.connectorKey));\n this.handler.tryUpdateModelSize();\n };\n\n MouseHandlerMoveConnectorSideState.prototype.getDraggingElementKeys = function () {\n return [this.connectorKey];\n };\n\n return MouseHandlerMoveConnectorSideState;\n }(MouseHandlerDraggingState_1.MouseHandlerDraggingState);\n\n exports.MouseHandlerMoveConnectorSideState = MouseHandlerMoveConnectorSideState;\n /***/\n },\n /* 308 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics209 = function extendStatics(d, b) {\n _extendStatics209 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics209(d, b);\n };\n\n return function (d, b) {\n _extendStatics209(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDragParameterPointState = void 0;\n\n var MouseHandlerDraggingState_1 = __webpack_require__(35);\n\n var ChangeShapeParametersHistoryItem_1 = __webpack_require__(114);\n\n var MouseHandlerDragParameterPointState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerDragParameterPointState, _super);\n\n function MouseHandlerDragParameterPointState(handler, history, model) {\n var _this = _super.call(this, handler, history) || this;\n\n _this.model = model;\n _this.startScrollLeft = 0;\n _this.startScrollTop = 0;\n return _this;\n }\n\n MouseHandlerDragParameterPointState.prototype.onMouseDown = function (evt) {\n this.startPoint = evt.modelPoint;\n this.shape = this.model.findShape(evt.source.key);\n this.parameterPointKey = evt.source.value;\n this.startParameters = this.shape.parameters.clone();\n\n _super.prototype.onMouseDown.call(this, evt);\n };\n\n MouseHandlerDragParameterPointState.prototype.onApplyChanges = function (evt) {\n var offset = this.handler.getSnappedOffsetOnDragPoint(evt, this.startPoint);\n var parameters = this.startParameters.clone();\n this.shape.description.modifyParameters(this.shape, parameters, offset.x, offset.y);\n this.history.addAndRedo(new ChangeShapeParametersHistoryItem_1.ChangeShapeParametersHistoryItem(this.shape.key, parameters));\n };\n\n MouseHandlerDragParameterPointState.prototype.getDraggingElementKeys = function () {\n return [this.shape.key];\n };\n\n return MouseHandlerDragParameterPointState;\n }(MouseHandlerDraggingState_1.MouseHandlerDraggingState);\n\n exports.MouseHandlerDragParameterPointState = MouseHandlerDragParameterPointState;\n /***/\n },\n /* 309 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics210 = function extendStatics(d, b) {\n _extendStatics210 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics210(d, b);\n };\n\n return function (d, b) {\n _extendStatics210(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerCreateConnectorState = void 0;\n\n var Connector_1 = __webpack_require__(6);\n\n var AddConnectionHistoryItem_1 = __webpack_require__(49);\n\n var AddConnectorHistoryItem_1 = __webpack_require__(64);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var MouseHandlerMoveConnectorPointStateBase_1 = __webpack_require__(149);\n\n var SetSelectionHistoryItem_1 = __webpack_require__(66);\n\n var AddShapeHistoryItem_1 = __webpack_require__(53);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var DeleteConnectionHistoryItem_1 = __webpack_require__(65);\n\n var DeleteConnectorHistoryItem_1 = __webpack_require__(115);\n\n var MouseHandlerCreateConnectorState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerCreateConnectorState, _super);\n\n function MouseHandlerCreateConnectorState(handler, history, model, visualizerManager, shapeDescriptionManager, selection, connectionPointIndex) {\n var _this = _super.call(this, handler, history, model, visualizerManager) || this;\n\n _this.shapeDescriptionManager = shapeDescriptionManager;\n _this.selection = selection;\n _this.connectionPointIndex = connectionPointIndex;\n return _this;\n }\n\n MouseHandlerCreateConnectorState.prototype.onMouseDown = function (evt) {\n if (this.connectionPointIndex === undefined) this.connectionPointIndex = parseInt(evt.source.value);\n this.connectedItem = this.model.findItem(evt.source.key);\n this.pointIndex = 1;\n this.pointPosition = Connector_1.ConnectorPosition.End;\n\n _super.prototype.onMouseDown.call(this, evt);\n };\n\n MouseHandlerCreateConnectorState.prototype.onMouseUp = function (evt) {\n if (this.connector && !this.connector.endItem) this.createNewShapeAtConnectorEnd(evt);\n\n _super.prototype.onMouseUp.call(this, evt);\n };\n\n MouseHandlerCreateConnectorState.prototype.onApplyChanges = function (evt) {\n var point = this.getSnappedPoint(evt, evt.modelPoint);\n\n if (!this.connector) {\n var historyItem = new AddConnectorHistoryItem_1.AddConnectorHistoryItem([this.connectedItem.getConnectionPointPosition(this.connectionPointIndex, point), point]);\n this.history.addAndRedo(historyItem);\n this.connector = this.model.findConnector(historyItem.connectorKey);\n this.handler.addInteractingItem(this.connector);\n this.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(this.connector, this.connectedItem, this.connectionPointIndex, Connector_1.ConnectorPosition.Begin));\n ModelUtils_1.ModelUtils.updateNewConnectorProperties(this.history, this.selection, this.connector.key);\n } else _super.prototype.onApplyChanges.call(this, evt);\n };\n\n MouseHandlerCreateConnectorState.prototype.checkStoredPermissionsOnFinish = function () {\n if (this.connector && this.connector.endItem) _super.prototype.checkStoredPermissionsOnFinish.call(this);\n };\n\n MouseHandlerCreateConnectorState.prototype.onFinishWithChanges = function () {\n _super.prototype.onFinishWithChanges.call(this);\n\n this.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(this.selection, [this.connector.key]));\n };\n\n MouseHandlerCreateConnectorState.prototype.createNewShapeAtConnectorEnd = function (evt) {\n var _this = this;\n\n var beginShape = this.connector && this.connector.beginItem;\n if (!beginShape) return;\n var side = this.getNewShapeSide(this.connector);\n var point = this.getSnappedPoint(evt, evt.modelPoint);\n var category = this.shapeDescriptionManager.getCategoryByDescription(beginShape.description);\n\n var getPositionToInsertShapeTo = function getPositionToInsertShapeTo(shape) {\n var clonedShape = shape.clone();\n clonedShape.position = point.clone();\n\n var position = _this.getNewShapePosition(clonedShape, side);\n\n return _this.handler.getSnappedPointOnDragPoint(evt, position);\n };\n\n this.handler.showContextToolbox(point, getPositionToInsertShapeTo, side, category, function (shapeType) {\n if (!shapeType) return;\n\n _this.handler.beginStorePermissions();\n\n _this.history.beginTransaction();\n\n var historyItem = new AddShapeHistoryItem_1.AddShapeHistoryItem(_this.shapeDescriptionManager.get(shapeType), point);\n\n _this.history.addAndRedo(historyItem);\n\n var shape = _this.model.findShape(historyItem.shapeKey);\n\n var container = _this.targetItem && _this.model.findNearestContainer(_this.targetItem.key);\n\n if (container) ModelUtils_1.ModelUtils.insertToContainer(_this.history, _this.model, shape, container);\n\n var newPosition = _this.getNewShapePosition(shape, side);\n\n ModelUtils_1.ModelUtils.setShapePosition(_this.history, _this.model, shape, _this.getSnappedPoint(evt, newPosition));\n ModelUtils_1.ModelUtils.updateNewShapeProperties(_this.history, _this.selection, shape.key);\n\n _this.history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(_this.connector, shape, shape.getConnectionPointIndexForSide(side), Connector_1.ConnectorPosition.End));\n\n if (container) ModelUtils_1.ModelUtils.updateConnectorContainer(_this.history, _this.model, _this.connector);\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(_this.history, _this.model, shape);\n\n if (!_this.handler.isStoredPermissionsGranted()) {\n _this.handler.lockPermissions();\n\n _this.history.undoTransaction();\n\n _this.handler.unlockPermissions();\n\n _this.checkNewConnectorPermissions();\n } else {\n _this.handler.tryUpdateModelSize();\n\n _this.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(_this.selection, [shape.key]));\n }\n\n _this.history.endTransaction();\n\n _this.handler.endStorePermissions();\n\n _this.handler.hideContextToolbox(true);\n }, function () {\n _this.checkNewConnectorPermissions();\n });\n };\n\n MouseHandlerCreateConnectorState.prototype.checkNewConnectorPermissions = function () {\n if (this.connector && !this.handler.canPerformChangeConnection(this.connector, {\n position: Connector_1.ConnectorPosition.End,\n connectionPointIndex: -1\n })) {\n this.handler.lockPermissions();\n this.history.beginTransaction();\n this.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(this.selection, []));\n if (this.connector.beginItem) this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, Connector_1.ConnectorPosition.Begin));\n if (this.connector.endItem) this.history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(this.connector, Connector_1.ConnectorPosition.End));\n this.history.addAndRedo(new DeleteConnectorHistoryItem_1.DeleteConnectorHistoryItem(this.connector.key));\n this.history.endTransaction();\n this.handler.unlockPermissions();\n }\n };\n\n MouseHandlerCreateConnectorState.prototype.getNewShapePosition = function (shape, side) {\n switch (side) {\n case DiagramItem_1.ConnectionPointSide.North:\n return shape.position.clone().offset(-shape.size.width / 2, 0);\n\n case DiagramItem_1.ConnectionPointSide.South:\n return shape.position.clone().offset(-shape.size.width / 2, -shape.size.height);\n\n case DiagramItem_1.ConnectionPointSide.East:\n return shape.position.clone().offset(-shape.size.width, -shape.size.height / 2);\n\n case DiagramItem_1.ConnectionPointSide.West:\n return shape.position.clone().offset(0, -shape.size.height / 2);\n }\n };\n\n MouseHandlerCreateConnectorState.prototype.getNewShapeSide = function (connector) {\n var renderPoints = connector.getRenderPoints();\n return MouseHandlerCreateConnectorState.getNewShapeSideByConnectorPoints(renderPoints[renderPoints.length - 1], renderPoints[renderPoints.length - 2]);\n };\n\n MouseHandlerCreateConnectorState.prototype.getSourceItem = function () {\n return this.connectedItem;\n };\n\n MouseHandlerCreateConnectorState.getNewShapeSideByConnectorPoints = function (point, directionPoint) {\n if (point.x === directionPoint.x) {\n if (point.y > directionPoint.y) return DiagramItem_1.ConnectionPointSide.North;else return DiagramItem_1.ConnectionPointSide.South;\n } else if (point.x > directionPoint.x) {\n if (point.y === directionPoint.y) return DiagramItem_1.ConnectionPointSide.West;else if (point.y > directionPoint.y) {\n if (Math.abs(point.x - directionPoint.x) > Math.abs(point.y - directionPoint.y)) return DiagramItem_1.ConnectionPointSide.West;else return DiagramItem_1.ConnectionPointSide.North;\n } else if (Math.abs(point.x - directionPoint.x) > Math.abs(point.y - directionPoint.y)) return DiagramItem_1.ConnectionPointSide.West;else return DiagramItem_1.ConnectionPointSide.South;\n } else if (point.y === directionPoint.y) return DiagramItem_1.ConnectionPointSide.East;else if (point.y > directionPoint.y) {\n if (Math.abs(point.x - directionPoint.x) > Math.abs(point.y - directionPoint.y)) return DiagramItem_1.ConnectionPointSide.East;else return DiagramItem_1.ConnectionPointSide.North;\n } else if (Math.abs(point.x - directionPoint.x) > Math.abs(point.y - directionPoint.y)) return DiagramItem_1.ConnectionPointSide.East;else return DiagramItem_1.ConnectionPointSide.South;\n };\n\n return MouseHandlerCreateConnectorState;\n }(MouseHandlerMoveConnectorPointStateBase_1.MouseHandlerMoveConnectorPointStateBase);\n\n exports.MouseHandlerCreateConnectorState = MouseHandlerCreateConnectorState;\n /***/\n },\n /* 310 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics211 = function extendStatics(d, b) {\n _extendStatics211 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics211(d, b);\n };\n\n return function (d, b) {\n _extendStatics211(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerMoveConnectorOrthogonalSideState = void 0;\n\n var point_1 = __webpack_require__(1);\n\n var Connector_1 = __webpack_require__(6);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var MouseHandlerDraggingState_1 = __webpack_require__(35);\n\n var MouseHandlerMoveConnectorOrthogonalSideState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerMoveConnectorOrthogonalSideState, _super);\n\n function MouseHandlerMoveConnectorOrthogonalSideState(handler, history, model) {\n var _this = _super.call(this, handler, history) || this;\n\n _this.model = model;\n return _this;\n }\n\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.onMouseDown = function (evt) {\n this.startPoint = evt.modelPoint;\n this.connector = this.model.findConnector(evt.source.key);\n this.handler.addInteractingItem(this.connector);\n var renderPointIndexes = evt.source.value.split(\"_\");\n var renderPointIndex1 = parseInt(renderPointIndexes[0]);\n var renderPointIndex2 = parseInt(renderPointIndexes[1]);\n var points = this.connector.getRenderPoints(true);\n this.renderPoint1 = points[renderPointIndex1].clone();\n this.renderPoint2 = points[renderPointIndex2].clone();\n this.isVerticalOrientation = this.renderPoint1.x === this.renderPoint2.x;\n\n if (this.renderPoint1.pointIndex !== -1) {\n this.pointIndex1 = this.renderPoint1.pointIndex;\n\n if (this.pointIndex1 === 0) {\n this.pointIndex1++;\n this.correctEdgePoint(this.renderPoint1, this.renderPoint2, this.connector.beginItem, this.connector.beginConnectionPointIndex);\n } else this.point1 = this.connector.points[this.pointIndex1].clone();\n } else this.pointIndex1 = this.findPointIndex(points, renderPointIndex1, false) + 1;\n\n if (this.renderPoint2.pointIndex !== -1) {\n this.pointIndex2 = this.renderPoint2.pointIndex;\n if (this.pointIndex2 === this.connector.points.length - 1) this.correctEdgePoint(this.renderPoint2, this.renderPoint1, this.connector.endItem, this.connector.endConnectionPointIndex);else this.point2 = this.connector.points[this.pointIndex2].clone();\n } else this.pointIndex2 = this.findPointIndex(points, renderPointIndex2, true);\n\n _super.prototype.onMouseDown.call(this, evt);\n };\n\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.onApplyChanges = function (evt) {\n var _this = this;\n\n if (!this.pointCreated) {\n var createdPoint1 = void 0;\n var createdPoint2 = void 0;\n\n if (this.point1 === undefined) {\n this.point1 = new point_1.Point(this.renderPoint1.x, this.renderPoint1.y);\n ModelUtils_1.ModelUtils.addConnectorPoint(this.history, this.connector.key, this.pointIndex1, this.point1.clone());\n createdPoint1 = this.point1.clone();\n this.pointIndex2++;\n }\n\n if (this.point2 === undefined) {\n this.point2 = new point_1.Point(this.renderPoint2.x, this.renderPoint2.y);\n ModelUtils_1.ModelUtils.addConnectorPoint(this.history, this.connector.key, this.pointIndex2, this.point2.clone());\n createdPoint2 = this.point2.clone();\n }\n\n var excludePoints = [];\n if (createdPoint1) excludePoints.push(createdPoint1);\n if (createdPoint2) excludePoints.push(createdPoint2);\n var unnecessaryPoints = this.createUnnecessaryPoints(this.connector, excludePoints);\n Object.keys(unnecessaryPoints).forEach(function (key) {\n var pointIndex = parseInt(key);\n if (pointIndex < _this.pointIndex1) _this.pointIndex1--;\n if (pointIndex < _this.pointIndex2) _this.pointIndex2--;\n });\n this.pointCreated = true;\n }\n\n var point = this.getSnappedPoint(evt, evt.modelPoint);\n\n if (this.isVerticalOrientation) {\n this.point1.x = point.x;\n this.point2.x = point.x;\n } else {\n this.point1.y = point.y;\n this.point2.y = point.y;\n }\n\n ModelUtils_1.ModelUtils.moveConnectorRightAnglePoints(this.history, this.connector, this.point1.clone(), this.pointIndex1, this.point2.clone(), this.pointIndex2);\n this.handler.tryUpdateModelSize();\n };\n\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.createUnnecessaryPoints = function (connector, excludePoints) {\n var oldRenderPoints = connector.getRenderPoints(true).map(function (p) {\n return p.clone();\n });\n var unnecessaryRenderPoints = ModelUtils_1.ModelUtils.createUnnecessaryRenderPoints(oldRenderPoints.filter(function (p) {\n return !p.skipped;\n }).map(function (p) {\n return p.clone();\n }), connector.skippedRenderPoints, function (removedPoint) {\n return ModelUtils_1.ModelUtils.findFirstPointIndex(oldRenderPoints, function (p) {\n return p.equals(removedPoint);\n });\n }, function (p) {\n return !excludePoints.some(function (ep) {\n return ep.equals(p);\n });\n });\n var result = {};\n\n if (Object.keys(unnecessaryRenderPoints).length) {\n var points = connector.points.map(function (p) {\n return p.clone();\n });\n var lastPointIndex_1 = points.length - 1;\n points.forEach(function (p, index) {\n if (index !== 0 && index !== lastPointIndex_1 && !ModelUtils_1.ModelUtils.isNecessaryPoint(p, index, unnecessaryRenderPoints)) result[index] = p;\n });\n }\n\n return result;\n };\n\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.onFinishWithChanges = function () {\n ModelUtils_1.ModelUtils.deleteConnectorUnnecessaryPoints(this.history, this.connector);\n this.handler.tryUpdateModelSize();\n };\n\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.findPointIndex = function (points, index, direction) {\n var point;\n\n while (point = points[index]) {\n if (point.pointIndex !== -1) return point.pointIndex;\n index += direction ? 1 : -1;\n }\n };\n\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.correctEdgePoint = function (point, directionPoint, item, connectionPointIndex) {\n var offset = 0;\n\n if (item) {\n var side = item.getConnectionPointSideByIndex(connectionPointIndex);\n var rect = item.rectangle;\n offset = Connector_1.Connector.minOffset;\n\n switch (side) {\n case DiagramItem_1.ConnectionPointSide.South:\n offset += rect.bottom - point.y;\n break;\n\n case DiagramItem_1.ConnectionPointSide.North:\n offset += point.y - rect.y;\n break;\n\n case DiagramItem_1.ConnectionPointSide.East:\n offset += rect.right - point.x;\n break;\n\n case DiagramItem_1.ConnectionPointSide.West:\n offset += point.x - rect.x;\n break;\n }\n }\n\n if (this.isVerticalOrientation) {\n if (point.y > directionPoint.y) point.y -= Math.min(offset, point.y - directionPoint.y);else point.y += Math.min(offset, directionPoint.y - point.y);\n } else if (point.x > directionPoint.x) point.x -= Math.min(offset, point.x - directionPoint.x);else point.x += Math.min(offset, directionPoint.x - point.x);\n };\n\n MouseHandlerMoveConnectorOrthogonalSideState.prototype.getDraggingElementKeys = function () {\n return [this.connector.key];\n };\n\n return MouseHandlerMoveConnectorOrthogonalSideState;\n }(MouseHandlerDraggingState_1.MouseHandlerDraggingState);\n\n exports.MouseHandlerMoveConnectorOrthogonalSideState = MouseHandlerMoveConnectorOrthogonalSideState;\n /***/\n },\n /* 311 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics212 = function extendStatics(d, b) {\n _extendStatics212 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics212(d, b);\n };\n\n return function (d, b) {\n _extendStatics212(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerToolboxDraggingState = exports.MouseHandlerBeforeToolboxDraggingState = void 0;\n\n var Event_1 = __webpack_require__(14);\n\n var point_1 = __webpack_require__(1);\n\n var AddShapeHistoryItem_1 = __webpack_require__(53);\n\n var SetSelectionHistoryItem_1 = __webpack_require__(66);\n\n var MouseHandlerDraggingState_1 = __webpack_require__(35);\n\n var DeleteShapeHistoryItem_1 = __webpack_require__(116);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var MouseHandlerStateBase_1 = __webpack_require__(41);\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var NON_DOCUMENT_TIMER = 500;\n var LOCK_UPDATEPAGESIZE_TIMER = 300;\n\n var MouseHandlerBeforeToolboxDraggingState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerBeforeToolboxDraggingState, _super);\n\n function MouseHandlerBeforeToolboxDraggingState(handler, history, model, selection, visualizerManager, shapeDescriptionManager) {\n var _this = _super.call(this, handler) || this;\n\n _this.history = history;\n _this.model = model;\n _this.selection = selection;\n _this.visualizerManager = visualizerManager;\n _this.shapeDescriptionManager = shapeDescriptionManager;\n _this.isModelEmpty = model.items.length === 0;\n return _this;\n }\n\n MouseHandlerBeforeToolboxDraggingState.prototype.cancelChanges = function () {\n this.tryRemoveTimer();\n };\n\n MouseHandlerBeforeToolboxDraggingState.prototype.onDragStart = function (evt) {\n this.dragging = evt;\n };\n\n MouseHandlerBeforeToolboxDraggingState.prototype.onDragEnd = function (evt) {\n this.cancelChanges();\n this.handler.switchToDefaultState();\n };\n\n MouseHandlerBeforeToolboxDraggingState.prototype.onMouseMove = function (evt) {\n var _this = this;\n\n if (evt.source.type > Event_1.MouseEventElementType.Background) {\n this.tryRemoveTimer();\n this.switchToDraggingState(evt, false);\n } else if (evt.source.type === Event_1.MouseEventElementType.Background && !this.isModelEmpty) {\n this.savedEvt = evt;\n if (this.nonPageAreaTimer === undefined) this.nonPageAreaTimer = setTimeout(function () {\n return _this.switchToDraggingState(_this.savedEvt, true);\n }, NON_DOCUMENT_TIMER);\n } else if (this.nonPageAreaTimer !== undefined) this.tryRemoveTimer();\n };\n\n MouseHandlerBeforeToolboxDraggingState.prototype.switchToDraggingState = function (evt, skipLockUpdatePageSize) {\n this.handler.switchState(new MouseHandlerToolboxDraggingState(this.handler, this.history, this.model, this.selection, this.visualizerManager, this.shapeDescriptionManager, skipLockUpdatePageSize));\n this.handler.state.onDragStart(this.dragging);\n this.handler.state.onMouseMove(evt);\n };\n\n MouseHandlerBeforeToolboxDraggingState.prototype.tryRemoveTimer = function () {\n if (this.nonPageAreaTimer !== undefined) {\n clearTimeout(this.nonPageAreaTimer);\n delete this.nonPageAreaTimer;\n }\n };\n\n MouseHandlerBeforeToolboxDraggingState.prototype.finish = function () {\n this.tryRemoveTimer();\n };\n\n return MouseHandlerBeforeToolboxDraggingState;\n }(MouseHandlerStateBase_1.MouseHandlerCancellableState);\n\n exports.MouseHandlerBeforeToolboxDraggingState = MouseHandlerBeforeToolboxDraggingState;\n\n var MouseHandlerToolboxDraggingState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerToolboxDraggingState, _super);\n\n function MouseHandlerToolboxDraggingState(handler, history, model, selection, visualizerManager, shapeDescriptionManager, skipLockUpdatePageSize) {\n var _this = _super.call(this, handler, history) || this;\n\n _this.model = model;\n _this.selection = selection;\n _this.visualizerManager = visualizerManager;\n _this.shapeDescriptionManager = shapeDescriptionManager;\n if (!skipLockUpdatePageSize) _this.updatePageSizeTimer = setTimeout(function () {\n _this.processAndRemoveUpdatePageSizeTimer();\n }, LOCK_UPDATEPAGESIZE_TIMER);\n return _this;\n }\n\n MouseHandlerToolboxDraggingState.prototype.cancelChanges = function () {\n this.tryRemoveUpdatePageSizeTimer();\n\n _super.prototype.cancelChanges.call(this);\n };\n\n MouseHandlerToolboxDraggingState.prototype.tryRemoveUpdatePageSizeTimer = function () {\n if (this.updatePageSizeTimer !== undefined) {\n clearTimeout(this.updatePageSizeTimer);\n delete this.updatePageSizeTimer;\n }\n };\n\n MouseHandlerToolboxDraggingState.prototype.processAndRemoveUpdatePageSizeTimer = function () {\n if (this.updatePageSizeTimer !== undefined) {\n this.handler.tryUpdateModelSize();\n delete this.updatePageSizeTimer;\n }\n };\n\n MouseHandlerToolboxDraggingState.prototype.onMouseMove = function (evt) {\n _super.prototype.onMouseMove.call(this, evt);\n\n var shape = this.model.findShape(this.shapeKey);\n\n if (shape) {\n this.visualizerManager.setExtensionLines([shape]);\n var container = ModelUtils_1.ModelUtils.findContainerByEventKey(this.model, this.selection, evt.source.key);\n if (container && this.allowInsertToContainer(evt, shape, container)) this.visualizerManager.setContainerTarget(container, evt.source.type);else this.visualizerManager.resetContainerTarget();\n }\n };\n\n MouseHandlerToolboxDraggingState.prototype.getDraggingElementKeys = function () {\n return this.shapeKey === undefined ? [] : [this.shapeKey];\n };\n\n MouseHandlerToolboxDraggingState.prototype.onApplyChanges = function (evt) {\n var _this = this;\n\n if (evt.source.type === Event_1.MouseEventElementType.Undefined) {\n this.dragging.onCaptured(false);\n\n if (this.shapeKey !== undefined && !this.deleteHistoryItem) {\n var shape = this.model.findShape(this.shapeKey);\n ModelUtils_1.ModelUtils.detachConnectors(this.history, shape);\n ModelUtils_1.ModelUtils.removeFromContainer(this.history, this.model, shape);\n this.deleteHistoryItem = new DeleteShapeHistoryItem_1.DeleteShapeHistoryItem(this.shapeKey, true);\n this.history.addAndRedo(this.deleteHistoryItem);\n }\n } else {\n this.dragging.onCaptured(true);\n\n if (this.shapeKey === undefined) {\n this.startPoint = evt.modelPoint;\n this.shapeKey = this.insertToolboxItem(evt);\n var shape_1 = this.model.findShape(this.shapeKey);\n if (shape_1) this.handler.addInteractingItem(shape_1, ModelOperationSettings_1.DiagramModelOperation.AddShape);\n }\n\n if (this.deleteHistoryItem) {\n this.history.undoTransactionTo(this.deleteHistoryItem);\n delete this.deleteHistoryItem;\n }\n\n var pos = this.getPosition(evt, this.startShapePosition);\n var shape = this.model.findShape(this.shapeKey);\n ModelUtils_1.ModelUtils.setShapePosition(this.history, this.model, shape, pos);\n ModelUtils_1.ModelUtils.updateMovingShapeConnections(this.history, shape, this.connectorsWithoutBeginItemInfo, this.connectorsWithoutEndItemInfo, function () {\n _this.visualizerManager.resetConnectionTarget();\n\n _this.visualizerManager.resetConnectionPoints();\n }, function (shape, connectionPointIndex) {\n _this.visualizerManager.setConnectionTarget(shape, Event_1.MouseEventElementType.Shape);\n\n _this.visualizerManager.setConnectionPoints(shape, Event_1.MouseEventElementType.Shape, connectionPointIndex, true);\n }, function (connector) {\n return _this.handler.addInteractingItem(connector);\n });\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(this.history, this.model, shape);\n var container = ModelUtils_1.ModelUtils.findContainerByEventKey(this.model, this.selection, evt.source.key);\n if (shape && container && this.allowInsertToContainer(evt, shape, container)) ModelUtils_1.ModelUtils.insertToContainer(this.history, this.model, shape, container);else ModelUtils_1.ModelUtils.removeFromContainer(this.history, this.model, shape);\n if (this.updatePageSizeTimer === undefined) this.handler.tryUpdateModelSize(function (offsetLeft, offsetTop) {\n _this.connectorsWithoutBeginItemInfo.forEach(function (pi) {\n pi.point.x += offsetLeft;\n pi.point.y += offsetTop;\n });\n\n _this.connectorsWithoutEndItemInfo.forEach(function (pi) {\n pi.point.x += offsetLeft;\n pi.point.y += offsetTop;\n });\n });\n }\n };\n\n MouseHandlerToolboxDraggingState.prototype.onFinishWithChanges = function () {\n if (!this.deleteHistoryItem) this.history.addAndRedo(new SetSelectionHistoryItem_1.SetSelectionHistoryItem(this.selection, [this.shapeKey]));\n };\n\n MouseHandlerToolboxDraggingState.prototype.onDragStart = function (evt) {\n this.dragging = evt;\n this.connectorsWithoutBeginItemInfo = ModelUtils_1.ModelUtils.getConnectorsWithoutBeginItemInfo(this.model);\n this.connectorsWithoutEndItemInfo = ModelUtils_1.ModelUtils.getConnectorsWithoutEndItemInfo(this.model);\n };\n\n MouseHandlerToolboxDraggingState.prototype.onDragEnd = function (evt) {\n if (this.shapeKey !== undefined && evt.source.type === Event_1.MouseEventElementType.Undefined) this.cancelChanges();\n this.handler.switchToDefaultState();\n };\n\n MouseHandlerToolboxDraggingState.prototype.finish = function () {\n this.visualizerManager.resetExtensionLines();\n this.visualizerManager.resetContainerTarget();\n this.visualizerManager.resetConnectionTarget();\n this.visualizerManager.resetConnectionPoints();\n this.processAndRemoveUpdatePageSizeTimer();\n this.dragging.onFinishDragging();\n\n _super.prototype.finish.call(this);\n };\n\n MouseHandlerToolboxDraggingState.prototype.insertToolboxItem = function (evt) {\n var description = this.shapeDescriptionManager.get(this.dragging.data);\n this.startShapePosition = this.getSnappedPoint(evt, new point_1.Point(evt.modelPoint.x - description.defaultSize.width / 2, evt.modelPoint.y - description.defaultSize.height / 2));\n var historyItem = new AddShapeHistoryItem_1.AddShapeHistoryItem(description, this.startShapePosition);\n this.history.addAndRedo(historyItem);\n ModelUtils_1.ModelUtils.updateNewShapeProperties(this.history, this.selection, historyItem.shapeKey);\n return historyItem.shapeKey;\n };\n\n MouseHandlerToolboxDraggingState.prototype.allowInsertToContainer = function (evt, item, container) {\n if (this.handler.canMultipleSelection(evt)) return false;\n return container && container.expanded && ModelUtils_1.ModelUtils.canInsertToContainer(this.model, item, container);\n };\n\n MouseHandlerToolboxDraggingState.prototype.getPosition = function (evt, basePoint) {\n return this.getSnappedPoint(evt, new point_1.Point(basePoint.x + evt.modelPoint.x - this.startPoint.x, basePoint.y + evt.modelPoint.y - this.startPoint.y));\n };\n\n return MouseHandlerToolboxDraggingState;\n }(MouseHandlerDraggingState_1.MouseHandlerDraggingState);\n\n exports.MouseHandlerToolboxDraggingState = MouseHandlerToolboxDraggingState;\n /***/\n },\n /* 312 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics213 = function extendStatics(d, b) {\n _extendStatics213 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics213(d, b);\n };\n\n return function (d, b) {\n _extendStatics213(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerMoveConnectorTextState = void 0;\n\n var MouseHandlerDraggingState_1 = __webpack_require__(35);\n\n var ChangeConnectorTextPositionHistoryItem_1 = __webpack_require__(313);\n\n var ChangeConnectorTextHistoryItem_1 = __webpack_require__(67);\n\n var MouseHandlerMoveConnectorTextState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerMoveConnectorTextState, _super);\n\n function MouseHandlerMoveConnectorTextState(handler, history, model) {\n var _this = _super.call(this, handler, history) || this;\n\n _this.model = model;\n return _this;\n }\n\n MouseHandlerMoveConnectorTextState.prototype.onMouseDown = function (evt) {\n this.connector = this.model.findConnector(evt.source.key);\n this.position = parseFloat(evt.source.value);\n this.text = this.connector.getText(this.position);\n this.savedText = \"\";\n\n _super.prototype.onMouseDown.call(this, evt);\n };\n\n MouseHandlerMoveConnectorTextState.prototype.onApplyChanges = function (evt) {\n var newPosition = this.connector.getTextPositionByPoint(evt.modelPoint);\n\n if (newPosition !== this.position) {\n var text = this.connector.getText(newPosition);\n\n if (text !== \"\" && text !== this.text) {\n this.history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(this.connector, newPosition, \"\"));\n this.savedText = text;\n }\n\n this.history.addAndRedo(new ChangeConnectorTextPositionHistoryItem_1.ChangeConnectorTextPositionHistoryItem(this.connector, this.position, newPosition));\n\n if (this.savedText !== \"\" && this.savedText !== text) {\n this.history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(this.connector, this.position, this.savedText));\n this.savedText = \"\";\n }\n\n this.position = newPosition;\n }\n };\n\n MouseHandlerMoveConnectorTextState.prototype.getDraggingElementKeys = function () {\n return [this.connector.key];\n };\n\n return MouseHandlerMoveConnectorTextState;\n }(MouseHandlerDraggingState_1.MouseHandlerDraggingState);\n\n exports.MouseHandlerMoveConnectorTextState = MouseHandlerMoveConnectorTextState;\n /***/\n },\n /* 313 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics214 = function extendStatics(d, b) {\n _extendStatics214 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics214(d, b);\n };\n\n return function (d, b) {\n _extendStatics214(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectorTextPositionHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ChangeConnectorTextPositionHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorTextPositionHistoryItem, _super);\n\n function ChangeConnectorTextPositionHistoryItem(connector, position, newPosition) {\n var _this = _super.call(this) || this;\n\n _this.connectorKey = connector.key;\n _this.position = position;\n _this.newPosition = newPosition;\n return _this;\n }\n\n ChangeConnectorTextPositionHistoryItem.prototype.redo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.changeConnectorTextPosition(connector, this.position, this.newPosition);\n };\n\n ChangeConnectorTextPositionHistoryItem.prototype.undo = function (manipulator) {\n var connector = manipulator.model.findConnector(this.connectorKey);\n manipulator.changeConnectorTextPosition(connector, this.newPosition, this.position);\n };\n\n return ChangeConnectorTextPositionHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeConnectorTextPositionHistoryItem = ChangeConnectorTextPositionHistoryItem;\n /***/\n },\n /* 314 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics215 = function extendStatics(d, b) {\n _extendStatics215 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics215(d, b);\n };\n\n return function (d, b) {\n _extendStatics215(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerToggleShapeExpandedState = void 0;\n\n var MouseHandlerStateBase_1 = __webpack_require__(41);\n\n var ToggleShapeExpandedHistoryItem_1 = __webpack_require__(315);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var MouseHandlerToggleShapeExpandedState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerToggleShapeExpandedState, _super);\n\n function MouseHandlerToggleShapeExpandedState(handler, history, model, selection) {\n var _this = _super.call(this, handler) || this;\n\n _this.history = history;\n _this.model = model;\n _this.selection = selection;\n return _this;\n }\n\n MouseHandlerToggleShapeExpandedState.prototype.onMouseUp = function (evt) {\n var shape = this.model.findShape(evt.source.key);\n\n if (shape && !shape.isLocked) {\n this.history.beginTransaction();\n this.history.addAndRedo(new ToggleShapeExpandedHistoryItem_1.ToggleShapeExpandedHistoryItem(shape));\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(this.history, this.model, shape);\n ModelUtils_1.ModelUtils.updateContainerConnectorsAttachedPoints(this.history, this.model, shape);\n ModelUtils_1.ModelUtils.updateSelection(this.history, this.selection);\n this.handler.tryUpdateModelSize();\n this.history.endTransaction();\n this.handler.onDocumentClick([shape.key]);\n }\n\n this.handler.switchToDefaultState();\n };\n\n return MouseHandlerToggleShapeExpandedState;\n }(MouseHandlerStateBase_1.MouseHandlerStateBase);\n\n exports.MouseHandlerToggleShapeExpandedState = MouseHandlerToggleShapeExpandedState;\n /***/\n },\n /* 315 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics216 = function extendStatics(d, b) {\n _extendStatics216 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics216(d, b);\n };\n\n return function (d, b) {\n _extendStatics216(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToggleShapeExpandedHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var ToggleShapeExpandedHistoryItem =\n /** @class */\n function (_super) {\n __extends(ToggleShapeExpandedHistoryItem, _super);\n\n function ToggleShapeExpandedHistoryItem(shape) {\n var _this = _super.call(this) || this;\n\n _this.shapeKey = shape.key;\n _this.expanded = shape.expanded;\n return _this;\n }\n\n ToggleShapeExpandedHistoryItem.prototype.redo = function (manipulator) {\n var shape = manipulator.model.findShape(this.shapeKey);\n manipulator.changeShapeExpanded(shape, !this.expanded);\n };\n\n ToggleShapeExpandedHistoryItem.prototype.undo = function (manipulator) {\n var shape = manipulator.model.findShape(this.shapeKey);\n manipulator.changeShapeExpanded(shape, this.expanded);\n };\n\n return ToggleShapeExpandedHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ToggleShapeExpandedHistoryItem = ToggleShapeExpandedHistoryItem;\n /***/\n },\n /* 316 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics217 = function extendStatics(d, b) {\n _extendStatics217 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics217(d, b);\n };\n\n return function (d, b) {\n _extendStatics217(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerSelectionState = void 0;\n\n var Event_1 = __webpack_require__(14);\n\n var rectangle_1 = __webpack_require__(12);\n\n var MouseHandlerStateBase_1 = __webpack_require__(41);\n\n var MouseHandlerSelectionState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerSelectionState, _super);\n\n function MouseHandlerSelectionState(handler, selection, visualizerManager) {\n var _this = _super.call(this, handler) || this;\n\n _this.selection = selection;\n _this.visualizerManager = visualizerManager;\n return _this;\n }\n\n MouseHandlerSelectionState.prototype.finish = function () {\n this.handler.onDocumentDragEnd([]);\n this.visualizerManager.resetSelectionRectangle();\n\n _super.prototype.finish.call(this);\n };\n\n MouseHandlerSelectionState.prototype.cancelChanges = function () {};\n\n MouseHandlerSelectionState.prototype.onMouseDown = function (evt) {\n this.startPoint = evt.modelPoint;\n this.handler.onDocumentDragStart([]);\n };\n\n MouseHandlerSelectionState.prototype.onMouseMove = function (evt) {\n if (evt.button !== Event_1.MouseButton.Left) this.handler.switchToDefaultState();else {\n this.rectangle = rectangle_1.Rectangle.fromPoints(this.startPoint, evt.modelPoint);\n this.visualizerManager.setSelectionRectangle(this.rectangle);\n }\n };\n\n MouseHandlerSelectionState.prototype.onMouseUp = function (evt) {\n if (this.rectangle !== undefined) this.selection.selectRect(this.rectangle);else this.selection.set([]);\n this.rectangle = undefined;\n this.handler.switchToDefaultState();\n };\n\n return MouseHandlerSelectionState;\n }(MouseHandlerStateBase_1.MouseHandlerCancellableState);\n\n exports.MouseHandlerSelectionState = MouseHandlerSelectionState;\n /***/\n },\n /* 317 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics218 = function extendStatics(d, b) {\n _extendStatics218 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics218(d, b);\n };\n\n return function (d, b) {\n _extendStatics218(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerZoomOnWheelState = void 0;\n\n var MouseHandlerStateBase_1 = __webpack_require__(41);\n\n var Event_1 = __webpack_require__(14);\n\n var Settings_1 = __webpack_require__(28);\n\n var MouseHandlerZoomOnWheelState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerZoomOnWheelState, _super);\n\n function MouseHandlerZoomOnWheelState(handler, settings, view) {\n var _this = _super.call(this, handler) || this;\n\n _this.settings = settings;\n _this.view = view;\n return _this;\n }\n\n MouseHandlerZoomOnWheelState.prototype.onMouseWheel = function (evt) {\n if (!this.trySwitchToDefault(evt)) {\n this.settings.zoomLevel = this.view.getNextStepZoom(evt.deltaY < 0);\n if (evt.source.type === Event_1.MouseEventElementType.Background) this.view.resetScroll();else {\n this.view.scrollTo(evt.modelPoint, evt.offsetPoint);\n this.view.normalize();\n }\n evt.preventDefault = true;\n return true;\n } else return this.handler.state.onMouseWheel(evt);\n };\n\n MouseHandlerZoomOnWheelState.prototype.onMouseUp = function (evt) {\n this.handler.switchToDefaultState();\n this.handler.state.onMouseUp(evt);\n };\n\n MouseHandlerZoomOnWheelState.prototype.onMouseDown = function (evt) {\n this.handler.switchToDefaultState();\n this.handler.state.onMouseDown(evt);\n };\n\n MouseHandlerZoomOnWheelState.prototype.onMouseMove = function (evt) {\n this.trySwitchToDefault(evt) && this.handler.state.onMouseMove(evt);\n };\n\n MouseHandlerZoomOnWheelState.prototype.trySwitchToDefault = function (evt) {\n if (this.handler.canFinishZoomOnWheel(evt)) {\n this.handler.switchToDefaultState();\n return true;\n }\n\n return false;\n };\n\n MouseHandlerZoomOnWheelState.prototype.start = function () {\n _super.prototype.start.call(this);\n\n this.settings.zoomLevel = this.view.getZoom();\n this.settings.autoZoom = Settings_1.AutoZoomMode.Disabled;\n };\n\n return MouseHandlerZoomOnWheelState;\n }(MouseHandlerStateBase_1.MouseHandlerStateBase);\n\n exports.MouseHandlerZoomOnWheelState = MouseHandlerZoomOnWheelState;\n /***/\n },\n /* 318 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics219 = function extendStatics(d, b) {\n _extendStatics219 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics219(d, b);\n };\n\n return function (d, b) {\n _extendStatics219(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerMoveShapeState = void 0;\n\n var MouseHandlerDragDiagramItemStateBase_1 = __webpack_require__(152);\n\n var MouseHandlerMoveShapeState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerMoveShapeState, _super);\n\n function MouseHandlerMoveShapeState(handler, history, model, selection, visualizerManager) {\n var _this = _super.call(this, handler, history, model, selection, visualizerManager) || this;\n\n _this.model = model;\n _this.selection = selection;\n _this.visualizerManager = visualizerManager;\n return _this;\n }\n\n Object.defineProperty(MouseHandlerMoveShapeState.prototype, \"areValidDraggingShapes\", {\n get: function get() {\n return this.shouldClone || this.draggingShapes.length > 0;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MouseHandlerMoveShapeState.prototype, \"areValidDraggingConnectors\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n return MouseHandlerMoveShapeState;\n }(MouseHandlerDragDiagramItemStateBase_1.MouseHandlerDragDiagramItemStateBase);\n\n exports.MouseHandlerMoveShapeState = MouseHandlerMoveShapeState;\n /***/\n },\n /* 319 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics220 = function extendStatics(d, b) {\n _extendStatics220 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics220(d, b);\n };\n\n return function (d, b) {\n _extendStatics220(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerMoveConnectorState = void 0;\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var MouseHandlerDragDiagramItemStateBase_1 = __webpack_require__(152);\n\n var MouseHandlerMoveConnectorState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerMoveConnectorState, _super);\n\n function MouseHandlerMoveConnectorState(handler, history, model, selection, visualizerManager) {\n var _this = _super.call(this, handler, history, model, selection, visualizerManager) || this;\n\n _this.model = model;\n _this.selection = selection;\n _this.visualizerManager = visualizerManager;\n return _this;\n }\n\n Object.defineProperty(MouseHandlerMoveConnectorState.prototype, \"areValidDraggingShapes\", {\n get: function get() {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MouseHandlerMoveConnectorState.prototype, \"areValidDraggingConnectors\", {\n get: function get() {\n var _this = this;\n\n if (this.shouldClone) return this.draggingShapes.length > 0 || this.draggingConnectors.length > 0;\n if (!this.draggingConnectors.length) return false;\n if (!this.draggingShapes.length) return !this.draggingConnectors.some(function (x) {\n return !ModelUtils_1.ModelUtils.canMoveConnector(_this.selectedItems, x.connector);\n });\n return ModelUtils_1.ModelUtils.canMoveConnector(this.selectedItems, this.draggingConnectors[this.draggingConnectorsIndexByKey[this.handler.mouseDownEvent.source.key]].connector);\n },\n enumerable: false,\n configurable: true\n });\n return MouseHandlerMoveConnectorState;\n }(MouseHandlerDragDiagramItemStateBase_1.MouseHandlerDragDiagramItemStateBase);\n\n exports.MouseHandlerMoveConnectorState = MouseHandlerMoveConnectorState;\n /***/\n },\n /* 320 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics221 = function extendStatics(d, b) {\n _extendStatics221 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics221(d, b);\n };\n\n return function (d, b) {\n _extendStatics221(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDefaultReadOnlyTouchState = void 0;\n\n var MouseHandlerDefaultReadOnlyState_1 = __webpack_require__(153);\n\n var MouseHandlerDefaultReadOnlyTouchState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerDefaultReadOnlyTouchState, _super);\n\n function MouseHandlerDefaultReadOnlyTouchState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerDefaultReadOnlyTouchState.prototype.canDragObjectOnMouseDown = function (key) {\n return false;\n };\n\n MouseHandlerDefaultReadOnlyTouchState.prototype.canExpandContainerOnMouseDown = function (key) {\n return false;\n };\n\n MouseHandlerDefaultReadOnlyTouchState.prototype.canClearSelectionOnMouseDown = function () {\n return true;\n };\n\n MouseHandlerDefaultReadOnlyTouchState.prototype.processOnMouseMoveAfterLimit = function (evt) {\n this.startScrolling(evt);\n };\n\n MouseHandlerDefaultReadOnlyTouchState.prototype.canSelectOnMouseUp = function (key) {\n return !this.inSelection(key);\n };\n\n MouseHandlerDefaultReadOnlyTouchState.prototype.canClearSelectionOnMouseUp = function () {\n return false;\n };\n\n return MouseHandlerDefaultReadOnlyTouchState;\n }(MouseHandlerDefaultReadOnlyState_1.MouseHandlerDefaultReadOnlyState);\n\n exports.MouseHandlerDefaultReadOnlyTouchState = MouseHandlerDefaultReadOnlyTouchState;\n /***/\n },\n /* 321 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics222 = function extendStatics(d, b) {\n _extendStatics222 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics222(d, b);\n };\n\n return function (d, b) {\n _extendStatics222(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerDefaultTouchState = void 0;\n\n var MouseHandlerDefaultState_1 = __webpack_require__(148);\n\n var MouseHandlerZoomOnPinchState_1 = __webpack_require__(322);\n\n var MouseHandlerDefaultTouchState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerDefaultTouchState, _super);\n\n function MouseHandlerDefaultTouchState() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n MouseHandlerDefaultTouchState.prototype.updateConnectionsOnMouseMove = function (evt) {};\n\n MouseHandlerDefaultTouchState.prototype.canDragObjectOnMouseDown = function (key) {\n return this.inSelection(key);\n };\n\n MouseHandlerDefaultTouchState.prototype.canExpandContainerOnMouseDown = function (key) {\n return true;\n };\n\n MouseHandlerDefaultTouchState.prototype.canClearSelectionOnMouseDown = function () {\n return true;\n };\n\n MouseHandlerDefaultTouchState.prototype.processOnMouseMoveAfterLimit = function (evt) {\n if (evt.touches.length > 1) this.startZooming(evt);else this.startScrolling(evt);\n };\n\n MouseHandlerDefaultTouchState.prototype.startZooming = function (evt) {\n this.handler.switchState(new MouseHandlerZoomOnPinchState_1.MouseHandlerZoomOnPinchState(this.handler, this.selection, this.settings, this.view));\n };\n\n MouseHandlerDefaultTouchState.prototype.canSelectOnMouseUp = function (key) {\n return !this.inSelection(key);\n };\n\n MouseHandlerDefaultTouchState.prototype.canClearSelectionOnMouseUp = function () {\n return false;\n };\n\n MouseHandlerDefaultTouchState.prototype.canRemoveDiagramItemToSelection = function (evt) {\n return false;\n };\n\n return MouseHandlerDefaultTouchState;\n }(MouseHandlerDefaultState_1.MouseHandlerDefaultState);\n\n exports.MouseHandlerDefaultTouchState = MouseHandlerDefaultTouchState;\n /***/\n },\n /* 322 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics223 = function extendStatics(d, b) {\n _extendStatics223 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics223(d, b);\n };\n\n return function (d, b) {\n _extendStatics223(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MouseHandlerZoomOnPinchState = void 0;\n\n var Settings_1 = __webpack_require__(28);\n\n var point_1 = __webpack_require__(1);\n\n var MouseHandlerScrollingState_1 = __webpack_require__(151);\n\n var metrics_1 = __webpack_require__(36);\n\n var PINCH_CHANGE_DISTANCE = 1;\n\n var MouseHandlerZoomOnPinchState =\n /** @class */\n function (_super) {\n __extends(MouseHandlerZoomOnPinchState, _super);\n\n function MouseHandlerZoomOnPinchState(handler, selection, settings, view) {\n var _this = _super.call(this, handler, view, selection) || this;\n\n _this.selection = selection;\n _this.settings = settings;\n _this.view = view;\n return _this;\n }\n\n MouseHandlerZoomOnPinchState.prototype.onMouseDown = function (evt) {\n _super.prototype.onMouseDown.call(this, evt);\n\n if (evt.touches.length > 1) {\n this.startDistance = this.getTouchDistance(evt);\n this.startZoomLevel = this.settings.zoomLevel;\n this.prevDistance = this.startDistance;\n }\n };\n\n MouseHandlerZoomOnPinchState.prototype.onMouseMove = function (evt) {\n if (evt.touches.length > 1) {\n var distance = this.getTouchDistance(evt);\n\n if (Math.abs(this.prevDistance - distance) > PINCH_CHANGE_DISTANCE) {\n this.settings.zoomLevel = this.startZoomLevel * (distance / this.startDistance);\n this.view.scrollTo(this.getMiddleLayoutPoint(evt), this.getMiddleAbsPoint(evt));\n this.view.normalize();\n this.prevDistance = distance;\n }\n }\n\n _super.prototype.onMouseMove.call(this, evt);\n };\n\n MouseHandlerZoomOnPinchState.prototype.onMouseUp = function (evt) {\n if (evt.touches.length === 0) setTimeout(function () {\n this.handler.switchToDefaultState();\n }.bind(this), 1);\n };\n\n MouseHandlerZoomOnPinchState.prototype.start = function () {\n _super.prototype.start.call(this);\n\n this.settings.zoomLevel = this.view.getZoom();\n this.settings.autoZoom = Settings_1.AutoZoomMode.Disabled;\n };\n\n MouseHandlerZoomOnPinchState.prototype.getTouchDistance = function (evt) {\n var pt0 = new point_1.Point(evt.touches[0].offsetPoint.x, evt.touches[0].offsetPoint.y);\n var pt1 = new point_1.Point(evt.touches[1].offsetPoint.x, evt.touches[1].offsetPoint.y);\n return metrics_1.Metrics.euclideanDistance(pt0, pt1);\n };\n\n MouseHandlerZoomOnPinchState.prototype.getPointByEvent = function (evt) {\n return this.getMiddleAbsPoint(evt);\n };\n\n MouseHandlerZoomOnPinchState.prototype.getMiddleAbsPoint = function (evt) {\n if (evt.touches.length > 1) return MouseHandlerZoomOnPinchState.getMiddlePointByEvent(evt, function (touch) {\n return touch.offsetPoint;\n });\n return evt.offsetPoint;\n };\n\n MouseHandlerZoomOnPinchState.prototype.getMiddleLayoutPoint = function (evt) {\n if (evt.touches.length > 1) return MouseHandlerZoomOnPinchState.getMiddlePointByEvent(evt, function (touch) {\n return touch.modelPoint;\n });\n return evt.modelPoint;\n };\n\n MouseHandlerZoomOnPinchState.getMiddlePointByEvent = function (evt, getPoint) {\n if (evt.touches.length > 1) return new point_1.Point((getPoint(evt.touches[0]).x + getPoint(evt.touches[1]).x) / 2, (getPoint(evt.touches[0]).y + getPoint(evt.touches[1]).y) / 2);\n };\n\n return MouseHandlerZoomOnPinchState;\n }(MouseHandlerScrollingState_1.MouseHandlerScrollingState);\n\n exports.MouseHandlerZoomOnPinchState = MouseHandlerZoomOnPinchState;\n /***/\n },\n /* 323 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TextInputHandler = void 0;\n\n var ChangeShapeTextHistoryItem_1 = __webpack_require__(154);\n\n var Event_1 = __webpack_require__(14);\n\n var key_1 = __webpack_require__(26);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var ChangeConnectorTextHistoryItem_1 = __webpack_require__(67);\n\n var TextInputHandler =\n /** @class */\n function () {\n function TextInputHandler(control) {\n this.control = control;\n }\n\n TextInputHandler.prototype.startTextInput = function (item, position) {\n if (item.isLocked || !item.enableText || !item.allowEditText || this.control.settings.readOnly || !this.canFinishTextEditing()) return;\n this.control.beginUpdate();\n this.textInputItem = item;\n var allowed = true;\n\n if (this.textInputItem instanceof Shape_1.Shape) {\n var textRect = this.textInputItem.textEditRectangle;\n allowed = this.control.permissionsProvider.canChangeShapeText(this.textInputItem);\n if (allowed) this.control.eventManager.raiseTextInputStart(this.textInputItem, this.textInputItem.text, textRect.createPosition(), textRect.createSize());\n } else if (this.textInputItem instanceof Connector_1.Connector) {\n this.textInputPosition = position;\n allowed = this.control.permissionsProvider.canChangeConnectorText(this.textInputItem, this.textInputPosition);\n if (allowed) this.control.eventManager.raiseTextInputStart(this.textInputItem, this.textInputItem.getText(this.textInputPosition), this.textInputItem.getTextPoint(this.textInputPosition));\n }\n\n if (!allowed) {\n delete this.textInputItem;\n this.control.endUpdate();\n }\n };\n\n TextInputHandler.prototype.endTextInput = function () {\n var textInputItem = this.textInputItem;\n delete this.textInputItem;\n this.control.eventManager.raiseTextInputEnd(textInputItem);\n this.control.endUpdate();\n this.control.barManager.updateItemsState();\n };\n\n TextInputHandler.prototype.raiseTextInputPermissionsCheck = function (allowed) {\n this.control.eventManager.raiseTextInputPermissionsCheck(this.textInputItem, allowed);\n };\n\n TextInputHandler.prototype.applyTextInput = function (text) {\n if (!this.canFinishTextEditing(text)) return;\n var textInputItem = this.textInputItem;\n var textInputPosition = this.textInputPosition; // call this first to be able measure text on changes\n\n this.endTextInput();\n\n if (textInputItem instanceof Shape_1.Shape) {\n if (textInputItem.text !== text) this.control.history.addAndRedo(new ChangeShapeTextHistoryItem_1.ChangeShapeTextHistoryItem(textInputItem, text));\n } else if (textInputItem instanceof Connector_1.Connector) if (textInputItem.getText(textInputPosition) !== text) this.control.history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(textInputItem, textInputPosition, text));\n };\n\n TextInputHandler.prototype.canFinishTextEditing = function (text) {\n var allowed = true;\n\n if (this.isTextInputActive()) {\n var newText = text || this.getTextInputElementValue();\n if (this.textInputItem instanceof Shape_1.Shape) allowed = this.control.permissionsProvider.canApplyShapeTextChange(this.textInputItem, newText);else if (this.textInputItem instanceof Connector_1.Connector) allowed = this.control.permissionsProvider.canApplyConnectorTextChange(this.textInputItem, this.textInputPosition, newText);\n this.raiseTextInputPermissionsCheck(allowed);\n }\n\n return allowed;\n };\n\n TextInputHandler.prototype.getTextInputElementValue = function () {\n if (this.control.render) return this.control.render.input.getTextInputElementValue();\n return \"\";\n };\n\n TextInputHandler.prototype.cancelTextInput = function () {\n this.raiseTextInputPermissionsCheck(true);\n this.endTextInput();\n };\n\n TextInputHandler.prototype.isTextInputActive = function () {\n return this.textInputItem !== undefined;\n };\n\n TextInputHandler.prototype.processDblClick = function (evt) {\n if (evt.source.type === Event_1.MouseEventElementType.Shape) {\n var shape = this.control.model.findShape(evt.source.key);\n this.startTextInput(shape);\n } else if (evt.source.type === Event_1.MouseEventElementType.Connector) {\n var connector = this.control.model.findConnector(evt.source.key);\n var position = connector.getTextPositionByPoint(evt.modelPoint);\n this.startTextInput(connector, position);\n } else if (evt.source.type === Event_1.MouseEventElementType.ConnectorText) {\n var connector = this.control.model.findConnector(evt.source.key);\n var position = parseFloat(evt.source.value);\n this.startTextInput(connector, position);\n }\n };\n\n TextInputHandler.prototype.onDblClick = function (evt) {\n this.processDblClick(evt);\n };\n\n TextInputHandler.prototype.onKeyDown = function (evt) {\n if (!this.isTextInputActive()) return;\n\n if (evt.keyCode === 13 && this.hasCtrlModifier(evt.modifiers)) {\n evt.preventDefault = true;\n this.applyTextInput(evt.inputText);\n }\n\n if (evt.keyCode === 27) this.cancelTextInput();\n };\n\n TextInputHandler.prototype.onBlur = function (evt) {\n if (this.isTextInputActive()) this.applyTextInput(evt.inputText);\n };\n\n TextInputHandler.prototype.onFocus = function (evt) {};\n\n TextInputHandler.prototype.hasCtrlModifier = function (key) {\n return (key & key_1.ModifierKey.Ctrl) > 0;\n };\n\n return TextInputHandler;\n }();\n\n exports.TextInputHandler = TextInputHandler;\n /***/\n },\n /* 324 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics224 = function extendStatics(d, b) {\n _extendStatics224 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics224(d, b);\n };\n\n return function (d, b) {\n _extendStatics224(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ContextMenuHandler = void 0;\n\n var Utils_1 = __webpack_require__(3);\n\n var Event_1 = __webpack_require__(14);\n\n var key_1 = __webpack_require__(26);\n\n var batch_updatable_1 = __webpack_require__(80);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var browser_1 = __webpack_require__(19);\n\n var SELECTION_CHANGED_EVENT = 1;\n\n var ContextMenuHandler =\n /** @class */\n function (_super) {\n __extends(ContextMenuHandler, _super);\n\n function ContextMenuHandler() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.contextMenuVisible = false;\n _this.textInputStarted = false;\n _this.canHideContextMenu = true;\n _this.onVisibilityChanged = new Utils_1.EventDispatcher();\n _this.contextToolboxVisible = false;\n _this.hasTouchDown = false;\n _this.isTouchUIEnabled = false;\n return _this;\n }\n\n Object.defineProperty(ContextMenuHandler.prototype, \"isTouchMode\", {\n get: function get() {\n return this.isTouchUIEnabled || this.hasTouchDown;\n },\n enumerable: false,\n configurable: true\n });\n\n ContextMenuHandler.prototype.initialize = function (selection, isTouchUIEnabled) {\n this.selection = selection;\n this.isTouchUIEnabled = isTouchUIEnabled;\n if (this.isTouchUIEnabled) this.selection.onChanged.add(this);\n };\n\n ContextMenuHandler.prototype.onMouseDown = function (evt) {\n this.hasTouchDown = evt.isTouchEvent;\n\n if (this.isTouchMode) {\n if (!this.isTouchUIEnabled) this.selection.onChanged.add(this);\n if (evt.source.key === undefined) this.hideContextMenu();\n return;\n } else if (!this.isTouchUIEnabled) this.selection.onChanged.remove(this);\n\n if (evt.button === Event_1.MouseButton.Left && evt.source.type !== Event_1.MouseEventElementType.Undefined) this.hideContextMenu();\n };\n\n ContextMenuHandler.prototype.onMouseUp = function (evt) {\n this.hasTouchDown = false;\n if (evt.isTouchEvent || this.isTouchUIEnabled) return;\n if (!browser_1.Browser.MacOSPlatform || browser_1.Browser.MacOSPlatform && this.canHideContextMenu) this.hideContextMenu();\n this.canHideContextMenu = true;\n };\n\n ContextMenuHandler.prototype.onFocus = function (evt) {\n var _this = this;\n\n if (this.isTouchMode) setTimeout(function () {\n _this.showContextMenuAtSelection();\n }, 1);\n };\n\n ContextMenuHandler.prototype.onBlur = function (evt) {\n var _this = this;\n\n if (this.isTouchMode) setTimeout(function () {\n _this.hideContextMenu();\n }, 1);\n };\n\n ContextMenuHandler.prototype.onTextInputFocus = function (evt) {\n var _this = this;\n\n if (this.isTouchMode) setTimeout(function () {\n _this.hideContextMenu();\n }, 1);\n };\n\n ContextMenuHandler.prototype.onTextInputBlur = function (evt) {\n var _this = this;\n\n if (this.isTouchMode) setTimeout(function () {\n _this.showContextMenuAtSelection();\n }, 1);\n };\n\n ContextMenuHandler.prototype.onLongTouch = function (evt) {\n if (this.isTouchMode && evt.source.type === Event_1.MouseEventElementType.Document) this.showContextMenuAtEmptySelection(evt.modelPoint);\n };\n\n ContextMenuHandler.prototype.onKeyDown = function (evt) {\n if (!this.isTouchMode && evt.keyCode === key_1.KeyCode.Esc) this.hideContextMenu();\n };\n\n ContextMenuHandler.prototype.onShortcut = function (evt) {\n if (!this.isTouchMode) this.hideContextMenu();\n };\n\n ContextMenuHandler.prototype.notifyDragStart = function (itemKeys) {\n if (this.isTouchMode) this.hideContextMenu();\n };\n\n ContextMenuHandler.prototype.notifyDragEnd = function (itemKeys) {\n if (this.isTouchMode) this.showContextMenuAtSelection();\n };\n\n ContextMenuHandler.prototype.notifyShowContextToolbox = function (modelPoint, getPositionToInsertShapeTo, side, category, callback) {\n if (this.isTouchMode) {\n this.contextToolboxVisible = true;\n this.hideContextMenu();\n }\n };\n\n ContextMenuHandler.prototype.notifyHideContextToolbox = function () {\n if (this.isTouchMode) {\n this.contextToolboxVisible = false;\n this.showContextMenuAtSelection();\n }\n };\n\n ContextMenuHandler.prototype.onUpdateUnlocked = function (occurredEvents) {\n if (this.isTouchMode) if (occurredEvents & SELECTION_CHANGED_EVENT) this.raiseSelectionChanged();\n };\n\n ContextMenuHandler.prototype.notifySelectionChanged = function (selection) {\n if (this.isUpdateLocked()) this.registerOccurredEvent(SELECTION_CHANGED_EVENT);else this.raiseSelectionChanged();\n };\n\n ContextMenuHandler.prototype.onContextMenu = function (evt) {\n // on Mac OS event sequence is mousedown - contextmenu - mouseup\n // on Windows - mousedown - mouseup - contextmenu\n // Thats why context menu immediately closes on Mac OS after showing\n if (browser_1.Browser.MacOSPlatform) this.canHideContextMenu = false;\n this.showContextMenu(evt.eventPoint, evt.modelPoint);\n };\n\n ContextMenuHandler.prototype.notifyTextInputStart = function (item, text, position, size) {\n this.textInputStarted = true;\n };\n\n ContextMenuHandler.prototype.notifyTextInputEnd = function (item) {\n this.textInputStarted = false;\n };\n\n ContextMenuHandler.prototype.notifyTextInputPermissionsCheck = function (item, allowed) {};\n\n ContextMenuHandler.prototype.notifyDragScrollStart = function () {};\n\n ContextMenuHandler.prototype.notifyDragScrollEnd = function () {};\n\n ContextMenuHandler.prototype.showContextMenu = function (eventPoint, modelPoint) {\n var _this = this;\n\n if (!this.textInputStarted) {\n this.onVisibilityChanged.raise1(function (l) {\n return l.notifyShowContextMenu(eventPoint, modelPoint, _this.isTouchMode);\n });\n this.contextMenuVisible = true;\n }\n };\n\n ContextMenuHandler.prototype.hideContextMenu = function () {\n if (this.contextMenuVisible) {\n this.onVisibilityChanged.raise1(function (l) {\n return l.notifyHideContextMenu();\n });\n this.contextMenuVisible = false;\n }\n };\n\n ContextMenuHandler.prototype.getSelectedItems = function () {\n return this.selection.getSelectedItems(true);\n };\n\n ContextMenuHandler.prototype.showContextMenuAtSelection = function () {\n if (this.contextToolboxVisible) return;\n var items = this.getSelectedItems();\n if (items.length) this.showContextMenu(undefined, ModelUtils_1.ModelUtils.createRectangle(items).createPosition());\n };\n\n ContextMenuHandler.prototype.showContextMenuAtEmptySelection = function (point) {\n if (this.contextToolboxVisible) return;\n var items = this.getSelectedItems();\n if (!items.length) this.showContextMenu(undefined, point);\n };\n\n ContextMenuHandler.prototype.raiseSelectionChanged = function () {\n var items = this.getSelectedItems();\n if (items.length) this.showContextMenuAtSelection();else this.hideContextMenu();\n };\n\n return ContextMenuHandler;\n }(batch_updatable_1.BatchUpdatableObject);\n\n exports.ContextMenuHandler = ContextMenuHandler;\n /***/\n },\n /* 325 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics225 = function extendStatics(d, b) {\n _extendStatics225 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics225(d, b);\n };\n\n return function (d, b) {\n _extendStatics225(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.VisualizerManager = void 0;\n\n var ConnectionTargetVisualizer_1 = __webpack_require__(326);\n\n var ContainerTargetVisualizer_1 = __webpack_require__(327);\n\n var ExtensionLinesVisualizer_1 = __webpack_require__(156);\n\n var Event_1 = __webpack_require__(14);\n\n var ConnectionPointsVisualizer_1 = __webpack_require__(328);\n\n var Shape_1 = __webpack_require__(13);\n\n var Utils_1 = __webpack_require__(3);\n\n var segment_1 = __webpack_require__(33);\n\n var point_1 = __webpack_require__(1);\n\n var CanvasSelectionManager_1 = __webpack_require__(157);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ResizeInfoVisualizer_1 = __webpack_require__(329);\n\n var SelectionRectVisualizer_1 = __webpack_require__(330);\n\n var batch_updatable_1 = __webpack_require__(80);\n\n var LocalizationService_1 = __webpack_require__(37);\n\n var SELECTION_CHANGED_EVENT = 1;\n\n var VisualizerManager =\n /** @class */\n function (_super) {\n __extends(VisualizerManager, _super);\n\n function VisualizerManager(settings, readOnly) {\n if (readOnly === void 0) {\n readOnly = settings.readOnly;\n }\n\n var _this = _super.call(this) || this;\n\n _this.settings = settings;\n _this.readOnly = readOnly;\n _this.hasTouchDown = false;\n _this.isTouchUIEnabled = false;\n _this.onVisualizersUpdate = new Utils_1.EventDispatcher();\n _this.connectionPointsVisualizer = new ConnectionPointsVisualizer_1.ConnectionPointsVisualizer(_this.onVisualizersUpdate);\n _this.connectionPointsVisualizer = new ConnectionPointsVisualizer_1.ConnectionPointsVisualizer(_this.onVisualizersUpdate);\n _this.connectionTargetVisualizer = new ConnectionTargetVisualizer_1.ConnectionTargetVisualizer(_this.onVisualizersUpdate);\n _this.containerTargetVisualizer = new ContainerTargetVisualizer_1.ContainerTargetVisualizer(_this.onVisualizersUpdate);\n _this.extensionLinesVisualizer = new ExtensionLinesVisualizer_1.ExtensionLinesVisualizer(_this.onVisualizersUpdate);\n _this.resizeInfoVisualizer = new ResizeInfoVisualizer_1.ResizeInfoVisualizer(_this.onVisualizersUpdate);\n _this.selectionRectangleVisualizer = new SelectionRectVisualizer_1.SelectionRectVisualizer(_this.onVisualizersUpdate);\n\n _this.settings.onReadOnlyChanged.add(_this);\n\n return _this;\n }\n\n Object.defineProperty(VisualizerManager.prototype, \"isTouchMode\", {\n get: function get() {\n return this.isTouchUIEnabled || this.hasTouchDown;\n },\n enumerable: false,\n configurable: true\n });\n\n VisualizerManager.prototype.initialize = function (model, eventManager, selection, isTouchUIEnabled) {\n this.model = model;\n this.eventManager = eventManager;\n this.selection = selection;\n this.isTouchUIEnabled = isTouchUIEnabled;\n if (this.isTouchUIEnabled) this.selection.onChanged.add(this);\n };\n\n VisualizerManager.prototype.onMouseDown = function (evt) {\n this.hasTouchDown = evt.isTouchEvent;\n if (!this.isTouchUIEnabled) if (this.isTouchMode) this.selection.onChanged.add(this);else this.selection.onChanged.remove(this);\n };\n\n VisualizerManager.prototype.onMouseUp = function (evt) {};\n\n VisualizerManager.prototype.onMouseEnter = function (evt) {};\n\n VisualizerManager.prototype.onMouseLeave = function (evt) {\n if (!evt.isTouchEvent && !this.isTouchUIEnabled) this.resetConnectionPoints();else this.hasTouchDown = false;\n this.resetConnectionTarget();\n this.resetExtensionLines();\n this.resetContainerTarget();\n this.resetResizeInfo();\n this.resetSelectionRectangle();\n };\n\n VisualizerManager.prototype.onDocumentDragStart = function (keys) {\n this.eventManager.onDocumentDragStart(keys);\n };\n\n VisualizerManager.prototype.onDocumentDragEnd = function (keys) {\n this.eventManager.onDocumentDragEnd(keys);\n };\n\n VisualizerManager.prototype.onDocumentDragScrollStart = function () {\n this.eventManager.onDocumentDragScrollStart();\n };\n\n VisualizerManager.prototype.onDocumentDragScrollEnd = function () {\n this.eventManager.onDocumentDragScrollEnd();\n };\n\n VisualizerManager.prototype.onDocumentClick = function (keys) {\n this.eventManager.onDocumentClick(keys);\n };\n\n VisualizerManager.prototype.canFinishTextEditing = function () {\n return this.eventManager.canFinishTextEditing();\n };\n\n VisualizerManager.prototype.onBlur = function (evt) {\n var _this = this;\n\n if (this.isTouchMode) setTimeout(function () {\n _this.hideConnections();\n }, 1);\n };\n\n VisualizerManager.prototype.onFocus = function (evt) {\n var _this = this;\n\n if (this.isTouchMode) setTimeout(function () {\n _this.showConnections();\n }, 1);\n };\n\n VisualizerManager.prototype.updateConnections = function (item, type, value) {\n var pointIndex = -1;\n if (value && type === Event_1.MouseEventElementType.ShapeConnectionPoint) pointIndex = parseInt(value);\n var preventShowOutside = item && (!item.allowResizeHorizontally && !item.allowResizeVertically || item.isLocked);\n this.setConnectionPoints(item, type, pointIndex, preventShowOutside);\n };\n\n VisualizerManager.prototype.setConnectionPoints = function (item, type, pointIndex, preventShowOutside) {\n if (!this.eventManager.isFocused()) return;\n\n if (item && (type === Event_1.MouseEventElementType.Shape || type === Event_1.MouseEventElementType.ShapeResizeBox || type === Event_1.MouseEventElementType.ShapeConnectionPoint) && item !== undefined) {\n var key = item.key;\n var isSelected = this.selection.hasKey(key);\n var points = item.getConnectionPoints();\n this.connectionPointsVisualizer.setPoints(key, points.map(function (pt) {\n return new ConnectionPointsVisualizer_1.ConnectionPointInfo(pt, item.getConnectionPointSide(pt));\n }), pointIndex, isSelected && !preventShowOutside && item.rectangle);\n } else this.connectionPointsVisualizer.reset();\n };\n\n VisualizerManager.prototype.setConnectionPointIndex = function (index) {\n this.connectionPointsVisualizer.setPointIndex(index);\n };\n\n VisualizerManager.prototype.updateConnectionPoints = function () {\n var item = this.model.findItem(this.connectionPointsVisualizer.getKey());\n if (item !== undefined) this.connectionPointsVisualizer.update();else this.connectionPointsVisualizer.reset();\n };\n\n VisualizerManager.prototype.resetConnectionPoints = function () {\n this.connectionPointsVisualizer.reset();\n };\n\n VisualizerManager.prototype.setConnectionTarget = function (item, type) {\n if (item && (type === Event_1.MouseEventElementType.Shape || type === Event_1.MouseEventElementType.ShapeConnectionPoint)) this.connectionTargetVisualizer.setTargetRect(item.key, item.rectangle, item.strokeWidth);else this.connectionTargetVisualizer.reset();\n };\n\n VisualizerManager.prototype.resetConnectionTarget = function () {\n this.connectionTargetVisualizer.reset();\n };\n\n VisualizerManager.prototype.setContainerTarget = function (item, type) {\n if (item && !item.isLocked && type === Event_1.MouseEventElementType.Shape && item.enableChildren) this.containerTargetVisualizer.setTargetRect(item.key, item.rectangle, item.strokeWidth);else this.containerTargetVisualizer.reset();\n };\n\n VisualizerManager.prototype.resetContainerTarget = function () {\n this.containerTargetVisualizer.reset();\n };\n\n VisualizerManager.prototype.setExtensionLines = function (items) {\n var _this = this;\n\n if (!this.eventManager.isFocused()) return;\n this.extensionLinesVisualizer.reset();\n var rect = ModelUtils_1.ModelUtils.createRectangle(items.filter(function (item) {\n return item;\n }));\n this.addPageExtensionLines(rect);\n this.model.items.forEach(function (item) {\n if (items.indexOf(item) > -1) return;\n if (item instanceof Shape_1.Shape) _this.addShapeExtensionLines(item, rect);\n });\n };\n\n VisualizerManager.prototype.addPageExtensionLines = function (rect) {\n var horPages = Math.round(this.model.size.width / this.model.pageWidth);\n var verPages = Math.round(this.model.size.height / this.model.pageHeight);\n\n for (var i = 0; i < horPages; i++) {\n for (var j = 0; j < verPages; j++) {\n var center = new point_1.Point(i * this.model.pageWidth + this.model.pageWidth / 2, j * this.model.pageHeight + this.model.pageHeight / 2);\n\n if (Math.abs(rect.center.x - center.x) < this.settings.gridSize / 2) {\n var segment = new segment_1.Segment(new point_1.Point(rect.center.x, 0), new point_1.Point(rect.center.x, this.model.size.height));\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterToPageCenter, segment, \"\");\n }\n\n if (Math.abs(rect.center.y - center.y) < this.settings.gridSize / 2) {\n var segment = new segment_1.Segment(new point_1.Point(0, rect.center.y), new point_1.Point(this.model.size.width, rect.center.y));\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterToPageCenter, segment, \"\");\n }\n\n if (Math.abs(rect.x - center.x) < this.settings.gridSize / 2) {\n var segment = new segment_1.Segment(new point_1.Point(rect.x, 0), new point_1.Point(rect.x, this.model.size.height));\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.LeftToPageCenter, segment, \"\");\n }\n\n if (Math.abs(rect.y - center.y) < this.settings.gridSize / 2) {\n var segment = new segment_1.Segment(new point_1.Point(0, rect.y), new point_1.Point(this.model.size.width, rect.y));\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.TopToPageCenter, segment, \"\");\n }\n\n if (Math.abs(rect.right - center.x) < this.settings.gridSize / 2) {\n var segment = new segment_1.Segment(new point_1.Point(rect.right, 0), new point_1.Point(rect.right, this.model.size.height));\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.RightToPageCenter, segment, \"\");\n }\n\n if (Math.abs(rect.bottom - center.y) < this.settings.gridSize / 2) {\n var segment = new segment_1.Segment(new point_1.Point(0, rect.bottom), new point_1.Point(this.model.size.width, rect.bottom));\n this.extensionLinesVisualizer.addSegment(ExtensionLinesVisualizer_1.ExtensionLineType.BottomToPageCenter, segment, \"\");\n }\n }\n }\n };\n\n VisualizerManager.prototype.addShapeExtensionLines = function (shape, rect) {\n var sRect = shape.rectangle;\n var lwCor = shape.strokeWidth - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineWidth;\n var showDistance = true;\n var x1nc;\n var y1nc;\n var x2nc;\n var y2nc;\n var x1;\n var y1;\n var x2;\n var y2;\n\n if (rect.right < sRect.x) {\n x1nc = rect.right;\n x2nc = sRect.x;\n x1 = x1nc + lwCor + CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\n x2 = x2nc - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\n } else if (rect.x > sRect.right) {\n x1nc = rect.x;\n x2nc = sRect.right;\n x1 = x1nc - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\n x2 = x2nc + lwCor + CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\n }\n\n if (rect.bottom < sRect.y) {\n y1nc = rect.bottom;\n y2nc = sRect.y;\n y1 = y1nc + lwCor + CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\n y2 = y2nc - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\n } else if (rect.y > sRect.bottom) {\n y1nc = rect.y;\n y2nc = sRect.bottom;\n y1 = y1nc - CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\n y2 = y2nc + lwCor + CanvasSelectionManager_1.CanvasSelectionManager.extensionLineOffset;\n }\n\n if (x1 !== undefined && x2 !== undefined) {\n var distanceText = this.getViewUnitText(Math.abs(x1nc - x2nc));\n\n if (rect.center.y === sRect.center.y) {\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.center.y), new point_1.Point(x2, sRect.center.y));\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterAfter : ExtensionLinesVisualizer_1.ExtensionLineType.VerticalCenterBefore, segment, showDistance ? distanceText : \"\");\n showDistance = false;\n }\n\n if (rect.y === sRect.y) {\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.y), new point_1.Point(x2, sRect.y));\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.TopToTopAfter : ExtensionLinesVisualizer_1.ExtensionLineType.TopToTopBefore, segment, showDistance ? distanceText : \"\");\n }\n\n if (rect.bottom === sRect.bottom) {\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.bottom + lwCor), new point_1.Point(x2, sRect.bottom + lwCor));\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.BottomToBottomAfter : ExtensionLinesVisualizer_1.ExtensionLineType.BottomToBottomBefore, segment, showDistance ? distanceText : \"\");\n }\n\n if (rect.y === sRect.bottom) {\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.y), new point_1.Point(x2, sRect.bottom + lwCor));\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.TopToBottomAfter : ExtensionLinesVisualizer_1.ExtensionLineType.TopToBottomBefore, segment, showDistance ? distanceText : \"\");\n }\n\n if (rect.bottom === sRect.y) {\n var segment = new segment_1.Segment(new point_1.Point(x1, rect.bottom + lwCor), new point_1.Point(x2, sRect.y));\n this.extensionLinesVisualizer.addSegment(x1 > x2 ? ExtensionLinesVisualizer_1.ExtensionLineType.BottomToTopAfter : ExtensionLinesVisualizer_1.ExtensionLineType.BottomToTopBefore, segment, showDistance ? distanceText : \"\");\n }\n }\n\n if (y1 !== undefined && y2 !== undefined) {\n var distanceText = this.getViewUnitText(Math.abs(y1nc - y2nc));\n\n if (rect.center.x === sRect.center.x) {\n var segment = new segment_1.Segment(new point_1.Point(rect.center.x, y1), new point_1.Point(sRect.center.x, y2));\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterBelow : ExtensionLinesVisualizer_1.ExtensionLineType.HorizontalCenterAbove, segment, showDistance ? distanceText : \"\");\n showDistance = false;\n }\n\n if (rect.x === sRect.x) {\n var segment = new segment_1.Segment(new point_1.Point(rect.x, y1), new point_1.Point(sRect.x, y2));\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.LeftToLeftBelow : ExtensionLinesVisualizer_1.ExtensionLineType.LeftToLeftAbove, segment, showDistance ? distanceText : \"\");\n }\n\n if (rect.right === sRect.right) {\n var segment = new segment_1.Segment(new point_1.Point(rect.right + lwCor, y1), new point_1.Point(sRect.right + lwCor, y2));\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.RightToRightBelow : ExtensionLinesVisualizer_1.ExtensionLineType.RightToRightAbove, segment, showDistance ? distanceText : \"\");\n }\n\n if (rect.x === sRect.right) {\n var segment = new segment_1.Segment(new point_1.Point(rect.x, y1), new point_1.Point(sRect.right + lwCor, y2));\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.LeftToRightBelow : ExtensionLinesVisualizer_1.ExtensionLineType.LeftToRightAbove, segment, showDistance ? distanceText : \"\");\n }\n\n if (rect.right === sRect.x) {\n var segment = new segment_1.Segment(new point_1.Point(rect.right + lwCor, y1), new point_1.Point(sRect.x, y2));\n this.extensionLinesVisualizer.addSegment(y1 > y2 ? ExtensionLinesVisualizer_1.ExtensionLineType.RightToLeftBelow : ExtensionLinesVisualizer_1.ExtensionLineType.RightToLeftAbove, segment, showDistance ? distanceText : \"\");\n }\n }\n };\n\n VisualizerManager.prototype.resetExtensionLines = function () {\n this.extensionLinesVisualizer.reset();\n };\n\n VisualizerManager.prototype.setResizeInfo = function (items) {\n var rect = ModelUtils_1.ModelUtils.createRectangle(items);\n var point = new point_1.Point(rect.center.x, rect.bottom + CanvasSelectionManager_1.CanvasSelectionManager.resizeInfoOffset);\n var text = this.getViewUnitText(rect.width) + \" x \" + this.getViewUnitText(rect.height);\n this.resizeInfoVisualizer.set(point, text);\n };\n\n VisualizerManager.prototype.resetResizeInfo = function () {\n this.resizeInfoVisualizer.reset();\n };\n\n VisualizerManager.prototype.setSelectionRectangle = function (rect) {\n this.selectionRectangleVisualizer.setRectangle(rect);\n };\n\n VisualizerManager.prototype.resetSelectionRectangle = function () {\n this.selectionRectangleVisualizer.reset();\n }; // utils\n\n\n VisualizerManager.prototype.getViewUnitText = function (value) {\n return ModelUtils_1.ModelUtils.getUnitText(this.settings.viewUnits, LocalizationService_1.DiagramLocalizationService.unitItems, LocalizationService_1.DiagramLocalizationService.formatUnit, value);\n };\n\n VisualizerManager.prototype.notifyReadOnlyChanged = function (readOnly) {\n this.readOnly = readOnly;\n\n if (this.readOnly) {\n this.resetConnectionPoints();\n this.resetConnectionTarget();\n this.resetExtensionLines();\n this.resetContainerTarget();\n this.resetResizeInfo();\n this.resetSelectionRectangle();\n }\n };\n\n VisualizerManager.prototype.notifyDragStart = function (itemKeys) {\n if (this.isTouchMode) this.hideConnections();\n };\n\n VisualizerManager.prototype.notifyDragEnd = function (itemKeys) {\n if (this.isTouchMode) this.showConnections();\n };\n\n VisualizerManager.prototype.onUpdateUnlocked = function (occurredEvents) {\n if (this.isTouchMode) if (occurredEvents & SELECTION_CHANGED_EVENT) this.raiseSelectionChanged();\n };\n\n VisualizerManager.prototype.notifyDragScrollStart = function () {};\n\n VisualizerManager.prototype.notifyDragScrollEnd = function () {};\n\n VisualizerManager.prototype.notifySelectionChanged = function (selection) {\n if (this.isUpdateLocked()) this.registerOccurredEvent(SELECTION_CHANGED_EVENT);else this.raiseSelectionChanged();\n };\n\n VisualizerManager.prototype.hideConnections = function () {\n if (this.readOnly) return;\n this.resetConnectionPoints();\n };\n\n VisualizerManager.prototype.showConnections = function () {\n if (this.readOnly) return;\n\n if (this.needShowConnections()) {\n var shapes = this.selection.getSelectedShapes();\n if (shapes.length === 1) this.setConnectionPoints(shapes[0], Event_1.MouseEventElementType.ShapeConnectionPoint, -1, !shapes[0].allowResizeHorizontally && !shapes[0].allowResizeVertically || shapes[0].isLocked);\n }\n };\n\n VisualizerManager.prototype.raiseSelectionChanged = function () {\n if (this.needShowConnections()) this.showConnections();else this.hideConnections();\n };\n\n VisualizerManager.prototype.needShowConnections = function () {\n var items = this.selection.getSelectedItems();\n var shapes = this.selection.getSelectedShapes();\n return items.length === 1 && shapes.length === 1;\n };\n\n return VisualizerManager;\n }(batch_updatable_1.BatchUpdatableObject);\n\n exports.VisualizerManager = VisualizerManager;\n /***/\n },\n /* 326 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics226 = function extendStatics(d, b) {\n _extendStatics226 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics226(d, b);\n };\n\n return function (d, b) {\n _extendStatics226(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectionTargetVisualizer = exports.ConnectionTargetInfo = void 0;\n\n var TargetVisualizerBase_1 = __webpack_require__(155);\n\n var ConnectionTargetInfo =\n /** @class */\n function () {\n function ConnectionTargetInfo(rect, strokeWidth) {\n this.rect = rect;\n this.strokeWidth = strokeWidth;\n this.allowed = true;\n }\n\n return ConnectionTargetInfo;\n }();\n\n exports.ConnectionTargetInfo = ConnectionTargetInfo;\n\n var ConnectionTargetVisualizer =\n /** @class */\n function (_super) {\n __extends(ConnectionTargetVisualizer, _super);\n\n function ConnectionTargetVisualizer(dispatcher) {\n return _super.call(this, dispatcher) || this;\n }\n\n ConnectionTargetVisualizer.prototype.raiseShow = function () {\n var _this = this;\n\n var info = new ConnectionTargetInfo(this.targetRect, this.targetStrokeWidth);\n this.dispatcher.raise1(function (l) {\n return l.notifyConnectionTargetShow(_this.key, info);\n });\n };\n\n ConnectionTargetVisualizer.prototype.raiseHide = function () {\n this.dispatcher.raise1(function (l) {\n return l.notifyConnectionTargetHide();\n });\n };\n\n return ConnectionTargetVisualizer;\n }(TargetVisualizerBase_1.TargetVisualizerBase);\n\n exports.ConnectionTargetVisualizer = ConnectionTargetVisualizer;\n /***/\n },\n /* 327 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics227 = function extendStatics(d, b) {\n _extendStatics227 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics227(d, b);\n };\n\n return function (d, b) {\n _extendStatics227(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ContainerTargetVisualizer = exports.ContainerTargetInfo = void 0;\n\n var TargetVisualizerBase_1 = __webpack_require__(155);\n\n var ContainerTargetInfo =\n /** @class */\n function () {\n function ContainerTargetInfo(rect, strokeWidth) {\n this.rect = rect;\n this.strokeWidth = strokeWidth;\n }\n\n return ContainerTargetInfo;\n }();\n\n exports.ContainerTargetInfo = ContainerTargetInfo;\n\n var ContainerTargetVisualizer =\n /** @class */\n function (_super) {\n __extends(ContainerTargetVisualizer, _super);\n\n function ContainerTargetVisualizer(dispatcher) {\n return _super.call(this, dispatcher) || this;\n }\n\n ContainerTargetVisualizer.prototype.raiseShow = function () {\n var _this = this;\n\n var info = new ContainerTargetInfo(this.targetRect, this.targetStrokeWidth);\n this.dispatcher.raise1(function (l) {\n return l.notifyContainerTargetShow(_this.key, info);\n });\n };\n\n ContainerTargetVisualizer.prototype.raiseHide = function () {\n this.dispatcher.raise1(function (l) {\n return l.notifyContainerTargetHide();\n });\n };\n\n return ContainerTargetVisualizer;\n }(TargetVisualizerBase_1.TargetVisualizerBase);\n\n exports.ContainerTargetVisualizer = ContainerTargetVisualizer;\n /***/\n },\n /* 328 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectionPointsVisualizer = exports.ConnectionPointInfo = void 0;\n\n var ConnectionPointInfo =\n /** @class */\n function () {\n function ConnectionPointInfo(point, side) {\n this.point = point;\n this.side = side;\n this.allowed = true;\n }\n\n return ConnectionPointInfo;\n }();\n\n exports.ConnectionPointInfo = ConnectionPointInfo;\n\n var ConnectionPointsVisualizer =\n /** @class */\n function () {\n function ConnectionPointsVisualizer(dispatcher) {\n this.dispatcher = dispatcher;\n }\n\n ConnectionPointsVisualizer.prototype.getKey = function () {\n return this.key;\n };\n\n ConnectionPointsVisualizer.prototype.setPoints = function (key, points, pointIndex, outsideRectangle) {\n if (this.key !== key || this.pointIndex !== pointIndex) {\n this.key = key;\n this.points = points;\n this.pointIndex = pointIndex;\n this.outsideRectangle = outsideRectangle;\n this.raiseShow();\n }\n };\n\n ConnectionPointsVisualizer.prototype.setPointIndex = function (pointIndex) {\n if (0 <= pointIndex && pointIndex < this.points.length && this.pointIndex !== pointIndex) {\n this.pointIndex = pointIndex;\n this.raiseShow();\n }\n };\n\n ConnectionPointsVisualizer.prototype.update = function () {\n this.raiseShow();\n };\n\n ConnectionPointsVisualizer.prototype.reset = function () {\n if (this.key !== \"-1\") {\n this.key = \"-1\";\n this.points = [];\n this.pointIndex = -1;\n this.outsideRectangle = undefined;\n this.raiseHide();\n }\n };\n\n ConnectionPointsVisualizer.prototype.raiseShow = function () {\n var _this = this;\n\n this.dispatcher.raise1(function (l) {\n return l.notifyConnectionPointsShow(_this.key, _this.points, _this.pointIndex, _this.outsideRectangle);\n });\n };\n\n ConnectionPointsVisualizer.prototype.raiseHide = function () {\n this.dispatcher.raise1(function (l) {\n return l.notifyConnectionPointsHide();\n });\n };\n\n return ConnectionPointsVisualizer;\n }();\n\n exports.ConnectionPointsVisualizer = ConnectionPointsVisualizer;\n /***/\n },\n /* 329 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResizeInfoVisualizer = void 0;\n\n var ResizeInfoVisualizer =\n /** @class */\n function () {\n function ResizeInfoVisualizer(dispatcher) {\n this.dispatcher = dispatcher;\n }\n\n ResizeInfoVisualizer.prototype.set = function (point, text) {\n this.point = point;\n this.text = text;\n this.raiseShow();\n };\n\n ResizeInfoVisualizer.prototype.reset = function () {\n if (this.point !== undefined) {\n this.point = undefined;\n this.text = undefined;\n this.raiseHide();\n }\n };\n\n ResizeInfoVisualizer.prototype.raiseShow = function () {\n var _this = this;\n\n this.dispatcher.raise1(function (l) {\n return l.notifyResizeInfoShow(_this.point, _this.text);\n });\n };\n\n ResizeInfoVisualizer.prototype.raiseHide = function () {\n this.dispatcher.raise1(function (l) {\n return l.notifyResizeInfoHide();\n });\n };\n\n return ResizeInfoVisualizer;\n }();\n\n exports.ResizeInfoVisualizer = ResizeInfoVisualizer;\n /***/\n },\n /* 330 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SelectionRectVisualizer = void 0;\n\n var SelectionRectVisualizer =\n /** @class */\n function () {\n function SelectionRectVisualizer(dispatcher) {\n this.dispatcher = dispatcher;\n }\n\n SelectionRectVisualizer.prototype.setRectangle = function (rect) {\n this.rect = rect;\n this.raiseShow();\n };\n\n SelectionRectVisualizer.prototype.reset = function () {\n this.rect = undefined;\n this.raiseHide();\n };\n\n SelectionRectVisualizer.prototype.raiseShow = function () {\n var _this = this;\n\n this.dispatcher.raise1(function (l) {\n return l.notifySelectionRectShow(_this.rect);\n });\n };\n\n SelectionRectVisualizer.prototype.raiseHide = function () {\n this.dispatcher.raise1(function (l) {\n return l.notifySelectionRectHide();\n });\n };\n\n return SelectionRectVisualizer;\n }();\n\n exports.SelectionRectVisualizer = SelectionRectVisualizer;\n /***/\n },\n /* 331 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ContextToolboxHandler = void 0;\n\n var Event_1 = __webpack_require__(14);\n\n var Utils_1 = __webpack_require__(3);\n\n var key_1 = __webpack_require__(26);\n\n var ContextToolboxHandler =\n /** @class */\n function () {\n function ContextToolboxHandler() {\n this.isTouchUIEnabled = false;\n this.contextToolboxVisible = false;\n this.onVisibilityChanged = new Utils_1.EventDispatcher();\n }\n\n ContextToolboxHandler.prototype.initialize = function (isTouchUIEnabled) {\n this.isTouchUIEnabled = isTouchUIEnabled;\n };\n\n ContextToolboxHandler.prototype.onMouseDown = function (evt) {\n if (evt.source.type !== Event_1.MouseEventElementType.Undefined) this.hideContextToolbox();\n };\n\n ContextToolboxHandler.prototype.onMouseUp = function (evt) {\n if (evt.source.type !== Event_1.MouseEventElementType.Undefined && !this.isTouchUIEnabled) this.hideContextToolbox();\n };\n\n ContextToolboxHandler.prototype.onFocus = function (evt) {};\n\n ContextToolboxHandler.prototype.onBlur = function (evt) {};\n\n ContextToolboxHandler.prototype.onKeyDown = function (evt) {\n if (evt.keyCode === key_1.KeyCode.Esc) this.hideContextToolbox();\n };\n\n ContextToolboxHandler.prototype.onShortcut = function (evt) {\n this.hideContextToolbox();\n };\n\n ContextToolboxHandler.prototype.showContextToolbox = function (modelPoint, getPositionToInsertShapeTo, side, category, applyCallback, cancelCallback) {\n this.onVisibilityChanged.raise1(function (l) {\n return l.notifyShowContextToolbox(modelPoint, getPositionToInsertShapeTo, side, category, applyCallback);\n });\n this.contextToolboxVisible = true;\n this.contextToolboxCancelCallback = cancelCallback;\n };\n\n ContextToolboxHandler.prototype.hideContextToolbox = function (applyed) {\n if (this.contextToolboxVisible) {\n this.onVisibilityChanged.raise1(function (l) {\n return l.notifyHideContextToolbox();\n });\n\n if (this.contextToolboxCancelCallback) {\n if (!applyed) this.contextToolboxCancelCallback();\n this.contextToolboxCancelCallback = undefined;\n }\n\n this.contextToolboxVisible = false;\n }\n };\n\n return ContextToolboxHandler;\n }();\n\n exports.ContextToolboxHandler = ContextToolboxHandler;\n /***/\n },\n /* 332 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.Selection = void 0;\n\n var Utils_1 = __webpack_require__(3);\n\n var InputPosition_1 = __webpack_require__(333);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var Data_1 = __webpack_require__(45);\n\n var Selection =\n /** @class */\n function () {\n function Selection(model) {\n this.onChanged = new Utils_1.EventDispatcher();\n this.inputPosition = new InputPosition_1.InputPosition(this);\n this.onChanged.add(this.inputPosition);\n this.initialize(model);\n }\n\n Selection.prototype.initialize = function (model) {\n this.model = model;\n this.keys = [];\n this.inputPosition.initialize();\n };\n\n Selection.prototype.add = function (key) {\n if (this.keys.indexOf(key) < 0) {\n // binarySearch\n this.keys.push(key);\n this.raiseSelectionChanged();\n }\n };\n\n Selection.prototype.remove = function (key) {\n if (this.keys.indexOf(key) >= 0) {\n // binarySearch\n this.keys.splice(this.keys.indexOf(key), 1);\n this.raiseSelectionChanged();\n }\n };\n\n Selection.prototype.clear = function () {\n if (this.keys.length > 0) {\n this.keys = [];\n this.raiseSelectionChanged();\n }\n };\n\n Selection.prototype.set = function (keys, forceChange) {\n if (forceChange || !Data_1.Data.ArrayEqual(keys, this.keys)) {\n this.keys = keys;\n this.raiseSelectionChanged();\n }\n };\n\n Selection.prototype.getKeys = function () {\n return this.keys;\n };\n\n Selection.prototype.getKey = function (index) {\n return this.keys[index];\n };\n\n Selection.prototype.getSelectedItemsInsideContainers = function (items) {\n var _this = this;\n\n var result = items.slice();\n items.forEach(function (item) {\n if (item instanceof Shape_1.Shape) {\n var children = _this.getSelectedItemsInsideContainers(_this.model.getChildren(item));\n\n children.forEach(function (child) {\n if (result.indexOf(child) === -1 && !_this.hasKey(child.key)) result.push(child);\n });\n }\n });\n return result;\n };\n\n Selection.prototype.getSelectedItemsCore = function (includeLocked) {\n var _this = this;\n\n return this.keys.map(function (key) {\n return _this.model.findItem(key);\n }).filter(function (conn) {\n return conn && (includeLocked || !conn.isLocked);\n });\n };\n\n Selection.prototype.getSelectedItems = function (includeLocked, includeInsideContainers) {\n if (includeInsideContainers) return this.getSelectedItemsInsideContainers(this.getSelectedItemsCore(includeLocked));\n return this.getSelectedItemsCore(includeLocked);\n };\n\n Selection.prototype.getSelectedShapes = function (includeLocked, includeInsideContainers) {\n var _this = this;\n\n if (includeInsideContainers) {\n var items = this.getSelectedItemsCore(includeLocked);\n return this.getSelectedItemsInsideContainers(items).map(function (item) {\n return item instanceof Shape_1.Shape ? item : undefined;\n }).filter(function (shape) {\n return shape;\n });\n } else return this.keys.map(function (key) {\n return _this.model.findShape(key);\n }).filter(function (conn) {\n return conn && (includeLocked || !conn.isLocked);\n });\n };\n\n Selection.prototype.getSelectedConnectors = function (includeLocked, includeInsideContainers) {\n var _this = this;\n\n if (includeInsideContainers) {\n var items = this.keys.map(function (key) {\n return _this.model.findItem(key);\n });\n return this.getSelectedItemsInsideContainers(items).map(function (item) {\n return item instanceof Connector_1.Connector ? item : undefined;\n }).filter(function (connector) {\n return connector && (includeLocked || !connector.isLocked);\n });\n } else return this.keys.map(function (key) {\n return _this.model.findConnector(key);\n }).filter(function (conn) {\n return conn && (includeLocked || !conn.isLocked);\n });\n };\n\n Selection.prototype.hasKey = function (key) {\n return this.keys.indexOf(key) >= 0;\n };\n\n Selection.prototype.isEmpty = function (includeLocked) {\n return !this.getSelectedItems(includeLocked).length;\n };\n\n Selection.prototype.selectRect = function (rect) {\n var keys = [];\n this.model.iterateItems(function (item) {\n if (item.intersectedByRect(rect)) keys.push(item.key);\n });\n this.set(keys);\n };\n\n Selection.prototype.raiseSelectionChanged = function () {\n this.onChanged.raise(\"notifySelectionChanged\", this);\n };\n\n return Selection;\n }();\n\n exports.Selection = Selection;\n /***/\n },\n /* 333 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.InputPosition = void 0;\n\n var InputPositionProperties_1 = __webpack_require__(334);\n\n var Data_1 = __webpack_require__(45);\n\n var InputPosition =\n /** @class */\n function () {\n function InputPosition(selection) {\n this.selection = selection;\n this.initialProperties = new InputPositionProperties_1.InputPositionProperties(this.selection);\n this.defaultProperties = new InputPositionProperties_1.InputPositionProperties(this.selection, this.initialProperties);\n this.currentProperties = new InputPositionProperties_1.InputPositionProperties(this.selection, this.defaultProperties);\n }\n\n InputPosition.prototype.initialize = function () {\n this.reset();\n this.defaultProperties.reset();\n };\n\n InputPosition.prototype.reset = function () {\n this.currentProperties.reset();\n }; // Connectors\n\n\n InputPosition.prototype.getDefaultConnectorProperties = function () {\n return this.defaultProperties.getConnectorProperties();\n };\n\n InputPosition.prototype.getDefaultConnectorPropertyValue = function (propertyName) {\n return this.defaultProperties.getConnectorPropertyValue(propertyName);\n };\n\n InputPosition.prototype.getCurrentConnectorPropertyValue = function (propertyName) {\n return this.currentProperties.getConnectorPropertyValue(propertyName);\n };\n\n InputPosition.prototype.setConnectorPropertyValue = function (propertyName, value) {\n this.currentProperties.setConnectorPropertyValue(propertyName, value);\n if (this.selection.isEmpty(true)) this.defaultProperties.setConnectorPropertyValue(propertyName, value);\n };\n\n InputPosition.prototype.setInitialConnectorProperties = function (properties) {\n this.defaultProperties.reset();\n this.currentProperties.reset();\n\n for (var propertyName in properties) {\n if (Object.prototype.hasOwnProperty.call(properties, propertyName)) this.initialProperties.setConnectorPropertyValue(propertyName, properties[propertyName]);\n }\n }; // Style\n\n\n InputPosition.prototype.getDefaultStyle = function () {\n return this.defaultProperties.getStyle();\n };\n\n InputPosition.prototype.getDefaultStylePropertyValue = function (propertyName) {\n return this.defaultProperties.getStylePropertyValue(propertyName);\n };\n\n InputPosition.prototype.getDefaultTextStyle = function () {\n return this.defaultProperties.getTextStyle();\n };\n\n InputPosition.prototype.getDefaultTextStylePropertyValue = function (propertyName) {\n return this.defaultProperties.getTextStylePropertyValue(propertyName);\n };\n\n InputPosition.prototype.getCurrentStylePropertyValue = function (propertyName) {\n return this.currentProperties.getStylePropertyValue(propertyName);\n };\n\n InputPosition.prototype.getCurrentTextStylePropertyValue = function (propertyName) {\n return this.currentProperties.getTextStylePropertyValue(propertyName);\n };\n\n InputPosition.prototype.setStylePropertyValue = function (propertyName, value) {\n this.currentProperties.setStylePropertyValue(propertyName, value);\n if (this.selection.isEmpty(true)) this.defaultProperties.setStylePropertyValue(propertyName, value);\n };\n\n InputPosition.prototype.setTextStylePropertyValue = function (propertyName, value) {\n this.currentProperties.setTextStylePropertyValue(propertyName, value);\n if (this.selection.isEmpty(true)) this.defaultProperties.setTextStylePropertyValue(propertyName, value);\n };\n\n InputPosition.prototype.setInitialStyleProperties = function (style) {\n this.defaultProperties.reset();\n this.currentProperties.reset();\n var styleObj = typeof style === \"string\" ? Data_1.Data.cssTextToObject(style) : style;\n\n for (var propertyName in styleObj) {\n if (Object.prototype.hasOwnProperty.call(styleObj, propertyName)) this.initialProperties.setStylePropertyValue(propertyName, styleObj[propertyName]);\n }\n };\n\n InputPosition.prototype.setInitialTextStyleProperties = function (style) {\n this.defaultProperties.reset();\n this.currentProperties.reset();\n var styleObj = typeof style === \"string\" ? Data_1.Data.cssTextToObject(style) : style;\n\n for (var propertyName in styleObj) {\n if (Object.prototype.hasOwnProperty.call(styleObj, propertyName)) this.initialProperties.setTextStylePropertyValue(propertyName, styleObj[propertyName]);\n }\n };\n\n InputPosition.prototype.notifySelectionChanged = function (selection) {\n this.reset();\n };\n\n return InputPosition;\n }();\n\n exports.InputPosition = InputPosition;\n /***/\n },\n /* 334 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.InputPositionProperties = void 0;\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n var Style_1 = __webpack_require__(27);\n\n var InputPositionProperties =\n /** @class */\n function () {\n function InputPositionProperties(selection, baseProperties) {\n this.selection = selection;\n this.baseProperties = baseProperties;\n this.selection = selection;\n }\n\n InputPositionProperties.prototype.reset = function () {\n this.connectorProperties = null;\n this.style = null;\n this.textStyle = null;\n };\n\n InputPositionProperties.prototype.getConnectorProperties = function () {\n if (!this.connectorProperties) {\n this.connectorProperties = this.baseProperties ? this.baseProperties.getConnectorProperties().clone() : new ConnectorProperties_1.ConnectorProperties();\n this.updateConnectorProperties(this.connectorProperties);\n }\n\n return this.connectorProperties;\n };\n\n InputPositionProperties.prototype.getConnectorPropertyValue = function (propertyName) {\n return this.getConnectorProperties()[propertyName];\n };\n\n InputPositionProperties.prototype.setConnectorPropertyValue = function (propertyName, value) {\n this.getConnectorProperties()[propertyName] = value;\n };\n\n InputPositionProperties.prototype.getStyle = function () {\n if (!this.style) {\n this.style = this.baseProperties ? this.baseProperties.getStyle().clone() : new Style_1.Style();\n this.updateStyle(this.style, \"style\");\n }\n\n return this.style;\n };\n\n InputPositionProperties.prototype.getStylePropertyValue = function (propertyName) {\n return this.getStyle()[propertyName];\n };\n\n InputPositionProperties.prototype.setStylePropertyValue = function (propertyName, value) {\n this.getStyle()[propertyName] = value;\n };\n\n InputPositionProperties.prototype.getTextStyle = function () {\n if (!this.textStyle) {\n this.textStyle = this.baseProperties ? this.baseProperties.getTextStyle().clone() : new Style_1.TextStyle();\n this.updateStyle(this.textStyle, \"styleText\");\n }\n\n return this.textStyle;\n };\n\n InputPositionProperties.prototype.getTextStylePropertyValue = function (propertyName) {\n return this.getTextStyle()[propertyName];\n };\n\n InputPositionProperties.prototype.setTextStylePropertyValue = function (propertyName, value) {\n this.getTextStyle()[propertyName] = value;\n };\n\n InputPositionProperties.prototype.updateConnectorProperties = function (properties) {\n var _this = this;\n\n var connectors = this.selection.getSelectedConnectors(true);\n properties.forEach(function (propertyName) {\n _this.updatePropertyValue(properties, connectors, function (item) {\n return item[\"properties\"];\n }, propertyName);\n });\n };\n\n InputPositionProperties.prototype.updateStyle = function (style, stylePropertyName) {\n var _this = this;\n\n var items = this.selection.getSelectedItems(true);\n style.forEach(function (propertyName) {\n _this.updatePropertyValue(style, items, function (item) {\n return item[stylePropertyName];\n }, propertyName);\n });\n };\n\n InputPositionProperties.prototype.updatePropertyValue = function (destObj, items, getSrcObj, propertyName) {\n var value;\n var valueAssigned = false;\n items.forEach(function (item) {\n var obj = getSrcObj(item);\n var propertyValue = obj[propertyName];\n\n if (value === undefined && propertyValue !== undefined) {\n value = propertyValue;\n valueAssigned = true;\n } else if (valueAssigned && value !== propertyValue) {\n value = undefined;\n return;\n }\n });\n if (valueAssigned) destObj[propertyName] = value;\n };\n\n return InputPositionProperties;\n }();\n\n exports.InputPositionProperties = InputPositionProperties;\n /***/\n },\n /* 335 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.History = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var Utils_1 = __webpack_require__(3);\n\n var History =\n /** @class */\n function () {\n function History(modelManipulator) {\n this.historyItems = [];\n this.currentIndex = -1;\n this.incrementalId = -1;\n this.transactionLevel = -1;\n this.unmodifiedIndex = -1; // need for async actions\n\n this.currTransactionId = 0;\n this.onChanged = new Utils_1.EventDispatcher();\n this.modelManipulator = modelManipulator;\n }\n\n History.prototype.isModified = function () {\n if (this.unmodifiedIndex === this.currentIndex) return false;\n var startIndex = Math.min(this.unmodifiedIndex, this.currentIndex);\n var endIndex = Math.max(this.unmodifiedIndex, this.currentIndex);\n\n for (var i = startIndex + 1; i <= endIndex; i++) {\n if (this.historyItems[i].changeModified()) return true;\n }\n\n return false;\n };\n\n History.prototype.undo = function () {\n if (!this.canUndo()) return;\n this.historyItems[this.currentIndex].undo(this.modelManipulator);\n this.currentIndex--;\n this.raiseChanged();\n };\n\n History.prototype.redo = function () {\n if (!this.canRedo()) return;\n\n if (this.startDataSyncItem) {\n this.startDataSyncItem.undo(this.modelManipulator);\n this.startDataSyncItem = undefined;\n }\n\n this.currentIndex++;\n this.historyItems[this.currentIndex].redo(this.modelManipulator);\n this.raiseChanged();\n };\n\n History.prototype.canUndo = function () {\n return this.currentIndex >= 0;\n };\n\n History.prototype.canRedo = function () {\n return this.currentIndex < this.historyItems.length - 1;\n };\n\n History.prototype.beginTransaction = function () {\n this.transactionLevel++;\n if (this.transactionLevel === 0) this.transaction = new HistoryItem_1.CompositionHistoryItem();\n var id = this.currTransactionId++;\n return id;\n };\n\n History.prototype.endTransaction = function (isDataSyncTransaction) {\n if (--this.transactionLevel >= 0) return;\n var transactionLength = this.transaction.historyItems.length;\n\n if (transactionLength > 0) {\n var historyItem = transactionLength > 1 ? this.transaction : this.transaction.historyItems.pop();\n if (isDataSyncTransaction) this.addDataSyncItem(historyItem);else this.addInternal(historyItem);\n }\n\n if (transactionLength > 0 && !isDataSyncTransaction) this.raiseChanged();\n delete this.transaction;\n };\n\n History.prototype.addAndRedo = function (historyItem) {\n this.add(historyItem);\n historyItem.redo(this.modelManipulator);\n this.raiseChanged();\n };\n\n History.prototype.add = function (historyItem) {\n if (this.transactionLevel >= 0) this.transaction.add(historyItem);else this.addInternal(historyItem);\n };\n\n History.prototype.addInternal = function (historyItem) {\n if (this.currentIndex < this.historyItems.length - 1) {\n this.historyItems.splice(this.currentIndex + 1);\n this.unmodifiedIndex = Math.min(this.unmodifiedIndex, this.currentIndex);\n }\n\n this.historyItems.push(historyItem);\n this.currentIndex++;\n this.deleteOldItems();\n };\n\n History.prototype.addDataSyncItem = function (historyItem) {\n var toHistoryItem = this.historyItems[this.currentIndex];\n\n if (toHistoryItem) {\n var compositionHistoryItem = void 0;\n if (toHistoryItem instanceof HistoryItem_1.CompositionHistoryItem) compositionHistoryItem = toHistoryItem;else {\n this.historyItems.splice(this.currentIndex, 1);\n compositionHistoryItem = new HistoryItem_1.CompositionHistoryItem();\n this.historyItems.push(compositionHistoryItem);\n compositionHistoryItem.historyItems.push(toHistoryItem);\n }\n compositionHistoryItem.dataSyncItems.push(historyItem);\n } else if (this.historyItems.length) this.startDataSyncItem = historyItem;\n };\n\n History.prototype.deleteOldItems = function () {\n var exceedItemsCount = this.historyItems.length - History.MAX_HISTORY_ITEM_COUNT;\n\n if (exceedItemsCount > 0 && this.currentIndex > exceedItemsCount) {\n this.historyItems.splice(0, exceedItemsCount);\n this.currentIndex -= exceedItemsCount;\n }\n };\n\n History.prototype.getNextId = function () {\n this.incrementalId++;\n return this.incrementalId;\n };\n\n History.prototype.clear = function () {\n this.currentIndex = -1;\n this.unmodifiedIndex = -1;\n this.incrementalId = -1;\n this.historyItems = [];\n delete this.transaction;\n this.transactionLevel = -1;\n };\n\n History.prototype.resetModified = function () {\n this.unmodifiedIndex = this.currentIndex;\n };\n\n History.prototype.getCurrentItemId = function () {\n if (this.currentIndex === -1) return -1;\n var currentItem = this.historyItems[this.currentIndex];\n if (currentItem.uniqueId === -1) currentItem.uniqueId = this.getNextId();\n return currentItem.uniqueId;\n };\n\n History.prototype.undoTransaction = function () {\n var items = this.transaction.historyItems;\n\n while (items.length) {\n items.pop().undo(this.modelManipulator);\n }\n };\n\n History.prototype.undoTransactionTo = function (item) {\n var items = this.transaction.historyItems;\n\n while (items.length) {\n var ti = items.pop();\n ti.undo(this.modelManipulator);\n if (ti === item) return;\n }\n };\n\n History.prototype.raiseChanged = function () {\n if (this.transactionLevel === -1) this.onChanged.raise(\"notifyHistoryChanged\");\n };\n\n History.MAX_HISTORY_ITEM_COUNT = 100;\n return History;\n }();\n\n exports.History = History;\n /***/\n },\n /* 336 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics228 = function extendStatics(d, b) {\n _extendStatics228 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics228(d, b);\n };\n\n return function (d, b) {\n _extendStatics228(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BarManager = void 0;\n\n var batch_updatable_1 = __webpack_require__(80);\n\n var BarManager =\n /** @class */\n function (_super) {\n __extends(BarManager, _super);\n\n function BarManager(control) {\n var _this = _super.call(this) || this;\n\n _this.bars = [];\n _this.control = control;\n return _this;\n }\n\n BarManager.prototype.clean = function () {\n var _this = this;\n\n this.bars.forEach(function (bar) {\n return bar.onChanged.remove(_this);\n });\n this.bars = [];\n };\n\n BarManager.prototype.registerBar = function (bar) {\n this.bars.push(bar);\n bar.onChanged.add(this);\n this.updateBarItemsState(bar);\n };\n\n BarManager.prototype.updateItemsState = function (queryCommands) {\n if (this.isUpdateLocked()) return;\n\n for (var i = 0, bar = void 0; bar = this.bars[i]; i++) {\n this.updateBarItemsState(bar, queryCommands);\n }\n };\n\n BarManager.prototype.updateBarItemsState = function (bar, queryCommands) {\n if (this.isUpdateLocked()) return;\n this.control.permissionsProvider.beginUpdateUI();\n\n if (bar.isVisible()) {\n var commandKeys = void 0;\n\n if (queryCommands) {\n var knownCommandKeys_1 = bar.getCommandKeys().reduce(function (hash, cmd) {\n hash[cmd] = true;\n return hash;\n }, {});\n commandKeys = queryCommands.filter(function (cmd) {\n return knownCommandKeys_1[cmd];\n });\n } else commandKeys = bar.getCommandKeys();\n\n var length_1 = commandKeys.length;\n\n for (var j = 0; j < length_1; j++) {\n this.updateBarItem(bar, commandKeys[j]);\n }\n }\n\n this.control.permissionsProvider.endUpdateUI();\n };\n\n BarManager.prototype.updateBarItem = function (bar, commandKey) {\n var command = this.control.commandManager.getCommand(commandKey);\n\n if (command) {\n var commandState = command.getState();\n bar.setItemVisible(commandKey, commandState.visible);\n\n if (commandState.visible) {\n bar.setItemEnabled(commandKey, commandState.enabled);\n\n if (!commandState.denyUpdateValue) {\n var itemValue = this.getItemValue(commandState.value);\n if (commandState.items) bar.setItemSubItems(commandKey, commandState.items);\n bar.setItemValue(commandKey, itemValue, this.getDefaultItemValue(commandState.defaultValue));\n }\n }\n }\n };\n\n BarManager.prototype.setEnabled = function (enabled) {\n for (var i = 0, bar = void 0; bar = this.bars[i]; i++) {\n bar.setEnabled(enabled);\n }\n };\n\n BarManager.prototype.notifyBarCommandExecuted = function (commandID, parameter) {\n var executeResult = this.control.commandManager.getCommand(commandID).execute(parameter);\n if (!executeResult) this.updateItemsState([commandID]);\n };\n\n BarManager.prototype.notifyBarUpdateRequested = function () {\n this.updateItemsState();\n }; // ISelectionChangesListener\n\n\n BarManager.prototype.notifySelectionChanged = function (_selection) {\n this.updateItemsState();\n };\n\n BarManager.prototype.onUpdateUnlocked = function (occurredEvents) {};\n\n BarManager.prototype.getItemValue = function (value) {\n return value;\n };\n\n BarManager.prototype.getDefaultItemValue = function (value) {\n return value;\n };\n\n return BarManager;\n }(batch_updatable_1.BatchUpdatableObject);\n\n exports.BarManager = BarManager;\n /***/\n },\n /* 337 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RenderManager = exports.DBL_CLICK_TIMEOUT = exports.LONG_TOUCH_TIMEOUT = void 0;\n\n var Event_1 = __webpack_require__(14);\n\n var evt_1 = __webpack_require__(60);\n\n var dom_1 = __webpack_require__(23);\n\n var point_1 = __webpack_require__(1);\n\n var Utils_1 = __webpack_require__(17);\n\n var CanvasItemsManager_1 = __webpack_require__(77);\n\n var ScrollView_1 = __webpack_require__(338);\n\n var Settings_1 = __webpack_require__(28);\n\n var InputManager_1 = __webpack_require__(339);\n\n var CanvasPageManager_1 = __webpack_require__(340);\n\n var CanvasViewManager_1 = __webpack_require__(342);\n\n var CanvasSelectionManager_1 = __webpack_require__(157);\n\n var AutoScrollController_1 = __webpack_require__(344);\n\n var TextMeasurer_1 = __webpack_require__(78);\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var DOMManipulator_1 = __webpack_require__(100);\n\n var key_1 = __webpack_require__(26);\n\n var common_1 = __webpack_require__(34);\n\n var READONLY_CSSCLASS = \"dxdi-read-only\";\n exports.LONG_TOUCH_TIMEOUT = 500;\n exports.DBL_CLICK_TIMEOUT = 500;\n\n var RenderManager =\n /** @class */\n function () {\n function RenderManager(parent, events, measurer, settings, scrollView, focusElementsParent) {\n this.touchPositionLimit = 4;\n var mainElement = RenderHelper_1.RenderHelper.createMainElement(parent);\n this.svgElement = RenderHelper_1.RenderHelper.createSvgElement(mainElement);\n this.scroll = scrollView || new ScrollView_1.NativeScrollView(parent);\n this.measurer = measurer;\n this.dom = new DOMManipulator_1.DOMManipulator(this.measurer);\n this.view = new CanvasViewManager_1.CanvasViewManager(this.scroll, this.svgElement, settings.modelSize, settings.zoomLevel, settings.autoZoom, settings.simpleView, settings.rectangle, this.dom);\n this.input = new InputManager_1.InputManager(mainElement, this.view, events, this.measurer, settings.zoomLevel, settings.isTouchUIEnabled, focusElementsParent);\n this.items = new CanvasItemsManager_1.CanvasItemsManager(this.view.canvasElement, settings.zoomLevel, this.dom);\n this.page = new CanvasPageManager_1.CanvasPageManager(this.view.pageElement, settings, this.dom);\n this.selection = new CanvasSelectionManager_1.CanvasSelectionManager(this.view.canvasElement, settings.zoomLevel, settings.readOnly, this.dom, settings.isTouchUIEnabled);\n this.contextMenuEnabled = settings.contextMenuEnabled;\n this.view.onViewChanged.add(this.page);\n this.view.onViewChanged.add(this.items);\n this.view.onViewChanged.add(this.selection);\n this.view.onViewChanged.add(this.input);\n this.mainElement = mainElement;\n this.events = events;\n this.autoScroll = new AutoScrollController_1.AutoScrollController(this.scroll, this.svgElement, this.view, this.dom);\n this.attachEvents();\n this.notifyReadOnlyChanged(settings.readOnly);\n }\n\n RenderManager.prototype.clean = function (removeElement) {\n this.lastDownMouseEvent = undefined;\n this.detachEvents();\n this.dom.cancelAnimation();\n if (removeElement) removeElement(this.mainElement);\n };\n\n RenderManager.prototype.replaceParent = function (parent, scroll) {\n if (this.mainElement && this.mainElement.parentNode !== parent) parent.appendChild(this.mainElement);\n\n if (scroll && scroll !== this.scroll) {\n this.scroll && this.scroll.detachEvents();\n this.scroll = scroll;\n }\n\n if (this.measurer instanceof TextMeasurer_1.TextMeasurer) this.measurer.replaceParent(parent);\n };\n\n RenderManager.prototype.update = function (saveScrollPosition) {\n this.view.adjust({\n horizontal: !saveScrollPosition,\n vertical: !saveScrollPosition\n });\n this.page.redraw();\n };\n\n RenderManager.prototype.onNewModel = function (items) {\n this.measurer.onNewModel(items, this.dom);\n };\n\n RenderManager.prototype.clear = function () {\n this.items.clear();\n this.selection.clear();\n };\n\n RenderManager.prototype.attachEvents = function () {\n this.onMouseDblClickHandler = this.onMouseDblClick.bind(this);\n this.onMouseClickHandler = this.onMouseClick.bind(this);\n this.onMouseWheelHandler = this.onMouseWheel.bind(this);\n this.onContextMenuHandler = this.onContextMenu.bind(this);\n this.onWindowResizeHandler = this.onWindowResize.bind(this);\n this.onOrientationChangeHandler = this.onOrientationChange.bind(this);\n RenderHelper_1.RenderHelper.addEventListener(this.svgElement, \"click\", this.onMouseClickHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.svgElement, \"wheel\", this.onMouseWheelHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.svgElement, \"dblclick\", this.onMouseDblClickHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.svgElement, \"contextmenu\", this.onContextMenuHandler);\n RenderHelper_1.RenderHelper.addEventListener(window, \"resize\", this.onWindowResizeHandler);\n RenderHelper_1.RenderHelper.addEventListener(window, \"orientationchange\", this.onOrientationChangeHandler);\n this.input.mouseWheelHandler = this.onMouseWheelHandler;\n };\n\n RenderManager.prototype.detachEvents = function () {\n if (this.dragEventsHandler) {\n this.dragEventsHandler.detach();\n this.dragEventsHandler = undefined;\n }\n\n RenderHelper_1.RenderHelper.removeEventListener(this.svgElement, \"click\", this.onMouseClickHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.svgElement, \"wheel\", this.onMouseWheelHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.svgElement, \"dblclick\", this.onMouseDblClickHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.svgElement, \"contextmenu\", this.onContextMenuHandler);\n RenderHelper_1.RenderHelper.removeEventListener(window, \"resize\", this.onWindowResizeHandler);\n RenderHelper_1.RenderHelper.removeEventListener(window, \"orientationchange\", this.onOrientationChangeHandler);\n this.scroll.detachEvents();\n this.input.detachEvents();\n };\n\n RenderManager.prototype.onMouseEnter = function (evt) {\n var _this = this;\n\n this.autoScroll.onMouseEnter(evt);\n var diagramEvent = this.createDiagramMouseEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onMouseEnter(e);\n });\n };\n\n RenderManager.prototype.onMouseLeave = function (evt) {\n var _this = this;\n\n var diagramEvent = this.createDiagramMouseEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onMouseLeave(e);\n });\n };\n\n RenderManager.prototype.onMouseDown = function (evt) {\n this.onMouseDownCore(evt);\n if (evt.preventDefault) evt.preventDefault();\n if (evt.stopPropagation) evt.stopPropagation();\n this.preventImageEventAndBubble(evt);\n };\n\n RenderManager.prototype.onTouchDown = function (evt) {\n var _this = this;\n\n this.onMouseDownCore(evt);\n var touches = evt[\"touches\"];\n if (touches && touches.length > 0) this.startTouchPoint = new point_1.Point(touches[0].clientX, touches[0].clientY);\n this.resetLongTouch();\n this.longTouchTimer = setTimeout(function () {\n _this.raiseLongTouch(evt);\n\n _this.resetLongTouch();\n\n _this.resetDblClick();\n }, exports.LONG_TOUCH_TIMEOUT);\n evt_1.EvtUtils.preventEventAndBubble(evt);\n };\n\n RenderManager.prototype.onMouseDownCore = function (evt) {\n var _this = this;\n\n this.input.lockFocus();\n this.autoScroll.onMouseDown(evt);\n this.lastDownMouseEvent = this.createDiagramMouseEvent(evt);\n Utils_1.raiseEvent(evt, this.lastDownMouseEvent, function (e) {\n return _this.events.onMouseDown(e);\n });\n\n if (this.events.canFinishTextEditing()) {\n this.input.unlockCaptureFocus();\n this.input.captureFocus();\n }\n };\n\n RenderManager.prototype.onMouseMove = function (evt) {\n this.onMoveCore(evt, false);\n };\n\n RenderManager.prototype.onTouchMove = function (evt) {\n this.onMoveCore(evt, true);\n var touches = evt[\"touches\"];\n if (!this.startTouchPoint && (!touches || touches.length === 0)) return;\n var currentPoint = new point_1.Point(touches[0].clientX, touches[0].clientY);\n\n if (Math.abs(this.startTouchPoint.x - currentPoint.x) > this.touchPositionLimit || Math.abs(this.startTouchPoint.y - currentPoint.y) > this.touchPositionLimit) {\n this.resetDblClick();\n this.resetLongTouch();\n }\n };\n\n RenderManager.prototype.onMoveCore = function (evt, isTouchEvent) {\n var _this = this;\n\n var diagramEvent = isTouchEvent ? this.createDiagramMouseEventByPosition(evt) : this.createDiagramMouseEvent(evt);\n this.autoScroll.onMouseMove(evt, function () {\n return _this.events.onMouseMove(diagramEvent);\n });\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onMouseMove(e);\n });\n };\n\n RenderManager.prototype.onMouseUp = function (evt) {\n this.onMouseUpCore(evt);\n this.preventImageEventAndBubble(evt);\n };\n\n RenderManager.prototype.onTouchUp = function (evt) {\n var _this = this;\n\n this.onMouseUpCore(evt);\n\n if (this.longTouchTimer !== undefined) {\n this.raiseMouseClick(evt);\n var element = evt_1.EvtUtils.getEventSource(evt);\n\n if (this.dblTouchTimer !== undefined && this.startTouchElement === element) {\n this.raiseMouseDblClick(evt);\n this.resetDblClick();\n } else {\n this.resetDblClick();\n this.dblTouchTimer = setTimeout(function () {\n return _this.dblTouchTimer = undefined;\n }, exports.DBL_CLICK_TIMEOUT);\n }\n\n this.startTouchElement = element;\n }\n\n this.resetLongTouch();\n this.startTouchPoint = undefined;\n this.preventImageEventAndBubble(evt);\n };\n\n RenderManager.prototype.onMouseUpCore = function (evt) {\n var _this = this;\n\n this.lastDownMouseEvent = undefined;\n var diagramEvent = this.createDiagramMouseEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onMouseUp(e);\n });\n this.autoScroll.onMouseUp(evt);\n if (diagramEvent.source.type !== Event_1.MouseEventElementType.Undefined) this.input.captureFocus();\n };\n\n RenderManager.prototype.onMouseClick = function (evt) {\n var _this = this;\n\n var diagramEvent = common_1.isDefined(this.lastDownMouseEvent) ? this.lastDownMouseEvent.clone() : this.createDiagramMouseEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onClick(e);\n });\n this.input.unlockCaptureFocus();\n };\n\n RenderManager.prototype.onMouseDblClick = function (evt) {\n var _this = this;\n\n var diagramEvent = common_1.isDefined(this.lastDownMouseEvent) ? this.lastDownMouseEvent.clone() : this.createDiagramMouseEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onDblClick(e);\n });\n this.input.lockCaptureFocus();\n };\n\n RenderManager.prototype.preventImageEventAndBubble = function (evt) {\n var element = evt_1.EvtUtils.getEventSource(evt);\n var tagName = element && element.tagName;\n\n if (common_1.isDefined(tagName) && tagName.toLowerCase) {\n var tagNameLowerCase = tagName.toLowerCase();\n if (tagNameLowerCase === \"img\" || tagNameLowerCase === \"image\") evt_1.EvtUtils.preventEventAndBubble(evt);\n }\n };\n\n RenderManager.prototype.raiseLongTouch = function (evt) {\n var _this = this;\n\n var diagramEvent = common_1.isDefined(this.lastDownMouseEvent) ? this.lastDownMouseEvent.clone() : this.createDiagramMouseEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onLongTouch(e);\n });\n };\n\n RenderManager.prototype.raiseMouseClick = function (evt) {\n var _this = this;\n\n var diagramEvent = this.createDiagramMouseEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onClick(e);\n });\n };\n\n RenderManager.prototype.raiseMouseDblClick = function (evt) {\n var _this = this;\n\n var diagramEvent = this.createDiagramMouseEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onDblClick(e);\n });\n };\n\n RenderManager.prototype.resetDblClick = function () {\n if (this.dblTouchTimer !== undefined) clearTimeout(this.dblTouchTimer);\n this.dblTouchTimer = undefined;\n };\n\n RenderManager.prototype.resetLongTouch = function () {\n if (this.longTouchTimer !== undefined) clearTimeout(this.longTouchTimer);\n this.longTouchTimer = undefined;\n };\n\n RenderManager.prototype.onContextMenu = function (evt) {\n var _this = this;\n\n if (!this.contextMenuEnabled) return;\n var diagramEvent = this.createDiagramContextMenuEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onContextMenu(e);\n });\n this.input.captureFocus();\n evt_1.EvtUtils.preventEventAndBubble(evt);\n };\n\n RenderManager.prototype.onMouseWheel = function (evt) {\n var _this = this;\n\n var diagramEvent = this.createDiagramWheelEvent(evt);\n Utils_1.raiseEvent(evt, diagramEvent, function (e) {\n return _this.events.onMouseWheel(e);\n });\n };\n\n RenderManager.prototype.onOrientationChange = function () {\n var _this = this;\n\n setTimeout(function () {\n return _this.onWindowResize();\n }, 100);\n };\n\n RenderManager.prototype.onWindowResize = function () {\n var resetTo = {\n horizontal: false,\n vertical: false\n };\n\n if (this.view.autoZoom !== Settings_1.AutoZoomMode.Disabled) {\n resetTo.horizontal = true;\n resetTo.vertical = true;\n } else {\n var oldFitInfo = this.view.checkFitToCanvas();\n var newFitInfo = this.view.checkFitToCanvas(this.scroll.getSize());\n resetTo = {\n horizontal: oldFitInfo.horizontal !== newFitInfo.horizontal || newFitInfo.horizontal,\n vertical: oldFitInfo.vertical !== newFitInfo.vertical || newFitInfo.vertical\n };\n }\n\n this.view.adjust(resetTo);\n };\n\n RenderManager.prototype.notifyModelSizeChanged = function (size, offset) {\n this.view.notifyModelSizeChanged(size, offset);\n };\n\n RenderManager.prototype.notifyModelRectangleChanged = function (rectangle) {\n this.view.notifyModelRectangleChanged(rectangle);\n };\n\n RenderManager.prototype.notifyReadOnlyChanged = function (readOnly) {\n dom_1.DomUtils.toggleClassName(this.mainElement, READONLY_CSSCLASS, readOnly);\n };\n\n RenderManager.prototype.notifyDragStart = function (itemKeys) {};\n\n RenderManager.prototype.notifyDragEnd = function (itemKeys) {};\n\n RenderManager.prototype.notifyDragScrollStart = function () {\n this.autoScroll.onDragScrollStart();\n };\n\n RenderManager.prototype.notifyDragScrollEnd = function () {\n this.autoScroll.onDragScrollEnd();\n };\n\n RenderManager.prototype.getModelPointByEventPoint = function (clientX, clientY) {\n return this.view.getModelPoint(this.getOffsetPointByEventPoint(clientX, clientY));\n };\n\n RenderManager.prototype.getEventPointByModelPoint = function (point) {\n var pos = this.view.getAbsolutePoint(point);\n var scrollContainer = this.getScrollContainer();\n return new point_1.Point(dom_1.DomUtils.getAbsolutePositionX(scrollContainer) + pos.x, dom_1.DomUtils.getAbsolutePositionY(scrollContainer) + pos.y);\n };\n\n RenderManager.prototype.getScrollContainer = function () {\n return this.scroll.getScrollContainer();\n };\n\n RenderManager.prototype.createDiagramMouseEventByPosition = function (evt) {\n return this.createDiagramMouseEventCore(evt, evt_1.EvtUtils.getEventSourceByPosition(evt));\n };\n\n RenderManager.prototype.createDiagramMouseEvent = function (evt) {\n return this.createDiagramMouseEventCore(evt, evt_1.EvtUtils.getEventSource(evt));\n };\n\n RenderManager.prototype.createDiagramMouseEventCore = function (evt, element) {\n var offsetPoint = this.getOffsetPointByEvent(evt);\n return new Event_1.DiagramMouseEvent(key_1.KeyUtils.getKeyModifiers(evt), Utils_1.isLeftButtonPressed(evt) ? Event_1.MouseButton.Left : Event_1.MouseButton.Right, offsetPoint, this.view.getModelPoint(offsetPoint), this.getEventSource(element), this.createDiagramMouseEventTouches(evt[\"touches\"]), evt.pointerType);\n };\n\n RenderManager.prototype.createDiagramContextMenuEvent = function (evt) {\n return new Event_1.DiagramContextMenuEvent(key_1.KeyUtils.getKeyModifiers(evt), new point_1.Point(evt.pageX, evt.pageY), this.view.getModelPoint(this.getOffsetPointByEvent(evt)));\n };\n\n RenderManager.prototype.createDiagramWheelEvent = function (evt) {\n var offsetPoint = this.getOffsetPointByEvent(evt);\n return new Event_1.DiagramWheelEvent(key_1.KeyUtils.getKeyModifiers(evt), evt.deltaX || evt[\"originalEvent\"] && evt[\"originalEvent\"].deltaX, evt.deltaY || evt[\"originalEvent\"] && evt[\"originalEvent\"].deltaY, offsetPoint, this.view.getModelPoint(offsetPoint), this.getEventSource(evt_1.EvtUtils.getEventSource(evt)));\n };\n\n RenderManager.prototype.getOffsetPointByEventPoint = function (clientX, clientY) {\n var scrollContainer = this.scroll.getScrollContainer();\n return new point_1.Point(clientX - dom_1.DomUtils.getAbsolutePositionX(scrollContainer), clientY - dom_1.DomUtils.getAbsolutePositionY(scrollContainer));\n };\n\n RenderManager.prototype.getOffsetPointByEvent = function (evt) {\n return this.getOffsetPointByEventPoint(evt_1.EvtUtils.getEventX(evt), evt_1.EvtUtils.getEventY(evt));\n };\n\n RenderManager.prototype.getEventSource = function (element) {\n var currentElement = element;\n if (this.isDiagramControl(element)) while (currentElement && !this.isDocumentContainer(currentElement)) {\n var src = Utils_1.RenderUtils.getElementEventData(currentElement);\n if (src !== undefined) return src;\n if (this.input.isTextInputElement(currentElement)) return new Event_1.MouseEventSource(Event_1.MouseEventElementType.Document);\n currentElement = currentElement.parentNode;\n }\n return new Event_1.MouseEventSource(currentElement && this.isDocumentContainer(currentElement) ? Event_1.MouseEventElementType.Background : Event_1.MouseEventElementType.Undefined);\n };\n\n RenderManager.prototype.isDiagramControl = function (element) {\n while (element) {\n if (this.isDocumentContainer(element)) return true;\n element = element.parentNode;\n }\n\n return false;\n };\n\n RenderManager.prototype.isDocumentContainer = function (element) {\n return element === this.mainElement;\n };\n\n RenderManager.prototype.createDiagramMouseEventTouches = function (source) {\n if (!source) return [];\n var result = [];\n\n for (var i = 0; i < source.length; i++) {\n var sourceItem = source[i];\n var offsetPoint = this.getOffsetPointByEventPoint(sourceItem.clientX, sourceItem.clientY);\n result.push(new Event_1.DiagramMouseEventTouch(offsetPoint, this.view.getModelPoint(offsetPoint)));\n }\n\n return result;\n };\n\n return RenderManager;\n }();\n\n exports.RenderManager = RenderManager;\n /***/\n },\n /* 338 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.NativeScrollView = void 0;\n\n var Utils_1 = __webpack_require__(3);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var dom_1 = __webpack_require__(23);\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var NativeScrollView =\n /** @class */\n function () {\n function NativeScrollView(mainElement) {\n this.onScroll = new Utils_1.EventDispatcher();\n this.scrollBarWidth = dom_1.DomUtils.getVerticalScrollBarWidth();\n this.mainElement = mainElement;\n this.attachEvents();\n }\n\n NativeScrollView.prototype.attachEvents = function () {\n var _this = this;\n\n this.onScrollHandler = function () {\n return _this.onScroll.raise1(function (l) {\n return l.notifyScrollChanged(function () {\n return _this.getScroll();\n });\n });\n };\n\n RenderHelper_1.RenderHelper.addEventListener(this.mainElement, \"scroll\", this.onScrollHandler);\n };\n\n NativeScrollView.prototype.detachEvents = function () {\n RenderHelper_1.RenderHelper.removeEventListener(this.mainElement, \"scroll\", this.onScrollHandler);\n };\n\n NativeScrollView.prototype.getScrollContainer = function () {\n return this.mainElement;\n };\n\n NativeScrollView.prototype.setScroll = function (left, top) {\n var _this = this;\n\n this.mainElement.style.overflow = \"scroll\";\n this.mainElement.scrollLeft = left;\n this.mainElement.scrollTop = top;\n this.mainElement.style.overflow = \"\";\n this.onScroll.raise1(function (l) {\n return l.notifyScrollChanged(function () {\n return _this.getScroll();\n });\n });\n };\n\n NativeScrollView.prototype.offsetScroll = function (left, top) {\n var _this = this;\n\n if (left) this.mainElement.scrollLeft += left;\n if (top) this.mainElement.scrollTop += top;\n this.onScroll.raise1(function (l) {\n return l.notifyScrollChanged(function () {\n return _this.getScroll();\n });\n });\n };\n\n NativeScrollView.prototype.getScroll = function () {\n return new point_1.Point(this.mainElement.scrollLeft, this.mainElement.scrollTop);\n };\n\n NativeScrollView.prototype.getSize = function () {\n var boundingRect = this.mainElement.getBoundingClientRect();\n return new size_1.Size(Math.floor(boundingRect.width), Math.floor(boundingRect.height));\n };\n\n NativeScrollView.prototype.getScrollBarWidth = function () {\n return this.scrollBarWidth;\n };\n\n return NativeScrollView;\n }();\n\n exports.NativeScrollView = NativeScrollView;\n /***/\n },\n /* 339 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.InputManager = void 0;\n\n var key_1 = __webpack_require__(26);\n\n var dom_1 = __webpack_require__(23);\n\n var Utils_1 = __webpack_require__(17);\n\n var Event_1 = __webpack_require__(14);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var evt_1 = __webpack_require__(60);\n\n var ITextMeasurer_1 = __webpack_require__(44);\n\n var browser_1 = __webpack_require__(19);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var TextUtils_1 = __webpack_require__(63);\n\n var Utils_2 = __webpack_require__(3);\n\n var TEXT_INPUT_CSSCLASS = \"dxdi-text-input\";\n\n var InputManager =\n /** @class */\n function () {\n function InputManager(mainElement, layoutPointResolver, eventManager, textMeasurer, actualZoom, isTouchUIEnabled, focusElementsParent) {\n this.mainElement = mainElement;\n this.layoutPointResolver = layoutPointResolver;\n this.eventManager = eventManager;\n this.textMeasurer = textMeasurer;\n this.actualZoom = actualZoom;\n this.isTouchUIEnabled = isTouchUIEnabled;\n this.focusElementsParent = focusElementsParent;\n this.lockedCaptureFocus = false;\n this.focused = false;\n this.focusLocked = false;\n this.createInputElements(this.mainElement, this.focusElementsParent);\n }\n\n InputManager.prototype.detachEvents = function () {\n this.detachInputElementEvents();\n this.detachTextInputElementEvents();\n };\n\n InputManager.prototype.isFocused = function () {\n return this.focused;\n };\n\n InputManager.prototype.lockCaptureFocus = function () {\n this.lockedCaptureFocus = true;\n };\n\n InputManager.prototype.unlockCaptureFocus = function () {\n this.lockedCaptureFocus = false;\n };\n\n InputManager.prototype.captureFocus = function () {\n if (!this.lockedCaptureFocus) Utils_2.HtmlFocusUtils.focusWithPreventScroll(this.inputElement);\n };\n\n InputManager.prototype.setClipboardData = function (data) {\n this.clipboardInputElement.value = data;\n Utils_2.HtmlFocusUtils.focusWithPreventScroll(this.clipboardInputElement);\n this.clipboardInputElement.select();\n document.execCommand(\"copy\");\n this.captureFocus();\n };\n\n InputManager.prototype.getClipboardData = function (callback) {\n var _this = this;\n\n if (navigator && navigator[\"clipboard\"]) navigator[\"clipboard\"].readText().then(function (clipText) {\n callback(clipText);\n\n _this.captureFocus();\n }).catch(function () {\n callback(\"\");\n\n _this.captureFocus();\n });else if (browser_1.Browser.IE) {\n this.clipboardInputElement.value = \"\";\n Utils_2.HtmlFocusUtils.focusWithPreventScroll(this.clipboardInputElement);\n this.clipboardInputElement.select();\n document.execCommand(\"Paste\");\n callback(this.clipboardInputElement.value);\n this.captureFocus();\n }\n };\n\n InputManager.prototype.isPasteSupportedByBrowser = function () {\n return browser_1.Browser.IE || browser_1.Browser.WebKitFamily && navigator && navigator[\"clipboard\"] !== undefined;\n };\n\n InputManager.prototype.createInputElements = function (parent, focusElementsParent) {\n this.createFocusInputElement(focusElementsParent || parent);\n this.createTextInputElement(parent);\n this.createClipboardInputElement(focusElementsParent || parent);\n this.attachInputElementEvents();\n };\n\n InputManager.prototype.setInputElementFocusHandlerMode = function () {\n this.textInputElementContainer.setAttribute(\"class\", \"dxdi-text-input-container\");\n this.captureFocus();\n };\n\n InputManager.prototype.setInputElementTextInputMode = function (text, position, size, style, className, textAngle) {\n this.textInputElementContainer.setAttribute(\"class\", \"dxdi-text-input-container \" + className);\n this.textInputElement.value = text;\n this.setTextInputElementBounds(position, size, textAngle);\n this.setTextInputElementStyle(style);\n this.updateTextInputPadding();\n\n if (!this.lockedCaptureFocus) {\n var element = this.textInputElement || this.inputElement;\n Utils_2.HtmlFocusUtils.focusWithPreventScroll(element);\n if (element.select) element.select();\n }\n };\n\n InputManager.prototype.setTextInputElementBounds = function (position, size, textAngle) {\n this.savedTextInputPosition = position;\n this.savedTextInputSize = size;\n this.savedTextInputAngle = textAngle;\n var abs = this.layoutPointResolver.getAbsolutePoint(position, true);\n this.textInputElementContainer.style.left = abs.x + \"px\";\n this.textInputElementContainer.style.top = abs.y + \"px\";\n this.textInputElementContainer.style.width = size && size.width + \"px\" || \"0px\";\n this.textInputElementContainer.style.height = size && size.height + \"px\" || \"0px\";\n var transforms = [];\n this.textInputElementContainer.style.transform = \"\";\n if (this.actualZoom !== 1) transforms.push(\"scale(\" + this.actualZoom + \")\");\n if (textAngle) transforms.push(\"rotate(\" + textAngle + \"deg)\");\n this.textInputElementContainer.style.transform = transforms.join(\" \");\n this.textInputElement.style.width = size && size.width + \"px\" || \"\";\n this.textInputElement.style.height = size && size.height + \"px\" || \"auto\";\n };\n\n InputManager.prototype.setTextInputElementStyle = function (style) {\n this.savedTextInputStyle = style;\n Utils_1.RenderUtils.applyStyleToElement(style, this.textInputElement);\n };\n\n InputManager.prototype.createFocusInputElement = function (parent) {\n this.inputElement = document.createElement(\"textarea\");\n this.inputElement.readOnly = this.isTouchUIEnabled; // prevent show keyboard on mobile devices, but the \"paste\" event isn't raised for some desktop browsers(IE)\n\n this.inputElement.setAttribute(\"class\", \"dxdi-focus-input\");\n parent.appendChild(this.inputElement);\n };\n\n InputManager.prototype.attachInputElementEvents = function () {\n this.onInputBlurHandler = this.onInputBlur.bind(this);\n this.onInputFocusHandler = this.onInputFocus.bind(this);\n this.onInputKeyDownHandler = this.onInputKeyDown.bind(this);\n this.onInputKeyPressHandler = this.onInputKeyPress.bind(this);\n this.onInputKeyUpHandler = this.onInputKeyUp.bind(this);\n this.onPasteHandler = this.onPaste.bind(this);\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"blur\", this.onInputBlurHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"focus\", this.onInputFocusHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"keydown\", this.onInputKeyDownHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"keypress\", this.onInputKeyPressHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"keyup\", this.onInputKeyUpHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.inputElement, \"paste\", this.onPasteHandler);\n };\n\n InputManager.prototype.detachInputElementEvents = function () {\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"blur\", this.onInputBlurHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"focus\", this.onInputFocusHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"keydown\", this.onInputKeyDownHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"keypress\", this.onInputKeyPressHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"keyup\", this.onInputKeyUpHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.inputElement, \"paste\", this.onPasteHandler);\n };\n\n InputManager.prototype.createTextInputElement = function (parent) {\n this.textInputElementContainer = document.createElement(\"div\");\n this.textInputElementContainer.setAttribute(\"class\", \"dxdi-text-input-container\");\n parent.appendChild(this.textInputElementContainer);\n this.textInputElement = document.createElement(\"textarea\");\n this.textInputElement.setAttribute(\"class\", TEXT_INPUT_CSSCLASS);\n this.attachTextInputElementEvents();\n this.textInputElementContainer.appendChild(this.textInputElement);\n };\n\n InputManager.prototype.attachTextInputElementEvents = function () {\n this.onTextInputBlurHandler = this.onTextInputBlur.bind(this);\n this.onTextInputFocusHandler = this.onTextInputFocus.bind(this);\n this.onTextInputKeyDownHandler = this.onTextInputKeyDown.bind(this);\n this.onTextInputMouseWheelHandler = this.onTextInputMouseWheel.bind(this);\n this.onTextInputMouseUpHandler = this.onTextInputMouseUp.bind(this);\n this.onTextInputKeyUpHandler = this.onTextInputKeyUp.bind(this);\n this.onTextInputChangeHandler = this.onTextInputChange.bind(this);\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"mousewheel\", this.onTextInputMouseWheelHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"mouseup\", this.onTextInputMouseUpHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"blur\", this.onTextInputBlurHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"focus\", this.onTextInputFocusHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"keydown\", this.onTextInputKeyDownHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"keyup\", this.onTextInputKeyUpHandler);\n RenderHelper_1.RenderHelper.addEventListener(this.textInputElement, \"change\", this.onTextInputChangeHandler);\n };\n\n InputManager.prototype.detachTextInputElementEvents = function () {\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"mousewheel\", this.onTextInputMouseWheelHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"mouseup\", this.onTextInputMouseUpHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"blur\", this.onTextInputBlurHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"focus\", this.onTextInputFocusHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"keydown\", this.onTextInputKeyDownHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"keyup\", this.onTextInputKeyUpHandler);\n RenderHelper_1.RenderHelper.removeEventListener(this.textInputElement, \"change\", this.onTextInputChangeHandler);\n };\n\n InputManager.prototype.createClipboardInputElement = function (parent) {\n this.clipboardInputElement = document.createElement(\"textarea\");\n this.clipboardInputElement.setAttribute(\"class\", \"dxdi-clipboard-input\");\n parent.appendChild(this.clipboardInputElement);\n };\n\n InputManager.prototype.blurControl = function () {\n if (!this.focusLocked) {\n this.focused = false;\n dom_1.DomUtils.removeClassName(this.mainElement, \"focused\");\n }\n };\n\n InputManager.prototype.focusControl = function () {\n this.focused = true;\n this.focusLocked = false;\n dom_1.DomUtils.addClassName(this.mainElement, \"focused\");\n };\n\n InputManager.prototype.updateTextInputPadding = function () {\n var text = this.textInputElement.value;\n\n if (!this.savedTextInputSize) {\n var measureResults = this.textMeasurer.measureWords(\" \", this.savedTextInputStyle, ITextMeasurer_1.TextOwner.Connector);\n var textHeight = TextUtils_1.getLineHeight(measureResults) * ((TextUtils_1.textToParagraphs(text).length || 1) + 1);\n this.textInputElement.style.height = Math.ceil(textHeight) + \"px\";\n } else {\n var measureResults = this.textMeasurer.measureWords(text, this.savedTextInputStyle, ITextMeasurer_1.TextOwner.Shape);\n var textHeight = TextUtils_1.getTextHeight(text, this.savedTextInputSize.width, measureResults, true);\n var top_1 = Math.max(0, (this.savedTextInputSize.height - textHeight) * 0.5);\n this.textInputElement.style.paddingTop = Math.ceil(top_1) + \"px\";\n this.textInputElement.style.height = Math.floor(this.savedTextInputSize.height) + \"px\";\n }\n };\n\n InputManager.prototype.onInputBlur = function (evt) {\n var _this = this;\n\n this.blurControl();\n Utils_1.raiseEvent(evt, this.getDiagramFocusEvent(evt), function (e) {\n return _this.eventManager.onBlur(e);\n });\n };\n\n InputManager.prototype.onInputFocus = function (evt) {\n var _this = this;\n\n this.focusControl();\n Utils_1.raiseEvent(evt, this.getDiagramFocusEvent(evt), function (e) {\n return _this.eventManager.onFocus(e);\n });\n };\n\n InputManager.prototype.onInputKeyDown = function (evt) {\n var _this = this;\n\n Utils_1.raiseEvent(evt, this.getDiagramKeyboardEvent(evt), function (e) {\n return _this.eventManager.onKeyDown(e);\n });\n };\n\n InputManager.prototype.onInputKeyPress = function (evt) {\n if (evt.preventDefault && !(browser_1.Browser.Safari && evt.code === \"KeyV\")) evt.preventDefault(); // prevent page scroll because of hidden textarea\n };\n\n InputManager.prototype.onInputKeyUp = function (evt) {\n var _this = this;\n\n Utils_1.raiseEvent(evt, this.getDiagramKeyboardEvent(evt), function (e) {\n return _this.eventManager.onKeyUp(e);\n });\n };\n\n InputManager.prototype.onTextInputBlur = function (evt) {\n var _this = this;\n\n if (this.eventManager.canFinishTextEditing()) {\n this.blurControl();\n Utils_1.raiseEvent(evt, this.getDiagramFocusEvent(evt), function (e) {\n return _this.eventManager.onTextInputBlur(e);\n });\n } else {\n var srcElement = evt_1.EvtUtils.getEventSource(evt);\n if (document.activeElement !== srcElement) // It is always true in runtime. This condition is needed only for tests to run correctly in JSDOM\n srcElement.focus();\n }\n };\n\n InputManager.prototype.onTextInputFocus = function (evt) {\n var _this = this;\n\n this.focusControl();\n Utils_1.raiseEvent(evt, this.getDiagramFocusEvent(evt), function (e) {\n return _this.eventManager.onTextInputFocus(e);\n });\n };\n\n InputManager.prototype.onTextInputKeyDown = function (evt) {\n var _this = this;\n\n Utils_1.raiseEvent(evt, this.getDiagramKeyboardEvent(evt), function (e) {\n return _this.eventManager.onTextInputKeyDown(e);\n });\n };\n\n InputManager.prototype.onTextInputKeyUp = function (evt) {\n this.updateTextInputPadding();\n };\n\n InputManager.prototype.onTextInputChange = function (evt) {\n this.updateTextInputPadding();\n };\n\n InputManager.prototype.onPaste = function (evt) {\n var _this = this;\n\n Utils_1.raiseEvent(evt, this.getDiagramClipboardEvent(evt), function (e) {\n return _this.eventManager.onPaste(e);\n });\n };\n\n InputManager.prototype.onTextInputMouseWheel = function (evt) {\n this.mouseWheelHandler && this.mouseWheelHandler(evt);\n };\n\n InputManager.prototype.onTextInputMouseUp = function (evt) {\n if (evt.stopPropagation) evt.stopPropagation();\n evt_1.EvtUtils.cancelBubble(evt);\n };\n\n InputManager.prototype.getDiagramKeyboardEvent = function (evt) {\n return new Event_1.DiagramKeyboardEvent(key_1.KeyUtils.getKeyModifiers(evt), key_1.KeyUtils.getEventKeyCode(evt), this.textInputElement.value); // TODO: check it\n };\n\n InputManager.prototype.getTextInputElementValue = function () {\n return this.textInputElement.value;\n };\n\n InputManager.prototype.getDiagramFocusEvent = function (evt) {\n return new Event_1.DiagramFocusEvent(evt.target.value);\n };\n\n InputManager.prototype.getDiagramClipboardEvent = function (evt) {\n var clipboardData;\n var evtClipboardData = evt.clipboardData || evt[\"originalEvent\"] && evt[\"originalEvent\"].clipboardData;\n if (evtClipboardData !== undefined) clipboardData = evtClipboardData.getData(\"text/plain\");else clipboardData = window[\"clipboardData\"].getData(\"Text\");\n return new Event_1.DiagramClipboardEvent(clipboardData);\n };\n\n InputManager.prototype.isTextInputElement = function (element) {\n return typeof element.className === \"string\" && element.className.indexOf(TEXT_INPUT_CSSCLASS) > -1;\n };\n\n InputManager.prototype.lockFocus = function () {\n var _this = this;\n\n this.focusLocked = true;\n setTimeout(function () {\n return _this.focusLocked = false;\n }, 10);\n };\n\n InputManager.prototype.notifyViewAdjusted = function (canvasOffset) {};\n\n InputManager.prototype.notifyActualZoomChanged = function (actualZoom) {\n this.actualZoom = actualZoom;\n if (this.savedTextInputPosition && this.savedTextInputSize) this.setTextInputElementBounds(this.savedTextInputPosition, this.savedTextInputSize, this.savedTextInputAngle);\n };\n\n InputManager.prototype.notifyTextInputStart = function (item, text, position, size) {\n var className = \"\";\n var textAngle;\n\n if (item instanceof Shape_1.Shape) {\n className = \"shape-text\";\n textAngle = item.textAngle;\n } else if (item instanceof Connector_1.Connector) className = \"connector-text\";\n\n size = size && size.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixels);\n this.setInputElementTextInputMode(text, position, size, item.styleText, className, textAngle);\n };\n\n InputManager.prototype.notifyTextInputEnd = function (item) {\n this.setInputElementFocusHandlerMode();\n };\n\n InputManager.prototype.notifyTextInputPermissionsCheck = function (item, allowed) {};\n\n return InputManager;\n }();\n\n exports.InputManager = InputManager;\n /***/\n },\n /* 340 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics229 = function extendStatics(d, b) {\n _extendStatics229 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics229(d, b);\n };\n\n return function (d, b) {\n _extendStatics229(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CanvasPageManager = void 0;\n\n var Style_1 = __webpack_require__(27);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var PathPrimitive_1 = __webpack_require__(5);\n\n var PatternPrimitive_1 = __webpack_require__(341);\n\n var ClipPathPrimitive_1 = __webpack_require__(55);\n\n var CanvasManagerBase_1 = __webpack_require__(43);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var Utils_1 = __webpack_require__(17);\n\n var color_1 = __webpack_require__(22);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var GRID_PAGES_LINEWIDTH = 2;\n\n var CanvasPageManager =\n /** @class */\n function (_super) {\n __extends(CanvasPageManager, _super);\n\n function CanvasPageManager(parent, settings, dom) {\n var _this = _super.call(this, settings.zoomLevel, dom) || this;\n\n _this.snapPoint = new point_1.Point(0, 0);\n _this.gridPatternId = Utils_1.RenderUtils.generateSvgElementId(\"gridPattern\");\n _this.pagesGridPatternId = Utils_1.RenderUtils.generateSvgElementId(\"pagesGridPattern\");\n _this.pagesGridClipId = Utils_1.RenderUtils.generateSvgElementId(\"pagesGridClip\");\n _this.pageColor = settings.pageColor;\n _this.modelSize = settings.modelSize;\n _this.simpleView = settings.simpleView;\n _this.gridSize = settings.gridSize;\n _this.gridVisible = settings.gridVisible;\n _this.pageSize = settings.pageLandscape ? new size_1.Size(settings.pageSize.height, settings.pageSize.width) : settings.pageSize;\n _this.canvasViewOffset = new point_1.Point(0, 0);\n\n _this.initContainers(parent);\n\n return _this;\n }\n\n CanvasPageManager.prototype.initContainers = function (parent) {\n this.backgroundContainer = parent;\n };\n\n CanvasPageManager.prototype.redraw = function () {\n this.redrawPage(this.pageColor);\n this.redrawGrid();\n };\n\n CanvasPageManager.prototype.redrawPage = function (color) {\n var style = new Style_1.Style();\n style[\"fill\"] = color_1.ColorUtils.colorToHash(color);\n this.getOrCreateElement(\"page-bg\", new RectaglePrimitive_1.RectanglePrimitive(0, 0, \"100%\", \"100%\", style, \"page\"), this.backgroundContainer);\n this.createTextFloodFilter(\"page-bg-textflood-filter\", this.backgroundContainer, color);\n };\n\n CanvasPageManager.prototype.redrawGrid = function () {\n this.updateGridElements();\n this.updatePagesGridElements();\n };\n\n CanvasPageManager.prototype.getGridRectElement = function (primitive) {\n if (this.gridRectElement === undefined) this.gridRectElement = this.createPrimitiveElement(primitive, this.backgroundContainer);\n return this.gridRectElement;\n };\n\n CanvasPageManager.prototype.getGridPatternElement = function (primitive) {\n if (this.gridPatternElement === undefined) this.gridPatternElement = this.createPrimitiveElement(primitive, this.backgroundContainer);\n return this.gridPatternElement;\n };\n\n CanvasPageManager.prototype.updateGridElements = function () {\n var _this = this;\n\n var gridRectPrimitive = new RectaglePrimitive_1.RectanglePrimitive(\"0\", \"0\", \"100%\", \"100%\", null, \"grid\", null, function (element) {\n element.style.setProperty(\"fill\", Utils_1.RenderUtils.getUrlPathById(_this.gridPatternId));\n });\n var rectEl = this.getGridRectElement(gridRectPrimitive);\n if (!this.gridVisible) rectEl.style.display = \"none\";else {\n rectEl.style.display = \"\";\n this.changePrimitiveElement(gridRectPrimitive, rectEl);\n var absGridSize_1 = unit_converter_1.UnitConverter.twipsToPixelsF(this.gridSize) * this.actualZoom;\n var sizes = [0, 1, 2, 3, 4].map(function (i) {\n return Math.round(absGridSize_1 * i);\n });\n var outerPathCommands = [new PathPrimitive_1.PathPrimitiveMoveToCommand(sizes[4].toString(), \"0\"), new PathPrimitive_1.PathPrimitiveLineToCommand(sizes[4].toString(), sizes[4].toString()), new PathPrimitive_1.PathPrimitiveLineToCommand(\"0\", sizes[4].toString())];\n var innerPathCommands = [];\n\n for (var i = 1; i <= 3; i++) {\n innerPathCommands.push(new PathPrimitive_1.PathPrimitiveMoveToCommand(sizes[i].toString(), \"0\"));\n innerPathCommands.push(new PathPrimitive_1.PathPrimitiveLineToCommand(sizes[i].toString(), sizes[4].toString()));\n }\n\n for (var i = 1; i <= 3; i++) {\n innerPathCommands.push(new PathPrimitive_1.PathPrimitiveMoveToCommand(\"0\", sizes[i].toString()));\n innerPathCommands.push(new PathPrimitive_1.PathPrimitiveLineToCommand(sizes[4].toString(), sizes[i].toString()));\n }\n\n var commonSize = absGridSize_1 * 4;\n var canvasViewOffset = this.simpleView ? this.canvasViewOffset : point_1.Point.zero();\n var gridPatternPrimitive = new PatternPrimitive_1.PatternPrimitive(this.gridPatternId, [this.createGridPathPrimitive(outerPathCommands, \"grid-outer-line\"), this.createGridPathPrimitive(innerPathCommands, \"grid-inner-line\")], this.createGridPatternPrimitivePosition(canvasViewOffset.x, this.snapPoint.x, commonSize), this.createGridPatternPrimitivePosition(canvasViewOffset.y, this.snapPoint.y, commonSize), commonSize.toString(), commonSize.toString());\n this.changePrimitiveElement(gridPatternPrimitive, this.getGridPatternElement(gridPatternPrimitive));\n }\n };\n\n CanvasPageManager.prototype.createGridPatternPrimitivePosition = function (offset, coord, commonSize) {\n return (((offset + coord * this.actualZoom) % commonSize - commonSize) % commonSize).toString();\n };\n\n CanvasPageManager.prototype.createGridPathPrimitive = function (commands, className) {\n return new PathPrimitive_1.PathPrimitive(commands, Style_1.StrokeStyle.default1pxNegativeOffsetInstance, className);\n };\n\n CanvasPageManager.prototype.getPagesGridRectElement = function (primitive) {\n return this.getOrCreateElement(\"grid-pages-rect\", primitive, this.backgroundContainer);\n };\n\n CanvasPageManager.prototype.getPagesGridClipPathElement = function (primitive) {\n if (this.pagesGridClipPathElement === undefined) this.pagesGridClipPathElement = this.createPrimitiveElement(primitive, this.backgroundContainer);\n return this.pagesGridClipPathElement;\n };\n\n CanvasPageManager.prototype.getPagesGridPatternElement = function (primitive) {\n if (this.pagesGridPatternElement === undefined) this.pagesGridPatternElement = this.createPrimitiveElement(primitive, this.backgroundContainer);\n return this.pagesGridPatternElement;\n };\n\n CanvasPageManager.prototype.updatePagesGridElements = function () {\n var _this = this;\n\n var pageAbsSize = this.getAbsoluteSize(this.pageSize);\n var rectPrimitive = new RectaglePrimitive_1.RectanglePrimitive(\"0\", \"0\", \"100%\", \"100%\", null, \"grid-page\", this.pagesGridClipId, function (element) {\n element.style.setProperty(\"fill\", Utils_1.RenderUtils.getUrlPathById(_this.pagesGridPatternId));\n element.style.setProperty(\"display\", _this.simpleView ? \"none\" : \"\");\n });\n this.getPagesGridRectElement(rectPrimitive);\n\n if (!this.simpleView) {\n var modelSize = this.modelSize.clone().multiply(this.actualZoom, this.actualZoom);\n var pageGridPathCommands = [new PathPrimitive_1.PathPrimitiveMoveToCommand((pageAbsSize.width - GRID_PAGES_LINEWIDTH / 2).toString(), \"0\"), new PathPrimitive_1.PathPrimitiveLineToCommand((pageAbsSize.width - GRID_PAGES_LINEWIDTH / 2).toString(), (pageAbsSize.height - GRID_PAGES_LINEWIDTH / 2).toString()), new PathPrimitive_1.PathPrimitiveLineToCommand(\"0\", (pageAbsSize.height - GRID_PAGES_LINEWIDTH / 2).toString())];\n var pagesGridPatternPrimitive = new PatternPrimitive_1.PatternPrimitive(this.pagesGridPatternId, [new PathPrimitive_1.PathPrimitive(pageGridPathCommands, null, \"pages-grid-line\")], 0, 0, pageAbsSize.width.toString(), pageAbsSize.height.toString());\n this.changePrimitiveElement(pagesGridPatternPrimitive, this.getPagesGridPatternElement(pagesGridPatternPrimitive));\n var pagesGridClipPathPrimitive = new ClipPathPrimitive_1.ClipPathPrimitive(this.pagesGridClipId, [new RectaglePrimitive_1.RectanglePrimitive(0, 0, (unit_converter_1.UnitConverter.twipsToPixelsF(modelSize.width) - GRID_PAGES_LINEWIDTH * 2).toString(), (unit_converter_1.UnitConverter.twipsToPixelsF(modelSize.height) - GRID_PAGES_LINEWIDTH * 2).toString())]);\n this.changePrimitiveElement(pagesGridClipPathPrimitive, this.getPagesGridClipPathElement(pagesGridClipPathPrimitive));\n }\n };\n\n CanvasPageManager.prototype.notifyModelSizeChanged = function (size, offset) {\n this.modelSize = size.clone();\n this.redraw();\n };\n\n CanvasPageManager.prototype.notifyModelRectangleChanged = function (rectangle) {};\n\n CanvasPageManager.prototype.notifySnapPointPositionChanged = function (point) {\n this.snapPoint = point.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF);\n this.redrawGrid();\n };\n\n CanvasPageManager.prototype.notifyPageColorChanged = function (color) {\n this.pageColor = color;\n this.redrawPage(this.pageColor);\n };\n\n CanvasPageManager.prototype.notifyModelChanged = function (changes) {};\n\n CanvasPageManager.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) {\n this.pageSize = pageLandscape ? new size_1.Size(pageSize.height, pageSize.width) : pageSize.clone();\n this.redraw();\n };\n\n CanvasPageManager.prototype.notifyActualZoomChanged = function (actualZoom) {\n this.actualZoom = actualZoom;\n this.redraw();\n };\n\n CanvasPageManager.prototype.notifyViewAdjusted = function (canvasViewOffset) {\n if (!this.canvasViewOffset.equals(canvasViewOffset)) {\n this.canvasViewOffset = canvasViewOffset;\n if (this.simpleView) this.redraw();\n }\n };\n\n CanvasPageManager.prototype.notifyViewChanged = function (simpleView) {\n this.simpleView = simpleView;\n this.redraw();\n };\n\n CanvasPageManager.prototype.notifyGridChanged = function (showGrid, gridSize) {\n this.gridVisible = showGrid;\n this.gridSize = gridSize;\n this.redraw();\n };\n\n return CanvasPageManager;\n }(CanvasManagerBase_1.CanvasManagerBase);\n\n exports.CanvasPageManager = CanvasPageManager;\n /***/\n },\n /* 341 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics230 = function extendStatics(d, b) {\n _extendStatics230 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics230(d, b);\n };\n\n return function (d, b) {\n _extendStatics230(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PatternPrimitive = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Primitive_1 = __webpack_require__(25);\n\n var PatternPrimitive =\n /** @class */\n function (_super) {\n __extends(PatternPrimitive, _super);\n\n function PatternPrimitive(id, children, x, y, width, height, style) {\n var _this = _super.call(this, style) || this;\n\n _this.id = id;\n _this.x = x;\n _this.y = y;\n _this.width = width;\n _this.height = height;\n _this.children = children;\n return _this;\n }\n\n PatternPrimitive.prototype.createMainElement = function () {\n var element = document.createElementNS(RenderHelper_1.svgNS, \"pattern\");\n element.setAttribute(\"patternUnits\", \"userSpaceOnUse\");\n element.setAttribute(\"id\", this.id);\n return element;\n };\n\n PatternPrimitive.prototype.applyElementProperties = function (element, measurer) {\n this.setUnitAttribute(element, \"x\", this.x);\n this.setUnitAttribute(element, \"y\", this.y);\n this.setUnitAttribute(element, \"width\", this.width);\n this.setUnitAttribute(element, \"height\", this.height);\n this.setPositionCorrectionAttribute(element);\n\n _super.prototype.applyElementProperties.call(this, element, measurer);\n };\n\n return PatternPrimitive;\n }(Primitive_1.SvgPrimitive);\n\n exports.PatternPrimitive = PatternPrimitive;\n /***/\n },\n /* 342 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics231 = function extendStatics(d, b) {\n _extendStatics231 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics231(d, b);\n };\n\n return function (d, b) {\n _extendStatics231(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.CanvasViewManager = exports.CROP_OFFSET = exports.CANVAS_SCROLL_PADDING = exports.CANVAS_MIN_PADDING = void 0;\n\n var CanvasManagerBase_1 = __webpack_require__(43);\n\n var Settings_1 = __webpack_require__(28);\n\n var Utils_1 = __webpack_require__(3);\n\n var offsets_1 = __webpack_require__(87);\n\n var size_1 = __webpack_require__(2);\n\n var point_1 = __webpack_require__(1);\n\n var GroupPrimitive_1 = __webpack_require__(40);\n\n var ClipPathPrimitive_1 = __webpack_require__(55);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var Utils_2 = __webpack_require__(17);\n\n var ShadowFilterPrimitive_1 = __webpack_require__(343);\n\n var Style_1 = __webpack_require__(27);\n\n var dom_1 = __webpack_require__(23);\n\n var unit_converter_1 = __webpack_require__(11);\n\n exports.CANVAS_MIN_PADDING = 8;\n exports.CANVAS_SCROLL_PADDING = 18;\n exports.CROP_OFFSET = 40;\n var DRAG_SCROLL_CSSCLASS = \"dxdi-drag-scroll\";\n var DRAG_ITEM_CSSCLASS = \"dxdi-drag-item\";\n\n var CanvasViewManager =\n /** @class */\n function (_super) {\n __extends(CanvasViewManager, _super);\n\n function CanvasViewManager(scrollView, svgElement, modelSize, fixedZoomLevel, autoZoom, simpleView, rectangle, dom) {\n var _this = _super.call(this, fixedZoomLevel, dom) || this;\n\n _this.svgElement = svgElement;\n _this.paddings = new offsets_1.Offsets(0, 0, 0, 0);\n _this.scroll = new point_1.Point(0, 0);\n _this.crop = offsets_1.Offsets.empty();\n _this.lockAutoZoom = false;\n _this.autoScrollLocker = 0;\n _this.pageClipPathId = Utils_2.RenderUtils.generateSvgElementId(\"page-clip\");\n _this.pageShadowId = Utils_2.RenderUtils.generateSvgElementId(\"page-shadow\");\n _this.onViewChanged = new Utils_1.EventDispatcher();\n scrollView.onScroll.add(_this);\n modelSize = modelSize.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF);\n _this.scrollView = scrollView;\n _this.modelSize = modelSize;\n _this.simpleView = simpleView;\n _this.fixedZoomLevel = fixedZoomLevel;\n _this.autoZoom = autoZoom;\n _this.crop = _this.rectangleToCrop(rectangle, modelSize);\n\n _this.updateElements(modelSize.clone().multiply(fixedZoomLevel, fixedZoomLevel), point_1.Point.zero(), simpleView); // TODO: remove?\n\n\n _this.getOrCreateElement(\"shadow\", new ShadowFilterPrimitive_1.ShadowFilterPrimitive(_this.pageShadowId), _this.svgElement);\n\n _this.containerSize = scrollView.getSize();\n return _this;\n }\n\n CanvasViewManager.prototype.adjust = function (resetPaddings, saveVerticalScroll) {\n var offset;\n\n if (!resetPaddings) {\n resetPaddings = {\n vertical: false,\n horizontal: false\n };\n offset = offsets_1.Offsets.empty();\n }\n\n this.containerSize = this.scrollView.getSize();\n this.adjustCore(this.modelSize, this.fixedZoomLevel, this.autoZoom, this.simpleView, this.crop, resetPaddings, this.containerSize, offset, saveVerticalScroll);\n this.tryNormalizePaddings();\n };\n\n CanvasViewManager.prototype.notifyModelSizeChanged = function (size, offset) {\n size = size.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF);\n var resetPaddings = {\n horizontal: !offset,\n vertical: !offset\n };\n this.adjustCore(size, this.fixedZoomLevel, this.autoZoom, this.simpleView, this.crop, resetPaddings, this.containerSize, offset && offset.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF));\n this.modelSize = size;\n };\n\n CanvasViewManager.prototype.notifyModelRectangleChanged = function (rectangle) {\n var crop = this.rectangleToCrop(rectangle, this.modelSize);\n\n if (!this.crop || !this.crop.equals(crop)) {\n if (this.simpleView) this.adjustCore(this.modelSize, this.fixedZoomLevel, this.autoZoom, this.simpleView, crop, {\n horizontal: false,\n vertical: false\n }, this.containerSize, offsets_1.Offsets.empty());\n this.crop = crop;\n }\n };\n\n CanvasViewManager.prototype.notifySnapPointPositionChanged = function (point) {};\n\n CanvasViewManager.prototype.notifyZoomChanged = function (fixedZoomLevel, autoZoom) {\n this.adjustCore(this.modelSize, fixedZoomLevel, autoZoom, this.simpleView, this.crop, {\n horizontal: false,\n vertical: false\n }, this.containerSize);\n this.fixedZoomLevel = fixedZoomLevel;\n this.autoZoom = autoZoom;\n };\n\n CanvasViewManager.prototype.notifyViewChanged = function (simpleView) {\n this.adjustCore(this.modelSize, this.fixedZoomLevel, this.autoZoom, simpleView, this.crop, {\n vertical: true,\n horizontal: true\n }, this.containerSize);\n this.simpleView = simpleView;\n };\n\n CanvasViewManager.prototype.notifyGridChanged = function (showGrid, gridSize) {};\n\n CanvasViewManager.prototype.notifyDragStart = function (itemKeys) {\n this.lockAutoZoom = true;\n dom_1.DomUtils.addClassName(this.svgElement, DRAG_ITEM_CSSCLASS);\n };\n\n CanvasViewManager.prototype.notifyDragEnd = function (itemKeys) {\n this.lockAutoZoom = false;\n dom_1.DomUtils.removeClassName(this.svgElement, DRAG_ITEM_CSSCLASS);\n this.adjustAfterDragEnd();\n };\n\n CanvasViewManager.prototype.adjustAfterDragEnd = function () {\n if (this.autoZoom && !this.autoZoomLocked) this.adjust({\n horizontal: true,\n vertical: this.autoZoom === Settings_1.AutoZoomMode.FitContent\n }, this.autoZoom === Settings_1.AutoZoomMode.FitToWidth);\n };\n\n CanvasViewManager.prototype.notifyShowContextToolbox = function () {\n this.autoZoomLocked = true;\n };\n\n CanvasViewManager.prototype.notifyHideContextToolbox = function () {\n this.autoZoomLocked = false;\n this.adjustAfterDragEnd();\n };\n\n CanvasViewManager.prototype.notifyDragScrollStart = function () {\n dom_1.DomUtils.addClassName(this.svgElement, DRAG_SCROLL_CSSCLASS);\n };\n\n CanvasViewManager.prototype.notifyDragScrollEnd = function () {\n dom_1.DomUtils.removeClassName(this.svgElement, DRAG_SCROLL_CSSCLASS);\n };\n\n CanvasViewManager.prototype.notifyScrollChanged = function (getScroll) {\n this.scroll = getScroll();\n };\n\n CanvasViewManager.prototype.checkFitToCanvas = function (containerSize) {\n containerSize = containerSize || this.containerSize;\n var scrollSize = this.scrollView.getScrollBarWidth();\n containerSize = containerSize.clone().offset(-exports.CANVAS_MIN_PADDING * 2, -exports.CANVAS_MIN_PADDING * 2).nonNegativeSize();\n var modelAbsSize = this.getActualModelSizeWithoutZoom(this.modelSize, this.simpleView, this.crop).clone().multiply(this.actualZoom, this.actualZoom);\n var scrollbars = this.checkScrollBars(containerSize, scrollSize, modelAbsSize, offsets_1.Offsets.empty());\n containerSize = containerSize.clone().offset(scrollbars.vertical ? -scrollSize : 0, scrollbars.horizontal ? -scrollSize : 0).nonNegativeSize();\n return {\n vertical: containerSize.height >= modelAbsSize.height,\n horizontal: containerSize.width >= modelAbsSize.width\n };\n };\n\n CanvasViewManager.prototype.rectangleToCrop = function (rectangle, modelSize) {\n var absRectangle = rectangle.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF);\n return new offsets_1.Offsets(this.correctCrop(absRectangle.x), this.correctCrop(modelSize.width - absRectangle.right), this.correctCrop(absRectangle.y), this.correctCrop(modelSize.height - absRectangle.bottom));\n };\n\n CanvasViewManager.prototype.correctCrop = function (newVal) {\n return exports.CROP_OFFSET * Math.floor(newVal / exports.CROP_OFFSET);\n };\n\n CanvasViewManager.prototype.setActualZoom = function (actualZoom) {\n if (this.actualZoom !== actualZoom) {\n this.actualZoom = actualZoom;\n this.raiseActualZoomChanged();\n }\n };\n\n CanvasViewManager.prototype.getActualAutoZoomLevel = function (autoZoom) {\n if (autoZoom === Settings_1.AutoZoomMode.Disabled) return this.actualZoom;\n var containerSize = this.containerSize;\n var scrollbarWidth = this.scrollView.getScrollBarWidth();\n var actualModelSizeWithoutZoom = this.getActualModelSizeWithoutZoom(this.modelSize, this.simpleView, this.crop);\n return this.getActualAutoZoom(containerSize, scrollbarWidth, actualModelSizeWithoutZoom, autoZoom);\n };\n\n CanvasViewManager.prototype.getActualZoom = function (containerSize, scrollbarWidth, actualModelSizeWithoutZoom, fixedZoom, autoZoom) {\n return this.lockAutoZoom ? this.actualZoom : autoZoom === Settings_1.AutoZoomMode.Disabled ? fixedZoom : this.getActualAutoZoom(containerSize, scrollbarWidth, actualModelSizeWithoutZoom, autoZoom);\n };\n\n CanvasViewManager.prototype.getActualAutoZoom = function (containerSize, scrollbarWidth, actualModelSizeWithoutZoom, autoZoom) {\n if (containerSize.width === 0 || containerSize.height === 0) return 1;\n if (autoZoom === Settings_1.AutoZoomMode.FitContent) return Math.min((containerSize.width - exports.CANVAS_MIN_PADDING * 2) / actualModelSizeWithoutZoom.width, (containerSize.height - exports.CANVAS_MIN_PADDING * 2) / actualModelSizeWithoutZoom.height, 1);\n return Math.min((containerSize.width - exports.CANVAS_MIN_PADDING * 2 - scrollbarWidth) / actualModelSizeWithoutZoom.width, 1);\n };\n\n CanvasViewManager.prototype.raiseActualZoomChanged = function () {\n var _this = this;\n\n this.onViewChanged.raise1(function (l) {\n return l.notifyActualZoomChanged(_this.actualZoom);\n });\n };\n\n CanvasViewManager.prototype.tryNormalizePaddings = function () {\n var scrollbarWidth = this.scrollView.getScrollBarWidth();\n var actualModelSize = this.getActualModelSizeWithoutZoom(this.modelSize, this.simpleView, this.crop).clone().multiply(this.actualZoom, this.actualZoom);\n var translate = new point_1.Point(this.paddings.left, this.paddings.top);\n var currentTail = new size_1.Size(this.paddings.right, this.paddings.bottom);\n var tail = this.getTailSpace(translate, this.scroll, actualModelSize, this.containerSize, scrollbarWidth);\n if (!tail.equals(currentTail)) this.applyChanges(new offsets_1.Offsets(translate.x, tail.width, translate.y, tail.height), actualModelSize, this.simpleView, this.crop.clone().multiply(this.actualZoom));\n };\n\n CanvasViewManager.prototype.scrollBy = function (offset) {\n var _a, _b, _c;\n\n var scroll = this.scroll;\n var containerSize = this.containerSize;\n var scrollbarWidth = this.scrollView.getScrollBarWidth();\n var actualModelSize = this.getActualModelSizeWithoutZoom(this.modelSize, this.simpleView, this.crop).clone().multiply(this.actualZoom, this.actualZoom);\n var scrollbars = this.checkScrollBars(containerSize, scrollbarWidth, actualModelSize, this.paddings);\n var translate = new point_1.Point(this.paddings.left, this.paddings.top);\n var tail = new size_1.Size(this.paddings.right, this.paddings.bottom);\n _a = this.changeScrollByOffset(translate, scroll, tail, actualModelSize, offset, containerSize, scrollbars), scroll = _a.scroll, offset = _a.offset;\n _b = this.changeTranslateByOffset(translate, tail, offset, scrollbars), translate = _b.translate, offset = _b.offset;\n _c = this.cropHiddenHead(translate, scroll), translate = _c.translate, scroll = _c.scroll;\n tail = this.getTailSpace(translate, scroll, actualModelSize, containerSize, scrollbarWidth);\n this.applyChanges(new offsets_1.Offsets(translate.x, tail.width, translate.y, tail.height), actualModelSize, this.simpleView, this.crop.clone().multiply(this.actualZoom), scroll);\n return offset;\n };\n\n CanvasViewManager.prototype.changeScrollByOffset = function (curTranslate, curScroll, curTail, modelSize, curOffset, containerSize, scrollbars) {\n var scroll = curScroll.clone();\n var offset = curOffset.clone();\n if (curOffset.x && scrollbars.horizontal) scroll.x -= offset.x = -this.getScrollDeltaByOffset(curOffset.x, curScroll.x, curTranslate.x + modelSize.width + curTail.width, containerSize.width, scrollbars.vertical);\n if (curOffset.y && scrollbars.vertical) scroll.y -= offset.y = -this.getScrollDeltaByOffset(curOffset.y, curScroll.y, curTranslate.y + modelSize.height + curTail.height, containerSize.height, scrollbars.horizontal);\n return {\n scroll: scroll,\n offset: offset\n };\n };\n\n CanvasViewManager.prototype.changeTranslateByOffset = function (curTranslate, curTail, curOffset, scrollbars) {\n var translate = curTranslate.clone();\n var offset = curOffset.clone();\n if (curOffset.x && !scrollbars.horizontal) translate.x += offset.x = this.getTranslateDeltaByOffset(curOffset.x, translate.x, curTail.width);\n if (curOffset.y && !scrollbars.vertical) translate.y += offset.y = this.getTranslateDeltaByOffset(curOffset.y, translate.y, curTail.height);\n return {\n translate: translate,\n offset: offset\n };\n };\n\n CanvasViewManager.prototype.getScrollDeltaByOffset = function (offset, scroll, commonWidth, containerWidth, hasScrollbar) {\n if (offset > 0) return -Math.min(scroll, offset);\n var maxScroll = commonWidth - (containerWidth - (hasScrollbar ? this.scrollView.getScrollBarWidth() : 0));\n return Math.min(maxScroll - scroll, -offset);\n };\n\n CanvasViewManager.prototype.getTranslateDeltaByOffset = function (offset, headPadding, tailPadding) {\n if (!offset) return 0;\n return offset < 0 ? -Math.min(headPadding - exports.CANVAS_MIN_PADDING, -offset) : Math.min(tailPadding - exports.CANVAS_MIN_PADDING, offset);\n };\n\n CanvasViewManager.prototype.getActualModelSizeWithoutZoom = function (originModelSize, simpleView, crop) {\n return simpleView && crop ? originModelSize.clone().offset(-crop.horizontal, -crop.vertical).nonNegativeSize() : originModelSize;\n };\n\n CanvasViewManager.prototype.setScrollTo = function (modelPoint, offsetPoint) {\n var containerSize = this.containerSize;\n var shift = this.getVisibileAreaAbsShift();\n var absPoint = modelPoint.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF).clone().multiply(this.actualZoom, this.actualZoom).clone().offset(shift.x, shift.y);\n var scroll = this.scroll;\n\n if (!offsetPoint) {\n if (absPoint.x < 0) scroll.x += absPoint.x - exports.CANVAS_MIN_PADDING;\n if (absPoint.y < 0) scroll.y += absPoint.y - exports.CANVAS_MIN_PADDING;\n if (absPoint.x > containerSize.width) scroll.x += absPoint.x - containerSize.width + exports.CANVAS_MIN_PADDING;\n if (absPoint.y > containerSize.height) scroll.y += absPoint.y - containerSize.height + exports.CANVAS_MIN_PADDING;\n } else {\n scroll.x += absPoint.x - offsetPoint.x;\n scroll.y += absPoint.y - offsetPoint.y;\n }\n\n this.setScroll(scroll);\n };\n\n CanvasViewManager.prototype.scrollIntoView = function (rectangle) {\n rectangle = rectangle.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF).multiply(this.actualZoom, this.actualZoom).moveRectangle(this.paddings.left, this.paddings.top);\n var scroll = this.scroll;\n var container = this.containerSize;\n if (rectangle.x >= scroll.x && rectangle.y >= scroll.y && rectangle.right <= scroll.x + container.width && rectangle.bottom <= scroll.y + container.height) return;\n var newScroll = scroll.clone();\n if (rectangle.x < scroll.x) newScroll.x = rectangle.x - exports.CANVAS_SCROLL_PADDING;else if (rectangle.right > scroll.x + container.width) // [..|..x|x.]\n newScroll.x = Math.min(rectangle.x - exports.CANVAS_SCROLL_PADDING, rectangle.right + exports.CANVAS_SCROLL_PADDING - container.width);\n if (rectangle.y < scroll.y) newScroll.y = rectangle.y - exports.CANVAS_SCROLL_PADDING;else newScroll.y = Math.min(rectangle.y - exports.CANVAS_SCROLL_PADDING, rectangle.bottom + exports.CANVAS_SCROLL_PADDING - container.height);\n this.setScroll(newScroll);\n };\n\n CanvasViewManager.prototype.setScroll = function (pt) {\n var _this = this;\n\n var modelAbsSize = this.modelSize.clone().multiply(this.actualZoom, this.actualZoom);\n pt.x = Math.max(0, Math.min(pt.x, modelAbsSize.width + this.paddings.horizontal - this.containerSize.width));\n pt.y = Math.max(0, Math.min(pt.y, modelAbsSize.height + this.paddings.vertical - this.containerSize.height));\n this.dom.changeByFunc(null, function () {\n _this.scrollView.setScroll(pt.x, pt.y);\n });\n this.scroll = pt.clone();\n };\n\n CanvasViewManager.prototype.updateElements = function (modelAbsSize, translate, simpleView) {\n this.updatePageElement(modelAbsSize, translate, simpleView);\n this.updateCanvasElement(translate);\n };\n\n CanvasViewManager.prototype.updateCanvasElement = function (translate) {\n this.canvasElement = this.getOrCreateElement(\"dxdi-main\", new GroupPrimitive_1.GroupPrimitive([], \"dxdi-main\", null, null, function (el) {\n el.setAttribute(\"transform\", \"translate(\" + Math.round(translate.x) + \", \" + Math.round(translate.y) + \")\");\n }), this.svgElement);\n };\n\n CanvasViewManager.prototype.updatePageElement = function (modelAbsSize, translate, simpleView) {\n if (simpleView) this.updatePageElementCore(\"\", 0, 0, modelAbsSize.width, modelAbsSize.height);else {\n var x = translate.x;\n var y = translate.y;\n var modelAbsWidth = modelAbsSize.width;\n var modelAbsHeight = modelAbsSize.height;\n this.createPageShadow(x, y, modelAbsWidth, modelAbsHeight);\n this.updatePageElementCore(this.pageClipPathId, Math.round(x), Math.round(y), modelAbsWidth, modelAbsHeight);\n }\n };\n\n CanvasViewManager.prototype.createPageShadow = function (left, top, width, height) {\n this.getOrCreateElement(\"pageShadowRect\", new RectaglePrimitive_1.RectanglePrimitive(left.toString(), top.toString(), width.toString(), height.toString(), new Style_1.EmptyStyle({\n \"filter\": Utils_2.RenderUtils.getUrlPathById(this.pageShadowId)\n }), \"dxdi-page-shadow\"), this.svgElement, this.svgElement.firstChild);\n };\n\n CanvasViewManager.prototype.updatePageElementCore = function (groupClipPathId, translateX, translateY, modelAbsWidth, modelAbsHeight) {\n this.pageElement = this.getOrCreateElement(\"page\", new GroupPrimitive_1.GroupPrimitive([], \"dxdi-page\", null, groupClipPathId, function (el) {\n el.setAttribute(\"transform\", \"translate(\" + translateX + \", \" + translateY + \")\");\n }), this.svgElement);\n this.getOrCreateElement(\"pageClip\", this.createPageClipPathPrimitive(modelAbsWidth, modelAbsHeight), this.svgElement);\n };\n\n CanvasViewManager.prototype.createPageClipPathPrimitive = function (modelAbsWidth, modelAbsHeight) {\n return new ClipPathPrimitive_1.ClipPathPrimitive(this.pageClipPathId, [new RectaglePrimitive_1.RectanglePrimitive(0, 0, modelAbsWidth.toString(), modelAbsHeight.toString())]);\n };\n\n CanvasViewManager.prototype.adjustCore = function (newModelSize, fixedZoomLevel, autoZoom, simpleView, crop, resetPaddings, containerSize, offset, saveVerticalScroll) {\n var actualModelSizeWithoutZoom = this.getActualModelSizeWithoutZoom(newModelSize, simpleView, crop);\n\n if (!this.lockAutoZoom && (autoZoom || !offset || !this.modelSize)) {\n var scrollbarWidth = this.scrollView.getScrollBarWidth();\n var actualZoom = this.getActualZoom(containerSize, scrollbarWidth, actualModelSizeWithoutZoom, fixedZoomLevel, autoZoom);\n if (autoZoom && actualZoom === this.actualZoom && (!resetPaddings.horizontal || !resetPaddings.vertical && !saveVerticalScroll)) this.resizeView(actualModelSizeWithoutZoom, actualZoom, containerSize, simpleView, crop, offset || offsets_1.Offsets.empty());else {\n this.resetView(actualModelSizeWithoutZoom, actualZoom, containerSize, simpleView, crop, resetPaddings);\n this.setActualZoom(actualZoom);\n }\n } else this.resizeView(actualModelSizeWithoutZoom, this.actualZoom, containerSize, simpleView, crop, offset);\n };\n\n CanvasViewManager.prototype.resetView = function (actualModelSizeWithoutZoom, actualZoom, containerSize, simpleView, cropWithoutZoom, toReset) {\n var actualModelSize = actualModelSizeWithoutZoom.clone().multiply(actualZoom, actualZoom);\n var paddings = offsets_1.Offsets.fromNumber(exports.CANVAS_MIN_PADDING);\n toReset = toReset || {\n horizontal: true,\n vertical: true\n };\n\n if (!toReset.horizontal && this.paddings) {\n paddings.left = this.paddings.left;\n paddings.right = this.paddings.right;\n }\n\n if (!toReset.vertical && this.paddings) {\n paddings.top = this.paddings.top;\n paddings.bottom = this.paddings.bottom;\n }\n\n var scrollbars = this.checkScrollBars(containerSize, this.scrollView.getScrollBarWidth(), actualModelSize, paddings);\n var scrollBarWidth = this.scrollView.getScrollBarWidth();\n var scroll = toReset.horizontal || toReset.vertical ? this.scroll : undefined;\n\n if (toReset.horizontal) {\n var paddingsH = Math.max((containerSize.width - (scrollbars.vertical ? scrollBarWidth : 0) - actualModelSize.width) / 2, exports.CANVAS_MIN_PADDING);\n paddings.left = paddingsH;\n paddings.right = paddingsH;\n scroll.x = 0;\n }\n\n if (toReset.vertical) {\n var paddingsV = Math.max((containerSize.height - (scrollbars.horizontal ? scrollBarWidth : 0) - actualModelSize.height) / 2, exports.CANVAS_MIN_PADDING);\n paddings.top = paddingsV;\n paddings.bottom = paddingsV;\n scroll.y = 0;\n }\n\n this.applyChanges(paddings, actualModelSize, simpleView, cropWithoutZoom.clone().multiply(actualZoom), scroll);\n };\n\n CanvasViewManager.prototype.resizeView = function (actualModelSizeWithoutZoom, actualZoom, containerSize, simpleView, cropWithoutZoom, offset) {\n var _a, _b;\n\n var oldZoom = this.actualZoom;\n var oldCrop = this.simpleView && this.crop ? this.crop.clone().multiply(oldZoom) : offsets_1.Offsets.empty();\n var actualModelSize = actualModelSizeWithoutZoom.clone().multiply(actualZoom, actualZoom);\n offset = offset.clone().multiply(actualZoom);\n var newCrop = simpleView && cropWithoutZoom ? cropWithoutZoom.clone().multiply(actualZoom) : offsets_1.Offsets.empty();\n var translate = new point_1.Point(this.paddings.left, this.paddings.top);\n var scroll = this.scroll;\n _a = this.applyOffset(translate, scroll, oldCrop, newCrop, offset), translate = _a.translate, scroll = _a.scroll;\n _b = this.cropHiddenHead(translate, scroll), translate = _b.translate, scroll = _b.scroll;\n var tailSpace = this.getTailSpace(translate, scroll, actualModelSize, containerSize, this.scrollView.getScrollBarWidth());\n\n if (!simpleView) {\n var maxTailSpaceWidth = containerSize.width - exports.CANVAS_SCROLL_PADDING;\n var maxTailSpaceHeight = containerSize.height - exports.CANVAS_SCROLL_PADDING;\n if (offset.left < 0) if (translate.x > maxTailSpaceWidth) {\n translate.x = maxTailSpaceWidth;\n scroll.x = 0;\n }\n if (offset.right < 0) if (tailSpace.width > maxTailSpaceWidth) {\n tailSpace.width = maxTailSpaceWidth;\n if (scroll.x > actualModelSize.width) scroll.x = actualModelSize.width;\n }\n if (offset.top < 0) if (translate.y > maxTailSpaceHeight) {\n translate.y = maxTailSpaceHeight;\n scroll.y = 0;\n }\n if (offset.bottom < 0) if (tailSpace.height > maxTailSpaceHeight) {\n tailSpace.height = maxTailSpaceHeight;\n if (scroll.y > actualModelSize.height) scroll.y = actualModelSize.height;\n }\n }\n\n var newPaddings = new offsets_1.Offsets(translate.x, tailSpace.width, translate.y, tailSpace.height);\n this.applyChanges(newPaddings, actualModelSize, simpleView, newCrop, scroll);\n };\n\n CanvasViewManager.prototype.applyChanges = function (paddings, actualModelSize, simpleView, crop, scroll) {\n var _this = this;\n\n var translate = new point_1.Point(paddings.left, paddings.top);\n if (simpleView && crop) translate = translate.clone().offset(-crop.left, -crop.top);\n this.updateElements(actualModelSize, translate, simpleView);\n this.setSvgSize(actualModelSize.width + paddings.horizontal, actualModelSize.height + paddings.vertical);\n this.onViewChanged.raise1(function (l) {\n return l.notifyViewAdjusted(new point_1.Point(translate.x, translate.y));\n });\n\n if (scroll) {\n this.lockAutoScroll();\n scroll && this.dom.changeByFunc(this.scrollView, function (s) {\n s.setScroll(scroll.x, scroll.y);\n\n _this.unlockAutoScroll();\n });\n this.scroll = scroll;\n }\n\n this.paddings = paddings;\n };\n\n CanvasViewManager.prototype.isAutoScrollLocked = function () {\n return this.autoScrollLocker !== 0;\n };\n\n CanvasViewManager.prototype.lockAutoScroll = function () {\n this.autoScrollLocker++;\n };\n\n CanvasViewManager.prototype.unlockAutoScroll = function () {\n this.autoScrollLocker--;\n };\n\n CanvasViewManager.prototype.applyOffset = function (curTranslate, curScroll, oldCrop, newCrop, modelOffset) {\n var translate = curTranslate.clone();\n var scroll = curScroll.clone();\n var offset = this.getActualOffset(oldCrop, newCrop, modelOffset);\n\n if (offset.left) {\n translate.x = Math.max(exports.CANVAS_MIN_PADDING, translate.x - offset.left);\n scroll.x += offset.left - (curTranslate.x - translate.x);\n }\n\n if (offset.top) {\n translate.y = Math.max(exports.CANVAS_MIN_PADDING, translate.y - offset.top);\n scroll.y += offset.top - (curTranslate.y - translate.y);\n }\n\n return {\n translate: translate,\n scroll: scroll\n };\n };\n\n CanvasViewManager.prototype.cropHiddenHead = function (curTranslate, curScroll) {\n var scroll = curScroll.clone();\n var translate = curTranslate.clone();\n\n if (scroll.x && translate.x > exports.CANVAS_MIN_PADDING) {\n var delta = translate.x - Math.max(exports.CANVAS_MIN_PADDING, translate.x - scroll.x);\n translate.x -= delta;\n scroll.x -= delta;\n }\n\n if (scroll.y && translate.y > exports.CANVAS_MIN_PADDING) {\n var delta = translate.y - Math.max(exports.CANVAS_MIN_PADDING, translate.y - scroll.y);\n translate.y -= delta;\n scroll.y -= delta;\n }\n\n return {\n translate: translate,\n scroll: scroll\n };\n };\n\n CanvasViewManager.prototype.getTailSpace = function (curTranslate, curScroll, newModelAbsSize, containerSize, scrollbarWidth) {\n var translate = curTranslate.clone();\n var scroll = curScroll.clone();\n var right = Math.max(containerSize.width + scroll.x - (translate.x + newModelAbsSize.width), exports.CANVAS_MIN_PADDING);\n var bottom = Math.max(containerSize.height + scroll.y - (translate.y + newModelAbsSize.height), exports.CANVAS_MIN_PADDING);\n var scrollbars = this.checkScrollBars(containerSize, scrollbarWidth, newModelAbsSize, new offsets_1.Offsets(translate.x, right, translate.y, bottom));\n if (scrollbars.vertical) right = Math.max(exports.CANVAS_MIN_PADDING, right - scrollbarWidth);\n if (scrollbars.horizontal) bottom = Math.max(exports.CANVAS_MIN_PADDING, bottom - scrollbarWidth);\n return new size_1.Size(right, bottom);\n };\n\n CanvasViewManager.prototype.getActualOffset = function (oldCrop, newCrop, docOffset) {\n return new offsets_1.Offsets(-(newCrop.left - oldCrop.left) + docOffset.left, -(newCrop.right - oldCrop.right) + docOffset.right, -(newCrop.top - oldCrop.top) + docOffset.top, -(newCrop.bottom - oldCrop.bottom) + docOffset.bottom);\n };\n\n CanvasViewManager.prototype.checkScrollBars = function (containerSize, scrollBarWidth, modelAbsSize, paddings) {\n var hasHorizontalScroll = containerSize.width < modelAbsSize.width + paddings.horizontal;\n var hasVerticalScroll = containerSize.height < modelAbsSize.height + paddings.vertical;\n if (hasHorizontalScroll && !hasVerticalScroll) hasVerticalScroll = containerSize.height - scrollBarWidth < modelAbsSize.height + paddings.vertical;\n if (hasVerticalScroll && !hasHorizontalScroll) hasHorizontalScroll = containerSize.width - scrollBarWidth < modelAbsSize.width + paddings.horizontal;\n return {\n horizontal: hasHorizontalScroll,\n vertical: hasVerticalScroll\n };\n };\n\n CanvasViewManager.prototype.setSvgSize = function (width, height) {\n if (width !== this.lastWidth || height !== this.lastHeight) {\n this.dom.changeByFunc(this.svgElement, function (e) {\n return Utils_2.RenderUtils.updateSvgElementSize(e, width, height);\n });\n this.lastWidth = width;\n this.lastHeight = height;\n }\n };\n\n CanvasViewManager.prototype.getVisibileAreaAbsShift = function (excludeScroll) {\n var scroll = this.scroll;\n var paddings = this.paddings.clone();\n var simpleView = this.simpleView;\n var cropLeft = simpleView && this.crop ? this.crop.left * this.actualZoom : 0;\n var cropTop = simpleView && this.crop ? this.crop.top * this.actualZoom : 0;\n return new point_1.Point(paddings.left - cropLeft - (excludeScroll ? 0 : scroll.x), paddings.top - cropTop - (excludeScroll ? 0 : scroll.y));\n };\n /* ILayoutPointResolver */\n\n\n CanvasViewManager.prototype.getModelPoint = function (absolutePoint, checkScrollArea) {\n var shift = this.getVisibileAreaAbsShift();\n var modelPoint = absolutePoint.clone().offset(-shift.x, -shift.y).multiply(1 / this.actualZoom, 1 / this.actualZoom);\n\n if (checkScrollArea) {\n var scrollSize = this.containerSize;\n if (absolutePoint.x < 0 || absolutePoint.y < 0 || absolutePoint.x > scrollSize.width || absolutePoint.y > scrollSize.height) return null;\n if (modelPoint.x < 0 || modelPoint.y < 0) return null;\n if (modelPoint.x > this.modelSize.width || modelPoint.y > this.modelSize.height) return null;\n }\n\n return modelPoint.clone().applyConverter(unit_converter_1.UnitConverter.pixelsToTwips);\n };\n\n CanvasViewManager.prototype.getAbsolutePoint = function (modelPoint, excludeScroll, checkScrollArea) {\n var shift = this.getVisibileAreaAbsShift(excludeScroll);\n var absPoint = modelPoint.clone().multiply(this.actualZoom, this.actualZoom).clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF).clone().offset(shift.x, shift.y);\n\n if (checkScrollArea) {\n if (absPoint.x < 0 || absPoint.y < 0) return null;\n var scrollSize = this.containerSize;\n if (absPoint.x > scrollSize.width || absPoint.y > scrollSize.height) return null;\n }\n\n return absPoint;\n };\n\n return CanvasViewManager;\n }(CanvasManagerBase_1.CanvasManagerBase);\n\n exports.CanvasViewManager = CanvasViewManager;\n /***/\n },\n /* 343 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics232 = function extendStatics(d, b) {\n _extendStatics232 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics232(d, b);\n };\n\n return function (d, b) {\n _extendStatics232(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ShadowFilterPrimitive = void 0;\n\n var FilterPrimitive_1 = __webpack_require__(110);\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var ShadowFilterPrimitive =\n /** @class */\n function (_super) {\n __extends(ShadowFilterPrimitive, _super);\n\n function ShadowFilterPrimitive() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ShadowFilterPrimitive.prototype.createChildElements = function (parent) {\n var feGaussianBlur = document.createElementNS(RenderHelper_1.svgNS, \"feGaussianBlur\");\n feGaussianBlur.setAttribute(\"in\", \"SourceGraphic\");\n feGaussianBlur.setAttribute(\"stdDeviation\", \"4.6\");\n parent.appendChild(feGaussianBlur);\n var feOffset = document.createElementNS(RenderHelper_1.svgNS, \"feOffset\");\n feOffset.setAttribute(\"dx\", \"0\");\n feOffset.setAttribute(\"dy\", \"0\");\n parent.appendChild(feOffset);\n var feMerge = document.createElementNS(RenderHelper_1.svgNS, \"feMerge\");\n parent.appendChild(feMerge);\n var feMergeNode1 = document.createElementNS(RenderHelper_1.svgNS, \"feMergeNode\");\n feMerge.appendChild(feMergeNode1);\n var feMergeNode2 = document.createElementNS(RenderHelper_1.svgNS, \"feMergeNode\");\n feMergeNode2.setAttribute(\"in\", \"SourceGraphic\");\n feMerge.appendChild(feMergeNode2);\n };\n\n return ShadowFilterPrimitive;\n }(FilterPrimitive_1.FilterPrimitive);\n\n exports.ShadowFilterPrimitive = ShadowFilterPrimitive;\n /***/\n },\n /* 344 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AutoScrollController = void 0;\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var dom_1 = __webpack_require__(23);\n\n var size_1 = __webpack_require__(2);\n\n var Utils_1 = __webpack_require__(17);\n\n var SCROLL_EDGE = 40;\n var SCROLL_RATIO = 5;\n var SCROLL_MAXOFFSET = 5;\n var SCROLL_DELAY = 50;\n\n var AutoScrollController =\n /** @class */\n function () {\n function AutoScrollController(scroll, svgElement, view, dom) {\n this.scroll = scroll;\n this.svgElement = svgElement;\n this.view = view;\n this.dom = dom;\n this.leftButtonPressed = false;\n this.scrollDragging = false;\n this.scrollTimer = -1;\n this.scrollBarWidth = dom_1.DomUtils.getVerticalScrollBarWidth();\n }\n\n AutoScrollController.prototype.onMouseMove = function (evt, raiseMouseMoveFunc) {\n +this.clearScrollTimer();\n this.leftButtonPressed = Utils_1.isLeftButtonPressed(evt);\n if (this.leftButtonPressed && !this.scrollDragging) this.changeScrollPosition(evt, raiseMouseMoveFunc, false);\n };\n\n AutoScrollController.prototype.onMouseDown = function (evt) {\n this.leftButtonPressed = Utils_1.isLeftButtonPressed(evt);\n };\n\n AutoScrollController.prototype.onMouseUp = function (evt) {\n this.clearScrollTimer();\n this.leftButtonPressed = false;\n };\n\n AutoScrollController.prototype.onMouseEnter = function (evt) {\n var _this = this;\n\n if (Utils_1.isLeftButtonPressed(evt)) setTimeout(function () {\n _this.leftButtonPressed = true;\n }, 500);\n };\n\n AutoScrollController.prototype.onDragScrollStart = function () {\n this.scrollDragging = true;\n };\n\n AutoScrollController.prototype.onDragScrollEnd = function () {\n this.scrollDragging = false;\n };\n\n AutoScrollController.prototype.changeScrollPosition = function (evt, raiseMouseMoveFunc, raiseMouseMove) {\n var _this = this;\n\n var changed = false;\n\n if (!this.view.isAutoScrollLocked()) {\n var scrollContainer = this.scroll.getScrollContainer();\n var x_1 = evt.pageX - dom_1.DomUtils.getAbsolutePositionX(scrollContainer);\n var y_1 = evt.pageY - dom_1.DomUtils.getAbsolutePositionY(scrollContainer);\n var size = this.scroll.getSize();\n var scrollSize = new size_1.Size(parseFloat(this.svgElement.style.width), parseFloat(this.svgElement.style.height));\n var width_1 = size.width;\n if (size.width < scrollSize.width) width_1 -= this.scrollBarWidth;\n var height_1 = size.height;\n if (size.height < scrollSize.height) height_1 -= this.scrollBarWidth;\n\n if (x_1 <= SCROLL_EDGE) {\n this.dom.changeByFunc(null, function () {\n if (!_this.view.isAutoScrollLocked()) _this.scroll.offsetScroll(-_this.getScrollingOffset(x_1), 0);\n });\n changed = true;\n } else if (width_1 - SCROLL_EDGE <= x_1) {\n this.dom.changeByFunc(null, function () {\n if (!_this.view.isAutoScrollLocked()) _this.scroll.offsetScroll(_this.getScrollingOffset(width_1 - x_1), 0);\n });\n changed = true;\n }\n\n if (y_1 <= SCROLL_EDGE) {\n this.dom.changeByFunc(null, function () {\n if (!_this.view.isAutoScrollLocked()) _this.scroll.offsetScroll(0, -_this.getScrollingOffset(y_1));\n });\n changed = true;\n } else if (height_1 - SCROLL_EDGE <= y_1) {\n this.dom.changeByFunc(null, function () {\n if (!_this.view.isAutoScrollLocked()) _this.scroll.offsetScroll(0, _this.getScrollingOffset(height_1 - y_1));\n });\n changed = true;\n }\n }\n\n if (changed || this.view.isAutoScrollLocked()) this.scrollTimer = window.setTimeout(function () {\n return _this.changeScrollPosition(evt, raiseMouseMoveFunc, changed);\n }, SCROLL_DELAY);\n if (raiseMouseMove) raiseMouseMoveFunc();\n };\n\n AutoScrollController.prototype.clearScrollTimer = function () {\n if (this.scrollTimer > -1) {\n window.clearTimeout(this.scrollTimer);\n this.scrollTimer = -1;\n }\n };\n\n AutoScrollController.prototype.getScrollingOffset = function (edgeOffset) {\n var offset = Math.pow((SCROLL_EDGE - edgeOffset) / SCROLL_RATIO, 2);\n return Math.round(Math.min(offset, SCROLL_MAXOFFSET));\n };\n\n AutoScrollController.createMainElement = function (parent) {\n var element = document.createElement(\"div\");\n element.setAttribute(\"class\", \"dxdi-control\");\n parent.appendChild(element);\n return element;\n };\n\n AutoScrollController.createSvgElement = function (parent, forExport) {\n if (forExport === void 0) {\n forExport = false;\n }\n\n var svgElement = document.createElementNS(RenderHelper_1.svgNS, \"svg\");\n svgElement.className.baseVal = \"dxdi-canvas\" + (forExport ? \" export\" : \"\");\n parent.appendChild(svgElement);\n return svgElement;\n };\n\n return AutoScrollController;\n }();\n\n exports.AutoScrollController = AutoScrollController;\n /***/\n },\n /* 345 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics233 = function extendStatics(d, b) {\n _extendStatics233 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics233(d, b);\n };\n\n return function (d, b) {\n _extendStatics233(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DocumentDataSource = exports.UpdateNodeKeyRelatedObjectsStackAction = exports.UpdateNodeKeyRelatedObjectsStackItem = void 0;\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var DataSource_1 = __webpack_require__(346);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var Data_1 = __webpack_require__(45);\n\n var Utils_1 = __webpack_require__(3);\n\n var list_1 = __webpack_require__(82);\n\n var string_1 = __webpack_require__(50);\n\n var math_1 = __webpack_require__(32);\n\n var UpdateNodeKeyRelatedObjectsStackItem =\n /** @class */\n function () {\n function UpdateNodeKeyRelatedObjectsStackItem(shape, nodeObj) {\n this.shape = shape;\n this.nodeObj = nodeObj;\n }\n\n return UpdateNodeKeyRelatedObjectsStackItem;\n }();\n\n exports.UpdateNodeKeyRelatedObjectsStackItem = UpdateNodeKeyRelatedObjectsStackItem;\n\n var UpdateNodeKeyRelatedObjectsStackAction =\n /** @class */\n function () {\n function UpdateNodeKeyRelatedObjectsStackAction(kind, nodeObj) {\n this.kind = kind;\n this.nodeObj = nodeObj;\n }\n\n return UpdateNodeKeyRelatedObjectsStackAction;\n }();\n\n exports.UpdateNodeKeyRelatedObjectsStackAction = UpdateNodeKeyRelatedObjectsStackAction;\n\n var DocumentDataSource =\n /** @class */\n function (_super) {\n __extends(DocumentDataSource, _super);\n\n function DocumentDataSource(changesListener, nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter) {\n var _this = _super.call(this, \"Document\", nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter) || this;\n\n _this.changesListener = changesListener;\n _this.nodeInsertingLockCount = 0;\n _this.updateNodeKeyRelatedObjectsCount = 0;\n _this.updateNodeKeyRelatedObjectsStack = [];\n _this.updateNodeKeyRelatedObjectsStackActions = [];\n return _this;\n }\n\n DocumentDataSource.prototype.updateItemsByModel = function (model) {\n var _this = this;\n\n this.beginChangesNotification();\n this.deleteNodes(model);\n this.deleteEdges(model);\n model.items.forEach(function (item) {\n if (item instanceof Shape_1.Shape) _this.updateNode(model, item);\n if (item instanceof Connector_1.Connector) _this.updateEdge(model, item);\n });\n this.endChangesNotification(false);\n };\n\n DocumentDataSource.prototype.isItemObjectModified = function (item, itemObj, importer) {\n var modified = importer.setLocked && itemObj.locked !== item.locked || importer.setZIndex && itemObj.zIndex !== item.zIndex || importer.setCustomData && !Utils_1.ObjectUtils.compareObjects(itemObj.customData, item.customData);\n\n if (!modified && importer.setStyle) {\n var defaultStyle_1 = item.style.getDefaultInstance();\n item.style.forEach(function (key) {\n if (item.style[key] !== defaultStyle_1[key] && item.style[key] !== (itemObj.style && itemObj.style[key])) modified = true;\n });\n }\n\n if (!modified && importer.setStyleText) {\n var defaultTextStyle_1 = item.styleText.getDefaultInstance();\n item.styleText.forEach(function (key) {\n if (item.styleText[key] !== defaultTextStyle_1[key] && item.styleText[key] !== (itemObj.styleText && itemObj.styleText[key])) modified = true;\n });\n }\n\n return modified;\n };\n\n DocumentDataSource.prototype.setDataObjectKeyRelatedProperty = function (method, dataObj, key, allowAutoGeneratedProperty) {\n if (allowAutoGeneratedProperty || this.autoGeneratedDataKeys[key] === undefined) method(dataObj, key);\n };\n\n DocumentDataSource.prototype.updateItemObjectProperties = function (itemObj, item, importer) {\n if (importer.setCustomData) {\n itemObj.customData = Utils_1.ObjectUtils.cloneObject(item.customData);\n if (itemObj.dataObj && itemObj.customData !== undefined) importer.setCustomData(itemObj.dataObj, item.customData);\n }\n\n if (importer.setLocked) {\n itemObj.locked = item.locked;\n if (itemObj.dataObj && itemObj.locked !== undefined) importer.setLocked(itemObj.dataObj, item.locked);\n }\n\n if (importer.setStyle) {\n var styleObj = item.style.toObject();\n itemObj.style = styleObj;\n if (itemObj.dataObj && itemObj.style !== undefined) importer.setStyle(itemObj.dataObj, Data_1.Data.objectToCssText(styleObj));\n }\n\n if (importer.setStyleText) {\n var styleTextObj = item.styleText.toObject();\n itemObj.styleText = styleTextObj;\n if (itemObj.dataObj && itemObj.styleText !== undefined) importer.setStyleText(itemObj.dataObj, Data_1.Data.objectToCssText(styleTextObj));\n }\n\n if (importer.setZIndex) {\n itemObj.zIndex = item.zIndex;\n if (itemObj.dataObj && itemObj.zIndex !== undefined) importer.setZIndex(itemObj.dataObj, item.zIndex);\n }\n };\n\n DocumentDataSource.prototype.deleteItems = function (dataSourceItems, findItem, getParentArray, callback) {\n var items = dataSourceItems.slice();\n items.forEach(function (item) {\n if (item.key !== undefined && item.key !== null && !findItem(item.key)) {\n var parentArray = getParentArray(item);\n var index = parentArray.indexOf(item.dataObj);\n parentArray.splice(index, 1);\n callback(item, index > -1);\n }\n });\n }; // Nodes\n\n\n DocumentDataSource.prototype.updateNode = function (model, shape) {\n var _this = this;\n\n var nodeObj = this.findNode(shape.dataKey);\n\n if (!nodeObj) {\n var dataObj = {};\n if (shape.dataKey !== undefined && shape.dataKey !== null) this.nodeDataImporter.setKey(dataObj, shape.dataKey);\n nodeObj = this.addNodeInternal(dataObj, shape.description.key, shape.text);\n this.nodeDataSource.push(nodeObj.dataObj);\n this.setDataObjectKeyRelatedProperty(this.nodeDataImporter.setKey, dataObj, nodeObj.key, this.addInternalKeyOnInsert);\n this.updateNodeObjectProperties(shape, nodeObj, model.units);\n this.updateNodeObjectConnectedProperties(shape, nodeObj);\n this.updateNodeObjectKey(shape, nodeObj, nodeObj.dataObj);\n this.beginChangesNotification();\n this.beginNodeInserting();\n this.changesListener.notifyNodeInserted.call(this.changesListener, nodeObj.dataObj, function (data) {\n _this.updateNodeObjectKey(shape, nodeObj, data);\n\n _this.endNodeInserting();\n\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endNodeInserting();\n\n _this.endChangesNotification(false);\n });\n } else if (this.isNodeObjectModified(shape, nodeObj, model.units)) {\n this.updateNodeObjectProperties(shape, nodeObj, model.units);\n this.updateNodeObjectConnectedProperties(shape, nodeObj);\n this.beginChangesNotification();\n this.changesListener.notifyNodeUpdated.call(this.changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj || nodeObj.key), nodeObj.dataObj, function (key, data) {\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endChangesNotification(false);\n });\n } else this.updateNodeObjectConnectedProperties(shape, nodeObj, this.changesListener);\n };\n\n DocumentDataSource.prototype.areImageUrlsEqual = function (url1, url2) {\n return url1 === url2 || string_1.StringUtils.isNullOrEmpty(url1) && string_1.StringUtils.isNullOrEmpty(url2);\n };\n\n DocumentDataSource.prototype.isNodeObjectModified = function (shape, nodeObj, units) {\n return this.isItemObjectModified(shape, nodeObj, this.nodeDataImporter) || nodeObj.type !== shape.description.key && !(nodeObj.type === undefined && shape.description.key === ShapeTypes_1.ShapeTypes.Rectangle) || !this.compareStrings(nodeObj.text, shape.text) || this.nodeDataImporter.setImage && !this.areImageUrlsEqual(nodeObj.image, shape.image.actualUrl) || this.nodeDataImporter.setLeft && !math_1.MathUtils.numberCloseTo(nodeObj.left, ModelUtils_1.ModelUtils.getlUnitValue(units, shape.position.x)) || this.nodeDataImporter.setTop && !math_1.MathUtils.numberCloseTo(nodeObj.top, ModelUtils_1.ModelUtils.getlUnitValue(units, shape.position.y)) || this.nodeDataImporter.setWidth && !math_1.MathUtils.numberCloseTo(nodeObj.width, ModelUtils_1.ModelUtils.getlUnitValue(units, shape.size.width)) || this.nodeDataImporter.setHeight && !math_1.MathUtils.numberCloseTo(nodeObj.height, ModelUtils_1.ModelUtils.getlUnitValue(units, shape.size.height));\n };\n\n DocumentDataSource.prototype.updateNodeObjectProperties = function (shape, nodeObj, units) {\n this.updateItemObjectProperties(nodeObj, shape, this.nodeDataImporter);\n\n if (this.nodeDataImporter.setType) {\n nodeObj.type = shape.description.key;\n this.nodeDataImporter.setType(nodeObj.dataObj, shape.description.key);\n }\n\n if (this.nodeDataImporter.setText) {\n nodeObj.text = shape.text;\n this.nodeDataImporter.setText(nodeObj.dataObj, shape.text);\n }\n\n if (this.nodeDataImporter.setImage) {\n nodeObj.image = shape.image.actualUrl;\n this.nodeDataImporter.setImage(nodeObj.dataObj, shape.image.actualUrl === undefined ? null : shape.image.actualUrl);\n }\n\n if (this.nodeDataImporter.setLeft) {\n var left = ModelUtils_1.ModelUtils.getlUnitValue(units, shape.position.x);\n nodeObj.left = left;\n this.nodeDataImporter.setLeft(nodeObj.dataObj, left);\n }\n\n if (this.nodeDataImporter.setTop) {\n var top_1 = ModelUtils_1.ModelUtils.getlUnitValue(units, shape.position.y);\n nodeObj.top = top_1;\n this.nodeDataImporter.setTop(nodeObj.dataObj, top_1);\n }\n\n if (this.nodeDataImporter.setWidth) {\n var width = ModelUtils_1.ModelUtils.getlUnitValue(units, shape.size.width);\n nodeObj.width = width;\n this.nodeDataImporter.setWidth(nodeObj.dataObj, width);\n }\n\n if (this.nodeDataImporter.setHeight) {\n var height = ModelUtils_1.ModelUtils.getlUnitValue(units, shape.size.height);\n nodeObj.height = height;\n this.nodeDataImporter.setHeight(nodeObj.dataObj, height);\n }\n };\n\n DocumentDataSource.prototype.updateNodeObjectConnectedProperties = function (shape, nodeObj, changesListener) {\n if (this.useNodeParentId && this.nodeDataImporter.setParentKey !== undefined) {\n var parentKey = this.getParentItemKey(shape);\n var parentItem = this.findNode(parentKey);\n this.updateNodeObjectParentKey(nodeObj, parentItem, changesListener);\n }\n\n if (this.useNodeContainerId && this.nodeDataImporter.setContainerKey !== undefined) {\n var containerKey = this.getContainerShapeKey(shape);\n var containerItem = this.findNode(containerKey);\n this.updateNodeObjectContainerKey(nodeObj, containerItem, changesListener);\n }\n\n if (this.useNodeItems && this.nodeDataImporter.setItems !== undefined) {\n var parentKey = this.getParentItemKey(shape);\n var parentItem = this.findNode(parentKey);\n this.updateNodeObjectItems(nodeObj, parentItem, changesListener);\n }\n\n if (this.useNodeChildren && this.nodeDataImporter.setChildren !== undefined) {\n var containerKey = this.getContainerShapeKey(shape);\n var containerItem = this.findNode(containerKey);\n this.updateNodeObjectChildren(nodeObj, containerItem, changesListener);\n }\n };\n\n DocumentDataSource.prototype.IsNodeParentIdMode = function () {\n return this.useNodeParentId && this.nodeDataImporter.setParentKey !== undefined;\n };\n\n DocumentDataSource.prototype.IsNodeItemsMode = function () {\n return this.useNodeItems && this.nodeDataImporter.setItems !== undefined;\n };\n\n DocumentDataSource.prototype.updateNodeObjectParentKey = function (nodeObj, parentNodeObj, changesListener) {\n var parentKey = this.nodeDataImporter.getParentKey(nodeObj.dataObj);\n var newParentKey = parentNodeObj ? this.nodeDataImporter.getKey(parentNodeObj.dataObj) : undefined;\n\n if (parentKey !== newParentKey && !(this.isRootParentKey(parentKey) && this.isRootParentKey(newParentKey))) {\n this.setDataObjectKeyRelatedProperty(this.nodeDataImporter.setParentKey, nodeObj.dataObj, newParentKey, false);\n if (changesListener) if (this.isInUpdateNodeKeyRelatedObjects()) this.addToUpdateNodeKeyRelatedObjectsStackAction(\"shape\", nodeObj);else this.updateNodeObjectContainerOrParentKeyInternal(nodeObj, changesListener);\n }\n };\n\n DocumentDataSource.prototype.updateNodeObjectParentKeyInternal = function (nodeObj, changesListener) {\n var _this = this;\n\n this.beginChangesNotification();\n changesListener.notifyNodeUpdated.call(changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj) || nodeObj.key, nodeObj.dataObj, function (key, data) {\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endChangesNotification(false);\n });\n };\n\n DocumentDataSource.prototype.updateNodeObjectContainerKey = function (nodeObj, containerNodeObj, changesListener) {\n var containerKey = this.nodeDataImporter.getContainerKey(nodeObj.dataObj);\n var newContainerKey = containerNodeObj ? this.nodeDataImporter.getKey(containerNodeObj.dataObj) : undefined;\n\n if (containerKey !== newContainerKey && !(this.isRootParentKey(containerKey) && this.isRootParentKey(newContainerKey))) {\n this.setDataObjectKeyRelatedProperty(this.nodeDataImporter.setContainerKey, nodeObj.dataObj, newContainerKey, false);\n if (changesListener) if (this.isInUpdateNodeKeyRelatedObjects()) this.addToUpdateNodeKeyRelatedObjectsStackAction(\"shape\", nodeObj);else this.updateNodeObjectContainerOrParentKeyInternal(nodeObj, changesListener);\n }\n };\n\n DocumentDataSource.prototype.updateNodeObjectContainerOrParentKeyInternal = function (nodeObj, changesListener) {\n var _this = this;\n\n this.beginChangesNotification();\n changesListener.notifyNodeUpdated.call(changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj) || nodeObj.key, nodeObj.dataObj, function (key, data) {\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endChangesNotification(false);\n });\n };\n\n DocumentDataSource.prototype.isRootParentKey = function (key) {\n return key === undefined || key === null || !this.findNode(key);\n };\n\n DocumentDataSource.prototype.updateNodeObjectItems = function (nodeObj, parentNodeObj, changesListener) {\n var _this = this;\n\n if (parentNodeObj && nodeObj.parentDataObj !== parentNodeObj.dataObj || !parentNodeObj && nodeObj.parentDataObj) if (!parentNodeObj || !this.checkNodeCyrcleItems(nodeObj.dataObj, parentNodeObj.dataObj)) {\n var oldItemsArray = nodeObj.parentDataObj ? this.nodeDataImporter.getItems(nodeObj.parentDataObj) : this.nodeDataSource;\n var index = oldItemsArray.indexOf(nodeObj.dataObj);\n oldItemsArray.splice(index, 1);\n var itemsArray = parentNodeObj ? this.nodeDataImporter.getItems(parentNodeObj.dataObj) : this.nodeDataSource;\n if (!itemsArray) this.nodeDataImporter.setItems(parentNodeObj.dataObj, [nodeObj.dataObj]);else itemsArray.push(nodeObj.dataObj);\n nodeObj.parentDataObj = parentNodeObj && parentNodeObj.dataObj;\n\n if (changesListener) {\n this.beginChangesNotification();\n changesListener.notifyNodeUpdated.call(changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj) || nodeObj.key, nodeObj.dataObj, function (key, data) {\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endChangesNotification(false);\n });\n }\n }\n };\n\n DocumentDataSource.prototype.updateNodeObjectChildren = function (nodeObj, containerNodeObj, changesListener) {\n var _this = this;\n\n if (containerNodeObj && nodeObj.containerDataObj !== containerNodeObj.dataObj || !containerNodeObj && nodeObj.containerDataObj) {\n var oldChildrenArray = nodeObj.containerDataObj ? this.nodeDataImporter.getChildren(nodeObj.containerDataObj) : this.nodeDataSource;\n var index = oldChildrenArray.indexOf(nodeObj.dataObj);\n oldChildrenArray.splice(index, 1);\n var childrenArray = containerNodeObj ? this.nodeDataImporter.getChildren(containerNodeObj.dataObj) : this.nodeDataSource;\n if (!childrenArray) this.nodeDataImporter.setChildren(containerNodeObj.dataObj, [nodeObj.dataObj]);else childrenArray.push(nodeObj.dataObj);\n nodeObj.containerDataObj = containerNodeObj && containerNodeObj.dataObj;\n\n if (changesListener) {\n this.beginChangesNotification();\n changesListener.notifyNodeUpdated.call(changesListener, this.nodeDataImporter.getKey(nodeObj.dataObj) || nodeObj.key, nodeObj.dataObj, function (key, data) {\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endChangesNotification(false);\n });\n }\n }\n };\n\n DocumentDataSource.prototype.checkNodeCyrcleItems = function (nodeDataObj, parentDataObjCandidate) {\n var _this = this;\n\n var result = false;\n var items = this.nodeDataImporter.getItems(nodeDataObj);\n if (items) items.forEach(function (childDataObj) {\n result = result || childDataObj === parentDataObjCandidate || _this.checkNodeCyrcleItems(childDataObj, parentDataObjCandidate);\n });\n return result;\n };\n\n DocumentDataSource.prototype.updateNodeObjectKey = function (shape, nodeObj, dataObj) {\n var key = this.nodeDataImporter.getKey(dataObj);\n var dataKeyChanged = false;\n\n if (key !== undefined && key !== null && key !== nodeObj.key) {\n delete this.autoGeneratedDataKeys[nodeObj.key];\n nodeObj.key = key;\n dataKeyChanged = true;\n }\n\n shape.dataKey = nodeObj.key;\n\n if (nodeObj.dataObj !== dataObj) {\n var parentArray = this.getNodeArray(nodeObj);\n var index = parentArray.indexOf(nodeObj.dataObj);\n parentArray.splice(index, 1, dataObj);\n nodeObj.dataObj = dataObj;\n }\n\n if (dataKeyChanged) this.updateNodeKeyRelatedObjects(shape, nodeObj);\n };\n\n DocumentDataSource.prototype.updateNodeKeyRelatedObjects = function (shape, nodeObj) {\n var _this = this;\n\n if (this.isInNodeInserting()) {\n this.addToUpdateNodeKeyRelatedObjectsStack(shape, nodeObj);\n return;\n }\n\n if (this.useNodeParentId && this.nodeDataImporter.setParentKey !== undefined) {\n var childItems = this.getChildItems(shape);\n childItems.forEach(function (item) {\n var childNodeObj = _this.findNode(item.dataKey);\n\n if (childNodeObj) _this.updateNodeObjectParentKey(childNodeObj, nodeObj, _this.changesListener);\n });\n }\n\n if (this.useNodeContainerId && this.nodeDataImporter.setContainerKey !== undefined) shape.children.forEach(function (item) {\n var childNodeObj = item instanceof Shape_1.Shape ? _this.findNode(item.dataKey) : undefined;\n if (childNodeObj) _this.updateNodeObjectContainerKey(childNodeObj, nodeObj, _this.changesListener);\n });\n if (this.useEdgesArray()) shape.attachedConnectors.forEach(function (connector) {\n var edgeObj = _this.findEdge(connector.dataKey);\n\n if (edgeObj) {\n if (shape === connector.beginItem) _this.updateEdgeObjectFromProperty(nodeObj, edgeObj, _this.changesListener);\n if (shape === connector.endItem) _this.updateEdgeObjectToProperty(nodeObj, edgeObj, _this.changesListener);\n }\n });\n };\n\n DocumentDataSource.prototype.deleteNodes = function (model) {\n var _this = this;\n\n this.deleteItems(this.nodes, function (key) {\n return model.findShapeByDataKey(key);\n }, function (item) {\n return _this.getNodeArray(item);\n }, function (item, dataModified) {\n var key = item.dataObj && _this.nodeDataImporter.getKey(item.dataObj) || item.key;\n\n var nodeObj = _this.findNode(key);\n\n if (nodeObj) _this.nodes.splice(_this.nodes.indexOf(nodeObj), 1);\n\n if (dataModified) {\n _this.beginChangesNotification();\n\n _this.changesListener.notifyNodeRemoved.call(_this.changesListener, key, item.dataObj, function (key, data) {\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endChangesNotification(false);\n });\n }\n });\n };\n\n DocumentDataSource.prototype.getParentItem = function (shape) {\n for (var i = 0; i < shape.attachedConnectors.length; i++) {\n if (shape.attachedConnectors[i].endItem === shape) return shape.attachedConnectors[i].beginItem;\n }\n };\n\n DocumentDataSource.prototype.getParentItemKey = function (shape) {\n var parent = this.getParentItem(shape);\n return parent && parent.dataKey;\n };\n\n DocumentDataSource.prototype.getNodeArray = function (item) {\n var items;\n if (this.useNodeItems && item.parentDataObj) items = this.nodeDataImporter.getItems(item.parentDataObj);else if (item.containerDataObj) items = this.nodeDataImporter.getChildren(item.containerDataObj);\n return items || this.nodeDataSource;\n };\n\n DocumentDataSource.prototype.getContainerShapeKey = function (shape) {\n return shape.container && shape.container.dataKey;\n };\n\n DocumentDataSource.prototype.getChildItems = function (shape) {\n var items = [];\n\n for (var i = 0; i < shape.attachedConnectors.length; i++) {\n if (shape.attachedConnectors[i].beginItem === shape) if (shape.attachedConnectors[i].endItem) items.push(shape.attachedConnectors[i].endItem);\n }\n\n return items;\n }; // Edges\n\n\n DocumentDataSource.prototype.updateEdge = function (model, connector) {\n var _this = this;\n\n var beginDataKey = connector.beginItem ? connector.beginItem.dataKey : undefined;\n var endDataKey = connector.endItem ? connector.endItem.dataKey : undefined;\n var edgeObj = this.findEdge(connector.dataKey);\n\n if (!edgeObj) {\n var dataObj = this.useEdgesArray() && this.canUpdateEdgeDataSource ? {} : undefined;\n if (dataObj && connector.dataKey !== undefined && connector.dataKey !== null) this.edgeDataImporter.setKey(dataObj, connector.dataKey);\n edgeObj = this.addEdgeInternal(dataObj, beginDataKey, endDataKey);\n\n if (dataObj) {\n this.setDataObjectKeyRelatedProperty(this.edgeDataImporter.setKey, dataObj, edgeObj.key, this.addInternalKeyOnInsert);\n this.edgeDataSource.push(edgeObj.dataObj);\n }\n\n this.updateEdgeObjectProperties(connector, edgeObj, model.units);\n this.updateEdgeObjectKey(connector, edgeObj, edgeObj.dataObj);\n\n if (dataObj) {\n this.beginChangesNotification();\n this.beginNodeInserting();\n this.changesListener.notifyEdgeInserted.call(this.changesListener, edgeObj.dataObj, function (data) {\n _this.updateEdgeObjectKey(connector, edgeObj, data);\n\n _this.endNodeInserting();\n\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endNodeInserting();\n\n _this.endChangesNotification(false);\n });\n }\n } else if (this.isEdgeObjectModified(connector, edgeObj, model.units)) {\n this.updateEdgeObjectProperties(connector, edgeObj, model.units);\n\n if (edgeObj.dataObj) {\n this.beginChangesNotification();\n this.changesListener.notifyEdgeUpdated.call(this.changesListener, this.edgeDataImporter.getKey(edgeObj.dataObj) || edgeObj.key, edgeObj.dataObj, function (key, data) {\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endChangesNotification(false);\n });\n }\n }\n };\n\n DocumentDataSource.prototype.isEdgeObjectModified = function (connector, edgeObj, units) {\n return this.isItemObjectModified(connector, edgeObj, this.edgeDataImporter) || (edgeObj.from !== null ? edgeObj.from : undefined) !== (connector.beginItem ? connector.beginItem.dataKey : undefined) || (edgeObj.to === null ? undefined : edgeObj.to) !== (connector.endItem ? connector.endItem.dataKey : undefined) || this.edgeDataImporter.setFromPointIndex && edgeObj.fromPointIndex !== connector.beginConnectionPointIndex || this.edgeDataImporter.setToPointIndex && edgeObj.toPointIndex !== connector.endConnectionPointIndex || this.edgeDataImporter.setPoints && (!edgeObj.points || !list_1.ListUtils.equalsByReference(edgeObj.points.map(function (ptObj) {\n return ptObj.x;\n }), connector.points.map(function (pt) {\n return ModelUtils_1.ModelUtils.getlUnitValue(units, pt.x);\n })) || !list_1.ListUtils.equalsByReference(edgeObj.points.map(function (ptObj) {\n return ptObj.y;\n }), connector.points.map(function (pt) {\n return ModelUtils_1.ModelUtils.getlUnitValue(units, pt.y);\n }))) || this.edgeDataImporter.setText && !this.compareTexts(edgeObj, connector) || this.edgeDataImporter.setLineOption && edgeObj.lineOption !== connector.properties.lineOption || this.edgeDataImporter.setStartLineEnding && edgeObj.startLineEnding !== connector.properties.startLineEnding || this.edgeDataImporter.setEndLineEnding && edgeObj.endLineEnding !== connector.properties.endLineEnding;\n };\n\n DocumentDataSource.prototype.updateEdgeObjectFromProperty = function (fromObj, edgeObj, changesListener) {\n edgeObj.from = fromObj && fromObj.key;\n\n if (edgeObj.dataObj) {\n var fromKey = fromObj && fromObj.dataObj && this.nodeDataImporter.getKey(fromObj.dataObj);\n this.setDataObjectKeyRelatedProperty(this.edgeDataImporter.setFrom, edgeObj.dataObj, fromKey, false);\n if (changesListener) if (this.isInUpdateNodeKeyRelatedObjects()) this.addToUpdateNodeKeyRelatedObjectsStackAction(\"edge\", edgeObj);else this.updateEdgeObjectFromOrToPropertyInternal(edgeObj, changesListener);\n }\n };\n\n DocumentDataSource.prototype.updateEdgeObjectFromOrToPropertyInternal = function (edgeObj, changesListener) {\n var _this = this;\n\n this.beginChangesNotification();\n changesListener.notifyEdgeUpdated.call(changesListener, this.nodeDataImporter.getKey(edgeObj.dataObj) || edgeObj.key, edgeObj.dataObj, function (key, data) {\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endChangesNotification(false);\n });\n };\n\n DocumentDataSource.prototype.updateEdgeObjectToProperty = function (toObj, edgeObj, changesListener) {\n edgeObj.to = toObj && toObj.key;\n\n if (edgeObj.dataObj) {\n var toKey = toObj && toObj.dataObj && this.nodeDataImporter.getKey(toObj.dataObj);\n this.setDataObjectKeyRelatedProperty(this.edgeDataImporter.setTo, edgeObj.dataObj, toKey, false);\n if (changesListener) if (this.isInUpdateNodeKeyRelatedObjects()) this.addToUpdateNodeKeyRelatedObjectsStackAction(\"edge\", edgeObj);else this.updateEdgeObjectFromOrToPropertyInternal(edgeObj, changesListener);\n }\n };\n\n DocumentDataSource.prototype.updateEdgeObjectProperties = function (connector, edgeObj, units) {\n this.updateItemObjectProperties(edgeObj, connector, this.edgeDataImporter);\n\n if (this.edgeDataImporter.setFrom) {\n var fromObj = this.findNode(connector.beginItem && connector.beginItem.dataKey);\n this.updateEdgeObjectFromProperty(fromObj, edgeObj);\n }\n\n if (this.edgeDataImporter.setTo) {\n var toObj = this.findNode(connector.endItem && connector.endItem.dataKey);\n this.updateEdgeObjectToProperty(toObj, edgeObj);\n }\n\n if (this.edgeDataImporter.setFromPointIndex) {\n edgeObj.fromPointIndex = connector.beginConnectionPointIndex;\n if (edgeObj.dataObj) this.edgeDataImporter.setFromPointIndex(edgeObj.dataObj, connector.beginConnectionPointIndex);\n }\n\n if (this.edgeDataImporter.setToPointIndex) {\n edgeObj.toPointIndex = connector.endConnectionPointIndex;\n if (edgeObj.dataObj) this.edgeDataImporter.setToPointIndex(edgeObj.dataObj, connector.endConnectionPointIndex);\n }\n\n if (this.edgeDataImporter.setPoints) {\n var points = connector.points.map(function (pt) {\n return {\n x: ModelUtils_1.ModelUtils.getlUnitValue(units, pt.x),\n y: ModelUtils_1.ModelUtils.getlUnitValue(units, pt.y)\n };\n });\n edgeObj.points = points;\n if (edgeObj.dataObj) this.edgeDataImporter.setPoints(edgeObj.dataObj, points);\n }\n\n if (this.edgeDataImporter.setText) {\n var text = void 0;\n if (connector.getTextCount() === 1 && connector.getText()) text = connector.getText();\n var texts_1 = {};\n connector.texts.forEach(function (text) {\n texts_1[text.position] = text.value;\n });\n edgeObj.texts = texts_1;\n\n if (edgeObj.dataObj) {\n var textVal = \"\";\n if (text) textVal = text;else if (texts_1 && Object.keys(texts_1).length) textVal = texts_1;\n this.edgeDataImporter.setText(edgeObj.dataObj, textVal);\n }\n }\n\n if (this.edgeDataImporter.setLineOption) {\n edgeObj.lineOption = connector.properties.lineOption;\n if (edgeObj.dataObj) this.edgeDataImporter.setLineOption(edgeObj.dataObj, connector.properties.lineOption);\n }\n\n if (this.edgeDataImporter.setStartLineEnding) {\n edgeObj.startLineEnding = connector.properties.startLineEnding;\n if (edgeObj.dataObj) this.edgeDataImporter.setStartLineEnding(edgeObj.dataObj, connector.properties.startLineEnding);\n }\n\n if (this.edgeDataImporter.setEndLineEnding) {\n edgeObj.endLineEnding = connector.properties.endLineEnding;\n if (edgeObj.dataObj) this.edgeDataImporter.setEndLineEnding(edgeObj.dataObj, connector.properties.endLineEnding);\n }\n };\n\n DocumentDataSource.prototype.updateEdgeObjectKey = function (connector, edgeObj, dataObj) {\n var key = dataObj && this.edgeDataImporter.getKey(dataObj);\n\n if (key !== undefined && key !== null && key !== edgeObj.key) {\n delete this.autoGeneratedDataKeys[edgeObj.key];\n edgeObj.key = key;\n }\n\n connector.dataKey = edgeObj.key;\n\n if (edgeObj.dataObj !== dataObj) {\n var parentArray = this.edgeDataSource;\n var index = parentArray.indexOf(edgeObj.dataObj);\n parentArray.splice(index, 1, dataObj);\n edgeObj.dataObj = dataObj;\n }\n };\n\n DocumentDataSource.prototype.deleteEdges = function (model) {\n var _this = this;\n\n this.deleteItems(this.edges, function (key) {\n return model.findConnectorByDataKey(key);\n }, function (item) {\n return _this.edgeDataSource;\n }, function (item, dataModified) {\n var key = item.dataObj && _this.edgeDataImporter.getKey(item.dataObj) || item.key;\n\n var edgeObj = _this.findEdge(key);\n\n if (edgeObj) _this.edges.splice(_this.edges.indexOf(edgeObj), 1);\n\n if (dataModified) {\n _this.beginChangesNotification();\n\n _this.changesListener.notifyEdgeRemoved.call(_this.changesListener, key, item.dataObj, function (key, data) {\n _this.endChangesNotification(false);\n }, function (error) {\n _this.endChangesNotification(false);\n });\n }\n });\n };\n\n DocumentDataSource.prototype.beginNodeInserting = function () {\n this.nodeInsertingLockCount++;\n };\n\n DocumentDataSource.prototype.endNodeInserting = function () {\n this.nodeInsertingLockCount--;\n if (this.nodeInsertingLockCount === 0) this.raiseNodeInsertingStack();\n };\n\n DocumentDataSource.prototype.isInNodeInserting = function () {\n return this.nodeInsertingLockCount > 0;\n };\n\n DocumentDataSource.prototype.addToUpdateNodeKeyRelatedObjectsStack = function (shape, nodeObj) {\n var item = new UpdateNodeKeyRelatedObjectsStackItem(shape, nodeObj);\n this.updateNodeKeyRelatedObjectsStack.push(item);\n };\n\n DocumentDataSource.prototype.raiseNodeInsertingStack = function () {\n this.beginUpdateNodeKeyRelatedObjects();\n\n while (this.updateNodeKeyRelatedObjectsStack.length > 0) {\n var item = this.updateNodeKeyRelatedObjectsStack[0];\n this.updateNodeKeyRelatedObjects(item.shape, item.nodeObj);\n this.updateNodeKeyRelatedObjectsStack.splice(0, 1);\n if (item.shape.description.hasTemplate && item.nodeObj) this.changesListener.reloadInsertedItem(item.nodeObj.key);\n }\n\n this.endUpdateNodeKeyRelatedObjects();\n };\n\n DocumentDataSource.prototype.beginUpdateNodeKeyRelatedObjects = function () {\n this.updateNodeKeyRelatedObjectsCount++;\n };\n\n DocumentDataSource.prototype.endUpdateNodeKeyRelatedObjects = function () {\n this.updateNodeKeyRelatedObjectsCount--;\n if (this.updateNodeKeyRelatedObjectsCount === 0) this.raiseUpdateNodeKeyRelatedObjectsStack();\n };\n\n DocumentDataSource.prototype.isInUpdateNodeKeyRelatedObjects = function () {\n return this.updateNodeKeyRelatedObjectsCount > 0;\n };\n\n DocumentDataSource.prototype.addToUpdateNodeKeyRelatedObjectsStackAction = function (kind, nodeObj) {\n var item = new UpdateNodeKeyRelatedObjectsStackAction(kind, nodeObj);\n\n for (var i = 0; i < this.updateNodeKeyRelatedObjectsStackActions.length; i++) {\n if (this.updateNodeKeyRelatedObjectsStackActions[i].kind === kind && this.updateNodeKeyRelatedObjectsStackActions[i].nodeObj === nodeObj) return;\n }\n\n this.updateNodeKeyRelatedObjectsStackActions.push(item);\n };\n\n DocumentDataSource.prototype.raiseUpdateNodeKeyRelatedObjectsStack = function () {\n while (this.updateNodeKeyRelatedObjectsStackActions.length > 0) {\n var item = this.updateNodeKeyRelatedObjectsStackActions[0];\n\n switch (item.kind) {\n case \"shape\":\n this.updateNodeObjectContainerOrParentKeyInternal(item.nodeObj, this.changesListener);\n break;\n\n case \"edge\":\n this.updateEdgeObjectFromOrToPropertyInternal(item.nodeObj, this.changesListener);\n break;\n }\n\n this.updateNodeKeyRelatedObjectsStackActions.splice(0, 1);\n }\n };\n\n DocumentDataSource.prototype.beginChangesNotification = function () {\n this.changesListener.beginChangesNotification();\n };\n\n DocumentDataSource.prototype.endChangesNotification = function (preventNotifyChanges) {\n this.changesListener.endChangesNotification(preventNotifyChanges);\n };\n\n return DocumentDataSource;\n }(DataSource_1.DataSource);\n\n exports.DocumentDataSource = DocumentDataSource;\n /***/\n },\n /* 346 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DataSource = void 0;\n\n var unit_converter_1 = __webpack_require__(11);\n\n var point_1 = __webpack_require__(1);\n\n var size_1 = __webpack_require__(2);\n\n var AddConnectionHistoryItem_1 = __webpack_require__(49);\n\n var AddConnectorHistoryItem_1 = __webpack_require__(64);\n\n var AddShapeHistoryItem_1 = __webpack_require__(53);\n\n var DeleteConnectionHistoryItem_1 = __webpack_require__(65);\n\n var ResizeShapeHistoryItem_1 = __webpack_require__(117);\n\n var ChangeConnectorPropertyHistoryItem_1 = __webpack_require__(88);\n\n var ChangeConnectorTextHistoryItem_1 = __webpack_require__(67);\n\n var ChangeCustomDataHistoryItem_1 = __webpack_require__(347);\n\n var ChangeLockedHistoryItem_1 = __webpack_require__(118);\n\n var ChangeShapeImageHistoryItem_1 = __webpack_require__(147);\n\n var ChangeShapeTextHistoryItem_1 = __webpack_require__(154);\n\n var ChangeZindexHistoryItem_1 = __webpack_require__(102);\n\n var ChangeStyleHistoryItem_1 = __webpack_require__(89);\n\n var ChangeStyleTextHistoryItem_1 = __webpack_require__(68);\n\n var Connector_1 = __webpack_require__(6);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var ShapeTypes_1 = __webpack_require__(0);\n\n var ITextMeasurer_1 = __webpack_require__(44);\n\n var Utils_1 = __webpack_require__(3);\n\n var color_1 = __webpack_require__(22);\n\n var Data_1 = __webpack_require__(45);\n\n var Svg_1 = __webpack_require__(112);\n\n var TextUtils_1 = __webpack_require__(63);\n\n var DataImporter_1 = __webpack_require__(348);\n\n var DataSourceItems_1 = __webpack_require__(349);\n\n var ChangeConnectorPointsHistoryItem_1 = __webpack_require__(86);\n\n var DataSource =\n /** @class */\n function () {\n function DataSource(key, nodeDataSource, edgeDataSource, parameters, nodeDataImporter, edgeDataImporter) {\n this.key = key;\n this.nodes = [];\n this.edges = [];\n this.autoGeneratedDataKeys = {};\n this.addInternalKeyOnInsert = false;\n this.useNodeParentId = false;\n this.useNodeContainerId = false;\n this.useNodeChildren = false;\n this.useNodeItems = false;\n this.canUseAutoSize = false;\n this.canUpdateEdgeDataSource = false;\n this.containers = null;\n if (key === undefined || key === null) throw new Error(\"DataSource key must be specified\");\n this.key = key.toString();\n this.loadParameters(parameters || {});\n this.nodeDataImporter = this.createNodeDataImporter(nodeDataImporter);\n this.edgeDataImporter = this.createEdgeDataImporter(edgeDataImporter);\n this.nodeDataSource = nodeDataSource || [];\n this.edgeDataSource = edgeDataSource || [];\n this.canUpdateEdgeDataSource = !!edgeDataSource;\n this.fetchData();\n }\n\n DataSource.prototype.loadParameters = function (parameters) {\n this.addInternalKeyOnInsert = !!parameters.addInternalKeyOnInsert;\n };\n\n DataSource.prototype.isAutoGeneratedKey = function (dataKey) {\n return dataKey && !!this.autoGeneratedDataKeys[dataKey];\n };\n\n DataSource.prototype.createNodeDataImporter = function (source) {\n var result = new DataImporter_1.DataSourceNodeDataImporter();\n if (source) this.assignNodeDataImporterProperties(source, result);\n return result;\n };\n\n DataSource.prototype.createEdgeDataImporter = function (source) {\n var result = new DataImporter_1.DataSourceEdgeDataImporter();\n if (source) this.assignEdgeDataImporterProperties(source, result);\n return result;\n };\n\n DataSource.prototype.assignItemDataImporterProperties = function (source, importer) {\n if (source.getKey) importer.getKey = source.getKey;\n if (source.setKey) importer.setKey = source.setKey;\n if (source.getCustomData) importer.getCustomData = source.getCustomData;\n if (source.setCustomData) importer.setCustomData = source.setCustomData;\n if (source.getLocked) importer.getLocked = source.getLocked;\n if (source.setLocked) importer.setLocked = source.setLocked;\n if (source.getStyle) importer.getStyle = source.getStyle;\n if (source.setStyle) importer.setStyle = source.setStyle;\n if (source.getStyleText) importer.getStyleText = source.getStyleText;\n if (source.setStyleText) importer.setStyleText = source.setStyleText;\n if (source.getZIndex) importer.getZIndex = source.getZIndex;\n if (source.setZIndex) importer.setZIndex = source.setZIndex;\n };\n\n DataSource.prototype.assignNodeDataImporterProperties = function (source, importer) {\n this.assignItemDataImporterProperties(source, importer);\n if (source.getType) importer.getType = source.getType;\n if (source.setType) importer.setType = source.setType;\n if (source.getImage) importer.getImage = source.getImage;\n if (source.setImage) importer.setImage = source.setImage;\n if (source.getText) importer.getText = source.getText;\n if (source.setText) importer.setText = source.setText;\n if (source.getLeft) importer.getLeft = source.getLeft;\n if (source.setLeft) importer.setLeft = source.setLeft;\n if (source.getTop) importer.getTop = source.getTop;\n if (source.setTop) importer.setTop = source.setTop;\n if (source.getWidth) importer.getWidth = source.getWidth;\n if (source.setWidth) importer.setWidth = source.setWidth;\n if (source.getHeight) importer.getHeight = source.getHeight;\n if (source.setHeight) importer.setHeight = source.setHeight;\n if (source.getChildren) importer.getChildren = source.getChildren;\n if (source.setChildren) importer.setChildren = source.setChildren;\n if (source.getParentKey) importer.getParentKey = source.getParentKey;\n if (source.setParentKey) importer.setParentKey = source.setParentKey;\n if (source.getItems) importer.getItems = source.getItems;\n if (source.setItems) importer.setItems = source.setItems;\n if (source.getContainerKey) importer.getContainerKey = source.getContainerKey;\n if (source.setContainerKey) importer.setContainerKey = source.setContainerKey;\n };\n\n DataSource.prototype.assignEdgeDataImporterProperties = function (source, importer) {\n this.assignItemDataImporterProperties(source, importer);\n if (source.getFrom) importer.getFrom = source.getFrom;\n if (source.setFrom) importer.setFrom = source.setFrom;\n if (source.getFromPointIndex) importer.getFromPointIndex = source.getFromPointIndex;\n if (source.setFromPointIndex) importer.setFromPointIndex = source.setFromPointIndex;\n if (source.getTo) importer.getTo = source.getTo;\n if (source.setTo) importer.setTo = source.setTo;\n if (source.getToPointIndex) importer.getToPointIndex = source.getToPointIndex;\n if (source.setToPointIndex) importer.setToPointIndex = source.setToPointIndex;\n if (source.getPoints) importer.getPoints = source.getPoints;\n if (source.setPoints) importer.setPoints = source.setPoints;\n if (source.getText) importer.getText = source.getText;\n if (source.setText) importer.setText = source.setText;\n if (source.getLineOption) importer.getLineOption = source.getLineOption;\n if (source.setLineOption) importer.setLineOption = source.setLineOption;\n if (source.getStartLineEnding) importer.getStartLineEnding = source.getStartLineEnding;\n if (source.setStartLineEnding) importer.setStartLineEnding = source.setStartLineEnding;\n if (source.getEndLineEnding) importer.getEndLineEnding = source.getEndLineEnding;\n if (source.setEndLineEnding) importer.setEndLineEnding = source.setEndLineEnding;\n };\n\n DataSource.prototype.fetchData = function () {\n var _this = this;\n\n this.nodes = [];\n this.edges = [];\n this.autoGeneratedDataKeys = {};\n this.useNodeParentId = this.nodeDataImporter.getParentKey !== undefined;\n this.useNodeContainerId = this.nodeDataImporter.getContainerKey !== undefined;\n this.useNodeItems = this.nodeDataImporter.getItems !== undefined;\n this.useNodeChildren = this.nodeDataImporter.getChildren !== undefined;\n this.canUseAutoSize = this.nodeDataImporter.getWidth === undefined && this.nodeDataImporter.getText !== undefined;\n if (this.useEdgesArray() && this.useNodeParentId) throw new Error(\"You cannot use edges array and parentKey simultaneously.\");\n if (this.useEdgesArray() && this.useNodeItems) throw new Error(\"You cannot use edges array and items array simultaneously.\");\n if (this.useNodeParentId && this.useNodeItems) throw new Error(\"You cannot use parentKey and items array simultaneously.\");\n if (this.useNodeContainerId && this.useNodeChildren) throw new Error(\"You cannot use containerKey and children array simultaneously.\");\n this.nodeDataSource.forEach(function (nodeDataObj) {\n _this.addNode(nodeDataObj);\n });\n if (this.useEdgesArray()) this.edgeDataSource.forEach(function (edgeDataObj) {\n _this.addEdge(edgeDataObj);\n });else this.nodes.forEach(function (node) {\n _this.addNodeEdgesByParentId(node);\n });\n };\n\n DataSource.prototype.isContainer = function (itemKey) {\n var _this = this;\n\n if (!this.containers && this.useNodeContainerId) this.containers = this.nodeDataSource.map(function (i) {\n return _this.nodeDataImporter.getContainerKey(i);\n }).filter(function (i) {\n return i !== undefined && i !== null;\n }).reduce(function (map, i) {\n map[i] = true;\n return map;\n }, {});\n return this.containers && this.containers[itemKey];\n };\n\n DataSource.prototype.refetchData = function (nodeDataSource, edgeDataSource) {\n var _this = this;\n\n this.nodeDataSource = nodeDataSource || this.nodeDataSource;\n this.edgeDataSource = edgeDataSource || this.edgeDataSource;\n var oldNodes = this.nodes.slice();\n var oldEdges = this.edges.slice();\n this.fetchData();\n var changedNodes = this.getItemChanges(oldNodes, this.nodes, function (item1, item2) {\n return item1.key === item2.key || item1.dataObj === item2.dataObj;\n });\n var changedEdges = this.getItemChanges(oldEdges, this.edges, function (item1, item2) {\n if (_this.useNodeParentId || _this.useNodeItems) return item1.key === item2.key || item1.from === item2.from && item1.to === item2.to;\n return item1.key === item2.key || item1.dataObj === item2.dataObj;\n });\n return {\n nodes: changedNodes,\n edges: changedEdges\n };\n };\n\n DataSource.prototype.getItemChanges = function (oldItems, newItems, areEqual) {\n var _this = this;\n\n var remainedItems = oldItems.filter(function (item) {\n return _this.containsItem(newItems, item, areEqual);\n });\n var remainedNewItems = newItems.filter(function (item) {\n return _this.containsItem(oldItems, item, areEqual);\n });\n var removedItems = oldItems.filter(function (item) {\n return !_this.containsItem(newItems, item, areEqual);\n });\n var addedItems = newItems.filter(function (item) {\n return !_this.containsItem(oldItems, item, areEqual);\n });\n return {\n remained: remainedItems.map(function (item) {\n return item.key;\n }),\n remainedNew: remainedNewItems.map(function (item) {\n return item.key;\n }),\n removed: removedItems.map(function (item) {\n return item.key;\n }),\n added: addedItems.map(function (item) {\n return item.key;\n })\n };\n };\n\n DataSource.prototype.containsItem = function (items, item, areEqual) {\n var result = false;\n items.forEach(function (i) {\n if (!result && areEqual(i, item)) result = true;\n });\n return result;\n };\n\n DataSource.prototype.useEdgesArray = function () {\n return Array.isArray(this.edgeDataSource) && (this.edgeDataSource.length || !(this.useNodeParentId || this.useNodeItems));\n };\n\n DataSource.prototype.addNode = function (nodeDataObj, parentNodeDataObj, containerKey, containerNodeDataObj) {\n var _this = this;\n\n var childNodeDataObjs = this.nodeDataImporter.getChildren && this.nodeDataImporter.getChildren(nodeDataObj);\n var hasChildren = childNodeDataObjs && Array.isArray(childNodeDataObjs) && childNodeDataObjs.length;\n var isContainer = hasChildren || this.isContainer(this.nodeDataImporter.getKey(nodeDataObj));\n var type = this.nodeDataImporter.getType && this.nodeDataImporter.getType(nodeDataObj) || isContainer && ShapeTypes_1.ShapeTypes.VerticalContainer || ShapeTypes_1.ShapeTypes.Rectangle;\n var text = this.nodeDataImporter.getText && (this.nodeDataImporter.getText(nodeDataObj) || \"\");\n var node = this.addNodeInternal(nodeDataObj, type, text, parentNodeDataObj, containerKey, containerNodeDataObj);\n this.assignNodeProperties(node, nodeDataObj);\n if (hasChildren) childNodeDataObjs.forEach(function (childNodeDataObj) {\n _this.addNode(childNodeDataObj, undefined, node.key, nodeDataObj);\n });\n\n if (this.useNodeItems) {\n var itemDataObjs = this.nodeDataImporter.getItems(nodeDataObj);\n if (Array.isArray(itemDataObjs) && itemDataObjs.length) itemDataObjs.forEach(function (itemDataObj) {\n var itemNode = _this.addNode(itemDataObj, nodeDataObj, containerKey, containerNodeDataObj);\n\n _this.addEdgeInternal(undefined, node.key, itemNode.key);\n });\n }\n\n return node;\n };\n\n DataSource.prototype.addNodeEdgesByParentId = function (node) {\n if (this.useNodeParentId) {\n var parentKey = this.nodeDataImporter.getParentKey(node.dataObj);\n\n if (parentKey !== undefined && parentKey !== null) {\n var parentNode = this.findNode(parentKey);\n if (parentNode) this.addEdgeInternal(undefined, this.getNodeKey(node.dataObj, this.nodeDataImporter.getParentKey), this.getNodeKey(node.dataObj, this.nodeDataImporter.getKey));\n }\n }\n };\n\n DataSource.prototype.addNodeInternal = function (nodeDataObj, type, text, parentNodeDataObj, containerKey, containerNodeDataObj) {\n var externalKey = this.nodeDataImporter.getKey(nodeDataObj);\n var key = externalKey !== undefined && externalKey !== null ? externalKey : ModelUtils_1.ModelUtils.getGuidItemKey();\n var node = new DataSourceItems_1.DataSourceNodeItem(this.key, key, nodeDataObj, type, text, parentNodeDataObj, containerKey, containerNodeDataObj);\n this.nodes.push(node);\n\n if (externalKey === undefined || externalKey === null) {\n externalKey = key;\n this.autoGeneratedDataKeys[key] = true;\n }\n\n return node;\n };\n\n DataSource.prototype.addEdge = function (edgeDataObj) {\n var edge = this.addEdgeInternal(edgeDataObj, this.getNodeKey(edgeDataObj, this.edgeDataImporter.getFrom), this.getNodeKey(edgeDataObj, this.edgeDataImporter.getTo));\n this.assignEdgeProperties(edge, edgeDataObj);\n return edge;\n };\n\n DataSource.prototype.addEdgeInternal = function (edgeDataObj, from, to) {\n var externalKey = edgeDataObj && this.edgeDataImporter.getKey(edgeDataObj);\n var key = externalKey !== undefined && externalKey !== null ? externalKey : ModelUtils_1.ModelUtils.getGuidItemKey();\n var edge = new DataSourceItems_1.DataSourceEdgeItem(this.key, key, edgeDataObj, from, to);\n this.edges.push(edge);\n\n if (externalKey === undefined || externalKey === null) {\n externalKey = key;\n this.autoGeneratedDataKeys[key] = true;\n }\n\n return edge;\n };\n\n DataSource.prototype.assignItemProperties = function (item, dataObj, importer) {\n if (importer.getCustomData) item.customData = Utils_1.ObjectUtils.cloneObject(importer.getCustomData(dataObj));\n if (importer.getLocked) item.locked = importer.getLocked(dataObj);\n\n if (importer.getStyle) {\n var style = importer.getStyle(dataObj);\n item.style = typeof style === \"string\" ? Data_1.Data.cssTextToObject(style) : style;\n }\n\n if (importer.getStyleText) {\n var style = importer.getStyleText(dataObj);\n item.styleText = typeof style === \"string\" ? Data_1.Data.cssTextToObject(style) : style;\n }\n\n if (importer.getZIndex) item.zIndex = importer.getZIndex(dataObj);\n };\n\n DataSource.prototype.assignNodeProperties = function (item, dataObj) {\n this.assignItemProperties(item, dataObj, this.nodeDataImporter);\n if (this.nodeDataImporter.getImage) item.image = this.nodeDataImporter.getImage(dataObj);\n if (this.nodeDataImporter.getLeft) item.left = this.nodeDataImporter.getLeft(dataObj);\n if (this.nodeDataImporter.getTop) item.top = this.nodeDataImporter.getTop(dataObj);\n if (this.nodeDataImporter.getWidth) item.width = this.nodeDataImporter.getWidth(dataObj);\n if (this.nodeDataImporter.getHeight) item.height = this.nodeDataImporter.getHeight(dataObj);\n if (this.nodeDataImporter.getContainerKey) item.containerKey = this.nodeDataImporter.getContainerKey(dataObj);\n };\n\n DataSource.prototype.assignEdgeProperties = function (item, dataObj) {\n this.assignItemProperties(item, dataObj, this.edgeDataImporter);\n if (this.edgeDataImporter.getFromPointIndex) item.fromPointIndex = this.edgeDataImporter.getFromPointIndex(dataObj);\n if (this.edgeDataImporter.getToPointIndex) item.toPointIndex = this.edgeDataImporter.getToPointIndex(dataObj);\n if (this.edgeDataImporter.getPoints) item.points = this.edgeDataImporter.getPoints(dataObj);\n\n if (this.edgeDataImporter.getText) {\n var texts = this.edgeDataImporter.getText(dataObj);\n item.texts = {};\n if (typeof texts === \"object\") for (var key in texts) {\n if (!Object.prototype.hasOwnProperty.call(texts, key)) continue;\n var position = parseFloat(key);\n var text = texts[key];\n\n if (!isNaN(position) && typeof text === \"string\" && text !== \"\") {\n position = Math.min(1, Math.max(0, position));\n item.texts[position] = text;\n }\n } else if (typeof texts === \"string\" && texts !== \"\") item.texts[Connector_1.CONNECTOR_DEFAULT_TEXT_POSITION] = texts;\n }\n\n if (this.edgeDataImporter.getLineOption) item.lineOption = this.edgeDataImporter.getLineOption(dataObj);\n if (this.edgeDataImporter.getStartLineEnding) item.startLineEnding = this.edgeDataImporter.getStartLineEnding(dataObj);\n if (this.edgeDataImporter.getEndLineEnding) item.endLineEnding = this.edgeDataImporter.getEndLineEnding(dataObj);\n };\n\n DataSource.prototype.findNode = function (key) {\n return this.nodes.filter(function (i) {\n return key !== undefined && i.key === key;\n })[0];\n };\n\n DataSource.prototype.findEdge = function (key) {\n return this.edges.filter(function (i) {\n return key !== undefined && i.key === key;\n })[0];\n };\n\n DataSource.prototype.getNodeKey = function (nodeDataObj, getKey) {\n return getKey(nodeDataObj);\n };\n\n DataSource.prototype.createModelItems = function (history, model, shapeDescriptionManager, selection, layoutParameters, snapToGrid, gridSize, measurer) {\n var _this = this;\n\n this.beginChangesNotification();\n history.clear();\n history.beginTransaction();\n ModelUtils_1.ModelUtils.deleteAllItems(history, model, selection);\n model.initializeKeyCounter();\n var DEFAULT_STEP = 2000;\n var rowIndex = 0;\n var colIndex = 0;\n var externalToInnerMap = {};\n var shapes = [];\n var connectors = [];\n this.nodes.forEach(function (node) {\n var point = new point_1.Point(colIndex++ * DEFAULT_STEP, rowIndex * DEFAULT_STEP);\n\n var shape = _this.createShapeByNode(history, model, selection, shapeDescriptionManager, node, point, layoutParameters, snapToGrid, gridSize, measurer);\n\n if (node.key !== undefined) externalToInnerMap[node.key] = shape.key;\n\n if (colIndex > 4) {\n colIndex = 0;\n rowIndex++;\n }\n\n shapes.push(shape);\n });\n this.nodes.forEach(function (node) {\n if (node.containerKey !== undefined && node.containerKey !== null) {\n var shapeKey = externalToInnerMap[node.key];\n var shape = model.findShape(shapeKey);\n var containerShapeKey = externalToInnerMap[node.containerKey];\n var containerShape = model.findShape(containerShapeKey);\n if (containerShape) ModelUtils_1.ModelUtils.insertToContainer(history, model, shape, containerShape);\n }\n });\n this.edges.forEach(function (edge) {\n var toShape = model.findShape(externalToInnerMap[edge.to]);\n var fromShape = model.findShape(externalToInnerMap[edge.from]);\n\n var connector = _this.createConnectorByEdge(history, model, selection, edge, fromShape, toShape);\n\n if (connector) {\n connectors.push(connector);\n ModelUtils_1.ModelUtils.updateConnectorContainer(history, model, connector);\n }\n });\n if (layoutParameters.needAutoLayout) this.applyLayout(history, model, shapes, connectors, layoutParameters, snapToGrid, gridSize);\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(history);\n history.endTransaction(true);\n this.endChangesNotification(true);\n };\n\n DataSource.prototype.updateModelItems = function (history, model, shapeDescriptionManager, selection, layoutParameters, addNewHistoryItem, updateDataKeys, updateTemplateItem, changes, snapToGrid, gridSize, measurer) {\n var _this = this;\n\n this.beginChangesNotification();\n history.beginTransaction();\n var itemsToUpdate = [];\n var layoutShapes = [];\n var layoutConnectors = [];\n var shapesToRemove = changes.nodes.removed.map(function (key) {\n return model.findShapeByDataKey(key);\n }).filter(function (item) {\n return item;\n });\n shapesToRemove.forEach(function (shape) {\n shape.attachedConnectors.forEach(function (connector) {\n if (connector.beginItem && connector.beginItem !== shape) layoutShapes.push(connector.beginItem);\n if (connector.endItem && connector.endItem !== shape) layoutShapes.push(connector.endItem);\n });\n });\n ModelUtils_1.ModelUtils.deleteItems(history, model, selection, shapesToRemove, true);\n var connectorsToRemove = changes.edges.removed.map(function (key) {\n return model.findConnectorByDataKey(key);\n }).filter(function (item) {\n return item;\n });\n connectorsToRemove.forEach(function (connector) {\n if (connector.beginItem) layoutShapes.push(connector.beginItem);\n if (connector.endItem) layoutShapes.push(connector.endItem);\n });\n ModelUtils_1.ModelUtils.deleteItems(history, model, selection, connectorsToRemove, true);\n layoutShapes = this.purgeLayoutShapes(layoutShapes, shapesToRemove); // remove deleted shapes and duplicates from layoutShapes\n\n var nodeKeysToUpdate = updateDataKeys || [];\n nodeKeysToUpdate.forEach(function (dataKey) {\n if (changes.nodes.remained.indexOf(dataKey) === -1) return;\n\n var node = _this.findNode(dataKey);\n\n if (node) {\n var shape = model.findShapeByDataKey(dataKey);\n\n if (shape) {\n var position = shape.position.clone();\n\n _this.changeShapeByDataItem(history, model, shape, node, position);\n\n _this.changeItemByDataItem(history, shape, node);\n } else shape = _this.createShapeByNode(history, model, selection, shapeDescriptionManager, node, new point_1.Point(0, 0), layoutParameters, snapToGrid, gridSize, measurer);\n\n _this.updateShapeContainer(history, model, shape, node);\n\n layoutShapes.push(shape);\n itemsToUpdate.push(shape);\n }\n });\n changes.nodes.remained.forEach(function (dataKey, index) {\n var shape = model.findShapeByDataKey(dataKey);\n if (shape) shape.dataKey = changes.nodes.remainedNew[index];\n });\n changes.nodes.added.forEach(function (dataKey) {\n var node = _this.findNode(dataKey);\n\n var shape = _this.createShapeByNode(history, model, selection, shapeDescriptionManager, node, new point_1.Point(0, 0), layoutParameters, snapToGrid, gridSize, measurer);\n\n _this.updateShapeContainer(history, model, shape, node);\n\n layoutShapes.push(shape);\n });\n changes.edges.added.forEach(function (dataKey) {\n var edge = _this.findEdge(dataKey);\n\n var fromShape = model.findShapeByDataKey(edge.from);\n var toShape = model.findShapeByDataKey(edge.to);\n\n var connector = _this.createConnectorByEdge(history, model, selection, edge, fromShape, toShape);\n\n if (connector) {\n ModelUtils_1.ModelUtils.updateConnectorContainer(history, model, connector);\n layoutConnectors.push(connector);\n }\n });\n var edgeKeysToUpdate = updateDataKeys || [];\n changes.edges.remained.forEach(function (dataKey) {\n var edge = _this.findEdge(dataKey);\n\n if (edge && (changes.nodes.added.indexOf(edge.from) !== -1 || changes.nodes.added.indexOf(edge.to) !== -1)) edgeKeysToUpdate.push(dataKey);\n });\n edgeKeysToUpdate.forEach(function (dataKey) {\n if (changes.edges.remained.indexOf(dataKey) === -1) return;\n\n var edge = _this.findEdge(dataKey);\n\n if (edge) {\n var fromShape = model.findShapeByDataKey(edge.from);\n var toShape = model.findShapeByDataKey(edge.to);\n var connector = model.findConnectorByDataKey(dataKey);\n\n if (connector) {\n _this.changeConnectorPointsByDataItem(history, connector, _this.getConnectorPointsByEdge(model, edge, fromShape, toShape));\n\n _this.changeConnectorByDataItem(history, model, connector, fromShape, toShape, edge);\n\n _this.changeItemByDataItem(history, connector, edge);\n } else connector = _this.createConnectorByEdge(history, model, selection, edge, fromShape, toShape);\n\n if (connector) {\n ModelUtils_1.ModelUtils.updateConnectorContainer(history, model, connector);\n layoutConnectors.push(connector);\n itemsToUpdate.push(connector);\n }\n }\n });\n changes.edges.remained.forEach(function (dataKey, index) {\n var connector = model.findConnectorByDataKey(dataKey);\n if (connector) connector.dataKey = changes.edges.remainedNew[index];\n });\n if (itemsToUpdate.length && updateTemplateItem) itemsToUpdate.forEach(function (item) {\n item.hasTemplate && updateTemplateItem(item);\n });\n if (layoutParameters.needAutoLayout && (layoutShapes.length || layoutConnectors.length)) this.applyLayout(history, model, layoutShapes, layoutConnectors, layoutParameters, snapToGrid, gridSize);\n ModelUtils_1.ModelUtils.tryUpdateModelRectangle(history);\n history.endTransaction(!addNewHistoryItem);\n this.endChangesNotification(false);\n };\n\n DataSource.prototype.purgeLayoutShapes = function (layoutShapes, shapesToRemove) {\n var shapesToRemoveKeySet = shapesToRemove.reduce(function (acc, shape) {\n return (acc[shape.key] = true) && acc;\n }, {});\n return layoutShapes.reduce(function (acc, shape) {\n if (acc.keySet[shape.key] === undefined && shapesToRemoveKeySet[shape.key] === undefined) {\n acc.uniqueShapes.push(shape);\n acc.keySet[shape.key] = true;\n }\n\n return acc;\n }, {\n uniqueShapes: [],\n keySet: {}\n }).uniqueShapes;\n };\n\n DataSource.prototype.applyShapeAutoSize = function (history, measurer, shapeSizeSettings, shape, snapToGrid, gridSize) {\n if (!shape.description.enableText) return;\n var shapeTextSize = shape.textRectangle.createSize();\n var shapeSize = shape.size;\n var textHorOffset = shapeTextSize.width - shapeSize.width;\n var textVerOffset = shapeTextSize.height - shapeSize.height;\n var maxWidth = shape.getMaxWidth(shapeSizeSettings.shapeMaxWidth);\n var maxHeight = shape.getMaxHeight(shapeSizeSettings.shapeMaxHeight);\n\n var sizeToPx = function sizeToPx(size, isHorizontal) {\n return typeof size === \"number\" ? unit_converter_1.UnitConverter.twipsToPixelsF(size + (isHorizontal ? textHorOffset : textVerOffset)) : undefined;\n };\n\n var newShapeTextSize = TextUtils_1.getOptimalTextRectangle(shape.text, shape.styleText, ITextMeasurer_1.TextOwner.Shape, measurer, shapeTextSize.clone().applyConverter(unit_converter_1.UnitConverter.twipsToPixelsF), shape.description.keepRatioOnAutoSize, sizeToPx(shape.getMinWidth(shapeSizeSettings.shapeMinWidth), true), sizeToPx(maxWidth, true), sizeToPx(shape.getMinHeight(shapeSizeSettings.shapeMinHeight), false), sizeToPx(maxHeight, false)).clone().applyConverter(unit_converter_1.UnitConverter.pixelsToTwips);\n\n if (!newShapeTextSize.equals(shapeTextSize)) {\n var shapeNewSize = shape.description.getSizeByText(newShapeTextSize, shape);\n if (snapToGrid && gridSize) shapeNewSize = new size_1.Size(Math.min(gridSize * Math.ceil(shapeNewSize.width / gridSize), maxWidth || Number.MAX_VALUE), Math.min(gridSize * Math.ceil(shapeNewSize.height / gridSize), maxHeight || Number.MAX_VALUE));\n history.addAndRedo(new ResizeShapeHistoryItem_1.ResizeShapeHistoryItem(shape.key, shape.position, shapeNewSize));\n }\n };\n\n DataSource.prototype.applyLayout = function (history, model, shapes, connectors, layoutParameters, snapToGrid, gridSize) {\n var graphInfo = ModelUtils_1.ModelUtils.getGraphInfoByItems(model, shapes, connectors);\n graphInfo.forEach(function (info) {\n var layout = layoutParameters.getLayoutBuilder(info.graph).build();\n var nonGraphItems = ModelUtils_1.ModelUtils.getNonGraphItems(model, info.container, layout.nodeToLayout, shapes, connectors);\n ModelUtils_1.ModelUtils.applyLayout(history, model, info.container, info.graph, layout, nonGraphItems, layoutParameters.layoutSettings, snapToGrid, gridSize, layoutParameters.skipPointIndices);\n });\n };\n\n DataSource.prototype.changeItemByDataItem = function (history, item, dataItem) {\n if (dataItem.customData !== undefined && !Utils_1.ObjectUtils.compareObjects(dataItem.customData, item.customData)) history.addAndRedo(new ChangeCustomDataHistoryItem_1.ChangeCustomDataHistoryItem(item, dataItem.customData));\n if (dataItem.zIndex !== undefined && dataItem.zIndex !== item.zIndex) history.addAndRedo(new ChangeZindexHistoryItem_1.ChangeZindexHistoryItem(item, dataItem.zIndex));\n if (dataItem.style !== undefined) for (var key in dataItem.style) {\n if (!Object.prototype.hasOwnProperty.call(dataItem.style, key)) continue;\n var value = this.getPreparedStyleValue(dataItem.style[key], Svg_1.isColorProperty(key));\n if (value !== item.style[key]) history.addAndRedo(new ChangeStyleHistoryItem_1.ChangeStyleHistoryItem(item.key, key, value));\n }\n if (dataItem.styleText !== undefined) for (var key in dataItem.styleText) {\n if (!Object.prototype.hasOwnProperty.call(dataItem.styleText, key)) continue;\n var value = this.getPreparedStyleValue(dataItem.styleText[key], Svg_1.isColorProperty(key));\n if (value !== item.styleText[key]) history.addAndRedo(new ChangeStyleTextHistoryItem_1.ChangeStyleTextHistoryItem(item.key, key, value));\n }\n if (dataItem.locked !== undefined && dataItem.locked !== item.locked) history.addAndRedo(new ChangeLockedHistoryItem_1.ChangeLockedHistoryItem(item, dataItem.locked));\n };\n\n DataSource.prototype.getPreparedStyleValue = function (value, isColorProperty) {\n if (isColorProperty) {\n var colorValue = color_1.ColorUtils.stringToHash(value);\n if (colorValue !== null) value = colorValue;\n }\n\n return value;\n };\n\n DataSource.prototype.createShapeByNode = function (history, model, selection, shapeDescriptionManager, node, point, layoutParameters, snapToGrid, gridSize, measurer) {\n var insert = new AddShapeHistoryItem_1.AddShapeHistoryItem(shapeDescriptionManager.get(node.type), point, \"\", node.key);\n history.addAndRedo(insert);\n var shape = model.findShape(insert.shapeKey);\n ModelUtils_1.ModelUtils.updateNewShapeProperties(history, selection, insert.shapeKey);\n this.changeShapeByDataItem(history, model, shape, node, point);\n this.changeItemByDataItem(history, shape, node);\n if (measurer && this.canUseAutoSize && layoutParameters.autoSizeEnabled) this.applyShapeAutoSize(history, measurer, layoutParameters.sizeSettings, shape, snapToGrid, gridSize);\n return shape;\n };\n\n DataSource.prototype.changeShapeByDataItem = function (history, model, shape, node, point) {\n if (node.left !== undefined) point.x = ModelUtils_1.ModelUtils.getTwipsValue(model.units, node.left);\n if (node.top !== undefined) point.y = ModelUtils_1.ModelUtils.getTwipsValue(model.units, node.top);\n ModelUtils_1.ModelUtils.setShapePosition(history, model, shape, point);\n var size = shape.size.clone();\n if (node.width !== undefined) size.width = ModelUtils_1.ModelUtils.getTwipsValue(model.units, node.width);\n if (node.height !== undefined) size.height = ModelUtils_1.ModelUtils.getTwipsValue(model.units, node.height);\n ModelUtils_1.ModelUtils.setShapeSize(history, model, shape, point, size);\n ModelUtils_1.ModelUtils.updateShapeAttachedConnectors(history, model, shape);\n if (node.text !== undefined && node.text !== shape.text) history.addAndRedo(new ChangeShapeTextHistoryItem_1.ChangeShapeTextHistoryItem(shape, node.text));\n if (node.image !== undefined && node.image !== shape.image.actualUrl) history.addAndRedo(new ChangeShapeImageHistoryItem_1.ChangeShapeImageHistoryItem(shape, node.image));\n };\n\n DataSource.prototype.updateShapeContainer = function (history, model, shape, node) {\n var containerShape = node.containerKey !== undefined ? model.findShapeByDataKey(node.containerKey) : undefined;\n if (containerShape !== shape.container) if (containerShape) ModelUtils_1.ModelUtils.insertToContainer(history, model, shape, containerShape);else ModelUtils_1.ModelUtils.removeFromContainer(history, model, shape);\n };\n\n DataSource.prototype.getConnectorPointsByEdge = function (model, edge, fromShape, toShape) {\n var result = [];\n var modelPoints = this.createModelPointFromDataSourceEdgeItemPoints(model.units, edge);\n\n if (!modelPoints || modelPoints.length <= 1) {\n if (!fromShape || !toShape) return undefined;\n result.push(fromShape.position.clone());\n result.push(toShape.position.clone());\n return result;\n }\n\n var lastIndex = modelPoints.length - 1;\n\n for (var i = 0; i <= lastIndex; i++) {\n var modelPoint = modelPoints[i];\n if (modelPoint !== null) result.push(modelPoint);else if (!fromShape && !toShape) return undefined;else if (i === 0 && fromShape) result.push(fromShape.position.clone());else if (i === lastIndex && toShape) result.push(toShape.position.clone());\n }\n\n return result;\n };\n\n DataSource.prototype.createModelPointFromDataSourceEdgeItemPoints = function (units, edge) {\n var _this = this;\n\n var result = [];\n if (!Array.isArray(edge.points)) return undefined;\n edge.points.forEach(function (dep) {\n return result.push(_this.isValidDataSourceEdgeItemPoint(dep) ? _this.createModelPoint(units, dep) : null);\n });\n return result;\n };\n\n DataSource.prototype.createModelPoint = function (units, point) {\n return new point_1.Point(ModelUtils_1.ModelUtils.getTwipsValue(units, point.x), ModelUtils_1.ModelUtils.getTwipsValue(units, point.y));\n };\n\n DataSource.prototype.isValidDataSourceEdgeItemPoint = function (point) {\n return point !== undefined && point !== null && point.x !== undefined && point.y !== undefined && point.x !== null && point.y !== null;\n };\n\n DataSource.prototype.createConnectorByEdge = function (history, model, selection, edge, fromShape, toShape) {\n var connector;\n var dataKey = edge.key;\n var points = this.getConnectorPointsByEdge(model, edge, fromShape, toShape);\n\n if (points && points.length > 1) {\n var insert = new AddConnectorHistoryItem_1.AddConnectorHistoryItem(points, dataKey);\n history.addAndRedo(insert);\n connector = model.findConnector(insert.connectorKey);\n ModelUtils_1.ModelUtils.updateNewConnectorProperties(history, selection, insert.connectorKey);\n this.changeConnectorByDataItem(history, model, connector, fromShape, toShape, edge);\n this.changeItemByDataItem(history, connector, edge);\n }\n\n return connector;\n };\n\n DataSource.prototype.changeConnectorByDataItem = function (history, model, connector, fromShape, toShape, edge) {\n var fromPointIndex = edge.fromPointIndex !== undefined ? edge.fromPointIndex : connector.beginConnectionPointIndex;\n\n if (connector.beginItem !== fromShape || connector.beginConnectionPointIndex !== fromPointIndex) {\n if (connector.beginItem) history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, Connector_1.ConnectorPosition.Begin));\n if (fromShape) history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(connector, fromShape, fromPointIndex, Connector_1.ConnectorPosition.Begin));\n }\n\n var toPointIndex = edge.toPointIndex !== undefined ? edge.toPointIndex : connector.endConnectionPointIndex;\n\n if (connector.endItem !== toShape || connector.endConnectionPointIndex !== toPointIndex) {\n if (connector.endItem) history.addAndRedo(new DeleteConnectionHistoryItem_1.DeleteConnectionHistoryItem(connector, Connector_1.ConnectorPosition.End));\n if (toShape) history.addAndRedo(new AddConnectionHistoryItem_1.AddConnectionHistoryItem(connector, toShape, toPointIndex, Connector_1.ConnectorPosition.End));\n }\n\n ModelUtils_1.ModelUtils.updateConnectorAttachedPoints(history, model, connector);\n\n if (edge.texts !== undefined && !this.compareTexts(edge, connector)) {\n connector.texts.forEach(function (text) {\n history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(connector, text.position, undefined));\n });\n\n for (var key in edge.texts) {\n if (!Object.prototype.hasOwnProperty.call(edge.texts, key)) continue;\n var position = parseFloat(key);\n history.addAndRedo(new ChangeConnectorTextHistoryItem_1.ChangeConnectorTextHistoryItem(connector, position, edge.texts[key]));\n }\n }\n\n if (edge.lineOption !== undefined && edge.lineOption !== connector.properties.lineOption) history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(connector.key, \"lineOption\", edge.lineOption));\n if (edge.startLineEnding !== undefined && edge.startLineEnding !== connector.properties.startLineEnding) history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(connector.key, \"startLineEnding\", edge.startLineEnding));\n if (edge.endLineEnding !== undefined && edge.endLineEnding !== connector.properties.endLineEnding) history.addAndRedo(new ChangeConnectorPropertyHistoryItem_1.ChangeConnectorPropertyHistoryItem(connector.key, \"endLineEnding\", edge.endLineEnding));\n };\n\n DataSource.prototype.changeConnectorPointsByDataItem = function (history, connector, newPoints) {\n if (newPoints && newPoints.length > 1 && newPoints.join(\",\") !== connector.points.join(\",\")) history.addAndRedo(new ChangeConnectorPointsHistoryItem_1.ReplaceConnectorPointsHistoryItem(connector.key, newPoints));\n };\n\n DataSource.prototype.compareTexts = function (edgeObj, connector) {\n var texts = edgeObj.texts || {};\n var result = Object.keys(texts).length === connector.getTextCount();\n if (result) for (var key in texts) {\n if (!Object.prototype.hasOwnProperty.call(texts, key)) continue;\n var position = parseFloat(key);\n if (!this.compareStrings(connector.getText(position), texts[key])) result = false;\n }\n return result;\n };\n\n DataSource.prototype.compareStrings = function (str1, str2) {\n if (typeof str1 === \"string\" && typeof str2 === \"string\") return str1 === str2;\n return this.isEmptyString(str1) && this.isEmptyString(str2);\n };\n\n DataSource.prototype.isEmptyString = function (str) {\n return str === \"\" || str === null || str === undefined;\n };\n\n return DataSource;\n }();\n\n exports.DataSource = DataSource;\n /***/\n },\n /* 347 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics234 = function extendStatics(d, b) {\n _extendStatics234 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics234(d, b);\n };\n\n return function (d, b) {\n _extendStatics234(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeCustomDataHistoryItem = void 0;\n\n var HistoryItem_1 = __webpack_require__(8);\n\n var Utils_1 = __webpack_require__(3);\n\n var ChangeCustomDataHistoryItem =\n /** @class */\n function (_super) {\n __extends(ChangeCustomDataHistoryItem, _super);\n\n function ChangeCustomDataHistoryItem(item, customData) {\n var _this = _super.call(this) || this;\n\n _this.itemKey = item.key;\n _this.customData = Utils_1.ObjectUtils.cloneObject(customData);\n return _this;\n }\n\n ChangeCustomDataHistoryItem.prototype.redo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n this.oldCustomData = Utils_1.ObjectUtils.cloneObject(item.customData);\n manipulator.changeCustomData(item, this.customData);\n };\n\n ChangeCustomDataHistoryItem.prototype.undo = function (manipulator) {\n var item = manipulator.model.findItem(this.itemKey);\n manipulator.changeCustomData(item, this.oldCustomData);\n };\n\n return ChangeCustomDataHistoryItem;\n }(HistoryItem_1.HistoryItem);\n\n exports.ChangeCustomDataHistoryItem = ChangeCustomDataHistoryItem;\n /***/\n },\n /* 348 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics235 = function extendStatics(d, b) {\n _extendStatics235 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics235(d, b);\n };\n\n return function (d, b) {\n _extendStatics235(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DataSourceEdgeDataImporter = exports.DataSourceNodeDataImporter = exports.DataSourceItemDataImporter = void 0;\n\n var DataSourceItemDataImporter =\n /** @class */\n function () {\n function DataSourceItemDataImporter() {\n this.getKey = function (obj) {\n return obj[\"id\"];\n };\n\n this.setKey = function (obj, value) {\n obj[\"id\"] = value;\n };\n\n this.getCustomData = undefined;\n this.setCustomData = undefined;\n this.getLocked = undefined;\n this.setLocked = undefined;\n this.getStyle = undefined;\n this.setStyle = undefined;\n this.getStyleText = undefined;\n this.setStyleText = undefined;\n this.getZIndex = undefined;\n this.setZIndex = undefined;\n }\n\n return DataSourceItemDataImporter;\n }();\n\n exports.DataSourceItemDataImporter = DataSourceItemDataImporter;\n\n var DataSourceNodeDataImporter =\n /** @class */\n function (_super) {\n __extends(DataSourceNodeDataImporter, _super);\n\n function DataSourceNodeDataImporter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.getType = undefined;\n _this.setType = undefined;\n _this.getText = undefined;\n _this.setText = undefined;\n _this.getImage = undefined;\n _this.setImage = undefined;\n _this.getLeft = undefined;\n _this.setLeft = undefined;\n _this.getTop = undefined;\n _this.setTop = undefined;\n _this.getWidth = undefined;\n _this.setWidth = undefined;\n _this.getHeight = undefined;\n _this.setHeight = undefined;\n _this.getChildren = undefined;\n _this.setChildren = undefined;\n _this.getParentKey = undefined;\n _this.setParentKey = undefined;\n _this.getItems = undefined;\n _this.setItems = undefined;\n _this.getContainerKey = undefined;\n _this.setContainerKey = undefined;\n return _this;\n }\n\n return DataSourceNodeDataImporter;\n }(DataSourceItemDataImporter);\n\n exports.DataSourceNodeDataImporter = DataSourceNodeDataImporter;\n\n var DataSourceEdgeDataImporter =\n /** @class */\n function (_super) {\n __extends(DataSourceEdgeDataImporter, _super);\n\n function DataSourceEdgeDataImporter() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n\n _this.getFrom = function (obj) {\n return obj[\"from\"];\n };\n\n _this.setFrom = function (obj, value) {\n obj[\"from\"] = value;\n };\n\n _this.getFromPointIndex = undefined;\n _this.setFromPointIndex = undefined;\n\n _this.getTo = function (obj) {\n return obj[\"to\"];\n };\n\n _this.setTo = function (obj, value) {\n obj[\"to\"] = value;\n };\n\n _this.getToPointIndex = undefined;\n _this.setToPointIndex = undefined;\n _this.getPoints = undefined;\n _this.setPoints = undefined;\n _this.getText = undefined;\n _this.setText = undefined;\n _this.getLineOption = undefined;\n _this.setLineOption = undefined;\n _this.getStartLineEnding = undefined;\n _this.setStartLineEnding = undefined;\n _this.getEndLineEnding = undefined;\n _this.setEndLineEnding = undefined;\n return _this;\n }\n\n return DataSourceEdgeDataImporter;\n }(DataSourceItemDataImporter);\n\n exports.DataSourceEdgeDataImporter = DataSourceEdgeDataImporter;\n /***/\n },\n /* 349 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics236 = function extendStatics(d, b) {\n _extendStatics236 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics236(d, b);\n };\n\n return function (d, b) {\n _extendStatics236(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DataSourceEdgeItem = exports.DataSourceNodeItem = exports.DataSourceItem = void 0;\n\n var Connector_1 = __webpack_require__(6);\n\n var DataSourceItem =\n /** @class */\n function () {\n function DataSourceItem(sourceKey, key, dataObj) {\n this.sourceKey = sourceKey;\n this.key = key;\n this.dataObj = dataObj;\n }\n\n return DataSourceItem;\n }();\n\n exports.DataSourceItem = DataSourceItem;\n\n var DataSourceNodeItem =\n /** @class */\n function (_super) {\n __extends(DataSourceNodeItem, _super);\n\n function DataSourceNodeItem(sourceKey, key, dataObj, type, text, parentDataObj, containerKey, containerDataObj) {\n var _this = _super.call(this, sourceKey, key, dataObj) || this;\n\n _this.type = type;\n _this.text = text;\n _this.parentDataObj = parentDataObj;\n _this.containerKey = containerKey;\n _this.containerDataObj = containerDataObj;\n return _this;\n }\n\n return DataSourceNodeItem;\n }(DataSourceItem);\n\n exports.DataSourceNodeItem = DataSourceNodeItem;\n\n var DataSourceEdgeItem =\n /** @class */\n function (_super) {\n __extends(DataSourceEdgeItem, _super);\n\n function DataSourceEdgeItem(sourceKey, key, dataObj, from, to) {\n var _this = _super.call(this, sourceKey, key, dataObj) || this;\n\n _this.sourceKey = sourceKey;\n _this.from = from;\n _this.to = to;\n return _this;\n }\n\n Object.defineProperty(DataSourceEdgeItem.prototype, \"text\", {\n get: function get() {\n return this.texts && this.texts[Connector_1.CONNECTOR_DEFAULT_TEXT_POSITION];\n },\n enumerable: false,\n configurable: true\n });\n return DataSourceEdgeItem;\n }(DataSourceItem);\n\n exports.DataSourceEdgeItem = DataSourceEdgeItem;\n /***/\n },\n /* 350 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ViewController = void 0;\n\n var CommandManager_1 = __webpack_require__(81);\n\n var LOG_MIN_ZOOM = Math.log(0.05);\n var LOG_MAX_ZOOM = Math.log(3);\n var ZOOM_STEPS = 40;\n var ZERO_STEP = getStepByZoom(1);\n var ZOOMLEVEL_COMMANDS = [CommandManager_1.DiagramCommand.ZoomLevel, CommandManager_1.DiagramCommand.ZoomLevelInPercentage, CommandManager_1.DiagramCommand.Zoom100, CommandManager_1.DiagramCommand.Zoom125, CommandManager_1.DiagramCommand.Zoom200, CommandManager_1.DiagramCommand.Zoom25, CommandManager_1.DiagramCommand.Zoom50, CommandManager_1.DiagramCommand.Zoom75];\n var AUTOZOOM_COMMANDS = [CommandManager_1.DiagramCommand.SwitchAutoZoom, CommandManager_1.DiagramCommand.ToggleAutoZoom, CommandManager_1.DiagramCommand.AutoZoomToContent, CommandManager_1.DiagramCommand.AutoZoomToWidth];\n\n var ViewController =\n /** @class */\n function () {\n function ViewController(settings, bars) {\n this.settings = settings;\n this.bars = bars;\n settings.onZoomChanged.add(this);\n this.autoZoom = settings.autoZoom;\n }\n\n ViewController.prototype.initialize = function (view) {\n this.view = view;\n this.view.onViewChanged.add(this);\n };\n\n ViewController.prototype.scrollTo = function (modelPoint, offsetPoint) {\n if (this.view) this.view.setScrollTo(modelPoint, offsetPoint);\n };\n\n ViewController.prototype.scrollBy = function (offset) {\n if (this.view && (offset.x !== 0 || offset.y !== 0)) return this.view.scrollBy(offset);\n return offset;\n };\n\n ViewController.prototype.scrollIntoView = function (rectangle) {\n this.view && this.view.scrollIntoView(rectangle);\n };\n\n ViewController.prototype.normalize = function () {\n this.view.tryNormalizePaddings();\n };\n\n ViewController.prototype.getNextStepZoom = function (increase) {\n var currentZoomStep = this.getNearestCurrentZoomStep();\n var delta = increase ? 1 : -1;\n var step = Math.min(ZOOM_STEPS - 1, Math.max(0, currentZoomStep + delta));\n\n if (step !== ZERO_STEP) {\n var logZoom = LOG_MIN_ZOOM + (LOG_MAX_ZOOM - LOG_MIN_ZOOM) * step / (ZOOM_STEPS - 1);\n return Math.exp(logZoom);\n }\n\n return 1;\n };\n\n ViewController.prototype.getNearestCurrentZoomStep = function () {\n var zoom = this.getZoom();\n return getStepByZoom(zoom);\n };\n\n ViewController.prototype.getZoom = function () {\n return this.view ? this.view.actualZoom : this.settings.zoomLevel;\n };\n\n ViewController.prototype.resetScroll = function () {\n this.view.adjust({\n horizontal: true,\n vertical: true\n });\n };\n\n ViewController.prototype.notifyViewAdjusted = function (canvasOffset) {};\n\n ViewController.prototype.notifyActualZoomChanged = function (actualZoom) {\n this.bars.updateItemsState(ZOOMLEVEL_COMMANDS);\n };\n\n ViewController.prototype.notifyZoomChanged = function (fixedZoomLevel, autoZoom) {\n if (this.autoZoom !== autoZoom) {\n this.autoZoom = autoZoom;\n this.bars.updateItemsState(AUTOZOOM_COMMANDS);\n }\n };\n\n return ViewController;\n }();\n\n exports.ViewController = ViewController;\n\n function getStepByZoom(zoom) {\n var logZoom = Math.log(zoom);\n return Math.round((logZoom - LOG_MIN_ZOOM) * (ZOOM_STEPS - 1) / (LOG_MAX_ZOOM - LOG_MIN_ZOOM));\n }\n /***/\n\n },\n /* 351 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToolboxManager = void 0;\n\n var TextToolbox_1 = __webpack_require__(352);\n\n var IconToolbox_1 = __webpack_require__(353);\n\n var TextMeasurer_1 = __webpack_require__(78);\n\n var math_1 = __webpack_require__(32);\n\n var ToolboxManager =\n /** @class */\n function () {\n function ToolboxManager(shapeDescriptionManager) {\n this.shapeDescriptionManager = shapeDescriptionManager;\n this.toolboxes = [];\n this.measurers = {};\n }\n\n ToolboxManager.prototype.create = function (parent, readOnly, allowDragging, renderAsText, shapes, getAllowedShapeTypes, isTouchUIEnabled, options) {\n var shapeTypes = Array.isArray(shapes) ? shapes : this.shapeDescriptionManager.getTypesByCategory(shapes);\n var toolbox = renderAsText ? new TextToolbox_1.TextToolbox(parent, readOnly, allowDragging, this.shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) : new IconToolbox_1.IconToolbox(parent, readOnly, allowDragging, this.shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, options, this.getOrCreateMeasurer(parent), isTouchUIEnabled);\n toolbox.render();\n this.toolboxes.push(toolbox);\n return toolbox;\n };\n\n ToolboxManager.prototype.clean = function (removeElement, toolbox) {\n if (toolbox) {\n toolbox.clean(removeElement);\n this.toolboxes.splice(this.toolboxes.indexOf(toolbox), 1);\n } else {\n for (var i = 0; i < this.toolboxes.length; i++) {\n this.toolboxes[i].clean(removeElement);\n }\n\n this.toolboxes = [];\n }\n };\n\n ToolboxManager.prototype.refresh = function (toolboxes) {\n this.toolboxes.forEach(function (toolbox, index) {\n if (!toolboxes || Array.isArray(toolboxes) && toolboxes.indexOf(index) > -1 || index === toolboxes) toolbox.render();\n });\n };\n\n ToolboxManager.prototype.applyFilter = function (str, toolboxes) {\n var _this = this;\n\n return this.toolboxes.reduce(function (aggr, toolbox, index) {\n if (!toolboxes || Array.isArray(toolboxes) && toolboxes.indexOf(index) > -1 || index === toolboxes) toolbox.render(function (shapeType) {\n return _this.searchFilter(shapeType, str, index);\n }) && aggr.push(index);\n return aggr;\n }, []);\n };\n\n ToolboxManager.prototype.searchFilter = function (shapeType, str, toolboxIndex, filteringToolboxes) {\n if (!str || filteringToolboxes && filteringToolboxes.indexOf(toolboxIndex) === -1) return true;\n str = str.toLowerCase();\n var shapeDescription = this.shapeDescriptionManager.get(shapeType);\n return shapeDescription.getTitle().toLowerCase().indexOf(str) > -1 || shapeDescription.getDefaultText().toLowerCase().indexOf(str) > -1;\n };\n\n ToolboxManager.prototype.getOrCreateMeasurer = function (parent) {\n var id = parent.getAttribute(\"data-dxdiMeasurerID\");\n\n if (!id || !this.measurers[id]) {\n id = math_1.MathUtils.generateGuid();\n this.measurers[id] = new TextMeasurer_1.TextMeasurer(parent);\n parent.setAttribute(\"data-dxdiMeasurerID\", id);\n }\n\n return this.measurers[id];\n };\n\n return ToolboxManager;\n }();\n\n exports.ToolboxManager = ToolboxManager;\n /***/\n },\n /* 352 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics237 = function extendStatics(d, b) {\n _extendStatics237 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics237(d, b);\n };\n\n return function (d, b) {\n _extendStatics237(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.TextToolbox = void 0;\n\n var Toolbox_1 = __webpack_require__(158);\n\n var TextToolbox =\n /** @class */\n function (_super) {\n __extends(TextToolbox, _super);\n\n function TextToolbox(parent, readOnly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) {\n return _super.call(this, parent, readOnly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) || this;\n }\n\n TextToolbox.prototype.createElements = function (element, shapeTypes) {\n var _this = this;\n\n shapeTypes.forEach(function (shapeType) {\n var description = _this.shapeDescriptionManager.get(shapeType);\n\n var itemEl = document.createElement(\"div\");\n itemEl.setAttribute(\"class\", \"toolbox-text-item\");\n itemEl.setAttribute(\"data-tb-type\", shapeType);\n itemEl.textContent = description.getDefaultText() || description.getTitle();\n element.appendChild(itemEl);\n });\n };\n\n TextToolbox.prototype.createDraggingElement = function (draggingObject) {\n var element = document.createElement(\"DIV\");\n element.setAttribute(\"class\", \"dxdi-toolbox-drag-text-item\");\n var shapeDescription = this.shapeDescriptionManager.get(draggingObject.evt.data);\n element.textContent = shapeDescription.getDefaultText() || shapeDescription.getTitle();\n document.body.appendChild(element);\n return element;\n };\n\n return TextToolbox;\n }(Toolbox_1.Toolbox);\n\n exports.TextToolbox = TextToolbox;\n /***/\n },\n /* 353 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics238 = function extendStatics(d, b) {\n _extendStatics238 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics238(d, b);\n };\n\n return function (d, b) {\n _extendStatics238(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.IconToolbox = void 0;\n\n var Toolbox_1 = __webpack_require__(158);\n\n var RenderHelper_1 = __webpack_require__(15);\n\n var Shape_1 = __webpack_require__(13);\n\n var unit_converter_1 = __webpack_require__(11);\n\n var point_1 = __webpack_require__(1);\n\n var TextShapeDescription_1 = __webpack_require__(122);\n\n var Style_1 = __webpack_require__(27);\n\n var CustomShapeDescription_1 = __webpack_require__(127);\n\n var RectaglePrimitive_1 = __webpack_require__(21);\n\n var DEFAULT_SHAPE_ICON_SIZE = 32;\n var SHRINK_TEXT_SHAPE_ICON_SIZE = 26;\n var SHRINKED_TEXT = \"T\";\n\n var IconToolbox =\n /** @class */\n function (_super) {\n __extends(IconToolbox, _super);\n\n function IconToolbox(parent, readonly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, options, measurer, isTouchUIEnabled) {\n var _this = _super.call(this, parent, readonly, allowDragging, shapeDescriptionManager, shapeTypes, getAllowedShapeTypes, isTouchUIEnabled) || this;\n\n _this.options = options;\n _this.measurer = measurer;\n return _this;\n }\n\n IconToolbox.prototype.createElements = function (element, shapeTypes) {\n var svgElement = document.createElementNS(RenderHelper_1.svgNS, \"svg\");\n svgElement.className.baseVal = \"dxdi-canvas\";\n element.appendChild(svgElement);\n this.drawShapeIcons(svgElement, shapeTypes, this.options.toolboxWidth || svgElement.getBoundingClientRect().width);\n };\n\n IconToolbox.prototype.drawShapeIcons = function (parent, shapeTypes, svgWidth) {\n var _this = this;\n\n var lineWidth = Style_1.DEFAULT_STROKE_WIDTH;\n var targetWidth = svgWidth - 2 * lineWidth;\n var shapeIconSize = this.options.shapeIconSize;\n if (!shapeIconSize && this.options.shapeIconSpacing && this.options.shapeIconCountInRow) shapeIconSize = Math.floor((targetWidth - (this.options.shapeIconCountInRow - 1) * this.options.shapeIconSpacing) / this.options.shapeIconCountInRow);\n if (!shapeIconSize) shapeIconSize = DEFAULT_SHAPE_ICON_SIZE;\n shapeIconSize = Math.max(shapeIconSize, this.options.shapeIconSpacing / 2);\n var width = shapeIconSize;\n var iconCountInRow = this.options.shapeIconCountInRow;\n\n if (!iconCountInRow) {\n iconCountInRow = 1;\n\n while (width < targetWidth) {\n width += this.options.shapeIconSpacing + shapeIconSize;\n if (width < targetWidth) iconCountInRow++;\n }\n }\n\n var shapeIconSpacing = iconCountInRow > 1 ? (targetWidth - shapeIconSize * iconCountInRow) / (iconCountInRow - 1) : 0;\n var xPos = lineWidth;\n var yPos = lineWidth;\n var size = unit_converter_1.UnitConverter.pixelsToTwips(shapeIconSize);\n shapeTypes.forEach(function (shapeType, index) {\n if (index > 0 && index % iconCountInRow === 0) {\n xPos = lineWidth;\n yPos += shapeIconSize + shapeIconSpacing;\n }\n\n var shapeDescription = _this.shapeDescriptionManager.get(shapeType);\n\n var shape = _this.createShape(shapeDescription, xPos, yPos, shapeIconSize < SHRINK_TEXT_SHAPE_ICON_SIZE);\n\n _this.updateShapeIconBounds(shape, shapeIconSize);\n\n var shapeEl = _this.drawShape(parent, shape);\n\n _this.drawSelector(shapeEl, unit_converter_1.UnitConverter.pixelsToTwips(xPos), unit_converter_1.UnitConverter.pixelsToTwips(yPos), size);\n\n xPos += shapeIconSize + shapeIconSpacing;\n });\n parent.style.height = yPos + shapeIconSize + lineWidth + \"px\";\n parent.style.width = svgWidth + \"px\";\n };\n\n IconToolbox.prototype.drawShape = function (parent, shape) {\n var _this = this;\n\n var primitives = shape.description.createPrimitives(shape, true);\n var gEl = document.createElementNS(RenderHelper_1.svgNS, \"g\");\n gEl.setAttribute(\"data-tb-type\", shape.description.key.toString());\n gEl.setAttribute(\"class\", \"toolbox-item\");\n gEl.setAttribute(\"title\", shape.description.getTitle());\n if (this.options.shapeIconAttributes) for (var key in this.options.shapeIconAttributes) {\n if (Object.prototype.hasOwnProperty.call(this.options.shapeIconAttributes, key)) gEl.setAttribute(key, this.options.shapeIconAttributes[key]);\n }\n parent.appendChild(gEl);\n primitives.forEach(function (pr) {\n var el = pr.createElement(function (e) {\n return gEl.appendChild(e);\n });\n pr.applyElementProperties(el, _this.measurer);\n });\n return gEl;\n };\n\n IconToolbox.prototype.drawSelector = function (parent, x, y, size) {\n var _this = this;\n\n var selectorRect = new RectaglePrimitive_1.RectanglePrimitive(x, y, size, size, undefined, \"selector\");\n selectorRect.createElement(function (el) {\n selectorRect.applyElementProperties(el, _this.measurer);\n parent.appendChild(el);\n });\n };\n\n IconToolbox.prototype.createShape = function (shapeDescription, xPos, yPos, shrinkText) {\n var xPosT = unit_converter_1.UnitConverter.pixelsToTwips(xPos);\n var yPosT = unit_converter_1.UnitConverter.pixelsToTwips(yPos);\n var shape = new Shape_1.Shape(shapeDescription, new point_1.Point(xPosT, yPosT), true);\n if (this.needResetShapeText(shapeDescription)) shape.text = \"\";else if (shrinkText) shape.text = SHRINKED_TEXT;\n return shape;\n };\n\n IconToolbox.prototype.needResetShapeText = function (shapeDescription) {\n if (shapeDescription instanceof TextShapeDescription_1.TextShapeDescription) return false;\n if (shapeDescription instanceof CustomShapeDescription_1.CustomShapeDescription && shapeDescription.baseDescription instanceof TextShapeDescription_1.TextShapeDescription) return false;\n return true;\n };\n\n IconToolbox.prototype.updateShapeIconBounds = function (shape, shapeIconSize) {\n var shapeSizeT = unit_converter_1.UnitConverter.pixelsToTwips(shapeIconSize);\n shape.size.height = shape.size.width * shape.getToolboxHeightToWidthRatio();\n\n if (shape.size.width > shape.size.height) {\n var ratio = shape.size.height / shape.size.width;\n shape.size.width = shapeSizeT;\n shape.size.height = shapeSizeT * ratio;\n shape.position.y = shape.position.y + (shapeSizeT - shape.size.height) / 2;\n shape.parameters.forEach(function (p) {\n p.value = p.value * shapeSizeT / shape.description.defaultSize.width;\n });\n } else if (shape.size.width < shape.size.height) {\n var ratio = shape.size.width / shape.size.height;\n shape.size.height = shapeSizeT;\n shape.size.width = shapeSizeT * ratio;\n shape.position.x = shape.position.x + (shapeSizeT - shape.size.width) / 2;\n shape.parameters.forEach(function (p) {\n p.value = p.value * shapeSizeT / shape.description.defaultSize.height;\n });\n } else {\n shape.size.width = shapeSizeT;\n shape.size.height = shapeSizeT;\n shape.parameters.forEach(function (p) {\n p.value = p.value * shapeSizeT / shape.description.defaultSize.width;\n });\n }\n };\n\n IconToolbox.prototype.createDraggingElement = function (draggingObject) {\n var element = document.createElement(\"DIV\");\n element.setAttribute(\"class\", \"dxdi-toolbox-drag-item\");\n document.body.appendChild(element);\n var svgElement = document.createElementNS(RenderHelper_1.svgNS, \"svg\");\n svgElement.className.baseVal = \"dxdi-canvas\";\n element.appendChild(svgElement);\n var shapeDescription = this.shapeDescriptionManager.get(draggingObject.evt.data);\n var shape = this.createShape(shapeDescription, Style_1.DEFAULT_STROKE_WIDTH, Style_1.DEFAULT_STROKE_WIDTH);\n this.drawShape(svgElement, shape);\n element.style.width = unit_converter_1.UnitConverter.twipsToPixels(shape.size.width) + 2 * Style_1.DEFAULT_STROKE_WIDTH + \"px\";\n element.style.height = unit_converter_1.UnitConverter.twipsToPixels(shape.size.height) + 2 * Style_1.DEFAULT_STROKE_WIDTH + \"px\";\n return element;\n };\n\n return IconToolbox;\n }(Toolbox_1.Toolbox);\n\n exports.IconToolbox = IconToolbox;\n /***/\n },\n /* 354 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics239 = function extendStatics(d, b) {\n _extendStatics239 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics239(d, b);\n };\n\n return function (d, b) {\n _extendStatics239(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ApiController = void 0;\n\n var batch_updatable_1 = __webpack_require__(80);\n\n var Event_1 = __webpack_require__(14);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var __1 = __webpack_require__(107);\n\n var ApiController =\n /** @class */\n function (_super) {\n __extends(ApiController, _super);\n\n function ApiController(events, selection, model) {\n var _this = _super.call(this) || this;\n\n _this.events = events;\n _this.model = model;\n _this.selection = selection;\n return _this;\n }\n\n ApiController.prototype.notifySelectionChanged = function (selection) {\n if (this.isUpdateLocked()) this.registerOccurredEvent(ApiControllerAction.SelectionChanged);else this.raiseSelectionChanged();\n };\n\n ApiController.prototype.notifyToolboxDragStart = function () {\n this.events.raise(\"notifyToolboxItemDragStart\");\n };\n\n ApiController.prototype.notifyToolboxDragEnd = function () {\n this.events.raise(\"notifyToolboxItemDragEnd\");\n };\n\n ApiController.prototype.notifyClick = function (evt) {\n var _this = this;\n\n this.tryRaiseUserAction(evt, function (i) {\n return _this.events.raise(\"notifyItemClick\", i);\n });\n };\n\n ApiController.prototype.notifyDblClick = function (evt) {\n var _this = this;\n\n this.tryRaiseUserAction(evt, function (i) {\n return _this.events.raise(\"notifyItemDblClick\", i);\n });\n };\n\n ApiController.prototype.createNativeItem = function (item) {\n return item && this.cleanupNativeItem(item.toNative(this.model.units));\n };\n\n ApiController.prototype.createNativeShape = function (shape) {\n return this.createNativeItem(shape);\n };\n\n ApiController.prototype.createNativeConnector = function (connector) {\n return this.createNativeItem(connector);\n };\n\n ApiController.prototype.convertUnit = function (value) {\n return ModelUtils_1.ModelUtils.getlUnitValue(this.model.units, value);\n };\n\n ApiController.prototype.convertPoint = function (point) {\n return new __1.Point(this.convertUnit(point.x), this.convertUnit(point.y));\n };\n\n ApiController.prototype.convertSize = function (size) {\n return new __1.Size(this.convertUnit(size.width), this.convertUnit(size.height));\n };\n\n ApiController.prototype.cleanupNativeItem = function (item) {\n var ds = this.dataSource;\n\n if (ds) {\n if (ds.isAutoGeneratedKey(item.fromKey)) item.fromKey = undefined;\n if (ds.isAutoGeneratedKey(item.key)) item.key = undefined;\n if (ds.isAutoGeneratedKey(item.toKey)) item.toKey = undefined;\n }\n\n return item;\n };\n\n ApiController.prototype.setDataSource = function (dataSource) {\n this.dataSource = dataSource;\n };\n\n ApiController.prototype.tryRaiseUserAction = function (evt, callEvent) {\n var _this = this;\n\n if (this.isUserAction(evt)) {\n var item_1 = this.model.findItem(evt.source.key);\n item_1 && this.events.raise1(function (l) {\n return callEvent(_this.createNativeItem(item_1));\n });\n }\n };\n\n ApiController.prototype.isUserAction = function (evt) {\n return evt.source && (evt.source.type === Event_1.MouseEventElementType.Shape || evt.source.type === Event_1.MouseEventElementType.ShapeExpandButton || evt.source.type === Event_1.MouseEventElementType.ShapeParameterBox || evt.source.type === Event_1.MouseEventElementType.ShapeResizeBox || evt.source.type === Event_1.MouseEventElementType.ShapeConnectionPoint || evt.source.type === Event_1.MouseEventElementType.Connector || evt.source.type === Event_1.MouseEventElementType.ConnectorPoint || evt.source.type === Event_1.MouseEventElementType.ConnectorSide || evt.source.type === Event_1.MouseEventElementType.ConnectorOrthogonalSide || evt.source.type === Event_1.MouseEventElementType.ConnectorText);\n };\n\n ApiController.prototype.onUpdateUnlocked = function (occurredEvents) {\n if (occurredEvents & ApiControllerAction.SelectionChanged) this.raiseSelectionChanged();\n };\n\n ApiController.prototype.raiseSelectionChanged = function () {\n var _this = this;\n\n var items = this.selection.getKeys().map(function (key) {\n return _this.createNativeItem(_this.model.findItem(key));\n });\n this.events.raise1(function (l) {\n return l.notifySelectionChanged(items);\n });\n };\n\n return ApiController;\n }(batch_updatable_1.BatchUpdatableObject);\n\n exports.ApiController = ApiController;\n var ApiControllerAction;\n\n (function (ApiControllerAction) {\n ApiControllerAction[ApiControllerAction[\"SelectionChanged\"] = 1] = \"SelectionChanged\";\n })(ApiControllerAction || (ApiControllerAction = {}));\n /***/\n\n },\n /* 355 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PermissionsProvider = void 0;\n\n var Shape_1 = __webpack_require__(13);\n\n var Utils_1 = __webpack_require__(3);\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var Connector_1 = __webpack_require__(6);\n\n var AddShape_1 = __webpack_require__(356);\n\n var DeleteShape_1 = __webpack_require__(357);\n\n var DeleteConnector_1 = __webpack_require__(358);\n\n var AddShapeFromToolbox_1 = __webpack_require__(359);\n\n var ChangeConnection_1 = __webpack_require__(360);\n\n var ChangeConnectorPoints_1 = __webpack_require__(361);\n\n var BeforeChangeShapeText_1 = __webpack_require__(362);\n\n var BeforeChangeConnectorText_1 = __webpack_require__(363);\n\n var ChangeShapeText_1 = __webpack_require__(364);\n\n var ChangeConnectorText_1 = __webpack_require__(365);\n\n var PermissionsProviderStorage_1 = __webpack_require__(366);\n\n var ResizeShape_1 = __webpack_require__(367);\n\n var MoveShape_1 = __webpack_require__(368);\n\n var PermissionsProvider =\n /** @class */\n function () {\n function PermissionsProvider(apiController) {\n this.onRequestOperation = new Utils_1.EventDispatcher();\n this.cache = [];\n this.permissionsLockCount = 0;\n this.requestDeleteItems = {};\n this.updateUICount = 0;\n this.apiController = apiController;\n this.operationSettings = new ModelOperationSettings_1.ModelOperationSettings();\n this.storage = new PermissionsProviderStorage_1.PermissionsProviderStorage();\n }\n\n PermissionsProvider.prototype.notifySelectionChanged = function (_selection) {\n this.clearCache();\n };\n\n PermissionsProvider.prototype.notifyModelChanged = function (changes) {\n this.clearCache();\n };\n\n PermissionsProvider.prototype.notifyPageColorChanged = function (color) {};\n\n PermissionsProvider.prototype.notifyPageSizeChanged = function (pageSize, pageLandscape) {};\n\n PermissionsProvider.prototype.clearCache = function (operation) {\n if (operation !== undefined) this.cache = this.cache.filter(function (entry) {\n return entry.operation !== operation;\n });else this.cache = [];\n };\n\n PermissionsProvider.prototype.canDeleteItems = function (items) {\n var _this = this;\n\n var allowed = true;\n items.forEach(function (item) {\n var entity;\n if (item instanceof Shape_1.Shape) entity = new DeleteShape_1.DeleteShapeRequestedEntity(_this.apiController, item);\n if (item instanceof Connector_1.Connector) entity = new DeleteConnector_1.DeleteConnectorRequestedEntity(_this.apiController, item);\n allowed = allowed && _this.requestOperation(entity);\n });\n return allowed;\n };\n\n PermissionsProvider.prototype.canAddItems = function (items) {\n var _this = this;\n\n var allowed = true;\n items.forEach(function (item) {\n if (item instanceof Shape_1.Shape) allowed = allowed && _this.requestOperation(new AddShape_1.AddShapeRequestedEntity(_this.apiController, item));\n\n if (item instanceof Connector_1.Connector) {\n allowed = allowed && _this.canChangeConnection(item, item.beginItem, undefined, Connector_1.ConnectorPosition.Begin, item.beginConnectionPointIndex);\n allowed = allowed && _this.canChangeConnection(item, item.endItem, undefined, Connector_1.ConnectorPosition.End, item.endConnectionPointIndex);\n }\n });\n return allowed;\n };\n\n PermissionsProvider.prototype.canAddShapeFromToolbox = function (itemType) {\n return this.requestOperation(new AddShapeFromToolbox_1.AddShapeFromToolboxRequestedEntity(this.apiController, itemType));\n };\n\n PermissionsProvider.prototype.canChangeConnection = function (connector, item, oldItem, position, connectionPointIndex) {\n if (connector && this.requestDeleteItems[connector.key]) return true;\n if (item === undefined || item === null || item instanceof Shape_1.Shape) return this.requestOperation(new ChangeConnection_1.ChangeConnectionRequestedEntity(this.apiController, connector, item, oldItem, position, connectionPointIndex));\n return true;\n };\n\n PermissionsProvider.prototype.canChangeConnectorPoints = function (connector, oldPoints, points) {\n if (connector && this.requestDeleteItems[connector.key]) return true;\n return this.requestOperation(new ChangeConnectorPoints_1.ChangeConnectorPointsRequestedEntity(this.apiController, connector, oldPoints, points));\n };\n\n PermissionsProvider.prototype.canChangeShapeText = function (shape) {\n return this.requestOperation(new BeforeChangeShapeText_1.BeforeChangeShapeTextRequestedEntity(this.apiController, shape));\n };\n\n PermissionsProvider.prototype.canChangeConnectorText = function (connector, position) {\n return this.requestOperation(new BeforeChangeConnectorText_1.BeforeChangeConnectorTextRequestedEntity(this.apiController, connector, position));\n };\n\n PermissionsProvider.prototype.canApplyShapeTextChange = function (shape, textToApply) {\n return this.requestOperation(new ChangeShapeText_1.ChangeShapeTextRequestedEntity(this.apiController, shape, textToApply));\n };\n\n PermissionsProvider.prototype.canApplyConnectorTextChange = function (connector, position, textToApply) {\n return this.requestOperation(new ChangeConnectorText_1.ChangeConnectorTextRequestedEntity(this.apiController, connector, position, textToApply));\n };\n\n PermissionsProvider.prototype.canResizeShapes = function (shapeInfo) {\n var _this = this;\n\n var allowed = true;\n shapeInfo.forEach(function (info) {\n allowed = allowed && _this.requestOperation(new ResizeShape_1.ResizeShapeRequestedEntity(_this.apiController, info.shape, info.oldSize, info.size));\n });\n return allowed;\n };\n\n PermissionsProvider.prototype.canMoveShapes = function (shapeInfo) {\n var _this = this;\n\n var allowed = true;\n shapeInfo.forEach(function (info) {\n allowed = allowed && _this.requestOperation(new MoveShape_1.MoveShapeRequestedEntity(_this.apiController, info.shape, info.oldPosition, info.position));\n });\n return allowed;\n };\n\n PermissionsProvider.prototype.requestOperation = function (entity) {\n var allowed = true;\n\n if (!this.permissionsLockCount) {\n var cachedEntity_1;\n if (this.updateUICount > 0) this.cache.forEach(function (item) {\n if (item.equals(entity)) {\n cachedEntity_1 = item;\n return;\n }\n });\n if (cachedEntity_1) allowed = cachedEntity_1.allowed;else {\n this.requestOperationCore(entity);\n if (this.updateUICount > 0) this.cache.push(entity);\n allowed = entity.allowed;\n }\n\n if (this.updateUICount === 0 && this.storage.needStorePermissions()) {\n this.storage.storePermission(entity.storageKey, allowed);\n return this.storage.isStoredPermissionsGranted();\n }\n }\n\n return allowed;\n };\n\n PermissionsProvider.prototype.requestOperationCore = function (entity) {\n entity.eventArgs.allowed = this.operationSettings[entity.settingsKey];\n entity.eventArgs.updateUI = this.updateUICount > 0;\n if (entity.allowed) this.onRequestOperation.raise(\"notifyRequestOperation\", entity.operation, entity.eventArgs);\n };\n\n PermissionsProvider.prototype.lockPermissions = function () {\n this.permissionsLockCount++;\n };\n\n PermissionsProvider.prototype.unlockPermissions = function () {\n this.permissionsLockCount--;\n };\n\n PermissionsProvider.prototype.beginDeleteItems = function (items) {\n var _this = this;\n\n items.forEach(function (item) {\n return _this.requestDeleteItems[item.key] = item;\n });\n };\n\n PermissionsProvider.prototype.endDeleteItems = function () {\n this.requestDeleteItems = {};\n };\n\n PermissionsProvider.prototype.beginUpdateUI = function () {\n this.updateUICount++;\n };\n\n PermissionsProvider.prototype.endUpdateUI = function () {\n this.updateUICount--;\n };\n\n PermissionsProvider.prototype.addInteractingItem = function (item, operation) {\n this.storage.addInteractingItem(item, operation);\n };\n\n PermissionsProvider.prototype.getInteractingItem = function (item, operation) {\n return this.storage.getInteractingItem(item, operation);\n };\n\n PermissionsProvider.prototype.getInteractingItemCount = function () {\n return this.storage.getInteractingItemCount();\n };\n\n PermissionsProvider.prototype.clearInteractingItems = function () {\n this.storage.clearInteractingItems();\n };\n\n PermissionsProvider.prototype.beginStorePermissions = function () {\n this.storage.beginStorePermissions();\n };\n\n PermissionsProvider.prototype.endStorePermissions = function () {\n this.storage.endStorePermissions();\n };\n\n PermissionsProvider.prototype.isStoredPermissionsGranted = function () {\n return this.permissionsLockCount > 0 || this.storage.isStoredPermissionsGranted();\n };\n\n return PermissionsProvider;\n }();\n\n exports.PermissionsProvider = PermissionsProvider;\n /***/\n },\n /* 356 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics240 = function extendStatics(d, b) {\n _extendStatics240 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics240(d, b);\n };\n\n return function (d, b) {\n _extendStatics240(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AddShapeEventArgs = exports.AddShapeRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var AddShapeRequestedEntity =\n /** @class */\n function (_super) {\n __extends(AddShapeRequestedEntity, _super);\n\n function AddShapeRequestedEntity(apiController, shape) {\n var _this = _super.call(this, apiController) || this;\n\n _this.shape = shape;\n return _this;\n }\n\n Object.defineProperty(AddShapeRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.AddShape;\n },\n enumerable: false,\n configurable: true\n });\n\n AddShapeRequestedEntity.prototype.createEventArgs = function () {\n return new AddShapeEventArgs(this.apiController.createNativeShape(this.shape), this.apiController.convertPoint(this.shape.position));\n };\n\n Object.defineProperty(AddShapeRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"addShape\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AddShapeRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\n },\n enumerable: false,\n configurable: true\n });\n\n AddShapeRequestedEntity.prototype.equals = function (other) {\n if (other instanceof AddShapeRequestedEntity) return this.shape === other.shape && this.shape.position.equals(other.shape.position);\n return false;\n };\n\n return AddShapeRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.AddShapeRequestedEntity = AddShapeRequestedEntity;\n\n var AddShapeEventArgs =\n /** @class */\n function (_super) {\n __extends(AddShapeEventArgs, _super);\n\n function AddShapeEventArgs(shape, position) {\n var _this = _super.call(this) || this;\n\n _this.shape = shape;\n _this.position = position;\n return _this;\n }\n\n return AddShapeEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.AddShapeEventArgs = AddShapeEventArgs;\n /***/\n },\n /* 357 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics241 = function extendStatics(d, b) {\n _extendStatics241 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics241(d, b);\n };\n\n return function (d, b) {\n _extendStatics241(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DeleteShapeEventArgs = exports.DeleteShapeRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var DeleteShapeRequestedEntity =\n /** @class */\n function (_super) {\n __extends(DeleteShapeRequestedEntity, _super);\n\n function DeleteShapeRequestedEntity(apiController, shape) {\n var _this = _super.call(this, apiController) || this;\n\n _this.shape = shape;\n return _this;\n }\n\n Object.defineProperty(DeleteShapeRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.DeleteShape;\n },\n enumerable: false,\n configurable: true\n });\n\n DeleteShapeRequestedEntity.prototype.createEventArgs = function () {\n return new DeleteShapeEventArgs(this.apiController.createNativeShape(this.shape));\n };\n\n Object.defineProperty(DeleteShapeRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"deleteShape\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DeleteShapeRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\n },\n enumerable: false,\n configurable: true\n });\n\n DeleteShapeRequestedEntity.prototype.equals = function (other) {\n if (other instanceof DeleteShapeRequestedEntity) return this.shape === other.shape;\n return false;\n };\n\n return DeleteShapeRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.DeleteShapeRequestedEntity = DeleteShapeRequestedEntity;\n\n var DeleteShapeEventArgs =\n /** @class */\n function (_super) {\n __extends(DeleteShapeEventArgs, _super);\n\n function DeleteShapeEventArgs(shape) {\n var _this = _super.call(this) || this;\n\n _this.shape = shape;\n return _this;\n }\n\n return DeleteShapeEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.DeleteShapeEventArgs = DeleteShapeEventArgs;\n /***/\n },\n /* 358 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics242 = function extendStatics(d, b) {\n _extendStatics242 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics242(d, b);\n };\n\n return function (d, b) {\n _extendStatics242(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DeleteConnectorEventArgs = exports.DeleteConnectorRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var DeleteConnectorRequestedEntity =\n /** @class */\n function (_super) {\n __extends(DeleteConnectorRequestedEntity, _super);\n\n function DeleteConnectorRequestedEntity(apiController, connector) {\n var _this = _super.call(this, apiController) || this;\n\n _this.connector = connector;\n return _this;\n }\n\n Object.defineProperty(DeleteConnectorRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.DeleteConnector;\n },\n enumerable: false,\n configurable: true\n });\n\n DeleteConnectorRequestedEntity.prototype.createEventArgs = function () {\n return new DeleteConnectorEventArgs(this.apiController.createNativeConnector(this.connector));\n };\n\n Object.defineProperty(DeleteConnectorRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"deleteConnector\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(DeleteConnectorRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + (this.connector && this.connector.key);\n },\n enumerable: false,\n configurable: true\n });\n\n DeleteConnectorRequestedEntity.prototype.equals = function (other) {\n if (other instanceof DeleteConnectorRequestedEntity) return this.connector === other.connector;\n return false;\n };\n\n return DeleteConnectorRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.DeleteConnectorRequestedEntity = DeleteConnectorRequestedEntity;\n\n var DeleteConnectorEventArgs =\n /** @class */\n function (_super) {\n __extends(DeleteConnectorEventArgs, _super);\n\n function DeleteConnectorEventArgs(connector) {\n var _this = _super.call(this) || this;\n\n _this.connector = connector;\n return _this;\n }\n\n return DeleteConnectorEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.DeleteConnectorEventArgs = DeleteConnectorEventArgs;\n /***/\n },\n /* 359 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics243 = function extendStatics(d, b) {\n _extendStatics243 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics243(d, b);\n };\n\n return function (d, b) {\n _extendStatics243(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AddShapeFromToolboxEventArgs = exports.AddShapeFromToolboxRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var AddShapeFromToolboxRequestedEntity =\n /** @class */\n function (_super) {\n __extends(AddShapeFromToolboxRequestedEntity, _super);\n\n function AddShapeFromToolboxRequestedEntity(apiController, shapeType) {\n var _this = _super.call(this, apiController) || this;\n\n _this.shapeType = shapeType;\n return _this;\n }\n\n Object.defineProperty(AddShapeFromToolboxRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.AddShapeFromToolbox;\n },\n enumerable: false,\n configurable: true\n });\n\n AddShapeFromToolboxRequestedEntity.prototype.createEventArgs = function () {\n return new AddShapeFromToolboxEventArgs(this.shapeType);\n };\n\n Object.defineProperty(AddShapeFromToolboxRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"addShapeFromToolbox\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AddShapeFromToolboxRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + this.shapeType;\n },\n enumerable: false,\n configurable: true\n });\n\n AddShapeFromToolboxRequestedEntity.prototype.equals = function (other) {\n if (other instanceof AddShapeFromToolboxRequestedEntity) return this.shapeType === other.shapeType;\n return false;\n };\n\n return AddShapeFromToolboxRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.AddShapeFromToolboxRequestedEntity = AddShapeFromToolboxRequestedEntity;\n\n var AddShapeFromToolboxEventArgs =\n /** @class */\n function (_super) {\n __extends(AddShapeFromToolboxEventArgs, _super);\n\n function AddShapeFromToolboxEventArgs(shapeType) {\n var _this = _super.call(this) || this;\n\n _this.shapeType = shapeType;\n return _this;\n }\n\n return AddShapeFromToolboxEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.AddShapeFromToolboxEventArgs = AddShapeFromToolboxEventArgs;\n /***/\n },\n /* 360 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics244 = function extendStatics(d, b) {\n _extendStatics244 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics244(d, b);\n };\n\n return function (d, b) {\n _extendStatics244(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectionEventArgs = exports.ChangeConnectionRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var ChangeConnectionRequestedEntity =\n /** @class */\n function (_super) {\n __extends(ChangeConnectionRequestedEntity, _super);\n\n function ChangeConnectionRequestedEntity(apiController, connector, shape, oldShape, position, connectionPointIndex) {\n var _this = _super.call(this, apiController) || this;\n\n _this.connector = connector;\n _this.shape = shape;\n _this.oldShape = oldShape;\n _this.position = position;\n _this.connectionPointIndex = connectionPointIndex;\n return _this;\n }\n\n Object.defineProperty(ChangeConnectionRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.ChangeConnection;\n },\n enumerable: false,\n configurable: true\n });\n\n ChangeConnectionRequestedEntity.prototype.createEventArgs = function () {\n return new ChangeConnectionEventArgs(this.apiController.createNativeConnector(this.connector), this.apiController.createNativeShape(this.shape), this.apiController.createNativeShape(this.oldShape), this.position, this.connectionPointIndex);\n };\n\n Object.defineProperty(ChangeConnectionRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"changeConnection\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ChangeConnectionRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + (this.connector && this.connector.key) + \"_\" + this.position;\n },\n enumerable: false,\n configurable: true\n });\n\n ChangeConnectionRequestedEntity.prototype.equals = function (other) {\n if (other instanceof ChangeConnectionRequestedEntity) {\n var connectorsAreEqual = !this.connector && !other.connector || this.connector && other.connector && this.connector === other.connector;\n var shapesAreEqual = !this.shape && !other.shape || this.shape && other.shape && this.shape === other.shape;\n var oldShapesAreEqual = !this.oldShape && !other.oldShape || this.oldShape && other.oldShape && this.oldShape === other.oldShape;\n return shapesAreEqual && oldShapesAreEqual && connectorsAreEqual && this.position === other.position && this.connectionPointIndex === other.connectionPointIndex;\n }\n\n return false;\n };\n\n return ChangeConnectionRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.ChangeConnectionRequestedEntity = ChangeConnectionRequestedEntity;\n\n var ChangeConnectionEventArgs =\n /** @class */\n function (_super) {\n __extends(ChangeConnectionEventArgs, _super);\n\n function ChangeConnectionEventArgs(connector, shape, oldShape, position, connectionPointIndex) {\n var _this = _super.call(this) || this;\n\n _this.connector = connector;\n _this.shape = shape;\n _this.oldShape = oldShape;\n _this.position = position;\n _this.connectionPointIndex = connectionPointIndex;\n return _this;\n }\n\n return ChangeConnectionEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.ChangeConnectionEventArgs = ChangeConnectionEventArgs;\n /***/\n },\n /* 361 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics245 = function extendStatics(d, b) {\n _extendStatics245 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics245(d, b);\n };\n\n return function (d, b) {\n _extendStatics245(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectorPointsEventArgs = exports.ChangeConnectorPointsRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var Utils_1 = __webpack_require__(3);\n\n var ChangeConnectorPointsRequestedEntity =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorPointsRequestedEntity, _super);\n\n function ChangeConnectorPointsRequestedEntity(apiController, connector, oldPoints, points) {\n var _this = _super.call(this, apiController) || this;\n\n _this.connector = connector;\n _this.oldPoints = oldPoints;\n _this.points = points;\n return _this;\n }\n\n Object.defineProperty(ChangeConnectorPointsRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.ChangeConnectorPoints;\n },\n enumerable: false,\n configurable: true\n });\n\n ChangeConnectorPointsRequestedEntity.prototype.createEventArgs = function () {\n var _this = this;\n\n return new ChangeConnectorPointsEventArgs(this.apiController.createNativeConnector(this.connector), this.oldPoints.map(function (pt) {\n return _this.apiController.convertPoint(pt);\n }), this.points.map(function (pt) {\n return _this.apiController.convertPoint(pt);\n }));\n };\n\n Object.defineProperty(ChangeConnectorPointsRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"changeConnectorPoints\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ChangeConnectorPointsRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + (this.connector && this.connector.key);\n },\n enumerable: false,\n configurable: true\n });\n\n ChangeConnectorPointsRequestedEntity.prototype.equals = function (other) {\n if (other instanceof ChangeConnectorPointsRequestedEntity) return this.connector === other.connector && Utils_1.GeometryUtils.arePointsEqual(this.oldPoints, other.oldPoints) && Utils_1.GeometryUtils.arePointsEqual(this.points, other.points);\n return false;\n };\n\n return ChangeConnectorPointsRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.ChangeConnectorPointsRequestedEntity = ChangeConnectorPointsRequestedEntity;\n\n var ChangeConnectorPointsEventArgs =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorPointsEventArgs, _super);\n\n function ChangeConnectorPointsEventArgs(connector, oldPoints, points) {\n var _this = _super.call(this) || this;\n\n _this.connector = connector;\n _this.oldPoints = oldPoints;\n _this.points = points;\n return _this;\n }\n\n return ChangeConnectorPointsEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.ChangeConnectorPointsEventArgs = ChangeConnectorPointsEventArgs;\n /***/\n },\n /* 362 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics246 = function extendStatics(d, b) {\n _extendStatics246 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics246(d, b);\n };\n\n return function (d, b) {\n _extendStatics246(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BeforeChangeShapeTextEventArgs = exports.BeforeChangeShapeTextRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var BeforeChangeShapeTextRequestedEntity =\n /** @class */\n function (_super) {\n __extends(BeforeChangeShapeTextRequestedEntity, _super);\n\n function BeforeChangeShapeTextRequestedEntity(apiController, shape) {\n var _this = _super.call(this, apiController) || this;\n\n _this.shape = shape;\n return _this;\n }\n\n Object.defineProperty(BeforeChangeShapeTextRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.BeforeChangeShapeText;\n },\n enumerable: false,\n configurable: true\n });\n\n BeforeChangeShapeTextRequestedEntity.prototype.createEventArgs = function () {\n return new BeforeChangeShapeTextEventArgs(this.apiController.createNativeShape(this.shape));\n };\n\n Object.defineProperty(BeforeChangeShapeTextRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"changeShapeText\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BeforeChangeShapeTextRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return \"before\" + this.settingsKey + \"_\" + (this.shape && this.shape.key);\n },\n enumerable: false,\n configurable: true\n });\n\n BeforeChangeShapeTextRequestedEntity.prototype.equals = function (other) {\n if (other instanceof BeforeChangeShapeTextRequestedEntity) return this.shape === other.shape && this.shape.text === other.shape.text;\n return false;\n };\n\n return BeforeChangeShapeTextRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.BeforeChangeShapeTextRequestedEntity = BeforeChangeShapeTextRequestedEntity;\n\n var BeforeChangeShapeTextEventArgs =\n /** @class */\n function (_super) {\n __extends(BeforeChangeShapeTextEventArgs, _super);\n\n function BeforeChangeShapeTextEventArgs(shape) {\n var _this = _super.call(this) || this;\n\n _this.shape = shape;\n return _this;\n }\n\n return BeforeChangeShapeTextEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.BeforeChangeShapeTextEventArgs = BeforeChangeShapeTextEventArgs;\n /***/\n },\n /* 363 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics247 = function extendStatics(d, b) {\n _extendStatics247 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics247(d, b);\n };\n\n return function (d, b) {\n _extendStatics247(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BeforeChangeConnectorTextEventArgs = exports.BeforeChangeConnectorTextRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var BeforeChangeConnectorTextRequestedEntity =\n /** @class */\n function (_super) {\n __extends(BeforeChangeConnectorTextRequestedEntity, _super);\n\n function BeforeChangeConnectorTextRequestedEntity(apiController, connector, position) {\n var _this = _super.call(this, apiController) || this;\n\n _this.connector = connector;\n _this.position = position;\n return _this;\n }\n\n Object.defineProperty(BeforeChangeConnectorTextRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.BeforeChangeConnectorText;\n },\n enumerable: false,\n configurable: true\n });\n\n BeforeChangeConnectorTextRequestedEntity.prototype.createEventArgs = function () {\n return new BeforeChangeConnectorTextEventArgs(this.apiController.createNativeConnector(this.connector), this.position, this.connector.texts.map(function (t) {\n return t;\n }).sort(function (a, b) {\n return a.position - b.position;\n }).indexOf(this.connector.texts.get(this.position)));\n };\n\n Object.defineProperty(BeforeChangeConnectorTextRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"changeConnectorText\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(BeforeChangeConnectorTextRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return \"before\" + this.settingsKey + \"_\" + (this.connector && this.connector.key);\n },\n enumerable: false,\n configurable: true\n });\n\n BeforeChangeConnectorTextRequestedEntity.prototype.equals = function (other) {\n if (other instanceof BeforeChangeConnectorTextRequestedEntity) return this.connector === other.connector && this.position === other.position && this.connector.texts.get(this.position) === other.connector.texts.get(other.position);\n return false;\n };\n\n return BeforeChangeConnectorTextRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.BeforeChangeConnectorTextRequestedEntity = BeforeChangeConnectorTextRequestedEntity;\n\n var BeforeChangeConnectorTextEventArgs =\n /** @class */\n function (_super) {\n __extends(BeforeChangeConnectorTextEventArgs, _super);\n\n function BeforeChangeConnectorTextEventArgs(connector, position, index) {\n var _this = _super.call(this) || this;\n\n _this.connector = connector;\n _this.position = position;\n _this.index = index;\n return _this;\n }\n\n return BeforeChangeConnectorTextEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.BeforeChangeConnectorTextEventArgs = BeforeChangeConnectorTextEventArgs;\n /***/\n },\n /* 364 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics248 = function extendStatics(d, b) {\n _extendStatics248 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics248(d, b);\n };\n\n return function (d, b) {\n _extendStatics248(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeShapeTextEventArgs = exports.ChangeShapeTextRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var ChangeShapeTextRequestedEntity =\n /** @class */\n function (_super) {\n __extends(ChangeShapeTextRequestedEntity, _super);\n\n function ChangeShapeTextRequestedEntity(apiController, shape, text) {\n var _this = _super.call(this, apiController) || this;\n\n _this.shape = shape;\n _this.text = text;\n return _this;\n }\n\n Object.defineProperty(ChangeShapeTextRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.ChangeShapeText;\n },\n enumerable: false,\n configurable: true\n });\n\n ChangeShapeTextRequestedEntity.prototype.createEventArgs = function () {\n return new ChangeShapeTextEventArgs(this.apiController.createNativeShape(this.shape), this.text);\n };\n\n Object.defineProperty(ChangeShapeTextRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"changeShapeText\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ChangeShapeTextRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\n },\n enumerable: false,\n configurable: true\n });\n\n ChangeShapeTextRequestedEntity.prototype.equals = function (other) {\n if (other instanceof ChangeShapeTextRequestedEntity) return this.shape === other.shape && this.text === other.text;\n return false;\n };\n\n return ChangeShapeTextRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.ChangeShapeTextRequestedEntity = ChangeShapeTextRequestedEntity;\n\n var ChangeShapeTextEventArgs =\n /** @class */\n function (_super) {\n __extends(ChangeShapeTextEventArgs, _super);\n\n function ChangeShapeTextEventArgs(shape, text) {\n var _this = _super.call(this) || this;\n\n _this.shape = shape;\n _this.text = text;\n return _this;\n }\n\n return ChangeShapeTextEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.ChangeShapeTextEventArgs = ChangeShapeTextEventArgs;\n /***/\n },\n /* 365 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics249 = function extendStatics(d, b) {\n _extendStatics249 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics249(d, b);\n };\n\n return function (d, b) {\n _extendStatics249(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ChangeConnectorTextEventArgs = exports.ChangeConnectorTextRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var ChangeConnectorTextRequestedEntity =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorTextRequestedEntity, _super);\n\n function ChangeConnectorTextRequestedEntity(apiController, connector, position, text) {\n var _this = _super.call(this, apiController) || this;\n\n _this.connector = connector;\n _this.position = position;\n _this.text = text;\n return _this;\n }\n\n Object.defineProperty(ChangeConnectorTextRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.ChangeConnectorText;\n },\n enumerable: false,\n configurable: true\n });\n\n ChangeConnectorTextRequestedEntity.prototype.createEventArgs = function () {\n return new ChangeConnectorTextEventArgs(this.apiController.createNativeConnector(this.connector), this.position, this.connector.texts.map(function (t) {\n return t;\n }).sort(function (a, b) {\n return a.position - b.position;\n }).indexOf(this.connector.texts.get(this.position)), this.text);\n };\n\n Object.defineProperty(ChangeConnectorTextRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"changeConnectorText\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ChangeConnectorTextRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + (this.connector && this.connector.key);\n },\n enumerable: false,\n configurable: true\n });\n\n ChangeConnectorTextRequestedEntity.prototype.equals = function (other) {\n if (other instanceof ChangeConnectorTextRequestedEntity) return this.connector === other.connector && this.position === other.position && this.text === other.text;\n return false;\n };\n\n return ChangeConnectorTextRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.ChangeConnectorTextRequestedEntity = ChangeConnectorTextRequestedEntity;\n\n var ChangeConnectorTextEventArgs =\n /** @class */\n function (_super) {\n __extends(ChangeConnectorTextEventArgs, _super);\n\n function ChangeConnectorTextEventArgs(connector, position, index, text) {\n var _this = _super.call(this) || this;\n\n _this.connector = connector;\n _this.position = position;\n _this.index = index;\n _this.text = text;\n return _this;\n }\n\n return ChangeConnectorTextEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.ChangeConnectorTextEventArgs = ChangeConnectorTextEventArgs;\n /***/\n },\n /* 366 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.PermissionsProviderStorage = void 0;\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var PermissionsProviderStorage =\n /** @class */\n function () {\n function PermissionsProviderStorage() {\n this.interactingItems = {};\n this.storedPermissions = {};\n }\n\n PermissionsProviderStorage.prototype.addInteractingItem = function (item, operation) {\n var key = this.getInteractingItemKey(item, operation);\n if (this.interactingItems[key] === undefined && (item instanceof Shape_1.Shape || item instanceof Connector_1.Connector)) this.interactingItems[key] = item.clone();\n };\n\n PermissionsProviderStorage.prototype.getInteractingItem = function (item, operation) {\n var key = this.getInteractingItemKey(item, operation);\n return this.interactingItems[key];\n };\n\n PermissionsProviderStorage.prototype.getInteractingItemCount = function () {\n return Object.keys(this.interactingItems).length;\n };\n\n PermissionsProviderStorage.prototype.clearInteractingItems = function () {\n this.interactingItems = {};\n };\n\n PermissionsProviderStorage.prototype.getInteractingItemKey = function (item, operation) {\n return item.key + (operation !== undefined ? \"_\" + operation.toString() : \"\");\n };\n\n PermissionsProviderStorage.prototype.needStorePermissions = function () {\n return this.storePermissions;\n };\n\n PermissionsProviderStorage.prototype.beginStorePermissions = function () {\n this.storePermissions = true;\n };\n\n PermissionsProviderStorage.prototype.endStorePermissions = function () {\n this.storePermissions = false;\n this.storedPermissions = {};\n };\n\n PermissionsProviderStorage.prototype.isStoredPermissionsGranted = function () {\n var keys = Object.keys(this.storedPermissions);\n var granted = true;\n\n for (var i = 0; i < keys.length; i++) {\n granted = granted && this.storedPermissions[keys[i]];\n }\n\n return granted;\n };\n\n PermissionsProviderStorage.prototype.storePermission = function (key, allowed) {\n this.storedPermissions[key] = allowed;\n };\n\n return PermissionsProviderStorage;\n }();\n\n exports.PermissionsProviderStorage = PermissionsProviderStorage;\n /***/\n },\n /* 367 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics250 = function extendStatics(d, b) {\n _extendStatics250 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics250(d, b);\n };\n\n return function (d, b) {\n _extendStatics250(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ResizeShapeEventArgs = exports.ResizeShapeRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var ResizeShapeRequestedEntity =\n /** @class */\n function (_super) {\n __extends(ResizeShapeRequestedEntity, _super);\n\n function ResizeShapeRequestedEntity(apiController, shape, oldSize, size) {\n var _this = _super.call(this, apiController) || this;\n\n _this.shape = shape;\n _this.oldSize = oldSize;\n _this.size = size;\n return _this;\n }\n\n Object.defineProperty(ResizeShapeRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.ResizeShape;\n },\n enumerable: false,\n configurable: true\n });\n\n ResizeShapeRequestedEntity.prototype.createEventArgs = function () {\n return new ResizeShapeEventArgs(this.apiController.createNativeShape(this.shape), this.apiController.convertSize(this.oldSize), this.apiController.convertSize(this.size));\n };\n\n Object.defineProperty(ResizeShapeRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"resizeShape\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ResizeShapeRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\n },\n enumerable: false,\n configurable: true\n });\n\n ResizeShapeRequestedEntity.prototype.equals = function (other) {\n if (other instanceof ResizeShapeRequestedEntity) return this.shape === other.shape && this.oldSize.equals(other.oldSize) && this.size.equals(other.size);\n return false;\n };\n\n return ResizeShapeRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.ResizeShapeRequestedEntity = ResizeShapeRequestedEntity;\n\n var ResizeShapeEventArgs =\n /** @class */\n function (_super) {\n __extends(ResizeShapeEventArgs, _super);\n\n function ResizeShapeEventArgs(shape, oldSize, size) {\n var _this = _super.call(this) || this;\n\n _this.shape = shape;\n _this.oldSize = oldSize;\n _this.size = size;\n return _this;\n }\n\n return ResizeShapeEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.ResizeShapeEventArgs = ResizeShapeEventArgs;\n /***/\n },\n /* 368 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics251 = function extendStatics(d, b) {\n _extendStatics251 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics251(d, b);\n };\n\n return function (d, b) {\n _extendStatics251(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.MoveShapeEventArgs = exports.MoveShapeRequestedEntity = void 0;\n\n var ModelOperationSettings_1 = __webpack_require__(16);\n\n var RequestedEntity_1 = __webpack_require__(24);\n\n var MoveShapeRequestedEntity =\n /** @class */\n function (_super) {\n __extends(MoveShapeRequestedEntity, _super);\n\n function MoveShapeRequestedEntity(apiController, shape, oldPosition, position) {\n var _this = _super.call(this, apiController) || this;\n\n _this.shape = shape;\n _this.oldPosition = oldPosition;\n _this.position = position;\n return _this;\n }\n\n Object.defineProperty(MoveShapeRequestedEntity.prototype, \"operation\", {\n get: function get() {\n return ModelOperationSettings_1.DiagramModelOperation.MoveShape;\n },\n enumerable: false,\n configurable: true\n });\n\n MoveShapeRequestedEntity.prototype.createEventArgs = function () {\n return new MoveShapeEventArgs(this.apiController.createNativeShape(this.shape), this.apiController.convertPoint(this.oldPosition), this.apiController.convertPoint(this.position));\n };\n\n Object.defineProperty(MoveShapeRequestedEntity.prototype, \"settingsKey\", {\n get: function get() {\n return \"moveShape\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(MoveShapeRequestedEntity.prototype, \"storageKey\", {\n get: function get() {\n return this.settingsKey + \"_\" + (this.shape && this.shape.key);\n },\n enumerable: false,\n configurable: true\n });\n\n MoveShapeRequestedEntity.prototype.equals = function (other) {\n if (other instanceof MoveShapeRequestedEntity) return this.shape === other.shape && this.oldPosition.equals(other.oldPosition) && this.position.equals(other.position);\n return false;\n };\n\n return MoveShapeRequestedEntity;\n }(RequestedEntity_1.RequestedEntity);\n\n exports.MoveShapeRequestedEntity = MoveShapeRequestedEntity;\n\n var MoveShapeEventArgs =\n /** @class */\n function (_super) {\n __extends(MoveShapeEventArgs, _super);\n\n function MoveShapeEventArgs(shape, oldPosition, position) {\n var _this = _super.call(this) || this;\n\n _this.shape = shape;\n _this.oldPosition = oldPosition;\n _this.position = position;\n return _this;\n }\n\n return MoveShapeEventArgs;\n }(RequestedEntity_1.PermissionRequestEventArgs);\n\n exports.MoveShapeEventArgs = MoveShapeEventArgs;\n /***/\n },\n /* 369 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorRoutingModel = exports.ConnectorRoutingPenaltyDescription = void 0;\n\n var Settings_1 = __webpack_require__(28);\n\n var Shape_1 = __webpack_require__(13);\n\n var Connector_1 = __webpack_require__(6);\n\n var ConnectorProperties_1 = __webpack_require__(30);\n\n var RightAngleConnectorRoutingStrategy_1 = __webpack_require__(370);\n\n var ConnectorRoutingPenaltyDescription =\n /** @class */\n function () {\n function ConnectorRoutingPenaltyDescription() {\n this.shape = 20.0;\n this.margin = 2.0;\n this.turnBack = 20.0;\n this.turnLeft = 3.1;\n this.turnRight = 3.0;\n }\n\n return ConnectorRoutingPenaltyDescription;\n }();\n\n exports.ConnectorRoutingPenaltyDescription = ConnectorRoutingPenaltyDescription;\n\n var ConnectorRoutingModel =\n /** @class */\n function () {\n function ConnectorRoutingModel() {\n this.connectorRoutingMode = Settings_1.ConnectorRoutingMode.AllShapesOnly;\n this.shapeMargins = Connector_1.Connector.minOffset;\n this.shouldReverseConnections = true;\n this.shouldResizeConnections = true;\n this.penaltyDescription = new ConnectorRoutingPenaltyDescription();\n }\n\n ConnectorRoutingModel.prototype.initialize = function (model) {\n this.model = model;\n };\n\n ConnectorRoutingModel.prototype.createStrategy = function (option) {\n if (this.model !== undefined && this.connectorRoutingMode !== Settings_1.ConnectorRoutingMode.None && option === ConnectorProperties_1.ConnectorLineOption.Orthogonal) return new RightAngleConnectorRoutingStrategy_1.RightAngleConnectorRoutingStrategy(this);\n return undefined;\n };\n\n ConnectorRoutingModel.prototype.getItems = function (beginConnectorShape, endConnectorShape) {\n return this.getShapes(beginConnectorShape, endConnectorShape);\n };\n\n ConnectorRoutingModel.prototype.notifyConnectorRoutingModeChanged = function (connectorRoutingMode) {\n this.connectorRoutingMode = connectorRoutingMode;\n };\n\n ConnectorRoutingModel.prototype.getShapes = function (beginConnectorShape, endConnectorShape) {\n if (this.model === undefined || this.connectorRoutingMode === undefined || this.connectorRoutingMode === Settings_1.ConnectorRoutingMode.None) return [];\n if (this.connectorRoutingMode === Settings_1.ConnectorRoutingMode.AllShapesOnly) return this.model.items.filter(function (i) {\n return i instanceof Shape_1.Shape;\n });\n return this.getConnectorShapes(beginConnectorShape, endConnectorShape);\n };\n\n ConnectorRoutingModel.prototype.getConnectorShapes = function (beginConnectorShape, endConnectorShape) {\n var result = [];\n if (beginConnectorShape) result.push(beginConnectorShape);\n if (endConnectorShape && beginConnectorShape !== endConnectorShape) result.push(endConnectorShape);\n return result;\n };\n\n return ConnectorRoutingModel;\n }();\n\n exports.ConnectorRoutingModel = ConnectorRoutingModel;\n /***/\n },\n /* 370 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RightAngleConnectorRoutingStrategy = void 0;\n\n var segment_1 = __webpack_require__(33);\n\n var ConnectorRenderPoint_1 = __webpack_require__(29);\n\n var RightAngleConnectorRoutingContext_1 = __webpack_require__(371);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var RightAngleConnectorRoutingStrategy =\n /** @class */\n function () {\n function RightAngleConnectorRoutingStrategy(model) {\n this.model = model;\n }\n\n RightAngleConnectorRoutingStrategy.prototype.createRenderPoints = function (points, supportRenderPoints, beginConnectionShape, endConnectionShape, beginConnectionPointIndex, endConnectionPointIndex, container) {\n if (supportRenderPoints.length > 1) {\n var context = new RightAngleConnectorRoutingContext_1.RightAngleConnectorRoutingContext(this.model, points, supportRenderPoints, beginConnectionShape, endConnectionShape, beginConnectionPointIndex, endConnectionPointIndex);\n context.initialize(container);\n if (context.shouldCreateRenderPoints) return this.createRenderPointsCore(context);\n }\n };\n\n RightAngleConnectorRoutingStrategy.prototype.clone = function () {\n return new RightAngleConnectorRoutingStrategy(this.model);\n };\n\n RightAngleConnectorRoutingStrategy.prototype.onAddPoint = function (points, pointIndex, point, oldRenderPoints) {\n var renderPoints = oldRenderPoints.map(function (p) {\n return new ConnectorRenderPoint_1.ConnectorRenderPoint(p.x, p.y, p.pointIndex);\n });\n var renderPointIndex = ModelUtils_1.ModelUtils.findFirstPointIndex(renderPoints, function (p) {\n return p.equals(point);\n });\n\n if (renderPointIndex === 0) {\n renderPoints.splice(1, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(point.x, point.y, pointIndex));\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 2);\n }\n\n var lastRenderPointIndex = renderPoints.length - 1;\n\n if (renderPointIndex === lastRenderPointIndex) {\n renderPoints.splice(lastRenderPointIndex, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(point.x, point.y, pointIndex));\n renderPoints[lastRenderPointIndex + 1].pointIndex = pointIndex + 1;\n return renderPoints;\n }\n\n if (renderPointIndex > 0) {\n var oldRenderPoint = renderPoints[renderPointIndex];\n renderPoints[renderPointIndex] = new ConnectorRenderPoint_1.ConnectorRenderPoint(oldRenderPoint.x, oldRenderPoint.y, pointIndex, oldRenderPoint.skipped);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, renderPointIndex + 1);\n }\n\n var firstSegment = new segment_1.Segment(renderPoints[0], renderPoints[1]);\n var newRenderPoint = new ConnectorRenderPoint_1.ConnectorRenderPoint(point.x, point.y);\n\n if (firstSegment.containsPoint(newRenderPoint)) {\n renderPoints.splice(1, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(newRenderPoint.x, newRenderPoint.y, -1));\n renderPoints.splice(2, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(newRenderPoint.x, newRenderPoint.y, pointIndex));\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 3);\n }\n\n var lastSegment = new segment_1.Segment(renderPoints[lastRenderPointIndex - 1], renderPoints[lastRenderPointIndex]);\n\n if (lastSegment.containsPoint(newRenderPoint)) {\n renderPoints.splice(lastRenderPointIndex, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(newRenderPoint.x, newRenderPoint.y, pointIndex));\n renderPoints.splice(lastRenderPointIndex + 1, 0, new ConnectorRenderPoint_1.ConnectorRenderPoint(newRenderPoint.x, newRenderPoint.y, -1));\n renderPoints[lastRenderPointIndex + 2].pointIndex = pointIndex + 1;\n return renderPoints;\n }\n\n return oldRenderPoints;\n };\n\n RightAngleConnectorRoutingStrategy.prototype.onDeletePoint = function (points, pointIndex, oldRenderPoints) {\n var renderPoints = oldRenderPoints.map(function (p) {\n return new ConnectorRenderPoint_1.ConnectorRenderPoint(p.x, p.y, p.pointIndex);\n });\n var renderPointIndex = this.getRenderPointIndexByPointIndex(renderPoints, pointIndex);\n\n if (renderPointIndex === 1) {\n var previuosRenderPoint = renderPoints[0];\n var currentRenderPoint_1 = renderPoints[1];\n\n if (previuosRenderPoint.equals(currentRenderPoint_1)) {\n renderPoints.splice(1, 1);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 1);\n }\n\n renderPoints[1] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint_1.x, currentRenderPoint_1.y, -1, currentRenderPoint_1.skipped);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 2);\n }\n\n if (renderPointIndex === 2) {\n var previuosRenderPoint = renderPoints[1];\n var currentRenderPoint_2 = renderPoints[2];\n\n if (previuosRenderPoint.equals(currentRenderPoint_2)) {\n renderPoints.splice(1, 2);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 1);\n }\n\n renderPoints[2] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint_2.x, currentRenderPoint_2.y, -1, currentRenderPoint_2.skipped);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, 3);\n }\n\n var lastRenderPointIndex = renderPoints.length - 1;\n\n if (renderPointIndex === lastRenderPointIndex - 1) {\n var currentRenderPoint_3 = renderPoints[lastRenderPointIndex - 1];\n var nextRenderPoint = renderPoints[lastRenderPointIndex];\n\n if (currentRenderPoint_3.equals(nextRenderPoint)) {\n renderPoints.splice(lastRenderPointIndex - 1, 1);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, lastRenderPointIndex - 1);\n }\n\n renderPoints[lastRenderPointIndex - 1] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint_3.x, currentRenderPoint_3.y, -1, currentRenderPoint_3.skipped);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, lastRenderPointIndex);\n }\n\n if (renderPointIndex === lastRenderPointIndex - 2) {\n var currentRenderPoint_4 = renderPoints[lastRenderPointIndex - 2];\n var nextRenderPoint = renderPoints[lastRenderPointIndex - 1];\n\n if (currentRenderPoint_4.equals(nextRenderPoint)) {\n renderPoints.splice(lastRenderPointIndex - 2, 2);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, lastRenderPointIndex - 2);\n }\n\n renderPoints[lastRenderPointIndex - 2] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint_4.x, currentRenderPoint_4.y, -1, currentRenderPoint_4.skipped);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, lastRenderPointIndex - 1);\n }\n\n var currentRenderPoint = renderPoints[renderPointIndex];\n renderPoints[renderPointIndex] = new ConnectorRenderPoint_1.ConnectorRenderPoint(currentRenderPoint.x, currentRenderPoint.y, -1, currentRenderPoint.skipped);\n return ModelUtils_1.ModelUtils.validateRenderPointIndexes(points, renderPoints, renderPointIndex + 1);\n };\n\n RightAngleConnectorRoutingStrategy.prototype.onMovePoint = function (points, pointIndex, point, oldRenderPoints) {\n if (pointIndex === 0 || pointIndex === points.length - 1) return oldRenderPoints;\n var renderPoints = oldRenderPoints.map(function (p) {\n return new ConnectorRenderPoint_1.ConnectorRenderPoint(p.x, p.y, p.pointIndex);\n });\n this.onMovePointCore(renderPoints, pointIndex, point);\n ModelUtils_1.ModelUtils.skipUnnecessaryRightAngleRenderPoints(renderPoints);\n return renderPoints;\n };\n\n RightAngleConnectorRoutingStrategy.prototype.onMovePoints = function (points, beginPointIndex, beginPoint, lastPointIndex, lastPoint, oldRenderPoints) {\n if (beginPointIndex === 0 || lastPointIndex === points.length - 1) return oldRenderPoints;\n var renderPoints = oldRenderPoints.map(function (p) {\n return new ConnectorRenderPoint_1.ConnectorRenderPoint(p.x, p.y, p.pointIndex);\n });\n this.onMovePointCore(renderPoints, beginPointIndex, beginPoint);\n this.onMovePointCore(renderPoints, lastPointIndex, lastPoint);\n ModelUtils_1.ModelUtils.skipUnnecessaryRightAngleRenderPoints(renderPoints);\n return renderPoints;\n };\n\n RightAngleConnectorRoutingStrategy.prototype.onMovePointCore = function (newRenderPoints, pointIndex, newPoint) {\n var renderPointIndex = this.getRenderPointIndexByPointIndex(newRenderPoints, pointIndex);\n\n if (renderPointIndex >= 0) {\n var oldRenderPoint = newRenderPoints[renderPointIndex];\n newRenderPoints[renderPointIndex] = new ConnectorRenderPoint_1.ConnectorRenderPoint(newPoint.x, newPoint.y, pointIndex, oldRenderPoint.skipped);\n }\n };\n\n RightAngleConnectorRoutingStrategy.prototype.createRenderPointsCore = function (context) {\n var result = [];\n var currentIndex = -1;\n var currentRenderSegment;\n var currentStartCustomPointIndex = -1;\n context.setup();\n var renderSegments = context.renderSegments;\n var endPoint = renderSegments[renderSegments.length - 1].endPoint;\n var points = context.points;\n\n do {\n this.registerCustomPoints(result, points, currentStartCustomPointIndex + 2, renderSegments[currentIndex + 1].startPointIndex - 1);\n currentIndex++;\n currentRenderSegment = renderSegments[currentIndex];\n currentStartCustomPointIndex = currentRenderSegment.startPointIndex;\n this.registerRenderPoints(result, context.createRoutedPoints(currentRenderSegment.startInfo, currentRenderSegment.endInfo, currentRenderSegment.createProhibitedSegments()), currentStartCustomPointIndex);\n } while (!currentRenderSegment.endPoint.equals(endPoint));\n\n context.validateRenderPoints(result);\n return result;\n };\n\n RightAngleConnectorRoutingStrategy.prototype.getRenderPointIndexByPointIndex = function (points, index) {\n return ModelUtils_1.ModelUtils.findFirstPointIndex(points, function (p) {\n return p.pointIndex === index;\n });\n };\n\n RightAngleConnectorRoutingStrategy.prototype.registerRenderPoints = function (resultPath, routedPoints, beginPointIndex) {\n var _this = this;\n\n routedPoints.forEach(function (p, i) {\n var pointIndex = i === 0 ? beginPointIndex : i === routedPoints.length - 1 ? beginPointIndex + 1 : -1;\n\n _this.registerPoint(resultPath, p, pointIndex);\n });\n };\n\n RightAngleConnectorRoutingStrategy.prototype.registerCustomPoints = function (resultPath, points, startIndex, endIndex) {\n for (var i = startIndex; i <= endIndex; i++) {\n this.registerPoint(resultPath, points[i], i);\n }\n };\n\n RightAngleConnectorRoutingStrategy.prototype.registerPoint = function (resultPath, point, pointIndex) {\n resultPath.push(new ConnectorRenderPoint_1.ConnectorRenderPoint(point.x, point.y, pointIndex));\n };\n\n return RightAngleConnectorRoutingStrategy;\n }();\n\n exports.RightAngleConnectorRoutingStrategy = RightAngleConnectorRoutingStrategy;\n /***/\n },\n /* 371 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RightAngleConnectorRoutingContext = exports.IntersectingItemsByPointsContext = exports.CuttingItemsContext = void 0;\n\n var point_1 = __webpack_require__(1);\n\n var segment_1 = __webpack_require__(33);\n\n var vector_1 = __webpack_require__(58);\n\n var DiagramItem_1 = __webpack_require__(9);\n\n var RightAngleConnectorRoutingMathOperations_1 = __webpack_require__(159);\n\n var ConnectorRenderSegment_1 = __webpack_require__(372);\n\n var RoutingGrid_1 = __webpack_require__(374);\n\n var ModelUtils_1 = __webpack_require__(4);\n\n var AStarMetrics_1 = __webpack_require__(160);\n\n var AStarContext_1 = __webpack_require__(375);\n\n var AStarCalculator_1 = __webpack_require__(379);\n\n var Utils_1 = __webpack_require__(3);\n\n var CuttingItemsContext =\n /** @class */\n function () {\n function CuttingItemsContext() {\n this.cuttingItemKeys = [];\n }\n\n Object.defineProperty(CuttingItemsContext.prototype, \"isEmpty\", {\n get: function get() {\n return this.cuttingItemKeys.length === 0;\n },\n enumerable: false,\n configurable: true\n });\n\n CuttingItemsContext.prototype.registerShape = function (key, rect, segments) {\n if (Utils_1.GeometryUtils.areSegmentsCutRectangle(segments, rect)) {\n this.cuttingItemKeys.push(key);\n return true;\n }\n\n return false;\n };\n\n return CuttingItemsContext;\n }();\n\n exports.CuttingItemsContext = CuttingItemsContext;\n\n var IntersectingItemsByPointsContext =\n /** @class */\n function () {\n function IntersectingItemsByPointsContext() {\n this.items = {};\n }\n\n IntersectingItemsByPointsContext.prototype.getOrAddItems = function (point, getItems) {\n if (point) {\n var key = point.toString();\n var item = this.items[key];\n if (item !== undefined) return item.items;\n\n if (getItems) {\n var items = getItems(point);\n this.items[key] = {\n point: point,\n items: items\n };\n return items;\n }\n }\n\n return undefined;\n };\n\n return IntersectingItemsByPointsContext;\n }();\n\n exports.IntersectingItemsByPointsContext = IntersectingItemsByPointsContext;\n\n var RightAngleConnectorRoutingContext =\n /** @class */\n function () {\n function RightAngleConnectorRoutingContext(routingModel, points, supportRenderPoints, beginConnectionShape, endConnectionShape, beginConnectionPointIndex, endConnectionPointIndex) {\n this.routingModel = routingModel;\n this.points = points;\n this.supportRenderPoints = supportRenderPoints;\n this.beginConnectionShape = beginConnectionShape;\n this.endConnectionShape = endConnectionShape;\n this.beginConnectionSide = this.getConnectionSide(this.beginConnectionShape, beginConnectionPointIndex, this.beginPoint);\n this.endConnectionSide = this.getConnectionSide(this.endConnectionShape, endConnectionPointIndex, this.endPoint);\n this.ignorableItemKeys = {};\n this.cuttingShapesContext = new CuttingItemsContext();\n this.intersectedItemsByPointsContext = new IntersectingItemsByPointsContext();\n this.isInvalidRenderSegments = true;\n }\n\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"shapeMargins\", {\n get: function get() {\n return this.routingModel.shapeMargins;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"beginPoint\", {\n get: function get() {\n return this.points[0];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"endPoint\", {\n get: function get() {\n return this.points[this.points.length - 1];\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"hasIntersecting\", {\n get: function get() {\n return !this.cuttingShapesContext.isEmpty;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"shouldCreateRenderPoints\", {\n get: function get() {\n return this.isInvalidRenderSegments || !this.isSmallPath && (this.hasIntersecting || this.isReversedStartConnection || this.isReversedEndConnection);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"beginPathPoint\", {\n get: function get() {\n return this.beginConnectionSegment instanceof segment_1.Segment ? this.beginConnectionSegment.startPoint : this.beginConnectionSegment;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"endPathPoint\", {\n get: function get() {\n return this.endConnectionSegment instanceof segment_1.Segment ? this.endConnectionSegment.endPoint : this.endConnectionSegment;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"isReversedStartConnection\", {\n get: function get() {\n if (!this.beginConnectionShape || this.beginConnectionSide === DiagramItem_1.ConnectionPointSide.Undefined) return false;\n var beginConnectionSegment = this.beginConnectionSegment;\n return !(beginConnectionSegment instanceof point_1.Point) && this.isReversedConnectionSegment(this.supportSegments[0], beginConnectionSegment);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"isReversedEndConnection\", {\n get: function get() {\n if (!this.endConnectionShape || this.endConnectionSide === DiagramItem_1.ConnectionPointSide.Undefined) return false;\n var endConnectionSegment = this.endConnectionSegment;\n return !(endConnectionSegment instanceof point_1.Point) && this.isReversedConnectionSegment(this.supportSegments[this.supportSegments.length - 1], endConnectionSegment);\n },\n enumerable: false,\n configurable: true\n });\n\n RightAngleConnectorRoutingContext.prototype.isReversedConnectionSegment = function (supportSegment, connectionSegment) {\n return vector_1.Vector.scalarProduct(vector_1.Vector.fromSegment(supportSegment), vector_1.Vector.fromPoints(connectionSegment.startPoint, connectionSegment.endPoint)) <= 0;\n };\n\n Object.defineProperty(RightAngleConnectorRoutingContext.prototype, \"isSmallPath\", {\n get: function get() {\n var doubleMargins = 2 * this.routingModel.shapeMargins;\n return Math.abs(this.beginPathPoint.x - this.endPathPoint.x) < doubleMargins && Math.abs(this.beginPathPoint.y - this.endPathPoint.y) < doubleMargins;\n },\n enumerable: false,\n configurable: true\n });\n\n RightAngleConnectorRoutingContext.prototype.initialize = function (container) {\n this.processContainers(container);\n this.processSupportSegments();\n this.processIntersection();\n this.processConnections();\n this.processRenderSegments();\n };\n\n RightAngleConnectorRoutingContext.prototype.setup = function () {\n this.processRoutingGrid();\n this.processRoutingMetrics();\n };\n\n RightAngleConnectorRoutingContext.prototype.createRoutedPoints = function (startInfo, targetInfo, prohibitedSegments) {\n var startPathPoint = startInfo instanceof point_1.Point ? startInfo : startInfo.endPoint;\n var targetPathPoint = targetInfo instanceof point_1.Point ? targetInfo : targetInfo.startPoint;\n var context = this.createAStarContext(startPathPoint, targetPathPoint, prohibitedSegments);\n AStarCalculator_1.AStarCalculator.calculate(context);\n var result = context.path;\n this.addConnectionRoutedPoints(result, startInfo, targetInfo);\n RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.unionPoints(result);\n return result;\n };\n\n RightAngleConnectorRoutingContext.prototype.getIntersectedItems = function (point, predicate) {\n var _this = this;\n\n return this.intersectedItemsByPointsContext.getOrAddItems(point, function (p) {\n return _this.routingModel.getItems(_this.beginConnectionShape, _this.endConnectionShape).filter(function (s) {\n return !_this.isIgnorableItem(s) && predicate(p, s);\n });\n });\n };\n\n RightAngleConnectorRoutingContext.prototype.validateRenderPoints = function (result) {\n if (this.isInvalidRenderSegments) {\n RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.unionPoints(result);\n ModelUtils_1.ModelUtils.validateRenderPointIndexes(this.points, result, 0);\n }\n\n ModelUtils_1.ModelUtils.skipUnnecessaryRightAngleRenderPoints(result);\n };\n\n RightAngleConnectorRoutingContext.prototype.processContainers = function (container) {\n if (container) this.registerIgnorableShape(container);\n\n if (this.beginConnectionShape) {\n var beginShapeContainer = this.beginConnectionShape.container;\n if (beginShapeContainer) this.registerIgnorableShape(beginShapeContainer);\n }\n\n if (this.endConnectionShape) {\n var endShapeContainer = this.endConnectionShape.container;\n if (endShapeContainer) this.registerIgnorableShape(endShapeContainer);\n }\n };\n\n RightAngleConnectorRoutingContext.prototype.processSupportSegments = function () {\n this.supportSegments = this.createSupportSegments();\n };\n\n RightAngleConnectorRoutingContext.prototype.processIntersection = function () {\n var _this = this;\n\n var shapes = this.routingModel.getItems(this.beginConnectionShape, this.endConnectionShape);\n if (shapes) shapes.forEach(function (s) {\n var key = s.key;\n var rect = s.rectangle;\n\n if (!_this.cuttingShapesContext.registerShape(key, rect, _this.supportSegments)) {\n if (!_this.isConnectedByStart(s) && rect.containsPoint(_this.beginPoint) || !_this.isConnectedByEnd(s) && rect.containsPoint(_this.endPoint)) _this.registerIgnorableShape(s);\n } else if (_this.ignorableItemKeys[key] !== undefined) delete _this.ignorableItemKeys[key];\n });\n };\n\n RightAngleConnectorRoutingContext.prototype.processConnections = function () {\n var beginShapeContainsEndConnection = false;\n var endShapeContainsBeginConnection = false;\n\n if (this.beginConnectionShape !== this.endConnectionShape) {\n beginShapeContainsEndConnection = this.shapeContainsOtherConnection(this.beginConnectionShape, this.endConnectionShape, this.endPoint);\n endShapeContainsBeginConnection = this.shapeContainsOtherConnection(this.endConnectionShape, this.beginConnectionShape, this.beginPoint);\n if (beginShapeContainsEndConnection) this.registerIgnorableShape(this.beginConnectionShape);\n if (endShapeContainsBeginConnection) this.registerIgnorableShape(this.endConnectionShape);\n }\n\n var shapeMargins = this.routingModel.shapeMargins;\n this.beginConnectionSegment = this.createBeginConnectionSegment(shapeMargins, beginShapeContainsEndConnection);\n this.endConnectionSegment = this.createEndConnectionSegment(shapeMargins, endShapeContainsBeginConnection);\n };\n\n RightAngleConnectorRoutingContext.prototype.processRenderSegments = function () {\n this.isInvalidRenderSegments = false;\n this.renderSegments = this.createRenderSegments();\n\n for (var i = 0; i < this.renderSegments.length - 1; i++) {\n var renderSegment = this.renderSegments[i];\n var nextRenderSegment = this.renderSegments[i + 1];\n\n if (renderSegment.endPoint.equals(nextRenderSegment.startPoint)) {\n this.isInvalidRenderSegments = true;\n return;\n }\n }\n };\n\n RightAngleConnectorRoutingContext.prototype.createGridPoints = function () {\n var result = [];\n this.renderSegments.forEach(function (s) {\n return s.createGridPoints().forEach(function (p) {\n return result.push(p);\n });\n });\n return result;\n };\n\n RightAngleConnectorRoutingContext.prototype.processRoutingGrid = function () {\n this.routingGrid = this.createGrid();\n };\n\n RightAngleConnectorRoutingContext.prototype.processRoutingMetrics = function () {\n this.metrics = this.createAStarMetrics();\n };\n\n RightAngleConnectorRoutingContext.prototype.createAStarMetrics = function () {\n return new AStarMetrics_1.AStarMetrics(new AStarMetrics_1.TurnDirectionMetrics(this.routingModel.penaltyDescription), new AStarMetrics_1.IntersectedShapesMetrics(new AStarMetrics_1.IntersectedShapeMetrics(this.routingModel.penaltyDescription, this.routingModel.shapeMargins)));\n };\n\n RightAngleConnectorRoutingContext.prototype.createAStarContext = function (start, target, prohibitedSegments) {\n return new AStarContext_1.AStarContext(this, start, target, prohibitedSegments, this.routingGrid, this.metrics);\n };\n\n RightAngleConnectorRoutingContext.prototype.addConnectionRoutedPoints = function (path, startInfo, targetInfo) {\n if (startInfo instanceof segment_1.Segment) path.splice(0, 0, startInfo.startPoint);\n if (targetInfo instanceof segment_1.Segment) path.push(targetInfo.endPoint);\n };\n\n RightAngleConnectorRoutingContext.prototype.createSupportSegments = function () {\n var _this = this;\n\n return this.supportRenderPoints.length <= 1 ? [] : Utils_1.GeometryUtils.createSegments(this.supportRenderPoints).filter(function (s) {\n return !_this.isCustomSegment(s, _this.supportRenderPoints[0], _this.supportRenderPoints[_this.supportRenderPoints.length - 1]);\n });\n };\n\n RightAngleConnectorRoutingContext.prototype.isCustomSegment = function (segment, startSegmentsPoint, endSegmentsPoint) {\n var startRenderPoint = segment.startPoint;\n if (startRenderPoint.equals(startSegmentsPoint)) return false;\n var endRenderPoint = segment.endPoint;\n if (endRenderPoint.equals(endSegmentsPoint)) return false;\n return endRenderPoint.pointIndex - startRenderPoint.pointIndex === 1;\n };\n\n RightAngleConnectorRoutingContext.prototype.createRenderSegments = function () {\n var _this = this;\n\n var unionRoutingSegments = RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.createUnionSegments(this.supportSegments, function (ep, sp) {\n return _this.shouldCreateSegment(ep, sp);\n });\n var lastIndex = unionRoutingSegments.length - 1;\n return unionRoutingSegments.map(function (s, i) {\n return new ConnectorRenderSegment_1.ConnectorRenderSegment(i > 0 ? new point_1.Point(s.startPoint.x, s.startPoint.y) : _this.beginConnectionSegment, i < lastIndex ? new point_1.Point(s.endPoint.x, s.endPoint.y) : _this.endConnectionSegment, s.startPoint.pointIndex, _this.createPreviousCustomSegment(s.startPoint));\n });\n };\n\n RightAngleConnectorRoutingContext.prototype.createPreviousCustomSegment = function (startRoutingPoint) {\n var previuosPointIndex = startRoutingPoint.pointIndex - 1;\n return previuosPointIndex >= 0 ? new segment_1.Segment(this.points[previuosPointIndex].clone(), new point_1.Point(startRoutingPoint.x, startRoutingPoint.y)) : undefined;\n };\n\n RightAngleConnectorRoutingContext.prototype.shouldCreateSegment = function (prevEndPoint, startNextPoint) {\n return !prevEndPoint.equals(startNextPoint) || startNextPoint.pointIndex > 0;\n };\n\n RightAngleConnectorRoutingContext.prototype.isPathNormal = function (connectionSide) {\n if (connectionSide === DiagramItem_1.ConnectionPointSide.Undefined) return true;\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.isSegmentNormal(new segment_1.Segment(this.beginPoint, this.endPoint), connectionSide === DiagramItem_1.ConnectionPointSide.East || connectionSide === DiagramItem_1.ConnectionPointSide.West);\n };\n\n RightAngleConnectorRoutingContext.prototype.registerIgnorableShape = function (shape) {\n this.ignorableItemKeys[shape.key] = true;\n };\n\n RightAngleConnectorRoutingContext.prototype.isConnectedByStart = function (shape) {\n return this.beginConnectionShape && this.beginConnectionShape.key === shape.key && this.beginConnectionSide !== DiagramItem_1.ConnectionPointSide.Undefined;\n };\n\n RightAngleConnectorRoutingContext.prototype.isConnectedByEnd = function (shape) {\n return this.endConnectionShape && this.endConnectionShape.key === shape.key && this.endConnectionSide !== DiagramItem_1.ConnectionPointSide.Undefined;\n };\n\n RightAngleConnectorRoutingContext.prototype.getConnectionSide = function (shape, index, point) {\n return shape ? shape.getConnectionPointSideByIndex(index, point) : DiagramItem_1.ConnectionPointSide.Undefined;\n };\n\n RightAngleConnectorRoutingContext.prototype.shapeContainsOtherConnection = function (targetShape, otherShape, otherPoint) {\n if (!targetShape) return false;\n var targetRectangle = targetShape.rectangle;\n return targetRectangle.containsPoint(otherPoint) && (!otherShape || !otherShape.rectangle.equals(targetRectangle));\n };\n\n RightAngleConnectorRoutingContext.prototype.createBeginConnectionSegment = function (offset, beginShapeContainsEndConnection) {\n if (this.beginConnectionSide === DiagramItem_1.ConnectionPointSide.Undefined) return this.createBeginConnectionSegmentCore(offset);\n\n if (!beginShapeContainsEndConnection || !this.routingModel.shouldReverseConnections) {\n var segment = this.createBeginConnectionSegmentCore(offset);\n if (segment instanceof point_1.Point || !this.routingModel.shouldResizeConnections) return segment;\n var startPoint = segment.startPoint;\n var endPoint = segment.endPoint;\n var currentOffset = offset;\n\n while (this.hasIntersectedItemsByPoint(endPoint, startPoint, this.beginConnectionShape)) {\n currentOffset = currentOffset / 2;\n segment = this.createBeginConnectionSegmentCore(currentOffset);\n endPoint = segment.endPoint;\n }\n\n return segment;\n }\n\n if (!this.endConnectionShape) return this.createBeginConnectionSegmentCore(-offset);\n if (this.isPathNormal(this.endConnectionSide)) return this.createBeginConnectionSegmentCore(-offset);\n var reversedSegment = this.createBeginConnectionSegmentCore(-2 * offset);\n if (this.isEndConnectionRectanleLineIntersected(reversedSegment, false, true)) return this.createBeginConnectionSegmentCore(offset);\n return this.createBeginConnectionSegmentCore(-offset);\n };\n\n RightAngleConnectorRoutingContext.prototype.hasIntersectedItemsByPoint = function (point, secondPoint, connectionItem) {\n var intersectedItems = this.getIntersectedItems(point, function (p, s) {\n return s.rectangle.containsPoint(p) && !s.rectangle.containsPoint(secondPoint) && s.key !== connectionItem.key;\n });\n return intersectedItems !== undefined && intersectedItems.length > 0;\n };\n\n RightAngleConnectorRoutingContext.prototype.createEndConnectionSegment = function (offset, endShapeContainsBeginConnection) {\n if (this.endConnectionSide === DiagramItem_1.ConnectionPointSide.Undefined) return this.createEndConnectionSegmentCore(offset);\n\n if (!endShapeContainsBeginConnection || !this.routingModel.shouldReverseConnections) {\n var segment = this.createEndConnectionSegmentCore(offset);\n if (segment instanceof point_1.Point || !this.routingModel.shouldResizeConnections) return segment;\n var endPoint = segment.endPoint;\n var startPoint = segment.startPoint;\n var currentOffset = offset;\n\n while (this.hasIntersectedItemsByPoint(startPoint, endPoint, this.endConnectionShape)) {\n currentOffset = currentOffset / 2;\n segment = this.createEndConnectionSegmentCore(currentOffset);\n startPoint = segment.startPoint;\n }\n\n return segment;\n }\n\n if (!this.beginConnectionShape) return this.createEndConnectionSegmentCore(-offset);\n if (this.isPathNormal(this.beginConnectionSide)) return this.createEndConnectionSegmentCore(-offset);\n var reversedSegment = this.createEndConnectionSegmentCore(-2 * offset);\n if (this.isBeginConnectionRectanleLineIntersected(reversedSegment, true, false)) return this.createEndConnectionSegmentCore(offset);\n return this.createEndConnectionSegmentCore(-offset);\n };\n\n RightAngleConnectorRoutingContext.prototype.createBeginConnectionSegmentCore = function (offset) {\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.createBeginConnectionSegment(this.beginConnectionSide, this.beginPoint, offset, function (x, y) {\n return new point_1.Point(x, y);\n });\n };\n\n RightAngleConnectorRoutingContext.prototype.createEndConnectionSegmentCore = function (offset) {\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.createEndConnectionSegment(this.endConnectionSide, this.endPoint, offset, function (x, y) {\n return new point_1.Point(x, y);\n });\n };\n\n RightAngleConnectorRoutingContext.prototype.isBeginConnectionRectanleLineIntersected = function (segment, excludeBeginPoint, excludeEndPoint) {\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.isConnectionRectanleLineIntersected(this.beginConnectionShape.rectangle, segment, this.beginConnectionSide, excludeBeginPoint, excludeEndPoint, function (x, y) {\n return new point_1.Point(x, y);\n });\n };\n\n RightAngleConnectorRoutingContext.prototype.isEndConnectionRectanleLineIntersected = function (segment, excludeBeginPoint, excludeEndPoint) {\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.isConnectionRectanleLineIntersected(this.endConnectionShape.rectangle, segment, this.endConnectionSide, excludeBeginPoint, excludeEndPoint, function (x, y) {\n return new point_1.Point(x, y);\n });\n };\n\n RightAngleConnectorRoutingContext.prototype.isIgnorableItem = function (item) {\n return this.ignorableItemKeys[item.key] !== undefined;\n };\n\n RightAngleConnectorRoutingContext.prototype.createExtendedShapesBounds = function () {\n var _this = this;\n\n return this.routingModel.getItems(this.beginConnectionShape, this.endConnectionShape).map(function (i) {\n return i.rectangle.clone().inflate(_this.routingModel.shapeMargins);\n });\n };\n\n RightAngleConnectorRoutingContext.prototype.createGrid = function () {\n return RoutingGrid_1.RoutingGrid.create(this.createGridPoints(), this.createExtendedShapesBounds(), function (x, y) {\n return new point_1.Point(x, y);\n });\n };\n\n return RightAngleConnectorRoutingContext;\n }();\n\n exports.RightAngleConnectorRoutingContext = RightAngleConnectorRoutingContext;\n /***/\n },\n /* 372 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorRenderSegment = void 0;\n\n var segment_1 = __webpack_require__(33);\n\n var ConnectorProhibitedSegments_1 = __webpack_require__(373);\n\n var ConnectorRenderSegment =\n /** @class */\n function () {\n function ConnectorRenderSegment(startInfo, endInfo, startPointIndex, previousCustomSegment) {\n this.startInfo = startInfo;\n this.endInfo = endInfo;\n this.startPointIndex = startPointIndex;\n this.previousCustomSegment = previousCustomSegment;\n }\n\n Object.defineProperty(ConnectorRenderSegment.prototype, \"startPathPoint\", {\n get: function get() {\n return this.startInfo instanceof segment_1.Segment ? this.startInfo.endPoint : this.startInfo;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ConnectorRenderSegment.prototype, \"endPathPoint\", {\n get: function get() {\n return this.endInfo instanceof segment_1.Segment ? this.endInfo.startPoint : this.endInfo;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ConnectorRenderSegment.prototype, \"startPoint\", {\n get: function get() {\n return this.startInfo instanceof segment_1.Segment ? this.startInfo.startPoint : this.startInfo;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ConnectorRenderSegment.prototype, \"endPoint\", {\n get: function get() {\n return this.endInfo instanceof segment_1.Segment ? this.endInfo.endPoint : this.endInfo;\n },\n enumerable: false,\n configurable: true\n });\n\n ConnectorRenderSegment.prototype.createGridPoints = function () {\n var result = [];\n\n if (this.endInfo instanceof segment_1.Segment) {\n result.push(this.endInfo.startPoint);\n result.push(this.endInfo.endPoint);\n } else result.push(this.endInfo);\n\n return result;\n };\n\n ConnectorRenderSegment.prototype.createProhibitedSegments = function () {\n if (this.startInfo instanceof segment_1.Segment) {\n var result = this.createProhibitedSegmentsCore(this.startInfo);\n\n if (this.endInfo instanceof segment_1.Segment) {\n result.addSegment(this.endInfo);\n result.addExludedPoint(this.endInfo.startPoint);\n }\n\n if (this.previousCustomSegment) result.addSegment(this.previousCustomSegment);\n return result;\n }\n\n if (this.endInfo instanceof segment_1.Segment) {\n var result = this.createProhibitedSegmentsCore(this.endInfo);\n result.addExludedPoint(this.endInfo.startPoint);\n if (this.previousCustomSegment) result.addSegment(this.previousCustomSegment);\n return result;\n }\n\n return this.previousCustomSegment ? this.createProhibitedSegmentsCore(this.previousCustomSegment) : undefined;\n };\n\n ConnectorRenderSegment.prototype.createProhibitedSegmentsCore = function (segment) {\n var result = new ConnectorProhibitedSegments_1.ConnectorProhibitedSegments();\n result.addSegment(segment);\n return result;\n };\n\n return ConnectorRenderSegment;\n }();\n\n exports.ConnectorRenderSegment = ConnectorRenderSegment;\n /***/\n },\n /* 373 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ConnectorProhibitedSegments = void 0;\n\n var ConnectorProhibitedSegments =\n /** @class */\n function () {\n function ConnectorProhibitedSegments() {\n this.segments = [];\n this.exludedPoints = {};\n }\n\n ConnectorProhibitedSegments.prototype.addSegment = function (segment) {\n this.segments.push(segment);\n };\n\n ConnectorProhibitedSegments.prototype.addExludedPoint = function (point) {\n this.exludedPoints[point.toString()] = point;\n };\n\n ConnectorProhibitedSegments.prototype.allowPoint = function (point) {\n if (this.exludedPoints[point.toString()] === undefined) for (var i = 0; i < this.segments.length; i++) {\n if (this.segments[i].containsPoint(point)) return false;\n }\n return true;\n };\n\n return ConnectorProhibitedSegments;\n }();\n\n exports.ConnectorProhibitedSegments = ConnectorProhibitedSegments;\n /***/\n },\n /* 374 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RoutingGrid = void 0;\n\n var search_1 = __webpack_require__(42);\n\n var RoutingGrid =\n /** @class */\n function () {\n function RoutingGrid(verticalGridLines, horizontalGridLines, createPoint) {\n this.verticalGridLines = verticalGridLines;\n this.horizontalGridLines = horizontalGridLines;\n this.createPoint = createPoint;\n }\n\n RoutingGrid.create = function (points, boundsSet, createPoint) {\n var _this = this;\n\n var verticalLines = [];\n var horizontalLines = [];\n var varticalHashMap = {};\n var horizontalHashMap = {};\n boundsSet.forEach(function (x) {\n _this.addLine(x.x, verticalLines, varticalHashMap);\n\n _this.addLine(x.right, verticalLines, varticalHashMap);\n\n _this.addLine(x.y, horizontalLines, horizontalHashMap);\n\n _this.addLine(x.bottom, horizontalLines, horizontalHashMap);\n });\n points.forEach(function (p) {\n _this.addLine(p.x, verticalLines, varticalHashMap);\n\n _this.addLine(p.y, horizontalLines, horizontalHashMap);\n });\n verticalLines.sort(function (a, b) {\n return a - b;\n });\n horizontalLines.sort(function (a, b) {\n return a - b;\n });\n return new RoutingGrid(verticalLines, horizontalLines, createPoint);\n };\n\n RoutingGrid.addLine = function (line, lines, hashMap) {\n if (!hashMap[line]) {\n lines.push(line);\n hashMap[line] = true;\n }\n };\n\n RoutingGrid.prototype.getNeighborPoints = function (point) {\n var result = [];\n if (!this.horizontalGridLines || !this.horizontalGridLines.length || !this.verticalGridLines || !this.verticalGridLines.length) return result;\n var verticalIndex = search_1.SearchUtils.binaryIndexOf(this.verticalGridLines, function (x) {\n return x - point.x;\n });\n\n if (verticalIndex < 0) {\n verticalIndex = ~verticalIndex;\n if (this.isValidArrayIndex(this.verticalGridLines, verticalIndex)) result.push(this.createPoint(this.verticalGridLines[verticalIndex], point.y));\n } else if (this.isValidArrayIndex(this.verticalGridLines, verticalIndex + 1)) result.push(this.createPoint(this.verticalGridLines[verticalIndex + 1], point.y));\n\n if (this.isValidArrayIndex(this.verticalGridLines, verticalIndex - 1)) result.push(this.createPoint(this.verticalGridLines[verticalIndex - 1], point.y));\n var horizontalIndex = search_1.SearchUtils.binaryIndexOf(this.horizontalGridLines, function (y) {\n return y - point.y;\n });\n\n if (horizontalIndex < 0) {\n horizontalIndex = ~horizontalIndex;\n if (this.isValidArrayIndex(this.horizontalGridLines, horizontalIndex)) result.push(this.createPoint(point.x, this.horizontalGridLines[horizontalIndex]));\n } else if (this.isValidArrayIndex(this.horizontalGridLines, horizontalIndex + 1)) result.push(this.createPoint(point.x, this.horizontalGridLines[horizontalIndex + 1]));\n\n if (this.isValidArrayIndex(this.horizontalGridLines, horizontalIndex - 1)) result.push(this.createPoint(point.x, this.horizontalGridLines[horizontalIndex - 1]));\n return result;\n };\n\n RoutingGrid.prototype.isValidArrayIndex = function (array, index) {\n return array && index >= 0 && index < array.length;\n };\n\n return RoutingGrid;\n }();\n\n exports.RoutingGrid = RoutingGrid;\n /***/\n },\n /* 375 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics252 = function extendStatics(d, b) {\n _extendStatics252 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics252(d, b);\n };\n\n return function (d, b) {\n _extendStatics252(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AStarContext = exports.AStarContextBase = void 0;\n\n var SortedQueues_1 = __webpack_require__(376);\n\n var UniqueAStarNodePositions_1 = __webpack_require__(377);\n\n var AStarNode_1 = __webpack_require__(378);\n\n var segment_1 = __webpack_require__(33);\n\n var RightAngleConnectorRoutingMathOperations_1 = __webpack_require__(159);\n\n var Utils_1 = __webpack_require__(3);\n\n var AStarContextBase =\n /** @class */\n function () {\n function AStarContextBase(startPosition, targetPosition, maxStepsCount) {\n this.startPosition = startPosition;\n this.targetPosition = targetPosition;\n this.maxStepsCount = maxStepsCount;\n this.prohibitedPoints = {};\n }\n\n Object.defineProperty(AStarContextBase.prototype, \"shouldStartContinue\", {\n get: function get() {\n return this.updatableSet.count > 0 && this.stepsCount < this.maxStepsCount;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(AStarContextBase.prototype, \"shouldFinish\", {\n get: function get() {\n return this.currentNode.position.equals(this.targetPosition);\n },\n enumerable: false,\n configurable: true\n });\n\n AStarContextBase.prototype.start = function () {\n this.generalSet = new SortedQueues_1.SortedQueues(function (x) {\n return x.key;\n });\n this.updatableSet = new UniqueAStarNodePositions_1.UniqueAStarNodePositions();\n var currentNode = new AStarNode_1.AStarNode(this.startPosition, this.getDistance(this.startPosition, this.targetPosition));\n this.currentNode = currentNode;\n this.generalSet.enqueue(currentNode);\n this.updatableSet.add(currentNode.position, currentNode);\n this.stepsCount = 0;\n this.openNode = undefined;\n };\n\n AStarContextBase.prototype.startContinue = function () {\n this.currentNode = this.generalSet.dequeueMin();\n };\n\n AStarContextBase.prototype.endContinue = function () {\n var _this = this;\n\n var currentPosition = this.currentNode.position;\n this.updatableSet.remove(currentPosition);\n this.addProhibitedPoint(currentPosition);\n this.getNeighborPoints(currentPosition).forEach(function (nextPosition) {\n var penalty = _this.getPenalty(_this.currentNode, nextPosition);\n\n var openNode = _this.updatableSet.getNode(nextPosition);\n\n if (openNode === undefined) {\n openNode = new AStarNode_1.AStarNode(nextPosition, _this.getDistance(nextPosition, _this.targetPosition));\n openNode.parent = _this.currentNode;\n openNode.penalty = penalty;\n\n _this.generalSet.enqueue(openNode);\n\n _this.updatableSet.add(nextPosition, openNode);\n } else if (openNode.penalty > penalty) {\n var generalSet = _this.generalSet;\n generalSet.remove(openNode);\n openNode.parent = _this.currentNode;\n openNode.penalty = penalty;\n generalSet.enqueue(openNode);\n }\n\n _this.openNode = openNode;\n });\n this.stepsCount++;\n };\n\n AStarContextBase.prototype.finishWithPath = function () {\n this.path = this.currentNode.getPath();\n };\n\n AStarContextBase.prototype.finishWithoutPath = function () {\n this.path = [];\n };\n\n return AStarContextBase;\n }();\n\n exports.AStarContextBase = AStarContextBase;\n\n var AStarContext =\n /** @class */\n function (_super) {\n __extends(AStarContext, _super);\n\n function AStarContext(routingContext, startPosition, targetPosition, prohibitedSegments, grid, metrics) {\n var _this = _super.call(this, startPosition, targetPosition, 10000) || this;\n\n _this.routingContext = routingContext;\n _this.startPosition = startPosition;\n _this.targetPosition = targetPosition;\n _this.prohibitedSegments = prohibitedSegments;\n _this.grid = grid;\n _this.metrics = metrics;\n return _this;\n }\n\n AStarContext.prototype.addProhibitedPoint = function (point) {\n this.prohibitedPoints[point.toString()] = point;\n };\n\n AStarContext.prototype.getNeighborPoints = function (point) {\n var _this = this;\n\n return this.grid.getNeighborPoints(point).filter(function (p) {\n return _this.allowPoint(p);\n });\n };\n\n AStarContext.prototype.getDistance = function (startPoint, endPoint) {\n return this.metrics.distance(startPoint, endPoint);\n };\n\n AStarContext.prototype.getPenalty = function (node, nextPoint) {\n var parent = node.parent;\n var currentPosition = node.position;\n var turnDirection = this.getTurnDirection(parent ? Utils_1.GeometryUtils.createAngle(parent.position, currentPosition, nextPoint) : 0);\n var distance = this.getDistance(currentPosition, nextPoint);\n var middlePosition = new segment_1.Segment(currentPosition, nextPoint).center;\n return node.penalty + this.metrics.penalty(distance, middlePosition, turnDirection, this.getIntersectedItems(middlePosition));\n };\n\n AStarContext.prototype.allowPoint = function (p) {\n return this.prohibitedPoints[p.toString()] === undefined && (!this.prohibitedSegments || this.prohibitedSegments.allowPoint(p));\n };\n\n AStarContext.prototype.getTurnDirection = function (angle) {\n return RightAngleConnectorRoutingMathOperations_1.RightAngleConnectorRoutingMathOperations.getTurnDirection(angle);\n };\n\n AStarContext.prototype.getIntersectedItems = function (position) {\n var _this = this;\n\n var margin = this.routingContext.shapeMargins;\n return this.routingContext.getIntersectedItems(position, function (p, i) {\n return _this.hasIntersectedItem(p, i, margin);\n });\n };\n\n AStarContext.prototype.hasIntersectedItem = function (point, item, margin) {\n if (!this.isIntersectedWithExtendedRectangle(point, item, margin)) return false;\n if (this.hasOneShapeConnection(item)) return true;\n return !this.itemContainsConnectionPoints(item);\n };\n\n AStarContext.prototype.isIntersectedWithExtendedRectangle = function (point, item, margin) {\n return item.rectangle.clone().inflate(margin).containsPoint(point);\n };\n\n AStarContext.prototype.itemContainsConnectionPoints = function (item) {\n var rectangle = item.rectangle;\n return rectangle.containsPoint(this.routingContext.beginPoint) && rectangle.containsPoint(this.routingContext.endPoint);\n };\n\n AStarContext.prototype.hasOneShapeConnection = function (item) {\n var connectionPoints = item.getConnectionPoints();\n return this.isConnectionPoint(connectionPoints, this.routingContext.beginPoint) && this.isConnectionPoint(connectionPoints, this.routingContext.endPoint);\n };\n\n AStarContext.prototype.isConnectionPoint = function (connectionPoints, point) {\n return connectionPoints.filter(function (p) {\n return p.equals(point);\n }).length > 0;\n };\n\n return AStarContext;\n }(AStarContextBase);\n\n exports.AStarContext = AStarContext;\n /***/\n },\n /* 376 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SortedQueues = void 0;\n\n var search_1 = __webpack_require__(42);\n\n var SortedQueues =\n /** @class */\n function () {\n function SortedQueues(getKey) {\n this.getKey = getKey;\n this._itemsArrays = {};\n this._sortedKeys = [];\n }\n\n Object.defineProperty(SortedQueues.prototype, \"sortedKeys\", {\n get: function get() {\n return this._sortedKeys;\n },\n enumerable: false,\n configurable: true\n });\n\n SortedQueues.prototype.getQueue = function (key) {\n return this._itemsArrays[key];\n };\n\n SortedQueues.prototype.enqueue = function (item) {\n var key = this.getKey(item);\n\n if (this._itemsArrays[key] === undefined) {\n this._itemsArrays[key] = [item];\n this.addSortedKey(key);\n } else this._itemsArrays[key].push(item);\n };\n\n SortedQueues.prototype.remove = function (item) {\n var key = this.getKey(item);\n var itemsArray = this._itemsArrays[key];\n if (itemsArray !== undefined) if (!itemsArray.length) this.removeCore(key);else if (itemsArray[0] === item) {\n itemsArray.shift();\n if (!itemsArray.length) this.removeCore(key);\n } else this._itemsArrays[key] = itemsArray.filter(function (x) {\n return x !== item;\n });\n };\n\n SortedQueues.prototype.dequeueMin = function () {\n if (!this._sortedKeys.length) return undefined;\n var key = this._sortedKeys[0];\n var itemsArray = this._itemsArrays[key];\n var item = itemsArray.shift();\n if (!itemsArray.length) this.removeCore(key);\n return item;\n };\n\n SortedQueues.prototype.removeCore = function (key) {\n delete this._itemsArrays[key];\n this.removeSortedKey(key);\n };\n\n SortedQueues.prototype.removeSortedKey = function (key) {\n var sortedPointIndex = search_1.SearchUtils.binaryIndexOf(this._sortedKeys, function (x) {\n return x - key;\n });\n if (sortedPointIndex >= 0) this.sortedKeys.splice(sortedPointIndex, 1);\n };\n\n SortedQueues.prototype.addSortedKey = function (key) {\n var sortedPointIndex = search_1.SearchUtils.binaryIndexOf(this._sortedKeys, function (x) {\n return x - key;\n });\n if (sortedPointIndex < 0) this._sortedKeys.splice(-(sortedPointIndex + 1), 0, key);\n };\n\n return SortedQueues;\n }();\n\n exports.SortedQueues = SortedQueues;\n /***/\n },\n /* 377 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.UniqueAStarNodePositions = void 0;\n\n var UniqueAStarNodePositions =\n /** @class */\n function () {\n function UniqueAStarNodePositions(getKey) {\n if (getKey === void 0) {\n getKey = function getKey(key) {\n return key.toString();\n };\n }\n\n this.getKey = getKey;\n this.items = {};\n }\n\n Object.defineProperty(UniqueAStarNodePositions.prototype, \"count\", {\n get: function get() {\n return Object.keys(this.items).length;\n },\n enumerable: false,\n configurable: true\n });\n\n UniqueAStarNodePositions.prototype.getNode = function (position) {\n var item = this.items[this.getKey(position)];\n return item !== undefined ? item.node : undefined;\n };\n\n UniqueAStarNodePositions.prototype.add = function (position, node) {\n var key = this.getKey(position);\n if (this.items[key] === undefined) this.items[key] = {\n position: position,\n node: node\n };\n };\n\n UniqueAStarNodePositions.prototype.remove = function (position) {\n var key = this.getKey(position);\n if (this.items[key] !== undefined) delete this.items[key];\n };\n\n return UniqueAStarNodePositions;\n }();\n\n exports.UniqueAStarNodePositions = UniqueAStarNodePositions;\n /***/\n },\n /* 378 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AStarNode = void 0;\n\n var AStarNode =\n /** @class */\n function () {\n function AStarNode(position, distance) {\n this.position = position;\n this.distance = distance;\n this.penalty = 0;\n }\n\n Object.defineProperty(AStarNode.prototype, \"key\", {\n get: function get() {\n return this.distance + this.penalty;\n },\n enumerable: false,\n configurable: true\n });\n\n AStarNode.prototype.getPath = function () {\n var result = []; // eslint-disable-next-line @typescript-eslint/no-this-alias\n\n var currentNode = this;\n\n while (currentNode !== undefined) {\n result.splice(0, 0, currentNode.position);\n currentNode = currentNode.parent;\n }\n\n return result;\n };\n\n return AStarNode;\n }();\n\n exports.AStarNode = AStarNode;\n /***/\n },\n /* 379 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AStarCalculator = void 0;\n\n var AStarCalculator =\n /** @class */\n function () {\n function AStarCalculator() {}\n\n AStarCalculator.calculate = function (context) {\n if (context) {\n var callBack = this.start(context);\n\n while (callBack) {\n callBack = callBack(context);\n }\n }\n };\n\n AStarCalculator.start = function (context) {\n context.start();\n return context.shouldStartContinue ? AStarCalculator.startContinue : AStarCalculator.finishWithPath;\n };\n\n AStarCalculator.startContinue = function (context) {\n context.startContinue();\n return context.shouldFinish ? AStarCalculator.finishWithPath : AStarCalculator.endContinue;\n };\n\n AStarCalculator.endContinue = function (context) {\n context.endContinue();\n return context.shouldStartContinue ? AStarCalculator.startContinue : AStarCalculator.finishWithoutPath;\n };\n\n AStarCalculator.finishWithPath = function (context) {\n context.finishWithPath();\n };\n\n AStarCalculator.finishWithoutPath = function (context) {\n context.finishWithoutPath();\n };\n\n return AStarCalculator;\n }();\n\n exports.AStarCalculator = AStarCalculator;\n /***/\n },\n /* 380 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ReloadContentParameters = void 0;\n\n var ReloadContentParameters =\n /** @class */\n function () {\n function ReloadContentParameters() {\n this.isEmpty = true;\n }\n\n ReloadContentParameters.prototype.add = function (dataKey, getData, layoutParameters) {\n if (dataKey !== undefined) {\n if (this._dataKeys === undefined) this._dataKeys = [];\n if (Array.isArray(dataKey)) this._dataKeys = this._dataKeys.concat(dataKey);else this._dataKeys.push(dataKey);\n }\n\n this._getData = this._getData || getData;\n this._layoutParameters = this._layoutParameters || layoutParameters;\n this.isEmpty = false;\n };\n\n ReloadContentParameters.prototype.clear = function () {\n this.isEmpty = true;\n this._dataKeys = undefined;\n this._getData = undefined;\n this._layoutParameters = undefined;\n };\n\n Object.defineProperty(ReloadContentParameters.prototype, \"empty\", {\n get: function get() {\n return this.isEmpty;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ReloadContentParameters.prototype, \"dataKeys\", {\n get: function get() {\n return this._dataKeys;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ReloadContentParameters.prototype, \"getData\", {\n get: function get() {\n return this._getData;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ReloadContentParameters.prototype, \"layoutParameters\", {\n get: function get() {\n return this._layoutParameters;\n },\n enumerable: false,\n configurable: true\n });\n return ReloadContentParameters;\n }();\n\n exports.ReloadContentParameters = ReloadContentParameters;\n /***/\n },\n /* 381 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics253 = function extendStatics(d, b) {\n _extendStatics253 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics253(d, b);\n };\n\n return function (d, b) {\n _extendStatics253(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToolboxTouchDragEventsHandler = void 0;\n\n var Utils_1 = __webpack_require__(3);\n\n var ToolboxDragEventsHandlerBase_1 = __webpack_require__(105);\n\n var ToolboxTouchDragEventsHandler =\n /** @class */\n function (_super) {\n __extends(ToolboxTouchDragEventsHandler, _super);\n\n function ToolboxTouchDragEventsHandler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ToolboxTouchDragEventsHandler.prototype, \"downEventName\", {\n get: function get() {\n return \"touchstart\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ToolboxTouchDragEventsHandler.prototype, \"moveEventName\", {\n get: function get() {\n return \"touchmove\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ToolboxTouchDragEventsHandler.prototype, \"upEventName\", {\n get: function get() {\n return \"touchend\";\n },\n enumerable: false,\n configurable: true\n });\n\n ToolboxTouchDragEventsHandler.prototype.attach = function (source) {\n _super.prototype.attach.call(this, source);\n\n this.onElementTouchMoveHandler = this.onElementTouchMove.bind(this);\n this.onSelectionChangeHandler = this.onSelectionChange.bind(this);\n source.mainElement.addEventListener(this.moveEventName, this.onElementTouchMoveHandler);\n source.mainElement.addEventListener(\"selectionchange\", this.onSelectionChangeHandler);\n };\n\n ToolboxTouchDragEventsHandler.prototype.detach = function () {\n this.manager.mainElement.removeEventListener(this.moveEventName, this.onElementTouchMoveHandler);\n this.manager.mainElement.removeEventListener(\"selectionchange\", this.onSelectionChangeHandler);\n\n _super.prototype.detach.call(this);\n };\n\n ToolboxTouchDragEventsHandler.prototype.onDownCore = function (evt) {\n Utils_1.HtmlFocusUtils.focusWithPreventScroll(this.manager.mainElement);\n this.manager.startTouchDragging();\n };\n\n ToolboxTouchDragEventsHandler.prototype.onElementTouchMove = function (evt) {\n if (this.manager.draggingObject) evt.preventDefault();\n };\n\n ToolboxTouchDragEventsHandler.prototype.onSelectionChange = function () {};\n\n return ToolboxTouchDragEventsHandler;\n }(ToolboxDragEventsHandlerBase_1.ToolboxDragEventsHandlerBase);\n\n exports.ToolboxTouchDragEventsHandler = ToolboxTouchDragEventsHandler;\n /***/\n },\n /* 382 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics254 = function extendStatics(d, b) {\n _extendStatics254 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics254(d, b);\n };\n\n return function (d, b) {\n _extendStatics254(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToolboxPointerDragEventsHandler = void 0;\n\n var dom_1 = __webpack_require__(23);\n\n var ToolboxDragEventsHandlerBase_1 = __webpack_require__(105);\n\n var IDragEventsHandler_1 = __webpack_require__(161);\n\n var Utils_1 = __webpack_require__(3);\n\n var ToolboxPointerDragEventsHandler =\n /** @class */\n function (_super) {\n __extends(ToolboxPointerDragEventsHandler, _super);\n\n function ToolboxPointerDragEventsHandler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ToolboxPointerDragEventsHandler.prototype, \"downEventName\", {\n get: function get() {\n return \"pointerdown\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ToolboxPointerDragEventsHandler.prototype, \"moveEventName\", {\n get: function get() {\n return \"pointermove\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ToolboxPointerDragEventsHandler.prototype, \"upEventName\", {\n get: function get() {\n return \"pointerup\";\n },\n enumerable: false,\n configurable: true\n });\n\n ToolboxPointerDragEventsHandler.prototype.isTouchEvent = function (evt) {\n return this.isTouchUIEnabled || evt.pointerType === \"touch\";\n };\n\n ToolboxPointerDragEventsHandler.prototype.attach = function (source) {\n _super.prototype.attach.call(this, source);\n\n this.onDragStartHandler = this.onDragStart.bind(this);\n source.mainElement.addEventListener(\"dragstart\", this.onDragStartHandler);\n dom_1.DomUtils.addClassName(source.mainElement, IDragEventsHandler_1.TOUCH_ACTION_NONE);\n };\n\n ToolboxPointerDragEventsHandler.prototype.detach = function () {\n this.manager.mainElement.removeEventListener(\"dragstart\", this.onDragStartHandler);\n dom_1.DomUtils.removeClassName(this.manager.mainElement, IDragEventsHandler_1.TOUCH_ACTION_NONE);\n\n _super.prototype.detach.call(this);\n };\n\n ToolboxPointerDragEventsHandler.prototype.onDownCore = function (evt) {\n Utils_1.HtmlFocusUtils.focusWithPreventScroll(this.manager.mainElement);\n if (this.isTouchEvent(evt)) this.manager.startTouchDragging();\n };\n\n ToolboxPointerDragEventsHandler.prototype.onDragStart = function (evt) {\n this.manager.startDragging();\n evt.preventDefault();\n };\n\n return ToolboxPointerDragEventsHandler;\n }(ToolboxDragEventsHandlerBase_1.ToolboxDragEventsHandlerBase);\n\n exports.ToolboxPointerDragEventsHandler = ToolboxPointerDragEventsHandler;\n /***/\n },\n /* 383 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics255 = function extendStatics(d, b) {\n _extendStatics255 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics255(d, b);\n };\n\n return function (d, b) {\n _extendStatics255(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ToolboxMouseDragEventsHandler = void 0;\n\n var ToolboxDragEventsHandlerBase_1 = __webpack_require__(105);\n\n var ToolboxMouseDragEventsHandler =\n /** @class */\n function (_super) {\n __extends(ToolboxMouseDragEventsHandler, _super);\n\n function ToolboxMouseDragEventsHandler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(ToolboxMouseDragEventsHandler.prototype, \"downEventName\", {\n get: function get() {\n return \"mousedown\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ToolboxMouseDragEventsHandler.prototype, \"moveEventName\", {\n get: function get() {\n return \"mousemove\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(ToolboxMouseDragEventsHandler.prototype, \"upEventName\", {\n get: function get() {\n return \"mouseup\";\n },\n enumerable: false,\n configurable: true\n });\n\n ToolboxMouseDragEventsHandler.prototype.isTouchEvent = function (evt) {\n return this.isTouchUIEnabled;\n };\n\n ToolboxMouseDragEventsHandler.prototype.attach = function (source) {\n _super.prototype.attach.call(this, source);\n\n this.onDragStartHandler = this.onDragStart.bind(this);\n source.mainElement.addEventListener(\"dragstart\", this.onDragStartHandler);\n };\n\n ToolboxMouseDragEventsHandler.prototype.detach = function () {\n this.manager.mainElement.removeEventListener(\"dragstart\", this.onDragStartHandler);\n\n _super.prototype.detach.call(this);\n };\n\n ToolboxMouseDragEventsHandler.prototype.onDownCore = function (evt) {};\n\n ToolboxMouseDragEventsHandler.prototype.onDragStart = function (evt) {\n this.manager.startDragging();\n evt.preventDefault();\n };\n\n return ToolboxMouseDragEventsHandler;\n }(ToolboxDragEventsHandlerBase_1.ToolboxDragEventsHandlerBase);\n\n exports.ToolboxMouseDragEventsHandler = ToolboxMouseDragEventsHandler;\n /***/\n },\n /* 384 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics256 = function extendStatics(d, b) {\n _extendStatics256 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics256(d, b);\n };\n\n return function (d, b) {\n _extendStatics256(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RenderManagerTouchDragEventsHandler = void 0;\n\n var RenderManagerDragEventsHandlerBase_1 = __webpack_require__(106);\n\n var RenderManagerTouchDragEventsHandler =\n /** @class */\n function (_super) {\n __extends(RenderManagerTouchDragEventsHandler, _super);\n\n function RenderManagerTouchDragEventsHandler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"enterEventName\", {\n get: function get() {\n return \"mouseenter\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"leaveEventName\", {\n get: function get() {\n return \"mouseleave\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"downEventName\", {\n get: function get() {\n return \"touchstart\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"moveEventName\", {\n get: function get() {\n return \"touchmove\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerTouchDragEventsHandler.prototype, \"upEventName\", {\n get: function get() {\n return \"touchend\";\n },\n enumerable: false,\n configurable: true\n });\n\n RenderManagerTouchDragEventsHandler.prototype.onDownCore = function (evt) {\n this.manager.onTouchDown(evt);\n };\n\n RenderManagerTouchDragEventsHandler.prototype.onMoveCore = function (evt) {\n this.manager.onTouchMove(evt);\n };\n\n RenderManagerTouchDragEventsHandler.prototype.onUpCore = function (evt) {\n this.manager.onTouchUp(evt);\n };\n\n return RenderManagerTouchDragEventsHandler;\n }(RenderManagerDragEventsHandlerBase_1.RenderManagerDragEventsHandlerBase);\n\n exports.RenderManagerTouchDragEventsHandler = RenderManagerTouchDragEventsHandler;\n /***/\n },\n /* 385 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics257 = function extendStatics(d, b) {\n _extendStatics257 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics257(d, b);\n };\n\n return function (d, b) {\n _extendStatics257(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RenderManagerPointerDragEventsHandler = void 0;\n\n var dom_1 = __webpack_require__(23);\n\n var IDragEventsHandler_1 = __webpack_require__(161);\n\n var RenderManagerDragEventsHandlerBase_1 = __webpack_require__(106);\n\n var RenderManagerPointerDragEventsHandler =\n /** @class */\n function (_super) {\n __extends(RenderManagerPointerDragEventsHandler, _super);\n\n function RenderManagerPointerDragEventsHandler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"enterEventName\", {\n get: function get() {\n return \"pointerenter\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"leaveEventName\", {\n get: function get() {\n return \"pointerleave\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"downEventName\", {\n get: function get() {\n return \"pointerdown\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"moveEventName\", {\n get: function get() {\n return \"pointermove\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerPointerDragEventsHandler.prototype, \"upEventName\", {\n get: function get() {\n return \"pointerup\";\n },\n enumerable: false,\n configurable: true\n });\n\n RenderManagerPointerDragEventsHandler.prototype.attach = function (source) {\n _super.prototype.attach.call(this, source);\n\n var svgElement = source.svgElement;\n\n svgElement.ondragstart = function () {\n return false;\n };\n\n dom_1.DomUtils.addClassName(svgElement, IDragEventsHandler_1.TOUCH_ACTION_NONE);\n };\n\n RenderManagerPointerDragEventsHandler.prototype.detach = function () {\n var svgElement = this.manager.svgElement;\n svgElement.ondragstart = undefined;\n dom_1.DomUtils.removeClassName(svgElement, IDragEventsHandler_1.TOUCH_ACTION_NONE);\n\n _super.prototype.detach.call(this);\n };\n\n RenderManagerPointerDragEventsHandler.prototype.onDownCore = function (evt) {\n if (evt.pointerType === \"touch\") this.manager.onTouchDown(evt);else this.manager.onMouseDown(evt);\n };\n\n RenderManagerPointerDragEventsHandler.prototype.onMoveCore = function (evt) {\n if (evt.pointerType === \"touch\") this.manager.onTouchMove(evt);else this.manager.onMouseMove(evt);\n };\n\n RenderManagerPointerDragEventsHandler.prototype.onUpCore = function (evt) {\n if (evt.pointerType === \"touch\") this.manager.onTouchUp(evt);else this.manager.onMouseUp(evt);\n };\n\n return RenderManagerPointerDragEventsHandler;\n }(RenderManagerDragEventsHandlerBase_1.RenderManagerDragEventsHandlerBase);\n\n exports.RenderManagerPointerDragEventsHandler = RenderManagerPointerDragEventsHandler;\n /***/\n },\n /* 386 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var _extendStatics258 = function extendStatics(d, b) {\n _extendStatics258 = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return _extendStatics258(d, b);\n };\n\n return function (d, b) {\n _extendStatics258(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.RenderManagerMouseDragEventsHandler = void 0;\n\n var RenderManagerDragEventsHandlerBase_1 = __webpack_require__(106);\n\n var RenderManagerMouseDragEventsHandler =\n /** @class */\n function (_super) {\n __extends(RenderManagerMouseDragEventsHandler, _super);\n\n function RenderManagerMouseDragEventsHandler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"enterEventName\", {\n get: function get() {\n return \"mouseenter\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"leaveEventName\", {\n get: function get() {\n return \"mouseleave\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"downEventName\", {\n get: function get() {\n return \"mousedown\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"moveEventName\", {\n get: function get() {\n return \"mousemove\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(RenderManagerMouseDragEventsHandler.prototype, \"upEventName\", {\n get: function get() {\n return \"mouseup\";\n },\n enumerable: false,\n configurable: true\n });\n\n RenderManagerMouseDragEventsHandler.prototype.onDownCore = function (evt) {\n this.manager.onMouseDown(evt);\n };\n\n RenderManagerMouseDragEventsHandler.prototype.onMoveCore = function (evt) {\n this.manager.onMouseMove(evt);\n };\n\n RenderManagerMouseDragEventsHandler.prototype.onUpCore = function (evt) {\n this.manager.onMouseUp(evt);\n };\n\n return RenderManagerMouseDragEventsHandler;\n }(RenderManagerDragEventsHandlerBase_1.RenderManagerDragEventsHandlerBase);\n\n exports.RenderManagerMouseDragEventsHandler = RenderManagerMouseDragEventsHandler;\n /***/\n },\n /* 387 */\n\n /***/\n function (module, exports, __webpack_require__) {// extracted by mini-css-extract-plugin\n\n /***/\n }\n /******/\n ])\n );\n});"],"sourceRoot":""}